java
文章平均质量分 83
.
mrathena
这个作者很懒,什么都没留下…
展开
-
JDK APT(Annotation Processing Tool) 编译时注解处理器
博文目录原创 2024-05-09 16:22:14 · 312 阅读 · 1 评论 -
Spring 启动过程 解析配置类
博文目录原创 2024-01-27 14:33:10 · 335 阅读 · 0 评论 -
Redisson 延时队列 监听线程中调用 return 造成线程终止 消息积压 无法被消费
监听线程死循环 take 阻塞队列, 当延时队列中的消息到期, 会被转存到阻塞队列共监听线程消费, 如果一定时间内未消费, 则会创建普通队列, 并把消息转存进去, 待监听线程重新上线, 先读取普通队列内的消息, 读取完后会删除普通队列, 再阻塞读取阻塞队列内的消息。开发使用 Redisson 延时队列, 完成编码后, 自测没有问题, 在发版时以夹带私货的方式上线了, 在生产运行中出现消息消息无法消费的情况。生产上线不要夹带私货, 私货往往没有经过完整的测试流程验证, 容易出问题。原创 2024-01-23 11:47:37 · 656 阅读 · 0 评论 -
Spring 启动过程
Spring启动流程详解通常,我们说的 Spring 启动,就是构造 ApplicationContext 对象以及调用 refresh() 方法的过程。原创 2024-01-15 11:19:12 · 1040 阅读 · 0 评论 -
JDK 21 虚拟线程 (Virtual Thread)
博文目录原创 2023-12-18 08:46:57 · 559 阅读 · 0 评论 -
JDK 9 模块化系统 (Java Platform Module System) 和 多版本兼容 Jar (Multi-Release Jar)
基本上,您有一个标准的JAR文件,像往常一样,在根目录中包含应用程序中的所有类,在META-INF中还有一个额外的 “versions” 文件夹,其中包含每个额外支持的Java版本的特定实现(在本例中,只有Java 9)。, 那么这个 Jar 就是一个多版本兼容 Jar 了, 在不同的 Java 环境下, 会自动选择合适版本的类. 这里有一个隐藏规范, 就是多个版本的类的 API 需要完全一致, 这个不是必须, 但是建议一致, 不然在使用中可能会出问题。从Java 9开始,还有一种选择。原创 2023-12-06 15:25:55 · 1778 阅读 · 0 评论 -
Spring 实例化 构造方法 工厂方法
文章目录内容总结内容总结原创 2023-11-15 14:07:38 · 292 阅读 · 0 评论 -
Spring 循环依赖
循环依赖只存在于 Spring 中, 是因为 Spring 创建 Bean 的流程中, 依赖注入的时候, 会去再次创建依赖的 Bean, 导致了存在循环依赖的问题。原创 2023-11-09 16:33:28 · 210 阅读 · 0 评论 -
Spring 依赖注入
文章目录内容总结内容总结原创 2023-10-20 14:14:13 · 225 阅读 · 0 评论 -
Spring Bean 的生命周期
文章目录原创 2023-10-17 10:44:08 · 192 阅读 · 0 评论 -
Spring 学习源码的基础 核心原理与核心概念
文章目录核心底层原理核心底层原理原创 2023-08-24 14:52:32 · 407 阅读 · 0 评论 -
Spring 5.3.29 源码编译 环境搭建
文章目录原创 2023-08-21 17:13:38 · 587 阅读 · 0 评论 -
密码强度校验 工具包
【代码】密码强度校验 工具包。原创 2023-07-20 00:54:56 · 255 阅读 · 0 评论 -
Windows Java JavaFX IntelliJ IDEA 开发环境搭建 创建工程 编译运行 打包分发 自定义运行时
JavaFX 主要致力于富客户端开发,以弥补 swing 的缺陷,主要提供图形库与 media 库,支持 audio,video,graphics,animation,3D 等,同时采用现代化的 css 方式支持界面设计。从那之后,JavaFX 要求使用 Java 模块化系统来运行 JavaFX。跟 java 在服务器端和 web 端成绩相比,桌面一直是 java 的软肋,于是 Sun 公司在 2008 年推出 JavaFX,弥补桌面软件的缺陷,请看下图 JavaFX 一路走过来的改进。原创 2023-04-23 23:40:23 · 7063 阅读 · 1 评论 -
Java 16 JPackage 打包可执行 exe
com.mrathena.Gui打包 jar (idea 自带功能)demo.jar, 大小 862KB, 确保执行 能正常运行, 打开窗体部分参数说明application package suitable安装程序, 而不是直接运行程序application image直接可运行程序, 其实就是安装程序安装完成后生成的内容--指定打包目录, 该目录下的所有内容都会被打包, 在其他参数里引用该目录下的文件可使用相对路径生成物的输出路径, 当原创 2023-03-29 17:29:33 · 1083 阅读 · 0 评论 -
opencv java windows 环境搭建
博文目录文章目录OpenCV下载安装Java 加载 dll 库Maven 工程配置测试 OpenCV 加载是否正常工具类 MatKit 将 Mat 转换为 BufferedImage 并弹窗展示第一个示例程序 模板匹配(大图中找小图, 不支持旋转缩放找图)OpenCVOpenCV 官网OpenCV 是使用C/C++开发的, 然后开放了其他多种语言的调用入口, java利用JNI的方式调用OpenCV函数下载安装OpenCV GitHub Releases到OpenCV的GitHub的原创 2022-01-12 12:39:32 · 3081 阅读 · 0 评论 -
JDK java.util.ArrayList
多个线程同时扩容,同时获取到了旧的elementData,线程a先生成了新的elementData,并拷贝好旧元素,并添加好新元素(size++,假设新元素的位置是10,执行后size变成11).线程b这时候也生成了新的elementData(这个数组里没有线程a添加的新元素),并拷贝好旧元素,接下来添加新元素的时候,获取到的size是11,即b将新元素放到了位置11.最终导致丢失了a添加的新元素,但是位置却空出来了,即位置10变成了null,导致出现了空元素。...原创 2022-07-28 12:16:22 · 1676 阅读 · 0 评论 -
JDK 原子类工具 (java.util.concurrent.atomic)
博文目录原创 2022-06-10 12:24:21 · 542 阅读 · 0 评论 -
JDK 无锁原子操作 Unsafe CAS自旋 实现线程安全
博文目录原创 2022-06-10 11:03:28 · 340 阅读 · 0 评论 -
JDK 队列工具 (Queue Deque BlockingQueue BlockingDeque TransferQueue)
博文目录原创 2022-06-08 21:14:15 · 783 阅读 · 0 评论 -
JDK java.util.concurrent 说明
博文目录java.util.concurrent.atomicjava.util.concurrent.locks原创 2022-06-08 21:09:56 · 312 阅读 · 0 评论 -
Java swing VerticalFlowLayout 垂直流布局 可调整水平/垂直对齐 可填充列 可换列
博文目录一开始找到了上面的那个垂直流布局的实现, 用倒是能用, 就是自定义 hgap 的时候 (hgap>5), 显示就有问题, 且hgap越大, 显示偏差也越大另外, 该实现里, 对 hfill 和 vfill 的定义不太清晰, 就莫名很不爽 …然后又找到了下面的这个实现, 作为参考, 加上对 FlowLayout 做了一些研究, 写了一个完全满足我自己代码洁癖的原创 2022-06-02 08:11:04 · 3350 阅读 · 0 评论 -
Java 使用 JNA(Java Native Access) 调用 Windows API
博文目录文章目录JNA 调用 Windows API 真的非常简单环境使用举例CreateToolhelp32Snapshot function (tlhelp32.h)PrivateExtractIconsW function (winuser.h)DemoCreateToolhelp32Snapshot function (tlhelp32.h)PrivateExtractIconsW function (winuser.h)JNA 调用 Windows API 真的非常简单环境JNA Gi原创 2022-05-29 23:14:02 · 5207 阅读 · 1 评论 -
Dubbo 线程污染 PageHelper SQL 莫名多了一个 Limit 子句
博文目录文章目录问题说明问题解决问题说明业务报错, 内容是SQL语法错误, 类似这样的, select name from table limit 1 LIMIT 10, 在正常的SQL后面多加了一截 LIMIT 10通过分析发现, 是因为PageHelper使用不正确导致了这个问题, 详细原因如下有一段业务代码如下, 在第二行转换Date时因为requestNo字段为null报错, 导致执行了startPage却没有执行SQL, 从而影响了后续SQL的执行, 为什么会影响到后续SQL的执行呢?原创 2021-02-01 17:19:07 · 724 阅读 · 0 评论 -
JDK Thread interrupt 中断
博文目录文章目录线程中断中断说明代码验证使用JDK Thread join线程中断通过 stop 来终止线程太过粗鲁, 且不安全, 可能有某些资源没有关闭, 锁没有释放等造成问题通过 interrupt 给线程设置中断标记, 是否响应中断, 由线程自己来决定, 可以更温和地在线程安全点终止线程可以通过线程中断标记, 在一定程度上做到线程通信中断说明thread.interrupt(), 给指定线程设置中断标记thread.isInterrupted(), 获取指定线程的中断标记Th原创 2022-05-18 18:11:13 · 318 阅读 · 0 评论 -
JDK Thread join
博文目录文章目录thread.join() 的作用原理为什么主线程里要调用 子线程.join()? 而不是 主线程.join()?wait() 的线程需要 notify() 才能被唤醒, 为什么子线程执行完后主线程会自动被唤醒?使用(四)Thread.join的作用和原理thread.join() 的作用谁调用 thread.join() , 谁就会被阻塞, 等待 thread 线程执行结束, 才会被唤醒, 接着 thread.join() 之后继续执行假设主线程创建了一个子线程 threa原创 2022-05-18 17:33:45 · 294 阅读 · 0 评论 -
JDK java.util.concurrent.locks.LockSupport
博文目录文章目录java.util.concurrent.locks.LockSupport类结构类源码park()unpark()parkNanos(long nanos)parkUntil(long deadline)举例java.util.concurrent.locks.LockSupportLockSupport解析与使用since 1.6LockSupport 提供 park() 和 unpark() 方法实现阻塞线程和解除线程阻塞,实现的阻塞和解除阻塞是基于”许可(permit原创 2022-05-07 10:56:39 · 1243 阅读 · 0 评论 -
JDK synchronized wait notify/notifyAll Lock Condition await signal/signalAll
博文目录文章目录原创 2022-04-27 13:46:28 · 743 阅读 · 0 评论 -
判断 Java 程序的运行方式, file(在IDE中运行) 或 jar(以jar包方式运行)
博文目录文章目录java判断是ide还是jar包运行System.out.println(Main.class.getResource("").getProtocol());if (Main.class.getResource("").getProtocol().equals("jar")) { // 以 jar 的方式运行}原创 2022-04-25 20:28:16 · 1752 阅读 · 0 评论 -
JVM 汇编指令 栈和局部变量操作
博文目录文章目录将常量压入栈的指令从栈中的局部变量中装载值的指令将栈中的值存入局部变量的指令wide指令通用(无类型)栈操作类型转换整数运算逻辑运算移位操作按位布尔运算浮点运算对象和数组对象操作指令数组操作指令控制流条件分支指令比较指令无条件转移指令表跳转指令异常finally子句方法调用与返回方法调用指令方法返回指令线程同步JVM指令助记符将常量压入栈的指令aconst_null将null对象引用压入栈iconst_m1将int类型常量-1压入栈iconst_0原创 2021-01-14 17:56:40 · 464 阅读 · 0 评论 -
面试题摘要汇总
博文目录文章目录面试面试原创 2021-12-31 11:04:24 · 324 阅读 · 0 评论 -
JVM 类加载机制
博文目录文章目录类加载ClassLoader.loadClass 流程类加载器类加载器初始化过程双亲委派机制全盘负责委托机制自定义类加载器打破双亲委派机制Tomcat 打破双亲委派机制模拟tomcat类加载当通过java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM,然后才是main方法的调用,Windows系统中大致流程如下java com.mrathena.jvm.Mathjava.exe调用底层的jvm.dll文件创建Java虚拟机(C++实现)创建引导原创 2021-01-11 11:05:01 · 169 阅读 · 0 评论 -
JVM 内存模型与参数设置
博文目录文章目录JVM虚拟机JVM 内存模型 运行时数据区 Run-Time Data Areas堆 HeapGC大致过程STW - Stop The World在minor gc过程中对象挪动后,引用如何修改?栈 Java Virtual Machine Stacks特点虚拟机栈的StackOverflowError虚拟机栈的OutOfMemoryError栈帧(Stack Frame)局部变量表操作数栈动态链接方法出口程序计数器(Program Counter Register)特点本地方法栈(Nat原创 2021-01-14 15:04:47 · 588 阅读 · 0 评论 -
JVM 垃圾回收器 Serial&Parallel&ParNew&CMS
博文目录文章目录垃圾回收算法分代收集理论标记-复制算法标记-清除算法标记-整理算法垃圾收集器Serial收集器 (Serial + Serial Old)Parallel Scavenge收集器 (Parallel + Parallel Old)ParNew 收集器 (新老年代都能用??)CMS收集器 (老年代专用)案例说明 亿级流量电商系统如何优化JVM参数设置垃圾收集底层算法实现垃圾回收算法分代收集理论当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同原创 2022-01-07 15:17:33 · 295 阅读 · 0 评论 -
JVM 垃圾回收器 G1&ZGC
博文目录文章目录G1运作过程G1垃圾收集分类G1G1 (Garbage-First)是一款面向服务器的垃圾收集器, 主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时, 还具备高吞吐量性能特征.1.7和1.8就已经有G1了, 但是还不完善, 1.9的时候默认使用G1了G1将Java堆划分为多个大小相等的独立区域(Region),JVM目标是不超过2048个Region(JVM源码里TARGET_REGION_NUMBER 定义),实际可以超过该值,但是不推荐。原创 2022-01-10 15:53:14 · 282 阅读 · 0 评论 -
JVM 对象创建与内存分配
博文目录文章目录对象的创建类加载检查分配内存划分内存的方法:解决并发问题的方法:初始化零值设置对象头32位对象头64位对象头对象头在hotspot的C++源码markOop.hpp文件里的注释如下:执行方法对象大小与指针压缩指针压缩指针压缩的原因对象内存分配对象内存分配流程图对象栈上分配对象逃逸分析标量替换标量与聚合量示例对象在Eden区分配大对象直接进入老年代长期存活的对象将进入老年代对象动态年龄判断老年代空间分配担保机制对象内存回收引用计数法可达性分析算法常见引用类型finalize()方法最终判定对原创 2022-01-01 14:52:40 · 284 阅读 · 0 评论 -
RSA 工具包
博文目录文章目录JDK Version: Oracle JDK 1.8.0_202package com.mrathena.toolkit;import com.mrathena.exception.ServiceException;import javax.crypto.Cipher;import java.nio.charset.Charset;import java.nio.charset.StandardCharsets;import java.security.*;impo原创 2021-04-04 23:48:32 · 502 阅读 · 0 评论 -
AES 工具包
博文目录文章目录JDK Version: Oracle JDK 1.8.0_202package com.mrathena.toolkit;import com.mrathena.exception.ServiceException;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.IvParameterSp原创 2021-04-04 23:37:26 · 353 阅读 · 0 评论 -
Spring AOP 流程简述
博文目录文章目录AnnotationAwareAspectJAutoProxyCreatorSpringBoot 注解方式使用 @EnableAspectJAutoProxy 开启 AOP 功能, 该注解通过 @Import(ImportBeanDefinitionRegistrar) 的方式导入并注册了一个 BeanDefinition, 即 AnnotationAwareAspectJAutoProxyCreatorAnnotationAwareAspectJAutoProxyCreator原创 2021-05-17 18:52:24 · 275 阅读 · 0 评论 -
Spring 基础概念
博文目录文章目录BeanFactoryBeanFactoryAutowireCapableBeanFactoryHierarchicalBeanFactoryListableBeanFactoryConfigurableBeanFactoryConfigurableListableBeanFactoryDefaultListableBeanFactoryApplicationContextAnnotationConfigApplicationContextPropertyEditor 属性编辑器Bea原创 2020-11-05 14:32:49 · 236 阅读 · 0 评论