摘要:
在接下来的系列文章中,我们将介绍一系列应用于存储以及IO子系统的数据结构。这些数据结构相互关联又有着巨大的区别,希望我们能够不辱使命的将他们分门别类的介绍清楚。本文为第一节,介绍一个简单而又有用的数据结构:跳表 (SkipList)在对跳表进行讨论之前,我们首先描述一下跳表的核心思想。跳表(Skip... 阅读全文
摘要:
CAP理论被很多人拿来作为分布式系统设计的金律,然而感觉大家对CAP这三个属性的认识却存在不少误区。从CAP的证明中可以看出来,这个理论的成立是需要很明确的对C、A、P三个概念进行界定的前提下的。在本文中笔者希望可以对论文和一些参考资料进行总结并附带一些思考。一、什么是CAP理论CAP原本是一个猜想,2000年PODC大会的时候大牛Brewer提出的,他认为在设计一个大规模可扩放的网络服务时候会遇到三个特性:一致性(consistency)、可用性(Availability)、分区容错(partition-tolerance)都需要的情景,然而这是不可能都实现的。之后在2003年的时候,Mit 阅读全文
摘要:
现在的NoSQL数据库实在是太多了,也尚未发现有比较完整的介绍、评价以及评测。最近微博上又热炒MongoDB是多么的不靠谱,用户声泪具下的控诉10Gen是多么的不靠谱。可见一个东西并非加个好名字,不靠谱的就靠谱的,毕竟数据这块还是很敏感的,在上项目的时候最好就能有个比较清晰的选择,否则未来还是会遇到结婚了还要离婚的痛苦场面。 另外需要特别指明的就是NoSQL数据库和现在一些流行的分布式缓存系统的区别,比如Memcached等。NoSQL本意所指的是去掉了R的DBMS,一般也会取消对事务和其他高级特性,比如表关系的关联等,因此并没有人规定NoSQL一定是基于Key-Value的,虽然大部分是这. 阅读全文
摘要:
1. 使用Compojure开发的Web Server,怎么样绑定其端口?现有的Clojure开发环境大致有2种,一种是Emacs下的开发,一种是ERPL下。Compojure可以利用lein和ring的结合,做到自动reload修改过的文件而不用重启服务器,因此大部分时候我们都使用lein ring server来启动我们的服务器,然而这种做法并没有提供绑定端口的方式,如果需要绑定到给定的端口,特别是1~1024这些需要特别权限的端口,我们需要使用别的方法。比如使用ring.util.serve方法::dev-dependencies [[ring-serve "0.1.0&quo 阅读全文
摘要:
最近用HttpClient做一个工具做代理访问服务器的WebService,由于服务器是采用NTLM验证的,再加上网上的很多资料大多是关于HttpClient 3的,折磨了好久才搞定。这里记录一下,供以后参考使用。关于文中内容,我不按照手册上的写法,而是整理成小Tips,希望看起来简单轻松一点。1,HttpClient 4.x 库可以自己处理Cookie这一点误导了我很久,HttpClient 4.x提供了CookieStore来帮助程序员管理本地Cookie,并且在Http请求的过程中,如果服务器的返回中带有Set-Cookie这样的字段,当前HttpClient的CookieStore中就 阅读全文
摘要:
最近接触到SoapUI,下载了最新的版本4.0.1使用,功能相当的强大。对于一个采用了NTLM验证的Web Service服务器,使用SoapUI几乎能够对所有的Web Service进行访问,而相比较之下,自己编写的基于HttpClient的库却不行。于是只能阅读以下SoapUI中与HttpClient相关的代码,求解惑。正好网上的资料也比较少,写成文档供以后参考。SoapUI 4.0.1使用的还是3.x版本的HttpClient,而现在HttpClient已经到4.x版本了,而且整个类结构有了非常大的变化,而且在3.x直接支持的NTLM现在必须要使用额外的JCIFS库才能调用。从代码中来看 阅读全文
摘要:
最近用Host Fan Qiang 成功,作为一个资深的微博用户,自然快马加鞭的找回了我的老Twitter账户,疯狂找人关注。 之前年少不谙世事,喜欢加些不靠谱的明星,什么Lady Gaga,什么奥巴马,或者干脆就是系统推荐给我的用户,关注了之后呢,就坐等被人刷屏,而且刷的都是些完全搞不懂的玩意,要么就是闲的实在是蛋疼的唠叨。 从使用新浪微博得到的经验:人啊,还是分阶层的,不是你的圈子和阶层的人,就算人家在你面前卖个萌,你搞不好还以为别人很认真。于是老老实实的加了一帮的Geek,各种工程师,每天看别人神侃。其实基本上加的这个圈子和我在新浪微博上加的人群体差不多,不过Twitter混的短,加的. 阅读全文
摘要:
Java中String和byte[]数组之间的转换很多,转载一些代码作为日后使用参考。转载自:[http://hongyiqiye.iteye.com/blog/1028687]public static String stringToHexString(String strPart) { String hexString = ""; for (int i = 0; i < strPart.length(); i++) { int ch = (int) strPart.charAt(i); String strHex = Integer.toHexString(ch) 阅读全文
摘要:
Clojure的contrib包中实现了对现有JDBC的封装,在wiki上有连接,该页面上包含了对不同的数据库的连接方法和基本的操作,但是这个页面上没有提供足够的信息,足够一个初学者能够使用Clojure来完成一个SQL操作。本文中我们将利用Clojure和Lein工具,简介一下做开发的基础。当然网上也有非常多对Clojure的SQL操作进行封装的库,我们这里没有使用。首先,如何配置你的MySQL数据库。这个各有各的配法,我们就不再多说了。其次,在和MySQL的操作中,我们需要两个库,一个是clojure.contrib,另外一个是mysql-connector-java。为了管理和配置这两个 阅读全文
摘要:
使用Clojure做Web开发需要的工具链还是比较特殊的,本文主要描述一下其中牵涉到的框架。需要指出的是,Clojure可以把自己封装成jar包供java调用,因此最坏情况下还是可以用java servlet来调用Clojure的库的,但是这显然不是我想要达到的效果,因此本文的基本出发点是,核心语言用Clojure,需要调用java库的情况。首先要介绍的就是Ring API文档Ring是一个Clojure Web程序库,有点类似与Java的servlet。为什么要用Ring呢?Wiki里面列了几个好处:Write your application using Clojure functions 阅读全文