- 浏览: 340985 次
- 性别:
- 来自: 北京
最新评论
-
bbls:
有用有用有用
java-jvm-jstack-(监视器和锁的概念) -
王新春:
小侠有点帅哦 写道此流怎么关闭新春这个实现 可以不关闭的,哈哈 ...
源码剖析之java.io.ByteArrayOutputStream -
小侠有点帅哦:
此流怎么关闭新春
源码剖析之java.io.ByteArrayOutputStream -
cumt168:
写的很好为什么初始化参数,年轻代-Xmn10M def new ...
jvm之内存申请过程分析 -
ronin47:
应该是跟共享域名思路差不多,根据cookie的key作判断
跨域:一种通过服务端解决跨域的实现
文章列表
[置顶] 知识点待学习-博客收藏
- 博客分类:
- 架构设计与实践
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
- 博客分类:
- spring
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 ...
Sharding扩容方案(实现)
- 博客分类:
- mysql
数据库扩容配置设计方案:
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
一般来说,“理想”的扩容方案应该努力满足以下几个要求:
最好不迁移数据 (无论如何,数据迁移都是一个让团队压力山大的问题)
允许根据硬件资源自由规划扩容规模 ...
Cache应用中的服务过载案例研究
- 博客分类:
- cache&redis
原文: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 ...