Java 编程
文章平均质量分 89
Java 基础知识、虚拟机及常用类源码分析
安然_随心
这个作者很懒,什么都没留下…
展开
-
Java JMX 四:MBeanServerInvocationHandler
参考文献:https://docs.oracle.com/javase/8/docs/api/javax/management/MBeanServerInvocationHandler.html相关文章:Java JMX 一:初步认识:https://blog.csdn.net/youyou1543724847/article/details/82933076Java JMX 二:MBea...原创 2018-11-25 21:25:20 · 727 阅读 · 0 评论 -
Java运行参数设置
文章目录1.概述2. 标准参数2.1 运行模式相关的2.2 类,jar路径相关的2.3 运行调试相关的2.4 设置系统变量的-D参数3. 非标准参数(-X)3.1 堆栈配置、垃圾回收3.2 编译优化相关的3.3 调试、 监控3.4 其他4. 非Stable参数(-XX)4.1 相关相关的(主要是gc算法)4.2 性能调优参数列表4.3 调试参数列表附录:Java程序支持的所有运行参数列表1.概述...原创 2018-11-19 22:13:30 · 5586 阅读 · 0 评论 -
JMX,RMI与RPC
参考文献:https文章目录1. RPC1.1 RMI1.2 hessian://1.3 http://1.4 thrift://1.5 rest://2. RMI2.1 示例2.1.1 Server端2.1.2 client端:3.JMX3.1 基本概念3.2 JMX的架构3.3 示例3.3.1 MBean3.3.2 Agent 与MBeanServer3.3.3 client3.3.4 其...原创 2018-10-23 19:57:55 · 2418 阅读 · 0 评论 -
缓存
文章目录1.简介1.1 Web应用缓存分类1.2 缓存中的几个常用术语1.3 缓存设计需要解决以下几个问题2.客户端缓存之HTT缓存2.1 HTTP报文2.2 缓存规则解析2.3 强制缓存2.4 对比缓存2.5 总结3.服务器端缓存之分布式缓存3.1一致性Hash算法3.1.1算法简述3.1.2 容错性与可扩展性分析3.1.3虚拟节点3.1.4算法实现(待完善)3.2 分布式缓存:Redis(待完...转载 2018-10-03 22:55:57 · 388 阅读 · 0 评论 -
Java JMX 一:初步认识
原文地址:https://www.cnblogs.com/trust-freedom/p/6842332.html文章目录1.简介2.JMX HelloWorld2.1 Bean2.2 Agent and Server2.3 Client2.3.1 编码方式访问bean2.3.2 Jconsole远程连接1.简介JMX的全称为Java Management Extensions,是管理Ja...转载 2018-10-03 18:25:07 · 5853 阅读 · 2 评论 -
Java数据库连接池
文章目录1.简介1.1 DriverManager跟DataSource获取getConnection 的区别1.2 实例:使用DriverManger的例子1.3 实例:使用DataSource的例子1.2.1 配置1.2.2 DataSource初始化并获取连接1.2.3 通过connection进行数据库操作2.DataSource的简单实现3.常用数据库连接池3.1 DBCP3.2 c3p...转载 2018-10-03 13:22:17 · 570 阅读 · 0 评论 -
JAVA Queue源码分析 java1.8
JAVA Queue第一篇博客,希望以后每天坚持 目录: 1.Queue接口 2.Java中Queue接口方法 3.Queue的子类PriorityQueue分析 4.总结1.Queue接口 数据结构中的队列,先进先出式的数据结构。 主要注意的时,Java中的Queue是比数据结构中理解的Queue更加灵活。这表现在: a.数据结构中的Queue是按时间顺序的先进先出,即你先插入的元原创 2016-08-09 17:50:32 · 4054 阅读 · 0 评论 -
Java 集合框架分析:PriorityBlockingQueue java1.8
哈哈,终于有了第二篇博客了,终于知道编辑一个博客需要注意什么了,希望坚持下去,每天看点小源码!目录 1.简述PriorityBlockingQueue 2.主要方法及实现 3.使用过程中需要注意的地方 4.和其他的相关容器的比较 5.总结简述PriorityBlockingQueue 特点: 1.属于并发安全的集合。(什么是并发安全的集合:即多线程的情况下,不会出现不确定的状态)。原创 2016-08-09 23:02:56 · 736 阅读 · 0 评论 -
Condition java1.8
昨天看了PriorityBlockingQueue,里面有一个Condition notEmpty变量,觉得挺奇怪的,今天,翻一翻API,了解一下。目录 1.Condition是什么 Condition实际上就是将Ojbect对象的监视器(wait,notity)功能抽象出来了,从而允许形成多个等待队列。 之前的使用Object的wait方法,则将当前线程阻塞到该ob原创 2016-08-10 10:23:23 · 502 阅读 · 0 评论 -
Java 集合框架分析:ArrayDeque java1.8
ArrayDeque源码分析 目录 1.ArrayDeque介绍 2.主要方法分析 3.总结ArrayDeque介绍 实现了Deque接口,作为双向的队列使用 特点: 1.不允许null元素 2.无界的,容器满时,自动扩容 3.不是线程安全的。 4.比起作为deque使用时,比linkedlist快(注意:是作为deque,比linkedlist快,而不是作为一个普通的array原创 2016-08-10 11:46:34 · 727 阅读 · 0 评论 -
Java 集合框架分析:ArrayBlockingQueue java1.8
ArrayBlockingQueue 目录 1.ArrayBlockingQueue简介 2.主要方法 3.和其他相关集合的比较 4.总结1.ArrayBlockingQueue简介 线程安全的先进先出队列,并且是属于有界的队列,一个典型的有界缓冲区。支持公平锁的存、取操作。2.主要方法 先看看主要的成员变量: takeindex,putinex就是对应于ArrayDeque里的he原创 2016-08-10 17:12:05 · 755 阅读 · 0 评论 -
关于lock.lockInterruptibly()方法和java.lang.IllegalMonitorStateException异常
在看java集合源码时,发现一些并发集合中加锁的方式有的是lock.lock(),有的是lock.lockInterruptibly()形式,不是很清楚其中的区别,故搜了一些资料,写了自己的理解。API文档的说法:lock.lock():尝试获取锁。当该函数返回时,处于已经获取锁的状态。如果当前有别的线程获取了锁,则睡眠。lockInterruptibly():尝试获取锁。如果当前有别的线程获取原创 2016-08-10 18:12:46 · 11256 阅读 · 5 评论 -
Java 集合框架分析:DelayQueue java8
DelayQueue 目录 DelayQueue简单说明 主要方法分析 比较 总结DelayQueue简单说明无界的阻塞队列,和普通的队列不同的是:里面的元素只有时间过期了之后才能取出来,头元素是已经过期的元素中最早过期的。如果没有过期的元素,则poll方法返回null.但是size方法返回的所有的元素,包括过期的和没有过期的。 注意:该集合的iterator并不保证访问顺序,你不能迭代原创 2016-08-10 21:33:23 · 1184 阅读 · 0 评论 -
Java中断机制
参考文献 http://www.infoq.com/cn/articles/java-interrupt-mechanism http://blog.csdn.net/dlite/article/details/4218105主要参考上两篇博客,总结一些个人看法。1.先看看用户直接能接触到的中断相关的接口 方法 含义 备注 boolean isInterrupted() 检查t原创 2016-08-12 09:41:35 · 3486 阅读 · 0 评论 -
关于ClassNOtFoundException异常
在项目中,使用了一个JAR包,单独运行Jar包时(Java -jar jarname.jar),正常,但是将Jar包导入eclipse中,调用jar包就出现了各种错误,都是ClassNOtFoundException。开始手动将这些所引用的项目引入到项目buildpath中,后来烦的不行,因为导入一个项目,解决了一个问题。又有了一个新的类说找不到。后来回头一想,为什么CMD直接运行就可以呢?这是什么原创 2016-08-15 17:00:57 · 13079 阅读 · 0 评论 -
JAVA中的一些基本知识
1. Enum和String的相互转化 见例子:enum PathExceptionType { EmpytPath, EmptyMethodPathChain, EmptyUnitChain, ReviseError, NullUnitNode, NullUnitNodeToString, DeadLoop, Unkown} /原创 2016-08-26 22:40:57 · 1025 阅读 · 0 评论 -
Java堆栈信息分析
以下数据使用Jconsole转储文件中得来,不同的工具,不同的虚拟机得到的具体信息可能有差别栈转储信息转储方式通过Jconsole工具(或者其他分析工具) "Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x142b7400 nid=0x280 runnable [0x00000000] java.lang.Thread.State: R原创 2016-08-27 17:38:21 · 7196 阅读 · 0 评论 -
java7,8中的String pool
参考文献: http://blog.csdn.net/chen1280436393/article/details/51768609 http://java-performance.info/string-intern-in-java-6-7-8/ http://blog.csdn.net/heiyouhei123/article/details/51560166关于String poolwh原创 2016-08-27 21:52:14 · 1853 阅读 · 0 评论 -
Java资料汇总
专业词汇解释: http://hllvm.group.iteye.com/group/topic/21468#post-272070HotSpot专业词汇 http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html#safepoint http://openjdk.java.net/groups/hotspot/gc相关原创 2016-08-28 12:15:11 · 479 阅读 · 0 评论 -
Swing
总结: 1.Swing不是线程安全的 2.在多线程环境下,应该将所有的GUI更新、状态获取操作放在一个线程中,即EDT(事件分发线程,一般就是创建GUI,执行事先分发到各个监听器中的线程中) 3.但是在多线程环境中,其他线程需要更新界面或是获取界面值,可通过SwingUtilities类 来将一段代码提交到EDT线程中执行。 4转载 2016-08-28 20:25:49 · 600 阅读 · 0 评论 -
JAVA UncaughtExceptionHandler 处理
Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止,导致这个线程的终结。最麻烦的是,在线程中抛出的异常即使使用try…catch也无法截获,因此可能导致一些问题出现,比如异常的时候无法回收一些系统资源,或者没有关闭当前的连接等等。 (PS:Callalble是可抛出异常)如果需要捕获系统的未捕获异常(如系统抛出了未知错误,原创 2016-08-28 22:21:49 · 1989 阅读 · 0 评论 -
Integer中的相关函数实现源码分析
1. Integer.bitCount public static int bitCount(int i) { // HD, Figure 5-2 i = i - ( (i >>> 1) & 0x55555555 ); i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); i = (i原创 2016-08-31 15:43:30 · 1309 阅读 · 0 评论 -
java 1.8 ThreadLocal源码分析
参考资料: http://www.cnblogs.com/dolphin0520/p/3920407.html http://blog.csdn.net/lufeng20/article/details/24314381 http://blog.csdn.net/devilkin64/article/details/79166301. 关于ThreadLocal创建线程局部私有的变量,避免多线原创 2016-09-07 16:31:56 · 1987 阅读 · 0 评论 -
GC(1.安全点的相关知识)
目录: 1.安全点的相关知识 1.1 OOPMap 2. GC基本算法 3. G1算法 4. 通过Reference和GC交互 5. GC友好编程安全点的相关知识主要有如下几个问题: 1.什么是安全点 2.安全点的位置 3.安全点的管理、实现 4.什么场景、功能需要安全点的配合 5.Safe Reg原创 2016-10-03 15:10:32 · 7768 阅读 · 0 评论 -
GC(1.1OOPMap)
调用栈里的引用类型数据是GC的根集合(root set)的重要组成部分;找出栈上的引用是GC的根枚举(root enumeration)中不可或缺的一环。 JVM选择用什么方式会影响到GC的实现:如果JVM选择不记录任何这种类型的数据,那么它就无法区分内存里某个位置上的数据到底应该解读为引用类型还是整型还是别的什么。这种条件下,实现出来的GC就会是“保守式GC(conservative GC)”。在转载 2016-10-03 15:12:37 · 3369 阅读 · 0 评论 -
GC(2.基本算法)
主要问题:1.GC判断对象是否存活算法 2.GC垃圾收集算法 3.JVM虚拟机GC回收算法 4.优化1.GC判断对象是否存活算法1> 引用计数算法 2> 根搜索算法(GC Root)根搜索算法在主流的商用程序语言中(Java和C#,甚至包括前面提到的古老的Lisp),都是使用根搜索算法(GC Roots Tracing)判定对象是否存活的。这个算法的基本思路就是通过一系列的名为“GC Ro原创 2016-10-03 15:27:28 · 1942 阅读 · 0 评论 -
GC(G1算法)
Java 8 默认的 GC是Parallel GC。Oracle正在考虑将JEP 248包含到Java 9的JEP列表中,即在服务器配置中将G1作为默认垃圾收集器。The Garbage-First (G1) garbage collector is fully supported in Oracle JDK 7 update 4 and later releasesGarbage First(G1转载 2016-10-03 15:36:26 · 10512 阅读 · 1 评论 -
GC(通过Reference和GC交互)
##Java中相关概念 ReferenceQueue WeakReference SoftReference PhantomReference WeakHashMapJava2 增强了内存管理功能,增加了一个java .lang.ref 包,其中定义了三种引用类。这三种引用类分别为SoftReference、 WeakReference和 PhantomReference.通过使用这些引用原创 2016-10-03 15:49:27 · 1653 阅读 · 0 评论 -
GC(GC友好编程)
面向GC的Java编程基本观点:过早优化是万恶之源。一、GC分代的基本假设绝大部分对象的生命周期都非常短暂,存活时间短。 而这些短命的对象,恰恰是GC算法需要首先关注的。所以在大部分的GC中,YoungGC(也称作 MinorGC)占了绝大部分,对于负载不高的应用,可能跑了数个月都不会发生FullGC。基于这个前提,在编码过程中,我们应该尽可能地缩短对象的生命周期。在过去,分配对象是一个比较 重的转载 2016-10-03 15:52:38 · 1890 阅读 · 0 评论 -
GC(6.其他)
相关文章: 1.安全点的相关知识 http://blog.csdn.net/youyou1543724847/article/details/52728148 1.1 OOPMap http://blog.csdn.net/youyou1543724847/article/details/52728154 2. GC基本算法 http://blog.csdn.net/youyou154原创 2016-10-04 12:15:25 · 1482 阅读 · 0 评论 -
JAVA 新特性:lambda表达式
本系列(java 8新特性)都是整理其他博客而来目录: 1.Lambda表达式2.函数式接口3.接口新特性Lambda表达式什么是Lambda表达式定义:a function (or a subroutine) defined, and possibly called, without being bound to an identifier 简单点说就是:一个不用被绑定到一个标识符上,并且可能原创 2016-10-04 12:38:32 · 594 阅读 · 0 评论 -
JAVA 新特性:流
Stream什么是流Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出转载 2016-10-04 13:06:50 · 511 阅读 · 0 评论 -
Java新特性:函数式接口
http://www.tuicool.com/articles/beA7V3 http://www.runoob.com/java/java8-functional-interfaces.html什么是函数接口函数接口是一种只有一个方法的接口,像这样地,函数接口可以隐式地转换成lambda表达式。java相关的类包概要:java.util.function 作为Comparator 和Runn原创 2016-10-04 13:39:44 · 1362 阅读 · 0 评论 -
Java新特性:接口新特性
Java 8增加了两个新的概念在接口声明的时候:默认和静态方法。 默认方法和Trait有些类似,但是目标不一样。默认方法允许我们在接口里添加新的方法,而不会破坏实现这个接口的已有类的兼容性,也就是说不会强迫实现接口的类实现默认方法。(如为了支持流,对集合接口添加的stream()方法,为了保持接口的兼容性,这些方法都是default方法) 默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法原创 2016-10-04 13:43:56 · 795 阅读 · 0 评论 -
Java 集合框架分析:Set(1)
常用的两种set:TreeSet,HashSet实现:都是基于相应的map接口来的,如TreeSet底层用的TreeMap,HashSet底层用的HashMap。映射到map,key为set中你要放置的量,value为一个全局的object对象(节约空间)TreeSet看一下源码结构public class TreeSet<E> extends AbstractSet<E> implemen原创 2016-10-04 13:59:59 · 849 阅读 · 0 评论 -
Java 集合框架分析:关于Set,Map集合中元素判等的方式
关于Set,Map集合中元素判等的方式:Hash*一般是基于equals,hashcode方式来判定元素是否相等。如果你加入到Set中的对象没有重写这两个方法,则使用的Object中的equals,hashcode方法(即判定地址)。 如:CompareTo接口的方法: public int compareTo(Object arg0) { // this原创 2016-10-04 14:10:58 · 747 阅读 · 0 评论 -
Java 集合框架分析:ConcurrentModificationException
单线程中的并发修改异常要点原因: 1.集合对象中保存了一个变量modCount,记录该集合的结构修改次数(添加,删除) 2.迭代器对象保存了一个变量expectedModCount,记录该迭代器在创建时的modeCount的值。 3.在迭代器每次移动的时候,会检查迭代器的expectedModCount和当前集合的modeCount的值,如果不同转载 2016-10-04 14:16:05 · 442 阅读 · 0 评论 -
Java 集合框架分析:线程安全的集合
说明:同步集合是说它的操作是同步的,(mutative operations :add, set, and so on),但是它的组合操作的同步性要自己控制。线程安全的集合什么是线程安全在多线程环境下,不会产生不一致的行为(线程安全:有一定的标准,能够断定发生的先后顺序,如先获得锁的会执行,然后….)分类1.Copy* CopyOnWriteArraySet,CopyOnWriteArrayLis原创 2016-10-04 18:44:19 · 4620 阅读 · 1 评论 -
Java 集合框架分析:JAVA集合中的一些边边角角的知识
JAVA集合中的一些边边角角的知识NULL在集合中是否允许Queue:不允许插入Null值(一个主要原因:Queue的poll方法会返回Queue中的head元素,但是如果队列为空,则返回NULL,这里如果本来队列中含有Null,则会分不清) Deque:不强制限制,但是不提倡插入NULL ArryDeque:不允许LinkedList:允许 ArryList:允许,运行存在多个nullEnu原创 2016-10-04 18:58:44 · 636 阅读 · 0 评论 -
Java 集合框架分析:LinkedList
LinkedList的基本结构:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ transient int size = 0;//size存储了节点的个数,size()的复杂度转载 2016-10-04 19:03:37 · 608 阅读 · 0 评论