摘要:
题外话:为什么要hashcode进行spread? 充分使用key.hashCode()的高16位信息,保证hash分布更分散, 扩容操作是新建2倍于原表大小的新表,并将原表结点拷贝一份放在新表中,对原表无修改或修改很小。当原表所有结点都已被拷贝到新表中后,原表会被垃圾回收。 在jdk7中的Hash 阅读全文
摘要:
jdk7_ConcurrentHashMap初始化图示 jdk7_ConcurrentHashMap_put和get操作_扩容_线程安全的分析 阅读全文
摘要:
1 package proxy.dynamicproxy; 2 3 import java.lang.reflect.InvocationHandler; 4 import java.lang.reflect.Method; 5 import java.lang.reflect.Proxy; 6 7 8 /** 9 * 需要实现InvocationHandler接口,内... 阅读全文
摘要:
1 package proxy.staticproxy; 2 3 public interface IStar { 4 5 public void sing(); 6 } 1 package proxy.staticproxy; 2 3 public class RealStar implements IStar{ 4 @Override 5 public vo... 阅读全文
摘要:
1 package reentrantlock; 2 3 import java.util.ArrayList; 4 import java.util.concurrent.locks.ReentrantLock; 5 6 public class TestFairSyn { 7 8 public static void main(String[] args) { ... 阅读全文
摘要:
跑通上面的例子可以得到一些总结: 1、在生产者-消费者模式下,消费者线程和生产者线程都在抢占cpu,谁抢到cpu谁就得到执行。抢不到的会进入AQS队列。 此时如果有多个线程在抢占不到cpu进入AQS队列时,进入AQS队列的顺序是不可预知的(比如恰好经历线程切换), 但可以保证的是: 一旦在AQS队列 阅读全文
摘要:
项目源码 https://download.csdn.net/download/csdn_z_s/10427764 开发环境 操作系统: win7 64位 旗舰版 Java语言开发环境: Eclipse3.7(jdk1.6u45) C/C++语言开发环境: cn_visual_studio_2010 阅读全文
该文被密码保护。 阅读全文
摘要:
通常情况下,对一个标准的com组件进行集成,网上普遍使用的方式有: 1、#import *.dll 或 #import *.ocx的方式,VS编译器重新编译后,就会自动生成组件对应的*.tlh文件,该文件类似于头文件,含有com组件中的接口信息,在自己的项目中就可以引用接口或者类了。2、#pragm 阅读全文
摘要:
场景: 别人发给自己一份word模板,基于统一性,里面包含了很多“内容控件”,一般情况下,只需要根据内容控件进行编辑即可,但如果想对内容控件本身做编辑操作,例如删除等。 操作: 单击 文件>选项>自定义功能区。 在选项卡,在 自定义功能区 下的列表中,选择 开发工具 框中,然后单击 确定。 执行下列 阅读全文