JDK
文章平均质量分 86
JDK
风尘博客
Good good study , day day up !
展开
-
【代码优化】List.remove() 剖析
一、犯错经历1.1 故事背景最近有个需求大致的背景类似:我已经通过一系列的操作拿到一批学生的考试成绩数据,现在需要筛选成绩大于 95 分的学生名单。善于写 bug 的我,三下五除二完成了代码的编写:@Testpublic void shouldCompile() { for (int i = 0; i < studentDomains.size(); i++) { if (studentDomains.get(i).getScore() < 95.0) {原创 2021-12-14 09:00:00 · 558 阅读 · 1 评论 -
【JDK】分析 String str=““ 与 new String()
一、基础概念为了讲清楚他们的差异,这里先介绍几个概念。1.1 常量池所谓常量池:顾名思义就是用来存放一些常量的。该常量是在编译期被确定,并被保存在已编译的.class文件中,其中包括了类,方法,接口等包含的数值常量,字符常量和字符串常量。1.2 字符串常量池在常量池中,有个专门用来存储字符串常量的,称之为字符串常量池。当我们需要使用字符串时,首先会在该字符串常量中查找是否存在该字符串,若存在则直接进行使用;若不存在,则会新建一个对应的字符串,并保存在该字符串常量池中。1.3 在编译期间创建原创 2021-09-18 07:01:47 · 141 阅读 · 0 评论 -
Java 泛型详解:泛型类、泛型接口和泛型方法
Java 泛型一、概述Java 泛型(generics)是 JDK 1.5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。1.1 什么是泛型?泛型,即参数化类型。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化原创 2020-07-05 06:06:18 · 3249 阅读 · 1 评论 -
正则表达式全解析
正则表达式定义了字符串的模式,可以用来搜索、编辑或处理文本。一、正则基础知识点1.1 元字符元字符是构造正则表达式的一种基本元素。几个常用的元字符:元字符说明.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任意的空白符\d匹配数字\b匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结束1.2 重复限定符正则表达式中一些重复限定符,把重复部分用合适的限定符替代。语法说明.原创 2020-06-23 14:20:03 · 5663 阅读 · 0 评论 -
Java 科学计算之 BigDecimal 全集
一、BigDecimal的产生背景首先我们先来看如下代码示例:@Testpublic void countDemo() { logger.info("result:{}", 0.06 + 0.01); logger.info("result:{}", 1.0 - 0.42); logger.info("result:{}", 4.015 * 100); logger.info("result:{}", 303.1 / 1000);}结果如下result:0.06原创 2020-06-17 11:32:14 · 637 阅读 · 0 评论 -
Java 坐标系转换工具
文章目录一、添加所需依赖二、自定义日志注解 `WebLog`三、配置 AOP 切面四、测试及使用4.1 建立启动类4.2 新建controller测试4.3 启动项目,测试五、扩展5.1 指定环境下该注解可用5.2 多切面指定优先级5.3 源码地址之前分享过SpringBoot 配置 AOP 记录日志 可以通过切面的方式打印控制器层的日志,但是可能存在以下问题:不够灵活,由于是以所有 C...原创 2019-06-11 18:44:04 · 1331 阅读 · 0 评论 -
Java 获取本地IP地址和主机名
拿到本机 IP不是一件困难的事,但是拿到正确的就比较难了。一、一般方式【菜鸟教程】中直接通过 java.net.InetAddress类获取,如下:import java.net.InetAddress; public class Main { public static void main(String[] args) throws Exception { InetAddress addr = InetAddress.getLocalHost(); Sy.原创 2020-06-13 14:56:12 · 2411 阅读 · 0 评论 -
JDK 1.8 之 Map.merge()
背景Map 中ConcurrentHashMap是线程安全的,但不是所有操作都是,例如get()之后再put()就不是了,这时使用merge()确保没有更新会丢失。因为Map.merge()意味着我们可以原子地执行插入或更新操作,它是线程安全的。一、源码解析default V merge(K key, V value, BiFunction<? super V, ? super V,...原创 2019-10-09 21:33:43 · 693 阅读 · 0 评论