随笔分类 -  推荐阅读

新写了一个Java并发程序设计教程
摘要:新写了一个Java并发程序设计教程, 用于公司内部培训的,和2007年写的那个相比,内容更翔实一些。 内容列表 1、使用线程的经验:设置名称、响应中断、使用ThreadLocal 2、Executor :ExecutorService和Future ☆ ☆ ☆ 3、阻塞队列 : put和take、offer和poll、drainTo 4、线程间的协调手段:lock、condition、 wait、notify、notifyAll ☆ ☆ ☆ 5、Lock-free: atomic、concurrentMap.putIfAbsent、CopyOnWriteArrayList ☆ ☆ ☆ 6、关于锁使用的经验介绍 7、并发流程控制手段:CountDownlatch、Barrier 8、定时器: ScheduledExecutorService、大规模定时器TimerWheel 9、并发三大定律:Amdahl、Gustafson、 Sun-Ni 10、神人和图书 11、业界发展情况: GPGPU、OpenCL 12、复习题 阅读全文

posted @ 2010-07-29 18:34 温少 阅读(9279) 评论(15) 推荐(1) 编辑

关于技术架构师的一些看法
摘要:很多人谈架构师,其实有两种架构师,一种是业务架构,一种是技术架构。我的经验和教训局限于技术架构,所以本文特指技术架构师。 毕业前一年,毕业后7年,大约8年的技术领域经验和教训,参加过大小项目若干,有被人传颂的成功经验,也有惨痛的失败教训。以下是我的一些看法。 阅读全文

posted @ 2008-09-08 23:02 温少 阅读(10575) 评论(14) 推荐(2) 编辑

小议ID生成算法
摘要:本文描述一种ID生成算法 阅读全文

posted @ 2007-11-16 07:06 温少 阅读(9898) 评论(48) 推荐(0) 编辑

Java util.concurrent包AtomicXXX系列对象在C#中的实现
摘要:从JDK 1.5开始,util.concurrent包提供了Atomic类型,包括AtomicInteger、AtomicLong、 AtomicBoolean、AtomicReference、AtomicFieldUpdate等,这些类在并发编程中大有作用。在.NET中也提供了同样能力的System.Threading.InterLocked,但是不如java中的Atomic系列对象直观好用。本文分析了JDK的底层实现,而且提供了在C#中实现AtomicInteger的源码。 阅读全文

posted @ 2007-11-15 05:52 温少 阅读(3672) 评论(6) 推荐(1) 编辑

非阻塞算法思想在关系数据库应用程序开发中的使用
摘要:本文介绍流行的非阻塞算法关键思想Compare And Set在数据库开发中的应用 阅读全文

posted @ 2007-11-13 06:30 温少 阅读(4848) 评论(24) 推荐(1) 编辑

旧时王谢堂前燕,飞入寻常百姓家
摘要:2007年4月刊《程序员》,专题为“多核时下的软件开发”。《程序员》并非阳春白雪,它面向大众程序员。面向大众的《程序员》介绍多核、并发,也意味着并发程序设计的开始进入中国大众程序员的视野。并发程序设计,在很多的书籍或者文章中,都会提到他的一个特点,复杂。这个特性,也导致了在以往并发程序设计只为高级程序员所专用。复杂度并非事物的固有属性,并发程序设计的复杂,是我们主观认为。我们认为并发程序设计复杂,... 阅读全文

posted @ 2007-05-01 07:49 温少 阅读(1868) 评论(1) 推荐(0) 编辑

精巧好用的DelayQueue
摘要:我们谈一下实际的场景吧。我们在开发中,有如下场景a) 关闭空闲连接。服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。b) 缓存。缓存中的对象,超过了空闲时间,需要从缓存中移出。c) 任务超时处理。在网络协议滑动窗口请求应答式交互时,处理超时未响应的请求。一种笨笨的办法就是,使用一个后台线程,遍历所有对象,挨个检查。这种笨笨的办法简单好用,但是对象数量过多时,可能存在性能问题,检查间隔时间... 阅读全文

posted @ 2007-04-27 20:04 温少 阅读(42746) 评论(18) 推荐(4) 编辑

提高编码速度的一个办法
摘要:一旦方案想清楚,剩余部分的工作效率瓶颈就在于你的手速了。最近一直看起点中文网上的《师士传说》,主角叶重一个强项就是手速。最基本的就是盲打。不会盲打的通常属于“编码低能儿”。身边也有不会盲打的朋友,他们通常都有一个问题,就是眼高手低,说说还行,动手就不行。当然他们能够在IT研发领域还混得很好,是因为在其他方面拥有优秀的能力。熟练掌握快捷键是关键。键盘和鼠标之间通常有较大的距离,手经常在键盘和鼠标之间... 阅读全文

posted @ 2007-04-25 07:41 温少 阅读(2117) 评论(1) 推荐(0) 编辑

对象关系技术的探讨
摘要:这是一个很老的问题了,经常在论坛上看到,很多人也写了相关的文章。我在这方面拥有较多的经验,我也谈一下我的看法吧。我曾经实现过金蝶EAS BOS的多数据支持引擎,脚本引擎,也作过O-R Mapping的预研工作,曾经对多个O-R Mapping产品做过研究。C++、Java、C#都源自Algol,这系列语言也称为Imperative语言,中文翻译为命令式语言。命令式语言建立在冯*诺依曼体系结构上,程... 阅读全文

posted @ 2007-04-23 08:18 温少 阅读(5206) 评论(8) 推荐(0) 编辑

关于MessageDigest算法选择的问题
摘要:MessageDigest的选择好多,包括MD2、MD4、MD5、SHA-1、SHA-256、RIPEMD128、RIPEMD160等等。我们如何选择呢?选择考虑在两个方面:安全、速度。MD2很安全,但是速度极慢,一般不用。速度方面,最快的是MD4,MD5比SHA-1快速度排名:MD4 > MD5 > RIPEMD-128 > SHA-1 > REPEMD-160按照《应用密码学手册》提供的表格数... 阅读全文

posted @ 2007-04-14 17:02 温少 阅读(6566) 评论(1) 推荐(0) 编辑

关于P2P下载的思考
摘要:1、使用多路复用或者异步I/O模型,这本是服务器段常用的技术,但在P2P应用,每台机器既是服务器,又是客户端,共享了一个十分受欢迎的文件,可能会有很多希望连接者,或者你下载一个受欢迎文件时,可能搜索到数百上千的Peer,此时就很有必要采用多路复用或者异步I/O技术,降低应用程序所占用的资源。2、支持传统的协议,包括HTTP和FTP,其实这两种技术能够和P2P网络集成,其中一种办法就是,在提供下载地... 阅读全文

posted @ 2007-03-25 05:47 温少 阅读(1477) 评论(1) 推荐(0) 编辑

在Java和.NET平台的加密术比较
摘要:最近在写一个Java的消息服务器,同时需要做一个.NET版本的客户端。他们之间需要安全通讯,基于一些简单的密码协议,用到公钥加密、对称加密、Hash算法。这个过程中,我对这两个平台的加密部分有了一定了解,以下也是我的一些新的认识吧。 1、对称加密1) Java 1.5的对称加密很简单,提供的算法也较多。可以说是,使用简单,傻瓜式,而且功能齐全。 例如: Code highlighting pro... 阅读全文

posted @ 2006-09-22 23:02 温少 阅读(6443) 评论(7) 推荐(1) 编辑

超长短信的处理办法
摘要:GSM 03.40规范(TP-06 1999-12-15 7.4.0)中规定了SME对于超长短信的合并处理。规范制定至今,已经超过6年,绝大多数正在使用的手机,都支持这一功能。 CMPP协议中,CMPP_SUBMIT_MESSAGE中有两个字段pk_total和pk_numer,恰看起来,这就是发送超长短信的设置参数,其实不然,这两个参数的设置,应该是没有用处。 发送超长短信,需要做两件事情:... 阅读全文

posted @ 2006-07-07 22:30 温少 阅读(10561) 评论(15) 推荐(0) 编辑

CMPP和SMPP协议比较
摘要:CMPP和SMPP协议比较 并非同类型协议 CMPP和SMPP都是短信协议中的一种,但它们不是同一类型的协议。SMPP和ESME和SMC(短信中心)之间的协议,而CMPP是SP和中国移动ISMG之间的通讯协议。 以下是CMPP 3.0文档中的图示。 与CMPP对应的协议有,... 阅读全文

posted @ 2006-07-02 18:14 温少 阅读(35886) 评论(5) 推荐(1) 编辑

测试开发驱动实践
摘要:最近,测试驱动的概念慢慢被大家接受,Kent Back的书《测试驱动开发》中文版,也有中国电力出版社出版了。从2002年就开始,我使用测试驱动的方式开发,这两年多里,几乎我所有的代码都是基于测试驱动的方式进行开发。使用这种方式进行开发两年,自然也有一些经验。我这两天看了Kent Back的《测试驱动开发》,觉得他举得例子还是过于复杂了,于是我也写了一个ppt,把认为最重要的部分写进去。测试驱动开发... 阅读全文

posted @ 2004-08-13 14:37 温少 阅读(4483) 评论(25) 推荐(0) 编辑

再谈ADO .NET vs JDBC
摘要:曾经在.NET下有过大约三年的开发经历,可以说非常熟悉ADO .NET。ADO .NET最大的特性是对断开连接方式的全方位支持,其引入了DataSet、DataTable、DataRow等等对象,构建了一个“内存数据库”简化版本,DataAdapter把DataReader的数据填充到DataTable或者DataSet中,给使用者一个直观的使用方式。ADO .NET还能够和ASP .NET和Wi... 阅读全文

posted @ 2004-07-28 04:07 温少 阅读(8550) 评论(19) 推荐(1) 编辑

关于Update语句在不同数据库中的差别
摘要:Oralce和DB2都支持的语法: UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)MS SQL Server不支持这样的语法,相对应的写法为: UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A LEFT JOIN B ON A.ID = ... 阅读全文

posted @ 2004-07-23 20:06 温少 阅读(16550) 评论(30) 推荐(0) 编辑

关于使用for循环
摘要:有人喜欢使用for作类似while的循环: for(;;) { } 评论:这是一种风格,有一部分人使用,我个人觉得不如while来得直观。 究竟是++i,还是i++ for (int i = 0; i = 0; --i) { if (condition) { list.RemoveAt(i); }} 如果list的实现是ArrayList,反序遍历可能比正序删... 阅读全文

posted @ 2004-07-23 01:27 温少 阅读(2761) 评论(10) 推荐(0) 编辑

MSIL指令速查表
摘要:最初阅读IL的时候,很多指令会记不住,你把以下这两个表格打印下来,备在案前,可供速查!最初我阅读IL时,就是这么做的。后来我教别人反编译,都要别人先打印这份表格。自己查文档也可以获得一下资料。不过,或许我整理的这个表格,速查更方便!下载地址:http://www.cnblogs.com/Files/jobs/msil.rar Base Instructions Instructio... 阅读全文

posted @ 2004-07-21 02:45 温少 阅读(4840) 评论(12) 推荐(2) 编辑

C++、Java和C#中的异常处理
摘要:C++中异常:1、可以抛出任何异常。虽然标准C++定义了std::exception类,但throw的对象可以是任何对象。包括int、char*等。例如: throw 100;try { // do something } catch (int num) { // do something } 但是,C++标准库中抛出的所有异常,都是派生自std::exception类。std::excepti... 阅读全文

posted @ 2004-07-19 21:06 温少 阅读(4681) 评论(4) 推荐(1) 编辑

导航