Java
骨汤鸡蛋面
这个作者很懒,什么都没留下…
展开
-
java NIO
前言我从大二开始学习Java,一直偏重于J2EE领域,写多了SSH、SSM代码之后,Java让我失去了新鲜感,以为调调接口就完事了。笔者一度开始拥抱Go语言,直到我知道“JAVA NIO”这回事,才发现,JAVA能做的有很多。比如在多线程(java.util.concurrent)及网络领域(java.nio),老树开新花。io即输入输出,输入输出的源头与目的地主要是网络和文件,我们先从比较简单的文原创 2016-04-08 09:46:59 · 372 阅读 · 0 评论 -
JVM和传统OS对比
前言在linux中,可执行文件没有唯一的后缀名,本文以”可执行文件”统称 jvm体系的class文件对应于linux中的可执行文件,jvm对应于linux os,两者有很多相象的地方。但毕竟机理不同,class文件和可执行文件的不同正是两个os机理不同的反映。而本质上的不同,则要追溯到java的起源:面向网络,为了让“可执行文件”在网络上传输并在不同的系统上执行,发散出很多机制。本文以jvm为“主场原创 2016-02-16 09:44:53 · 647 阅读 · 0 评论 -
ThreadLocal小结
前言今年四月份面阿里,前一阵子面美团,一说JAVA基础,都会提到ThreadLocal,看来一句“多线程这方面做的不多”是不会让面试官客气的,好在亡羊补牢,为时未晚,在本文中我来谈谈我对ThreadLocal的理解。 本文的很多观点来自《深入理解java虚拟机》以及《java特种兵》。线程安全我们很难想象在计算机的世界,程序执行时,被不停地中断,共享的数据可能会被修改和变“脏”。为保证程序的正确性原创 2016-01-08 20:05:10 · 355 阅读 · 0 评论 -
quartz 源码分析
简介经常在网上看别人的源码分析,但大家的思路路径一般不一致,所以往往看归看,忘归忘。刚好最近项目用到了定时任务,所以解析深入了解下quartz。quartz 一些高级特性的使用代码实例,可以参见git@code.csdn.net:lqk654321/quartz-demo.git从使用开始讲起简单使用如何使用分为两个部分:quartz独立使用,和Spring结合使用。之所以分开,是因为spring的原创 2016-01-18 09:39:44 · 601 阅读 · 0 评论 -
自己动手写spring(九) 总结
前言作为一个使用轮子的程序员第一次写了轮子,感觉还是满兴奋的。笔者在看很多项目的源码时,经常是看了忘,忘了看。在反思这个现象时,笔者认为:很多代码固然很精巧,但因为读者没有设身处地考虑过实际的情景,对为什么要这样做没有直接的感觉,导致印象不深刻。还有一个重要原因是,大部分框架的代码在发展过程中都经过重新设计,这固然必要,但判空、处理异常,以及复杂的父子关系等掩盖了最初的思路,容易将读者带入到细节中。原创 2015-11-16 22:05:42 · 438 阅读 · 0 评论 -
自己动手写spring(四) 整合xml与注解方式
前言本文总结前文的内容,将两种方式整合在一起。再次强调,要实现bean工厂功能,首先要将bean信息加载到内存,由配置文件或注解方式转化为“以类的方式”存储,并以map的形式组织起来(为方便查询)。具体的说就是public class BeanFactory { private Beans beans; // 实现id到bean对象的映射 private Map<String原创 2015-11-15 11:27:59 · 281 阅读 · 0 评论 -
自己动手写spring(三) 支持注解方式
前言本文使用注解方式来读取bean类,并解决bean之间的依赖。其中Component和Value注解直接copy自Spring,Resource注解来自javax。扫描包中的所有类还是以前文提到的beanA和beanB两个model类为例(省略set和get方法)。@Componentpublic class BeanA { @Value("studentA") private原创 2015-11-15 11:27:22 · 353 阅读 · 0 评论 -
自己动手写spring(一) 使用digester
前言本来想熟悉下digester的使用,写着写着发现,可以搞一个类似spring的东西的来,将过程记录下来,与大家分享。例子中很多代码没有优化,基本没有异常处理和判空操作,这是我的一个坏习惯,先奔着目的去,实现成功后再重构。但这样的代码,更易看懂,优化后的代码反而掩盖了很多思路和思想,尤其容易让人分不清重点(因为算是技巧的地方太多了)。项目源码的git clone地址:git@code.csdn.n原创 2015-11-12 09:44:32 · 560 阅读 · 0 评论 -
Netty线程模型
前言netty的学习有以下几个难点:netty基于nio进行了较为复杂的封装,而很多童鞋对nio都不是很了解。netty中应用了Reactor模式,而Reactor模式本身有多种线程模型可以实现,netty用了较为复杂的那种。线程按照其任务性质,可以分为工作线程和io线程,而netty线程主要就是io线程。我们知道,多线程程序有一些套路(设计模式),netty作为针对io线程的多线程程序,当然原创 2016-04-08 22:14:42 · 324 阅读 · 0 评论