读书笔记
文章平均质量分 90
本专栏主要分享一些读书的总结和心得,会在文章开始介绍笔记来自哪一本书,喜欢的朋友可以去各大平台购买,支持原作者的劳动成果。
珠穆朗玛小王子
又是一个新的开始
展开
-
Effective Java 案例分享(十)
Thread的构造方法只有Runnable类型,所以执行的一定是Thead(Runnable runnable)方法,但是ExecutorService不是,submit重载了两个方法,一个是submit(Runnable),一个是submit(Callable),所以会执行submit(Runnable)。例如上面的代码,当没有参数时,直接在运行时抛出异常是很危险。例如上面的代码,如果参数个数超时3个才会使用可变参数,这种解决方案不是好的办法,但是确实解决了数组内存的问题,所以是否要使用需要谨慎的考虑。原创 2023-08-25 17:03:25 · 157 阅读 · 0 评论 -
Effective Java 案例分享(九)
本章节主要举例了Stream的几种用法。原创 2023-08-18 17:15:56 · 547 阅读 · 0 评论 -
Effective Java 案例分享(八)
Effective Java 案例分享39-45原创 2023-07-28 17:01:33 · 208 阅读 · 0 评论 -
Effective Java 案例分享(六)
本文介绍Effective java 读书笔记 25-30原创 2023-02-28 15:47:03 · 392 阅读 · 0 评论 -
Effective Java 案例分享(五)
19、为继承设计和撰写文档,或者其他有益的方方式随意的继承一个外来的类是非常危险的,所以应当为继承的类设计和撰写文档是非常必要的。一个可继承的类必须描述可重写的方法的内部使用逻辑,以及重写带来的影响;一个可继承的类必须明智的尽可能少的选择哪些属性和方法是protected;测试一个可继承的类,最好找作者以外的人编写子类,最好编写三个子类进行测试;一个可继承的类必须经过充分的测试才能发布使用;一个可继承的类的构造方法里不要使用可重写的方法;一个可继承的类实现了Cloneable或Seriali原创 2022-07-19 17:56:03 · 181 阅读 · 0 评论 -
Effective Java 案例分享(四)
保持类和成员的最小的访问权该建议与设计模式六大原则-最少知道原则,意义相同。这样做的好处:便于开发,测试,优化,使用,理解,修改;如果保持最少知道原则:每一个类或者成员都应该尽可能的不可访问。优先使用private,如果需要外部访问在逐级打开访问权限(protect, public);如果一个顶级类或者接口,只被另外的一个类使用,考虑把这个顶级类定义为使用类的静态内部类,减少该类被访问的可能;所有的成员变量的都应该是private,如果不得不去掉private,那么也应该是package-原创 2022-01-13 11:27:41 · 1404 阅读 · 0 评论 -
Effective Java 案例分享(三)
11、重写Object.equals时,必须重写Object.hashcode;12、总是重写toString方法;13、谨慎的重写clone方法;14、考虑实现Comparable接口原创 2022-01-06 14:23:20 · 1909 阅读 · 0 评论 -
Effective Java 案例分享(二)
7、抛弃废弃的对象引用当一个对象不再使用时,应该将该引用设置为null,避免该对象并不能被JVM回收。文中列出以下几种情况:数组中的对象,使用结束后要把对应的未知的引用设置为null;注意缓存对象的存活时间;注意listener和callback的添加和移除;...原创 2021-12-16 18:10:43 · 1902 阅读 · 0 评论 -
Effective Java 案例分享(一)
考虑使用静态生产方法替代构造方法如果某一个类拥有多个构造方法,且参数各不相同,使用静态的生产方法替代构造方法的好处:过多的构造方法增加了使用者对于类的理解成本,并且很容易产生误解;静态生产方法拥有自己的方法名,可以进一步描述该方法的使用场景和参数意义;静态生产方法封装了内部的实现,便于扩展。例如实现内部的单例,缓存,子类,匿名类,简单工厂等等;缺点:如果构造方法是私有的,仅仅使用静态生产方法,子类不能继承构造方法;如果使用静态方法,需要使用者首先了解静态生产方法的存在,并在所有的静态方法原创 2021-11-19 10:38:31 · 1860 阅读 · 0 评论 -
读书笔记:Java类的加载机制
前言本文内容来源于《深入理解Java虚拟机》,各大电商平台均可购买。正文类加载的时机类加载的整个生命周期:加载 - 验证 - 准备 - 解析 - 初始化 - 使用 - 卸载对于初始化阶段,虚拟机严格规定只有5中情况必须立即对类初始化:遇到new . getstatic、putstatic或invokestattic这4条字节码指令时,如果类没有初始化,则需要先触发其初始化。常见场景:使用new创建对象,读取或设置静态字段(被final修饰,已在编译期把结果放入常量池的静态字段除外)的时候原创 2020-09-04 12:18:47 · 238 阅读 · 0 评论 -
Java虚拟机内存知识整理
前言本篇文章整理一下书中Java虚拟机内存的相关知识。书名:深入理解Java虚拟机。正文运行时数据区域程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。为了线程切换后能回复到正确的执行位置,每条线程都有一条独立的程序计数器,各条线程之间互不影响,独立存储,我们称这类内存区域为线程私有内存。如果线程正在执行的是一个Java方法,这个计数器记录的是正在小hiing的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空。此内存区域是唯一原创 2020-08-14 15:49:02 · 241 阅读 · 0 评论 -
DSL实战:仿Flutter代码布局实战
前言我的第一份IT工作是Web前端,转眼已过去8年,之前在学习Flutter的时候情不自禁想起了当年苦逼的div生活,之后还略微研究了一下JetPack Compose。这两个库都是代码实现GUI,关于JetPack Compose的用法一直颇有争议,有人说在Android上,使用代码布局是技术的倒退,这一点我有一些自己的看法:Android把布局和代码分离,必须说非常有眼光,相比其他平台,例如ios,Android开发者非常幸福。由于开发者对于App的性能要求越来越苛刻,使用XML布局,每次都需要原创 2020-07-23 18:06:15 · 740 阅读 · 0 评论 -
读书笔记:Kotlin自定义DSL语法
本笔记来自第一行代码第三版第13章,作者郭霖,各大平台均可购买。前言DSL的全称时领域特定语言,它是变成语言赋予开发者的一种特殊能力,通过它我们可以编写出一些看似脱离其原始语法结构的代码,从而构建出一种专有的语法结构。在日常开发中,我们使用DSL语言主要在gradle文件中:dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains..原创 2020-07-23 14:20:12 · 813 阅读 · 0 评论 -
读书笔记:WorkManager的使用
本笔记来自第一行代码第三版第13章,作者郭霖,各大平台均可购买。前言WorkManger为了解决开发者需要在后台执行一些耗时性或周期性的独立的任务。WorkManger不属于Android的四大组件,是独立的任务,在应用退出时,仍然可能会执行。正文总结...原创 2020-07-22 12:15:57 · 706 阅读 · 0 评论