- 博客(60)
- 收藏
- 关注
原创 使用令牌桶算法通过redis实现限流
令牌桶算法是一种常用的限流算法,它可以平滑地控制请求的处理速率。在 Java 中结合 Redis 实现令牌桶算法,可以利用 Redis 的原子操作来保证多节点环境下的限流效果。
2025-02-07 23:00:37
574
原创 Mysql系列-索引优化
使用Explain关键字可以模拟优化器执行SQL语句,分析查询语句或结构的性能瓶颈,在select语句之前增加explain关键字,mysql会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行当前SQL;其中:如果from中包含子查询,仍会执行该子查询,将结果放入临时表中;
2024-09-19 09:08:13
1295
原创 TCP三次握手与四次挥手
如果重发指定次数之后,服务端仍然未收到客户端的ACK应答,那么一段时间后(大概64s),服务端会给客户端发送RTS报文(连接重置),并进入CLOSED状态,防止SYN洪泛攻击,客户端收到RTS报文后,会关闭连接;第三次的ACK在网络中丢失,那么服务端该TCP连接的状态为SYN_RECV,并且会根据 TCP的超时重传机制,会等待3秒、6秒、12秒后重新发送SYN+ACK包,以便客户端重新发送ACK包。TCP建立连接,通过三次握手能防止历史连接的建立,减少双方不必要的资源开销,能帮助双方同步初始化序列号。
2024-06-09 19:37:31
796
1
原创 JAVA基础之线程池原理与源码简读
例如Web开发中,服务器需要接受并处理来自外部的请求,所以会为每一个请求分配一个线程来处理。如果并发的请求数量非常高,而且单个请求线程执行的时间非常短,就会出现频繁的创建和销毁线程,如此会大大降低系统的效率,因为可能会出现服务器为每个请求创建先线程和销毁线程上花费系统资源要比处理实际的用户请求的时间和资源更多;系统可以支持创建的线程数量也是有上限的(每个线程实际对应的一个操作系统文件描述符);
2024-05-03 21:33:36
1149
原创 JAVA基础之并发编程02-Synchronized
一个同步工具或者一种同步机制,它通常被描述为一个对象。与一切皆对象一样,所有的Java对象是天生的mointor,每一个java对象都有成为monitor的潜质,因为在java设计中,每一个java对象在new出来的时候就带了一把看不见的锁,它叫做内部锁或者Monitor锁。也就是通常说的Synchronized的对象锁,MarkWord锁标识位为10,其中指针指向的是Monitor对象的起始地址。_count = 0;// 记录个数// 处于wait状态的线程,会被加入到_WaitSet。
2024-04-27 12:51:49
942
原创 JAVA基础之垃圾收集器
当前虚拟机的垃圾收集一般采用分代收集算法,这种算法本身没有创新性,只是根据对象存活周期的不同将内存分为几块。一般将java堆内存分为新生代和老年代,这样我们就可以根据不同年龄到的特点选择不同的垃圾收集算法。标记整理。
2024-04-22 22:39:05
1089
1
原创 java基础之类运行与双亲委派机制简介
loadClass(String,boolean):实现了双亲委派机制;findClass:默认是空方法,自己类加载器时,主要是重写findClass方法;/*** 自定义类加载器*/try {Class<?try {throw new RuntimeException("加载class文件异常!");try {Order1源码:放置目录:D:\uclazz\com\ddu\jvm自己javac Order1.java。
2024-04-22 18:11:55
1006
原创 Java基础之JVM对象内存分配机制简介
大量对象分配在Eden区,Eden区满了后会触发MinorGC,可能99%以上的对象会变成垃圾而被回收掉,而剩余存活的对象会被挪到空的Survivor0区,下次Eden区满后会触发MinorGC,把Eden区+Survivor0区中存活的对象复制到Survivor区,并Eden区和Survivor区垃圾回收,因此新生代的对象大部分是朝生夕死,存活时间比较多,所以JVM默认的8:1:1比例很合适,原则:让Eden区尽量大,Survivor区足够用就可以;
2024-04-21 23:00:45
1732
原创 Java实现解析验证cron
依赖二方库:<!-- 注意: 这里必须要使用 9.1.6 及以上版本, 之前的版本有严重漏洞 --><dependency> <groupId>com.cronutils</groupId> <artifactId>cron-utils</artifactId> <version>9.1.6</version></dependency>执行校验逻辑:imp
2022-05-19 15:43:06
1090
原创 mysql开启 Binlog 功能
MySQL Server 的四种类型的日志:Error Log、General Query Log、Slow Query Log 和 Binary Log 。Error Log即 错误日志,记录 mysqld 发生的一些错误。General Query Log即 一般查询日志,记录 mysqld 正在做的事情,如客户端的连接和断开、来自客户端每条 Sql Statement 记录信息;如果你想准确知道客户端究竟传了什么内容给服务端,这个日志就非常管用了,当然了这货非常影响性能。Slow Qu..
2022-05-04 21:23:18
8722
原创 JDK下载安装-Linux-2022年05月03日
为了找到我想用的jdk版本,不想吐槽了,记录一下自己找到的截止到2022年05月03日最新Oracle官网下载jdk的地址jdk下载地址:Java Archive | Oraclejdk8 linux X64版本的下载地址:https://download.oracle.com/otn/java/jdk/8u331-b09/165374ff4ea84ef0bbd821706e29b123/jdk-8u331-linux-x64.tar.gz?AuthParam=1...
2022-05-03 12:43:29
2740
原创 GIT-常用命令
查看当前分支的创建人等信息切换到需要查看分支的创建人git log --oneline master | cut -d " " -f 1 | tail -1 | xargs git log
2021-07-30 11:59:18
95
原创 tar-常用命令说明
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必须的-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。# tar -cf .
2021-07-29 09:12:29
520
原创 JVM-jmap使用记录
jmap主要可以用于打印Java进程的内存映射或堆内存(Heap Dump文件)细节。(如:产生哪些对象,以及数量等)。主要是用在检查内存泄漏、一些严重影响性能的大对象,检查系统中什么对象创建的最多,分析各种对象所占用的大小等。
2021-07-28 13:02:42
138
原创 JVM-jstat常用命令
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:使用的jdk版本是jdk8. 类加载统计: Loaded:加载class的数量 Bytes:所占用空间大小 Unloaded:未加载数量 Bytes:未加载占用空间 Time:时间 编译统计 Compiled:编译数量。 Failed:失败数量 Invalid:不可用数量 Time:时间 FailedType:失败类型 FailedMethod:失败的方法 垃圾回收统计...
2021-07-24 16:22:24
153
转载 ZSTD 解压缩方式的时间与设置的非压缩的原数据大小有关
ZSTD 解压缩方式的时间与设置的非压缩的原数据大小有关小文件:KB级别,执行1000次 普通文件:kb级别,执行100次 大文件:4M+,执行10次 ZSTD:解压缩分配空间等于压缩后的大小*5
2021-06-17 09:04:54
505
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人