![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 73
tianshilang
这个作者很懒,什么都没留下…
展开
-
spring+mybatis利用interceptor(plugin)实现数据库读写分离
1. 前提 好长时间不写博客了,应该吐槽,写点什么东西了!最近在研究数据库读写分离,分表分库的一些东西。其实这个问题好早之前就想好,只是以前使用hibernate,难点是不好判断什么样的sql走读库,什么样的sql走主库?用正则匹配开头或许可以,/^select 没想出什么好的解决方法,mybatis就不一样了,mappedstatement有commandtype属性,象select,...原创 2012-04-24 22:28:26 · 233 阅读 · 0 评论 -
NIO[SelectableChannel.register和Selector.select会有锁等待冲突]
结论: register得放在select之前进行Thread Dump信息:"Poller-1" prio=6 tid=0x040f0400 nid=0x408 runnable [0x044df000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSele...原创 2012-05-09 09:40:12 · 455 阅读 · 0 评论 -
HashMap无序与LinkedHashMap有序
HashMap为什么是无序? HashMap的数据结构是table[entry],entry是一个链表结构,数据的每个元素是一个链表。不同key,但是具有相同hashcode会落在table[hashcode]的链表上当使用iterator遍历时,使用如下code: final Entry<K,V> nextEntry() { if (mo...2011-11-10 16:51:07 · 1578 阅读 · 0 评论 -
httpclient3.1的relaseConnection的misunderstand
releaseConnection是close connection,基于连接池的认识,我们首先会想到是释放链接,至于是否close就不得而知了。近日发现线上系统出现了close wait的socket,close wait是由于被动关闭的一方没有执行socket.close()导致,由此可见我们code中存在没有正确关闭socket。类似的code是这样的HttpClient h...2012-05-17 15:54:15 · 257 阅读 · 0 评论 -
ReentrantLock为啥会出现不公平的场景
不公平锁产生的原因的是acquire在enqueue之前,这样后来的线程有可能会较在等待队列中的等待者之前获得锁。barging这个词可以理解为闯入,插队。不公平锁会导致某些线程总是不排队就获得锁,而同时排在队尾的线程总是出现饥饿状态。那么如何获取公平锁呢,Doug Lee页给出了方案,很简单在acquire的时候,首先检查当前线程是否在队列中(对首),如在队列中即可获得,如不...原创 2012-05-22 12:31:11 · 170 阅读 · 0 评论 -
Nio框架需要注意的两个问题(2)
书接上回,上次说到了selector的register和select会有锁冲突,这次再来考虑write的问题。1. channel.write(Bytebuffer)是不是总是可写,当socket的writeBuffer满的时候会返回0,说明不能再写进任何字节。假设要写入一个很大的ByteBuffer,有可能需要分多次写。2. channel上执行write操作需要获得锁保证同步,...2012-11-27 17:35:13 · 82 阅读 · 0 评论 -
Netty笔记:ReplayingDecoder
为什么需要ReplayingDecoder,它和FrameDecoder有什么不同呢?ReplayingDecoder是一种特殊FrameDecoder,它能实现在IO阻塞的情况下实现无阻塞的解码。听起来比较拗口而且不好理解,举个例子来说,假设你在用netty设计一个文件传输的模块,采用的Header-Content的协议,在Header中说明文件的长度,我们用一个int来容纳长度,Conte...2012-12-08 12:57:47 · 309 阅读 · 0 评论 -
话说Connect reset异常
起因是这样的,线上log经常出现Connection Reset异常,从堆栈上分析是solr进行sharding request时发生的,solr部署在tomcat上。从现场来看,原因很明白Server端发出RST包。但具体原因是什么就得经过一番分析了, 经过google百度以及和网友沟通,发现会有以下场景导致RST: 1. 设置SoLinger,并设置停留时间为...原创 2012-09-25 16:20:58 · 746 阅读 · 0 评论