- 博客(766)
- 收藏
- 关注
原创 python实现自动化生成pdf报告
easypdf是基于reportlab进行修改,比原来使用起来更简单更方便。不用再担心生成的pdf报告没有标准规范。学习本课程你将可以自己掌握封面设计、目录设计、文本使用、插图使用、表格使用、折线图使用、直线图使用、饼图使用、雷达图使用、柱形图使用、散点图使用、面积图的使用。
2024-08-21 12:22:34
4209
60
原创 第18章—数据结构篇:quicklist核心原理剖析
quicklist 是一个类似于 Java 里面 LinkedList 的双向链表,大概结构如下图所示:quicklist 里面的节点是 quicklistNode 类型,quicklistNode 里面维护了 next、prev 指针,指向前后两个 quicklistNode 节点;然后还有一个 entry 指针,指向了一个 listpack 实例。真正的元素是存储在这个 listpack 里面的,那就是说,多个元素存储在一个 quicklistNode 里面。
2026-01-08 15:48:28
545
原创 第17章—数据结构篇:深入ziplist的替代者listpack
在这一节中,我们重点介绍了 Redis 5 引入的 listpack 结构,在 Redis 7 中,listpack 已经完全替换了复杂的 ziplist 结构。首先,讲解了 listpack 结构的细节以及其中 element 的编码方式。然后,重点分析了 ziplist 和 listpack 之间的区别,这也是 Redis 放弃 ziplist 的主要原因之一。
2026-01-08 15:48:15
548
原创 第16章—数据结构篇:深入ziplist之查询、删除与更新操作详解
ziplist 作为在 Redis 7 版本之前重要的底层数据结构之一,不仅是 Redis List 底层实现依赖了它,后面要介绍的哈希结构、有序列表,也都会用到它。通过这三节课程的介绍,我们就将 ziplist 这个结构讲解完了。这三节我们重点介绍了 ziplist 结构本身、分析了 entry 的变长编码方式、ziplist 的插入、查询、删除以及更新操作,还展开说了一些关联的 C 语言知识点。在下一节,我们将介绍 Redis 7 中用来替代 ziplist 结构的listpack。
2026-01-07 07:28:25
702
原创 第15章—数据结构篇:深入ziplist之写入数据
本节课程中,我们重点讲解了 Redis 向 ziplist 结构中插入新元素的关键逻辑,主要分了 9 个核心步骤,其中涉及到了新 entry 长度的计算、插入点之后 entry 的 prevlen 的更新、整个 ziplist 的扩缩容以及连锁更新等操作。通过对这些步骤的分析你也能看出,向 ziplist 中插入数据的逻辑非常复杂,尤其是连锁更新这个操作,在极端条件下,会非常低效,这是由于 ziplist 结构本身所导致的,
2026-01-07 07:28:09
822
原创 第14章—数据结构篇:深入ziplist之核心结构分析
本节课程中,我们重点介绍了 Redis 中 ziplist 这种数据结构的核心结构。ziplist 是一块连续的内存空间,但是逻辑上它表示的是一个链表,之所以不用指针+节点的常规链表方式实现,就是为了节省指针的空间。从这个角度看,Redis 是不是把节省内存这件事情做到了极致呢?ziplist 结构本身的规则有点复杂,通过本节的讲解之后,小伙伴们再阅读 ziplist 代码的时候,有没有豁然开朗的感觉呢?
2026-01-06 08:30:10
594
原创 定时坐标鼠标点击器
今天分享的是一个定时坐标鼠标点击器,主打“到时间点自动帮你点击、按坐标精准执行”。我们只需要提前记录鼠标点击的位置,设置好启动时间、点击顺序和间隔,工具就会在指定时间自动帮你完成重复操作。支持多坐标配置、左键单击/双击、延迟控制和循环执行,操作直观,上手几乎没有成本。比较适合处理那些固定时间、固定位置、反复点击的场景,比如窗口确认、流程操作、日常办公中的机械步骤,让大家从枯燥的手动点击中解放出来。打开软件后,在这里设置定时,然后运行轮数,还有每轮的时间间隔。
2026-01-06 08:29:46
752
3
原创 第12章—数据结构篇:深入Redissds
这里我们需要首先解决一个前置问题:Redis 为什么不用 C 语言的字符串,而非要自己搞一个出来呢?我汇总了下,主要有以下三个原因。第一个原因是“安全的二进制存储”,在有的场景里面,我们在字符串里可能需要存\0这种特殊字符。比如说,\0这种数据,如下:如果直接用 C 语言字符串的话,\0表示字符串结尾,那我就会认为是到 Hello 字符串就完了,对不对?为了要存\0这种特殊字符,sds 就不再把\0当作字符串的结尾,而是明确地记录字符串的长度,比如说存个 length 字段,我就知道到第一个\0。
2026-01-05 08:50:14
550
原创 第11章—实战应用篇:SortedSet命令详解与实战
本节课程的第一部分,我们重点介绍了 Sorted Set 这种结构涉及到的重点命令,主要有基础命令弹出命令范围查询以及集合命令四大类。其中,基础命令主要是读写 Sorted Set 集合中的单个元素以及 score 值;弹出命令可以按照 score 值弹出最大或最小的元素;范围查询是 Sorted Set 的重点命令,它支持正序、逆序的范围查询,还可以支持类似于分页的效果;集合操作比较简单,支持了常见的并集、交集以及差集的运算。
2026-01-05 08:49:54
696
原创 第13章—数据结构篇:sds核心方法解析
这一节我们重点介绍了 sds 的核心方法,主要集中在字符串的初始化以及字符串的扩缩容相关的函数实现上。在讲解字符串初始化的部分中,我们首先介绍了 C 语言如何在堆上分配内存空间,以及 C 语言柔性数组的基础知识,然后分析了 Redis 初始化字符串的具体实现,就使用到了上述两方面的知识以及指针移动的知识。接着又介绍了 Redis 字符串扩缩容的实现,其中有非常多 Redis 的巧妙设计和权衡思想。例如,扩容的时候会优先检查 sds 类型是否需要发生变化,然后进入不同的分支进行处理;
2026-01-04 10:09:47
825
原创 开源实用的年会抽奖工具
log-lottery是一个可配置可定制的抽奖应用,炫酷的3D球体,可用于年会抽奖等活动,支持奖品、人员、界面、图片音乐配置。可定制的抽奖实用工具,专为年会、发布会、团建等现场活动设计。整体以炫酷的 3D 球体抽奖效果为核心,配合动态动画和音乐,让抽奖过程更有仪式感,也更容易把现场气氛拉满。在功能上,log-lottery 不只是点一下出结果。该工具支持对奖品信息、参与人员、抽奖规则进行灵活配置,不同奖项可单独设置人数和抽取方式;
2026-01-04 10:09:17
873
原创 第10章—实战应用篇:Set命令详解与实战
本节课程的第一部分,我们重点介绍了 Set 这种结构涉及到的重点命令,主要有基础命令和集合命令两大类。其中,基础命令主要是操纵 Set 集合中的单个元素,集合命令主要是多个 Set 之间的集合运算。本节课程的第二部分,我们详细讲解了两个 Redis Set 结构在实践中的应用,分别是标签系统和自适应黑白名单。其中,标签系统是一个简易的 Demo,可以帮助你更好地理解 Set 集合命令的使用,自适应黑白名单则是可以直接应用到生产中的功能。希望小伙伴们参考本节提供的这些代码,亲自动手实践一下。
2026-01-03 07:19:13
864
原创 第09章—实战应用篇:Hash命令详解与实战(下)
这一节课程中,我们重点介绍了 Redis 哈希表的两个应用场景:一个是用户资料缓存的场景,该示例模拟了用户登录注册过程中使用缓存的场景,其中使用到了 Redis 哈希表的HGETHSET以及HGETALL三条基础命令;另一个是购物车的场景,该示例使用 Redis 的哈希表来存储一个用户的购物车数据,除了提供了增删商品的基本功能之外,还使用HINCRBY命令实现了增减商品数量的功能。
2026-01-03 07:19:01
1248
原创 第08章—实战应用篇:Hash命令详解与实战(上)
这一小节,我们重点介绍了 Redis 哈希表的核心命令,主要分为读写命令、递增命令、批量命令以及其他命令四大类。其中,读写命令中比较重要的是 HSET 和 HGET 命令,递增命令可以帮我们实现哈希表中单个 Value 的原子递增操作,批量读取命令一般用于线上的离线任务,批量处理哈希表中的数据,为了防止一次读取大量数据导致性能问题,一般使用 HSCAN 命令实现批量读取,尤其对元素较多的哈希表。最后还简单讲解了哈希表的辅助命令,其中比较常用的是 HLEN 命令。
2026-01-02 07:32:46
904
原创 第07章—实战应用篇:List命令详解与实战(下)
这一节,我们以 Java 中的 Lettuce 客户端为例,演示了操作 Redis List 的核心命令,同时给小伙伴们介绍了三个应用 Redis List 比较典型的场景。首先是简易消息队列的场景。虽然我们用 Redis List 的特性,可以实现消息队列的效果,但是在可靠性、一致性等方面会有一些问题,所以在实践中需要做一些额外的工作来进行补齐,或者直接选择成熟的消息队列组件,例如 Kafka、RocketMQ。然后是提醒功能的场景。
2026-01-02 07:32:34
1004
原创 第06章—实战应用篇:List命令详解与实战(上)
这一节,我们一起学习了 Redis List 的核心命令,主要将 List 命令分为基础操作、阻塞操作、复合操作、随机操作四大类进行讲解,也带着大家做了非常多的演示,小伙伴们一定要自己动手实践一下哦。命令`,它是用来截断 List 的**。LTRIM 命令后面跟两个下标值,LTRIM命令只保留这两个下标之间的元素。下面的示例中,LTRIM 命令会把 indexlist 的前两个元素截掉,保留的部分就是从下标 2 开始到 List 结尾的元素,也就是 AAA、BBB 两个字符串就被截掉了。OK。
2025-12-31 07:02:12
839
原创 第05章—实战应用篇:RedisString命令与实战
这一节主要介绍了 Redis 字符串的核心命令,主要就是读写命令、批量操作、递增操作,还有一些复合操作,这里就不再一一展开重复了,关键还是小伙伴们根据本节的命令演示自己动手练习,才能真正熟悉这些命令的含义。然后,本节分析了 Redis 字符串的应用场景。这里首先介绍了在 Java 中使用 Lettuce 客户端连接访问 Redis 的基本代码模板,后续其他命令的实践示例都会使用这套模板,小伙伴们一定要亲自搭建一下这个 demo 项目。
2025-12-31 07:01:45
773
原创 第04章—先导基础篇:Redis7.0环境搭建与PR阅读指导
这篇文章比较简单,就是带你搭了一个 Redis 源码环境,你一定要自己动手搭建一下,后面分析 Redis 实现的时候,就可以事半功倍。然后就是和你一起去看了一下 Redis 7.0 的 Release Note,了解了一下 Redis 的新特性从哪里看,如何找到每个新新特性对应的 PR,以及这些新特性都有哪些相关的讨论和代码提交。这整体比较简单哈,接下来我们就进入“Redis 的实战应用篇”,我会带你一起学习一下 Redis 中五大类结构的常用命令,以及这五类结构在实战场景中的使用。
2025-12-29 08:45:13
932
原创 第03章—先导基础篇:10分钟C语言入门
本文我们简单介绍了一下阅读 Redis 源码需要的 C 语言基础,主要包括 C 字符串、结构体、指针以及数组四部分内容。其中,我们将 C 字符串与 Java 中字符串的底层实现进行了对比说明;将 C 语言中的结构体与 Java 中的类进行了对比介绍,如果你有 Java 基础或者其他语言的基础,相信写写 Demo,就可以快速上手了。最后,我们讲解了 C 语言中的一级指针、二级指针以及指针与数组的组合类型,还提供了一种分析复杂类型定义的技巧,并带你结合示例做了个简单的练习。
2025-12-29 08:44:56
867
原创 第02章—先导基础篇:初识Redis
首先,我们一起看了一下 Redis 官网的文档,了解了一下 Redis 的重要特性;然后,从服务架构演进的角度,回答了一下为什么要在项目里面使用 Redis 的问题;最后,通过五个维度的对比,详细回答了一个技术选型的问题:我们为什么选用 Redis 而不是 Memcached?这些都是些开放性的问题,本文给出的回答也比较简单,你可以再思考一下,尝试从其他角度回答。也欢迎你在留言区分享你的问题和想法。的问题;
2025-12-28 21:17:40
845
原创 第01章—开篇词:如何才能精通Redis?
你好,我是杨四正。有多年互联网一线开发经验,曾在多家互联网企业任职,涉及电商、新零售、短视频、直播等多个领域。目前在某短视频大厂任职 资深技术专家,参与公司多款中间件开发,工作中深入研究并改造过多种开源产品的实现,在架构设计方面经验丰富。我平时特别热衷于技术分享,目前已经出品了 Kafka、Dubbo、MyBatis、etcd、OpenTSDB、Promethus 等多个主题的书籍和课程。
2025-12-28 21:17:02
616
原创 PrometheusAlert多渠道告警通知神器
是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的预警消息。通知渠道支持钉钉、微信、华为云短信、腾讯云短信、腾讯云电话、阿里云短信、阿里云电话等。
2025-12-27 10:24:56
699
原创 python写的发票文件批量重命名工具
发票一多,最头疼的就是文件名全是扫描件IMG_XX,发文件名没有相关发票属性信息,查一张都要点半天。今天分享的这个发票批量重命名工具,可以自动识别发票里的开票公司、发票号、日期、购销双方和金额,并按统一规则一次性重命名,生成清清楚楚的文件名。原文件不动,重命名后的发票自动保存到新文件夹重命名,几十上百张一起处理也不费劲。对经常报销、做账、整理资料的人来说,用一次就回不去手动改名了。其实我在今年也分享过这个发票重命名工具,但很多朋友反馈文件重命名规则不起作用问题和很多发票不能识别的问题。
2025-12-26 07:09:24
401
原创 Prometheus-Blackbox简单监控
Prometheus白盒监控墨盒监控白盒监控:是指我们日常监控主机的资源用量、容器的运行状态、数据库中间件的运行数据。这些都是支持业务和服务的基础设施,通过白盒能够了解其内部的实际运行状态,通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化。墨盒监控:即以用户的身份测试服务的外部可见性,常见的黑盒监控包括HTTP探针TCP探针DnsIcmp等用于检测站点、服务的可访问性、服务的连通性,以及访问效率等。两者比较。
2025-12-26 07:07:18
838
原创 prometheus-operator手动部署
自定义报警使用钉钉推送消息安装配置方法修改 alertmanager 配置,接入 dingtalk-hook# 先将之前的 secret 对象删除 $ kubectl delete secret alertmanager-main -n monitoring。
2025-12-26 07:06:51
825
原创 prometheus-如何自动发现kubernetes-metrics接口
Prometheus 可以通过匹配来获取想要的信息,这只是一种方法。还有其它方法,比如通过等。
2025-12-25 16:37:46
234
原创 基于python写的定时关机工具附源代码
相信大家都有过这样的经历:就是在下载文件、跑程序、挂任务,本来只想用一会儿,结果一忙就忘了关电脑,第二天早上发现它默默工作了一整夜。今天分享的这个基于 Python 编写的定时关机工具,就是为这种需求准备的。工具支持指定时间或倒计时关机,可选择关机、重启或注销,还能一键取消计划。界面简单直观,一看就懂,设置几秒就完成,到点自动执行,让电脑准时下班。
2025-12-25 07:28:04
1019
原创 PromQL-常用命令
每一种指标标示的意义都不一样,因此对应的类型不一样,比如系统负载是随着时间变化而变化的值,cpu使用时间是一个一直递增的值,只要系统不重启。会产生一个新的向量,该向量包含vector1中所有的样本数据,以及vector2中没有与vector1匹配到的样本数据。会产生一个由vector1的元素组成的新的向量。在限定匹配标签后,右向量中的元素可能匹配到多个左向量中的元素 因此该表达式的匹配模式为多对一,需要使用。会产生一个新的向量,新向量中的元素由vector1中没有与vector2匹配的元素组成。
2025-12-24 08:25:18
689
原创 从-Docker-到-Kubernetes-日志管理机制详解
在容器化时代,容器应用的日志管理和传统应用存在很大的区别,为了顺应容器化应用,Docker 和 Kubernetes 提供了一套完美的日志解决方案。本文从 Docker 到 Kubernetes 逐步介绍在容器化时代日志的管理机制,以及在 Kubernetes 平台下有哪些最佳的日志收集方案。涉及到的话题有 Docker 日志管理机制、Kubernetes 日志管理机制、Kubernetes 集群日志收集方案。Docker 日志管理机制Docker 的日志种类。
2025-12-24 08:25:01
931
原创 十道Kubernetes面试题
1、它们是主节点的组件。2、它们是集群的工作节点。[答案]3、他们正在监控kubernetes中广泛使用的引擎。4、他们是docker容器服务。1、指定外部名称[答案]2、指定具有IP地址和端口的端点3、只需指定IP地址即可4、指定标签和api版本。
2025-12-23 08:28:12
304
原创 使用k8s集群调度GPU
参考链接:https://github.com/NVIDIA/k8s-device-plugin#enabling-gpu-support-in-kubernetes。,我对硬件资源不是很懂,大概看了看官方,简单梳理了一下思路,便开始了踩坑之路(本片文章是无坑文档,请放心使用/参考)对于实验学习而言,在k8s集群中,至少保证1台node节点是有显卡的(本文是。
2025-12-23 06:32:14
1253
原创 使用Kubernetes正确的处理用户请求
毫无疑问,我们希望正确处理客户端请求。当pod正在启动或关闭时,我们显然不希望看到断开的连接。Kubernetes本身并不能确保这种情况永远不会发生。您的应用需要遵循一些规则以防止断开连接。本文讨论这些规则。
2025-12-22 09:43:25
929
原创 探索Kubernetes的ServiceAccounts
Kubernetes使用Users和Service Account进行权限控制的相关工作,User 通过密钥和证书对Kuberntes API的访问进行认证,任何来自集群外的访问都需要被Kubernetes认证。通常使用X.509生成的证书对请求进行认证。首先我们要再次重申Kubernetes没有通过数据库或者其他介质存储用户名和密码。相反,Kubenetes更希望对用户的管理可以由集群的外的程序来管理。
2025-12-22 09:43:13
657
原创 kubernetes中利用LXCFS控制容器资源可见性
社区中常见的做法是利用lxcfs来提供容器中的资源可见性。lxcfs是一个开源的FUSE(用户态文件系统)实现来支持LXC容器,它也可以支持Docker容器。LXCFS通过用户态文件系统,在容器中提供下列procfs的文件。/proc/statLXCFS的示意图如下:比如,把宿主机的文件挂载到 Docker 容器的位置后。容器中进程读取相应文件内容时,LXCFS的FUSE实现会从容器对应的Cgroup中读取正确的内存限制。从而使得应用获得正确的资源约束设定。lxcfs支持容器镜像Centos系统。
2025-12-21 20:47:08
613
原创 kubernetes终端管理神器
K9s:提供了一个基于curses的终端UI来与您的 Kubernetes 集群进行交互。该项目的目的是简化浏览观察和管理应用程序的过程。K9s 持续监视 Kubernetes 的更改,并提供后续命令以与观察到的Kubernetes资源进行交互。
2025-12-21 20:46:56
305
原创 kubernetes面试题
下面是16道Kubernetes面试题。非标准答案,如有错误地方请指出。目的是帮助大家温习K8S。Pod控制器CRD定义:在 Kubernetes 中一切都可视为资源,Kubernetes 1.7 之后增加了对 CRD 自定义资源二次开发能力来扩展 Kubernetes API,通过 CRD 我们可以向 Kubernetes API 中增加新资源类型,而不需要修改 Kubernetes 源码来创建自定义的 API server,该功能大大提高了 Kubernetes 的扩展能力。
2025-12-19 10:40:51
594
原创 kubernetes临时存储需要限制吗
Node节点通常还可以具有本地的临时性存储,由本地挂载的可写入设备或者RAM来提供支持。临时(Ephemeral)意味着对所存储的数据不提供长期可用性的保证。Pods 通常可以使用临时性本地存储来实现缓冲区、保存日志等功能。kubelet 可以为使用本地临时存储的 Pods 提供这种存储空间,允许后者使用emptyDir类型的卷将其挂载到容器中。kubelet 也使用此类存储来保存节点层面的容器日志容器镜像文件以及运行中容器的可写入层。
2025-12-19 10:40:39
551
原创 kubernetes亲和与反亲和实用示例
nodeSelector 提供了一种非常简单的方法来将 pod 约束到具有特定标签的节点上。亲和/反亲和功能极大地扩展了你可以表达约束的类型。关键的增强点是(1) 语言更具表现力(不仅仅是“完全匹配的 AND”)(2) 你可以发现规则是“软”/“偏好”,而不是硬性要求,因此,如果调度器无法满足该要求,仍然调度该 pod(3) 你可以使用节点上(或其他拓扑域中)的 pod 的标签来约束,而不是使用节点本身的标签,来允许哪些 pod 可以或者不可以被放置在一起亲和功能包含两种类型的亲和,即节点亲和。
2025-12-18 08:40:27
620
原创 Kubernetes升级填坑指南一
下面 “坑” 都是作者升级 Kubernetes 遇到的问题并给出解决方法,目的就是避免读者不要在掉进同样的坑中。
2025-12-18 08:39:53
619
【嵌入式开发】FreeRTOS实时操作系统详解:多任务管理、通信同步及移植实践
2025-05-14
【LabView编程基础】LabView常用快捷键及基本控件结构:循环、条件与事件结构详解
2025-05-14
深度学习注意力(Attention)机制详解及其在NLP和CV领域的应用:原理、代码实现与典型任务
2025-05-14
【编程与节日祝福】用C和Python编写的三段母亲节祝福程序:创意代码表达孝心
2025-05-11
### 【计算机科学】计算机组成原理:从硬件到编程语言-计算机构成与运行机制详解
2025-05-07
编译原理从前端词法语法语义分析到后端代码生成优化:构建高效编译系统全流程解析了文档的主要内容
2025-05-06
【信息安全领域】第22届ISCC信息安全与对抗技术竞赛通知:赛程安排、竞赛类别及参赛规则详细介绍了文档的核心内容
2025-05-02
数学建模2025五一杯A题:支路车流量推测模型构建与优化思路分析
2025-05-02
### 网络安全SQL注入详解:原理、分类与防御措施
2025-05-01
【Linux进程管理】进程创建、终止、等待及程序替换核心技术详解:多进程开发与资源回收机制设计
2025-05-01
【计算机视觉】YOLOv8自定义数据集训练教程:从环境搭建到模型测试全流程详解如何使用YOLO
2025-04-29
离散数学基于真值表法的主析取范式与主合取范式求解:中缀表达式转换及逻辑运算实现
2025-04-29
【数据集成领域】Pentaho Kettle ETL工具安装与使用教程:从下载到数据转换全流程详解
2025-04-29
办公用品入库出库管理系统
2025-08-16
批量发票录入数据管理系统
2025-08-16
批量识别PDF高铁票输出关键信息为表格
2025-08-16
批量修改文件后缀名工具
2025-08-13
Excel多合一文件合并工具
2025-08-12
批量整理图片制作成导航页来浏览工具
2025-08-10
微软windows系统直链下载V1.1.9
2025-08-05
文档内容搜索工具AnyTXTSearcher
2025-07-17
硬盘检测及监控工具CrystalDiskInfo
2025-07-15
开源简易PDF骑缝章批量标注工具
2025-07-12
医保基本药品耗材目录查询-数据库在线更新
2025-07-11
公众号、知乎、今日头条、简书等文章排版美化工具
2025-07-10
日常办公文档批量打印工具
2025-07-15
文件和文件夹批量重命名工具
2025-07-11
图片批量转换,轻松搞定格式转换
2025-07-10
磁盘分区隐藏禁用工具1.0
2025-07-10
markdown转pdf工具
2025-06-25
办公室摸鱼神器:让你的电脑“蓝屏”得毫无破绽
2025-06-14
32G的电脑内存你觉得还够用吗?
2025-04-04
DeepSeek服务器太繁忙了,目前有没有功能差不多的可替代的?
2025-03-19
为什么还有运维胆敢部署新的 centos7?
2025-03-16
面对铺面而来的 Deepseek,普通人很难不焦虑吧?
2025-02-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅