
Java基础
HE N
这个作者很懒,什么都没留下…
展开
-
ThreadLocal
ThreadLocal 作用是提供线程内的局部变量使用 ThreadLocal<Integer> local=new ThreadLocal(); local.set(100); local.set(900); int loc=local.get(); System.out.println(loc);输出900...原创 2020-01-18 14:07:53 · 276 阅读 · 0 评论 -
NIO
Java Nio由以下几个核心部分组成channelschannel分为有几种类型FileChannelDatagramChannelSocketChannelServerSocketChannelbuffersbetyBufferCharBufferDoubleBufferIntBufferLongBufferShortBufferSelectorsselector...原创 2020-01-18 14:05:00 · 161 阅读 · 0 评论 -
JMM内存模型 volatile
Java内存区域 :方法区(存储已经被虚拟机加载的类信息 常量 静态变量 即时编译器编译后的代码 ) 堆 (存放对象实例 )虚拟机栈(存储方法的变量表 操作数栈 动态链接方法 返回值 返回地址 ) 本地方法栈 (线程的私有区域 与native方法相关 )程序计数器 (线程私有选取下一条需要执行的字节码的指令 )Java内存模型(Java Memory Model 抽象模型)主内存 :主要存...原创 2019-12-17 16:13:58 · 198 阅读 · 0 评论 -
并发
synchronized造成线程安全问题的主要诱因有两点存在共享数据(临界资源)存在多线程共同操作共享资源解决: 当存在多个线程操作共享数据时 ,需要保证同一时刻有且只有一个线程在操作共享数据 ,其他线程必须等到该线程处理完数据后再进行 (互斥锁)(synchorized可以保证可见性)synchorized的三种应用方法修饰实例方法 作用于当前实例加锁 进入同步代码块前要获得当前实例...原创 2019-12-06 11:22:59 · 309 阅读 · 0 评论 -
集合
transient主要是用于对象的序列化的。transient是字段类型修饰符,只能修饰变量,而不能修饰方法和类。被transient关键字修饰的变量不能再被序列化,静态变量不管是否被transient修饰,均不能被序列化。一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。也可以认为在将持久化的对象反序列化后,被transient修饰的变量将...原创 2019-12-05 21:10:34 · 201 阅读 · 0 评论 -
ThreadLocal中0x61C88647常量的含义是什么
如果你把0x61c88647转换成十进制,你会得到1640531527,这是没有意义的,直到你意识到它是32位,它是2654435769的签名版本。再次这个数字似乎有点奇怪,直到你意识到它是2的32次方乘以X其中X是黄金比例(√5-1)÷2近似0.618。现在它如何适合ThreadLocal?当您创建新的ThreadLocal时,会根据之前的ID +我们的幻数分配一个ID。它被放入ThreadL...原创 2019-11-17 18:55:23 · 1427 阅读 · 2 评论 -
ArrayList
探索ArrayList自动改变size真相ArrayList的列表对象实质上是存储在一个引用型数组里的,有人认为该数组有“自动增长机制”可以自动改变size大小。正式地说,该数组是无法改变大小的,实际上它只是改变了该引用型数组的指向而已。下面,让我们来看看java是怎样实现ArrayList类的。一、ArrayList类的实质ArrayList底层采用Object类型的数组实现,当使用不带...转载 2019-11-11 21:20:05 · 155 阅读 · 0 评论 -
Java基础6
集合,List//无线程,不安全迭代器 Iterator it=list.iterator();it.hasNext(0;it.next();List list=new Vestor();//线程,安全HashTable ,线程同步原创 2019-10-29 18:23:56 · 147 阅读 · 0 评论 -
Java基础5
equal ==equal比较的是堆里面的内容;全等比较的是栈里面的地址;String Builder String Bufferbuffer 速度慢 不安全builder 速度快,不安全;public class Buffer { public static void main(String[] args) { StringBuffer s=new Str...原创 2019-10-27 19:50:00 · 147 阅读 · 0 评论 -
Java基础5
内部类public class Anom { class Anom1{ public void go(){ class Anom2{ class Anom3{ public void to(){ System.out.printl...原创 2019-10-26 11:31:45 · 163 阅读 · 0 评论 -
Java基础4
面向对象三大特征:封装;private与public的运用,get与set继承;多态;类是对一类事物描述,是抽象概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例;类是用来描述每一个对象包括的数据特征类描述了每一个对象的行为特征类包括两个方面的内容:属性和方法;声明对象:Student s = new Studen...原创 2019-10-23 16:49:29 · 180 阅读 · 0 评论 -
Java基础3
double i=-1.0;int j=0;i%j => NaN i/j =>-infinitya=2;b=++a; a=3;b=3;//a先进行加一,再将值赋给ba=2;b=a++; a=3;b=2;//a先将值赋给b;再自身加一;a=2;b=a+3*a++; =>a=3 b=8int x...原创 2019-10-19 15:51:19 · 162 阅读 · 0 评论 -
Java基础2
自动提升:System.out.println(-2/0) 出现异常;ArithmeticExcept / by zero;System.out.println (-2.0/0) 结果-Infinity;0.0系统定义为无穷小的正数;Java是以unicode【0-255-65535】码作为编码格式,c c++是以ascII码【0-255】作为编码格式;char c1=’\u0...原创 2019-10-18 20:19:17 · 171 阅读 · 0 评论 -
Java基础1
编译型语言:不能跨平台 速度快 c++;delphi解释型语言:可以跨平台,速度慢 php Javascript vbjava 先编译后解释;jvm java virtual machine 在一台计算机上由软件或硬件模拟的计算机,Java虚拟机读取并解释经编译过的平台无关的字节码class文件,实现跨平台;jre Java runtime environment Java运行环境加载代...原创 2019-10-18 14:37:06 · 157 阅读 · 0 评论