自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 applicationTaskExecutor Spring 内置线程池失效

自定义线程池之后,spring内置 applicationTaskExecutor 线程池失效

2025-12-10 16:37:03 421

原创 PPTX 中加入输入框和按钮,文本框不为空点击按钮跳转

摘要:本文记录了在WPS开发工具中实现文本框和按钮交互功能的探索过程。作者通过查阅资料最终解决了获取文本框内容的难题,发现只需使用TextEdit2.Text即可获取文本框元素。文章分享了两个关键函数代码:ToggleButton1_Click用于检查文本框是否为空并控制页面跳转,TextEdit2_Change作为文本框的响应函数。作者指出这一简单解决方案在现有教程和大模型中都难以找到,具有实际参考价值。

2025-11-16 21:38:18 409

原创 OS: 进程的虚拟内存空间,内核进程为什么不直接使用物理内存?

本文主要探讨Linux虚拟内存管理中内核进程与普通进程的区别。内核进程由内核直接管理,没有用户态虚拟内存空间(mm_struct为NULL),全程运行在内核态执行系统任务;而普通进程拥有独立的mm_struct管理用户态虚拟空间。文章还解释了内核空间使用虚拟内存而非物理内存的原因,涉及地址转换、内存保护等机制。通过对比两类进程的内存管理结构,揭示了Linux内核设计的核心思想。

2025-09-27 15:19:03 254

原创 Spring二级缓存为什么不行(详细)

Spring必须使用三级缓存而非二级缓存(删去三级缓存)的主要原因是解决代理对象与循环依赖的兼容性问题。当Bean需要代理时,二级缓存会导致代理对象不一致:B注入的代理对象(0x333)与最终存入一级缓存的代理对象(0x444)不同。三级缓存的延迟加载机制通过ObjectFactory动态生成代理对象,并在earlyProxyReferences中标记已代理状态,避免重复创建代理对象。若仅用二级缓存直接存储代理对象,会缺失关键的状态标记,导致初始化阶段重复生成代理对象,破坏依赖关系的一致性。

2025-09-03 17:41:01 520

原创 BitMap(易懂版)

本文简要介绍了Bitmap的底层实现原理。Bitmap在Redis中通过C语言的SDS动态字符串实现,数据存储在buf字符数组中,每个字符占8个bit位。通过示例说明:设置第1、2、7位为1后,对应的二进制转换为十进制97,即字符'a'的ASCII码。当继续设置8-15位时,数据会存储在buf[1]位置。文章直观展示了Bitmap如何利用位操作实现高效存储。

2025-08-25 17:44:35 204

原创 微信小程序(通用)jwt无感刷新方案(详细 附代码)

本文分享了微信小程序JWT无感刷新的实现方案。通过拦截器判断JWT是否即将过期(1小时内),若需刷新则生成新Token并放入响应头,前端通过拦截器更新本地存储。文章还对比了三种常见方案:1)双Token机制(推荐复杂场景),使用短期accessToken和长期refreshToken;2)前端主动检查(轻量场景),根据过期时间提前刷新;3)固定间隔刷新(长连接场景),定时更新Token。重点分析了当前采用的滑动刷新方案,通过响应头传递新Token实现无感续期,提升用户体验。

2025-07-25 14:15:44 1024

原创 JAVA序列化知识小结

摘要:序列化是将数据结构或对象转换为可存储或传输的格式(如二进制、JSON等),核心目的是解决对象的持久化存储和跨系统传输问题。Java中使用serialVersionUID标识类的版本以确保兼容性,static修饰的serialVersionUID也会被特殊处理进行序列化。序列化涉及对象状态的保存,非静态字段会被自动序列化,而static字段则不会被序列化。

2025-07-21 21:20:05 432

原创 微信小程序登录 后端对code的处理(附代码)

本文介绍了使用SpringBoot处理微信小程序登录流程的方法。后端通过获取前端传来的code,向微信服务器请求获取用户的openId和session_key。为避免直接使用openId,采用AES加密处理生成userId,然后构建JWT令牌返回给前端。文章详细说明了获取code、请求微信接口获取用户信息、加密处理以及生成JWT的完整流程,并提供了相关代码实现。最终前端获取JWT后可用于后续接口的身份验证,实现完整的用户登录流程。

2025-07-21 17:11:17 1677

原创 学习打卡网站(搭子版本)

本文介绍了一个自主开发的学习打卡网站,旨在解决现有应用收费、功能不足等问题。作者在暑假期间用时两天完成开发部署,目前仅供个人使用,支持记录每日计划任务。前端采用Vue3+Vite+ElementPlus,后端使用SpringBoot+MyBatis+MySQL,采用DDD架构设计。未来计划增加用户注册、学习搭子绑定、历史查询、积分激励等功能。文章提供了源码获取方式和部署教程链接,适合想与学习伙伴共同打卡的用户参考。

2025-07-20 11:38:04 648 2

原创 前端迟迟收不到响应,登录拦截器踩坑!

文章摘要:开发小程序登录后端时,作者在拦截器中使用了自定义状态码"0001"返回登录失败响应,导致前端无法接收。发现问题后,将状态码改为HTTP标准401即解决。原因在于HTTP协议规定状态码必须是3位数字(100-599),自定义无效状态码会导致客户端无法正确处理响应。正确的做法是遵循HTTP规范使用标准状态码,如401表示未授权。

2025-07-18 15:36:04 459

原创 微信小程序登录实现方案

微信小程序登录实现方案主要采用前端获取code、后端校验token的方式。流程为:前端调用wx.login()获取code,后端通过code换取openId和sessionKey,将加密后的openId与生成的token关联存入Redis(设置2小时有效期)。前端保存token并在请求时携带,后端校验token有效性并更新过期时间。该方案安全性高(核心数据在后端)、扩展性强(支持分布式)、兼容性好,优于传统的Cookie+Session方案。关键点包括:openId加密存储、token动态刷新、请求拦截校验

2025-07-10 14:50:43 1073

原创 LeetCode hot100 代码

LeetCode Hot 100 代码

2025-07-06 10:48:17 167

原创 雅!实在是太雅了!工厂设计模式加策略设计模式

摘要:文章探讨了如何通过工厂模式+策略模式优化抽奖业务中的规则过滤逻辑。传统if-else方式存在耦合度高、违反开闭原则等问题。作者提出将每种过滤规则(如黑名单、权重)实现为独立策略类,通过注解标识规则类型,并由工厂类统一管理。这种方法使系统具备良好扩展性,新增规则只需添加策略类,不影响现有代码,同时提高了代码复用性,完美符合开闭原则。最终实现优雅解耦,业务逻辑清晰可维护。

2025-07-06 10:41:07 370

原创 MultipartFile调用transferTo方法之后getInputStream报错

【摘要】文件上传时遇到"FileNotFoundException"异常,原因是transferTo()方法将文件从临时位置转移后,导致后续getInputStream()方法无法找到原文件。分析发现transferTo()会调用renameTo()进行文件转移而非复制。提供了两种解决方案:1)在使用流之前执行transferTo();2)创建临时文件进行分步处理,确保文件流的可用性。第二种方案更可靠,通过创建临时文件进行多次读取后,再将文件移动到最终位置。

2025-06-19 15:59:24 408

原创 Ollama部署deepseek-r1模型之后,电脑重启之后ollama启动模型要重新下载

Ollama部署deepseek-r1模型之后,电脑重启之后ollama启动模型要重写下载

2025-04-28 17:04:51 1553 1

原创 JVM的四种垃圾回收算法

本文主要讲述JVM常见的四种垃圾回收算法,即标记清除,复制,标记整理和分代收集算法。

2025-04-12 14:50:36 797

原创 自定义注解

首先,什么是注解呢?注解有什么作用呢?我们来看一看Java 注解(Annotation)是一种元数据(metadata),可以附加在代码中的类、方法、变量、参数等元素上,用于提供额外的信息或指示编译器、框架、工具在特定阶段处理代码。注解类的属性定义和正常的不太一样,我们来看一例子:注解类型中的变量名后面要加上 () default用来指定默认值那我们就直接来看自定义注解的使用吧这是我自定义的一个注解先来看一个简单的用法,可以感觉到反射加注解的能力还是有东西的吧。

2025-04-11 16:12:48 812

原创 线程池的四种拒绝策略

线程池的四种拒绝策略

2025-04-10 16:26:26 215

原创 线程池的队列大小可以改变嘛

线程池队列大小为什么不能修改

2025-04-10 16:08:05 724

原创 ConcurrentHashMap总结

什么是ConcurrentHashMap?先来看一段话吧我们知道HashTable相对于HashMap是线程安全的,但是HashTable的线程安全仅仅是在每个方法上加上了synchronized关键字,锁的粒度非常大,这样在他执行某个方法的整个过程中其他线程都是在阻塞的。所以在多线程的情况下,一般并不会使用HashTable,而是会使用ConcurrentHashMap,它是线程安全的,并且锁粒度很小,性能会比较好。

2025-04-06 15:13:25 207

原创 Java中深拷贝的几种方式

在 Java 中,深拷贝(Deep Copy)是指创建一个对象的完整副本,包括该对象的所有引用类型的成员变量也要进行复制。与浅拷贝(Shallow Copy)不同,深拷贝会递归地复制所有层级的对象,确保新对象和原对象完全独立。Cloneableclone():简单易用。:需要手动递归处理每个引用类型的成员变量,容易出错。

2025-04-03 17:35:36 616

原创 Redis中的BitSet及使用场景(BitMap)

BitSet

2025-04-03 17:13:57 780

原创 策略设计模式

策略设计模式及代码举例

2025-04-02 23:01:42 296

原创 责任链设计模式和规则树设计模式

责任链模式和规则树模式区别及示例讲解

2025-04-02 19:55:26 1520

原创 Spring中Bean的生命周期

Spring Bean的生命周期

2025-03-31 23:13:11 902

原创 手写阻塞队列(代码)

【代码】手撕生产者消费者模型。

2025-02-24 22:17:56 116

原创 TypeScript中keyof访问基本类型(数字,字符串等)

typescript中keyof后面加数字,字符串字面量

2024-05-25 15:49:53 635

原创 对于接口和类的区别

接口和类的理解

2024-05-23 16:23:15 499 1

原创 pnpm在系统中配置了路径,在本地终端gitbash中正常运行,vscode中pnpm报错,vscode的gibash终端显示pnpm command not found

系统配好path但是vscode在gitbash显示pnpm command not found

2024-05-18 10:43:56 1136

空空如也

空空如也

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

TA关注的人

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