Java
花落的速度
whatever is worth doing is worth doing well
展开
-
guava listenablefuture版本号9999.0-empty-to-avoid-conflict-with-guava的原因
maven中引入guava依赖之后发现libraries里出现一个奇怪的listenablefuture:9999.0-empty-to-avoid-conflict-with-guava,这种设计实际上是存在争议的。原创 2020-11-24 14:28:34 · 4543 阅读 · 0 评论 -
《Effective Java》学习笔记9 Prefer try-with-resources to try-finally
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch和各路翻译者们,以及为我提供可参考博文的博主们。 try-with-resources代替try-finally许多资源使用完毕后需要用CLOSE方法手动关闭,例如InputStream、OutputStre...原创 2018-08-01 15:37:54 · 362 阅读 · 3 评论 -
《Effective Java》学习笔记10 Obey the general contract when overriding equals
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch和各路翻译者们,以及为我提供可参考博文的博主们。覆盖equals方法时应遵守通用规约不需要覆盖equals的情景equals方法是Object类自带的基本方法之一,也是一个非常常用的方法。我们覆盖它时应当...原创 2018-08-01 16:32:26 · 371 阅读 · 0 评论 -
《Effective Java》学习笔记11 Always override hashCode when you override equals
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch和各路翻译者们,以及为我提供可参考博文的博主们。重写equals()方法的同时也要重写hashCode()方法必须在每个重写equals()的类中重写Object.hashCode(),否则将违反hashCo...原创 2018-08-08 11:42:20 · 294 阅读 · 0 评论 -
《Effective Java》学习笔记12 Always override toString
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch和各路翻译者们,以及为我提供可参考博文的博主们。推荐重写toString()建议在所有类中都重写toString方法。为什么要重写它虽然在Object.toString()有其默认的实现方法,会返回"...原创 2018-08-08 17:04:16 · 302 阅读 · 0 评论 -
《Effective Java》学习笔记13 Override clone judiciously
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch和各路翻译者们,以及为我提供可参考博文的博主们。谨慎地重新clone()方法Cloneable接口Cloneable接口与其他接口不同,它里面啥都没有,仅仅是为了表示该类可以被克隆。所有单独只有它自己,还...原创 2019-04-12 15:53:02 · 461 阅读 · 0 评论 -
jdk11安装后不自动安装jre的问题
回寝之后我又重新自己从头配置了一遍jdk11##关于jdk11安装后不自动安装jre的问题:虽然安装jdk11之后可以运行java -version查看版本,但还是感觉很奇怪。查了一下,现在的jdk本身也包含jre了,单独再下载一个jre更方便版本管理(推荐稳定版的jre8),但是不下载也不会运行不了Java程序。所以嫌麻烦的话也可以先不用装jre8,等最新版的jre11发布之后直接装...原创 2018-10-21 11:00:05 · 66359 阅读 · 23 评论 -
《Effective Java》学习笔记14 考虑实现Comparable接口
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch和各路翻译者们,以及为我提供可参考博文的博主们。考虑实现Comparable接口Comparable接口{@link Comparable#compareTo(Object)}方法虽然非常常用,但并没有...原创 2019-04-12 16:30:26 · 285 阅读 · 0 评论 -
《Effective Java》学习笔记15--25
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch和各路翻译者们,以及为我提供可参考博文的博主们。复制粘贴改格式好累,这几篇全都给出git地址,大家自己download下来看好了。或者想直接在浏览器上看可以考虑用这个名叫OctoTree的插件。安装教程网上大把,...原创 2019-04-12 17:50:02 · 251 阅读 · 0 评论 -
CAS(Compare and Swap)算法介绍、缺陷和解决思路
问题情景:Java中处理原子操作的Atomic系列类(如AtomicInteger,AtomicDouble等)中,处理同步性问题采用的是CAS算法,看了一下感觉算法貌似有点不对劲,然后就搜了搜网上已有的解决思路汇总如下。鸣谢程序员囧辉,JupiterMouse和水欣分享博文供笔者参考CAS是什么提到同步,第一反应我想到的是synchronized加锁。但是当线程很多并发量很大的时候,...转载 2019-05-11 11:29:26 · 5079 阅读 · 0 评论 -
《Effective Java》学习笔记8 Avoid finalizers and cleaners
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch跟以杨春花为首的译者团队,以及为我提供可参考博文的博主们。避免使用终结方法Java中,GC虽然能够自动处理很多事情,但是比如来自其他编程语言所占资源的回收,是GC难以自动完成的,这时候或许需要借助额外的手段解...原创 2018-08-01 15:22:09 · 366 阅读 · 0 评论 -
Java native method 本地方法简单说明
本文参考了这篇博客,这篇博客和这篇博客,在此鸣谢作者大佬们Java有能力调用其他语言编写的函数or方法,这个通过JNI(Java Native Interfface)实现。使用时,通过native关键字告诉JVM这个方法是在外部定义的。但JVM也不知去哪找这个原生方法,此时需要通过javah命令生成.h文件。示例步骤(c语言为例):javac生成.class文件,比如javac Nat...原创 2018-08-01 15:03:00 · 3254 阅读 · 0 评论 -
java父类指针指向子类的一点理解
学习Java过程中,遇到过一条神奇的语句:People p=new Student("张三");其中,People是Student的父类。首先,这样写是安全的,因为是用较抽象的指向了较具体的实例。即p指向了Student类中,在父类有定义的东西。而Student类比父类多出的则无法使用。其次,上文提及“多出的东西”并没有丢失,仅仅是无法使用,其仍然存在。这时如果有一原创 2017-04-20 17:46:06 · 627 阅读 · 0 评论 -
Java Varargs机制解决不定量参数问题
看Android的EasyPermission开源库时,发现申请不定数目的权限时用到了一个Object... receivers的形参来设置申请权限结果的接收者,从来没见过,就稍微学习了一下怎么个意思。 进入正题。Java编程中,很多时候会遇到参数个数不定的情况,比如命令行传参数,比如上面说的EasyPermission运行时权限。这种情况难以用重载满足不定个数实参的需求,传统的处理...原创 2018-07-10 18:23:12 · 1942 阅读 · 0 评论 -
《Effective Java》学习笔记1 Consider static factory methods instead of constructors
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错&运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch跟以杨春花为首的译者团队。 静态工厂方法代替构造器写在前面,并不是说从今以后舍弃构造方法,一律静态工厂,这两者各有千秋,应仔细理解其各自优势。静态工厂方法与构造器相比,优势在于: 1....原创 2018-07-16 02:06:32 · 260 阅读 · 0 评论 -
《Effective Java》学习笔记2 Consider a builder when faced with many constructor parameters
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错&运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch跟以杨春花为首的译者团队。 遇到多个构造器参数时要考虑用构建器 一般当我们需要多个可选参数时,会这样做:public class BadNutritionFacts { private...原创 2018-07-16 15:37:38 · 255 阅读 · 0 评论 -
《Effective Java》学习笔记3 Enforce the singleton property with a private constructor or an enum
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch跟以杨春花为首的译者团队,以及为我提供可参考博文的博主们。用私有构造器或者枚举类型强化Singleton属性 单例Singleton一般被用来表示程序中本质上唯一的实例。单例的测试有些困难,因为不能用模拟实现...原创 2018-08-01 10:08:29 · 289 阅读 · 0 评论 -
《Effective Java》学习笔记4 Enforce noninstantiability with a private constructor
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch跟以杨春花为首的译者团队。 通过私有构造器强化不可实例化的能力 很多情况下我们需要整个工具类出来以方便我们编程,比如Android中,为了防止使用Toast忘记show()一下,会把完整的Toast.make...原创 2018-08-01 10:29:25 · 476 阅读 · 0 评论 -
《Effective Java》学习笔记5 Prefer dependency injection to hardwiring resources
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch跟以杨春花为首的译者团队,以及为我提供可参考博文的博主们。另外,本条目是《Effective Java 3rd Edition》中的新条目,此后笔记多基于新一些的第三版。用依赖注入代替硬编码硬编码首先说明...原创 2018-08-01 10:52:40 · 553 阅读 · 0 评论 -
《Effective Java》学习笔记6 Avoid creating unnecessary objects
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch跟以杨春花为首的译者团队,以及为我提供可参考博文的博主们。避免创建不必要的对象很容易理解的一条,无论是环保还是编程,重用都可以节省开销,降低成本,提高效率。所以能够重用已创建的实例时,就不用再重新new一个出...原创 2018-08-01 11:14:09 · 342 阅读 · 0 评论 -
《Effective Java》学习笔记7 Eliminate obsolete object references
本栏是博主根据如题教材进行Java进阶时所记的笔记,包括对原著的概括、理解,教材代码的报错和运行情况。十分建议看过原著遇到费解地方再来参考或与博主讨论。致敬作者Joshua Bloch跟以杨春花为首的译者团队,以及为我提供可参考博文的博主们。消除过期对象引用相较C或者C艹这种需要手动回收资源的语音,Java的GC(Gabage Collector)帮我们偷了个大懒,对象用完之后会被GC自动...原创 2018-08-01 13:58:06 · 541 阅读 · 0 评论 -
内部类,匿名内部类能够使用外部成员的原因
内部类,匿名内部类中保留了对外部类的一个引用,如果引用变量时在内部类中找不到这个变量,则会把调用传给这个引用到外部类去调用。因此我们可以在其中调用外部变量和方法原创 2017-04-20 17:39:48 · 459 阅读 · 0 评论