- 博客(72)
- 资源 (3)
- 收藏
- 关注
原创 初步学习压测和监控
摘要 本文介绍了基于Java开发的秒杀系统压测与监控实践。系统采用JDK 21开发,使用Prometheus+Grafana+Exporter三件套监控架构,在4核8G的Ubuntu服务器上进行测试。通过JMeter模拟4000并发用户测试秒杀接口,结果显示系统稳定性良好(0%错误率),平均响应119ms,吞吐量达到1987次/秒。监控数据显示Redis命中率100%,命令执行高效(50-200μs),服务器网络资源使用合理。文章提供了完整的代码和配置示例,指出了后续可优化的方向,如持续压测和订单处理逻辑完
2025-11-03 13:39:05
1030
原创 Mysql主从搭建
本文详细介绍了在CentOS7系统上搭建MySQL8.x主从数据库的完整步骤。主要内容包括: 准备工作:强调多台机器间网络互通、MySQL版本一致性,并提供了CentOS7环境下MySQL8的安装注意事项和旧环境清理指南。 MySQL安装配置:包含解压安装、环境变量设置、my.cnf配置文件详解(特别标注server-id必须唯一)、用户权限设置及初始化过程。 系统服务集成:将MySQL添加为系统服务并设置开机自启。 主从搭建准备:检查binlog状态,开放3306端口,通过示例图说明主从同步原理。 特别注
2025-07-28 16:09:34
932
原创 Sentinel入门篇【流量治理】
本文介绍了阿里巴巴开源的分布式系统流量治理组件Sentinel的基本功能和使用方法。主要内容包括: Sentinel的流量控制和熔断降级两大核心功能,支持QPS/线程数限流、冷启动、匀速排队等策略; 通过响应时间、异常比例等指标实现熔断降级,防止服务雪崩; 详细演示了Sentinel控制台的部署和SpringBoot整合过程; 重点解析了流控规则配置,包括QPS和线程数两种模式下的不同选项设置。Sentinel作为轻量级流量治理组件,可以有效保障微服务架构的高可用性。
2025-07-08 18:58:54
750
原创 Redis下篇--分布式锁
Redis分布式锁简介 Redis分布式锁是一种基于Redis实现的跨进程互斥机制,用于控制分布式系统中多个节点对共享资源的并发访问。相比本地线程锁,它解决了集群环境下无法保护跨进程共享资源的问题。 核心实现要点: 使用SET命令结合NX(不存在才设置)和EX(过期时间)参数实现原子性加锁 通过唯一value值避免误删其他线程的锁 设置合理过期时间防止死锁 典型应用场景包括: 防止重复操作(如订单提交) 高并发库存扣减 分布式任务调度 相比数据库锁和Zookeeper实现,Redis分布式锁具有更好的性能和
2025-06-22 14:51:40
750
原创 Redis中篇--应用
Redis应用中的缓存问题分析文章分析了Redis作为缓存时可能遇到的两种典型问题:缓存击穿 - 热点key过期时大量请求直接访问数据库。解决方案包括:互斥锁、逻辑过期、热点key预刷新等。缓存穿透 - 查询不存在的数据导致请求直达数据库。解决方案包括:缓存空值、布隆过滤器等。针对热点key问题,文章详细探讨了监测和预防措施,如客户端访问记录、Redis监控命令、京东热点数据监测方案等。对于穿透问题,提出了参数过滤和布隆过滤器等优化方案。文章内容详实,配有示意图和代码示例,优快云和微信公众号
2025-06-16 21:40:44
695
原创 Redis上篇--知识点总结
**Redis** 是一个开源的、高性能的 **内存键值数据库**,Redis 的键值对中的 **key 就是字符串对象**,而 **value 就是指Redis的数据类型**,可以是String,也可以是List、Hash、Set、 Zset 的数据类型。Redis通常被用作数据库、缓存、消息中间件和实时数据处理引擎。它以速度极快、支持丰富的数据结构而闻名,是现代应用架构中非常流行的组件。
2025-06-09 16:49:17
1167
原创 网络编程--下篇
《网络编程下篇》摘要本文承接上篇网络编程内容,重点分析了NIO与Netty实现原理。首先对比BIO模型,指出其线程阻塞和内存消耗问题。详细讲解操作系统级多路复用技术,从select/poll到epoll的演进,以及Java NIO的Selector实现机制。在Netty部分,深入剖析其异步编程模型,比较JDK Future与Netty Future/Promise的区别,重点解释sync()和await()方法的实现原理与使用场景:sync()会检查异常并重新抛出,而await()仅阻塞等待。本文配套代码
2025-06-05 20:11:06
1035
原创 网络编程--上篇
网络编程基础摘要本文总结了计算机网络的核心概念,主要包括:网络模型:介绍了OSI七层模型和TCP/IP四层/五层模型的分层结构,及其设计意义。关键协议:传输层:TCP(可靠连接)与UDP(高效无连接)的特点对比应用层:HTTP(单向请求响应)与WebSocket(全双工实时通信)的异同安全协议:HTTPS的加密机制与传统HTTP的区别其他协议:FTP、DNS、SSH等协议的基本功能TCP连接管理:简要说明了三次握手(SYN-SYN/ACK-ACK)建立可靠连接的机制。网
2025-05-27 19:44:25
706
原创 限流算法 + dfa敏感词过滤算法
本文探讨了社交场景中的限流和敏感词过滤技术。首先,通过社交平台实时评论审核和电商平台评论/私信接口防刷两个场景,介绍了限流和敏感词过滤的必要性。接着,详细分析了两种常见的限流算法:固定窗口限流和滑动窗口限流。固定窗口限流简单易实现,但存在边界突刺问题;滑动窗口限流通过动态滑动时间窗口,解决了边界问题,限流更加精准。最后,文章提供了Java代码示例,展示了如何实现这两种限流算法。通过这些技术,可以有效防止系统被恶意流量冲垮,同时确保内容合规,提升用户体验。
2025-05-18 19:57:40
1006
原创 SpringBoot3+AI
SSE(Server-Sent Events)是一种基于HTTP的轻量级协议,允许服务器主动向客户端推送数据,适用于实时通知、日志流等场景。与WebSocket不同,SSE仅支持单向通信(服务器→客户端),且浏览器原生支持,无需额外插件。SSE通过HTTP长连接实现,客户端使用EventSource API接收数据,服务器返回text/event-stream格式的文本流。SSE具有自动重连机制,适合无需双向通信的场景,如GPT问答形式。在Spring Boot中,可以使用SseEmitter实现SSE功能
2025-05-18 19:55:24
1149
1
原创 ThreadLocal原理分析--结合Spring事务
ThreadLocal 是 Java 中用于实现线程局部变量的工具,它为每个线程提供独立的变量副本,确保线程间的数据隔离,从而避免多线程环境下的共享变量问题。通过 set()、get() 和 remove() 方法,线程可以操作自己的局部变量,而不会影响其他线程。ThreadLocal 的核心思想是通过 ThreadLocalMap 存储每个线程的变量副本,键为 ThreadLocal 对象,值为变量值。
2025-05-12 17:12:59
897
原创 spring详解-循环依赖的解决
本文都快写完了,发现“丈夫” 的英文是… 在“②有AOP循环依赖” 改过来了,前面用到的位置太多了就没改。我是说怎么idea的hansband英文下面怎么有波浪线。各位能够理解意思就行,英文拼写不要过于在意.
2025-05-06 22:27:27
1369
2
原创 并发编程--下篇
自定义一个读写锁学一下jdk源码,写一个内置的Sync同步器,低位16位记录写锁重入次数,高位16位记录读锁获取次数// 内置同步器// 写锁方法(tryAcquire/tryRelease)-- 独占// 如果存在读锁或写锁(且持有者不是当前线程),获取失败if (state!= 0) {// writeCount是0,但是state不是0,说明有线程获取到了读锁// 检查是否超过最大重入次数(低16位是否溢出)throw new Error("超出最大重入次数");
2025-05-02 22:06:00
791
原创 Java并发探索--上篇
前面分析可以知道ReentrantLock是以AQS为基础框架来实现的,那么,此节我们自定义来实现一个锁。见 “Java并发探索–下篇”
2025-04-28 20:37:03
788
原创 Bean生命周期
在经过三篇文章的分析过后,我们对Spring容器的创建过程有了一个大致的认识:我们都知道是在方法里面进行的,本文就来对Bean的生命周期作一个总结,本文就不探讨具体源码了。通过对该方法的源码查看调试,我们得知invokeBeanFactoryPostProcessors方法会把所有实现BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor的类进行实例化和调用。BeanDefinitionRegistryPostProcessor :: pos
2025-04-22 20:16:29
744
原创 Spring-AOP分析
在上一篇文章中,【】【https://www.cnblogs.com/jackjavacpp/p/18829545】,我们了解到了IOC容器的创建过程,在文末也提到了AOP相关,但是没有作细致分析,这篇文章就结合示例,来详细分析一下Spring-AOP。本文章示例代码见该仓库:【】中的“spring”模块。仓库地址:https://gitee.com/quercus-sp204/sourcecode-and-demos。
2025-04-21 16:57:02
1105
原创 Spring分析-IOC
Spring 是一个基于 Java 平台的开源全栈应用程序框架,也是一个控制反转(IoC)容器实现。Spring IoC 容器即 Spring 框架中负责管理“Bean”(由容器实例化、配置并组装的普通 POJO 对象)的核心组件。容器读取配置元数据(XML、注解或 Java 配置类),解析 Bean 定义,然后在启动或按需时实例化 Bean,完成依赖注入,并负责 Bean 的整个生命周期管理。
2025-04-16 20:22:47
1191
原创 SpringBoot启动run方法分析
经过第二大节的整体分析,我们大致可以知道在容器刷新之前,由于是Servlet的Application,故由模板方法运行创建Servlet容器,ServletContextListener接口contextInitialized会先执行。调用构造方法创建bean对象,实例化Aware 接口InitializingBean接口的afterPropertiesSet()自定义的initMethodRunners对于Spring的容器创建、bean的创建、以及事件等内容的详细分析,请见后续文章。
2025-04-05 12:21:05
918
1
原创 Mybatis源码分析
Mybatis源码也是对Jbdc的再一次封装,不管怎么进行包装,还是会有获取链接、preparedStatement、封装参数、执行这些步骤的。本文来探索一下其运行原理。下面从最简单的mybatis使用案例,来看看mybatis的步骤。
2025-04-01 22:00:35
849
原创 Java中的Map & CAS & AQS
原本是想在写完ConcurrentHashMap后,把cas补上,谁知道先写了cas,aqs。。。。AQS 即 AbstractQueuedSynchronizer【抽象队列同步器】,是 Java 并发包中很多同步器实现的基础框架,如Semaphore等。AQS作为一个抽象类,通常是通过继承来使用的。它本身是没有同步接口的,只是定义了同步状态和同步获取和同步释放的方法。用于构建锁和同步器,它提供了一种在多线程环境下管理同步状态(state)、线程排队等待以及线程唤醒的机制。
2025-03-23 14:02:44
644
原创 数据库MVCC详解
数据库:MySQL。【很多主流数据库都使用了MVCC,比如MySQL的InnoDB引擎、PostgreSQL、Oracle】MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。是数据库管理系统中的一种并发控制方法。它通过保存数据的历史版本来实现,这样。这样的话,提高了并发性能。比如说,当一个事务开始读取数据时,它会看到数据库在某个时间点的快照,之后即使其他事务修改了数据,这个事务看到的还是旧版本的数据,直到它提交或者回滚。
2025-03-20 21:31:10
1658
原创 跟着路线混,三天饿九顿
java基本语法、常用类String,包装类,时间,大数计算等等。java集合【适当debug跟进源码,list,set,map,queue,栈等等】java多线程【各种锁、线程间通信、线程安全的集合类、进程与线程、ThreadLocal,CompletableFuture…】网络编程 【阻塞式io,同步非阻塞io】java反射的使用。
2025-02-19 16:50:00
376
原创 数据库事务详解
今天聊一聊数据库的事务,这里以MySQL为例子。在MySQL中,事务(Transaction)是一组SQL操作的集合,这些操作要么,确保数据的一致性和完整性。。
2025-01-22 19:29:58
1292
原创 SpringBoot原理分析-1
*自动配置: **以spring-boot-starter-web为例子,引入该启动器,他的父级pom里面有spring-boot-starter,spring-boot-starter的父级pom有spring-boot-autoconfigure。spring-boot-autoconfigure里面有Spring官方定义的所有场景。注解:这是自动配置的入口,通常由注解组合引入。文件:Spring Boot 通过文件加载自动配置类。条件化配置:通过系列注解(如等)实现按需加载配置。
2025-01-05 15:16:23
802
原创 Nginx + Lua脚本打配合
今天实现一个非常简单的例子.那么就可以通过nginx反向代理,就达到了不暴露端口的目的了。但是,我又不想别人随便访问,要加一些限制。比如必须要有指定的请求头。用nginx配置就行了呗。但是,还是不安全呐,随便别人如果F12查看请求的话,还是可以发现我的请求头啊。他随便捏造一个也可以访问这个应用了呀。我这里是宝塔面板的openresty,安装的自带有redis模块。(这个安装就不放了)
2024-12-23 20:00:50
802
原创 代理&动态代理
这些例子都展示了代理模式如何在不同的场景中提供了对“真实对象”的间接控制。通过上面这些例子,可以看到“代理”大致有三个角色:客户端(使用者)、代理(中间层)、真实对象(交付委托的对象、目标对象)。通过使用代理模式,系统能够在不直接暴露真实对象的情况下,提供更多的控制和优化,这对于实际的软件设计和架构非常重要。
2024-12-02 16:38:15
755
原创 Java Stream与多线程
学习了尚硅谷的JUC,周阳老师讲的商城比较价格的案例,自己模拟了一个多线程的demo, 多线程处理任务并且汇总结果,出现了疑问,实例代码放在下面,读者有兴趣的话可ctrl+cv玩一玩
2023-08-31 09:08:35
469
原创 SpringSecurity 入门
SpringSecurity 入门一步一步来。集各家之所长,师从 尚硅谷、狂神、三更草堂;如果文中发现跟他们有类似的,不用想,就是他们那里拿来的事先声明,本人很菜,其中有说的误人子弟的,请大家指出来。环境:idea2020.1 SpringBoot2.6.3 MyBatisPlus Maven3.6.3 SpringSecurity Lombok MySQL8.0.23…总述:先根据三家总的说一下,大致可以划分为两类: **1.**前后端不分离 *
2022-02-16 14:54:19
1194
原创 洛谷P1114 “非常男女”计划
洛谷P1114 “非常男女”计划题目:题目描述近来,初一年的XXX小朋友致力于研究班上同学的配对问题(别想太多,仅是舞伴),通过各种推理和实验,他掌握了大量的实战经验。例如,据他观察,身高相近的人似乎比较合得来。万圣节来临之际,XXX准备在学校策划一次大型的“非常男女”配对活动。对于这次活动的参与者,XXX有自己独特的选择方式。他希望能选择男女人数相等且身高都很接近的一些人。这种选择方式实现起来很简单。他让学校的所有人按照身高排成一排,然后从中选出连续的若干个人,使得这些人中男女人数相等。为了使活
2021-11-14 13:06:41
1015
2
原创 洛谷 P1141 01迷宫
洛谷 P1141 01迷宫BFS或者并查集题目描述有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。输入格式第1行为两个正整数n,m。下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格。接下来m行,每行2个用空格分隔的正整数i,j,对应了迷宫中第i行第j列的一个格子,询问从这一格开始能移动到多少
2021-11-12 21:58:22
298
原创 试题 算法训练 预备爷的悲剧
试题 算法训练 预备爷的悲剧题目资源限制时间限制:1.0s 内存限制:512.0MB问题描述英语预备爷gzp是个逗(tu)比(hao),为了在即将到来的英语的quiz中不挂科,gzp废寝忘食复习英语附录单词表,俨然一场人间悲剧。不过上天有好生之德,上帝扔给了gzp一张纸,上面记载了将要考到的单词。不过gzp是个逗比,之前复习的东西全忘记了,所以他又要再来一次复习。不过已经知道了要考的单词,所以不需要复习单词表的所有页数。因此,现在需要你帮助他求出有多少页纸需要复习。他会告诉你每个单词会在哪几页
2021-11-11 15:51:56
1172
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅