java
文章平均质量分 69
litongtong1028
这个作者很懒,什么都没留下…
展开
-
CAS-非阻塞同步
CAS(compare-and-swap):比较并交换,依赖于硬件指令集,如果一个变量的值跟期望的值相等就将变量的值替换成新值,并返回旧值,该操作是一个原子操作。在java中sun.misc.Unsafe类提供了compareAndSwapInt和compareAndSwapLong方法来实现CAS指令。AtomicInteger就是依赖Unsafe类来实现:public fina...原创 2014-07-22 14:16:54 · 83 阅读 · 0 评论 -
BoneCP数据库连接池源码解析
传统的连接池比如proxool,会使用List存放所有的连接,通过读写锁来修改连接的状态,标示该连接是否是可用,而BoneCP采用了分区的方式提高了获取数据库连接的并发性,类似ConcurrentHashMap解决并发问题的思想。 下面看下主要的几个类:BoneCPDataSource:实现了DataSource接口,接收数据库的配置并对外提供获取数据库连接的功能,第一次获取连接...原创 2016-01-08 16:03:27 · 358 阅读 · 0 评论 -
通过tcpdump和wireshark分析应用慢请求问题
最近通过报警发现应用频繁有超过1s的慢请求,通过查看日志、tcpudmp和wireshark最后定位是网络问题,在排查过程中也参考了网上的很多文章,但是写的都不是全,现在有空分享一下问题排查的一些经验,希望对遇到类似问题的码农们有所帮助,具体排查步骤如下:查看程序日志,程序中对超过100ms的请求都有日志输出,通过查看日志发现有大量的数据库和redis超时查看redis的慢请求,re...原创 2016-01-23 21:27:27 · 2124 阅读 · 0 评论 -
strace定位系统问题
strace可以跟踪程序执行过程中产生的系统调用及接收到的信号,帮助我们分析程序或命令执行中遇到的异常情况.strace -p 20533 -tt -T -s10240 -f -o a.txt-p是进程号-tt打印运行时间-T是打印调用消耗时间(监控性能问题)-f是打印follow forks-o指定文件地址-s指定打印字符串的长度,默认只打印前32个字符 通...原创 2017-05-24 14:43:51 · 183 阅读 · 0 评论