文章分类 -  JavaSE

摘要:此处只做结论性记录,不做具体分析。 Random有两个构造器,有参和无参: Math.Random返回[0,1)范围的double类型数据 内部也是调用的Java.util.Random无参构造器实现的 区别也就一目了然了。 阅读全文
posted @ 2019-09-21 10:30 暗夜心慌方 阅读(1352) 评论(0) 推荐(0) 编辑
摘要:直接上图,再做说明: 1.类的静态变量是在准备阶段分配内存并赋默认值的,但还没有define定义 2.类的静态变量是在类初始化的时候define并赋值的 3.类的静态代码块是在类初始化的时候执行的,多个静态代码块谁在前谁先执行。静态块若要调用静态变量,那么变量必须声明在静态块前面,因为静态变量和静态 阅读全文
posted @ 2017-09-15 11:44 暗夜心慌方 阅读(351) 评论(0) 推荐(0) 编辑
摘要:一、什么是内省? 内省(Introspector)是Java语言对JavaBean类属性、事件的处理方法 例如类User中有属性name,那么必定有getName,setName方法,我们可以通过他们来获取或者设置值,这是常规操作。 Java提供了一套API来访问某个属性的getter/setter 阅读全文
posted @ 2017-08-21 16:43 暗夜心慌方 阅读(7702) 评论(1) 推荐(2) 编辑
摘要:一.java序列化与反序列化 序列化是指把java对象(属性)转换为字节序列的过程 反序列化是指把字节序列恢复为java对象的过程 二.为什么需要序列化和反序列化 首先网络通信都是二进制的形式在传输,本地存储也是这样,那么如果我们需要在网络远程传输java对象,或者想将java对象状态持久化到磁盘, 阅读全文
posted @ 2017-08-09 17:57 暗夜心慌方 阅读(270) 评论(0) 推荐(0) 编辑
摘要:两种锁的加锁原理 互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。 自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。 两种锁的区别 互斥锁的起始原始开销要高于自旋锁,但是基本是一劳永逸,临界区 阅读全文
posted @ 2017-07-11 17:52 暗夜心慌方 阅读(344) 评论(0) 推荐(0) 编辑
摘要:引言 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁(Lock-free)的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对 阅读全文
posted @ 2017-07-11 17:51 暗夜心慌方 阅读(179) 评论(0) 推荐(0) 编辑
摘要:在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如 阅读全文
posted @ 2017-07-11 17:01 暗夜心慌方 阅读(107) 评论(0) 推荐(0) 编辑
摘要:简介 Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据, 如果第一个线程先执行exchange方法,它会一直等待第二个线程也执行exchange, 阅读全文
posted @ 2017-07-11 11:28 暗夜心慌方 阅读(117) 评论(0) 推荐(0) 编辑
摘要:简介 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。很多年以来,我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待 阅读全文
posted @ 2017-07-11 10:22 暗夜心慌方 阅读(310) 评论(0) 推荐(0) 编辑
摘要:https://my.oschina.net/lichhao/blog/111362 https://my.oschina.net/clopopo/blog/149368 阅读全文
posted @ 2017-07-07 17:01 暗夜心慌方 阅读(99) 评论(0) 推荐(0) 编辑
摘要:jvm调优总结 阅读全文
posted @ 2017-07-05 17:32 暗夜心慌方 阅读(76) 评论(0) 推荐(0) 编辑
摘要:一、synchronized介绍 1.使用的时候一般是同步方法或者同步块 2.synchronized持有的是一个类的实例的锁,所以如果一个线程进入了一个synchronized方法或代码块那么他就必须获得当前这个实例的锁,此时别的线程如果想要访问当前这个实例中的同步方法或同步块都将被阻塞住,普通方 阅读全文
posted @ 2017-06-28 15:39 暗夜心慌方 阅读(252) 评论(0) 推荐(0) 编辑
摘要:Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式。然而这两种实现其实存在着一 阅读全文
posted @ 2017-06-01 16:12 暗夜心慌方 阅读(259) 评论(0) 推荐(0) 编辑
摘要:一,何为自动装箱自动拆箱 我们平时创建一个对象的时候可以这样: Class class = new Class(); 但是Integer可以这样:Integer i = 100; 在这个过程中java对基础数据类型进行了装箱操作autoboxing,自动拆箱为反向操作 基本数据类型的自动装箱(aut 阅读全文
posted @ 2017-06-01 15:45 暗夜心慌方 阅读(144) 评论(0) 推荐(0) 编辑
摘要:assert关键字,表示断言 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言检查,则需要用开关-enableasse 阅读全文
posted @ 2017-06-01 14:06 暗夜心慌方 阅读(233) 评论(0) 推荐(0) 编辑
摘要:CountDownLatch是一个同步计数器,从jdk1.5加入concurrent包时引入的 我们通过一个例子来解释下这句话: 主线程是否被唤醒,只关心计数器是否被减到0 阅读全文
posted @ 2017-05-06 12:09 暗夜心慌方 阅读(106) 评论(0) 推荐(0) 编辑
摘要:CyclicBarrier和CountDownLatch一样,都是关于线程的计数器。 运行结果: 阅读全文
posted @ 2017-05-04 17:31 暗夜心慌方 阅读(88) 评论(0) 推荐(0) 编辑
摘要:一、认识国际化资源文件 这个类提供软件国际化的捷径。通过此类,可以使您所编写的程序可以: 轻松地本地化或翻译成不同的语言 一次处理多个语言环境 以后可以轻松地进行修改,支持更多的语言环境 说的简单点,这个类的作用就是读取资源属性文件(properties),然后根据.properties文件的名称信 阅读全文
posted @ 2017-04-14 11:25 暗夜心慌方 阅读(141) 评论(0) 推荐(0) 编辑
摘要:Myeclipse或者Eclipse怎么能找到各个库文件,怎么能够将你自己使用的第三方jar包找到并能让你能够导入 这个就是classpath的作用 classpath能够让JVM发现,classpath是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH 阅读全文
posted @ 2017-04-12 16:46 暗夜心慌方 阅读(750) 评论(0) 推荐(0) 编辑
摘要:package org.business.wsclient; import java.io.UnsupportedEncodingException; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activa... 阅读全文
posted @ 2017-04-11 16:04 暗夜心慌方 阅读(134) 评论(0) 推荐(0) 编辑