作者: y_bccl27
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
消除过期的对象引用
内存泄漏通常不会表现的很明显,可以在系统中存在很多年,只有通过检查代码,或借助Heap剖析工具才能发现内存泄漏问题,所以要尽量在内存泄漏发生之前就知道如何预测此类问题。原创 2023-10-21 11:00:00 · 617 阅读 · 0 评论避免创建不必要的对象
当你应该重用现有对象的时候,请不要创建新的对象;反之我们也应该考虑一个问题,当你应该创建新对象的时候,请不要重用现有的对象。原创 2023-10-21 09:00:00 · 480 阅读 · 0 评论返回一个零长度的数组或者空的集合,不要返回null
集合值方法可以做成需要返回空集合时返回同一个不可变的空集合,Collections.emptyList()、Collections.emptySet()、Collections.emptyMap()方法可以轻松实现这个。其次对于不返回任何元素的调用,每次都返回同一个零长度数组是可能的,因为零长度数组是不可变的,而不可变对象有可能被自由共享。把没有奶酪(Cheese)可买的情况当做一种特例,这是不合常理的。总之,返回类型为数组或集合的方法没有理由返回null,而是返回一个零长度的数组或者一个不可变的空集合。.原创 2022-07-31 14:55:05 · 364 阅读 · 0 评论JWT实现Token认证
随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。JWT全称为Json Web Token,说白了是什么呢?原创 2019-03-11 10:27:45 · 1861 阅读 · 1 评论fastjson中的@JSONField注解
使用fastjson之前需先引入下述依赖,当前版本为1.2.75JSONField中的name属性用来指定JSON串中key的名称序列化测试: 执行上述代码,其输出结果为:反序列化测试:执行上述代码,其输出结果为:@JSONField作用在Field时,其name不仅定义了输出的名称,同时也定义了输入key的名称执行上述代码,其输出结果为:fastjson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行 format属原创 2022-06-21 10:12:44 · 5122 阅读 · 0 评论CSDN使用富文本编辑器为所发布的文章生成右侧目录
如果我们想为我们的文章生成相应的目录,在不使用MD编辑器的情况下,当前所使用的编辑器为富文本编辑器,我们可以假设需要发布的文章已经编辑好了,这个时候我们需要确定每一个段落的标题名称是什么。例如当前文章中存在下述四个标题:将上述四个标题的样式全部设置为h3,接着将鼠标的定位移动到文章最前面,然后再点击“目录”这个时候在文章的最前面就会自动生成下面这个一个导航目录:同时在发布完文章之后查看该文章时会看到网页布局的右上角存在下述这么一个导航栏:上述的导航栏可以进行点击直接定位跳..原创 2022-03-07 15:41:12 · 1741 阅读 · 0 评论Java去除字符串中的转义符
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version></dependency>import org.apache.commons.lang.StringEscapeUtils;public class demo {.原创 2021-12-16 15:32:02 · 3065 阅读 · 0 评论Java去除字符串最前面一个字符和最后面一个字符
Java去除字符串最前面一个字符和最后面一个字符public class demo { public static void main(String[] args) { String returnInfo = "\"{\"success\":true,\"msg\":\"success\",\"data\":{}}\""; System.out.println(returnInfo); if (returnInfo.startsWith("\"原创 2021-12-16 15:27:22 · 8805 阅读 · 0 评论JDK8新特性(一)之Lambda表达式
Java8发布于2014年03月18日,是目前企业中使用最广泛的一个版本。Java8是一次重大的版本升级,带来了很多的新特性:1.Lambda表达式2.接口的增强3.常用的内置函数式接口4.方法引用5.集合之Stream流式操作6.Optional中避免Null检查7.新的时间和日期API8.可重复注解9.并行数组排序Oracle JDK是基于Open JDK源代码的商业版本。如果要学习Java新特性可以去Open JDK官网学习,其官网地址为http://openjdk.java原创 2021-12-22 22:34:53 · 485 阅读 · 0 评论JDK8新特性(二)之接口新增的两个方法
JDK8以前的接口中只能有静态常量和抽象方法:interface 接口名{ 静态常量; 抽象方法;}JDK8对接口的增强以后,接口中还可以有默认方法和静态方法,即:interface 接口名{ 静态常量; 抽象方法; 默认方法; 静态方法;}1.接口引入默认方法在JDK8以前接口中只能有抽象方法,存在一个问题:如果给接口新增抽象方法,那么所有实现类都必须重写这个抽象方法,不利于接口的扩展。JDK8接口中的默认方法实现类不必重写,原创 2021-12-19 19:26:55 · 519 阅读 · 0 评论JDK8新特性(三)之常用内置函数式接口
我们知道Lambda表达式的前提是需要有函数式接口,而Lambda使用时不关心接口名,抽象方法名,只关心抽象方法的参数列表和返回值类型,因此为了让我们使用Lambda方便,JDK8提供了大量常用的函数式接口。常用内置函数式接口主要在java.util.function包中,下面是最常用的几个接口。一、Supplier接口java.util.function.Supplier<T>接口,它意味着“供给”,对应的Lambda表达式需要“对外提供”一个符合泛型类型的对象数据。@Funct原创 2021-12-26 10:55:35 · 311 阅读 · 0 评论JDK8新特性(四)之方法引用
一、方法引用的介绍import java.util.function.Consumer;public class Demo { public static void getMax(int[] arr) { int sum=0; for(int n:arr){ sum+=n; } System.out.println(sum); } public static void main(St原创 2021-12-26 16:15:53 · 316 阅读 · 0 评论JDK8新特性(五)之Stream流介绍和获取方式
当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。我们来体验集合操作数据的弊端,需求如下:一个ArrayList集合中存储有以下数据:张无忌、周芷若、赵敏、张三丰需求:1.拿到所有姓张的 2.拿到名字长度为3个字的 3.打印这些数据import java.util.ArrayList;import java.util.Collections;public class Demo { public static void main(Stri原创 2021-12-05 19:54:32 · 546 阅读 · 0 评论JDK8新特性(六)之Stream流的forEach()方法
Stream流模型的操作很丰富,这里介绍一些常用的API。这些方法可以被分成两种:终结方法:返回值类型不再是Stream类型的方法,不再支持链式调用,上述列出的列表中终结方法包括count和forEach方法。非终结方法:返回值类型仍然是Stream类型的方法,支持链式调用。(除了终结方法外,其它方法均为非终结方法)Stream流里面的forEach方法的使用示例:import java.util.ArrayList;import java.util.Collections;i原创 2021-12-05 22:52:45 · 1743 阅读 · 0 评论JDK8新特性(七)之Stream流的count()、filter()、limit()、skip()方法
Stream流的count、filter、limit、skip原创 2021-12-07 23:07:54 · 4644 阅读 · 0 评论JDK8新特性(八)之Stream流的map()、sorted()、distinct()、match()方法
Stream流的map()、flatMap()、sorted()、distinct()、match()方法原创 2021-12-08 23:07:23 · 7243 阅读 · 0 评论JDK8新特性(九)之Stream流的find()、max()、min()、reduce()方法
JDK8新特性(九)之Stream流的find()、max()、min()、reduce()方法原创 2021-12-19 16:56:34 · 2494 阅读 · 0 评论JDK8新特性(十)之Stream流的map和reduce组合使用、mapToInt()、concat()方法
1.Stream流的map和reduce组合使用假设当前存在Person类,下述两个Person类的需求都是借助Stream流的map()和reduce()方法import lombok.AllArgsConstructor;import lombok.Data;@Data@AllArgsConstructorpublic class Person { private String name; private int age;}第一个需求:当前需要求出所有年龄的..原创 2021-12-12 13:22:11 · 2304 阅读 · 0 评论JDK8新特性(十一)之流(Stream)收集器(Collectors)
JDK8新特性之流(Stream)收集器(Collectors)原创 2021-12-12 20:38:32 · 1424 阅读 · 0 评论JDK8新特性(十二)之并行的Stream流
1.并行Stream流介绍一般使用的Stream流是串行的,就是在一个线程上执行,效率并不是很高,因此JDK8也推出了一个新的概念,即并行的Stream流(parallelStream)。parallelStream其实就是一个并行执行的流,它通过默认的ForkJoinPool,可以提高多线程任务的速度。获取并行Stream流有两种方式:import java.util.ArrayList;import java.util.List;import java.util.stream.Stream原创 2021-12-19 12:08:17 · 1016 阅读 · 0 评论JDK8新特性(十三)之Optional
1.Optional类介绍Optional是一个没有子类的工具类,Optional是一个可以为null的容器对象。它的作用主要是为了解决避免Null检查,防止NullPointerException。2.Optional类的创建方式import java.util.Optional;public class Demo { public static void main(String[] args){ //of:只能传入一个具体值,不能传入null原创 2021-12-26 18:25:32 · 330 阅读 · 0 评论JDK8新特性(十四)之日期时间API
旧版日期时间API存在的问题:1. 设计很差: 在java.util和java.sql的包中都有日期类,java.util.Date同时包含日期和时间,而java.sql.Date仅包含日期。此外用于格式化和解析的类在java.text包中定义。2. 非线程安全:java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。3. 时区处理麻烦:日期类并不提供国际化,没有时区支持,因此Java引入了java.util.Calendar和java.util.T原创 2021-12-26 20:30:40 · 256 阅读 · 0 评论JDK8新特性(十五)之重复注解、类型注解
一、重复注解自从Java 5中引入注解以来,注解开始变得非常流行,并在各个框架和项目中被广泛使用。不过注解有一个很大的限制是:在同一个地方不能多次使用同一个注解。JDK8引入了重复注解的概念,允许在同一个地方多次使用同一个注解。在JDK8中使用@Repeatable注解定义重复注解。1.定义重复的注解容器注解//定义重复的注解容器注解@Retention(RetentionPolicy.RUNTIME)@interface MyTests { // 这是重复注解的容器 MyTest原创 2021-12-27 22:07:38 · 520 阅读 · 0 评论Windows10手动设置代理
第一步:在Windows10的设置中找到“代理”,在此栏目下面找到“手动设置代理”第二步:将可以使用的代理服务器的IP和端口填在下述位置当需要使用代理服务器的时候就开启上述设置,如果不需要则关闭即可...原创 2021-10-09 10:37:29 · 13362 阅读 · 1 评论spring-beans下的BeanUtils.copyProperties
引入spring-beans的依赖,其版本为5.3.3<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.3.3</version></dependency>第一种使用用法:BeanUtils.copyProperties(A.原创 2021-11-11 09:57:22 · 402 阅读 · 0 评论MapStruct
一、背景DO(业务实体对象),DTO(数据传输对象)。在一个成熟的工程中,尤其是现在的分布式系统中,应用与应用之间,还有单独的应用细分模块之后,DO一般不会让外部依赖,这时候需要在提供对外接口的模块里放 DTO 用于对象传输,也即是 DO 对象对内,DTO对象对外,DTO 可以根据业务需要变更,并不需要映射 DO 的全部属性。这种 对象与对象之间的互相转换,就需要有一个专门用来解决转换问题的工具,毕竟每一个字段都 get/set 会很麻烦。MapStruct 就是这样...原创 2021-11-10 15:44:35 · 189 阅读 · 0 评论实体映射类库之ModelMapper
<!-- modelmapper依赖 --><dependency> <groupId>org.modelmapper</groupId> <artifactId>modelmapper</artifactId> <version>2.3.9</version></dependency>原创 2021-03-20 13:33:59 · 831 阅读 · 0 评论Postman下载文件
如何利用postman对下载接口进行测试,假设存在下述下载接口,请求方式为gethttp://localhost:8080/pinter/file/api/download?id=1第一步:按照一般请求接口,写好好接口地址以及参数,点击Send and Download 按钮,执行请求的同时会下载文件第二步:点击SendandDownload按钮后,会弹出文件地址存放选择框...原创 2021-09-10 12:46:43 · 1241 阅读 · 0 评论Postman查看完整的请求报文
第一步:工具栏 View -> Show postman console第二步:点击“Show Postman Console”之后,就会弹出一个如下图所示的界面原创 2021-12-06 18:02:17 · 8102 阅读 · 0 评论Java中静态代码块
静态代码块的特点:随着类的加载而执行,而且只执行一次。静态代码块的执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。静态代码块的执行顺序:静态代码块----->非静态代码块-------->构造函数/** * 父类 */public class Father { static { System.out.println("父类中的静态代码块"); } Father(原创 2021-08-22 21:34:31 · 442 阅读 · 0 评论Java 字符串格式化 String.format()
public static void main(String[] args) { String str = String.format("Hi,%s", "王力"); System.out.println(str); str = String.format("Hi,%s:%s.%s", "王南", "王力", "王张"); System.out.println(str); System.out.printf("字母a的大写是:%c %n", 'A'); Sy.原创 2021-07-10 11:53:59 · 180 阅读 · 0 评论正则表达式
Matcher m1 = Pattern.compile("<td class='tol'><a href='.*?>(.*?)<").matcher(content);List<String> result = new ArrayList<String>();while (m1.find()) { result.add(m1.group(1));}原创 2021-06-08 00:15:47 · 2674 阅读 · 0 评论Java中正则表达式替换字符串
public static void main(String[] args){ String content="【12306】尊敬的用户你好:您所乘坐的G2546次列车将于2022年02月22日08:00:00出发。\n" + " 温馨提示:\n" + "1.请于当天7点50分前抵达车站\n" + "2.入站前需持48小时内核酸检测报告\n" + "客服电话:0715-29828888或18825478.原创 2022-02-14 16:44:44 · 4920 阅读 · 0 评论使用Excel4J获取Excel文件中的数据
ExcelUtils所需要的pom依赖如下,该类存在于com.github.crab2died下:<!-- https://mvnrepository.com/artifact/com.github.crab2died/Excel4J --><dependency> <groupId>com.github.crab2died</groupId> <artifactId>Excel4J</artifactId>..原创 2021-03-16 10:11:52 · 651 阅读 · 0 评论解决Excel文件读取遇到值为null单元格会自动跳过的情况
第一种方法:使用Excel4J依赖<dependency> <groupId>com.github.crab2died</groupId> <artifactId>Excel4J</artifactId> <version>3.0.0</version></dependency>import lombok.extern.slf4j.Slf4j;import org.apac原创 2021-06-19 19:04:13 · 1496 阅读 · 1 评论使用Excel4J中的原生POI实现Excel文件下载和本地Excel文件生成
使用Excel4J实现Excel文件下载和本地Excel文件生成原创 2021-12-17 17:36:02 · 610 阅读 · 0 评论Java生成真正格式的Excel文件
<dependency><groupId>com.github.crab2died</groupId><artifactId>Excel4J</artifactId><version>3.0.0</version></dependency>/** * 将内容追加到一个Excel文件中 */ public static void addExc...原创 2022-02-20 21:21:09 · 452 阅读 · 0 评论apache的poi中设置Excel的单元格样式(HSSFCellStyle)和表格(HSSFSheet)
项目中导入一下依赖Jar包<!--Excel文件下载依赖--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version>&l...原创 2019-11-11 14:08:25 · 6962 阅读 · 4 评论使用Jxls进行Excel模板导出
Jxls进行模板导出area需要被定义在excel 模板的第一个单元格(A1),它代表excel模板中需要被解析的矩形区域,由A1到最后一个单元格原创 2022-06-16 19:55:42 · 580 阅读 · 0 评论百万数据excel导出功能如何实现?
做一个MySQL百万数据级别的excel导出功能,如果走接口同步导出,该接口肯定会非常容易超时。因此,我们在做系统设计的时候,第一选择应该是接口走异步处理。说起异步处理,其实有很多种,比如使用开启一个线程,或者使用线程池,或者使用job,或者使用mq等。原创 2023-02-11 22:02:48 · 345 阅读 · 0 评论




















































分享