Keep and carry on.
1
2
List<String> list = new ArrayList<>();
Long[] item = list.toArray(new Long[0]);

List<String>直接以toArray的方式转换Long数组是错误的,运行后报错:

1
Exception in thread "main" java.lang.ArrayStoreException

查看java.util.List.toArray(T[])方法,注释中明确写到:

@throws ArrayStoreException if the runtime type of the specified array is not a supertype of the runtime type of every element in this list 如果指定数组的运行时类型不是此列表中每个元素的运行时类型的超类型

明显Long类型不是String类型的超类。

可以通过下面的方式实现

1
2
List<String> stringList = Arrays.asList("1", "2", "3");
Long[] item = list.stream().map(Long::valueOf).toArray(Long[]::new);
Read More

背景描述:SpringBoot项目构建打包生成的jar包,在资源文件夹下有个普通txt文件,路径:/templates/content.txt

方式一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
File file = new File(ResourceUtils.getURL("classpath:").getPath());
File templateFile = new File(file, "/templates/content.txt");
BufferedReader reader = null;
StringBuffer sbf = new StringBuffer();
try {
reader = new BufferedReader(new FileReader(file));
String tempStr;
while ((tempStr = reader.readLine()) != null) {
sbf.append(tempStr);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return sbf.toString();
Read More

Add Maven Dependency

1
2
3
4
5
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>

Image File Convert Base64 String

1
2
byte[] fileContent = FileUtils.readFileToByteArray(new File(filePath));
String encodedString = Base64.getEncoder().encodeToString(fileContent);

Base64 String Convert Image File

1
2
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
FileUtils.writeByteArrayToFile(new File(outputFileName), decodedBytes);
Read More
SpringBoot项目下实践设计模式之工厂模式

示例结构(红框内的)

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

Read More
post @ 2023-04-20
单点登录解决方案

单点登录 (SSO) 是一种身份验证过程,在该过程中,用户仅使用一组登录凭据即可访问多个应用程序或网站,这避免了用户分别登录不同应用程序需要输入不同验证信息的麻烦。用户凭据和其他识别信息由称为身份提供者(IdP)的集中式系统存储和管理。身份提供者是一个受信任的系统,可以提供对其他网站和应用程序的访问。基于单点登录 (SSO) 的身份验证系统通常用于员工需要访问其组织的多个应用程序的企业环境中。

Read More
post @ 2023-04-17
ArrayList去重方式总结

我在日常工作中常用Stream方式去重,满足了工作上业务的需求即可,并没有深入了解和尝试其他方式的去重操作,这对于个人的成长是很有局限性的,遂借此机会整理ArrayList的去重方法。

Read More

HashMap 和 Hashtable 都用于以键和值的形式存储数据。两者都使用散列技术来存储唯一密钥。但是HashMap和Hashtable 类之间也是有许多区别。

Read More

之前在某篇公众号文章中,看到工资10K、15K、20K的Java程序员应该掌握的技术。大致对应着初、中、高级开发人员,所以我打算针对这三个阶段,写三篇文章,一边学习,一边总结。

曾经读过王小波的时代三部曲,分别是《青铜时代》、《白银时代》、《黄金时代》,遂借用来类比程序员的三个阶段。

Read More

之前在某篇公众号文章中,看到工资10K、15K、20K的Java程序员应该掌握的技术。大致对应着初、中、高级开发人员,所以我打算针对这三个阶段,写三篇文章,一边学习,一边总结。

曾经读过王小波的时代三部曲,分别是《青铜时代》、《白银时代》、《黄金时代》,遂借用来类比程序员的三个阶段。

Read More

在工作中,用java.util.ArrayList.retainAll(Collection<?>)方法判断两个list集合是否有交集(两个list是否有相同的元素)。如果两个集合有相同元素,那么retainAll返回true。但是如果两个集合的元素完全相同,返回的结果却是false,而如果两个list集合的元素都不一样,retainAll却返回true。 这是怎么回事呢?

Read More
⬆︎TOP