自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (2)
  • 收藏
  • 关注

原创 从零到一:Docker Compose 轻松部署微服务实战!

但是我们要注意,在项目的apppication.yml文件中,我们要把127.0.0.1或者localhost改成指定容器名,每个容器都有自己的ip。Docker 使用的版本是Docker version 27.5.0,安装完成后在pull一下mysql、redis和nacos的镜像,方便后面创建环境容器。在选择安装版本时,需要注意Docker Compose 版本和Docker版本对应。先双击clean,清理target目录文件,再双击package文件,点击右上角的>中的带斜线的圈可以跳过test。

2025-05-17 01:33:25 1181

原创 在线程池中使用ThreadLocal,线程不断复用,ThreadLocal的值会被回收吗?

文章摘要: ThreadLocal为每个线程提供独立的变量副本,避免多线程竞争问题。其核心数据结构是Thread类中的ThreadLocalMap(定制化哈希表),以ThreadLocal对象为键存储值。源码分析显示,get()和set()方法通过线程局部Map操作数据,使用线性探测解决哈希冲突。但在线程池中,线程复用会导致ThreadLocal数据残留,引发内存泄漏或数据污染。示例代码展示了线程池任务未及时remove()时的问题,强调使用后必须调用remove()清理线程局部变量。

2025-06-09 21:56:08 1130

原创 从71秒到0.76秒:MySQL慢查询优化的核心原理与实践

索引下推就是,不再需要将二级索引的主键查询结果在回表查询,返回给server层让server层判断。而是存储引擎层自己拿到二级索引结果自己判断是否符合其他查询条件,如果成立直接返回给server层。使用了索引下推后,比如上述的联合索引(score, create_time),执行上述语句联合索引判断create_time > '2024-12-31’后,联合索引可以自己判断是否满足score = 60(

2025-05-25 14:11:51 653

原创 高效并发的秘密武器:Java线程池底层原理与实践篇

顶层接口Executor思想:将任务提交和任务执行解耦。用户只需要提供Runnable对象,将任务的执行提交给Executor,由Executor框架完成线程的调配和任务的执行。

2025-05-20 22:54:02 1819

原创 导师叫我画技术路线图?我用AI生成2分钟交差,Visio可以卸载了

在编写技术文档时,绘制技术方案和算法流程的框图或流程图通常耗时且繁琐。为了简化这一过程,可以采用AI辅助快速生成流程图。

2025-05-17 15:47:18 1245

原创 快速上手,结合Spring AI实现你的第一个MCP!

基于HTTP,通过长连接的方式持续获取消息。比如通过MCP,大模型能够调用别人提供好的地图导航服务,大模型通过MCP client调用MCP server,为用户提供导航服务。需要在本地启动一个MCP Server进程,Client 和 Server 通过 stdio(标准输入输出)传输协议进行交互,主要是实现一些本地执行的功能,比如数据库读取,操作系统命令,文件操作等等。接下来就是安装对应的MCP server到自己的电脑上,我下载了mysql-mcp-server,能够对我的MySQL数据库进行查询。

2025-05-15 20:34:00 1037

原创 BigDecimal:从底层实现看如何正确守护你的小数点

初始化BigDecimal对象传入参数要使用String,禁止传入Double,防止精度损失。等值比较要使用compareTo()方法,禁止使用equals()方法。BigDecimal的原理就是在存储小数时,会把小数扩大为一个整数,并保留对应的精度信息。

2025-05-12 16:45:41 1853

原创 告别内存浪费!利用Roaring Bitmap解决Redis稀疏数据处理

Bitmap,即位图,是一串连续的二进制数组(0和1),可以通过偏移量(offset)定位元素。BitMap通过最小的单位bit来进行0/1的设置,表示某个元素的值或者状态。Bitmap不是一个独立的数据结构,底层其实是一个字符串,利用字符串进行位操作。而String类型是会保存为二进制的字节数组,所以,Redis 就把字节数组的每个 bit 位利用起来,用来表示一个元素的二值状态,你可以把Bitmap看作是一个 bit 数组。

2025-05-10 13:26:14 1011

原创 如何并行调用下游服务?试试CompletableFuture异步编排!

因为异步任务是在线程池的线程中执行的,因此异常信息存储在线程栈中,当前线程除非阻塞等待异步线程的返回结果,否则无法try/catch捕获异常。当调用链较长时,底层任务的异常如何被高层的任务捕获呢,就比如这个调用链:cf1->cf2->cf3,cf3依赖于cf2,cf2依赖于cf1,当cf1抛出异常,异常如何在cf3最终被捕获?但是如果一个异步任务的执行依赖于其他多个异步任务的执行结果,比如异步任务A的执行依赖于任务B、任务C的执行结果,又应该如何实现呢?如果注册时被依赖的操作还未执行完,则由回调线程执行。

2025-05-09 11:40:22 849

原创 RocketMQ事务机制实践篇

由于该方法我们默认回查时返回事务提交,因此查询到事务提交,该消息变为消费者可见,消费者对其进行了消费。通常在高并发访问操作中,用户的请求不能直接操作数据库防止数据库击垮,采用消息中间件可以很好的对数据库请求削峰,将需要操作的信息存至消息中间件,并订阅消费者对消息队列中的消息进行消费。但是由于数据一致性需求,在一次请求中,假如在发送消息时我们执行了一些数据库或者缓存的更新(也就是消息发送时的一些本地事务逻辑),此时假如本地事务执行出现异常,那么这个消息就不应该被生产者发送出去。

2025-05-08 20:59:43 2092

原创 一文了解JAVA序列化和常用序列化器

特点:顾名思义,序列化得到的是json格式的数据主要介绍两种:Jackson和fastjsonJava序列化通过接口实现对象与字节流的转换,依赖保证版本兼容性;常用序列化框架中,Jackson和Fastjson提供易读的JSON格式,前者功能全面(支持日期格式化、泛型),后者轻量但需注意getter规范;而Hessian和Kryo采用高效二进制协议,Hessian跨语言且兼容性好,Kryo性能极致但需处理线程安全问题,适合高吞吐场景。根据数据可读性、性能及环境需求灵活选择即可。

2025-05-08 20:48:04 940

原创 深入理解Java动态代理

代理模式:给一个对象提供一个代理,由代理来控制对真实对象的访问。

2025-05-08 20:45:46 837

原创 ARM嵌入式学习(1)-----

ARM技术概述以及指令集合本学期开始学习ARM嵌入式,为了便于自己学习以及后续的复习,就在这里做些笔记吧寄存器组织程序状态寄存器ARM指令集ARM指令寻址方式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入本学期开始学习ARM嵌入式,为了便于自己学习以及后续的复习,就在这里做些笔记吧第一

2021-09-16 22:26:45 363

服务外包创新创业大赛技术文档(将近100页),答辩PPT,国家三等奖

包含PPT,项目概要介绍,详细介绍方案、策划方案等文档(仅供参考) 因为文档很大,也花了我们很大的时间和精力,因此这是付费资料!!!下载上述文档后可添加联系方式下载!

2023-03-22

51单片机汉字滚动广告灯设计全套.rar

之前在学校做的微机课设,最后拿了优,基于c语言的keil代码编写以及Proteus的原理图;内容包括16*16点阵灯的左滚动,右滚动,暂停,滚动加速,滚动减速,不同信息(三条)的按键选择,以及OLED显示屏的实时点阵信息显示,还有通过蓝牙余与手机通讯,可在手机显示点阵状态,并且能够用手机控制点阵亮灭,闪烁,暂停。下载内容包括原理图,keil完整代码。(上传前已重新测过可用)

2021-08-20

基于Verilog的数电课设密码锁.rar

数电课设基于quartus软件的FPGA四位密码锁,能够实现密码输入,修改,确认,以及输入密码20秒后,若仍未输入正确,则发出警报。(上传前已测试可用)

2021-08-20

空空如也

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

TA关注的人

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