自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis之Set数据类型

Redis的Set是无重复字符串集合,默认无序,但INTSET编码时有序。适用场景包括共同关注、UV统计、用户标签和随机抽奖。常用操作有添加/删除元素(SADD/SREM)、判断存在(SISMEMBER)、集合运算(SINTER/SUNION/SDIFF)等。SSCAN支持渐进式遍历大量数据。底层采用INTSET(元素为整数且≤512个时,有序存储并使用二分查找)或HashTable编码。INTSET在特定条件下可提升性能并节省空间。

2025-10-20 22:46:02 442

原创 Redis之List数据类型

Redis中的List是一种有序字符串集合,支持双端操作(头尾插入/删除)。3.0版本采用ZIPLIST编码(紧凑内存结构)存储短字符串(<64B)且元素少于512个的列表,其特点是包含长度字段和前后向指针,但可能引发连锁更新问题(O(n^2)最坏复杂度)。7.0版本引入LISTPACK优化结构,通过独立长度字段(emelent-tot-len)消除prevlen依赖,避免连锁更新,保持O(n)平均操作效率。两种编码均通过特定字段实现快速遍历,其中LISTPACK的改进使数据变更更稳定高效。

2025-10-17 19:07:59 1235

原创 Redis之String数据类型

Redis中的String是二进制安全的字符串对象,最大512MB。采用SDS(SimpleDynamicString)数据结构,具有自动扩容、O(1)长度查询等优势。包含三种编码:INT(整型)、EMBSTR(短字符串连续存储)、RAW(长字符串非连续存储)。EMBSTR只读且内存高效,RAW可修改但需两次内存操作。适用于缓存JSON、计数器等场景,支持原子操作和过期设置。常用命令包括SETEX、GET等,通过不同编码优化内存使用和性能。

2025-10-13 16:11:22 309

原创 Java类的生命周期

类的生命周期

2025-05-16 22:14:59 611

原创 SpringBoot调用文心智能体API

在开发基于百度文心智能体的AI助手过程中,遇到了一系列技术挑战,包括等问题。本文将总结这些问题的解决过程,并提供可复用的解决方案,帮助开发者快速集成百度文心智能体API。

2025-03-13 15:47:11 1132 1

原创 MVCC原理

MVCC原理

2024-12-26 15:08:11 539 1

原创 SpringBoot集成邮箱

引入相关依赖因为各大邮件都有其对应安全系统,不是项目中想用就可以用的,我们必须要拿到其对应的客户端授权码才行,拿到授权码,在项目中配置SMTP服务协议以及主机 配置账户 ,就可以在项目中使用各大邮件运营商进行发送邮件。

2024-10-24 14:13:42 574 2

原创 Spring Boot中 自定义starter逐级抽取过程

当我们在写代码过程中,发现一个包里的代码内容可以在多个方面使用,也许我们会选择cv大法,但是这样的做法不利于后期维护,如果想要修改一个细节的功能,就得把每一个粘贴的地方都做一个修改,于是乎我们可以自定义starter,任何项目导入此starter都会具有里面的功能,如若需要修改参数内容,只需在中修改即可..

2024-05-29 18:22:39 1573

原创 @Profiles环境隔离用法

环境隔离能力;快速切换快发,测试,生产环境步骤:1.23.包含指定环境(不管激活哪个环境,这个都得要有) 总是要生效的环境。

2024-05-27 12:40:08 404

原创 Spring Boot中全面接管SpringMVC

而WebMvcConfigurer组件是定义Mvc的底层行为的。

2024-05-21 09:25:42 1730

原创 SpringBoot中的静态资源规则

所有的静态资源都定义了缓存规则,[浏览器访问过一次,就会缓存一段时间,但此功能参数是无默认值的]--->可以通过配置文件修改默认值。./webjars/下的所有路径** 资源都在 classpath:/META-INF/resources/webjars/3.userLastModified: 是否使用lastModified头 默认false。2.cacheControl:缓存控制,默认无{私有缓存, 共享缓存}1.period:缓存间隔 默认0s。

2024-05-20 16:19:32 322 1

原创 SpringBoot自动配置原理

-->它包含了所有配置--->但SpringBoot默认只能扫描到自己主程序所在的包及其子包--->所以用了一个@SpringBootApplication注解。1.导入场景启动器--->场景启动器导入了所有依赖--->每个场景启动器都引入了starter-boot-starter(核心场景),即。导入了一堆组件--->组件都是从XxxProperties中提取属性--->xxxProperties又是。发挥功能--->它又由@Import提供功能,批量导入了142个配置类(

2024-05-20 15:57:08 735 1

原创 简单的指针总结

传址调用,可以让函数和主函数之间建立真正的联系,在函数内部可以修改主函数中的变量;--**指针类型**决定了指针进行解引用操作的时候能够访问空间的大小-->这并没有改变p所指的变量的类型,而是让后人用不同的眼光通过p看它所指的变量。无论指向什么类型,所有的指针的大小都是一样的,因为都是地址(4/8)概念:是指针指向的位置是不可知的(随机的,不明确的,没有明确限制的)是个变量,它用来存放地址的变量(存放在指针的值都当作地址来处理)但是指向不同类型的指针是不能直接互相赋值的,这是为了避免用错指针。

2023-12-07 18:14:01 346 1

原创 动态内存开辟一个二维数组

(仅为个人学习总结,有问题可评论指出,虚心接受)

2023-12-07 18:02:36 281 1

原创 动态内存分配(malloc、calloc、realloc)

数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整 但是对于空间的需求,不仅仅是上述的情况。**情况2**: 当是情况2 的时候,原有空间之后没有⾜够多的空间时,扩展的⽅法是:在堆空间上另找⼀个合适⼤⼩ 的**连续空间**来使⽤。**情况1:** 当是情况1 的时候,要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发⽣变化。- 如果参数 ptr 指向的空间不是动态开辟的,那free函数的⾏为是未定义的。这个函数向内存申请⼀块连续可⽤的空间,并返回指向这块空间的指针。

2023-12-03 18:48:11 149 1

原创 结构体和位段的一些笔记

4、如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。函数传参的时候,参数是需要压栈,会有时间和空间的系统开销,如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,会导致性能下降!不能对位段的成员使用&操作符,这样就不能使用scanf直接给位段的成员输入值,只能是先输入在一个变量中再赋值给位段成员。3、结构体总大小的最大对齐数(结构体中每个成员变量都有一个对齐数,所有对齐数中最大的)的。

2023-12-02 19:48:13 111

原创 qsort在冒泡排序的模拟实现

【代码】qsort在冒泡排序的模拟实现。

2023-12-02 00:16:10 190

原创 使用函数指针数组做成的简略计算器

【代码】使用函数指针数组做成的简略计算器。

2023-11-23 20:16:53 211

原创 关于位操作符

若是逻辑右移左边直接补0,但是算术右移则用原该值的符号填充!:左边用原该值的符号位填充,右边丢弃(大部分编译器):左边用0填充,右边丢弃(比较暴力)只要有0就是0,两个同时为1才是1。只要有1就是1,两个同时为0才是0。计算规则:对应的二进制位进行运算。注:他们的操作数必须是整数。相同时为0,相异时为1。:左边抛弃,右边补0。例:正数10的二进制。

2023-11-07 18:19:38 105 2

空空如也

空空如也

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

TA关注的人

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