`
文章列表
1、guavaguava cache:http://blog.csdn.net/Desilting/article/category/1641415http://blog.csdn.net/Desilting/article/details/11803395http://www.cnblogs.com/langtianya/p/4520291.html2、zookeeperhttp://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/3、一致性hash4、java 引用AtomicReferenceFieldUpdater 和 ...
java 基础 http://www.iteye.com/magazines/130     Twemproxy http://www.cnblogs.com/gomysql/p/4413922.html     垃圾回收相关: https://plumbr.eu/handbook/what-is-garbage-collection   java ibm 官方好文:   https://www.ibm.com/developerworks/cn/java/newto/     设计模式讲解:http://www.runoob.com/design-patte ...

mvc-HandlerMapping

HandlerMapping:定义了web请求映射和处理器(Handler)之间的映射 类结构:   handler的种类: ServletControllerHttpRequestHandler (Spring Invoke)Bean  (@RequestMapping) 顶层抽象:AbstractHandlerMapping:支持sort,默认handler,handler interceptors;关联ApplicationContext ;封装HandlerExecutionChain URL匹配: AbstractUrlHandlerMapping:支持注册ur ...
LRU: LinkedHashMap , 实现思路:HashMap + 双向链表环 按照最近访问/插入顺序,始终保持队列尾部的为最近访问或者最近插入的数据,删除从对头开始! LinkedHashMap扩展如下方法即可:   protected boolean removeEldestEntry(Map.Entry<K,V> eldest) { return false; }     LFU: 实现思路:HashMap + PriorityQueue 下面是个根据Key的自然数据排序的案例(类似,可以把Key包装成一个可排序的包装类 ...
interrupt方法用于中断线程。调用该方法的线程的状态为将被置为"中断"状态。   当线程被阻塞的时候,比如被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞时。 调用它的interrput()方法。没有占用CPU运行的线程是不可能给自己的中断状态置位的。这就会产生一个InterruptedException异常,并且不会设置中断状态  Interrupted的经典使用代码:   // Interrupted的经典使用代码 public void run(){ t ...
数据库扩容配置设计方案: CREATE TABLE `business_unit` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '唯一主键', `name` varchar(100) NOT NULL COMMENT '业务标志', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 CREATE TABLE `share_group` (    `id` bigint(20) uns ...
原文:http://blog.csdn.net/bluishglc/article/details/7970268 一般来说,“理想”的扩容方案应该努力满足以下几个要求:  最好不迁移数据 (无论如何,数据迁移都是一个让团队压力山大的问题) 允许根据硬件资源自由规划扩容规模 ...
原文:http://tech.meituan.com/avalanche-study.html Cache应用中的服务过载案例研究 张杨 ·2016-06-16 17:00 简单地说,过载是外部请求对系统的访问量突然激增,造成请求堆积,服务不可用,最终导致系统崩溃。本文主要分析引入Cache可能造成的服务过载,并讨论相关的预防、恢复策略。Cache在现代系统中使用广泛,由此引入的服务过载隐患无处不在,但却非常隐蔽,容易被忽视。本文希望能为开发者在设计和编写相关类型应用,以及服务过载发生处理时能够有章可循。 一个服务过载案例 本文讨论的案例是指存在正常调用关系的两个系统(假设调用 ...
范例
Condition.await和Object.wait  我们发现 ArrayBlockingList 并没有使用 Object.wait ,而是使用的 Condition.await ,这是为什么呢?其中又有哪些原因呢? Condition 对象可以提供和 
AbstractQueuedSynchronizer:   背景: 在对一个资源做同步的时候,要求每一个时刻只有有限个线程可以操作资源,对于synchronized 而言,更是严格到了只有一个线程可以操作资源,根据业务的需要,对应能够或者允许操作资源的线程可以得到继续执行,不能拿到资源的线程要进行等待(park),直到其他线程释放资源的时候,等待的线程可以尝试获取资源,拥有后可以继续执行。   为了记录没有拿到资源的线程,我们可以定义一个数据组或者一列表来记录,一旦有其他线程释放资源的时候,我们可以unpark这些(或者第一个)等待的线程。 一种非常糙的仅仅为了说明这种效果的实现 ...
LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。 LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数:   public native void unpark(Thread jthread); public native void park(boolean isAbsolute, long time);   isAbsolute参数是指明时间是绝对的,还是相对的。   仅仅两个简单的接口,就为上层提供了强大的同步原语。 先来解析下两个函数是做什么的。 unpark函 ...
目前在Java中存在两种锁机制:synchronized和Lock  原文:http://blog.csdn.net/majinggogogo/article/details/11039353 AbstractQueuedSynchronizer  通过构造一个基于阻塞的CLH队列容纳所有的阻塞线程,而对该队列的操作均通过Lock-Free(CAS)操作,但对已经获得锁的线程而言,ReentrantLock实现了偏向锁的功能。 更本质上说:队列的这种方式是思想,底层还要依赖于LockSupport对线程的禁用(park)和许可(unpark)的逻辑     synchroniz ...
CountDownLatch: 功能:是一个同步工具类 ,它允许一个或多个线程一直等待(通过调用await进入),直到其他线程的操作执行完(调用countDown)后再唤醒继续执行。   CountDownLatch维护一个状态 count值,这个值可以通过调用countDown 方法让它递减,直到为0 在count为0之前,所有调用await的方法全部挂起。   内部实现:依赖于AbstractQueuedSynchronizer 框架,让调用await的方法的线程挂起park,直到countDown 操作,改变count的值,unpark 对应的线程。  应用场景: 比如 ...
java 线程通过对象的Wait和Notify进行同步,但是存在一定的危险性 其重点是:wait 和 notify 的 时间点 举例: package com.horizon.thread.aqs; public class NotSafeWaitNotify { private static StringBuffer lock = new StringBuffer(); public static void main(String[] args) throws Exception { // testWaitAfterNotify(); //testW ...
Global site tag (gtag.js) - Google Analytics