![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 54
java_t_t
拿CSDN当笔记本
展开
-
Java在for循环中修改集合
尽量不要在遍历中修改集合本身(修改集合中的元素的属性没问题),除非你能明确知道该操作导致的后果。如果需要在循环中移除元素,可以使用迭代器iterator。原创 2024-07-21 18:17:32 · 776 阅读 · 0 评论 -
EasyExcel多次写入数据&多个EasyExcel文件导出到zip压缩文件
EasyExcel多次写入数据&多个EasyExcel文件导出到zip压缩文件原创 2023-08-12 22:46:53 · 1428 阅读 · 0 评论 -
Java执行Python代码的两种方法(Jython与ProcessBuilder)
Java执行python代码有很多种方法,这里介绍两种,Jython和ProcessBuilder,并简要介绍下它们的优缺点。原创 2023-07-02 19:14:26 · 2131 阅读 · 0 评论 -
使用EasyExcel读写Excel文件
使用EasyExcel读写Excel文件原创 2023-07-02 00:00:43 · 3355 阅读 · 1 评论 -
Excel文件导入&导出工具类
之前写过一篇导出Excel文件的通用类的文章,当时只实现了导出数据到Excel的功能,这次在上次的基础上,增加从Excel读取数据到List的功能,依旧使用POI读取Excel文件。原创 2023-07-01 20:22:36 · 1670 阅读 · 0 评论 -
分别使用dom4j和jdk自带的方法解析xml文件
分别使用dom4j和jdk自带的方法解析xml文件。原创 2023-06-24 18:00:45 · 183 阅读 · 0 评论 -
好记性不如烂笔头(2)
记录一些小技巧原创 2023-03-12 22:40:02 · 370 阅读 · 0 评论 -
Java实现Unicode与普通字符的转换
Java实现Unicode与普通字符的转换原创 2022-11-14 00:39:18 · 3242 阅读 · 0 评论 -
控制台打印进度条
控制台打印进度条原创 2022-11-13 22:15:01 · 892 阅读 · 2 评论 -
apolloconfig分布式部署
apollo、Apollo config、分布式部署、源码原创 2022-09-30 03:01:19 · 869 阅读 · 0 评论 -
导出Excel文件的通用类
本文记录一种通用的导出Excel文件的通用类原创 2022-07-10 19:40:04 · 243 阅读 · 0 评论 -
Spring Boot连接SQLite数据库
本文记录Spring Boot连接单SQLite数据源和多SQLite数据源的一种配置方式。原创 2022-07-06 23:56:38 · 12198 阅读 · 2 评论 -
List、Tree互转工具类
List、Tree互转工具类原创 2022-03-25 23:37:13 · 1615 阅读 · 2 评论 -
使用jnotify、commons-io监控文件变化
使用JNotify和commons-io监控文件变化原创 2022-03-25 00:03:03 · 2369 阅读 · 0 评论 -
获取树深度
概要:使用BFS(广度优先搜索)、DFS(深度优先搜索)的递归和非递归方式获取树深度。代码:Util类:package com.example.study.util;import org.springframework.util.CollectionUtils;import org.springframework.util.StringUtils;import java.lang.reflect.Field;import java.util.ArrayList;import ja原创 2022-02-27 23:38:08 · 824 阅读 · 0 评论 -
Java诊断工具Arthas的简单使用
Arthas简介:Arthas是Alibaba开源的Java诊断工具。它可以协助解决以下问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到J原创 2021-10-18 01:00:07 · 606 阅读 · 0 评论 -
SpringBoot连接Mysql数据库
本文记录Spring Boot连接单mysql数据源和多mysql数据源的一种配置方式。单数据源1.在pom.xml中添加相关依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>原创 2021-09-08 00:59:39 · 580 阅读 · 0 评论 -
求经过两点的直线的表达式(Leetcode.149)
在刷Leetcode的时候,第149题需要求经过两点的直线的表达式,所以总结一下如何用代码求出经过两点的直线的表达式注:只考虑 x, y 为整数的情况,且不考虑计算中整型溢出的情况求直线表达式需要解决的问题1.求坐标系中经过两点的直线的表达式表达式的形式为:y = a * x + b根据两个点的坐标得到方程式:①. y1 = a * x1 + b ②. y2 = a * x2 + b得出 a 和 b 的表达式为(x1 - x2 不为 0 的情况下):a = (y原创 2021-08-22 00:57:55 · 2180 阅读 · 0 评论 -
Gradle的使用
Gradle的使用什么是Gradle?Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。(摘自百度百科)Gradle相比Maven主要有两点变化: Maven只能全量构建,Gradle支持增量构建,所以Gradle的构建速度快于Maven Maven使用xml进行配原创 2021-08-15 03:50:51 · 641 阅读 · 0 评论 -
Kafka Connect开发
通过开发一个Kafka Connect增加对Kafka Connect的认识关于Kafka Connect:Kafka Connect是生产者、消费者的一种特殊使用场景,一般用于构建数据管道完成数据的导入导出功能。Kafka Connect核心概念(Connector) Source:Source负责导入数据到Kafka Sink:Sink负责从Kafka导出数据 Kafka Connect还有两个重要概念:Task和Worker。Task是Kafka原创 2021-08-15 02:58:49 · 1263 阅读 · 1 评论 -
Maven插件开发
概述:通过开发一个简单的maven插件来更深入的了解mavenmaven:maven是一个包管理和插件调度框架,所有的功能(如编译、打包、发布)都是由插件完成的。maven有30个阶段,这30个阶段(phase)分别归属于3个标准的生命周期,所有的插件都需要绑定到其中一个阶段执行(插件本身可以设置默认阶段,pom.xml中也可以重新绑定插件的阶段,最后是可以在执行mvn命令时绑定插件的阶段)。编译时调用某个阶段,该阶段及在该阶段所属的生命周期前的所有阶段都会被执行,如,执行clean,那么pre原创 2021-07-05 00:23:26 · 526 阅读 · 0 评论 -
Spring Boot映射资源文件
场景:需要通过url访问服务器上的资源,可以通过nginx进行资源映射(见 nginx映射资源文件),也可以通过Spring Boot进行映射。代码:import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.原创 2021-05-13 11:41:28 · 735 阅读 · 1 评论 -
文件分片上传
依赖: <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.11.0</version> <exclusions> ...原创 2021-01-29 14:23:19 · 777 阅读 · 0 评论 -
扁平化部门结构获取上级、下级部门,转换成树形结构
概要:企业微信有获取部门列表的接口,该接口返回的部门列表中,每个部门有一个字段关联其上级部门,很多时候需要根据返回的列表获取某个部门的所有上级部门、子部门,以及转换成树形结构。代码:部门实体类:package com.example.study.entity;import lombok.Data;/** * 部门实体类 */@Datapublic class DepartmentEntity { /** * 部门id */ priv.原创 2021-01-07 17:38:55 · 1154 阅读 · 0 评论 -
Java注解编写
1.引入依赖 <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency> <dependency> <groupId>org.apache.commons原创 2020-12-28 13:19:35 · 880 阅读 · 2 评论 -
RocketMQ在Windows下的安装与使用
1、安装与启动1.1.版本:4.7.11.2.系统要求(http://rocketmq.apache.org/docs/quick-start/):1.3.下载(https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip)可以从以下地址下载:https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-al原创 2020-12-08 16:30:34 · 2191 阅读 · 0 评论 -
SpringBoot加载配置源码
我们从启动类打断点进去:public class Application{ public static void main(String[] args) { SpringApplication.run(Application.class, args); }} public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) { return原创 2020-11-02 19:08:22 · 263 阅读 · 0 评论 -
通过http接口打包下载网络资源
代码:import javax.servlet.http.HttpServletResponse;import java.io.BufferedInputStream;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLEncoder;import java.util.Map;import java.util.zip.ZipEntry;import ja原创 2020-10-23 16:08:11 · 422 阅读 · 0 评论 -
String在编译时的优化及switch中对String的支持
前提:jdk版本为1.8.0_73java代码:public class test { public static void main(String[] args) throws Exception { String str = "a" + "b"; for (int i = 0; i < 10; i++) { str = str.concat(i + ""); } System.out.prin原创 2020-09-23 18:27:54 · 158 阅读 · 0 评论 -
彻底理解ThreadLocal(看这篇文章就够了)
源码分析为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类ThreadLocalMap(内部类) Thread首先,在Thread类中有一行:/* ThreadLocal values pertaining to this thread. This map is maintained by the ThreadLocal class. */ThreadLocal.ThreadLocalMap threadLocals = null;其中ThreadL转载 2020-09-16 18:01:52 · 722 阅读 · 0 评论 -
Spring Boot中拦截器的编写
步骤:1.实现HandlerInterceptor接口;或继承HandlerInterceptorAdapter类;2.实现WebMvcConfigurer接口,在addInterceptors方法中注册拦截器说明:1.HandlerInterceptorAdapter类实现了AsyncHandlerInterceptor接口,该接口继承自HandlerInterceptor接口,比HandlerInterceptor多了一个afterConcurrentHandlingStarted方法2.方原创 2020-08-27 12:58:39 · 425 阅读 · 0 评论 -
异常的全局处理
Spring Boot中对异常的全局处理步骤:1.在全局异常处理类中加上注解@ControllerAdvice2.在方法上使用@ExceptionHandler注解处理对应的异常3.@ResponseBody可选,使用该注解时,会将返回结果由java对象转为json例:import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.ControllerAdvice;import or.原创 2020-08-27 12:21:48 · 225 阅读 · 0 评论 -
常见排序算法实现
1、冒泡排序public class Bubble { public void sort(int[] a) { for (int i = a.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (a[j] > a[j + 1]) { a[j] = a[j] ^ a[j + 1]; a[j...原创 2018-05-03 17:39:02 · 173 阅读 · 0 评论 -
使用apiggs自动生成api文档
程序员最讨厌的两件事:一是别人的代码没有文档,二是给自己的代码写文档。有买卖就有伤害有需求就有市场,比如swagger就可以自动生成文档,但是swagger是侵入式的,和业务代码混在一起,而apiggs是一个非侵入式的maven插件,可以生成三种格式的文档:html:api文档json:可直接导入postmanadoc:一种asciidoc文档,可用文件处理器转换成其它格式文档,如html等使用:在pom.xml添加以下配置,maven打包时即可生成文档<plug..原创 2020-08-12 12:01:47 · 629 阅读 · 0 评论 -
HashMap源码浅析
HashMap底层结构:数组+链表(或红黑树)Node<K,V>[] tab1.put1.计算key的hash值2.如果HashMap中的数组为空,或者长度为0,先扩容3.通过 (<数组长度> - 1 ) & hash 计算出当前元素下标,如果没有碰撞,直接将kv添加到数组中4.处理hash碰撞(准确的说是下标碰撞)的情况4.1.key相同时,需要更新,放到后面统一处理(hash相同,key不一定相同;key相同,hash一定相同).原创 2020-07-27 18:29:32 · 172 阅读 · 0 评论 -
JVM常用配置
参考:jvm配置官方文档(JDK7及更早)JVM参数详解参数 说明 示例 默认值 -Xms 初始堆大小 -Xms128m -Xmx 最大堆大小 -Xmx256m -Xmn 年轻代大小 -Xmn64m 堆大小1/3 -Xss 单个线程的堆大小。 该参数越小,可同时容纳的线程数(并发数)越高。 但是操作系统对一个进程内的线程数有限制,经验值在3000~5000左右 ...原创 2020-07-24 11:25:36 · 136 阅读 · 0 评论 -
Spring Boot全局化配置时间格式
Spring Boot默认的时间格式是:yyyy-MM-dd HH:mm. 在项目中,可能每个时间都需要秒,解决办法之一是在每个POJO对应字段加上注解:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss"),但是这种方法要给每个POJO的时间字段加注解,比较繁琐。在网上看到一个全局的配置方法,自己还没有试过,先贴出来作为笔记:1.添加配置项:spring.jackson.date-format=yyyy-MM-dd HH:mm:ss2.添加配置类:.转载 2020-07-10 17:30:03 · 1015 阅读 · 0 评论 -
Java静态代理与动态代理
1.代理代理类相比于目标类,多做了一些工作,可以看做是对目标类的增强。2.静态代理代理类和目标类实现同一个接口,然后在创建代理对象时,通过构造器塞入一个目标对象。在代理对象的方法中调用目标对象的方法,在调用目标方法的前后可以执行自定义的方法,实现对目标对象方法的增强。缺陷:需要手动为每一个目标类编写对应的代理类,代码规模增加太快。3.动态代理代理类通过java.lang.reflect.Proxy获取代理对象;实现java.lang.reflect.InvocationHandler原创 2020-07-09 19:56:15 · 147 阅读 · 0 评论 -
贪吃蛇
食物和身体节点类:package snake;import java.util.Objects;public class SnakeNode { private int row; private int col; public SnakeNode(int row, int col) { this.row = row; this.col = col; } public int getRow() { ret原创 2020-07-02 23:04:12 · 119 阅读 · 0 评论 -
md5加密
概述:md5哈希散列算法md5加密是单向不可逆的哈希散列算法,对于任意长度的明文进行md5运算后,可以得到128bit的密文。实现:1.md5散列借助java自带的java.security.MessageDigest进行; 2.对128bit(16byte)的byte数组进行拆分,每byte拆成2个16进制数,高位在前,高位在前,低位在后代码实现:import java.io.IOException;import java.io.InputStream;imp...原创 2020-06-18 23:57:23 · 171 阅读 · 0 评论