Archive

Author Archive

Semaphore简单分析

6月 21st, 2016 No comments

java.util.concurrent.Semaphore

AQS实现的一个变种,用来预先设置一个阈值(可进入量),然后当做类似共享锁的方式地进行acquire和release,但是每次acquire不记录当前acquire的线程对象(这是Semaphore和Lock最大的区别),即线程A操作的acquire可以由线程B来release。也有公平和非公平两种方式。

阅读更多…

CountDownLatch简单分析

6月 17th, 2016 1 comment

也是利用AQS实现的一个变种,用来预先设置一个阈值(任务数)后主线程调用await()持续阻塞,然后由其他线程执行任务,执行完后调用countDown()将阈值减1,当所有任务执行完毕,阈值减为0,主线程await()被唤醒跳出阻塞,继续执行。 阅读更多…

ReentrantReadWriteLock简单分析

6月 16th, 2016 No comments

AQS的另一个实现,可重入的读写锁,其中读锁是共享锁,写锁是排他锁。用法和ReentrantLock基本一致。 阅读更多…

可重入锁、ReentrantLock、AQS、Condition

6月 13th, 2016 5 comments

本文简单介绍可重入锁的概念,简单介绍java中内置的synchronized锁java.util.concurrent.locks.ReentrantLock,然后大致介绍下ReentrantLock的代码实现。ReentrantLock和AQS代码逻辑真心复杂和难懂,尤其是AQS中Node的ws值中的SIGNAL值的用法和线程park/unpark的用法,持续几周看了好几天终于算是给弄明白了! 阅读更多…

圣斗士星矢-黄金魂

6月 12th, 2016 2 comments

正版圣斗士星矢(Saint Seiya,简称SS)的番外篇,在冥王篇后章中,12黄金齐聚叹息之强,牺牲生命打破墙体送5小强到极乐净土。在黄金魂中,12黄金又一一复活在了北极仙宫。

剧情是奥丁神召唤逝去的12黄金重生在仙宫,希望借此阻止邪神洛基的复活(想到妇联就好出戏啊)。没有五小强,没有雅典娜,全是12黄金的故事和战斗,主角设定为狮子座艾欧里亚,也看的爽起。相比于LC中重新描绘的上一代黄金一个一个的战绩,黄金魂了更加注重黄金们的集体和配合,12黄金齐聚一堂,这是何等的壮观和令人激动啊!

更重点的是,此篇中,所有黄金圣衣都进化为神圣衣,更加豪华还都带上了翅膀(简直冥衣的发展方向啊),然后剧情也提到了很多SS中的种种羁绊,十分推荐! 阅读更多…

圣斗士星矢-冥王神话

6月 11th, 2016 3 comments

《圣斗士星矢》这部动漫,充满了少年时期的青春,从银河战争篇,到黄金十二宫篇,到北欧仙宫篇、海皇篇,再到冥王十二宫篇、冥界篇前章和后章、极乐净土篇,还有几部剧场版,太监了的天界篇,还有去年出的电影版十二宫。

冥王神话

冥王神话

阅读更多…

Tomcat监听shutdown释放数据库连接池

6月 8th, 2016 4 comments

开发时因为更新代码,频繁重启Tomcat,遇到一个问题:在执行shutdown脚本后,Tomcat进程没有关闭依然存在(但是HTTP服务已经停止),需要手动执行kill命令才行。查了一些资料结合经验,应该是所使用的数据库连接池中的连接没有被释放的问题引起的。所以解决的办法,就是想办法做一个Tomcat的shutdown的事件监听,然后手动释放数据库连接即可。 阅读更多…

Tomcat启用https服务

6月 6th, 2016 2 comments

Tomcat开启gzip压缩

5月 26th, 2016 No comments
<Connector 
    port="8080" 
    protocol="org.apache.coyote.http11.Http11NioProtocol" 
    acceptorThreadCount="8" 
    executor="tomcatThreadPool" 
    URIEncoding="UTF-8" 
    compression="on"
    compressableMimeType="text/html,text/css,application/javascript,text/xml,text/plain"
    connectionTimeout="20000"
    redirectPort="8443" 
/>

主要是compression和compressableMimeType两行。

Tomcat7中,必须是application/javascript,而不能使text/javascript。

注意如果开启了https服务,在中也别忘了设置开启compression和compressableMimeType两行。

Spring-MVC中的一些问题

3月 22nd, 2016 2 comments

想法:Spring-mvc(Spring v3.2)中,仅对注册过(通过@RequestMapping注解)的url进入到controller层,其他非法url在Filter里就拦截掉,统一处理节省资源。因为在filter的doChain之前,给本次请求从对象池中获取一个操作db的对象,对无效url也分配的话就浪费了资源。

实现:通过Spring-mvc的RequestMappingHandlerMapping来获取注册过的url path,再根据HttpServletRequest,判断下就可以进行过滤。

阅读更多…

Java最外层异常的抓取要用Throwable

3月 22nd, 2016 3 comments

3月以来,从来运行正常的link无故崩了好多次,现象:无异常日志,用jstack看主线程挂了进程还在,主线程最外层有catch异常,但是并没有打印日志,实在匪夷所思。

阅读更多…

Java客户端Socket在服务端重启后的异常情况处理

3月 17th, 2016 1 comment

碰到场景如下:Java服务器端A(使用NIO的异步IO方式),Java客户端B(使用普通IO的同步方式),在服务端A重启后,B->A的Socket毫无疑问的断了,然后就会出现一些异常情况,分析一下。

阅读更多…

春节再游厦门

3月 3rd, 2016 5 comments

大年初二,基本走完了亲戚,半夜和朋友聊起,瞬间决定剩下的假期去一趟厦门玩,闲着也是浪费!

第一次说走就走的旅行!

6年前的厦门游:毕业季,厦门行

喜欢厦门,最重要就是因为第一次来时在曾厝垵吃的沙茶面哈哈,太好吃了,转眼快6年了。那是第一次结伴出来旅行,又是和最好的哥们和pp妹子们,又是本科毕业旅行,年轻的时候,各种美好的记忆。然后去年台湾回大陆经过厦门,在厦门北站吃了一碗沙茶面,但是味道不满意。

这次,去寻找那记忆中的沙茶面!

夜幕中的演武长龙

夜幕中的演武长龙

阅读更多…

小李子电影推荐

3月 3rd, 2016 1 comment

普世同庆,小李子终于拿奥斯卡影帝了,感觉全世界影迷比他自己都还要紧张和兴奋。然后惊奇的发现居然没有写过一篇对他电影的文章。

小李子和凯奇大叔很不一样,后者自从老早拿了影帝后,就烂片不断现在已经变成烂片大王了,但小李子从来没有接过烂片!基本就没有演过动作片、喜剧片,每部电影都是大作,所以才能上这么多次的奥斯卡提名啊,毕竟上提名也不是一件容易事。

阅读更多…

警惕long值转化为int,比如在Comparator接口中

3月 2nd, 2016 2 comments

long值转为int会造成溢出大家都知道,很多时候却会忽视已发bug,造成明明的正值变为了负值(因为int最高位非0,long值大于int最大值2^31-1=2147483647)。

此次出错的地方在使用java.util.Collections.sort中使用Comparator接口中,因为compare方法通过返回int值来比较大小,而逻辑比较大小是通过比较时间戳long值按最近时间排序,一开始不注意就直接把时间戳long值差给直接转为int值返回了,造成了可能的排序错误(有趣的是只需要24天的毫秒值就会超过int的最大值)。

阅读更多…