`
rxin2009
  • 浏览: 16738 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
本为分析netty源码中的过程流转实现   netty中的处理器的流转体现在DefaultChannelPipeline类中,在添加处理器时一般调用addLast(String, ChannelHandler),下面来看看这个方法 public synchronized void addLast(String name, ChannelHandler handler) { if (name2ctx.isEmpty()) { init(name, handler); } else { checkDup ...

原子类

     本文主要介绍jdk中的原子类、ABA问题以及多个变量之间的安全访问。      原子类中核心的一个语法就是CAS操作,而这个操作封装在Unsafe类中,典型的应用如下代码 // setup to use Unsafe.compareAndSwapInt for updates private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long valueOffset; static { try { valueOffse ...

netty源码

学习了一下netty的源码,做点记录   代码分析可以看看淘宝的文章 http://rdc.taobao.com/team/jm/archives/423   附上两个断点列表,以官网中的echo的例子 netty-1.bkpt主要学习netty的核心流程:包括服务端boss的绑定监视,worker的轮询;客户端的连接,boss的轮询(默认只有一个boss),worker的轮询;主要描boss怎么向worker注册任务,服务端和客户端怎么发送信息(这个过程netty还是依赖底层java api实现的)。 netty-2.bkpt主要学习netty的事件流转模型:描述管道中处理器上下 ...

netty中的概念理解

        本文的主要内容是对netty框架中的Channel、ChannelEvent、ChannelFuture、ChannelHandler、ChannelPipeline、ChannelSink、SelectionKey、Selector对象进行一个概念的理解,信息都来自源码中的英文解释,算一个翻译文档。   先来说说channel       channel是一个网络套接字的纽带或者说是一个组件,它可以有这样的i/o操作:读写、连接以及绑定。以下是它的一些特点: 1、netty中全部的i/o操作都是异步的,这就意味着任何i/o操作将会立即返回而不保证操作是否完成,返回的是C ...

SSL文章备份

    博客分类:
  • SSL
 SSL双向认证java实现 : http://www.blogjava.net/stone2083/archive/2007/12/20/169015.html;(评论也很重要)     为高级 JSSE 开发人员定制 SSL: http://www.ibm.com/developerworks/cn/java/j-customssl/;     详解公钥、私钥、数字证书的概念 : http://pepa.iteye.com/blog/250991;     SSL协议与数字证书原理: http://blog.csdn.net/xinew/article/deta ...
本文的主要内容是对jdk并发包中ArrayBlockingQueue、LinkedBlockingQueue、ConcurrentLinkedQueue类的代码解析,主要对比他们的不同。   前面两个类都是生产者消费者模型的实现,性能都不错,这毕竟都是大师的杰作。先来认识下ArrayBlockingQu ...
本文的主要内容是认识CountDownLatch、Semaphore、FutureTask的源码,这三个类在AQS中都用的是共享模式的,而且是可中断的,不同的是各自的请求锁和释放锁的操作,先说他们的不同点,在来说相同点。   首先看看CountDownLatch(闭锁),这个类在构建的时候初始一个阀值N,每调用一次countDown()后,N将减一直到为0时,线程才可以通过,下面来看看请求锁的代码 public int tryAcquireShared(int acquires) { return getState() == 0? 1 : -1; ...
本文主要内容是对并发包中的读写锁的认识,主要解释读写锁的请求过程,锁降级的实现以及锁升级的不可能性。   首先来了解一些常量和简单方法,贴下代码 static final int SHARED_SHIFT = 16; static final int SHARED_UNIT = (1 << SHARED_SHIFT); static final int MAX_COUNT = (1 << SHARED_SHIFT) - 1; static final int EXCLUSIVE_MASK = (1 << SHARED_S ...
本文的主要内容是理解ReentrantLock源码。 先来看一段代码 public Object take() throws InterruptedException { lock.lock(); try { while (count == 0){ System.out.println("empty,wait with puting...."); notEmpty.await(); } // TimeUnit.SECONDS.sleep(1); Object x = items[takeptr]; if (++tak ...

js控件定位

JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍 这里是javascript中制作滚动代码的常用属性 页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offsetWidth   (包括边线的宽); 网页可见区域高: document.body.offsetHeight (包括边线的宽); 网页正文全文宽: document.body.scrollWidth; 网页正文全文高: document.body.sc ...
hibernate缓存知识备份一下: 1、http://baike.baidu.com/view/2273788.htm; 2、http://www.iteye.com/topic/249465; hibernate英文文档也不错 hibernate乐观锁和悲观锁,收藏下: 1、http://www.blogjava.net/baoyaer/articles/203445.html

web.xml详解

部署描述符的配置详解,收藏下: http://www.cnblogs.com/konbluesky/articles/1925295.html
我们知道,hibernate的tool工具中有个包hbm2ddl可以通过hibernate的映射文对数据库进行ddl操作,而在配置文件中加入<property name="hbm2ddl.auto">update</property>,就可以根据映射文件进行ddl操作了。那我们要在运行创建表,或修改表的字段,那我们可以先通过 DOM修改配置文件来间接修改数据库那要创建数据库表的话,只要创建了新的映射文件,并通过映射文件进行插入操作,就可以创建表了那我们要修改数据库表的字段怎么办呢?hibernate3.0中给我们提供了动态组件的功能,这种映射的优点是通 ...
Global site tag (gtag.js) - Google Analytics