java基础知识介绍
1 打印信息打印信息,在System.out下面,主要有:
print:标准输出,但是不会换行
printf:可以使用类似C语言中的语法,进行格式化输出,即:printf("%s", prama),printf也不会换行
println:输出完之后,会自动换行
代码:
12345678public class BasicDemo { public static void main(String[] args) { //输出 System.out.printf("%s", new Integer(1)); System.out.println("hello world."); System.out.print("hello world."); }}
运行结果:
2 循环控制结构2.1 for循环
方式1:for(int i=0;i<length;i++)
1234567891 ...
JVM中的直接内存
1 定义
直接内存并不属于JVM的内存结构,它是物理机的内存,但是JVM虚拟机可以调用该部分内存。
直接内存的使用:
常见于NIO,用于数据缓冲区
分配回收的代价较高,但是速度很快
不收JVM内存回收管理
2 正常IO读取
从上图的结构图中,我们可以看到,当java程序需要读取文件时,首先会在java堆内存中new一个缓冲区,然后系统内存从磁盘中读取文件,再然后在将系统缓冲区中的字节流复制到java堆内存的缓冲区中,然后在由java程序调用。
这样做有一个缺点,就是需要开启两块内存,效率会很低。
3 直接内存读取
从图中可以看到,当java程序使用直接内存时,首先java程序在系统内存中分配一块直接内存块,这一内存块是系统内存和java堆内存可以共享的,那么系统内存读取到的磁盘文件就可以直接由java堆内存使用,这样就省去了复制的操作,大大节约了时间开销。
4 直接内存分配内存通过java中的unsafe对象分配一块直接内存,直接内存大小在分配时指定。直接内存由于不受JVM的管理,所以直接内存的释放,必须主动调用unsafe对象进行释放,才能将直接内存释放。 ...
typora使用快捷键
1 下载下载链接
2 快捷键
加粗: Ctrl + B
斜体:Ctrl + I
下划线:Ctrl + U
代码:Ctrl + Shift + `
删除线:Alt + Shift + 5
超链接:Ctrl + K
图片:Ctrl + Shift + I
标题:Ctrl + 数字 (代表生成几级标题)
引用: Ctrl + Shift + Q
无序列表: * + 空格 (需另起一行)
有序列表:
分割线: 三个 -
回到顶端:Ctrl + Home
回到底部:Ctrl + End
写在最后欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
JVM的内存结构简介
1 JVM结构图
2 栈内存
栈内存是由编译器自动分配的内存。栈内存在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
每个java程序线程运行时,JVM都会给该java线程分配一个java栈,不同的java线程,会拥有不同的java栈。所以,栈是线程私有的,不同的线程之间中的栈的数据是不能共享的。
栈中存放的数据包括:当前线程声明的基本数据变量,对象的引用变量等。如:int a = 0;,在例子中,变量名a就存放在栈中,数值0存放在常量池中。
栈内存溢出的情况:在java程序中,栈内存溢出,主要出现在递归程序中,如果递归结束的条件设置错误,那么就容易造成栈内存溢出。如下面这段代码:
12345678910public class JvmTest { private int i = 0; public void a(){ System.out. ...
java中5种引用:强引用,弱引用,虚引用,软引用,终接器引用
参考文章
1 强引用(StrongReference)
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。
在java程序中,一般由Object object = new Object();定义的object就是一个强引用,也就是说object强引用new Object()对象。这种情况下,也就是说明,该对象是程序中必不可少的一部分,当程序遇到内存不足时,jvm并不会将其释放,而是会抛出一个OutOfMemoryError异常。如下面这段代码:
1234567891011public class StackDemo { private static int _10M = 1014 * 1024 * 10;//这是一个10M的字节空间 private int i = 0; public static void main(String[] args) { List<byte[]> list = new ArrayList<>(); for (int i = 0;i & ...
如何通过Xshell,SSH命令连接vmware中的centos虚拟机
1 VmWare中的三种连接方式原文:https://blog.csdn.net/shuxiao9058/article/details/7051463
1.1 桥接模式
使用VMnet0虚拟交换机,此时虚拟机相当与网络上的一台独立计算机与主机一样,拥有一个独立的IP地址,其网络拓扑如下图所示,使用桥接方式,A,A1,A2,B可互访
1.2 主机模式(Host-Only)
使用Vmnet1虚拟交换机,此时虚拟机只能与虚拟机、主机互访。也就是不能上Internet,其网络拓扑如下图所示,使用Host方式,A,A1,A2可以互访,但A1,A2不能访问B,也不能被B访问。
1.3 NAT模式
使用Vmnet8虚拟交换机,此时虚拟机可以通过主机单向网络上的其他工作站,其他工作站不能访问虚拟机。其网络拓扑如下图所示,使用NAT方式,A1,A2可以访问B,但B不可以访问A1,A2。但A,A1,A2可以互访。
2 使用桥接模式连接原文:https://blog.csdn.net/vicoqi/article/details/79951236
2.1 查看物理机IPwindow ...
redis安装报错:zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
1 Linux下安装redis
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17.tar.gz
如果没有安装gcc,则使用该命令安装,yum install gcc,如果安装了gcc,执行第5步
make
2 错误在执行make命令时,出现下面的错误:zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
3 原因分析
说关于分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数。
原文:https://blog.csdn.net/bugall/artic ...
vmware下安装的centos虚拟机,不能访问外网
1 问题使用vmware安装了centos虚拟机之后,发现不能访问外网,所以就网上搜了一下,现已经解决,但是还不能通过xsheel连接虚拟机。
2 解决2.1 修改静态IP使用命令vim /etc/sysconfig/network-scripts/ifcfg-ens33打开网卡文件,修改IP地址,下面是该文件的原文:
123456789101112131415161718192021TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=ec30e582-de8f-4ce3-8fae-977ba48224a7DEVICE=ens33ONBOOT=yesIPADDR=9.16 ...
VmWare 12 pro下载链接和破解秘钥
1 软件下载https://download3.vmware.com/software/wkst/file/VMware-workstation-full-12.0.0-2985596.exe
2 秘钥
VY1DU-2VXDH-08DVQ-PXZQZ-P2KV8
VF58R-28D9P-0882Z-5GX7G-NPUTF
YG7XR-4GYEJ-4894Y-VFMNZ-YA296
写在最后欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
java反射机制讲解,如何利用java发射机制开发自己的java框架
1 java反射机制介绍
定义介绍: Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种 动态的获取信息 以及 动态调用对象的方法 的功能称为 java 的反射机制。
1.1 java代码的三种状态这里以一个Person类为例,具体代码如下:
123456789101112131415161718192021222324252627282930313233343536public class Person { private String name; private Integer age; private String gend; public String a; protected String b; String c; public Person() { } public Person(String name, Integer age, String gend) { this.name ...