摘要:一、XMemcached简介XMemcached是一个新java memcachedclient。也许你还不知道memcached是什么?可以先看看这里。简单来说,Memcached 是一个高性能的分布式内存对象的key-value缓存系统,用于动态Web应用以减轻数据库负载,现在也有很多人将它作为内存式数据库在使用,memcached通过它的自定义协议与客户端交互,而XMemcached就是它的一个java客户端实现。Memcached的java客户端已经存在两个了:官方提供的基于传统阻塞io由Greg Whalin维护的客户端、Dustin Sallings实现的基于java nio的Sp
阅读全文
摘要:Java里面真正意义的锁并不多,其实真正的实现Lock接口的类就三个,ReentrantLock和ReentrantReadWriteLock的两个内部类(ReentrantReadWriteLock实现了ReadWriteLock接口,并没有实现Lock接口,是其内部类ReadLock和WriteLock实现了Lock的接口),其他都是通过我们前面说的一些工具类实现了线程的阻塞。前面锁机制中提到的ReentrantLock 实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念。我们也一直在强调这个特点。显然这个特点在一定程度上面减低了吞吐量,实际上独占锁是一种保守的锁策
阅读全文
摘要:看了下java中高性能锁Lock,其中有如下:ReentrantLock:独占锁,类似于synchronized,不过锁的粒度更小ReadWriteLock(ReentrantReadWriteLock):读写锁,实现读写的互斥运行,锁的粒度更小,实现读写锁更方便看了下其代码,背后应该是用LockSupport来支撑实现的,大致原理如下:当获取读锁时,当前线程
阅读全文
摘要:连接数据库前都要调用一下class.forname("driverName");然后使用DriverMnager获取连接,这是为什么呢?首先jdbc标准要求,每个驱动必须向DriverManager注册一下,这样才能让其知道使用的什么驱动,因为jdbc统一了操作关系数据库的接口,程序员统一使用jdk中的接口调用相关方法实现功能,其中的多态调用就不详述了。为了能顺利连接并操作数据库,驱动必须向DriverManager注册才OK。所以,Class.forName方法会加载该类,而加载类的时候,以oracle为例,oracle的oracle.jdbc.driver.Oracle
阅读全文
摘要:【LinkedList】LinkedList使用了链表来实现List功能,而且是双向循环链表,它的Entry定义如下:private static class Entry { //保存放入list中的对象 E element; //当前节点的下一节点 Entry next; //当前节点的上一节点 Entry previous; //新构造的entry,next节点为头节点,previous为尾节点, //新插入的节点在尾节点之后 Entry(E element, En...
阅读全文
摘要:用kettle做etl也有段时间了,遇到很多问题,总结了一下。【关于版本的问题】 kettle常用的版本有4.1和4.4,对于4.1版本:1.该版本的兼容性有点差,在某些机器上运行会启动失败,或者是启动完后增加资源库时报错直接退出。2.对于etl的sql,比如oracle,不支持/*------*/的注释方式,会将其识别为错误的sql,仅支持--的注释方式。而4.4不存在这个问题。3.运行不稳定,执行复杂etl过程时容易出现异常退出。【关于etl过程的问题】无论4.1或者4.4,有时会出现一些莫名其妙的报错信息,如在oracle下面会报出: ORA-01013: user requested
阅读全文
摘要:无意中看到一个帖子,是图画,让我想起了我的本科生活,竟然是如此的相似,感慨万千。
阅读全文
摘要:如何知道一个网站使用的是什么类型的服务器呢?如其前端使用的是apache呢还是iis呢还是nginx呢还是其他呢?中间件使用的是什么呢?有以下几种方法:首先说原理:http协议的头部提供了丰富的信息告诉我们一些信息,如server类型,协议版本mime类型等等,通过分析beader可以得到这些信息,而得到这些信息由简单到复杂有三种方法。【1】.通过一个网站在线分析:http://toolbar.netcraft.com/site_report?url=www.126.com这个网站会在线分析头部然后呈现给我们必要的信息,如以下:Hosting HistoryNetblock ownerIP a
阅读全文