- 博客(17)
- 收藏
- 关注
原创 三、Mysql索引原理
如果你定义了主键,InnoDB 就会使用主键来构建聚簇索引。如果你没有定义主键,InnoDB 会选择第一个所有列都定义为 NOT NULL 的唯一索引来作为聚簇索引。如果上述两者都不满足,InnoDB 会在内部自动生成一个名为 GEN_CLUST_INDEX 的隐藏的、6 字节的行 ID(Row ID)作为聚簇索引。
2025-09-15 15:07:31
758
原创 一、Mysql简介及其架构
DDL : 数据库结构操作 create、alter、drop、RENAME等等DML : 数据操作语句 insert、update、deleteDQL : 数据检索语句 whereDCL : 权限控制语句TCL :事务相关 commit、savepoint、rollback等等。
2025-09-15 11:08:17
1026
原创 ConcurrentHashMap原理分析
从协助扩容判断条件可以看出必须Node节点是MOVED状态即FWD节点才会触发,而节点是FWD的前提是nextTable不为空,所以这里也可以控制住。HashMap底层基于Node数组+链表(红黑树实现),初始容量是16. 下标索引是hash&(数组长度-1)获取:index =HashMap大小是2的n次幂,扩容是n<<1.而HashTable的大小不是,扩容:newsize = olesize*2+1。(fh = f.hash) == MOVED,fwd占位符的hash值默认为MOVED=-1。
2025-08-15 21:41:08
862
原创 ReentrantLock原理分析&5种方式实现生产者和消费者
signal是将指定等待队列中的firstwaiter节点挪到同步队列的队尾等待获取锁。
2025-08-15 20:57:10
1609
原创 JVM模拟问题定位
但是在生产环境问题往往是比较复杂的,就需要GC日志协助分析了,可以通过GC分析工具如GCeasy、gcviewer等进行分析。下面就是要分析具体是什么原因导致内存占用较高(这里我们为了测试将堆内存设置的很小,现网情况如果代码和设置都没问题可能增加内存就行了)。注意:暴力分析是最原始的方法,是在事后只有thread快照文件且无分析工具的场景下的不得已。如果我们想全量排查下我们的代码有没有线程安全的隐患,还可以对线程的快照文件进行暴力分析。我们也可以不经过上面的分析步骤,直接将快照文件丢给专业的分析工具。
2025-07-30 14:18:39
721
原创 JVM类加载机制和内存模型
JVM(Java虚拟机)是一个抽象化的计算机模型,作为Java程序运行的执行引擎,它通过加载和解释Java字节码,并借助即时编译(JIT)技术将其转换为特定平台的本地机器指令,同时自动管理内存分配与垃圾回收,实现了Java"一次编写,到处运行"的跨平台特性。JVM是一套规范,不同的厂商有不同的JVM实现产品,比如 Oracle 有Hotspot、JRockit,IBM的J9VM,阿里的taobaoVM等。
2025-07-25 17:32:07
586
原创 一、[JAVA WEB]Java Web发展史介绍
参考文档:https://www.cnblogs.com/whx7762/p/7723508.htmlhttps://blog.youkuaiyun.com/weixin_39893958/article/details/84389384https://www.jianshu.com/p/79781dff3fd4简介1995年java语言的诞生,刚好赶上了网络时代,java三大军:JavaSE(桌面程序, Java Platform Standard Edition),JavaME(手机端,Java Plat
2021-08-15 13:42:13
1805
原创 shell脚本实现设置redis key值失效时间
Redis 失效时间设置redis 127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDSredis 127.0.0.1:6379> SET runooobkey redis一、问题背景历史方案中有个需求是要求首页流量地图中的流量信息定时10分钟刷新一次。原有的实现方案是界面刷新调用restful接口查询实时流量信息。流量信息查询时会先从redis中获取预存的数据并直接返回给界面,如果从redis中取不到才会去msql中获取最新数据返回并同时存入r
2021-06-24 15:34:45
623
原创 java 使用ObjectMapper实现json文件读取与写入
java 使用ObjectMapper实现json文件读取与写入需求背景:跟第三方对接,第三方定时上传json格式的文件至ftp服务器,定时取json文件并解析入库。将数据处理后生成json文件给另外一个系统使用。 刚开始的思路是,通过IO读取文件成字符串,然后使用ali的fastJSON转换为JSONObject,但是发现报错,原因是我们通过IO获取的字符串格式如下 {"163":{"MAN":{"vecIn":"99999","vecOut":"88888","baseLineIn":"999
2021-06-01 19:06:38
2781
原创 设计模式8.委派模式和模板方法模式
一、委派模式委派模式定义委派模式(Delegate Pattern) 又叫委托模式。它的基本作用就是负责任务的调度和分配,将任务的分配和执行分离开来。可以看做是一种特殊情况下的静态代理的全权代理。不属于GOF 23种设计模式之一。属于行为型模式。...
2021-04-07 01:51:57
263
1
原创 设计模式-2.单例模式
单例模式(Singleton Pattern)源码中使用spring --AbstractFactoryBean定义: 单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。隐藏其所有的构造方法。属于创建型模式。单例模式的使用场景ServletContext、ServletConfig、ApplicationContext、DBPool单例模式的常用写法:饿汉式单例懒汉式单例注册式单例ThreadLocal单例1. 饿汉式单例/** * 优点:执行效率高,
2020-06-12 00:00:32
46
原创 设计模式-1.工厂模式
一、简单工厂模式源码举例: Calender、LoggerFactory定义: 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。...
2020-06-10 22:09:27
52
原创 SpringBoot 部署到linux环境
SpringBoot 部署到linux环境参考文档:执行 java -jar topo.jar报错空指针通过错误可以看出获取Project为空查看初始化逻辑,获取文件路径失败。这种写法在eclipse中可以执行成功,但是在jar包中获取文件路径就失败了解决方法欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用...
2020-03-18 19:01:43
892
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅