
Java
sunday2018
垃圾堆
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java判断集合是否为空
可以使用Apache Common lang工具包中的方法,省去自己写判null和size大小 common lang中方法的源码原创 2022-06-30 14:00:01 · 1277 阅读 · 0 评论 -
JDK8时间操作
JDK8时间操作 JDK8新增了时间操作相关的类,位于java.time包中。 Instant,时间戳 LocalDate,日期 LocalTime,时间 LocalDateTime,日期+时间 ZonedDateTime,包含时区的完整的日期时间 LocalDate操作 获取当前日期: LocalDate.now() ...原创 2022-04-06 06:20:44 · 858 阅读 · 0 评论 -
Java多线程
Java多线程 并发编程的目的是为了让程序运行得更快,但并不是启动的线程越多,程序就运行的越快。 时间片:时间片就是CPU分配给各个线程的时间。单核CPU通过不停地切换线程执行来让我们感觉多个线程是同时执行,时间片一般是几十毫秒。 死锁:线程1和线程2占用了对方需要的资源的锁,互相等待对方释放锁。 volatile volatile保证了共享变量的“可见性”。 可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。 如果一个字段被声明成volatile,JMM模型确保所有线程看到这个变量的值原创 2022-01-14 09:32:33 · 266 阅读 · 0 评论 -
Java类加载
Java类加载 Java类加载的过程: 加载–>链接(验证>准备>解析)–>初始化–>使用–>卸载 加载: 通过类的权限定名获取二进制字节流, 将二进制字节装载到方法区中, 内存中生成对应的class对象 Java的.java源码在编译过后变成.class的字节码文件. 加载的过程就是将.class文件装载到JVM的方法区中, 方法区可以当作是一个JVM虚拟的磁盘, 专门用于存放.class的字节码文件. 在类进行new操作的时候, JVM从方法区中读取字节码文件, 在堆原创 2021-11-27 16:23:58 · 390 阅读 · 0 评论 -
Java类之间的关系
Java类之间的关系 在Java中类和类之间的关系有如下几种: 依赖、关联、聚合、组合、继承、实现 其中的关联, 聚合, 组合需要在语义上作区分, 依赖(Dependence) uses-a, 依赖就是一个类A使用到了另一个类B, 在代码中的表现就是类B作为参数在类A中的某个方法中被使用,或者是类A方法中的局部变量. 关联(Association) 关联可以是单向的,也可以是双向的.在代码中的表现为被关联的类B以类A的字段的形式出现在关联类A中 聚合(Aggregation) 聚合是关联关系的一种特例, 体原创 2021-10-24 18:41:27 · 1050 阅读 · 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 · 390 阅读 · 0 评论 -
Spring IoC容器
IoC容器注入方式 IoC容器的作用:1.管理Java类的创建 2.管理Java类之间的依赖关系 Constructor注入 使用类的构造方法对类的字段进行注入 setter注入 使用set方法对类的字段进行注入 BeanFactory 2种Spring IoC容器类型: BeanFactory和ApplicationContext BeanFactory是基础IoC容器, ApplicationContext继承自BeanFactory, ApplicationContext可以看成是BeanFactor原创 2021-09-16 23:10:18 · 112 阅读 · 0 评论 -
Spring Core(一)
Spring Core Spring的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 · 185 阅读 · 0 评论 -
JPA实体类实例状态
JPA实体类实例的状态 如下图原创 2021-09-06 13:37:00 · 189 阅读 · 0 评论 -
Java引用类型的种类
Java类型 Java的类型分为两类: primitive type和reference type Java引用类型 Java的引用类型如果按照对象的生命周期进行划分,可以分为以下4种 1.FinalReference(强引用) 2.SoftReference(软引用) 3.WeakReference(弱引用) 4.PhantomReference(虚引用) ...原创 2021-09-06 01:41:51 · 194 阅读 · 0 评论 -
序列化(Serialization)
目录 序列化 将一个对象编码成字节流称作对象序列化(serializing) 相反的处理过程称为反序列化(deserializing) 一旦对象被序列化后,它的编码就可以从一台正在运行的虚拟机被传递到另一台虚拟机上,或被存储到磁盘上 1.谨慎实现Serializable接口 一个类的实例只要在声明中加入"implements Serializable", 即可被序列化. 实现Serializable接口的代价是,这个类一旦被发布就大大降低了改变这个类的实现的灵活性 2.考虑使用自定义的序列化形式 3.保护性原创 2021-09-05 01:37:09 · 320 阅读 · 0 评论 -
并发(concurrency)
目录 并发 1.同步访问共享的可变数据 synchronized关键字能够保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块. 2.避免过度同步 3.executor, task和stream优先于线程 4.并发工具优先于wait和notify 5.线程安全性的文档化 6.慎用延迟初始化 7.不要依赖于线程调度器 8.避免使用线程组 ...原创 2021-09-05 01:25:50 · 133 阅读 · 0 评论 -
异常(Exceptions)
目录 异常 一些有效使用异常的指导原则 1.只针对异常的情况才使用异常 不要将异常机制用于普通的控制流 2.对可恢复的情况使用受检异常,对编程错误使用运行时异常 3.避免不必要地使用受检异常 4.优先使用标准的异常 5.抛出与抽象相对应的异常 6.每个方法抛出的异常都要有文档 7.在细节信息中包含能捕获失败的信息 8.尽量保持失败原子性 9.不要忽略异常 ...原创 2021-09-05 01:17:01 · 129 阅读 · 0 评论 -
通用程序设计
目录 通用程序设计 涉及内容: 1.局部变量处理 2.控制结构 3.类库用法 4.各种数据类型用法 5.reflection和native method 1.最小化局部变量的作用域 1.最小化局部变量的作用域,最有力的方法就是在第一次使用它的地方声明. 2.几乎每个局部变量的声明都应该包含一个初始化表达式 如果没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止(try-catch例外). 如果循环后不再需要循环变量的内容, for循环就优先于while循环 2.for-ea原创 2021-09-05 01:00:36 · 165 阅读 · 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 · 267 阅读 · 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 · 136 阅读 · 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 · 131 阅读 · 0 评论 -
接口 和 类
目录 接口和类 1.最小化类和成员的访问权限原创 2021-09-02 07:33:12 · 144 阅读 · 0 评论 -
所有对象的通用方法
目录 通用方法 Object类在Java中是所有类的父类, Object类中的非final修饰的方法可以被子类覆盖(override). 当我们在自己设计类,如果需要覆盖这些Object类中的方法, 就需要遵守通用约定(general contract). 这一章节就是介绍覆盖这些方法时的通用约定, 自己在设计编写一个类的时候如何去覆盖这些Object类中的方法. 1.equals覆盖通用约定 Object类中的默认的equals方法比较的是内存的地址,使用==判断 当类需要比较值相等而不是引用是否相等的时原创 2021-08-30 00:40:13 · 227 阅读 · 0 评论 -
Effective Java个人学习
通过学习Effective Java可以更好地了解和使用JDK的基本类库(java.lang, java.util, java.io…), 同时提升自己代码编写的质量,在自己设计类的时候可以根据一些既定的规范和约定写出更加通用和易于理解的代码. 这是个人对于Effective Java(Second Edition)学习的记录. 下面是对应的目录: 创建和销毁对象 通用方法 类和接口 泛型 枚举和注解 方法 通用编程 异常 并发 序列化 ...原创 2021-08-29 18:55:02 · 225 阅读 · 0 评论 -
创建和销毁对象
创建和销毁对象 1.静态工厂方法代替构造器 在设计类对外提供的实例化方式的时候, 除了定义公有构造方法(public constructor),还可以考虑提供一个公有的静态工厂方法(static factory method). 使用静态工厂方法的好处: 使用静态工厂方法可以提高代码的可读性,通过方法的命名可以描述出类的构造行为.使用你设计的类的人可以通过方法名称很快地知道这个方法是实例化的什么对象. 例如: public class Animal { private String name;原创 2021-08-29 18:38:02 · 862 阅读 · 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 · 12991 阅读 · 0 评论 -
Java对象转XML格式字符串
Java对象转XML格式字符串原创 2021-05-06 15:17:00 · 1242 阅读 · 0 评论 -
Java操作类的私有属性
操作类的私有属性 使用get/set方法 一般类私有属性有提供get/set方法,就使用get/set方法来操作这个类的实例的私有属性. 使用反射 如果类没有提供get/set方法,则使用原创 2021-05-05 11:41:11 · 2674 阅读 · 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 · 294 阅读 · 0 评论 -
使用JDBC进行数据库操作
JDBC What is JDBC JDBC是Java提供的一个访问和操作数据库的接口(或者叫规范),可以在,具体的实现是各个数据库公司(如:Oracle)提供的数据库驱动. JDBC的接口定义可以在JDK提供的包中找到分别是 MySQL的数据库驱动是com.mysql.jdbc.Driver(8.0以下版本) Oracle的数据库驱动是oracle.jdbc.OracleDriver How to use JDBC 以Oracle为例 public static void main(String[] ar原创 2021-04-16 07:19:29 · 222 阅读 · 0 评论