Fork me on GitHub
摘要: 最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会。工具名称:Simple Send to KindleGithub地址:https://github.com/zhanjindong/SimpleSendToKindle功能:Windows下一个简单的将网页内容推送到... 阅读全文
posted @ 2014-12-11 23:51 zhanjindong 阅读(8611) 评论(5) 推荐(3) 编辑
摘要: Read Preferences/读写分离 有时候为了考虑应用程序的性能或响应性,为了提高读取操作的吞吐率,一个常见的措施就是进行读写分离,MongoDB副本集对读写分离的支持是通过Read Preferences特性进行支持的,这个特性非常复杂和灵活。以下几种应用场景可能会考虑对副本集进行读写分离 阅读全文
posted @ 2013-08-19 21:42 zhanjindong 阅读(8734) 评论(2) 推荐(3) 编辑
摘要: 插入、查询和更新 插入:MongoDB会根据片键和conifg中的信息写入到指定的分片上。 读取:以下内容摘抄自《深入学习MongoDB》 关于读取:上一节故障恢复中已经有所验证。 更新:如果要更新单个文档一定要在片键中使用片键(update的第一个参数)。我们现在OSSP10.bizuser(已经 阅读全文
posted @ 2013-04-12 21:49 zhanjindong 阅读(22292) 评论(0) 推荐(4) 编辑
摘要: 今天组内新来的一个同事问我代码提交频率的问题,他在上家公司是一个模块功能开发自测完成后再提交。而我这边采用的是最少一天提交一次,提倡粒度较小的提交, 而且是基于主干开发。采用这种方式是出于以下几点考虑: 1. 提交的粒度小,和别人冲突的可能性就小,避免代码冲突合并的痛苦。 2. 所有的开发都能看到最 阅读全文
posted @ 2016-07-08 19:14 zhanjindong 阅读(1953) 评论(0) 推荐(1) 编辑
摘要: HTTP是一种无连接的事务协议,底层使用的还是TCP,连接池复用的就是TCP连接,目的就是在一个TCP连接上进行多次的HTTP请求从而提高性能。每次HTTP请求结束的时候,HttpClient会判断连接是否可以保持,如果可以则交给连接管理器进行管理以备下次重用,否则直接关闭连接。这里涉及到三个问题: 阅读全文
posted @ 2016-06-15 18:36 zhanjindong 阅读(25586) 评论(0) 推荐(1) 编辑
摘要: 下面这些概念对于专业做性能测试的会比较熟悉,但是对于开发人员不一定都那么清楚。 并发用户数: 某一时刻同时请求服务器的用户总数,通常我们也称并发数,并发连接数等。 吞吐率:对于web服务器来说就是每秒处理的请求数,req/sec. 服务器平均请求处理时间:服务内部的处理时间,可以理解为我们平时log 阅读全文
posted @ 2015-12-13 21:31 zhanjindong 阅读(2936) 评论(15) 推荐(5) 编辑
摘要: 好久没写博客了,主要是这一年技术没啥长进都打杂了,还有就是生活琐事越来越多,人也越来越懒了…… 之前项目中用到了Protobuf,然后测试发现这玩意不好测,总不能每次定个协议或者改下都要编译Java代码吧。于是我这边写了简单的工具,动态的解析PB文件。效果如下:“选择请求协议”和“选择响应协议”就是... 阅读全文
posted @ 2015-08-22 18:03 zhanjindong 阅读(22888) 评论(4) 推荐(2) 编辑
摘要: Java中使用线程池技术一般都是使用Executors这个工厂类,它提供了非常简单方法来创建各种类型的线程池:public static ExecutorService newFixedThreadPool(int nThreads)public static ExecutorService new... 阅读全文
posted @ 2015-04-18 21:23 zhanjindong 阅读(9391) 评论(5) 推荐(2) 编辑
摘要: 经过前面几篇文章的铺垫,今天我们终于要看看AQS的庐山真面目了,建议第一次看AbstractQueuedSynchronizer类源码的朋友可以先看下我前面几篇文章:《Java并发包源码学习之AQS框架(一)概述》《Java并发包源码学习之AQS框架(二)CLH lock queue和自旋锁》《Ja... 阅读全文
posted @ 2015-03-22 15:58 zhanjindong 阅读(8544) 评论(3) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2015-03-22 10:47 zhanjindong 阅读(480) 评论(3) 推荐(3) 编辑
摘要: 以下内容主要整理自官方文档。为什么使用 Protocol Buffers.proto文件Protocol Buffers 语法编译.proto文件Protocol Buffers API枚举和嵌套类Builders vs. Messages解析和序列化Writing A MessageReading... 阅读全文
posted @ 2015-03-18 19:49 zhanjindong 阅读(6965) 评论(2) 推荐(1) 编辑
摘要: 接着上一篇文章今天我们来介绍下LockSupport和Java中线程的中断(interrupt)。其实除了LockSupport,Java之初就有Object对象的wait和notify方法可以实现线程的阻塞和唤醒。那么它们的区别 是什么呢?主要的区别应该说是它们面向的对象不同。阻塞和唤醒是对于线程... 阅读全文
posted @ 2015-03-14 16:04 zhanjindong 阅读(5520) 评论(2) 推荐(1) 编辑
摘要: 上一篇文章提到AQS是基于CLH lock queue,那么什么是CLH lock queue,说复杂很复杂说简单也简单, 所谓大道至简:CLH lock queue其实就是一个FIFO的队列,队列中的每个结点(线程)只要等待其前继释放锁就可以了。AbstractQueuedSynchronizer... 阅读全文
posted @ 2015-03-11 21:37 zhanjindong 阅读(7816) 评论(3) 推荐(0) 编辑
摘要: AQS其实就是java.util.concurrent.locks.AbstractQueuedSynchronizer这个类。 阅读Java的并发包源码你会发现这个类是整个java.util.concurrent的核心之一,也可以说是阅读整个并发包源码的一个突破口。比如读ReentrantLock... 阅读全文
posted @ 2015-03-10 19:39 zhanjindong 阅读(8925) 评论(1) 推荐(4) 编辑
摘要: 前一篇介绍了HTTP/2,这一篇简单介绍下3月3号发布的MongoDB 3.0。What’s new in MongoDB 3.0?新的存储引擎WiredTigerMongoDB 3.0的存储引擎是插件式的,默认为新增的WiredTiger。WiredTiger相比原来的MMAPv1引擎的优点:文档... 阅读全文
posted @ 2015-03-09 19:23 zhanjindong 阅读(1267) 评论(2) 推荐(1) 编辑
摘要: 新的一年,项目也要带着发展的眼光往前走,得跟上潮流,当然前提是自己真的用的上。 用的上用不上都得先简单了解下。2月下旬Google发布了首个基于HTTP/2的RPC框架GRPC,它是基于HTTP/2的,所以先了解下它,后续等深入研究了再回头说说GRPC。What’s new in HTTP/2?is... 阅读全文
posted @ 2015-03-09 18:59 zhanjindong 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 在微博上看到的这个问题,忍住没看答案自己解决了。建议没看过的同学也自己先尝试下。“看下面这个图片”在这个图片里我们有不同高度的墙。这个图片由一个整数数组所代表,数组中每个数是墙的高度。上边的图可以表示为数组[2,5,1,2,3,4,7,7,6]” “假如开始下雨了,那么墙之间的水坑能够装多少水呢?”... 阅读全文
posted @ 2015-02-06 21:45 zhanjindong 阅读(1127) 评论(1) 推荐(1) 编辑
摘要: 本文前半部分结论存在严重错误,请看最后2015-1-20更新部分。最近一直在解决线上一个问题,表现是:Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s。服务器性能很好,Tomcat版本是7.0.54,配置如下: 事后... 阅读全文
posted @ 2015-01-20 18:40 zhanjindong 阅读(38467) 评论(6) 推荐(7) 编辑
TOP