logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

被volatile玄学问题折磨两年,大模型一句话给我整明白了

虽然这两种微调都能让程序结束,但千万不要在实际开发中这么写!这两个方法都是依赖JVM实现细节的“旁门左道”,完全不可靠。想要保证程序正确结束,唯一正确的做法就是给flag加上volatile关键字。这就像考试的时候,你知道正确答案是A,但偏要写个C,结果老师批卷的时候眼花给你打了对勾。这不是你厉害,只是运气好而已。

文章图片
#java#开发语言
一文吃透Java泛型:T、E、K、V、? 符号全解析

符号含义核心场景示例代码T通用类型工具类、包装类、不确定类型E元素类型集合框架(List、Set等)List<E>K键类型键值对结构(Map、缓存)Map<K, V>Pair<K, V>V值类型键值对结构(Map、缓存)Map<K, V>Pair<K, V>?未知类型通用方法参数、灵活类型适配List<??extends T。

文章图片
#java#windows#开发语言
MySQL 索引的最左前缀匹配原则:原来这么好懂

最左前缀匹配原则其实就是联合索引的“使用规则”,核心就是“从左到右,不能跳过”。我认为只要记住“最左前缀是关键,跳过前面的字段就没用”,再结合实际场景多测试,就能轻松掌握。建联合索引的时候,一定要结合自己的业务查询场景来设计字段顺序,不能盲目拼接字段,否则索引建了也用不上,还会占用存储空间、影响增删改的性能。如果不确定索引是否合理,多用水晶球EXPLAIN分析执行计划,慢慢就能找到最优的索引设计方

文章图片
#java#mysql
秒懂 MySQL 索引下推:从查询原理看清有无下推的核心差异

索引下推的核心差异:无下推时存储引擎只筛索引前缀列,服务层全量回表后筛剩余条件;有下推时存储引擎利用索引内的非前缀列提前过滤,大幅减少回表IO。性能提升的关键:减少无效回表次数——回表是磁盘IO操作,每少一次,查询效率就高一分。EXPLAIN看Extra列,即生效,则未生效。其实索引下推的本质很简单:让离数据最近的存储引擎多做筛选,少让服务层做“无用功”。理解了存储引擎和服务层的交互逻辑,有无下推

文章图片
#mysql#android#数据库
我的笔记:怎么用 MySQL 的 EXPLAIN 来分析 SQL

我常常用EXPLAIN来调优慢查询;索引不见得越多越好,但没有关键索引,查询肯定会慢;同一个WHERE条件写法不同,执行计划也可能变化,所以写 SQL 的时候注意表达方式;多表关联的时候,EXPLAIN能帮我判断哪个表应该做先驱表(这个在复杂联查里特别重要)。总的来说,我认为EXPLAIN就像是数据库对你说:我打算怎么执行这条 SQL。理解它,不是为了背输出字段,而是为了能根据结果判断这条 SQL

文章图片
#mysql#sql
为什么 main 方法是 public static void ?

来源:一个老码农的 JVM 笔记刚学 Java 的时候,老师让我们写的第一行代码就是:那时候不懂,只觉得这行代码又长又拗口。为什么要 ?不写行不行?为什么是 ? 又是啥意思?这一串括号和中括号又是闹哪样?今天,我就从“JVM 启动”的角度,把这个问题掰开揉碎,讲个明白。这是最关键的一点。你写的 Java 程序,不是自己跑起来的。它是被 Java 虚拟机(JVM) 启动的。当你在命令行敲下:JVM

文章图片
#java#jvm
Java DateTimeException:Unable to obtain LocalTime from TemporalAccessor问题解决

如果不想引入,可以通过自定义解析规则,只提取时间字段,忽略日期字段。这种方案更灵活,适合复杂的解析场景。try {// 关键:自定义TemporalQuery,仅提取LocalTime字段});System.out.println("订单支付时间:" + payTime);// 输出:15:30:45System.err.println("时间解析失败:" + e.getMessage());包含

文章图片
#java#开发语言
解决Maven打包时报错“The packaging for this project did not assign a file to the build artifact“

我在打包时用的是下面红色框的Plugins插件,但是我的pom里面有没有引入这个插件,所以导致使用报错。如果使用maven本身的Lifecycle里面的install命令,即上面蓝框的命令就不会出错。今天在IDEA中打包Maven项目安装到本地仓库时报错。

文章图片
#maven#java#android
什么是协程?

线程从属于进程,是程序的实际执行者。但又因为进程拥有独立的内存空间,所以它的上下文切换(栈,寄存器,页表,文件句柄等)开销就比较大,但是相对来说进程的运行就比较安全稳定。协程的主要应用场景是 IO 密集型任务,总结几个常见的使用场景:网络请求,比如爬虫,大量使用 aiohttp、文件读取, aiofile、web 框架, aiohttp, fastapi、数据库查询,协程对计算密集型的任务也没有太

文章图片
#linux#运维#服务器
JVM内存模型分析

本文是对JVM的内存模型进行分析,帮助同学们进行理解。JVM(Java虚拟机)主要包括五块区域,分别是程序计数器、虚拟机栈、本地方法栈、堆、方法区。在JVM当中堆和方法区各有一个,一条线程有一个栈和一个程序计数器。五块区域中当中变化最频繁是栈,最先有数据的是方法区,垃圾回收器主要针对的是堆。

文章图片
#jvm#java#开发语言
到底了