随笔分类 - JAVA
Java中JNI的使用详解第一篇:HelloWorld
摘要:转自: http://blog.csdn.net/jiangwei0910410003/article/details/17465085 今天开始研究JNI技术,首先还是老套路,输出一个HelloWorld:具体流程如下:在Java中定义一个方法,在C++中实现这个方法,在方法内部输出“Hello
阅读全文
JAVA基础之理解JNI原理
摘要:JNI是JAVA标准平台中的一个重要功能,它弥补了JAVA的与平台无关这一重大优点的不足,在JAVA实现跨平台的同时,也能与其它语言(如C、C++)的动态库进行交互,给其它语言发挥优势的机会。 有了JAVA标准平台的支持,使JNI模式更加易于实现和使用。在此总结了下面这个知识图: 实例: 环境说明:
阅读全文
AQS详解(AbstractQueuedSynchronizer)
摘要:Intrinsic VS explicity 1. 不一定保证公平 1. 提供公平和非公平的选择 2. 无 2. 提供超时的功能 3. 无 3. 提供对中断的响应 4. 无 4. 提供try... 的方法 5. 保证获取锁和释放锁的一致性 5. 需要自己保证 6. 只有一个conditionQueu
阅读全文
SimpleDateFormat的线程安全问题与解决方案
摘要:1. 原因 SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交友Calend
阅读全文
jvm不打印异常栈
摘要:生产环境抛异常,但却没有将堆栈信息输出到日志,确认打印日志方法正确logger.error("somthing error", ex); JVM启动参数加上-XX:-OmitStackTraceInFastThrow(减号表示关闭,加号则表示启用) 原因参考 http://www.oracle.co
阅读全文
Java中的序列化Serialable高级详解
摘要:引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。
阅读全文
java梳理-序列化与反序列化
摘要:一背景: 之前笔记关于rpc框架介绍中,提到为了调用远程服务,需要再确定消息结构后考虑序列化与反序列化,序列化主要是把对象转换成二进制码便于网络传输,反序列化就是相反的,主要目的是生成对象便于后续处理。好处就是: 它自动屏蔽了操作系统的差异,字节顺序等,可以实现不同环境主机跨网络的访问。 二相关知识
阅读全文
AQS详解
摘要:AQS依赖于一个FIFO队列和一个int表示的状态. 具体的实现类可以自己去保存别的状态, 但是只有这个int表示的状态是require和release的, 子类自己的状态是做辅助作用的. 我们的同步器应该是通过把AQS的子类作为一个内部的代理类来实现,最好不要直接继承AQS,因为AQS的一些api
阅读全文
对ConditionQueue和锁的理解
摘要:1. 什么时候使用conditionQueue 使用conditionQueue的一个最基本的条件是,操作和状态相关,而且是多线程同时访问的状态. 也就是说在使用conditionQueue的时候, 是我们自己在管理一个对象内部的状态, 还有同步的机制, 所以要制定好一个通用的协议来保证正常运行.
阅读全文
Synchronizer解析(为AQS打个铺垫)
摘要:ReentranceLock 和 Semaphore有很多共同点,他们都像是一个gate一样, 来控制让哪些线程阻塞,让哪些线程通过. 不同的是,ReentranceLock允许通过的量是1,Semaphore允许多个线程通过, 所以在这个角度看,ReentranceLock和Semaphore是可
阅读全文
IntricCondition和expliciteCondition比较
摘要:IntricCondition 和 expliciteCondition 的区别 与 intrinsicLoc和expliciteLock的区别很相似, expliciteCondition提供了更多的功能,比如,fair和unfair的wait,notify 不同conditionPredicte
阅读全文
intrinsicConditionQueue笔记
摘要:一, 使用conditionQueue需要注意的一些点: 一个conditionQueue被多种Predicate condition 使用是很正常的,所以当一个wait的线程被唤醒的时候,很有可能它监听的条件并没有成功,所以在wait醒后,最好再次进行条件的判断. 一定要在wait前就对条件进行判
阅读全文
锁的性能相关
摘要:锁为什么耗性能: 1. 每个线程在被cpu执行的时候, 都会给这个线程分配一定的时间让这个线程执行, 这段时间不会被信号中断. 2. 在获取锁的时候, 如果竞争很激烈, 这个线程会被挂起, 所以, 如果获取锁的操作很多, 这个线程就会频繁被挂起, 无法利用完cpu分配给它的时间, 时间都浪费 在了c
阅读全文
JAVA AQS源码分析
摘要:转自: http://www.cnblogs.com/pfan8/p/5010526.html JAVA AQS的全称为(AbstractQueuedSynchronizer),用于JAVA多线程的开发,从名称我们也可以看出,它实现了同步的队列,而这个队列是指线程队列。AQS类在java.util.
阅读全文
线上服务 CPU 100%?一键定位 so easy!
摘要:转自: https://my.oschina.net/leejun2005/blog/1524687 摘要: 本文主要针对 Java 服务而言 0、背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思
阅读全文
JMX超详细解读
摘要:转自: http://www.cnblogs.com/dongguacai/p/5900507.html 一、JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些
阅读全文
java锁的种类以及辨析(一):自旋锁
摘要:锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解 惑。 1、自旋锁 自旋
阅读全文
自旋锁代替互斥锁的实践
摘要:原文地址 译文地址 译者:小鱼儿 校对:梁海舰 自旋锁和互斥锁是多线程程序中的重要概念。 它们被用来锁住一些共享资源, 以防止并发访问这些共享数据时可能导致的数据不一致问题。 但是它们的不同之处在哪里? 我们应该在什么时候用自旋锁代替互斥锁? 理论分析 从理论上说, 如果一个线程尝试加锁一个互斥锁的
阅读全文
Leader/Follower多线程网络模型介绍
摘要:之前分享过《轻量级 web server Tornado代码分析》,介绍了目前我们采用nginx + tornado的方式搭建升级、配管、数据中心等各类服务组建客户端迭代体系。最近注意到,淘宝目前公开了其网络服务器源代码Tengine。根据官方介 绍,Tengine是由淘宝网发起的Web服务器项目。
阅读全文
java.util.concurrent.locks.LockSupport (讲得比较细)
摘要:转自: https://my.oschina.net/readjava/blog/282882 摘要: 要学习JAVA中是如何实现线程间的锁,就得从LockSupport这个类先说起,因为这个类实现了底层的一些方法,各种的锁实现都是这个基础上发展而 来的。这个类方法很少,但理解起来需要花费一点时间,
阅读全文