随笔分类 - 【java技术总结】
发表于 2023-01-20 10:30阅读次数:2851评论次数:0
摘要:对象数组转列表 Collections.addAll(推荐方式) 如果 jdk 1.5 版本以上,推荐如下方法,且返回的列表对象,可以进行数据的增删改查操作: String[] strings = new String[]{"a", "b", "c"}; List<String> list = ne
阅读全文 »
发表于 2023-01-19 21:30阅读次数:55评论次数:0
摘要:Stream流使用 1.获取Stream流 对于四种数据分别采取不同的获取方式 | 获取方式 | 方法名 | 说明 | | : : | : : | : : | | 单列集合 | default Stream stream() | Collection中的默认方法 | | 双列集合 | 无 | 无法直
阅读全文 »
发表于 2022-11-27 10:52阅读次数:509评论次数:0
摘要:1.使用Collectors.groupingBy(方法引用返回分组属性作为k) 2.使用Collectors.groupingBy(方法引用返回分组属性作为k,Collectors的静态类返回值) 3.使用reduce归并数据,reduce(存储新数据对象类型,新类型初始化,归并到同一个对象中)
阅读全文 »
发表于 2022-11-21 01:25阅读次数:41评论次数:0
摘要:#java中的编解码 ##1.ISO-8859-1 单字节编码 收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。 ##2.gb2312 变长1-2字节 GB2312收录简化汉字及符号、字母、日文假名等共7445个图形字符。 ##3.gbk 变长1-
阅读全文 »
发表于 2022-11-21 01:11阅读次数:1056评论次数:0
摘要:在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同情况下,返回的东西不一样! String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如: byte[] b_gb
阅读全文 »
发表于 2022-11-10 11:57阅读次数:35评论次数:0
摘要:Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: 非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。 设计很差
阅读全文 »
发表于 2022-11-10 10:19阅读次数:14评论次数:0
摘要:Java 8 新增了接口的默认方法。 简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。 我们只需在方法名前面加个 default 关键字即可实现默认方法。 为什么要有这个特性? 首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全
阅读全文 »
发表于 2022-11-10 10:05阅读次数:19评论次数:0
摘要:##Java8 Base64 在Java 8中,Base64编码已经成为Java类库的标准。 Java 8 内置了 Base64 编码的编码器和解码器。 Base64工具类提供了一套静态方法获取下面三种BASE64编解码器: 基本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出
阅读全文 »
发表于 2022-11-10 09:11阅读次数:24评论次数:0
摘要:方法引用通过方法的名字来指向一个方法。 方法引用可以使语言的构造更紧凑简洁,减少冗余代码。 方法引用使用一对冒号 :: 。 下面,我们在 Car 类中定义了 4 个方法作为例子来区分 Java 中 4 种不同方法的引用。 package com.runoob.main; @FunctionalInt
阅读全文 »
发表于 2022-11-09 08:54阅读次数:6评论次数:0
摘要:Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。 Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。 Optional
阅读全文 »
发表于 2022-11-09 08:32阅读次数:19评论次数:0
摘要:lambda表达式相当于对接口的方法重写,传入函数而非值 ##注意: lambda 表达式只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即
阅读全文 »
发表于 2022-11-08 22:15阅读次数:19评论次数:0
摘要:##1.获取一列数的平方,并从小到大、从大到小排序,转化为List List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5); //大到小 List<Integer> list = numbers.stream() .map(i -> i
阅读全文 »
发表于 2022-11-04 12:28阅读次数:1070评论次数:0
摘要:1.List.of()和Arrays.asList()的区别? List.of()不可以插入null,Arrays.asList()可以。 List.of()生成的List不可以修改,Arrays.asList()可以。 List.of()原数组修改不会影响生成数组,Arrays.asList()会
阅读全文 »
发表于 2022-10-26 00:24阅读次数:582评论次数:0
摘要:事务方法必须是public,private、protected、default都会失效。 @Service public class UserService { @Transactional private void add(UserModel userModel) { saveData(userM
阅读全文 »
发表于 2022-10-18 20:46阅读次数:182评论次数:0
摘要:一、线程可见性 Volatile关键字的作用主要有如下两个:1. 线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。2. 顺序一致性:禁止指令重排序。 说到可见性,我们需要先了解一下Java内存模型,Java内存模型如下所示: 线程之间的共享变量存储在主内存中(Main M
阅读全文 »
发表于 2022-10-18 20:30阅读次数:425评论次数:0
摘要:1.无状态 没有公共资源,线程一定安全 2.不可变 公共资源不可变,线程一定安全 3.无修改权限 不提供修改入口,属性私有 4.synchronized同步机制 同步方法和同步代码块,优先使用同步代码块,因为粒度小 5.Lock接口实现类ReentrantLock 显示锁ReentrantLock包
阅读全文 »
发表于 2022-10-14 11:11阅读次数:58评论次数:0
摘要:先说结论:尽量避免使用YYYY,而尽量使用yyyy 因为YYYY对于年份的取值取得是本周所在的年份,如果是跨年周取的是第二年,而yyyy是当天所在年份 代码示例 public static void main(String[] args) throws ParseException { Simple
阅读全文 »
发表于 2022-10-12 20:20阅读次数:23评论次数:0
摘要:1.重入锁和synchronized比较 特征 synchronized reentrantLock 底层原理 JVM实现 JDK实现 性能区别 低->高(JDK5+) 高 锁的释放 自动释放(编译器保证) 手动释放(finally保证) 编码程度 简单 复杂 锁的粒度 读写不区分 读锁、写锁 高级
阅读全文 »
发表于 2022-10-12 17:49阅读次数:15评论次数:0
摘要:1.应用场景 CyclicBarrier应用于多个线程必须同时开始 2.代码 private static CyclicBarrier cyclicBarrier = new CyclicBarrier(5); public static void main(String[] args) { Exe
阅读全文 »
发表于 2022-10-12 17:39阅读次数:8评论次数:0
摘要:1.应用场景 对于多个线程来说,想要设计争抢有限的资源,可以用信号量来解决 2.代码 public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool();
阅读全文 »