![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
sunday2018
垃圾堆
展开
-
Java判断集合是否为空
可以使用Apache Common lang工具包中的方法,省去自己写判null和size大小common lang中方法的源码原创 2022-06-30 14:00:01 · 1200 阅读 · 0 评论 -
JDK8时间操作
JDK8时间操作JDK8新增了时间操作相关的类,位于java.time包中。Instant,时间戳LocalDate,日期LocalTime,时间LocalDateTime,日期+时间ZonedDateTime,包含时区的完整的日期时间LocalDate操作获取当前日期: LocalDate.now()...原创 2022-04-06 06:20:44 · 759 阅读 · 0 评论 -
Java多线程
Java多线程并发编程的目的是为了让程序运行得更快,但并不是启动的线程越多,程序就运行的越快。时间片:时间片就是CPU分配给各个线程的时间。单核CPU通过不停地切换线程执行来让我们感觉多个线程是同时执行,时间片一般是几十毫秒。死锁:线程1和线程2占用了对方需要的资源的锁,互相等待对方释放锁。volatilevolatile保证了共享变量的“可见性”。可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果一个字段被声明成volatile,JMM模型确保所有线程看到这个变量的值原创 2022-01-14 09:32:33 · 223 阅读 · 0 评论 -
Java类加载
Java类加载Java类加载的过程:加载–>链接(验证>准备>解析)–>初始化–>使用–>卸载加载: 通过类的权限定名获取二进制字节流, 将二进制字节装载到方法区中, 内存中生成对应的class对象Java的.java源码在编译过后变成.class的字节码文件.加载的过程就是将.class文件装载到JVM的方法区中, 方法区可以当作是一个JVM虚拟的磁盘, 专门用于存放.class的字节码文件.在类进行new操作的时候, JVM从方法区中读取字节码文件, 在堆原创 2021-11-27 16:23:58 · 353 阅读 · 0 评论 -
Java类之间的关系
Java类之间的关系在Java中类和类之间的关系有如下几种:依赖、关联、聚合、组合、继承、实现其中的关联, 聚合, 组合需要在语义上作区分,依赖(Dependence)uses-a, 依赖就是一个类A使用到了另一个类B, 在代码中的表现就是类B作为参数在类A中的某个方法中被使用,或者是类A方法中的局部变量.关联(Association)关联可以是单向的,也可以是双向的.在代码中的表现为被关联的类B以类A的字段的形式出现在关联类A中聚合(Aggregation)聚合是关联关系的一种特例, 体原创 2021-10-24 18:41:27 · 961 阅读 · 0 评论 -
Java System.getProperties()方法
Java System.getProperties()方法System.getProperty()ehcache的配置文件中默认的临时文件路径是"java.io.tmpdir"如果需要获得具体的路径可以使用java的方法输出查看// 查看java.io.tmpdir的路径, 不同的环境路径会不一样System.getProperty("java.io.tmpdir");System.getProperties()如果需要查看其它属性可以使用System.getProperties()查看所有原创 2021-09-23 15:58:25 · 272 阅读 · 0 评论 -
Spring IoC容器
IoC容器注入方式IoC容器的作用:1.管理Java类的创建 2.管理Java类之间的依赖关系Constructor注入使用类的构造方法对类的字段进行注入setter注入使用set方法对类的字段进行注入BeanFactory2种Spring IoC容器类型: BeanFactory和ApplicationContextBeanFactory是基础IoC容器, ApplicationContext继承自BeanFactory,ApplicationContext可以看成是BeanFactor原创 2021-09-16 23:10:18 · 72 阅读 · 0 评论 -
Spring Core(一)
Spring CoreSpring的Core主要包含: IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP.其中IoC Container和AOP是非常重要的两个模块.IoC Container概览org.springframework.beans和org.springframework.context这两个包是Spring容器的基础.bean的解释:在Sprin原创 2021-09-16 17:00:18 · 129 阅读 · 0 评论 -
JPA实体类实例状态
JPA实体类实例的状态如下图原创 2021-09-06 13:37:00 · 137 阅读 · 0 评论 -
Java引用类型的种类
Java类型Java的类型分为两类: primitive type和reference typeJava引用类型Java的引用类型如果按照对象的生命周期进行划分,可以分为以下4种1.FinalReference(强引用)2.SoftReference(软引用)3.WeakReference(弱引用)4.PhantomReference(虚引用)...原创 2021-09-06 01:41:51 · 147 阅读 · 0 评论 -
序列化(Serialization)
目录序列化将一个对象编码成字节流称作对象序列化(serializing)相反的处理过程称为反序列化(deserializing)一旦对象被序列化后,它的编码就可以从一台正在运行的虚拟机被传递到另一台虚拟机上,或被存储到磁盘上1.谨慎实现Serializable接口一个类的实例只要在声明中加入"implements Serializable", 即可被序列化.实现Serializable接口的代价是,这个类一旦被发布就大大降低了改变这个类的实现的灵活性2.考虑使用自定义的序列化形式3.保护性原创 2021-09-05 01:37:09 · 224 阅读 · 0 评论 -
并发(concurrency)
目录并发1.同步访问共享的可变数据synchronized关键字能够保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块.2.避免过度同步3.executor, task和stream优先于线程4.并发工具优先于wait和notify5.线程安全性的文档化6.慎用延迟初始化7.不要依赖于线程调度器8.避免使用线程组...原创 2021-09-05 01:25:50 · 88 阅读 · 0 评论 -
异常(Exceptions)
目录异常一些有效使用异常的指导原则1.只针对异常的情况才使用异常不要将异常机制用于普通的控制流2.对可恢复的情况使用受检异常,对编程错误使用运行时异常3.避免不必要地使用受检异常4.优先使用标准的异常5.抛出与抽象相对应的异常6.每个方法抛出的异常都要有文档7.在细节信息中包含能捕获失败的信息8.尽量保持失败原子性9.不要忽略异常...原创 2021-09-05 01:17:01 · 86 阅读 · 0 评论 -
通用程序设计
目录通用程序设计涉及内容:1.局部变量处理2.控制结构3.类库用法4.各种数据类型用法5.reflection和native method1.最小化局部变量的作用域1.最小化局部变量的作用域,最有力的方法就是在第一次使用它的地方声明.2.几乎每个局部变量的声明都应该包含一个初始化表达式如果没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止(try-catch例外).如果循环后不再需要循环变量的内容, for循环就优先于while循环2.for-ea原创 2021-09-05 01:00:36 · 120 阅读 · 0 评论 -
方法(Methods)
目录方法1.如何处理参数,返回值2.如何设计方法签名3.如何为方法编写文档设计方法的标准:可用性,健壮性和灵活性1.检查参数的有效性在方法的开头检查参数的有效性public BigInteger mod(BigInteger m) { // 参数校验 if (m.signum() <= 0) { throw new ArithmeticException("Modulus <= 0:" + m); } // ...}对于非公有原创 2021-09-04 19:56:36 · 216 阅读 · 0 评论 -
枚举和注解
目录枚举和注解1.用enum代替int常量在一些项目的代码中经常会看到用数字去表示不同类型的代码// 例如,使用数字0, 1表示客户等级public static final int NORMAL = 0;public static final int VIP = 1;// 或者用数字0, 1表示是和否等等...这种方法称为int枚举模式, 此外还有这种模式的变体就是String枚举模式,用字母A, B, C等表示不同的类型.这种方式虽然简单,但是缺少约束,例如下面的方法// clas原创 2021-09-04 13:32:45 · 88 阅读 · 0 评论 -
泛 型(Generics)
目录泛型JDK1.5版本加入了泛型这个新特性.1.不要使用原生态类型一些基本概念声明了一个或多个类型参数的类或接口就是泛型示例:// List<E> 读作 list of E// List<String> 读作 list of String// List<E>的原生态类型就是// 使用泛型对集合中元素进行约束List<String> ls1 = new ArrayList<>();// 原生态类型不要使用List ls1原创 2021-09-04 10:46:53 · 90 阅读 · 0 评论 -
接口 和 类
目录接口和类1.最小化类和成员的访问权限原创 2021-09-02 07:33:12 · 88 阅读 · 0 评论 -
所有对象的通用方法
目录通用方法Object类在Java中是所有类的父类, Object类中的非final修饰的方法可以被子类覆盖(override). 当我们在自己设计类,如果需要覆盖这些Object类中的方法, 就需要遵守通用约定(general contract).这一章节就是介绍覆盖这些方法时的通用约定, 自己在设计编写一个类的时候如何去覆盖这些Object类中的方法.1.equals覆盖通用约定Object类中的默认的equals方法比较的是内存的地址,使用==判断当类需要比较值相等而不是引用是否相等的时原创 2021-08-30 00:40:13 · 177 阅读 · 0 评论 -
Effective Java个人学习
通过学习Effective Java可以更好地了解和使用JDK的基本类库(java.lang, java.util, java.io…), 同时提升自己代码编写的质量,在自己设计类的时候可以根据一些既定的规范和约定写出更加通用和易于理解的代码.这是个人对于Effective Java(Second Edition)学习的记录.下面是对应的目录:创建和销毁对象通用方法类和接口泛型枚举和注解方法通用编程异常并发序列化...原创 2021-08-29 18:55:02 · 163 阅读 · 0 评论 -
创建和销毁对象
创建和销毁对象1.静态工厂方法代替构造器在设计类对外提供的实例化方式的时候, 除了定义公有构造方法(public constructor),还可以考虑提供一个公有的静态工厂方法(static factory method).使用静态工厂方法的好处:使用静态工厂方法可以提高代码的可读性,通过方法的命名可以描述出类的构造行为.使用你设计的类的人可以通过方法名称很快地知道这个方法是实例化的什么对象.例如:public class Animal { private String name;原创 2021-08-29 18:38:02 · 697 阅读 · 0 评论 -
Java Integer[]和int[]互相转换
Integer[]和int[]互转JDK8之前可以使用Apache Commons Lang3包中的工具类进行转换// int[] --> Integer[]int[] arr = {1, 2, 3, 4, 5, 6, 8, 0};Integer[] integers = ArrayUtils.toObject(arr);// Integer[] --> int[]int[] ints = ArrayUtils.toPrimitive(integers);同理,其它基本类型的数原创 2021-08-22 23:53:47 · 12381 阅读 · 0 评论 -
Java对象转XML格式字符串
Java对象转XML格式字符串原创 2021-05-06 15:17:00 · 1128 阅读 · 0 评论 -
Java操作类的私有属性
操作类的私有属性使用get/set方法一般类私有属性有提供get/set方法,就使用get/set方法来操作这个类的实例的私有属性.使用反射如果类没有提供get/set方法,则使用原创 2021-05-05 11:41:11 · 2490 阅读 · 0 评论 -
使用Map对字符串中的字符计数
使用Map对字符串中的字符计数代码如下:public class Test { public static void main(String[] args) { String str = "abcd1234eeefffasdbouhnllzxxxehyaweghxx7235650egepiikmngyuijbgwe"; Map<Character, Integer> map = new HashMap<>(); for (原创 2021-05-05 10:42:20 · 232 阅读 · 0 评论 -
使用JDBC进行数据库操作
JDBCWhat is JDBCJDBC是Java提供的一个访问和操作数据库的接口(或者叫规范),可以在,具体的实现是各个数据库公司(如:Oracle)提供的数据库驱动.JDBC的接口定义可以在JDK提供的包中找到分别是MySQL的数据库驱动是com.mysql.jdbc.Driver(8.0以下版本)Oracle的数据库驱动是oracle.jdbc.OracleDriverHow to use JDBC以Oracle为例public static void main(String[] ar原创 2021-04-16 07:19:29 · 183 阅读 · 0 评论