2019年9月15日

透过CountDownLatch窥探AQS

摘要: 透过CountDownLatch窥探AQS,搞懂每一行代码背后的故事 阅读全文

posted @ 2019-09-15 11:45 Kahuna 阅读(243) 评论(0) 推荐(0) 编辑

2019年5月28日

透过ReentrantLock窥探AQS

摘要: 本文通过ReentrantLock来窥探AQS的结构以及运行原理,因为AQS是并发包实现大部分同步器的框架,所以本文只对ReentrantLock相关方法做了解释说明,其他的方法在后面的文章中会继续做深入的解释 阅读全文

posted @ 2019-05-28 10:58 Kahuna 阅读(311) 评论(0) 推荐(0) 编辑

2014年4月9日

apache整合tomcat部署集群

摘要: apache整合tomcat,使用jk做转发,关键配置,错误的时候日志分析以及session复制所需条件 阅读全文

posted @ 2014-04-09 00:03 Kahuna 阅读(38400) 评论(4) 推荐(3) 编辑

2014年3月24日

poi 操作excel

摘要: poi的相关excel操作,一个可以调用的接口 阅读全文

posted @ 2014-03-24 15:36 Kahuna 阅读(6870) 评论(0) 推荐(0) 编辑

2013年10月19日

java内存模型

摘要: java的内存模型以及线程主要是为了顺应当前的多任务处理器,随着硬件的不断升级,如果现在还是只能单线程串行执行的话,将会浪费处理器的大量时钟,cpu的执行速度非常快,导致了和等待资源之间有时间差,在等待阶段,cpu处在空闲时间,为了有效利用这段空闲时间,就可以引入多线程处理。注意是有效利用,多线程是一把双刃剑,因为多线程程序,需要额外的一些资源,比如阻塞/唤醒等操作需要操作系统在用户态与内核态进行转换,而这种转换需要耗费比较大的资源,如果系统存在大量的阻塞/唤醒操作,那么会浪费大量的cpu时钟周期,导致系统吞吐量降低,合适的线程数量可以充分利用cpu的空闲时间,从而提升系统的吞吐量。随着多.. 阅读全文

posted @ 2013-10-19 18:23 Kahuna 阅读(958) 评论(0) 推荐(0) 编辑

2013年9月13日

观察者模式

摘要: 工作的时候看到前人写的代码中涉及到观察者模式,之前一直也想学以下这种模式,所以这次就对观察者模式的学习做下记录。 观察者模式又称发布-订阅模式,说的通俗点,举个例子:我和朋友打dota,我玩lion,朋友玩小小,我对敌人放了技能妖术,然后我叫朋友放技能投掷,他放完了叫我放技能穿刺,我放完了地刺再叫他放技能山崩,他放完了以后再叫我放大招。这个例子里面多次用到了观察者模式的思路。我放完一个技能,然后通知我的朋友,这个过程中我就是被观察者,我朋友就是观察者,我释放玩技能,叫我朋友的动作就是通知;同理我朋友放完一个技能,然后通知我,这个时候他就是被观察者,我就是观察者。 观察者的好处是不需要一... 阅读全文

posted @ 2013-09-13 21:24 Kahuna 阅读(3650) 评论(0) 推荐(0) 编辑

2013年8月31日

Class类文件结构、类加载机制以及字节码执行

摘要: 一、Class类文件结构 Class类文件严格按照顺序紧凑的排列,由无符号数和表构成,表是由多个无符号数或其他数据项构成的符合数据结构。 Class类文件格式按如下顺序排列:类型名称数量u4magic(魔术)1u2minor_version(次版本号)1u2major_version(主版本号)1u2constant_pool_count(常量个数)1cp_infoconstant_pool(常量池表)constant_pool_count-1u2access_flags(类的访问控制权限)1u2this_class(类名)1u2super_class(父类名)1u2interface... 阅读全文

posted @ 2013-08-31 17:50 Kahuna 阅读(4887) 评论(0) 推荐(2) 编辑

2013年8月28日

数据库查询速度极慢【个人工作问题解决过程记录】

摘要: 最近客户那边报了一个问题上来,问题:门店反馈JPOS界面查询“分类销售报表”,查询一个月的数据一直卡在查询界面,查询一天的数据,至少要3分钟,据了解门店之前是没有问题的。 我拿到客户现场的数据以及日志,把现场数据安装到我的开发环境中,查看下日志,日志没有任何报错,收银员的操作也没有任何不规范之处,然后就果断不管日志了,重现了问题,发现没有报错,进度条一直显示“正在加载数据”,所以想到用visualVm中的线程监测工具对他进行监测,监测结果显示,线程没有死锁,一直处在Runnable状态,入下图:线程监测没得到什么头绪,然后想看看堆的情况,然后打开visualVM对内存进行监控,监控了一段... 阅读全文

posted @ 2013-08-28 21:28 Kahuna 阅读(18168) 评论(0) 推荐(0) 编辑

2013年8月25日

虚拟机故障处理工具

摘要: JDK中的bin目录下有很多工具,这些工具可以用来检测虚拟机运行情况以及cpu,内存,线程等的监控,比如jps、jstat、jinfo、jmap、jhat、jstatck等。 jps:可以用于查看虚拟机进程的LVMID,可以有三个参数,分别为:q为只输出LVMID,省略主类的名称;m为输出输出虚拟机启动书输出的main函数;l为主类全面,如果执行的是jar包,那么输出jar的路径;v为虚拟机启动时候的jvm参数 jstat:可以显示本地或者远程虚拟机中的类装载,内存,垃圾收集,JIT编译等的运行数据,这将是运行期定位虚拟机性能问题的首选工具。命令格式:jstat [ option vm... 阅读全文

posted @ 2013-08-25 14:38 Kahuna 阅读(1099) 评论(0) 推荐(0) 编辑

WeakHashMap理解

摘要: WeakHashMap实现了Map接口,是HashMap的一种实现,他使用弱引用作为内部数据的存储方案,WeakHashMap可以作为简单缓存表的解决方案,当系统内存不够的时候,垃圾收集器会自动的清除没有在其他任何地方被引用的键值对。 如果需要用一张很大的HashMap作为缓存表,那么可以考虑使用WeakHashMap,当键值不存在的时候添加到表中,存在即取出其值。 WeakHashMap weakMap = new WeakHashMap(); for(int i = 0; i (); for (int i = 0; i weakMap1 = new WeakH... 阅读全文

posted @ 2013-08-25 14:07 Kahuna 阅读(12824) 评论(0) 推荐(1) 编辑

导航