Java
大步流星520
这个作者很懒,什么都没留下…
展开
-
Java Socket编程入门
Java Socket编程入门1.必备知识 TCP是Tranfer Control Protocol的简称,即传输控制协议,基于TCP协议,可以进行有顺序的,无差错的数据流传输,当然,发送方和接收方之间必须建立连接,在建立连接后,双方可以双向通信。UDP是User Datagram Protocol的简称,即用户数据报协议,该协议是无连接的,每个数据报都是个独立的信息体...2014-02-26 15:17:56 · 172 阅读 · 0 评论 -
AbstractQueuedSynchronizer初探
毫不为过的说,AbstractQueuedSynchronizer(以下简称AQS)是java.util.concurrent包下同步器类的灵魂组件,很多同步组件都是基于它实现的,比如CountDownLatch、CyclicBarrier、ReentrantLock、ReentrantReadWriteLock和ConcurrentHashMap等。我们不要一头栽进AQS的代码里直接看,...2016-06-18 23:40:29 · 231 阅读 · 0 评论 -
信号量Semaphore初探
信号量Semaphore是java.util.concurrent包下一个常用的同步工具类,它维护了一个许可集,可以理解成资源数,可以通过acquire操作来获取一个资源,并通过release来释放一个资源,但需要注意的是,release来释放资源前不一定要先通过acquire来获取一个资源,如果不断的release而不进行acquire将导致资源数虚增,所以一定得我们自己来...2016-06-25 21:23:49 · 274 阅读 · 0 评论 -
可重入锁ReentrantLock初探
我们知道,java.util.concurrent.locks包下的Lock和Condition接口的语义是用来替代JDK1.5之前使用synchronize和Object.wait、Object.notify、Object.notifyAll组合,Effective Java一书中说过,JDK1.5及其以后,你几乎没有任何理由去选择使用synchronize和Object.wait、Obje...2016-06-26 16:52:27 · 106 阅读 · 0 评论 -
常用限流方案的设计和实现
为了保证在业务高峰期,线上系统也能保证一定的弹性和稳定性,最有效的方案就是进行服务降级了,而限流就是降级系统最常采用的方案之一。 限流即流量限制,或者高大上一点,叫做流量整形,限流的目的是在遇到流量高峰期或者流量突增(流量尖刺)时,把流量速率限制在系统所能接受的合理范围之内,不至于让系统被高流量击垮。 其实,服务降级系统中的限流并没有我们想象的那么简单,第一,限流方案必须是可...2016-07-16 23:52:54 · 966 阅读 · 1 评论 -
JVM常用调优参数
-Xmx:最大JVM可用内存, 例:-Xmx4g-Xms:最小JVM可用内存, 例:Xms4g-Xmn:年轻代内存大小,例:-Xmn2560m-XX:PermSize:永久代内存大小,该值太大会导致fullGC时间过长,太小将增加fullGC频率,例:-XX:PermSize=128m-Xss:线程栈大小,太大将导致JVM可建的线程数量减少,例:-Xss256k-...2015-09-15 14:38:51 · 322 阅读 · 0 评论 -
简单的cpu飚高问题定位脚本
老司机在定位和解决问题时都有着自己的一套方法论,总不能老踩一些重复的坑是吧。老司机一般多少都遇到过服务器cpu飚高的问题,定位问题的方法网上文章多如牛毛,现这里再总结一下,对于混部多个Java应用的服务器,我们一般会通过如下步骤来定位该问题:找到cpu占比高的Java进程ID,通过这一步就知道是哪个Java应用出了问题。然后再找到该Java进程中哪些线程占用cpu时间比较高,有...2018-02-19 10:46:35 · 322 阅读 · 0 评论 -
Java中如何限制方法访问的并发数
并发编程一直是Java基础中的高地,但很多只要有两三年Java基础的工程师,会在简历中很明确的标明“熟悉多线程编程、有高并发编程经验”,来凸显自己编程能力有多厉害,但实际上可能只是看了《Java Concurrency in Practice》的几个章节而已。其实对很多业务研发工程师来说,高并发编程经验并不是必备的核心竞争力之一,很多需要加锁或者统计的场景,大都可以交给外部系统如Redis来做...原创 2018-08-04 17:23:26 · 1132 阅读 · 0 评论