
Java
文章平均质量分 84
蓝黑2020
这个作者很懒,什么都没留下…
展开
-
Java如何在遍历集合时删除特定元素
Java如何在遍历集合时删除特定元素原创 2025-04-17 14:40:49 · 1082 阅读 · 0 评论 -
什么?从Set里取出的元素竟然不包含在这个Set里!——记Java HashSet的一个坑
什么?从Set里取出的元素竟然不包含在这个Set里!——记Java HashSet的一个坑原创 2025-01-07 11:54:51 · 749 阅读 · 0 评论 -
Java Integer的数值比较
Java Integer的数值比较原创 2024-12-12 21:31:17 · 474 阅读 · 0 评论 -
Java里局部变量和成员变量的隐式初始化
Java里局部变量和成员变量的隐式初始化原创 2024-12-12 21:25:28 · 982 阅读 · 0 评论 -
IntelliJ IDEA常用快捷键
IntelliJ IDEA常用快捷键原创 2024-11-19 18:07:35 · 1211 阅读 · 0 评论 -
从Stream的 toList() 和 collect(Collectors.toList()) 方法看Java的不可变流
从Stream的 toList() 和 collect(Collectors.toList()) 方法看Java的不可变流原创 2024-11-19 17:56:47 · 1960 阅读 · 0 评论 -
Java知识点小结3:内存回收
Java知识点小结3:内存回收原创 2024-09-20 22:31:57 · 1053 阅读 · 0 评论 -
Java知识点小结2:对象的内存管理
Java知识点小结2:对象的内存管理原创 2024-09-19 21:59:00 · 1021 阅读 · 0 评论 -
Java知识点小结1:数组
Java知识点小结1:数组原创 2024-09-19 21:58:15 · 407 阅读 · 0 评论 -
Java8的Optional简介
Java8的Optional简介原创 2024-09-17 11:50:15 · 1389 阅读 · 0 评论 -
Java8的函数式编程简介
Java8的函数式编程简介原创 2024-09-14 11:11:22 · 921 阅读 · 0 评论 -
用jstack命令分析CPU占用率高的问题
用jstack命令分析CPU占用率高的问题原创 2023-06-08 21:15:55 · 3972 阅读 · 0 评论 -
CompletableFuture的cancel和handleAsync的一个小坑
CompletableFuture的cancel和handleAsync的一个小坑原创 2023-05-24 22:04:07 · 2110 阅读 · 0 评论 -
后端通过URLEncoder对响应内容编码
后端通过URLEncoder对响应内容编码原创 2023-04-24 22:42:51 · 768 阅读 · 0 评论 -
Java stream性能比较
Java stream性能比较原创 2023-03-20 19:17:19 · 2479 阅读 · 0 评论 -
XSS(Cross Site Scripting)攻击简介
XSS(Cross Site Scripting)攻击简介原创 2023-01-18 16:46:58 · 750 阅读 · 0 评论 -
MyBatis访问Db2和MySQL(Maven)
注:虽然前面写过一些文档,包含MyBatis连接Db2和MySQL的内容,但是貌似没有单独记录用Maven方式连接DB的文档,所以单写了这一篇文档,方便以后需要快速搭建MyBatis环境时参考。注:有一篇文档“MyBatis访问Db2小例子”,但是是用手工方式处理的各种包,比较麻烦,不像Maven,直接配置一下就搞定。原创 2022-12-13 21:28:03 · 1078 阅读 · 0 评论 -
Java形参个数可变的方法
Java支持参数个数可变的方法,定义方法时,在最后一个形参后面加上3个点(...),表示该形参可以接受0个、1个、或者N个参数值。i ++) {} } }通过3个点(...)修饰的形参,即个数可变的参数,可以接受0个参数、1个参数、N个参数、或者数组作为实参;在方法里,个数可变的参数实际上是被当做数组处理的。如果没有传该参数,则数组长度为0;个数可变的参数只能位于形参列表的最后(一个方法最多只能有一个个数可变的形参);原创 2022-09-21 08:46:53 · 299 阅读 · 0 评论 -
java.io.IOException: Broken pipe
最近,在服务器的日志里发现有这样的报错消息,我在网上搜了一下,貌似是因为客户端断开了连接,于是我在本地开发环境,用JMeter尝试复现了一下。原创 2022-09-09 16:01:44 · 2394 阅读 · 1 评论 -
SpringBoot配置SpringApplication
方法运行,和前面的方式很类似。在运行之前,可以配置该实例对象。本例中,配置了懒加载,并且设置为不显示banner。可见,默认情况下,在初始化Spring时,会初始化所有singleton的bean。懒加载的效果:在初始化Spring容器时,并没有实例化任何bean,而是在。本例中,配置了懒加载,并且设置为不显示banner。对象,然后通过流式API的方式来配置,最后调用其。本例和前面的例子类似,只不过是显式的实例化了一个。SpringBoot程序的入口是。本例中,显式的实例化了一个。,全部使用默认设置。原创 2022-09-07 22:26:27 · 400 阅读 · 0 评论 -
SpringBoot自定义banner
首先找一张图片,比如:将其复制到目录下,并命名为banner.jpg。在在目录下创建banner.txt$ {其中,表示格式化的SpringBoot版本号。运行程序,控制台输出如下:注意:测试时,xxx.txt文件和inter.jpg文件位于源码目录的包下,默认情况下,不会把这两个文件复制到target目录下的对应位置(因为它们不是Java文件),需要修改pom.xml文件,设置resource目录,详见我另一篇文档。或者如果只想简单试一下,可以直接把文件复制到目标位置。原创 2022-09-03 23:55:50 · 840 阅读 · 0 评论 -
Spring加载配置(非主配置)的方法
注:本文是对前面关于Spring配置的一个总结。假如现在有一个Java配置类(非主配置类),或者有一个XML配置文件(非主配置文件),要想让Spring取加载该配置,在不同的情况下,应该怎么做呢?原创 2022-08-31 23:43:42 · 230 阅读 · 0 评论 -
Spring的component-scan XML配置和@ComponentScan注解配置
在类上添加@Component(或者其变种)注解。配置自动扫描,以下两种方式都可以:XML配置:原创 2022-08-31 23:42:16 · 3532 阅读 · 0 评论 -
Spring的setter方法注入和构造器注入的对比
setter方法注入构造器注入不可变对象无法设置为不可变可以按需设置为不可变确保所需的依赖非空无法确保可以确保代码异味(类被注入了太多对象)不容易识别很容易识别注意:对于“所需的依赖为空”的情况,也分具体情况,比如通过@Autowired给setter方法注入对象,如果找不到满足条件的类(byType),默认情况下会报错,详见我另一篇文档。所以,通过对比,我们得出结论:构造器注入就是好!...原创 2022-08-29 20:05:34 · 2531 阅读 · 0 评论 -
Spring依赖注入的几种方式(注解)
Spring依赖注入的几种方式(注解)原创 2022-08-28 20:12:46 · 1418 阅读 · 0 评论 -
JMeter简介
Apache JMeter是一个开源的Java工具,用来做功能和性能测试。它最初被设计为测试web应用,后来扩展到一些其它的功能测试。本文用JMeter做一个简单的并发HTTP请求测试。下载地址:https://jmeter.apache.org/download_jmeter.cgi我下载的文件是 。使用 解压,生成 目录。到 目录下,运行 ,就打开了JMeter程序界面:本文中我们用JMeter来测试HTTP请求,所以首先要起一个web server(比如启动一个Spring web程序)。原创 2022-06-15 23:01:09 · 608 阅读 · 0 评论 -
替换jar包或者war包里的文件
一般情况下,我们通过某种工具(比如Maven)生成 文件,或者 文件。有时希望修改里面的一个文件,比如 文件,又或者是一个配置文件,但又不想重新build整个项目,只想把这个文件塞进jar包或者war包,替换原先的文件。jar包和war包做法一样,以下以jar包为例,war包同理。具体步骤为:首先把jar包解开,一般来说,系统上的解压工具都可以使用,比如 。注意解压后的文件目录结构,例如:jar包的内容为:则解压后, 和 应该和 处于同一目录下。有些解压工具(比如Mac的 ),会多生成一原创 2022-06-15 21:50:18 · 2974 阅读 · 0 评论 -
TestNG的HelloWorld例子以及如何在命令行下运行
新建Maven项目 :打开 ,添加TestNG的依赖:在 目录下创建package ,并创建类 如下:在 目录下创建 文件如下:运行方法1:运行 文件右键单击 ,选择运行,结果如下:可见,虽然报了 的错误,不过不影响运行,这两个test方法都成功了。右键单击 ,选择运行。从右侧Maven面板双击 :官网上原话是:这句话说的很含糊,我折腾了半天才弄明白是怎么回事。以下是调试过程,记下来以便日后复习时,知其所以然。在项目根目录下:这里,我添加了classpath是因为在原创 2022-06-08 15:21:11 · 969 阅读 · 0 评论 -
Java程序的启动选项
环境操作系统:Ubuntu 20.04JDK:17.0.1开发工具:IntelliJ IDEA 2022.1 (Community Edition)原创 2022-05-11 20:55:16 · 1623 阅读 · 0 评论 -
JDK自带的java.util.logging.Logger
环境操作系统:Ubuntu 20.04JDK:17.0.1Java自带log功能,用的是JDK标准库中的类java.util.logging.Logger 。下面是一个简单的例子:package pkg1;import java.util.logging.*;public class Test0509 { public static void main(String[] args) { Logger logger = Logger.getLogger(Test0原创 2022-05-09 17:55:39 · 2317 阅读 · 1 评论 -
Spring Boot的Spring Data Redis和RedisTemplate(StringRedisTemplate)
Spring Boot提供了 spring-boot-starter-data-redis 使用Spring Data Redis对底层的 Lettuce 或者 Jedis 做了封装,默认使用 Lettuce 。配置打开 https://start.spring.io/ ,搜索 redis ,添加依赖 Spring Data Redis (Access+Driver) ,如下图所示:创建项目 test0501_1 ,下载 test0501_1.zip 文件,解压生成项目,并打开。打开 pom.xm原创 2022-05-04 11:50:49 · 1571 阅读 · 0 评论 -
Redis的Java客户端Lettuce简介
环境操作系统:Ubuntu 20.04Redis:6.2.6开发工具:IntelliJ IDEA 2022.1 (Community Edition)Lettuce的官网( https://lettuce.io/core/release/reference/index.html )对Lettuce的描述是: Lettuce is a scalable thread-safe Redis client based on netty and Reactor. Lettuce provides syn原创 2022-04-30 19:55:19 · 2096 阅读 · 0 评论 -
在Java项目中配置Redis
环境:操作系统: Ubuntu 20.04Redis:6.2.6开发工具:IntelliJ IDEA 2022.1 (Community Edition)Redis官网( https://redis.io/docs/clients/#java )所推荐的Java客户端有:RedissonJedislettuce等等。本文将介绍 Jedis 和 lettuce 。Jedis方法1:手工配置即手工搜索并下载所需的jar包,可以到以下网站搜索:https://mvnreposit原创 2022-04-30 09:21:44 · 5094 阅读 · 0 评论 -
MyBatis传递参数的几种方法
环境Db2:V11.5MyBatis:3.5.6现有table T1 如下:[db2inst1@ruili1 ~]$ db2 "select * from t1"C1 C2 C3----------- ----------- ---------------------------------------------------------------------------------------------------- 1原创 2022-04-20 11:37:49 · 1128 阅读 · 0 评论 -
Java POJO映射
问题考虑以下典型的应用场景:用户点击按钮发送一个请求,从后台获取一些数据,展示在页面上。通常情况下,应用在从数据库查询数据时,会把获取到的结果集(ResultSet)映射为POJO的List。例如,把 select * from t1 的resultset映射为 List<MyPojo> 对象。接下来,可能对该List进行各种操作,比如计算(calculation),过滤(filter),聚集(aggregation),排序(sorting),截取(limit&offset),转换(原创 2022-03-30 23:53:35 · 1686 阅读 · 0 评论 -
Java新版本特性(9到17)
最近一段时间,项目组终于打破了“你发任你发,我用Java8”的传统,准备升级到Java 17,所以我也来学习一下Java新版本的特性,看看给Java 17(其实是9到17)我们带来了哪些新功能。https://docs.oracle.com/en/java/javase/17/language/java-language-changes.htmlrecord (Java 16)record 是一种特殊的类,它是简单的数据聚集的建模,比传统意义上的数据类减少了很多“繁文缛节”。这些繁文缛节,包含了访问原创 2022-02-26 22:37:18 · 2303 阅读 · 2 评论 -
使用不同方式向MySQL插入数据的性能比较
环境MySQL~ mysql --versionmysql Ver 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))MyBatismybatis-3.5.9.jarDBrepomysql> use repoDatabase changedTablet2mysql> describe t2;+-------+------------+------+-----+---------+-------+原创 2022-02-13 11:11:34 · 656 阅读 · 0 评论 -
MyBatis基本概念
ORM 的全称是 Object/Relation Mapping ,即 对象/关系映射 。顾名思义,它表示面向对象的编程语言(如Java)和关系型数据库(如Db2)之间的映射。简单讲,开发项目时,使用的是面向对象的分析、设计、编码,而持久层使用的是关系型数据库,于是产生了ORM框架,把关系型数据库包装成面向对象的模型。从而开发人员可以以面向对象的方式操作持久化对象,如保存、删除、修改,而ORM框架将其转换为对应的SQL操作,如insert、delete、update。OR原创 2022-02-11 22:53:47 · 1126 阅读 · 0 评论 -
MyBatis访问Db2小例子
环境Db2$ db2levelDB21085I This instance or install (instance name, where applicable:"db2inst1") uses "64" bits and DB2 code release "SQL11050" with levelidentifier "0601010F".Informational tokens are "DB2 v11.5.0.0", "s1906061700", "DYN1906061700AMD64原创 2022-02-09 17:53:17 · 1704 阅读 · 0 评论 -
Db2插入数据溢出报错测试
测试环境Db2$ db2levelDB21085I This instance or install (instance name, where applicable:"db2inst1") uses "64" bits and DB2 code release "SQL11050" with levelidentifier "0601010F".Informational tokens are "DB2 v11.5.0.0", "s1906061700", "DYN1906061700AMD原创 2022-02-07 17:49:49 · 5708 阅读 · 0 评论