
JAVA
文章平均质量分 58
万物皆字节
思君 思国 思社稷,
赏花 赏月 赏秋香
展开
-
spring boot3框架@Validated失效
在网上查了相关资料,添加了spring-boot-starter-validation依赖但还是不行。springboot3添加@Validated后校验的是 javax.validation.constraints 包下的注解,有加了spring-boot-starter-validation还没生效的,可以按照这个方向去排查一下;但是项目引用的还是javax.validation.constraints包下的注解,导致不生效;经过层层调试,终于发现问题;原创 2024-09-04 10:07:56 · 1335 阅读 · 0 评论 -
让人迷糊的ThreadLocalMap,看清他的本质
我们怎么才能更好的理解这个数据机构呢,首先给出答案:其实我们被他的名字弄迷糊了,他存数据的结构其实本质上是一个Array,我们把ThreadLocalMap改名成ThreadLocalArray就很清晰了;比如我们项目中创建了多个ThreadLocal对象A、B、C,并且每一个对象都调用了set方法,那么上面的数组就会被填充多个值;底层原理就是根据上面的对象A、B、C计算出这些对象在Entry数组中应该占用的位置,然后将set方法传的值保存进去。2、获得当前线程对象的ThreadLocalMap属性。原创 2024-04-14 10:06:45 · 265 阅读 · 0 评论 -
【工具】将类里的属性解析成属性描述的JSONArray数组
新建一个类,将类里的属性逐个解析出来,用一个json对象封装每一个属性的描述,展示上下级关系;原创 2024-04-07 21:00:30 · 384 阅读 · 0 评论 -
通过枚举类型和名称匹配实例
Class有一个getEnumConstants()方法,可以获得这类所有的枚举实力,通过下面的方法实现通过名称查询枚举实例。原创 2023-11-04 15:34:18 · 258 阅读 · 0 评论 -
基于spring-boot框架,监听nacos配置变化(比如运行中改变日志级别)
如果想在运行过程中想基于nacos数据变更做一些业务,比如想在运行过程中变更日志的级别,那么我们可以扩展nacos的监听。这个方法必须要有一个String类型参数,否则不会生效;这个参数就是变更后的文件;原创 2023-10-29 12:35:12 · 2463 阅读 · 0 评论 -
JAVA泛型使用常用场景
在公共组件开发过程中,泛型使用常常是框架灵活性的一个重要手段。总结了一下,我在开发过程中泛型使用和设计主要是这几个方面。原创 2023-07-23 14:03:22 · 301 阅读 · 1 评论 -
【我的开源】拿来即用!代码生成器:mybatis-plus-generator自定义模板生成 DTO、VO、Convertor、增删改查方法
在开发后台管理系统的时候,感觉基本上操作都是一样的:curd,于是借助并扩展mp的代码生成器自动生成一套api,减少重复劳动而且还统一规范,何乐而不为原创 2022-08-06 21:16:03 · 8526 阅读 · 1 评论 -
怎么理解输入输出流
输入输出流之我解原创 2023-02-04 11:09:06 · 886 阅读 · 1 评论 -
@Pointcut 配置用法浅析
@Pointcut 的 12 种用法原创 2022-12-17 13:07:09 · 1825 阅读 · 1 评论 -
Random带种子与不带种子的区别
Random带种子与不带种子的区别原创 2022-11-12 09:26:54 · 496 阅读 · 0 评论 -
冷知识-神奇的【Unicode】 \u000d之流
什么,你说java代码被注释了就不会被执行了?原创 2022-08-20 12:05:40 · 517 阅读 · 0 评论 -
冷知识:JMX、Java Virtual Machine Tool Interface (JVMTI)
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。–todo 202112...原创 2021-12-25 10:39:42 · 1066 阅读 · 0 评论 -
MapStruct 对象间属性复制
在JAVA项目开发过程中,经常会设计到对象间属性值拷贝,这种场景有多个框架或者技术可以实现,比如Spring和Apache给我们提供了BeatUtils工具,但是他的实现机制是通过反射,导致拷贝属性的花费时间较长,性能很低。这里我们介绍一个新的框架MapStruct来实现。...原创 2021-12-11 19:33:23 · 1260 阅读 · 0 评论 -
JAVA AbstractProcessor javac代码编译期SPI接口
在使用spring-boot开发过程中,自定义属性映射yml中自定义配置时有个有趣的现象:在java类里点住ctrl就会跳转到对应的yml具体配置项,很好奇这是什么黑科技;下来研究一番终于大概知道了其一点内在乾坤,首先我们需要引入该依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo原创 2021-02-06 12:21:41 · 1160 阅读 · 0 评论 -
按照固定编码读取和写入文件
这是我最喜欢的流组合处理方式:read:FileInputStream fis=new FileInputStream("E:/phsftp/evdokey/evdokey_201103221556.txt"); InputStreamReader isr=new InputStreamReader(fis, "UTF-8"); Buffere...原创 2017-01-08 22:20:21 · 527 阅读 · 0 评论 -
理解ClassLoader双亲委托模型关键
看图Bootstrap classLoader:采用native code实现,是JVM的一部分,主要加载JVM自身工作需要的类,如java.lang.*、java.uti.*等; 这些类位于$JAVA_HOME/jre/lib/rt.jar。Bootstrap ClassLoader不继承自ClassLoader,因为它不是一个普通的Java类,底层由C++编写,已嵌入到了JVM内核当中...原创 2017-06-30 20:53:07 · 1943 阅读 · 3 评论 -
JAVA中常用的Map和Collection数据结构图解
HashMap概述最外层数据存储在Entry数组中,拥有相同hashcode的Entry由next属性关联/** * The table, resized as necessary. Length MUST Always be a power of two. */ transient Entry[] table;HashMap内部类stat...原创 2017-08-17 20:42:08 · 2059 阅读 · 0 评论 -
涉及AbstractQueuedSynchronizer使用-CountDownLatch等
AbstractQueuedSynchronizer是一个在并发开发中常用的抽象类,但是可能很多童鞋没有注意到因为我们间接用的都是它的子类;如下这些(是不是很眼熟):java.util.concurrent.CountDownLatchjava.util.concurrent.locks.ReentrantLockjava.util.concurrent.FutureTaskj...原创 2017-08-19 09:33:12 · 388 阅读 · 0 评论 -
JAVA byte取值范围表达理解
我们知道JAVA中byte是一个字节来进行存储的,即8位二进制数,可以表示的数字有256个但计算机中需要表示正数和负数,那么负数在计算机中怎么表示呢?这里涉及一个新的概念就是模:模即n位m进制能表示的数字的个数,那么8位二进制数的模就是256如果是两位10进制数呢,那就可以表示 0-99 这100个数,即模是100补数:范围在 1->...原创 2017-12-02 16:40:13 · 2665 阅读 · 0 评论 -
AspectJ与CGLIB
AspectJa seamless aspect-oriented extension to the Javaprogramming languageJava platform compatible原创 2018-02-03 21:30:31 · 3297 阅读 · 2 评论 -
JAVA GC回收方式
JVM堆分为新生代,旧生代/年老代,新生代可用的gc方式有:串行gc(Serial Copying),并行回收gc(Parellel Scavenge),并行gc(ParNew),旧生代/年老代可用的gc方式有串行gc(Serial MSC),并行gc(Parallel MSC),并发gc(CMS)。不知道是不是这样的。资料推荐参考:http://caizi12.ite...原创 2016-08-10 22:15:50 · 649 阅读 · 0 评论 -
使用commons codec提供的base64
maven引入依赖:<dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId...原创 2019-09-16 11:11:23 · 2319 阅读 · 0 评论 -
JAVA “NIO”浅析
关于JAVA "NIO" 相关资料网上太多,如果你在网上一搜结果里一般就会说什么bio是一个线程处理一个tcp连接,什么调用read就阻塞直到有内容,而nio是通过单线程轮询方式,不会产生线程阻塞;然后就贴出一堆关于Socket ServerSocket,SocketChannelServerSocketChannel的代码,让人感到疑惑到底什么是NIO其实看到这些概念我是懵逼(上面说的都没...原创 2019-07-13 13:09:37 · 223 阅读 · 0 评论 -
Disconf 配置中心搭建与client使用
帮助文档链接:http://disconf.readthedocs.io/zh_CN/latest/github地址:https://github.com/knightliao/disconfdemos:https://github.com/knightliao/disconf-demos-javawiki:https://github.com/knightliao/disconf...原创 2018-08-09 12:22:51 · 712 阅读 · 0 评论