随笔分类 - Concurrent
摘要:原子类java.util.concurrent.atomic. 原理分析 在并发编程下,原子操作类的应用可以说是无处不在的。为解决线程安全的读写提供了很大的便利。 原子类保证原子的两个关键的点就是:可见性和写数据一致性。 对修改可见 使用volatile来保证读取到最新的数据。 volatile语义
阅读全文
摘要:好久没有更新博客了,今天试着用简单的语言把synchronized的使用说清楚。
阅读全文
摘要:之前使用线程池都是通过Executors.new...这种方式创建,因为Doug Lea已经给我们做了相对通用的设置,这么做的话简单又安全。但是有时候根据不同的场景可能需要进行一些自定义的操作。 比如,我需要一个初始情况下,使用10条核心线程运行任务,但是考虑到服务器的资源有限,我们希望限制在最多只
阅读全文
摘要:Reactor模式,I/O多路复用,NIO,EPOLL,水平触发模式
阅读全文
摘要:背景 最近写了一个定时任务,期望是同一时间只有一台机器运行即可。因为是应用是在集群环境下跑的,所以需要自己实现类一个简陋的Redis单机锁。 原理 主要是使用了Redis的SET NX特性,成功设置的那个客户端则被认为拿到了锁,没有设置成功的其他客户单则认为没有拿到锁。 在分布式环境下使用锁是挺危险
阅读全文
摘要:背景
最近做了一个需求,为了控制数据库连接数,自己写了个简易的数据库连接池。跟F哥聊天的时候提到了,说可以搞个通用的对象连接池,So…… 目的
1. 让对象池相关的需求开发起来更便捷,不用依赖apache的common包;
2. 讨论了简易数据库连接池的缺点,想弥补并通用;
3. 造个轮子感受...
阅读全文
摘要:+ 负载均衡 现在几乎看不到单机奋斗的应用了吧。反向代理服务器可以根据负载均衡算法进行均匀或者自定义的转发。常见的负载均衡算法有:轮转算法(Round Robin)、最少连接算法(Least Connection)、响应速度算法(Response Time)、哈希算法(HASH)等。Nginx层面的
阅读全文
摘要:今天在查看接口的时候发现有两个接口长期霸占最耗时接口排行榜,所以找了个空闲定位了一下问题。从原来的500ms左右提到4ms左右,特此小小记录一下。
阅读全文
摘要:关于memcached和redis的使用场景,根据大神们的讨论和我在网上查到的资料,总结一下:两者对比:redis提供数据持久化功能,memcached无持久化;redis的数据结构比memcached要丰富,能完成场景以外的事情;memcached的单个key限制在250B,value限制在1MB...
阅读全文
摘要:总想写点技术积累。因为最近工作比较忙,一忙一懒,找足了借口 :(今天想简单记录一下前段时间发现在做数据清洗时遇到的问题,在处理这件事情上,感受到了许多。大概需求是这样的:有两组数据库,每组都是分库分表的结构。从两组库中查出数据,根据规则再进行入库、清除缓存、发送消息队列。数据有几千万。遇到这样的问题...
阅读全文
摘要:平时工作也用nginx,不过用的时候都是已经配好的,只要简单改改参数就可以了。今天在自己的电脑上安装的时候发现没有想象的那么顺利。纸上得来终觉浅,绝知此事要躬行。正题: 1、到nginx下载页面获取最新版本的包(截止发文日期,最新版本是nginx-1.9.0): 地址ht...
阅读全文
摘要:先谢Doug Lea。使用场景:最近在做webservice调用的时候,发现一个问题,对方的webservice接口很不稳定,所以在获取的数据时候经常要等待很久才能把数据全部拉回来,甚至有时候直接就抛异常了,这种阻塞很耗费时间,性能很低。针对这种情况,我需要将一定时间内没有返回结果的调用KILL掉,...
阅读全文