![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java Web
文章平均质量分 51
Muscleheng
站在巨人肩上摘星揽月
展开
-
ThreadLocal解惑
比较书面的回答:类如其名,线程本地变量。当使用 ThreadLocal 维护变量时,ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程。这句话没问题,但容易被人误解,会被误以为:任意变量用ThreadLocal维护都是线程隔离的。后面会解答这个问题。原创 2024-08-23 22:43:13 · 763 阅读 · 0 评论 -
Redisson集成SpringBoot
Redisson集成SpringBoot原创 2024-05-27 22:35:40 · 1064 阅读 · 1 评论 -
Spring Boot @RestControllerAdvice 全局异常处理
利用注解@RestControllerAdvice 轻轻松松实现全局异常处理原创 2023-05-27 17:41:37 · 299 阅读 · 0 评论 -
计算两个日期相差天数
计算两个日期相差天数原创 2023-02-27 16:02:04 · 800 阅读 · 0 评论 -
maven本地仓库有依赖包,还会远程下载的问题
明明本地有需要的依赖包,但是maven还是会从远程仓库拉取,如果远程仓库有需要的包还好,如果没有,或者无网络环境下没法访问远程仓库,那就直接报错,走不下去了。原因:在本地仓库的每个依赖包都存在这样的文件:_remote.repositories_remote.repositories中记录了依赖的来源,记录了settings.xml中的id,如果settings.xml中的id发生了变化,就需要从远程仓库重新获取依赖。原创 2022-12-28 22:07:50 · 13114 阅读 · 7 评论 -
springBoot发送邮件
spring boot 发送邮件的实现原创 2022-12-20 14:15:14 · 702 阅读 · 0 评论 -
自己实现图形验证码
这里不需要依赖开源组件包,完全自己实现图形验证码功能。原创 2022-12-09 17:49:17 · 964 阅读 · 0 评论 -
SpringBoot生成图形验证码
需求:验证码一码一用,验证之后,不管是成功还是失败,都需要重新获取或者刷新二维码。大致思路:后端生成验证码后还需要生成一个UUID与之对应,存储到缓存(记得添加过期时间),把UUID和验证码反给前端,登录时后端使用前端传过来的UUID去缓存获取验证码,然后和前端传过来的验证码对比(一般忽略大小写)。原创 2022-12-09 17:21:58 · 3304 阅读 · 2 评论 -
springboot中使用webservice服务
SpringBoot项目中使用WebService服务完整示例原创 2022-11-11 18:27:19 · 1771 阅读 · 0 评论 -
delegate IDE build/run actions actions to Maven
idea中maven项目可以打包成功但是idea不能运行原创 2022-07-05 11:10:18 · 10345 阅读 · 5 评论 -
SpringBoot 在启动时执行某些方法
SpringBoot 在启动时执行某个方法,利用@PostConstruct 和 CommandLineRunner 或 ApplicationRunner原创 2022-06-30 18:01:45 · 5453 阅读 · 0 评论 -
swagger2的全新UI组件Knife4j
前后端对接,就得有一个好的的接口文档,具体到:接口的名称,说明,入参字段,出参字段,是否必传,参数类型等等,这里记录一下使用的swagger ui组件 knife4j-spring-ui。knife4j-spring-ui 是swagger的一个增强版,相比官方ui,其界面更美观,功能更强大,字段说明更清晰直观,测试起来更方便对比一下:官方UI:全新UI:集成在sprintboot项目中一、pom文件添加依赖 <!-- 封装了swagger2 -->.原创 2022-04-08 17:21:20 · 4673 阅读 · 0 评论 -
Java组装树结构
应用场景,数据库表里的多条数据互为父子级关系,现要对他们进行组装,形成树形结构的数据,需要到达如下效果:[ { "parentId": "0", "name": "一级目录1", "id": "10", "children": [ { "parentId": "10", "name": "二级目录1", "id": "20", "children": [] } ] }, { "parentId": "0", "name":原创 2022-03-25 15:12:23 · 4148 阅读 · 1 评论 -
Java配置类似Nginx方式的静态资源访问
应用场景:文件存储在服务器的指定目录,需要通过浏览器访问,一般会使用Nginx来做静态资源服务器,浏览器访问到Nginx后,Nginx匹配到对应的URL后会转发到对应的文件路径,例如:一、Nginx配置静态资源服务 server { listen 80; server_name 127.0.0.1; # 匹配访问的URL前缀 location /f1/ { # 静态资源存储路径 alias D:/data2/; } lo原创 2022-03-24 18:06:06 · 4759 阅读 · 0 评论 -
idea MyBatisGenerator自动生成代码
mybatis-generator生成代码是非常方便的,实现方式也是非常多,我最常用的就是在idea中使用,只需要简单的几步操作就能得到想要的dao接口、实体类、SQL xml文件。idea自带了mybatis-generator插件具体步骤如下:...原创 2022-03-11 18:46:34 · 4311 阅读 · 3 评论 -
问题解决:java.lang.OutOfMemoryError: unable to create new native thread
线上项目有一天突然挂了,报错:java.lang.OutOfMemoryError: unable to create new native thread大概意思就是:创建的线程实在是太多了,已经无法创建新的线程了。开始排查问题:一、网上查资料得到的答案几乎都一样,但是都没用,如下:调整JVMMemory内存大小、调整服务器的最大线程数等等。二、仔细查看error日志,结合业务代码排查根据error日志的堆栈信息找到抛出异常的代码块,并没有发现什么问题;因为业务代码这个地方并不存原创 2021-11-23 16:11:37 · 2114 阅读 · 0 评论 -
Spring Boot Admin配置安全验证
上一篇写了Spring Boot Admin的搭建spring boot admin 搭建(非常简单)_Muscleheng的博客-CSDN博客但是没有登录验证,如果线上使用,肯定是不安全的,这里记录一下添加登录验证,非常简单一、服务端(server端)1. pom文件添加依赖 <!--springboot admin 安全相关--> <dependency> <groupId>org.springframework.boot</gr.原创 2021-11-23 11:48:26 · 1454 阅读 · 0 评论 -
spring boot admin 搭建(非常简单)
Spring Boot Admin配置简单,功能强大,提供了健康检查、指标监控、访问日志、线程转储、堆转储和环境信息等等。一、服务端搭建基于一个最简单的springboot项目即可1. 添加pom依赖 <!-- SpringBootAdmin service --> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-adm原创 2021-11-23 11:33:11 · 2369 阅读 · 0 评论 -
Java递归解压zip压缩包
场景:zip压缩包里面嵌套多层文件夹或者zip压缩包;使用递归的方式进行解压,解压后得到的目录结构和压缩包目录结构完全一致,非常好用!package com.zhh.api.util;import lombok.extern.slf4j.Slf4j;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.nio.charset.Charset;import原创 2021-11-19 17:42:11 · 2585 阅读 · 5 评论 -
java中POJO, PO,VO,DTO,BO,DAO的简单理解
Java开发过程中,很多项目里面的都会有如下包model、entity、vo、dto、bo、vo等等。实体对象有如:xxxEntity、xxxDTO、xxxBO、xxxVO等等。这些主要是一种使用规范,起到见名知意的作用。POJO(Plain Ordinary Java Object)简单的java对象,各种java对象的简称Entity、DO、PO(persistant object)持久对象,最常用实体类,和数据表一一对应,一个实体一张表DTO(data transfer o.原创 2021-09-23 14:13:43 · 1362 阅读 · 0 评论 -
@Autowired注入static静态变量
开发过程中可以需要注入静态变量,但是如果使用常规方式,直接在静态变量上面使用@Autowired注解注入是不成功的,使用时报空指针异常,如下:常用的两种解决方式:一、使用构造方法注入@Componentpublic class TestBean { public TestBean(){} // 静态变量 private static DictService dictService; // 构造方法注入静态变量 @Autowired p.原创 2021-08-27 10:27:16 · 7754 阅读 · 1 评论 -
报错:“JSR-303 validated property ‘xxx.id‘ does not have a corresponding accessor for Spring data bindi
使用注解@Validated和@Valid做入参校验,结果报错:"JSR-303 validated property 'xxx.id' does not have a corresponding accessor for Spring data binding - check your DataBinder's configuration (bean property versus direct field access)"解决方法,在全局异常处理类里面添加如下配置即可,大概意思是:将Spring原创 2021-07-09 09:29:23 · 2088 阅读 · 0 评论 -
RocketMQ Api在springboot中简单使用
RocketMQ普通消息的简单使用demo官方文档:http://rocketmq.apache.org/docs/simple-example/第一步:pom文件添加依赖原创 2021-06-03 16:34:22 · 571 阅读 · 0 评论 -
springboot Mybatis基本数据源配置
第一步:pom文件添加依赖 <!-- mybatis 相关依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency>原创 2021-05-25 15:36:20 · 741 阅读 · 3 评论 -
ES 字段类型设置导致term查询失效问题
问题:es里面有一个字段存储的数据类似 A、B、H这种大写字母,通过term查询不到数据,但是根据match可以查到,后来发现是因为es字段类型设置的问题,因为设置了该字段类型为text类型,导致es对存储的数据建立了分词索引,大写字母都转成小写了,把类型改为keyword就可以了设置mapping 字段映射"fieldName": { "type": "keyword"}注意问题1. 通过es提供的测试分词的接口,我们可以测试各字段的分词情况get http:/ip/索原创 2021-04-01 18:25:53 · 3958 阅读 · 0 评论 -
JAVA日期时间常用工具类
记录一下常用的时间工具类1. 创建时间格式枚举类似于常量定义,方便使用package com.zhh.util.dateutil;/** * 时间字符串格式枚举 * */public enum DateFormatter { /** *将日期格式化为日期/时间字符串,或者从给定字符串的开头解析文本,生成格式为“yyyy-MM-dd”的日期 */ Year_To_Day("yyyy-MM-dd"), Year_To_Hour("yyy原创 2020-06-11 14:34:33 · 579 阅读 · 0 评论 -
开发电脑不能连接互联网,复制文本太不方便了吧,其实不用慌!
实现背景: 在公司上班使用两台电脑,开发电脑、互联网电脑,开发电脑是不能连接互联网的,项目开发使用,互联网电脑是用来连接互联网使用的; 平时和其他外部人员沟通都是使用互联网电脑或者手机,一旦出现下面这种情况就比较麻烦了: 我在和外部人员联调,需要给他发订单id,订单号等等信息,这些数据都是在开发电脑了,不能联网怎么办? 1.拍照(我方便,他不方便啊),2.手动输入(实在太麻烦了,错一个都不行),3.U盘复制到互联网电脑(还是麻烦) 所以就想着做一个 文本转二......原创 2020-06-10 19:17:14 · 681 阅读 · 2 评论