- 博客(90)
- 收藏
- 关注
原创 Mysql的Update的执行流程是怎么样的?
我们知道Mysql分Server层和存储引擎层。Server层负责处理连接,解析,执行等。引擎层负责数据的读写。
2025-05-06 10:43:17
909
原创 为什么执行了删除语句后mysql内存无变化?
后台的 Purge 线程异步回收被标记的记录空间,但这些空间仍保留在表中供后续插入重用,若在优化过程中发生服务器崩溃、断电或强制终止进程,可能导致表损坏。被删除的数据在磁盘文件中仍可能以碎片形式存在,直到被新数据覆盖。重建表需要大量磁盘读写,可能导致I/O瓶颈,影响其他查询性能。在复制或替换表文件时,若文件系统出现错误,可能破坏数据完整性。,而是通过标记删除和后台清理机制延迟释放空间。重建表和索引需要复制数据,可能导致长时间锁定。:将记录标记为“已删除”,并保留在存储页中。在 InnoDB 中,
2025-04-28 18:32:06
308
原创 单例模式介绍
单例模式大家都很清楚,最常见的是饿汉式与懒汉式。也有不常见的静态内部类式与枚举式以及,懒汉式的线程安全版本。单例模式常被用于全局式的配置管理(数据库连接池,日志管理器),资源共享(线程池,缓存控制器),状态管理(程序计数器)等。
2025-04-26 13:24:23
587
原创 写时复制Copy-on-Write(COW)
写时复制多用于读多写少的场景,因为写操作是用悲观锁进行的,如果写的场景多,容易产生等待阻塞。写的时候,对复制原对象,对副本进行写操作,最后将副本替换原对象。读的时候,直接访问原对象。2,复制原对象并增加长度。4,将副本替换为原对象。
2025-04-09 17:42:46
252
原创 数据库的MVCC机制详解
MVCC(Multi-Version Concurrency Control,多版本并发控制)是数据库系统中常用的并发控制机制,它允许数据库在同一时间点保存数据的多个版本,从而实现非阻塞的读操作,提高并发性能。
2025-04-09 17:14:01
975
原创 如何为服务自定义链路追踪(traceID)
链路追踪是一种追踪,监控服务请求的技术概称。主要是为了帮助开发者了解一个请求在服务间的流转路径,执行时间,延迟以及问题追踪定位。特点:可视化请求流:展示一个请求的完整调用路径。性能分析:识别请求在哪个环节出现延迟,优化系统性能。问题排查:快速定位错误发生的位置,提高故障恢复效率。调用关系分析:帮助理解微服务之间的依赖关系。链路追踪的工作流程请求进入系统:用户发起 HTTP 请求,链路追踪系统生成一个Trace ID。请求传播Trace ID。
2025-03-15 15:27:12
797
原创 如何为服务设置合理的线程数
在使用线程池管理线程的过程中,如何设置核心线程数、最大线程数、队列类型和拒绝策略这些都会影响实际能创建的线程数量。比如,每个请求处理时间短的话,线程可以快速回收,但处理时间长的话,线程会长时间占用资源,导致需要更多线程。一般来说,CPU密集型任务的最佳线程数是核心数加一,而IO密集型任务可能需要更多线程,因为线程在等待IO时会阻塞,可以充分利用CPU。比如,每个线程都需要一定的栈内存,默认情况下Java线程的栈大小是1MB(64位系统可能更大),所以如果内存不足,创建太多线程会导致OOM错误。
2025-03-10 23:05:05
589
原创 线程的生命周期与线程池的生命周期(示例代码感受整个生命周期)
线程是进程中的一个执行单元,是 CPU 调度的基本单位,一个进程可以包含多个线程,它们共享该进程的资源。进程是程序在操作系统中的一个执行实例,是操作系统进行资源分配和调度的基本单位。特点每个进程都有自己独立的地址空间、数据、代码、文件等资源,进程之间相互独立。不同进程之间不能直接访问彼此的内存,需要通过 管道(Pipe)、消息队列(Message Queue)、共享内存(Shared Memory)、Socket 等 方式进行通信。// 当前持有锁的线程// 锁状态while (!
2025-03-10 22:39:55
704
原创 异或的用法(神奇)
给定一个整数数组,所有数字都出现两次,只有一个数字出现一次,找出这个唯一的数字。异或(XOR,Exclusive OR)是一种逻辑运算和按位运算。的数组中,缺失一个数。的完整序列,结果即为缺失数。假设发送方发送了一组数据。解法:异或所有元素和。
2025-03-06 23:10:33
210
原创 浅聊一下日本的开发与国内开发
博主在国内工作了几年,觉得技术学的用的也差不多了,加上会点日语,就想着去东京看看小日本这边it行情如何,大概是什么样的。就这篇文章,想简单说说感想吧,给一些准备来日本干开发或者对这方面感兴趣的人一点直白话。
2025-02-13 11:47:35
287
原创 过滤器(Filter) vs. 拦截器(Interceptor)
请求到达 -> Filter (前) -> Interceptor (前) -> Controller -> Interceptor (后) -> Filter (后) -> 响应返回。,执行一些额外的操作,比如权限校验、日志记录等。它们的作用相似,但底层实现和适用场景有所不同。在 Spring MVC 或 Java Web 开发中,定义一个拦截器,一个过滤器。简单测试看看执行顺序。
2025-02-12 14:57:44
172
原创 Theadlocal之InheritableThreadLocal
底层是一个ThreadLocalMap对象(这个也是线程独有的),里面维护着一个个Entry,Entry的键是 ThreadLocal 实例的引用,而值是存储在 ThreadLocal 中的数据。如果只在当前线程中使用threadlocal,本身没有什么问题,但是如果你开启了子线程,这个时候再想去获取你存放的值,就获取不到了。当前线程启动线程池去执行任务时,线程池是无法获取到已存的ThreadLocal对象的。他们都属于线程自带的属性,是ThreadLocalMap,实际存储的对象。
2025-02-11 21:27:51
348
原创 来看一下对userBean的使用升级点
正常,我们在系统中会使用过滤器(Filter)或者拦截器(Interceptor)来处理用户的token,缓存用户的信息,方便后续继续使用。简单 说一下拦截器与过滤器首先是归属不同,过滤器属于Servlet规范,拦截器属于Spring框架。然后是作用范围,过滤器处理所有Web资源,拦截器只处理Spring MVC的Controller。触发时机的话,过滤器在Servlet之前,拦截器在进入Controller前后。然后是实现方式,过滤器用回调函数实现,拦截器用反射机制实现。
2025-02-11 17:15:26
1092
原创 避开Arrays.asList使用的坑
注:测试Arrays.asList的坑。学习内容来自图灵--徐庶。针对这一现象,只需要将int转为封装类型即可。
2025-02-09 15:12:51
487
原创 从0开始,来看看怎么去linux排查Java程序故障
从上面可以看出fullGC的次数才3次,且回收时间不大,说明内存情况很健康。编写一个简单的让程序不断创建新对象,然后GC在不停地回收,但是又回收不掉地样例。export JAVA_HOME=/usr/local/java/jdk-17.0.2 # 替换为实际解压路径。nano ~/.bashrc # 或 ~/.bash_profile、~/.zshrc(根据Shell类型)观察GC回收状况,从上面命令可以看出内存资源并不紧张,所以这里只做展示。# 当前系统的实时数据面板,按 ctrl+c 退出。
2025-01-31 20:12:16
1359
原创 Python图形界面 GUI -- tkinter(含简单windows桌面项目)
是 Python 的标准图形用户界面(GUI)工具包,用于创建桌面应用程序。它是 Python 标准库的一部分,无需单独安装即可使用。Tkinter 是基于 Tcl/Tk 的一个封装,具有简单易用的特点,是开发 GUI 程序的一个非常流行的选择。
2025-01-22 13:50:56
2756
原创 接上回--综合AIDemo测试
上回外挂了知识库之后,我们需要使用知识库中的信息,让AI为我们实际处理业务上的需求。这里我们让AI扮演公司的人事助手,帮我们处理员工请假的业务。具体流程如下感知用户需要请假提取用户请假信息获取用户数据库中的信息根据用户角色判断请假时长是否符合公司要求(或者是否需要推送给上级审批)不符合返回理由,符合返回确认信息用户确认后往数据库中写入请假信息在获取请假信息这块上,如果我们手动去提取用户的msg,那么会有很大的可能会提取失败,所以这块尽可能让ai从我们的对话上下文去提取所需要的信息。
2025-01-19 15:41:30
625
原创 接上回,AI外挂知识库
这里使用最方便扩展的文本格式txt文档,作为外扩知识库的来源。扩展方向有很多如使用服务器硬盘存储,云端文件存储,数据库DB存储等等。
2025-01-15 20:44:34
322
原创 SpringAi整合免费大模型(NVIDIA)
接上回,发布了springAI整合本地大模型之后,我们来看看怎么去利用别人已经训练好的大模型。同样这里只做一些最基本的调用构造讲解,如果对深入使用比较感兴趣的,请阅读本文最后的Demo讲解。
2024-11-30 14:53:17
1266
原创 响应式网页设计--html
<title>使用 main 标签示例</title><a href="#">首页</a></li><li><a href="#">关于我们</a>
2024-11-10 16:58:16
1642
原创 Windows脚本--指定文件集复制到指定目录
enabledelayedexpansion:启用延迟变量扩展,允许在同一行中使用变量的值,而不需要在变量赋值之后立即获取。echo off:这个命令用于关闭命令的回显,意味着在执行脚本时,后续的命令不会显示在命令行窗口中。将文件后缀改为.bat,并准备一个modified_files.txt文件,放置所有需要迁移文件的绝对路径,然后点击执行即可。通常,命令行会显示正在执行的命令,使用 @ 可以隐藏这一输出。@echo off 的组合效果是,当脚本运行时,不会显示任何命令,只有输出结果会被显示。
2024-11-03 16:14:23
1372
2
原创 初识字节码文件--Java
这个常量在运行时会被视为一个对象,虽然它是一个字符串字面量,但在常量池中会被视为一个。:将操作数栈顶部的值(“你好”)存储到局部变量表的索引1处。:将操作数栈顶部的值(“你好”)存储到局部变量表的索引3处。将常量池中索引为7的字符串“你好”加载到操作数栈中。:再次将常量池中的字符串“你好”加载到操作数栈中。:再次将常量池中的字符串“你好”加载到操作数栈中。在这里,它加载字符串常量。类的构造函数,传入之前加载的字符串“你好”。对象的引用),以便后续调用构造函数时使用。对象引用存储到局部变量表的索引2处。
2024-10-30 22:43:37
457
原创 一句话一个点(Java)--会追加补充
是 Java 中基于红黑树实现的集合类,它能够自动对元素进行排序,因此插入。的元素会按照自然顺序(对于字符串来说就是字典顺序)进行排序。是一个字符类(character class),用于匹配。在字符类外面时,表示字符串的开头(anchor),即匹配。能保证元素按照字典顺序排序。字符(既不是小写字母。
2024-10-29 20:13:59
277
原创 数据结构与算法基础篇--有向无环
力扣-207题要判定一个图是否为有向无环图(DAG, Directed Acyclic Graph),可以使用拓扑排序(Topological Sort)的方法。如果一个有向图存在拓扑排序,那么它就是一个DAG。
2024-08-09 21:25:16
383
原创 Redis缓存在项目中的使用升级
对于redis在项目中的使用与介绍这里就不展开描述,与进行基本的代码构造了。这里针对redis的代码使用进行介绍。
2024-08-09 15:25:09
1044
原创 spring的三级缓存与源码分析--解决循环依赖
一级缓存(内存中的 singletonObjects)二级缓存(earlySingletonObjects)三级缓存(singletonFactories)
2024-08-01 21:56:10
1122
原创 数据结构与算法基础篇--栈
栈(Stack)是一种重要的数据结构,它遵循“先进后出”(LIFO, Last In, First Out)的原则。栈是一种抽象数据类型,意味着它定义了数据的操作而不具体指定如何实现。栈可以通过不同的数据结构来实现,例如数组或链表。
2024-07-27 20:20:31
742
原创 java--jvm虚拟机(都是要点)
请带着以下问题,学习并理解jvm问题一: 为什么fullGC会对系统性能有影响?youngGC却几乎没有?问题二: outofmemory是什么异常?什么时候会出现?如何处理?问题三: 线程安全和不安全在jvm内存模型中是如何表现的?问题四: 提升fullGC回收的速度的方法有哪些?问题五: 为什么频繁fullGC常伴随CPU的满负荷
2024-07-27 19:59:23
1002
1
原创 SpringBoot使用Redis(事务异步add + 更新)
Redis(Remote Dictionary Server)是一个开源的内存中数据结构存储系统。内存存储: Redis 主要将数据存储在内存中,因此读写速度非常快,适合需要高性能的应用场景。持久化: Redis 支持将内存中的数据持久化到磁盘,可以通过RDB快照(Snapshotting)或者日志(Append-only file, AOF)的方式实现数据持久化,保证数据在服务重启后不丢失。数据结构多样性。
2024-07-15 19:51:13
1102
原创 SpringBoot之健康监控(Actuator)
这是 Spring Boot 提供的一个扩展模块,用于监控和管理应用程序的生产环境。它通过 HTTP 端点暴露了大量的监控和管理功能,使得开发者可以在运行时查看应用程序的运行状况、配置信息、性能指标等。主要功能:健康检查端点提供应用程序的健康状态。它可以告诉你应用程序是否正常运行,并且可以根据健康检查的结果进行适当的响应。信息端点端点提供应用程序的自定义信息。开发者可以在这里配置任意的信息,比如版本号、描述等。环境信息端点提供应用程序的环境属性信息。这包括配置属性、系统属性、环境变量等
2024-07-15 19:09:29
1113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人