摘要:
在某些特殊需求场景下,需要将 Java 程序,也或者是 Springboot 项目打包成 exe 安装包。 面对这种比较刁难,而又必须得做的情况下,本文手把手教你如何将 Java 程序打包成 exe 程序。 通常有两种做法,一种是使用 Launch4j,一种是使用 exe4j。本文重点是讲解 exe 阅读全文
摘要:
Java MQ在实际业务场景中需要注意的问题 消息丢失: 发送方丢失:未存储到kafka,由于leader切换导致的丢失 消费方丢失:拉取到消息提交后尚未实际消费完成即异常了,导致拉取到的消息没有实际消费 重复消费:多个消费者消费同一partition提交时覆盖问题导致的重复 顺序消费:partit 阅读全文
摘要:
大部分工具都是基于或者要用到`JMX`,所以程序启动时需要添加参数`-Dcom.sun.management.jmxremote`开启JMX管理功能,JDK6及以上版本默认开启 ## jps jps:JVM Process Status Tool,功能与ps类似,可以列出正在运行的虚拟机进程,并显示 阅读全文
摘要:
## 字符串 SDS(simple dynamic string):redis自己构建的一种简单动态字符串,而没有直接使用C语言的字符串(在redis中C语言的字符串仅用在无需对字符串修改的地方,例如日志打印),SDS以空字符'\0'结尾,且不占用len里,会额外占用1字节空间,即`使用长度为N+1 阅读全文
摘要:
数据类型的选取原则: - **更小的通常更好**:尽量使用可以正确存储数据的最小数据类型(它们占用更少的磁盘,内存,cpu缓存,处理时需要的cpu周期也更少) - **简单**:简单数据类型的操作通常所需cpu周期更少,例如整型就是比字符串类型的操作代价更低 - **尽量避免NULL**:最好指定列 阅读全文
摘要:
# Map | map | 线程安全方式 | k/v为null | 数据结构(1.8) | 扩容机制 | 迭代器 | | | | | | | | | HashMap | 不安全 | 均可 | 数组+链表+红黑树 | 初始16,扩容2倍 | 容器本身 | | ConcurrentHashMap | 锁 阅读全文
摘要:
类图 类图是一种用来描述类之间关系的图形,它可以用不同的符号来表示不同的关系,比如: | 关系 | 表示形式 | 含义 | 示例 | | | | | | | 依赖关系 | 虚线箭头 | 一个类使用了另一类的方法属性,但不持有引用 | 一个类的方法参数是另一个类的对象 | | 关联关系 | 实线箭头 阅读全文
摘要:
AQS队列同步器 java.util.concurrent.locks.AbstractQueuedSynchronizer是一个同步器+阻塞锁的基本架构,用于控制加锁和释放锁,并在内部维护一个FIFO的线程等待队列,juc包下的锁,屏障等同步器多数是基于它实现的. AQS每当有新的线程请求资源时, 阅读全文
摘要:
原文链接 maven三种仓库 在 Maven 中,仓库指的是存放代码构建的一个位置。从分类上来说,Maven 仓库有两种类型,分别是: 本地仓库(Local) 远程仓库(Remote) 本地仓库,是存在于本地的一个仓库,它用来缓存下载的依赖包。这样就不用每次都通过网络去拉取依赖包了,提高了依赖拉取速 阅读全文
摘要:
为什么redis默认16个库,建议仅使用第一个库? 如果Redis各个库都有在使用,会有以下影响或者问题: 数据混乱:如果不同的应用程序使用同一个Redis的不同库,那么就可能出现键名冲突的情况,导致数据被覆盖或者错误地读取。 同一个Redis不同库会导致数据被覆盖数据混乱的原因是: 键名冲突:如果 阅读全文