- 博客(20)
- 资源 (34)
- 收藏
- 关注
原创 张老师:java读写锁
简介 ReadWriteLock(读写锁),为我们提供了在某些并发访问场景的操作更加高效,读写锁的目标就是可以同时多个线程并发执行读操作,写操作等待,当写操作获得执行时,所有其他线程的读操作和写操作都将等待。总结就是:读读不互斥,读写互斥,写写互斥,写读互斥。例子import java.util.HashMap;import java.util.Map;import java.ut
2016-03-31 17:27:39 441
转载 Java内存模型总结
Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。1、多线程通信1.1 内存模型Java线程之间的通信由
2016-03-31 12:06:48 427
转载 高可用&负载均衡常用架构
下面总结一下常用的高可用复杂均衡架构模式。1. 客户端切换。客户端配置多个服务器地址。如果发生某个服务器无法访问或者使用异常,客户端就切换到其它服务器上。优点:简单,高效,可以在业务层面检测服务可用性缺点:需要提前配置。Mysql connect 这样做load balance 和failed over .在JDBC连接上可以
2016-03-30 14:18:07 1841
转载 Java Executors(线程池)
Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程。
2016-03-29 10:57:43 396
转载 Java四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
2016-03-29 10:54:15 341
原创 张老师:5.6.线程范围内共享技术
简介如上图,Connection必须是线程访问内共享,否则事务提交将出现错乱。线程内共享的意思就是每个线程拥有独立的一份数据,相互不干扰,如上图每个线程拥有独立的Connection。总结起来就是:线程内共享,线程外独立。示例1public class A { private ThreadLocal tlInteger = null; public
2016-03-29 09:11:31 363
原创 张老师:4.传统线程同步通讯技术
问题子线程循环10次,主线程循环100次,又子线程循环10次,主线程循环100次,如此循环50次,写出代码实现。 代码实现/** * 将线程需要同步的资源包装在一个类里面, * 不要由外层代码去控制资源同步,这样做的好处是易维护和高内聚。 * @author liujun */public class Busnice { /**是否是到子线程执行了*/ priva...
2016-03-28 10:51:18 472
转载 使用ThreadLocalRandom产生并发随机数
Java 7之前我们使用Math.random()产生随机数,使用原子变量来保存当前的种子,这样两个线程同时调用序列时得到的是伪随机数,而不是相同数量的两倍。ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。ThreadLocalRandom不是直接用new实例化,而是第一次使用其静态方法current()。从Math.r
2016-03-23 09:34:18 2432
转载 DelayQueue 队列
DelayQueue----一种有序队列,特点就是只有在队列中的元素到期后才能取出。 1.内存中哪些对象到了超时时间,需要从内存中清除出去。 2.服务器连接中有哪些连接很长时间未操作,需要关闭这些连接 3.任务中有哪些到了执行时间,该进行调度了。简单的方法就是写一个线程不断去检查每
2016-03-22 10:01:38 1078
转载 应用多级缓存模式支撑海量读服务
缓存技术是一个老生常谈的问题,但是它也是解决性能问题的利器,一把瑞士军刀;而且在各种面试过程中或多或少会被问及一些缓存相关的问题,如缓存算法、热点数据与更新缓存、更新缓存与原子性、缓存崩溃与快速恢复等各种与缓存相关的问题。而这些问题中有些问题又是与场景相关,因此如何合理应用缓存来解决问题也是一个选择题。本文所有内容是跟读服务缓存相关,不会涉及写服务数据的缓存。本文也不考虑内容型应用前置的CDN架构
2016-03-21 17:16:11 839
原创 阻塞式线程安全列表
import java.util.concurrent.LinkedBlockingDeque;import java.util.concurrent.TimeUnit;public class Client implements Runnable { private LinkedBlockingDeque list; public Client(LinkedBlockingDe
2016-03-21 12:17:31 464
原创 非阻塞式线程安全列表
import java.util.concurrent.ConcurrentLinkedDeque;public class AddTask implements Runnable { private ConcurrentLinkedDeque list; public AddTask(ConcurrentLinkedDeque list) { this.list = list;
2016-03-21 12:12:19 483
转载 简单介绍Java中Comparable和Comparator
Comparable 和 Comparator是Java核心API提供的两个接口,从它们的名字中,我们大致可以猜到它们用来做对象之间的比较的。但它们到底怎么用,它们之间有又哪些差别呢?下面有两个例子可以很好的回答这个问题。下面的例子用来比较HDTV的大小。看完下面的代码,相信对于如何使用Comparable和Comparator会有一个更加清晰的认识。Comparable一个实现了
2016-03-16 09:57:02 532
转载 Java获取来访者IP
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。 经过代理以
2016-03-16 09:18:27 869
转载 公司请你来干嘛?
公司请你来做什么? 1、请你来是解决问题而不是制造问题 2、如果你不能发现问题或解决不了问题,你本人就是一个问题 3、你能解决多大的问题,你就坐多高的位子 4、你能解决多少问题,你就能拿多少薪水 5、让解决问题的人高升,让制造问题的人让位,让抱怨问题的人下课 问题就是你的机会 公司的问题:就是你改善的
2016-03-15 15:44:27 812
转载 java书籍推荐
个人认为看书有两点好处:能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料对着书上的代码自己敲的时候方便“看完书之后再次提升自我的最好途径是看一些相关的好博文“,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书学习之后的一些总结和提炼,对于梳理学习的内容很有好处,当然这里不是说自己的学习方法,就不再扯下去了。
2016-03-14 09:07:42 727
转载 Linux Screen 超简单用法
场景:ssh 连接到远程服务器上,临时开一个 Jetty 的 HTTP 服务,但是 PUTTY 没多久就自己 inactive 了,很不方便。想找个方法让程序一直运行在后台,想关闭的时候再连一次 PUTTY 去关。查了一下用 screen 可以很方便的进行这个操作,有点像虚拟屏幕的管理。用法:非常简单,只要在原始的命令之前加上 screen 即可:$screen java
2016-03-13 18:08:16 897
转载 Tomcat配置https及访问http自动跳转至https
https介绍: HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据
2016-03-08 17:32:12 2101
转载 Tomcat配置SSL(单向认证)
注:本文只说明单向认证,这里设置为false单向认证:客户端向服务器发送消息,服务器接到消息后,用服务器端的密钥库中的私钥对数据进行加密,然后把加密后的数据和服务器端的公钥一起发送到 客户端,客户端用服务器发送来的公钥对数据解密,然后在用传到客户端的服务器公钥对数据加密传给服务器端,服务器用私钥对数据进行解密,这就完成了客户端 和服务器之间通信的安全问题,但是单向认证没有验证客户端的合法性
2016-03-08 14:45:36 458
Genymotion-ARM-Translation.zip
2015-01-30
PackageManager实例
2014-09-11
Android对Zip文件的加压和解压
2014-05-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人