JDK 1.8 ArrayBlockingQueue 源码阅读(二)获取 在上一节,介绍了ArrayBlockingQueue的添加元素的方法,本节,结合源码给大家介绍一下获取元素的方法。获取元素的方法有下述几种E poll() 立刻返回,如果队列为空,返回nullE take() 如果队列不为空,返回队首元素,否则阻塞到队列不为空E poll(long timeout, TimeUnit unit) 等待timeout 时间的pollE p
JDK 1.8 ArrayBlockingQueue 源码阅读(一)插入 在工作环境中,我们通常会使用ArrayBlockingQueue 作为任务管理队列,并且之前在Qunar开发的时候,也用过ArrayBlockingQueue作为异步对列,实现了一个异步通知的程序。最近有点时间,阅读一下这个工具。我们知道ArrayBlockingQueue是一个FIFO的有界阻塞式对列,每次取对列的元素的时候,取的是队首的元素,而每次往这个对列的队尾放元素。先看一下这个class
FutureTask 源码阅读 public void run() { if (state != NEW || !UNSAFE.compareAndSwapObject(this, runnerOffset, null, Thread.currentThread())) return;
聊聊TCP协议-------协议头详解 最近工作不是特别忙,又开始学习一些东西,之前因为对netstat命令显示的tcp状态不是很了解,加上之前看了一下tcp/ip那本黑色的书,准备整理一下tcp的相关内容。首先看一下tcp header 的内容,大概有这么几个字段source port: 2字节,也就是16位,表明发送端的端口号destination port:2字节,16位,标示接收端的端口号tcp作
TIME_WAIT 和tcp_tw_reuse 版权声明:尊重博主劳动成果,欢迎转载,转载请注明出处 --爱技术的华仔(http://blog.csdn.net/yunhua_lee)tcp_tw_reuse选项的含义如下(http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt):tcp_tw_reuse - BOOLEANAllow to reuse
git ignore 相关 今天晚上继续制作java后端项目模版,发现git add . 的时候会把一些无用的idea相关文件还有target下面的无用文件上传。在我已经commit之后,push之前发现这个问题,所以我要撤销commit ,只要git reset --hard 这个命令回滚一下,然后撤销add操作 git rm -r --cached . 这样把跟踪区的内容取消。于是想了一下,觉得不能每次都这样,
mac os mysql启动报错 Can't open the mysql.plugin table Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!我第一次用sudo mysqld start启动的时候,报错是上面那个,我查了一下stackoverflow发现,mac下的启动要用mysql.server 那个命令但是我之后使用sudo mys
IDEA 15 java -source问题 今天突然想试试jdk8的新特性,明明jdk装的是1.8 ,而且默认的jdk也是1.8,但是build项目时候报错如下后来发现,idea15 的file ->project->project structure 里面的设置是这样的把这个7改成8就好
解决 java.util.prefs.BackingStoreException 报错问题 启动tomcat后,发现有个warnning信息如下java.util.prefs.FileSystemPreferences checkLockFile0ErrorCode Warning: Could not locksystem prefs. Unix error code 0. java.util.prefs.FileSystemPreferences syncWo
memcached 客户端总结 本文将从memcached 使用角度,从客户端,协议,服务器端来简要介绍一下memcached 的特性。memcached是一个高性能的分布式K-V内存存储系统,其在内存中维护了一张hash表,由于其可以在内存中读取,所以读写速度很快,由于内容存在内存中,断电后会遗失,所以可靠性不如db,现在也有将memcached和BDB结合在一起的,叫做memcacheDB,这里不做讨论。由于其读写速
SimpleDateFormat 线程不安全 rt,我在一个jsp里面启动了70个线程,但是他们共享了一个SimpleDateFormat,就报格式化错误了,一开始我以为是因为垃圾回收导致有用的信息被回收了,后来谷歌了一下,SimpleDateFormat这玩意线程不安全。
resin设置jvm启动参数 在resin.xml的 后面加上 -Xms4096m -Xmx2048m -Xmn1024m -XX:PermSize=1048m -XX:MaxPermSize=2000m 1024 30s 512 60s
insert...on duplicate key update 生产环境收集到bug,在小组管理员进行ban/unban小组成员操作时需要更改小组成员的状态(单独的一张表,大概为:小组id,成员id,状态,前两列组成联合主键),往该表插入数据行时数据库提示insert主键冲突。分析原因,可能是服务器抖动(概率很小,而且看日志的重复次数不像是服务器原因),也可能是两个小组的管理员都在执行同一个小组成员的insert操作,一先一后,后操作的执行失败。 可能
学习python 快速排序 def q(start , end , a): if start>= end : return else : mid = (start+end)/2 i = start+1 j = end key =a[start] while i<j: while i<=end
再谈谈java的单例模式 原来转载过一篇关于单例模式的博客http://blog.csdn.net/u011700281/article/details/21951795现在自己由于实现一些管理器(比如 mysq了连接的管理器,redis的连接管理器,以及config的连接管理器),经常用到单例模式,不过,公司内的单例模式的实现方法有很多,自己也跟着总结一下。首先,为什么需要单例模式
linux 比较常用的命令 gzip , bzip2 ,tar 这三个,tar主要负责将一个文件夹打包,gzip和bzip2负责压缩功能,所以下的打包的压缩文件一般是tar.gz解gz的,tar -zxf解bzip2的,tar -jxflocate和findlocate是搜索文件,主要是在linux自带的数据库里面搜索文件,数据库一周才更新一次,所以搜到的不一定是最新的。fin
java classloader classloader 分为 四种, bootstrapclassloader extclassloader appclassloader 还有用户自定义的classloader ,bootstrapclassloader是用来加载最核心的class的,extclassloader和appclassloader也是在这时候被加载的。extclassloader是加载一些扩展类库的class的,a