自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (5)
  • 收藏
  • 关注

原创 JVM调优 - 带你无痛云排查解决K8s的Pod内存使用率接近99%告警(JVM堆分配参数-Xmx原理)

K8s Pod内存占用接近99%触发了告警,但实际并未出现问题!通过排查发现,JVM Heap内存使用正常,问题出在监控指标container_memory_working_set_bytes上。进一步分析发现,Linux的cache/buff缓存机制导致内存占用被高估,这部分内存实际上可以随时释放。JVM启动参数-Xms14g -Xmx14g规定了堆大小,导致buff/cache一直维持在16G左右,从而触发了告警。最终通过将-Xms和-Xmx调整为13G,解决了内存占用过高的问题,确保了系统的稳定运行。

2025-05-09 13:14:21 891

原创 Java线程池 - ThreadLocal底层原理与内存泄漏OOM(建议收藏=官方文档+源码+复现+可视化分析+解决方案+实验)

本文深入剖析Java中ThreadLocal的内存泄漏问题及其解决方案。通过解析JDK8源码,揭示ThreadLocalMap采用弱引用键,导致键回收后,值仍被强引用滞留的底层缺陷,结合线程池场景演示OOM现象,及MAT工具分析残留Entry。文章提出三大实战方案:规范使用remove()清理、采用Netty的FastThreadLocal自动回收机制,以及WeakReference防御策略,并通过代码复现对比验证效果。

2025-04-24 17:12:58 426 1

原创 Java线程池 - 深入解析ThreadPoolExecutor的底层原理(源码全面讲解一篇就够)

一阶段,可以优先用工作线程,这样处理的任务,直接用工作线程执行,工作线程本身存在,无需创建和销毁线程。二阶段,是超出工作线程数,可以用工作队列缓冲,后面还是工作线程处理,无需创建和销毁线程,只不过需要等待时间去消费。三阶段,是任务总量已经超出工作线程 + 队列容量 的总和,这时候在配置的最大线程数下去开启更多线程去压榨性能,超出部分的任务只能拒绝。

2025-04-18 23:02:04 747 1

原创 Spring源码 - Spring AOP底层逻辑详解(万字长文)

AbstractAutoProxyCreator#postProcessAfterInitialization 执行了 AbstractAutoProxyCreator#wrapIfNecessary 方法。if (StringUtils.hasLength(beanName) && this.targetSourcedBeans.contains(beanName)) { // 1. 检查是否为手动指定的 TargetSource Bean(例如通过 @Bean 自定义 TargetSource)

2025-04-17 19:29:05 638

原创 Spring源码 - 深度解析@Resource依赖注入的执行逻辑

若未指定 name属性,默认使用字段名或方法名作为 Bean 名称。名称匹配失败后,尝试按类型匹配,结果必须唯一。详细流程如下:1、处理器执行入口@Resource 注入,是在 populationBean 的时候,遍历处理 InstantiationAwareBeanPostProcessor(实例化感知Bean后置处理器)去执行 postProcessProperties,其中就有。

2025-04-15 16:39:35 827

原创 Spring源码 - 这才是Spring Bean生命周期

生命周期回调部分其实讲的很透彻,就是实现 InitializingBean#afterPropertiesSet()、DisposableBean#destroy() 就可以实现生命周期的初始化阶段、销毁阶段 控制,而 @PostConstruct、@PreDestroy 与以上两个是等价的,只不过解耦了(毕竟这两个注解是 javax.annotation 包下的,我们甚至可以不依赖 Spring 模块也能实现)。首先,研究是有先后顺序、前置知识的,要了解生命周期,得先知道 Bean 是如何被创建的。

2025-04-09 02:33:47 952

原创 Spring源码 - Spring IOC 如何解决循环依赖

我们回到我们的例子,我们先处理的是 1对象(为了直观,之后将 CircleDependent1 简化描述为 1对象) 的逻辑不存在于三级缓存,所以通过 singletonFactory.getObject() 回调到匿名函数(回到前文可看到该匿名函数),调用 createBean 去创建 bean(此时 create ,而不是 get,注意这个差别,意味着这时候才是真正的创建逻辑,毕竟从缓存中没有拿到现有的只能去创建,命名十分合理)。我们知道,递归调用就会有递归调用的算法思路。

2025-04-05 00:00:49 551

原创 springboot底层原理之 - @SpringBootApplication 源码精读

注解会被记录到文档;自动配置类本质是 Spring 的 @Configuration 配置类,通过 SpringFactoriesLoader 机制(以本类为键)加载。配置组件扫描规则,用于指定Spring容器在哪些包路径下扫描带有组件注解(如 @Component、@Service等)的类。当使用被 {@code @Inherited} 修饰的注解标注类时,若该类的子类未显式使用该注解,则会自动继承父类的注解。所以,@SpringBootApplication 的属性里都是当前注解的原注解的属性的覆盖。

2025-03-14 01:25:59 821

原创 推荐一个好用的在线文本对比网站 - diffchecker

推荐一个好用的,可以生成对比在线链接、支持回退历史、UI设计也很不错、响应也很快的网站。

2025-03-09 15:33:06 442

原创 《深入浅出数据索引》- 公司内部培训课程笔记

大参林信息中心内部培训课程《深入浅出数据索引》的笔记,记录一些索引底层原理、优化技巧等信息,供大家参考学习

2025-03-07 18:29:45 258

原创 关于单调栈问题的本质的思考

关于单调栈的本质的思考

2025-02-24 21:19:51 245

原创 缓存策略的一些思考问题和解答(缓存过期时间、更新、二阶段提交)

关于缓存策略和二阶段提交的一些思考

2024-12-31 17:27:23 274

原创 DeferredResult 是如何实现异步处理请求的

最近遇到了一个问题,我们的一个接口需要去轮询另一个第三方接口,导致这个接口占用了太多工作线程,这些工作线程长时间 running,我们需要解决这个问题。于是,我们的方案是:用 DeferredResult 实现接口异步。全文就是探究其原理。

2024-08-02 21:41:38 1038

原创 springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step

Springcloud RocketMQ ,一个mq消息发送后,客户端是怎么一步步拿到消息去消费的?我们要从代码层面探究这个问题。

2024-07-25 10:59:47 595

原创 springcloud rocketmq 新增的消费者组从哪里开始消费

新增消费者组的时候,消费进度从何处开始消费,问题记录下

2024-07-24 14:13:08 754 2

原创 订单折扣金额分摊算法|代金券分摊|收银系统|积分分摊|分摊|精度问题|按比例分配|钱分摊|钱分配

一个金额分摊的算法,将折扣分摊按比例(细单实收在总体的占比)到各个细单中。此算法需要达到以下要求:折扣金额接近细单总额,甚至折扣金额等于细单金额,某些时候甚至超过细单总额,要保证实收不为负数。复杂度O(n)写这个算法的初衷,就是因为现在网上的分摊算法,都没有考虑到最后一项不够减、只循环一次、折扣金额接近总额…

2024-07-03 17:50:26 997 2

原创 谈谈跳台阶算法的记忆法和编程理念|青蛙跳台阶|递归|动态规划|算法|程序员面试|Java

为什么会写这篇文章?因为鄙人刷过此题多次,每次觉得自己会了,可下次还是不能一下子写出题解,故记录下我是如何记忆此题的,并且探索一些编程理念。

2024-06-20 11:55:54 476

原创 java数组ArrayList迭代修改的ConcurrentModificationException错误

java数组集合进行迭代修改时,不用迭代器内部方法容易报错!

2024-06-13 22:12:01 314

原创 mysql oceanbase数据库alter语句阻塞,解决方案

查一下这些阻塞的语句,判断哪个是所阻塞的表相关的。执行:kill processlist_id。

2024-05-08 15:57:55 408

原创 如何通过token判断用户信息

token的载荷部分需要加入用户信息。将token进行在线解析即可。网关需要log出token。

2024-04-29 16:18:35 400

原创 通俗的讲解,带你入门协程

协程的通俗理解、协程和线程的区别、协程历史、协程应用

2022-07-02 18:00:59 929

原创 2022阿里巴巴全球数学竞赛 第4题 虎虎生威(盲盒问题、集卡问题)解决思路

盲盒问题、集卡问题,来自 2022阿里巴巴全球数学竞赛 第4题(单选题),参考了哔哩哔哩阿里达摩院的解题思路,加上自己的通俗理解。

2022-07-01 23:35:43 6968 4

原创 手写一个简单的Spring容器(原理+源码)

手写一个简单的Spring容器,用配置文件方式,在配置文件中写入我们想要的bean,工厂会自动创建一个仓库,bean实例被用到时注册,我们就可以直接根据bean的名字拿到这个bean的单例。

2022-07-01 14:19:32 807

原创 Oracle和MySQL的基本区别(入门级)

主流的Oracle(商业)和MySQL(开源)数据库到底区别在哪,以及技术如何选择?

2022-07-01 10:48:26 715

原创 Learning Git Branching 题解(基础、高级、Git远程仓库)

Learing Git Branch是一个模拟git操作的网站,本文将解题的关键过程记录下来,方便后续复习和查阅

2022-06-30 19:26:39 1677

原创 C++实现wins后台监控键盘输入(Hook)

使用Wins的Hook技术,将键盘输入的消息的新处理挂载到消息处理链中去,实现简单的对键盘输入的监控。

2022-06-23 01:16:32 10020 4

原创 VSCode C++环境配置及测试运行

新手使用免费开源的VSCode,如何写出并运行第一个C++程序

2022-06-22 18:21:37 844

原创 C++入门知识整理(持续更新)

C++入门(面试)知识整理

2022-06-22 12:32:05 1199

原创 快速写出第一道C++算法题所需的知识

不熟悉C++的人如何入门C++,从刷算法题开始,这篇文章总结了需要注意的点。

2022-06-22 01:14:48 378

原创 浅谈InnoDB和MyISAM的区别(锁、事务、索引、CRUD、存储等)

查询了各方资料,从各方面讲解MySQL两大存储引擎的区别。

2022-06-20 23:05:35 187

原创 从源码和测试多方面深度解读Java的String类对象的内存分布

网上关于String对象内存分配的知识的分享比较零散不一,String的==、intern函数,以及在JVM内存中String到底在哪里,这篇文章会进行分析。

2022-06-15 18:36:53 369

原创 攻防世界(adworld) WEB Exercise area(练习区)10题解题思路

整理adworld中10道web攻击练习题,涉及http请求响应内容、密码爆破、编码解码、php语法、webshell等。

2022-03-15 16:20:54 3769

原创 整理PHP的一些比较突出的特点(PHP入门笔记)

作为一个Java开发者,第一次学习PHP,在查看了入门文档之后,整理了令我印象深刻的点。服务器脚本语言PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言。 纯 HTML 结果发送回浏览器<!DOCTYPE html><html><body><h1>My first PHP page</h1><?phpecho "Hello World!";?>.

2022-03-08 17:10:18 313

原创 SpringMVC静态资源发布流程(静态如何从文件加载到Resource,最后传给response,以及其专用处理器ResourceHttpRequestHandler源码深入追究)

SpringMVC 加载静态文件,最后又传给response,说完你可能不信,我追踪了一遍!

2022-03-02 20:26:44 1275

原创 HttpRequestHandlerAdapter——SpringMVC中的网络请求处理适配器

我们SpringMVC中,DispatcherServlet拿到请求,先去HandlerMapping找到handler链,然后获取支持这个handler的HandlerAdapter,拿得到的话就执行处理逻辑,然后得到模型视图,再解析视图,渲染。HttpRequestHandlerAdapter这个也是其中的一环。

2022-03-02 12:20:44 1218

原创 SpringBoot SpringBootServletInitializer启动原理,如何扫描添加Servlet、ServletContext,内置tomcat原理(源码深入解析)

现在主流的SpringBoot就是基于Servlet的,所以研究Servlet如何加载是很有必要的。

2022-03-01 23:10:58 2589

原创 SpringBoot中SpringMVC的DispatcherServlet工作流程?服务发布?源码解析?Servlet监听?Listener?注释翻译?代码详解?与Controller关系?

我们写一个Listener去监听什么是Listener?Listener 即监听器,是servlet 的监听器。随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。当被监视的对象发生情况时,立即采取相应的行动(观察者模式)。主要作用是做一些初始化的内容添加工作、设置一些基本的内容(比如一些参数或者是一些固定的对象)。通过监听器,可以自动激发一些操作。比如:监听在线用户数量等等。我们先实操:import javax.servlet.ServletContext;import ja

2022-03-01 17:32:49 520

原创 Java与SpringBoot内置Tomcat源码运行原理与Servlet放置原理解析(org.apache.catalina.startup.Tomcat)

简单使用可以参考这篇文章:https://blog.csdn.net/the_one_and_only/article/details/105177506基本原理就是将Tomcat对象中的Host和Connector中的port设置成相应的host:port,配置Tomcat上下文(环境配置),最后加入Servlet,然后跑起来。Tomcat是这样的:Tomcat源码注释:/** * Minimal tomcat starter for embedding/unit tests. * *

2022-02-28 21:15:44 800

原创 n步问题求解算法:斐波那契拓展|青蛙跳台阶拓展|三步问题拓展|多步问题拓展|高精度|大整数支持|自顶向下分析|自底向上求解

问题分析(自顶向下)首先看斐波那契数列,我们先自顶向下分析,f(n)其实是f(n-1)和f(n-2)的和,我们如果画成树,就会发现底层叶子节点都是 f(0)=0 和 f(1)=1。我们再看经典的青蛙问题,每次跳1~2步,跳一步的情况+跳两步的情况,f(n)=f(n-1)+f(n-2),其实本质也是斐波那契数列。(初始值及其含义不一样)最后看三步问题,每次跳1~3步,跳一步的情况+跳两步的情况+跳三步的情况,f(n)=f(n-1)+f(n-2)+f(n-3),很像斐波那契数列。(初始值及其含义不一样)

2021-06-24 18:56:54 386

原创 安卓AIDL跨进程调用技术实例(踩坑讲解)(两种方案)(max函数服务|音乐播放服务)

方法一:aidl接口+Service类main文件下创建aidl接口:创建之后:代码:interface GetMaxAidlService { /** * Demonstrates some basic types that you can use as parameters * and return values in AIDL. */// void basicTypes(int anInt, long aLong, boolean aBoole

2021-06-13 00:23:32 1837 6

langChain技术解密

AI 编程的好资料~

2025-03-06

ssm-demo.zip

ssm框架的入门demo,内附sql脚本,需要Tomcat7.0,jdk1.8以上,可以进行0基础的入门学习,也可以进行熟悉其中某些框架但不知道如何整合三个框架的同学进行学习。资源在2020/9/25创建,2020/9/27收尾,实现了最简单的demo,即登录功能。在本人的CSDN博客中有相应的文章描述此入门程序。

2020-09-27

进程调度作业调度和内存块分配算法(含界面).zip

内含三个实验:进程调度(先来先服务、短进程优先)、作业调度(高优先级优先、轮转法、最高响应比优先)、内存块分配算法(首次适应、循环首次适应、最佳适应、最坏适应)。附加可执行exe文件和导出的jar包。界面由swing编写,三个实验分为三个界面,由主界面来整合三个副界面。

2020-07-26

多道批处理的两级调度.zip

多道批处理的两级调度的模拟器,用java,swing,JFormDesigner编写,并生成了可执行文件,供学习操作系统处理机算法的同学使用。请放心使用!

2020-07-11

B树+B树实现的图书管理系统(C语言)(广东工业大学课程设计2019).zip

2019年期末课程设计,没有任何的引用资源,内含数据结构B树的基本操作接口,可以进行快速的查找。文件为VS工程文件夹。

2020-01-11

广工数据结构anyview2019最新完整参考答案(含题目).docx

本人手写广工数据结构anyview的答案,测试通过率100%。内容包含基本数据结构,包括链表,队列,栈,树,图等,约100题。

2020-01-11

空空如也

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

TA关注的人

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