Java学习笔记
文章平均质量分 79
添仔哥哥
成长,就是一个不断地觉得以前的自己是一个傻逼的过程。
展开
-
Effective_Java_Index
基于《Effective Java 第三版》的读书笔记创建和销毁对象第1条:用静态工厂方法代替构造器第2条:遇到多个构造参数时要考虑用构建器第3条:用私有构造器或者枚举类型强化Singleton属性第4条:通过私有构造器强化不可实例化的能力第5条:优先考虑依赖注入来引用资源第6条:避免创建不必要的对象第7条:消除过期的对象引用第8条:避免使用终结方法第10条:try-with...原创 2019-04-01 12:31:57 · 210 阅读 · 0 评论 -
Java_Index
jdk版本特性Ubuntu安装JDKJDK各版本特性介绍jdk命令 java -D 配置系统属性Java 基础知识Java编程的逻辑Java环境变量配置以及classpath详解8张图理解Java理解Java Integer的缓存策略Java泛型Java 字符串拼接效率比较Java注解(Annotation)详解(一)——概述及JDK自带注解Java注解(Annota...原创 2019-04-01 12:22:54 · 1323 阅读 · 0 评论 -
Effective Java:只针对异常的情况才使用异常
1. 异常应该只用于异常的情况下,不要将它们用于普通的控制流不要乱用try-catch代码块,当真正需要的时候才使用。例如调用一个方法A,方法A会抛出一个XXXException,这个时候如果需要捕获这个异常来进行一些处理,那么就调用方法A放到try-catch块中。不要使用try-catch代码块来忽略异常。例如方法A会抛出异常,但是为了代码能正常运行,使用try-catch代码块捕获,然后忽略掉异常。如果确实是有这种场景诉求,那么一定要记录好日志。2. 设计良好的API不应该强迫它的客户端为了原创 2020-09-18 23:47:55 · 442 阅读 · 0 评论 -
Effective Java:用静态工厂方法代替构造器
1 静态工厂方法与构造器构造器就是类的构造方法,名称与类名相同,只是方法参数不一样;静态工厂方法就是一个返回类的实例的静态方法,例如Boolean类中的valueOf方法: public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); }2 静态工厂方法的优势2.1 优势一:工厂...原创 2019-03-31 19:58:24 · 560 阅读 · 0 评论 -
Effective Java:遇到多个构造器参数时要考虑使用构建器
1 如何创建有大量可选参数的类实例?1.1 重叠构造器(telescoping constructor)模式public class Student { /*必填参数*/ private String name; private int age; /*可选参数*/ private String sex; private String grade;...原创 2019-03-31 20:00:16 · 330 阅读 · 0 评论 -
Java单元测试工具:JUnit4(四)——JUnit测试套件使用及参数化设置
这篇笔记记录JUnit测试套件的使用,即批量运行测试类;以及JUnit中的参数化设置。 @RunWith 当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解所指明的运行器(runner)来运行测试,而不是JUnit默认的运行器。原创 2016-01-30 23:11:36 · 13699 阅读 · 2 评论 -
Java单元测试工具:JUnit4(三)——JUnit详解之运行流程及常用注解
(三)运行流程及常用注解 这篇笔记记录JUnit测试类运行时,类中方法的运行顺序;以及JUnit中常用的注解。原创 2016-01-30 22:18:41 · 10151 阅读 · 0 评论 -
Effective Java:返回零长度的数组或者集合,而不是null
1 不建议的写法如下代码例子: private final List<Cheese> cheesesInStock = ...; public static List<Cheese> getCheeses(){ return cheesesInStock.isEmpty() ? null : new ArrayList<>(c...原创 2019-03-31 20:02:13 · 550 阅读 · 0 评论 -
Effective Java:用enum代替int常量
待完善…1 简单概述1.1 int枚举模式public class Contant { public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2;}1.2 Stri...原创 2019-03-31 20:04:25 · 431 阅读 · 0 评论 -
Effective Java:了解和使用类库
1.标准类库的优点标准类库往往是经过大神们精心设计实现测试的,可以充分借助大神们的经验。借助已有的类库,可以把人的精力放在业务问题上而不是不相关的底层细节上。标准类库的性能往往随着新版本的推出而提高让自己的代码跟融入主流,别人都jdk1.8,1.9,而你还是jdk1.4就不好了2.建议了解每个重要的发行版本,因为会有很多新的特性加入到类库中,所以与这些新特性保持同步是值得的每个...原创 2019-03-31 20:05:54 · 186 阅读 · 0 评论 -
Effective Java:坚持使用Override注解
1.简介Override注解只能用在方法声明中,表示被注解的方法声明覆盖了超类型中的一个声明。2.使用Override注解的好处当你想要覆盖父类的方法时,却因为人为原因将覆盖写成了重载,如果在方法上标注了Override注解,那么编译器就会在编译期间帮助你发现这个错误,而非在程序运行时出现非法的错误。例如,以下例子没有覆盖Object类的equals方法,而是重载了,所以出现不合预期的错误...原创 2019-03-31 20:07:21 · 343 阅读 · 0 评论 -
Java代理示例:静态代理、jdk动态代理、cglib动态代理
1 接口及其实现public interface Greeting { void sayHello(String name);}---------------------------------------------public class GreetingImpl implements Greeting { @Override public void sayHe...原创 2019-04-05 21:49:35 · 300 阅读 · 0 评论 -
Effective Java:通过私有构造器强化不可实例化的能力
1 工具类(utility class)只包含静态方法和静态域的类,例如:java.lang.Math、java.lang.Arrays等,把基本类型的值或者数据类型上的相关方法组织起来java.util.Collections等,把实现特定接口的对象上的静态方法,包括工厂方法组织起来2 显示声明私有构造器这样的工具类,对它们实例化没有任何意义,因此可以显示声明一个私有的构造函数...原创 2019-04-02 23:04:48 · 213 阅读 · 0 评论 -
JDK各版本特性介绍
Java 9Java9 新特性 详解目录结构repl工具 jShell命令模块化多版本兼容jar包接口方法的改进(在接口中 jdk7 只能声明全名常量和抽象方法 jdk8 添加了静态方法和默认方法 jdk9添加了私有方法)钻石操作符升级 可以有{}异常处理try升级下划线标识符命名的限制 _ 不允许了String底层存储结构的变更(char数组变成byte字节数组)增强了S...原创 2019-04-02 23:10:01 · 1606 阅读 · 0 评论 -
Effective Java:使可变性最小化
1.什么是不可变类需要的所有参数必须在实例化的时候都传进去。对象中所有信息在对象的整个生命周期中都保持不变。2.使类不可变的原则不要提供任何修改对象状态的方法。保证类不会被继承。使所有的域都是final类型的。使所有的域都是私有类型的。确保对于任何可变组件的互斥性。 即,确保在该类的外部不会获取到该类中可变对象的引用。比如下面这个例子:public class MyObj...转载 2019-05-10 23:11:32 · 334 阅读 · 0 评论 -
Java单元测试工具:JUnit4(二)——JUnit使用详解
这篇笔记记录JUnit使用的一些注意点,或者说约定俗成的地方;以及介绍了导致测试失败的两种情况。1.JUnit使用的最佳实践 ①测试方法上必须使用@Test进行修饰 ②测试方法必须使用public void 进行修饰,不能带任何的参数 ③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开 ④测试类所在的包名应该和被测试类所在的包名保持一致 ⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖原创 2016-01-30 21:01:10 · 32950 阅读 · 4 评论 -
Java单元测试工具:JUnit4(一)——概述及简单例子
1.概述1.1 什么是JUnit ①JUnit是用于编写可复用测试集的简单框架,是xUnit的一个子集。xUnit是一套基于测试驱动开发的测试框架,有PythonUnit、CppUnit、JUnit等。 ②Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。 ③多数Java的开发环境都已经集成了JUnit作为单元测试的工具,比如Eclipse。原创 2016-01-30 19:54:41 · 33783 阅读 · 3 评论 -
Google Java Style 编程风格指南 中文版
本文档为Google Java编程规范的完整定义。依照此规范编写的Java源码文件可以被称为Google Style。 和其他编程规范指南一样,规范不仅包括了代码的结构美学,也包括了其他一些业界约定俗成的公约和普遍采用的标准。本文档中的规范基本都是业界已经达成共识的标准,我们尽量避免去定义那些还存在争议的地方。转载 2016-02-29 09:29:39 · 5778 阅读 · 0 评论 -
Java 字符串拼接效率比较
字符串拼接的三种方法① 加号 ② concat方法 ③ StringBuilder(或StringBuffer)的append方法2 程序例子package原创 2016-04-26 23:33:13 · 31050 阅读 · 0 评论 -
Java读写XML文件(DOM4J包)
Java读写XML文件。使用DOM4J.jar包原创 2016-04-30 01:09:22 · 2533 阅读 · 0 评论 -
Java注解(Annotation)详解(四)——注解反射生成SQL语句
(四)注解反射生成SQL语句1.要求 ①使用注解来代替Hibernate,实现持久层数据访问。 ②使用注解来对每个字段或字段的组合条件进行检索,并打印出SQL。 ③数据为一张用户表,字段包括:用户ID、用户名、昵称、年龄、性别、所在城市、邮箱、手机号。原创 2015-12-18 14:31:03 · 8216 阅读 · 5 评论 -
Java注解(Annotation)详解(二)——自定义注解
1.使用@interface关键字定义注解,注意关键字的位置2.成员以无参数无异常的方式声明,注意区别一般类成员变量的声明3.可以使用default为成员指定一个默认值,如上所示4.成员类型是受限的,合法的类型包括原始类型以及String、Class、Annotation、Enumeration (JAVA的基本数据类型有8种:byte(字节)、short(短整型)、int(整数型)、long(长整型)、float(单精度浮点数类型)、double(双精度浮点数类型)、char(字符类型)、boole原创 2015-10-30 11:17:23 · 7269 阅读 · 3 评论 -
Java注解(Annotation)详解(三)——解析注解
(三)解析注解原创 2015-10-30 15:30:11 · 8363 阅读 · 2 评论 -
Java 多线程(九)——ThreadLocal类
ThreadLocal类包装线程不安全的集合线程安全的集合类原创 2016-05-02 18:27:13 · 1098 阅读 · 1 评论 -
Java 多线程(八)——实现简单线程池
实现简单线程池原创 2016-05-02 18:25:53 · 1130 阅读 · 0 评论 -
Java 多线程(七)——线程组与线程池
Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理。对线程组的控管理,即同时控制线程组里面的这一批线程。原创 2016-05-02 15:17:34 · 12865 阅读 · 2 评论 -
Java 多线程(六)——进程间通信与线程间通信
线程间通信:由于多线程共享地址空间和数据空间,所以多个线程间的通信是一个线程的数据可以直接提供给其他线程使用,而不必通过操作系统(也就是内核的调度)。 进程的通信机制主要有:管道、有名管道、消息队列、信号量、共享空间、信号、套接字。转载 2016-03-16 22:19:21 · 2637 阅读 · 0 评论 -
Java 多线程(五)——线程通信(共享内存、管道流、wait()、notify()等)
线程间通信方式1 共享内存2 管道流Java中实现线程通信的方法1 waitnotifynotifyAll2 使用Condeition控制3 使用阻塞队列BlockingQueue原创 2016-03-16 22:13:27 · 4991 阅读 · 1 评论 -
Java 多线程(四)——线程同步(synchronized、ReentrantLock)
在多线程编程里面,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性。 synchronized关键字和Lock对象。原创 2016-03-09 18:28:56 · 923 阅读 · 0 评论 -
Java 多线程(三)——线程的生命周期
线程的生命周期:新建、就绪、执行、阻塞、终止。Java中如何控制线程:sleep(),join(),yield(),setPriority(int)原创 2016-03-04 20:36:34 · 951 阅读 · 0 评论 -
Java 多线程(二)——创建线程(Thread、Runnable、Callable)
采用实现Runnable、Callable接口的方式创建多线程;采用继承Thread类的方式创建多线程;原创 2016-03-04 17:01:18 · 2663 阅读 · 0 评论 -
Java 多线程(一)——多线程概述
平时我们一般编写的程序都是单线程程序,只有一条顺序执行流——程序从main()方法开始执行,一步一步向下执行直到main方法结束。这种情况,如果程序执行某行代码时遇到阻塞,那么程序将会停滞在该处。 多线程的程序区别于单线程,即可以包含多个顺序执行流,多个顺序流之间互不干扰。原创 2016-03-02 21:16:44 · 1220 阅读 · 0 评论 -
Java注解(Annotation)详解(一)——概述及JDK自带注解
(一)注解的概述最近在学习Java注解,看了慕课网的视视频后觉得不错,但我相信一段时间后肯定会忘记,所以做做笔记。1.何为注解? 概念:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。原创 2015-10-30 09:54:21 · 9494 阅读 · 6 评论