Java
拖垃圾
这个作者很懒,什么都没留下…
展开
-
AQS 杂谈
我想要在代码层面实现一把锁。假如是一把排他锁,获取锁,相当于争夺一份公共资源,即:一个共享变量。那么就可以是一个Boolean类型的变量,false就是锁空闲等待获取,true就是已经被锁,为了在获取锁的时候保证原子性,可以使用AtomicBoolean.这样就实现了不可重入锁,那如果想重入呢,就不能用非错即对的Boolean类型了,可以用integer类型。相应的,为了保证获取锁的原子性,可以使用AtomicInteger。而AtomicInteger是一个比较复杂的工具类,而这里只需要用到一个原创 2020-06-02 11:52:51 · 277 阅读 · 0 评论 -
浮点类型精度丢失和BigDecimal
精度丢失在工作中经常会遇到数值精度问题,比如说使用float或者double的时候,可能会有精度丢失问题,下面来总结一下吧。为了引出问题,先看一个例子(Java代码): public static void main(String[] args) { float f = 2.25f; double d = (double) f; System.out.println(d); f = 2.2f; d = (doubl原创 2020-05-27 20:33:43 · 611 阅读 · 0 评论 -
java的4种引用类型及应用场景
Java有4种引用类型,分别是强引用,软引用,弱引用和虚引用。强引用强引用是最普通的引用,以原创 2020-05-27 13:44:08 · 1284 阅读 · 0 评论 -
记录一次机器load高
周一的清晨,当我寻着熟悉的节奏坐在工位前,打开一堆工具,准备开始敲我无谓的代码的时候,发现右边黄色的报警闪个不停,点开,又是机器load高的报警消息。刚巧,记起几天前看到的一篇文章里面有个工具,可以更方便的定位load高的线程。抓耳挠腮,翻找半天,诶,找到了:show-busy-java-threads。把文件传到机器上面,然后看半天说明,有了以下的命令:sudo ./show-busy...原创 2019-12-23 15:27:28 · 455 阅读 · 0 评论 -
com/beust/jcommander/ParameterException : Unsupported major.minor version 52.0
起因我把一堆 jar 包引入了某个 Service 工程,然后提交代码,并在 Jenkins 上构建-测试-部署。 结果:构建成功,测试抛异常。异常如下: com/beust/jcommander/ParameterException : Unsupported major.minor version 52.0经过百度一下,典型的用高版本的JDK编译产生的class文件,用低版本的JDK运行原创 2017-12-07 11:25:52 · 992 阅读 · 0 评论 -
使用Java socket简单模拟HTTP服务器
使用Java socket模拟HTTP服务器原创 2016-02-19 15:18:07 · 6404 阅读 · 1 评论 -
Java编程思想(第四版)笔记(一)
闲来无事,重读一遍Java编程思想,有些自己感觉容易忘记的东西,记个笔记。 第2章 一切都是对象 22 基本类型 第3章 操作符 7 关系操作符 16 Java没有sizeof 第4章 控制执行流程 33 逗号操作符 第5章 初始化与清理 2 方法重载 4 this关键字 5 清理终结处理和垃圾回收 7 初始化顺序 第6章 访问权限控制原创 2016-05-25 11:53:48 · 1507 阅读 · 0 评论 -
Java编程思想(第四版)笔记(二)
第7章 复用类7.6 protected关键字指明“就类用户而言,这是private的,但对于任何继承于此类或其他任何位于同一个包内的类来说,它却是可以访问的。”尽管可以创建protected域,但是最好的方式还是把域保持为private;你应该一直保留“更改底层实现”的权利,然后通过protected方法来控制类的继承者的访问权限。7.7 向上转型由导出类转型成基类(由子类转原创 2016-05-26 11:04:09 · 552 阅读 · 0 评论 -
Java编程思想(第四版)笔记(三)
第9章 接口“确认接口是理想选择,因而应该总是选择接口而不是具体的类。”这其实是一种引诱。当然,对于创建类,几乎在任何时刻,都可以替代为创建一个接口和一个工厂。许多人都掉进了这种诱惑的陷阱,只要有可能就去创建接口和工厂。这种逻辑看起来好像是因为需要使用不同的具体实现,因此总是应该添加这种抽象性。这实际上已经变成了一种草率的设计优化。任何抽象性都应该是应真正的需求而产生的。当必需时,你应原创 2016-06-01 15:29:19 · 599 阅读 · 0 评论 -
Java Map浅谈(jdk1.7)
Map是非常常用的一种数据结构,最常用的一些Map实现如下图所示:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。原创 2016-10-28 17:19:03 · 2967 阅读 · 0 评论 -
Java List浅谈(基于jdk1.7)
List是重要的数据结构之一。最常见也是最重要的3种List实现:ArrayList、Vector、和LinkedList,它们的类图如下所示:原创 2016-11-15 13:35:55 · 6757 阅读 · 0 评论 -
关于java 数组 forEach() 以及 remove 的使用
首先,对于Java中数组的遍历,目前有三种方式,for循环、Iterator迭代和forEach遍历,下面就来说说这几种循环方式。由于本文只关心数组,所以下面都以ArrayList为例(基于 jdk 1.7 )。原创 2017-11-07 18:15:15 · 4426 阅读 · 2 评论