上一页 1 ··· 3 4 5 6 7

2018年1月5日

摘要: 在Java中,volatile是个很高层面的规范,保证了指令不会被重排序+对volatile变量的写使得当前cpu缓存中的所有变量写回到主存中,从而保证了内存可见性。 具体的实现是靠JVM和cpu(还有操作系统?)合作实现的,不管cpu有没有mesi协议,用了volatile,JVM都会保证可见性, 阅读全文
posted @ 2018-01-05 20:59 chuliang 阅读(5205) 评论(1) 推荐(8)
 

2017年12月27日

摘要: ReentrantReadWriteLock 这个对象,有两个内部类,readLock和writeLock,都有一个aqs的属性sync,实例化的时候,获取的是从ReentrantReadWriteLock自己的重写的内部类sync继承了aqs 看readLock的lock()方法 RWlock 的 阅读全文
posted @ 2017-12-27 13:40 chuliang 阅读(297) 评论(0) 推荐(0)
 

2017年12月14日

摘要: Constructor的newInstance方法 所以保证了枚举不会被反射实例化 另外,序列化一个枚举类的对象,获取的时候调用的是继承的Enum的valueOf 方法T result = enumType.enumConstantDirectory().get(name);根据name去找存入的对 阅读全文
posted @ 2017-12-14 15:10 chuliang 阅读(4809) 评论(0) 推荐(1)
 

2017年12月8日

摘要: 先是普通二叉树的删除 在右子树中找到它右子树中最小的那个节点A,将要删除的节点的值和A互换,现在的问题就是删除这个A节点 根据红黑树的性质,A的颜色有红黑两种可能,分三种情况讨论,只需要处理第三种(注意因为A是根节点右子树中最小的节点,那么A就不可能有左子节点) 1、如果A是红色节点,那么没有(非n 阅读全文
posted @ 2017-12-08 16:13 chuliang 阅读(410) 评论(0) 推荐(0)
 

2017年12月4日

摘要: socket():新建一个文件 bind():绑定到端口,第一个参数就是socket()方法产生的文件描述符 listen():确定新建的这个socket是一个服务器,被动等待网络其他进程链接,参数有个最大值:等待连接队列和成功连接队列之和的最大值 accept():如果绑定的端口上有新连接建立,那 阅读全文
posted @ 2017-12-04 12:18 chuliang 阅读(307) 评论(0) 推荐(0)
 

2017年10月16日

摘要: 逻辑地址到线性地址: 逻辑地址 = 段标识符(或者叫段选择符)16位 + 偏移量 32位 段标识符 = index + tl + rpl 其中,cpu中的段寄存器只保存段标识符,根据其中的tl 确定段描述符在GDT还是LDT中,从不同的寄存器获取线性基地址,再加上index*8就得到了段描述符的地址 阅读全文
posted @ 2017-10-16 17:14 chuliang 阅读(670) 评论(0) 推荐(0)
 

2016年8月30日

摘要: 负数在内存中是用补码表示,顾名思义就是和其对应的正数相补 比如-2: 1111111……1110 和2相加正好溢出,也就是互补 比如~5取反: 5是0000000……00101 取反:1111111111……11010 这个数值和6正好互补,所以~5的值是-6 再比如,判断一个int值a是2的次方, 阅读全文
posted @ 2016-08-30 17:59 chuliang 阅读(2419) 评论(0) 推荐(0)
 
上一页 1 ··· 3 4 5 6 7