自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HTTP状态码

HTTP响应状态码用来表明特定的HTTP请求是否完成,共有五大类:1.信息响应(1xx)2.成功响应(2xx)3.重定向消息(3xx)4.客户端错误响应(4xx)5.服务端错误响应(5xx)

2026-04-02 09:42:24 259

原创 Git 从入门到实战:一篇搞定版本控制

在软件开发中,版本控制是必不可少的一环。Git 作为目前最流行的分布式版本控制系统,几乎是每位开发者的必备技能。本文将从零开始,带你全面掌握 Git 的核心概念与常用操作,包括安装配置、本地仓库管理、分支策略、远程仓库协作,以及在 IDE 中的集成使用。无论你是刚接触 Git 的小白,还是希望巩固基础的老手,相信都能从中受益。

2026-03-28 21:16:26 264

原创 redis缓存

问题核心原因应对策略缓存击穿热点 key 失效瞬间高并发互斥锁、永不过期、预加载缓存穿透查询不存在的数据缓存空对象、布隆过滤器、参数校验缓存雪崩大量 key 同时失效或节点故障随机过期时间、多级缓存、高可用架构、限流降级通过合理设计和组合这些方案,可以有效提升缓存系统的稳定性,保护后端数据库。

2026-03-21 10:58:13 141

原创 Redis持久化策略

数据量大时 fork 子进程可能造成主线程短暂阻塞,不适合强实时、零丢失场景。

2026-03-14 09:44:51 302

原创 go-redis使用聊天室功能实现

Redis 作为内存数据存储,凭借丰富的数据结构和高效性能,在即时通讯系统中扮演着重要角色。本文通过一个聊天室项目的实际代码,分析了用户缓存、历史消息、消息队列和排行榜的实现。希望这些内容能对你有所帮助,欢迎留言讨论!备注:本文是借助ai分析代码来写的,内容有不当地方请仔细辨别!!!

2026-03-08 10:47:32 289

原创 redis发布订阅和Stream

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。缺点:消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。简单来说发布订阅可以分发消息,但不能记录历史消息。

2026-02-27 16:21:02 702

原创 docker私有仓库搭建以及镜像上传、拉取和删除

docker ps,用该命令看有无该容器,查看有后我们可以去浏览器输入地址来查看我们的私人仓库: http://私有仓库ip:端口号/v2/_catalog 这里的私人仓库ip是我们linux通过ip addr查看ens33里的ip,例如192.168.100.188。通过该命令来修改此文件,我们进入文件内部后,查找到 "insecure-registries": 语句,在里面加一行 "私人仓库ip:端口号" 后保存文件退出就可以了(ip和端口号要改成自己的)。

2026-02-04 20:49:29 448

原创 go栈与队列之窗口最大值

再设计pop()函数,由刚才的push()函数设计就知道,队列里面的元素个数不一定等于滑动窗口里的元素个数。单调递减队列是左边(队列出口处)的值最大,所以窗口最大值就是索引0处,通过队列的pop()和push()函数,来设计吧。当要进来的元素比入口处元素大时,进来后就不成单减队列了,所以要先比较,把比他大的元素都弹出,然后再将该元素加入队列。最开始的滑动窗口值,只能用push()函数,通过它让我们的队列成单调递减,那么我们先设计push()函数。// 比入口元素大的就弹出元素,直到比它小。

2026-01-26 20:25:36 552

原创 go栈与队列之有效的括号

首先需要的栈的功能入栈和出栈是必备的,要匹配栈顶元素的括号是否对应,还需要返回栈顶元素的功能,最后匹配完后看是否有多余的括号,需要返回栈是否为空的功能。当在s的1索引后,栈内是 ( [ ,到2索引后s[2] = ] ,此时出栈,将 ] 和 [ 进行匹配,栈内只有( 了。if val == '(' || val == '[' || val == '{' { //左括号入栈。当遇到左括号入栈,遇到右括号先返回栈顶元素进行匹配,若对应则出栈。情况一:左边有多余括号,如((){[]},多了最左边的(

2026-01-24 09:26:06 575

原创 go栈和队列之用栈实现队列

func (s *MyStack) Peek() int { //返回栈顶元素的值。func (s *MyStack) Size() int { //查看栈内元素个数。func (s *MyStack) Size() int { //查看栈内元素个数。func (s *MyStack) Push(val int) { //入栈。func (s *MyStack) Push(val int) { //入栈。func (this *MyQueue) Fill() { //输出栈的填充。

2026-01-15 16:48:12 548

原创 关于罗振宇跨年演讲的感受

还有一个ai在教育上的革命。在ai面前,在知识广度上老师都弱爆了,但没有老师精通,如果学校的教育和ai结合起来就好了,我十分不喜欢现在类似的流水线的教育,就像现在大学的教育,教的落后时代太多,教育还没有从以前需要的“流水线”中转变为当今时代所需要的(当然我并清楚现在需要什么样子的)。现在的ai还没有那么发达,只能干掉一小部分工作,但它渗透的广度却令人震惊,就连小超市都充满它的身影,跟长在人身体里的毛细血管一样几乎处处存在,莫名有些担忧,若干年后ai足够强时,它要“反”,岂不是方方面面都难以防备。

2026-01-05 20:54:20 252

原创 go字符串算法查找其他字符串最先出现的位置

2]=b开始再匹配。kmp是计算出字符串每个位置的最长相等前后缀(已经匹配了的内容)将它存到数组中(该数组通常叫next,也有其他叫法),然后若遇到不匹配的地方就利用刚才的信息直接跳到已经匹配的最长的地方。我们拿"abaabf"来说,总长度是6,我们用大小为6的数组来存每个位置的最长相等前后缀(从开始到指定位置的子串的最长相等前后缀)。下标2处是” aba “,前缀有a、ab,后缀有a、ba,有相同的a,所以为1。剩余的不做计算了,我们可以得出它的最长相等前后缀数组next=[0,0,1,1,2,0]。

2026-01-03 16:01:40 571

原创 go字符串算法之右旋字符串

给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。我们可以发现,右旋后字符串分两个部分(拿上面的例子来说),fg和abcde。分开来就很容易发现右旋后的两部分fg和abcde其实就是反转后两部分gf和edcba的再反转而已。只要写过反转字符串(将字符串顺序都从后往前调换,比如abc,反转后就是cba)这道题就很容易想出来了。fmt.Println(string(rever(s, n, len(s)-1))) //反转剩余的并输出。

2025-12-25 15:41:31 267

原创 go字符串反转其中的单词

推荐使用快慢指针的方式,让快指针跳过头部空格或中间多余的空格,让慢指针从头获取快指针的值,这样可以获取到想要的无多余空格和首尾空格字符串。解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。输入: "a good example"输入: "the sky is blue"输出: "blue is sky the"输出: "example good a"//去除中间多余的空格。// 反转字符串a到b的内容。

2025-12-20 09:35:37 368

原创 go字符串之替换数字算法

对于go语言的处理方法比较简单,只要识别到数字就在数字位置的前方追加字符n,u,m,b,e,r即可,然后跳过数字,在把其后面的内容加上(非数字)就可以了。给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。对于输入字符串 "a5b",函数应该将其转换为 "anumberb"输入:一个字符串 s,s 仅包含小写字母和数字字符。

2025-12-14 11:37:57 343

原创 go链表算法之两两交换链表节点的理解

1再指向3,再让虚拟头节点指向3进行下一次(提前存一下指向下一对要交换的节点的第一个节点,在这里是3),之后更新一下虚拟头节点和要交换的节点的头的位置即可,交换直到结束。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。head.Next.Next = head//2指向1。虚拟头节点:自己创建的一个节点,但不用它的值当做一个指针使用。以实例来说,先让虚拟头节点指向第一个节点1,然后让2指向1,ptr.Next = head.Next//指向2。head.Next = next//1指向3。

2025-12-06 16:23:42 1043

原创 Go算法之设计链表的理解

其次1中:仔细想一下和在二、三中处理类似,虚拟头节点可以帮我们插入到index个节点前,至于插到末尾只需使遍历index次可以得到下标为index-1的节点(从虚拟头节点开始遍历)此时的位置的一个节点就是要插入的位置(当index等于链表大小时刚好指向最后一个节点,其实就是在size+1个节点前插入新节点),而此时让新节点指向该索引节点的下一个节点,让当前节点指向新节点即可;如果从第一个节点开始遍历,链表为空时(大小为0),若index=0则是插入为头节点,而第一个节点为空无法遍历,所以会报错。

2025-11-29 11:38:18 893

原创 链表算法之反转链表笔记

3.让当前节点指针指向temp(第一个指向为空,其余指向上一个节点)1.先创建一个空的链表节点temp作为头节点的指向。2.从头节点开始遍历,先创建next接收下一个节点。//第一个指向空,其余指向上一个节点。输入: 1->2->3->4->5->NULL。输出: 5->4->3->2->1->NULL。4.再让temp指针指向当前节点。5.让当前节点指向下一个节点。//创建空指针做末尾。题意:反转一个单链表。

2025-11-19 20:25:04 134

原创 数组算法之土地权值划分最小差(仅限横竖划分)的理解

对于下面这道算法题,给出我的理解题目链接:44. 开发商购买土地(第五期模拟笔试)

2025-11-14 16:53:43 858

原创 2025.11.2考核感受以及图片拷贝

这个函数也很简单,picturename是图片路径,target是目标路径,只需要将两个路径传入就会提取到io.copy需要的reader和writer,然后copy会帮我们复制好图片放到对应路径。要说拷贝图片的实现其实我并没有写出来,主要是靠io.copy来实现的,也就是goland自带的,前面是对图片和要拷贝到的地方的一个小处理,让他们符合io.copy的要求。总体感受下来考核时意外的挺放松的,考核更像是一个对知识的回顾和补充,问问题既是看你有没有记住,也可以帮你补充不了解的方面或是小知识点。

2025-11-08 12:10:35 235

原创 关于一个简单的Go语言计算器

result = operatorPrecedence(slice) //将括号结果放入result。result = operatorPrecedence(slice) //将括号结果放入result。= -1 { //不为-1则说明含有括号。for i < len(str) {// str是输入的算数表达式或是括号内的表达式。//处理负数:开头是负数或中间是负数,中间是负数其前一个是操作符号。// 处理无括号计算式 符号优先级: * / > +- 括号单独处理。

2025-10-31 15:07:26 565

原创 Go文件操作——关于文件的打开和写入笔记

O_CREATE int = syscall.O_CREAT // 若不存在就创建。O_EXCL int = syscall.O_EXCL // 文件必须不存在。O_TRUNC int = syscall.O_TRUNC // 打开时清空文件。O_SYNC int = syscall.O_SYNC // 同步打开。O_RDONLY int = syscall.O_RDONLY // 只读。O_APPEND int = syscall.O_APPEND // 追加。

2025-10-26 16:37:12 122

空空如也

空空如也

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

TA关注的人

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