刘俊技术博客专栏

专注于J2EE和大数据

张老师:java读写锁

简介 ReadWriteLock(读写锁),为我们提供了在某些并发访问场景的操作更加高效,读写锁的目标就是可以同时多个线程并发执行读操作,写操作等待,当写操作获得执行时,所有其他线程的读操作和写操作都将等待。总结就是:读读不互斥,读写互斥,写写互斥,写读互斥。 例子 import java.ut...

2016-03-31 17:27:39

阅读数:318

评论数:0

Java内存模型总结

Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现 同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。 ...

2016-03-31 12:06:48

阅读数:300

评论数:0

高可用&负载均衡常用架构

下面总结一下常用的高可用复杂均衡架构模式。 1. 客户端切换。 客户端配置多个服务器地址。如果发生某个服务器无法访问或者使用异常,客户端就切换到其它服务器上。 优点:简单,高效,可以在业务层面检测服务可用性 缺点:需要提前配置。 Mys...

2016-03-30 14:18:07

阅读数:1524

评论数:0

Java Executors(线程池)

Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。    有关Java5线程新特征的内容全部在java.ut...

2016-03-29 10:57:43

阅读数:274

评论数:0

Java四种线程池的使用

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待...

2016-03-29 10:54:15

阅读数:229

评论数:0

张老师:5.6.线程范围内共享技术

简介 如上图,Connection必须是线程访问内共享,否则事务提交将出现错乱。线程内共享的意思就是每个线程拥有独立的一份数据,相互不干扰,如上图每个线程拥有独立的Connection。总结起来就是:线程内共享,线程外独立。 示例1 public class A { privat...

2016-03-29 09:11:31

阅读数:252

评论数:0

张老师:4.传统线程同步通讯技术

问题 子线程循环10次,主线程循环100次,又子线程循环10次,主线程循环100次,如此循环50次,写出代码实现。   代码实现 /** * 将线程需要同步的资源包装在一个类里面, * 不要由外层代码去控制资源同步,这样做的好处是易维护和高内聚。 * @author liujun ...

2016-03-28 10:51:18

阅读数:290

评论数:0

使用ThreadLocalRandom产生并发随机数

Java 7之前我们使用Math.random()产生随机数,使用原子变量来保存当前的种子,这样两个线程同时调用序列时得到的是伪随机数,而不是相同数量的两倍。 ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。ThreadLocal...

2016-03-23 09:34:18

阅读数:1204

评论数:0

DelayQueue 队列

DelayQueue----一种有序队列,特点就是只有在队列中的元素到期后才能取出。               1.内存中哪些对象到了超时时间,需要从内存中清除出去。               2.服务器连接中有哪些连接很长时间未操作,需要关闭这些连接        ...

2016-03-22 10:01:38

阅读数:783

评论数:0

应用多级缓存模式支撑海量读服务

缓存技术是一个老生常谈的问题,但是它也是解决性能问题的利器,一把瑞士军刀;而且在各种面试过程中或多或少会被问及一些缓存相关的问题,如缓存算法、热点数据与更新缓存、更新缓存与原子性、缓存崩溃与快速恢复等各种与缓存相关的问题。而这些问题中有些问题又是与场景相关,因此如何合理应用缓存来解决问题也是一个选...

2016-03-21 17:16:11

阅读数:629

评论数:0

阻塞式线程安全列表

import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.TimeUnit; public class Client implements Runnable { private LinkedBl...

2016-03-21 12:17:31

阅读数:349

评论数:0

非阻塞式线程安全列表

import java.util.concurrent.ConcurrentLinkedDeque; public class AddTask implements Runnable { private ConcurrentLinkedDeque list; public AddTas...

2016-03-21 12:12:19

阅读数:332

评论数:0

java同步代码块和同步方法的区别

2016-03-17 11:01:51

阅读数:840

评论数:0

简单介绍Java中Comparable和Comparator

Comparable 和 Comparator是Java核心API提供的两个接口,从它们的名字中,我们大致可以猜到它们用来做对象之间的比较的。但它们到底怎么用,它们之间有又哪些差别呢?下面有两个例子可以很好的回答这个问题。下面的例子用来比较HDTV的大小。看完下面的代码,相信对于如何使用Compa...

2016-03-16 09:57:02

阅读数:370

评论数:0

Java获取来访者IP

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地...

2016-03-16 09:18:27

阅读数:576

评论数:0

公司请你来干嘛?

公司请你来做什么?     1、请你来是解决问题而不是制造问题     2、如果你不能发现问题或解决不了问题,你本人就是一个问题     3、你能解决多大的问题,你就坐多高的位子     4、你能解决多少问题,你就能拿多少薪水     5、让解决问题的人高升,让制造问...

2016-03-15 15:44:27

阅读数:572

评论数:0

java书籍推荐

个人认为看书有两点好处: 能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料对着书上的代码自己敲的时候方便 “看完书之后再次提升自我的最好途径是看一些相关的好博文“,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看...

2016-03-14 09:07:42

阅读数:600

评论数:0

Linux Screen 超简单用法

场景:ssh 连接到远程服务器上,临时开一个 Jetty 的 HTTP 服务,但是 PUTTY 没多久就自己 inactive 了,很不方便。想找个方法让程序一直运行在后台,想关闭的时候再连一次 PUTTY 去关。 查了一下用 screen 可以很方便的进行这个操作,有点像虚拟屏幕的管理。 ...

2016-03-13 18:08:16

阅读数:674

评论数:0

Tomcat配置https及访问http自动跳转至https

https介绍:    HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL...

2016-03-08 17:32:12

阅读数:1723

评论数:0

Tomcat配置SSL(单向认证)

注:本文只说明单向认证,这里设置为false 单向认证:客户端向服务器发送消息,服务器接到消息后,用服务器端的密钥库中的私钥对数据进行加密,然后把加密后的数据和服务器端的公钥一起发送到 客户端,客户端用服务器发送来的公钥对数据解密,然后在用传到客户端的服务器公钥对数据加密传给服务器端,服务器...

2016-03-08 14:45:36

阅读数:337

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭