- 博客(79)
- 资源 (9)
- 收藏
- 关注
原创 ConcurrentHashMap的使用场景
在一次项目中,需要设计一个map存储线程资源池,为每种请求类型创建一个线程池。当该类型所对应的线程池中的所有线程都达到工作饱和状态,即是没有多余可用线程,则自动丢弃该类型的请求,以此来保证其他类型的请求不受影响。这中设计属于资源隔离中的线程池隔离,在微服务系统属于是很常见的场景。这种设计没什么难度,初始化一个成员变量map。当请求到达时,检查map中是否已经存在创建好的线程池即可,如果
2017-03-10 09:36:08 11018 1
原创 二、Hystrix隔离服务的实现原理---线程池隔离
Hystrix组件提供了两种隔离的解决方案:线程池隔离和信号量隔离。两种隔离方式都是限制对共享资源的并发访问量,线程在就绪状态、运行状态、阻塞状态、终止状态间转变时需要由操作系统调度,占用很大的性能消耗;而信号量是在访问共享资源时,进行tryAcquire,tryAcquire成功才允许访问共享资源。
2016-06-08 08:54:12 15055
原创 设计模式--适配器、代理、装饰、外观模式的区别与联系
设计模式是为了提高代码的可扩展性可读性,在日常的需求中,逐步总结归纳出来的。是每个程序员都可以在工作中遇到的,用心去发现去理解才能真正的用到工作中,不要为了用而用。设计模式从功能上一般分为创建型、结构型、行为型 三种类型。本节要说的就是结构型中的四个模式的区别,先从定义(功能)上进行区别:定义:适配器:把一个接口转换成客户期望的类型;代理:为一个对象提供一个替身或者占位
2015-11-05 23:04:14 1394
原创 设计模式--外观模式
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
2015-11-03 23:01:14 580
原创 设计模式--适配器模式
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
2015-11-03 22:59:08 516
原创 设计模式之--装饰者模式
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
2015-11-02 23:18:45 640
转载 Git clone RPC failed
错误展示:remote: Counting objects: 369, done. efrror: RPC failed; result=56, HTTP code = 200 atal: The remote end hung up unexpectedly fatal: protocol error: bad pack header 解决:
2015-09-02 22:05:10 1521
原创 curator 锁之 Shared Reentrant Lock
1、描述共享锁:全局同步分布式锁,同一时间两台机器只能有一台获得锁2、参与类InterProcessMutex3、用法3.1 创建 InterProcessMutex 实例public InterProcessMutex(CuratorFramework client, String path)Para
2015-01-10 20:37:09 2927
原创 批量插入空行
批量插入空行 A_fengzi201412281、找一空白列,输入数字1,如: 2、选中数字1,待鼠标变填充状,下来鼠标,下拉到底端。 3、复制数字4次,出现5次重复数字。需要插入多少行空行,就重复N-1遍。如 4、选中新加的数字列,点击排序,选择升序。排序警告选择扩展选定区域。 5、点击排序即可。
2014-12-28 20:33:03 982
原创 Java并发之内存模型-JMM
发生线程安全性的时机: 变量存储在内存中,变量的计算是在CUP中。如果线程A要对变量a进行计算,需要经过三步:1)把变量a从内存中读取到CPU中,2)对变量a进行计算,3)把变量a写入到内存中。当线程A执行到第二步时,线程B也要对变量a进行计算,这时B从内存中读取到的值就是线程A写入到内存之前的值,脏数据就此产生了。
2014-11-29 23:25:14 998
原创 公平锁与非公平锁
在Java的ReentrantLock构造函数中提供了两种锁:创建公平锁和非公平锁(默认)。代码如下: public ReentrantLock() { sync = new NonfairSync(); } 在公平的锁上,线程按照他们发出请求的顺序获取锁,但在非公平锁上,则允许‘插队’:当一个线程请求非公平锁时,如果在发出请求的同时该锁变成可用状态,那么这个线程会跳过队列中所有的等待线程而获得锁。 非公平的Reentran
2014-11-23 15:40:48 2159
原创 带有返回值的 Callable 使用
工作中很多涉及到多线程的地方都implemnets Runable 接口 或者是 extends Thread 抽象类,但是这样子的话得不到返回值。如果以下场景: 在多线程中计算值,线程结束后需要携带返回值。这时就需要Callable接口,实现改接口后需要实现方法 call 。改接口需要ExecutorService的submit方法执行,执行结果包装在 Future<?>泛型类中。通过Future类的get()方法取得返回值,get()是阻塞的,在线程执行前调用get()方法会一直阻塞着。
2014-10-09 18:24:10 1572
原创 多线程总结
一、 每一个线程实质上是一核处理器。二、 线程本地缓存就是处理器缓存。三、 避免数据同步的策略:使用ThreadLocal(spring singleton 实例)、不共享变量。四、 工作内存指的是线程本地内存。在程序运行时,有线程本地内存、主内存。
2014-10-09 18:23:52 1221 1
原创 北漂三年s
今天为止北漂三年了。。。三年前的今天也就是2011年的5月27日带着1000+和一张火车票和一个拉杆箱从南方跑到了北京。。。住了三个月的地下室半年多的筒子大杂物搬到了小区。。。跳了三次槽整体算是现在第三家公司吧。。。继续加油!
2014-05-27 23:12:06 1512 4
sql2000 驱动包 jdbc odbc 驱动
2012-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人