自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(419)
  • 资源 (33)
  • 问答 (7)
  • 收藏
  • 关注

原创 几个MySQL系统调优工具

基于Java的MySQL / Percona / MariaDB 索引进行插入性能测试工具。一个模块化,跨平台以及多线程的性能测试工具。Percona开发的TPC-C测试工具。几个MySQL系统调优工具。

2025-05-24 22:33:09 618

原创 颠覆传统线程!协程为何成为高并发编程新宠?

协程是对线程做的进一步分割,和当初线程出现的场景差不多,由于进程太过于重量级,创建、调度和上下文切换都需要花费较多的系统资源,为了提升操作系统的并发性,创造出来了线程,线程的创建和切换消耗远远低于进程,但是现在对应用的并发度要求越来越高了,线程的切换也让人觉得有些笨重了,所以协程应运而生。我当时说知道呀,我还在携程上买过火车票呢,然后面试官笑了笑,什么都没有说。不过java原生是不支持协程的,如果要使用协程,需要引入协程框架,如Kilim。Task 协程的载体,使用execute方法来执行任务。

2025-05-24 22:30:51 209

原创 MySQL执行顺序

*order by :**按照什么样的顺序来查看返回的数据。**select:**查看结果集中的哪个列,或列的计算结果。**having:**对上面已经分组的数据进行过滤的条件。**group by:**如何将上面过滤出的数据分组。**from:**需要从哪个数据表检索数据。**where:**过滤表中数据的条件。

2025-05-19 15:34:43 520

原创 一文搞懂线程死锁:四大必要条件与避坑指南

只有以上四个条件同时满足时,才会造成死锁,所以破坏死锁的方式也就是只要使得四个条件中的一个不被满足即可。死锁是由于多个线程间相互等待资源,而又不释放资源导致的无穷无尽的等待。请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。循环等待条件:若干线程之间形成一种头尾相连的循环等待资源关系。不剥夺条件:线程已获得的资源,在未使用完之前,不能强行剥夺。互斥条件:一个资源每次只能被一个线程使用。

2025-05-19 15:30:45 212

原创 为什么MySQL推荐使用自增主键?

主键数据记录本身被存于主索引(一棵B+Tree)的叶子节点上,这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当有一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15/16),则开辟一个新的页(节点),如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页;为什么MySQL推荐使用自增主键?

2025-04-28 17:02:24 607 1

原创 与传统累加器对比,LongAdder 为何如此出众?

在使用AtomicLong时,如果是在高并发场景下去同时竞争修改同一个原子变量,由于内部使用的是CAS,只会有一个线程修改成功,这就造成了大量的线程竞争失败后,通过无限循环来不断的进行CAS操作,白白的浪费了CPU资源,在JDK8中为了解决这种问题,提供了LongAdder来进行原子性递增递减LongAdder将一个变量分解为多个变量,在内部维护了多个Cell变量,每个Cell变量中有一个初始值为0的long类型变量。当多线程争夺同一个Cell原子变量时如果失败,并不是在当前Cell变量上一直自旋CAS重试

2025-04-28 16:59:42 322

原创 查看MySql操作日志

今天在排查问题的时候发现数据对不上,怀疑是有些数据被人误删了,那如何知道是否该数据被人删除了呢。如果由于误操作数据,想要进行数据恢复的话,可以。看一下当前记录在哪个日志中了。也可以使用sql语句去查看。找到文件位置之后查看日志。查看MySql操作日志。先看一下日志是否开始了。

2025-04-22 15:57:27 549

原创 一文拆解 Java CAS:从原理到避坑全攻略

之前说在java.util.concurrent.atomic包下提供的原子操作类底层使用的是CAS,那么什么是CAS呢,CAS的全称为Compare And Swap,比较并替换,CAS机制中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。解决这个问题很简单,ABA的本质就是无法感知中间过程,那么加一个版本号就可以了,每次版本号递增1,在比较时,不仅要比较内存地址V和旧的预期值A,还要比较一下版本号。虽然CAS采用的无锁操作来提供性能,但是CAS并不是完美的,存在了很多的不足。

2025-04-22 15:54:13 357

原创 SQL优化

某条查询涉及到大表,无法进一步优化,如果返回的数据量不大且变化频率不高但访问频率很高,此时应该考虑将返回的数据放在应用端的缓存当中或者 Redis 这样的缓存当中,以提高存取速度。返回的数据需要通过网络数据包传回客户端,如果取出的Column越多,需要传输的数据量自然会越大。尽量在查询中加入一些可以提前过滤数据的条件,比如按照时间过滤数据等,可以减少数据的扫描量,对查询更友好;SQL的优化并不是一开始就进行优化的,而是需要先进行观察的,所以SQL优化的步骤应该是这样的。永远使用小结果集驱动大的结果集。

2025-04-11 11:33:11 429

原创 速学!Java 原子操作,开启并发编程新境界

在java.util.concurrent.atomic包下提供了很多原子操作类,多个线程执行一个操作时,其中任何一个线程要么完全执行此操作,要么没有执行此操作的任何步骤,其内部使用的Unsafe来实现的CAS操作。JVM会根据处理器的特性适当的重新排序机器指令,使机器指令更符合CPU的执行特点,最大限度的发挥机器的性能,但是会导致执行顺序可能会与代码顺序不一致。以AtomicInteger为例。

2025-04-11 11:28:25 244

原创 MySQL in和exists的取舍

in的参数是子查询时,会将子查询结果存储在一张临时的表中(内联视图),然后扫描整个视图。之前说过要小表驱动大表,即先遍历小表再遍历大表,接下来看一下in和exists的区别。将主查询数据放到子查询中做验证,根据验证结果来确定主查询结果的去留。根据执行顺序也就得知了什么时候该用in什么时候该用exists了。以外层表作为驱动表,外层表先被访问,适合于外表大而内表小的情况。先执行子查询,适合于外表大而内表小的情况。使用exists数据库不会生成临时的表。in和exists的取舍。

2025-03-31 11:38:02 556 1

原创 别再纠结!IP 存储类型选择攻略来袭

ipv6使用long类型是存储不了的,需要使用BigInteger。ipv4使用long类型进行存储即可。

2025-03-31 11:35:47 389

原创 MySQL的数据文件

mysql的数据都存放在datadir所指的位置,其中包含了mysql中创建的数据库,数据库中包含了表结构(frm文件)、表数据(myd文件)、表索引(myi文件).ibd和.ibdata 用于存储innodb存储引擎的表数据和索引信息。.myi 存储使用myisam存储引擎的表数据文件中任何索引的数据树。.frm 存放和表相关的数据信息,主要包括表结构的定义信息。.myd 存储myisam存储引擎的表数据信息。MySQL的数据文件。

2025-03-24 10:33:51 594

原创 与普通日期格式化对比,FastDateFormat 为何能线程安全?

将格式化格式、时区和国际化作为一个key存在了cInstanceCache中,cInstanceCache是一个ConcurrentHashMap,相当于相同的格式化格式、时区和国际化会使用同一个FastDateFormat实例。那么FastDateFormat为什么是线程安全的呢?首先FastDateFormat是有一个缓存的,在进行实例化的时候是通过cache缓存来获取实例的。而在使用FastDateFormat进行格式化的时候,是在方法中定义的Calendar局部变量,是不会出现线程安全问题的。

2025-03-24 10:27:09 517

原创 MySQL如何存储表情符号?

MySQL中的utf8其实是utf8mb3,最多只用3个字节存储字符,存储不了表情。如果要支持表情,需要使用完整的utf8字符集utf8mb4,可用4个字节来存储。默认mysql的字符集是utf8,排序规则为 utf8_general_ci。utf8和utf8mb4的区别。在存储表情的时候会报。

2025-03-18 11:41:44 1503

原创 困扰无数人的 POI 读取合并单元格内容难题,终于有解了

产品们想到的excel真是千奇百怪,这次又遇到一个读取包含合并单元格的excel文件,一开始直接读取,直接报空了,没办法,只能对于这些列进行判断是否为合并单元格。如果是合并单元格的话,使用单独的方法来进行读取。POI读取合并单元格内容。

2025-03-18 11:38:19 697

原创 连接数问题

在使用mysql时有时候会报too many connections错误,这是连接数过多导致的,然后就会去修改max_connections参数,但是这个参数也不能无上限的增大,容易造成机器内存不足,还是需要找到为什么会有这么多连接的原因。

2025-03-11 10:46:56 425

原创 Excel 后缀竟成 “拦路虎”?POI 读取报错原因大揭秘

由于有时候上传的是xls文件有时候上传的是xlsx文件,使用POIFSFileSystem来读取文件。使用WorkbookFactory来读取excel文件。POI读取excel报错。

2025-03-11 10:42:54 357

原创 MySQL忽略大小写问题

然后查了一下资料,说是utf8_general_ci中的_ci是指忽略大小写Case-insensitive,但是我只设置了字符编码utf8,没有设置为utf8_general_ci呀,原来utf8默认的是就是utf8_general_ci。今天使用MySQL查询时遇到一个问题,使用一个字符串去查询时,查出来两条数据,但是查到的数据大小写并不一样。果然是utf8_general_ci,好吧,那么如何修改呢?我查到了name为a和A的两条数据,这就很奇怪,难道mysql会忽略大小写吗?

2025-03-04 15:28:51 757

原创 Excel 图片插入难题?POI 三招轻松化解

使用HSSFPatriarch来将图片写入EXCEL中。注:在将图片添加到工作簿中时,必须将其存储为字节数组。POI操作EXCEL插入图片。

2025-03-04 15:26:45 543

原创 MySQL自动备份脚本

mysqldump命令将数据库中的数据备份成一个文本文件,表的结构和数据将存储在生成的文本文件中。将备份出来的数据还原到某个数据库中。备份一个数据库下的多个表。MySQL自动备份脚本。也可以登入数据之后进行。

2025-02-24 15:20:05 1078

原创 别再手动合并!POI 操作 Excel 轻松搞定

使用CellRangeAddress进行合并单元格。POI操作EXCEL合并单元格。

2025-02-24 15:17:57 260

原创 MySQL配置文件读取顺序

在启动MySQL数据库时可以没有配置文件,这种情况下,MySQL会按照编译时的默认参数设置启动实例。按照顺序读取配置文件,且如果多个配置文件中有相同的参数,则以读取到的最后一个配置文件为准。

2025-02-18 10:41:43 594

原创 别再瞎摸索!POI 操作 Excel 轻松添加下拉框

有时候通过excel将数据批量导入到系统,而业务操作人员对于一些列不想手动输入,而是采用下拉框的方式来进行选择。可以在EXCEL中的数据有效性看到数据来源。采用隐藏sheet页的方式来进行操作。

2025-02-18 10:39:53 320

原创 MySQL使用count进行行数统计

https://zhhll.icu/2021/数据库/关系型数据库/MySQL/基础/20.MySQL count/](https://zhhll.icu/2021/数据库/关系型数据库/MySQL/基础/20.MySQL count/)在使用count进行数据统计行数时,有时候会使用count(*),有时候会使用count(1),有时候会使用count(列名),那么这些有什么不同呢。当使用列名作为参数时,count函数会自动忽略null值,而使用*或者常量时,就会包含null值。

2025-02-07 14:36:19 474

原创 lombok常用注解

NoArgsConstructor, @RequiredArgsConstructor,@AllArgsConstructor:作用于类上,用于生成构造函数。@Data:作用于类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor。@ToString:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。lombok常用注解。

2025-02-07 14:33:16 338

原创 MySQL高级语句

【代码】MySQL高级语句。

2025-01-21 10:11:33 367

原创 java实现邮件带附件发送

有时候发送邮件需要带有附件,可以使用MimeMessageHelper来进行发送附件。

2025-01-21 10:09:30 311

原创 MySQL忘记密码了怎么办

validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;validate_password.special_char_count 整个密码中至少要包含特殊字符的个数;validate_password.number_count 整个密码中至少要包含阿拉伯数字的个数;validate_password.policy 指定密码的强度验证等级,默认为 MEDIUM;2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;0/LOW:只验证长度;

2025-01-14 10:55:29 574

原创 java进行pdf文件压缩

【代码】java进行pdf文件压缩。

2025-01-14 10:43:34 905

原创 MySQL自定义函数

函数与存储过程类似,也是一组预先编译好的SQL语句的集合,但是存储过程可以有0个或多个返回,函数就只能有一个返回。特别提醒一下:我在创建函数的时候出错了。MySQL自定义函数。

2025-01-07 15:51:03 383

原创 java进行图片压缩

使用Thumbnails来进行图片压缩。

2025-01-07 15:48:08 316

原创 MySQL存储过程

存储过程一般是独立执行,而函数一般是作为其他sql语句的组成部分出现。减少了编译次数并且减少了和数据库连接次数,提高效率。INOUT 该参数既可以作为输入,也可以作为输出。存储过程是一组预先编译好的SQL语句的集合。IN 该参数可以作为输入,需要调用方传入。存储过程可以返回多个值,而函数只能返回一个。OUT 该参数可以作为输出,作为返回值。

2024-12-30 10:02:31 421

原创 Druid密码错误重试导致数据库超慢

有同事把项目的数据库密码配错了,导致其他所有连接该数据库的项目全部连接都获取缓慢了,一个页面加载要花费十几秒。由于连接的host全是我们服务器的ip,所以一开始想到的是服务器是不是被黑了,然后频繁的尝试破解数据库密码。如果失败5次后不想重试,直接退出呢?这样就算数据库恢复也不会连接到数据库了,可以这样配置。结果发现pid是我们自己的项目,拉下来代码一看,密码配置的不对。如果连重试都不想重试呢?这样配置的话失败5次之后,会休眠10s在进行重试。druid有个配置是连接重试次数。密码错误重试导致数据库超慢。

2024-12-30 09:58:48 514

原创 MySQL变量

用户变量针对于当前会话有效,用户变量在声明时必须进行初始化。仅在定义该局部变量的begin end中有效。MySQL变量分为系统变量和自定义变量。自定义变量的步骤:声明、赋值、使用。自定义变量分为用户变量和局部变量。系统变量有全局变量和会话变量。

2024-12-24 10:20:16 447

原创 Druid配置大全

【代码】Druid配置大全。

2024-12-24 10:17:32 750

原创 MySQL查询顺序

在sql中对于null值一定要小心处理,true or null的运算结果是true,而false or null的运算结果是null,一旦混入了null,结果就会是null,所以在使用in或者or来进行逻辑运算时,一定要考虑是否会涉及null值。在order by中也可以使用case表达式来根据条件逻辑动态的调整排序项。在进行MySQL查询之前首先要先知道MySQL执行查询语句的执行顺序。使用聚集函数进行计算(sum、max、min、count等)使用order by进行排序。

2024-12-17 11:55:01 433

原创 视频生成缩略图

最近有个需求,视频上传之后在列表和详情页需要展示缩略图。

2024-12-17 11:48:50 598

原创 MySQL约束

MySQL约束数据库有六大约束,分别为NOT NULL 非空约束,用于保证这个字段不能为空DEFAULT 默认约束,用于保证该字段有默认值PRIMARY KEY 主键约束,用于保证该字段可以唯一表示该行记录,唯一且非空UNIQUE 唯一约束,用于保证该字段的唯一性,可以为空CHECK 检查约束(MySQL不支持该约束)FOREIGN KEY 外键约束,用于限制两个表的关系,用于保证该字段必须来自于主表关联列的值(在从表中添加外键约束,用于引用主表中某列的值)示例:create tab

2024-12-10 14:42:34 412

原创 xuggle操作视频

有个需求是要读取视频的宽高,找到了Xuggle和FFmpeg两种方式,FFmpeg很强大,但是我并不需要那些功能,所以使用了轻量一点的Xuggle。该依赖中包含有xuggle-xuggler且maven仓库中存在。可能maven仓库中没有该依赖,可以下载后放到本地仓库或私服。xuggle操作视频。

2024-12-10 14:39:00 691

apache-echarts-4.9.0-incubating-src.zip

echarts

2022-05-07

edraw-max_cn_full5381.dmg

edraw-max_cn_full5381.dmg

2022-05-05

BaiduNetdisk_mac_3.4.1.dmg

百度网盘mac

2022-05-06

electerm-1.18.5-mac-x64.dmg

mac 好用的ssh桌面终端软件

2022-05-04

Feishu-3.29.3.dmg

飞书mac

2022-05-03

KDocs_1001_v2.1.0.dmg

KDocs_1001_v2.1.0.dmg

2022-05-02

kplayer201.zip

kplayer201.zip 播放器

2022-05-01

mailmaster.dmg

mailmaster.dmg

2022-04-30

MavenRunHelper.zip

MavenRunHelper

2022-04-29

scala-intellij-bin-2020.1.43

scala-intellij-bin-2020.1.43 idea插件

2022-04-28

WeChatMac安装包

微信mac安装包

2022-04-27

ffmpeg应用程序(mac)

ffmpeg应用程序

2022-04-26

Statistic-4.0.jar

Statistic-4.0.jar

2022-04-25

hadoop-lzo-0.4.16

依赖包

2022-04-22

maven-thrift-plugin-0.1.10

maven插件 maven-thrift-plugin-0.1.10

2022-04-21

Typora mac版本 Typora.dmg

Typora编写markdown的神器,0.9.9.34.2

2022-04-19

thrift-maven-plugin-0.10.0

maven插件jar包

2022-04-20

mysql元数据工具类

可以获取数据库所有表、获取表字段信息

2024-01-23

Hive-JSON-Serde-1.3.8.zip

Hive-JSON-Serde-1.3.8.zip

2022-05-23

consul_1.10.2_darwin_amd64.zip

consul_1.10.2_darwin_amd64.zip

2022-05-22

hbase-2.2.7-bin.tar.gz

hbase-2.2.7-bin.tar.gz

2022-05-21

Mycat-server-1.6.7.4-release-20200105164103-mac.tar.gz

Mycat-server-1.6.7.4-release-20200105164103-mac.tar.gz

2022-05-20

Nacos-2.0.3.zip

Nacos-2.0.3.zip

2022-05-19

redis-unstable.tar.gz

redis-unstable.tar.gz

2022-05-18

resin-4.0.65.tar.gz

resin-4.0.65.tar.gz

2022-05-17

resin-4.0.65-src.tar.gz

resin-4.0.65-src.tar.gz

2022-05-16

scala-2.13.3.tar

scala-2.13.3.tar

2022-05-15

Sentinel-1.7.2.zip

Sentinel-1.7.2.zip

2022-05-14

apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.tar.gz

apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.tar.gz

2022-05-13

thrift-0.13.0.tar

thrift-0.13.0.tar

2022-05-11

sysbench-1.0.20.zip

sysbench-1.0.20.zip

2022-05-12

apache-tomcat-8.5.57-src.tar.gz

apache-tomcat-8.5.57 源码包

2022-05-10

32dbb32e528357ef1ec0b8863dd9--Docker.dmg

macos docker软件包

2022-05-09

elasticsearch-hadoop-6.8.23.zip

elasticsearch-hadoop

2022-05-08

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除