- 浏览: 743075 次
- 性别:
- 来自: 北京
最新评论
-
nmgrd:
赞一个,在分析AQS源码的博客当中,楼主是写的最细致,最易懂, ...
java并发编程--AbstractQueuedSynchronizer公平锁和非公平锁分析(三) -
ljzxloaf:
阻塞和等待不一样吧,condition持有等待队列,而AQS持 ...
java并发编程--AbstractQueuedSynchronizer加锁和解锁分析(二) -
DaCang4535:
楼主,不知道你那个book类有什么作用。setBook那个方法 ...
JAXB--简单应用(一) -
yuhui0531:
f-u-c-k!!!!!!!!!!!!!!!!!!!!!!!! ...
java线程常见的几种死锁模式和解决方法 -
刘文超:
form提交的几种方法
文章列表
memcached的java客户端
- 博客分类:
- NoSql
http://code.google.com/p/memcached/wiki/Clients Client API's / libraries
https://github.com/gwhalin/Memcached-Java-Client/downloads Memcached-Java-Client by Greg Whalin
http://blog.csdn.net/gtuu0123/article/details/4897805 例子
memcached协议分析
- 博客分类:
- NoSql
http://www.gaobo.info/read.php/447.htm Memcache 协议(中英对照)
Linux下Memcache服务器端的安装服务器端主要是安装memcache服务器端,目前最新版本是memcached-1.4.12.tar.gz。
官网:http://memcached.googlecode.com/
另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,较新的1.x版本是libevent-1.4.14b-stable.tar.gz。
官网:http://www.monkey.org/~provos/libevent/
1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
...
jetty版本:jetty-6.1.26
1.由于jetty中的许多组件都实现了LifeCycle接口,先了解下该接口的定义:
package org.mortbay.component;
import java.util.EventListener;
public interface LifeCycle
{
public void start() throws Exception;
public void stop() throws Exception;
public boolean isRunning();
...
一:直接调用系统变量
获得当前时间:date '+%Y-%m-%d %H:%M:%S' 获取今天时期:date +%Y%m%d 获取昨天时期:date -d yesterday +%Y%m%d 获取前天日期:date -d -2day +%Y%m%d 依次类推比如获取10天前的日期:date -d -10day +%Y%m%d
二:获取当前系统时间戳
date +%s
三:时间戳转为易读的时间格式
date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
其中:946684800表示时间戳。
...
ThreadLocal这个类,理解起来比较简单,但是使用时,还是需要一些技巧的,简单介绍如下:
例子1:threadLocal变量一般用法
package concurrent.thread;
/**
* 技巧:
* 1.在当前线程里执行threadLocal.set(value) 相当于 currentThread.threadLocalMap.set(threadLocal,value)。
* 即:每个线程均含有一个threadLocalMap变量,该变量由ThreadLocal维护。
* 2.ThreadLocal变量一般使用priva ...
tryLock()仅尝试一次获取锁,不管成功与否,都将返回结果。
public boolean tryLock()仅在调用时锁未被另一个线程保持的情况下,才获取该锁。
如果该锁没有被另一个线程保持,并且立即返回 true 值,则将锁的保持计数设置为 1。即使已将此锁设置为使用公平排序策略,但是调用 tryLock() 仍将 立即获取锁(如果有可用的),而不管其他线程当前是否正在等待该锁。在某些情况下,此“闯入”行为可能很有用,即使它会打破公平性也如此。如果希望遵守此锁的公平设置,则使用 tryLock(0, TimeUnit.SECONDS) ,它几乎是等效的(也检测中断)。
...
lock 与 lockInterruptibly比较区别在于:
lock 优先考虑获取锁,待获取锁成功后,才响应中断。
lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。
详细区别:
ReentrantLock.lockInterruptibly允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待线程的等待而直接返回,这时不用获取锁,而会抛出一个InterruptedException。 ReentrantLock.lock方法不允许Thread.interrupt中断,即使检测到Thread.isIn ...
前一篇J.U.C的锁的获取与释放的过程,这个过程主要通过在A.Q.S中维持一个等待队列来实现,其中我们也提到了,在A.Q.S中除了一个等待队列之外,还有多个Condition队列(Condition队列的多少取决于ConditionObject对象个数) ...
juc包中,aqs实现的公平锁和非公平锁的最主要的区别是:非公平锁中,那些尝试获取锁且尚未进入等待队列的线程会和等待队列head结点的线程发生竞争。公平锁中,在获取锁时,增加了isFirst(current)判断,当且仅当,等待队列为空或当前线程是等待队列的头结点时,才可尝试获取锁。
1.1 NonfairSync.lock()
final void lock() {
if (compareAndSetState(0, 1))//没有进入等待队列,也可以获取锁
setExclusiveOwnerThread(Thread.currentThread());
el ...
在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思路都大同小异,因此我们以ReentrantLock作为讲解切入点。
1. ReentrantLock的调用过程
经过观察ReentrantLock把所有Lock接口的操作都委派到一个Sync类上,该类继承了AbstractQueuedSynchronizer:
s ...
sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始!
1 sort的工作原理
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
[rocrocket@rocrocket programming]$ cat seq.txtbananaapplepearorange[rocrocket@rocrocket programming]$ sort seq.txtapplebananaorangepear
2 sort的-u选项
它的作用很简单,就是在输出行中去除重复行 ...
Awk是一种处理结构数据并输出格式化结果的编程语言, Awk 是其作者 "Aho,Weinberger,Kernighan" 的简称。
Awk通常被用来进行格式扫描和处理。通过扫描一个或多个文件中的行,查看是否匹配指定的正则表达式,并执行相关的操作。
Awk的主要特性包含:
1. Awk以记录和字段的方式来查看文本文件
2. 和其他编程语言一样,Awk 包含变量、条件和循环
3. Awk能够进行运算和字符串操作
4. Awk能够生成格式化的报表数据
Awk从一个文件或者标准输入中读取数据,并输出结果到标准输出中。
1. Awk的语法
mysql diver包里有relication driver,可以在jdbc层进行读写分离,主写从读 默认的配置方式是指定driver为ReplicationDriver,并改写jdbc url
Java代码
jdbc.driverClassName=com.mysql.jdbc.ReplicationDriver
默认情况下,Jaxb编组出来的xml中的字段顺序是随机的,你可以使用@XmlType的propOrder属性
来指定序列化的顺序。
第一步:定义java类时,使用@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。
package step2;
import java.util.Set;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind ...