自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 安装linux rz sz——本地和linux虚拟机互传文件

这些命令起源于早期的拨号调制解调器时代,是 UNIX/Linux 系统中经典的串行通信文件传输工具,现在仍然广泛用于 SSH 终端中的文件传输。

2025-12-18 09:00:00 989

原创 LRU 和 LFU 淘汰算法

LFU(Least Frequently Used,最不经常使用)算法是一种缓存淘汰策略,用于在缓存空间有限时,优先淘汰使用频率最低的数据。LFU算法基于数据的访问频率每个缓存项维护一个访问计数器,记录被访问的次数。当缓存满时,优先淘汰访问频率最低的项。如果多个项的访问频率相同,通常淘汰最早进入缓存的项(结合时间戳或队列顺序)。多个频率链表 + Hashmap数据结构哈希表:存储键值对(key-value),用于O(1)时间查找数据。频率表:维护一个频率到缓存项。

2025-12-17 09:00:00 1064

原创 FTP协议+详细安装指南

FTP(File Transfer Protocol)是文件传输协议的缩写。它是一种标准的网络协议,用于在计算机网络上(最常见的是在互联网上)在客户端和服务器之间传输计算机文件。FTP 就是一个专门用来上传和下载文件的工具。

2025-10-25 09:00:00 788

原创 CAP原则

etcd 满足 CP:在网络分区(Partition)发生时,etcd 会优先保证一致性(Consistency) 和分区容错性(Partition Tolerance),而牺牲可用性(Availability)。(由于是分布式系统,网络分区,如断网、丢包、节点宕机,是不可避免的,所以p一般是必须要满足的)CAP定理表明,在分布式系统中,当网络分区(P)发生时,你只能在一致性(C)和可用性(A)之间选择一个,无法同时保证两者。数据在多个节点备份,即使部分节点失联,其他副本仍可提供服务。

2025-10-16 09:00:00 1759

原创 Github上的 2FA 双因素认证

TOTP Token Generator(TOTP 令牌生成器) 就是你用来获取那个不断变化的6位数字的工具,它是你开启2FA后,最常用到的“第二因素”。和chorme浏览器的身份验证器插件功能相同,不过我当初好像没有保存密钥,所以不能用这个网站生成代码,只能用我的浏览器插件了,之前通过插件扫描密钥对应的二维码,插件应该保存的有密钥的相关信息。Recovery Codes 的主要作用是在你无法使用常规的第二因素(比如你的手机验证器App或安全密钥)时,让你能够重新登录你的GitHub账户。

2025-10-13 09:00:00 1082

原创 聊聊项目开发中的测试

毋庸置疑,项目测试是相当重要的。但是测试也要分情况,有些情况下需要进行单元测试,有些情况下单元测试的紧急程度不高。小公司初创阶段,强调的是小步快跑、快速迭代。第一要素是生存下来,这就意味着需求变动会较大(即使这个功能有很多bug,但是只要能跑起来,我们后期可以慢慢优化,重点是要有这个功能)。在这种情况下,测试的重点往往集中在核心功能的可用性上,确保产品能够快速推向市场,验证商业模式。小公司的测试资源有限,可能会对核心功能做一些简单的测试,优先覆盖主要用户场景,而对边缘案例的测试可能暂时搁置。这种策略虽然存在

2025-09-30 16:58:04 838

原创 Linux 命令行入门:必学基础命令详解

它简单易用,特别适合初学者或需要在终端中快速编辑文件的用户。当在终端输入 ls -a 并回车时,系统会列出当前目录下的所有文件和目录,包括:普通文件和目录、隐藏文件(以 . 开头的文件和目录)、当前目录(.)和父目录(..),这些是特殊目录项。当用户执行 sudo 命令时,系统会要求输入该用户的密码(通常是用户的登录密码,而非 root 密码),验证通过后即可以超级用户或指定用户的权限运行命令。由于 tail -f 跟踪的是旧文件的描述符,当 vim 替换文件后,旧描述符指向的文件已不存在(或被替换)。

2025-09-29 17:32:32 712

原创 用Go手搓各种数据结构——列表、队列、栈、链表、二叉树

二叉树是一种每个节点最多有两个子节点(称为“左子节点”和“右子节点”)的树形数据结构,它结合了有序数组快速查找和链表快速插入删除的优点,是许多高级数据结构(如二叉搜索树、堆、红黑树)的基础。循环链表(Circular Linked List)是一种特殊的链表,其中最后一个节点指向第一个节点,形成一个环状结构。列表是一种线性的数据结构,用于存储有序的元素集合。链表是一种线性数据结构,其元素在内存中非连续存储,通过指针将零散的内存块按顺序串联起来。双向链表每个节点同时指向前后节点,支持双向遍历和操作。

2025-08-31 10:00:00 463

原创 二分查找完全指南:从基础到高阶变种,LeetCode题解一网打尽

使用二分查找的前提:数组的元素必须是相对递增、或者相对递减的。题型分类:基础二分查找查找最左侧、最右侧值为target的元素查找第一个(最左侧)值>=target的元素、查找最后一个(最右侧)值<=target的元素其他。

2025-08-13 10:00:00 275

原创 Websocket协议基础学习

客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息"Upgrade: WebSocket"表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了。低开销:与传统的 HTTP 长轮询或短轮询相比,WebSocket 只需要建立一次连接,后续的数据传输不需要每次都进行握手和头部信息的传输,减少了网络开销。

2025-08-04 10:00:00 1007

原创 TCP协议——1.基础

在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口 rwnd (接收方设置确认报文段的窗口字段来将 rwnd 通知给发送方),发送方的发送窗口取接收窗口 rwnd 和拥塞窗口 cwnd 的最小值。流量控制关注的是发送方和接收方之间的速度匹配。拥塞控制算法根据网络的拥塞情况自适应的调整发送方的发送速率,防止过多的数据注入到网络中,避免网络拥塞和数据丢失。接收方导致的 SWS:接收方通告的窗口(rwnd)过小(如 1 字节),导致发送方只能发送极小的数据段。

2025-07-29 09:30:00 1529

原创 TCP协议——2.三次握手&四次挥手

客户端 -> 服务器:客户端收到服务器的 FIN 包后,发送一个 ACK 包给服务器,确认号为服务器发送的序列号 + 1。服务器 -> 客户端:服务器收到客户端的 FIN 包后,确认客户端的关闭请求,给客户端发送 ACK 包,确认号为客户端发送的序列号 + 1。如果客户端发送 FIN 后,在收到服务端的 ACK 前,先收到了服务端发送的FIN报文,此时客户端回复 ACK 给服务端,客户端状态从 FIN_WAIT_1 变为 CLOSING,等收到服务端的 ACK 后,客户端状态变为 TIME_WAIT。

2025-07-29 09:30:00 878

原创 HTTPS的基本理解以及加密流程

同时,服务端也会发送握手结束通知,通知消息中会把之前所有内容的数据做一个摘要,用来供客户端检验。客户端收到服务端回应后,验证数字证书是否合法,如果证书受信任,或者用户接受该不受信的证书,客户端生成一个48字节的随机数作为预主密钥,并用证书中的提供的服务器公钥加密,发送给服务器。密钥交换算法,因为考虑到性能的问题,所以双方在加密通信数据时使用的是对称加密密钥,而对称加密密钥是不能被泄漏的,为了保证对称加密密钥的安全性,所以使用非对称加密的方式来保护对称加密密钥的协商,这个工作就是密钥交换算法负责的。

2025-07-26 22:02:21 1104

原创 动态规划——01背包,完全背包,多重背包

动态规划的逻辑中,涉及到具体的dp初始化、遍历顺序也是很有考究的,要详细的了解为什么这样初始化,为什么这样遍历。知道图片上写的原理之后就知道为什么二维dp的第二层循环正序、倒序遍历都可以,为什么一维dp必须倒序遍历。dp二维数组含义:dp[i][j] 表示从前i个物品中选取,放入容量为j的背包所能获得的最大价值。和01背包的区别在于:dp[i][j-w[i]] + v[i] 表示可以重复选取当前物品。dp[i-1][j-w[i]] + v[i]:选第i个物品。dp[i-1][j]:不选第i个物品。

2025-07-14 12:04:39 969

原创 RESTful API设计原则

严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。举例来说,某个URI是/posts/show/1,其中show是动词,这个URI就设计错了,正确的写法应该是/posts/1,然后用GET方法表示show。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。资源是 RESTful 风格中的核心概念,代表网络上的一个实体或具体的信息,比如一个用户、一篇文章、一张图片、一段音频等。

2025-06-09 10:00:00 705

原创 使用n8n工作流编排AI Agent处理爬取的网页信息

它的功能是使用 AI 模型(这里我用的是 DeepSeek)进行对话或处理任务。标签为 "FireCrawl1",它的功能是从指定的 URL 中抓取网页内容,这个节点会访问目标 URL,提取网页的 HTML 或其他内容,并将结果传递给工作流中的下一个节点。它的功能是将 Markdown 格式的文本和 HTML 格式之间来回转换,我这里用的是将 Markdown 格式转换为 HTML 格式。它的功能是读取 RSS 提要(通常是新闻、博客或其他内容的更新源),并将提要中的条目作为数据输入到工作流中。

2025-06-03 10:00:00 2538

原创 AI大模型、MCP客户端、服务端之间的数据流向

MCP 遵循客户端-服务器架构(client-server),其中包含以下几个核心概念:MCP 主机(MCP Hosts):ai模型或发起请求的 LLM 应用程序。如Grok、Claude或IDE如Cursor,负责发起数据或操作请求。MCP 客户端(MCP Clients):在主机程序的内部,与 MCP server 保持连接通信,将AI请求转换为MCP协议格式,并处理响应。

2025-06-03 10:00:00 1345

原创 OAuth 2.0 接入第三方登录(有数据流向图)

角色英文名职责描述实际例子资源拥有者拥有受保护资源(如数据、功能)的用户或实体,决定是否授权第三方访问。用户(如你的 Google 账号)客户端Client第三方应用程序,请求访问资源拥有者的受保护资源。一个博客网站(请求访问你的 GitHub 仓库)授权服务器验证资源拥有者身份,颁发访问令牌(Access Token)给客户端。Google 授权服务器、GitHub OAuth 服务资源服务器存储受保护资源的服务器,根据访问令牌决定是否响应客户端的请求。

2025-05-27 12:19:45 1054

原创 HTTP协议版本的发展(HTTP/0.9、1.0、1.1、2、3)

HTTP/0.9、1.0、1.1、2、3的详细区别

2025-05-25 16:35:33 1572 1

原创 JWT 全面指南:组成、生成、对比与双令牌实践

JWT 通常用于身份验证和信息交换。它的主要特点是信息通过数字签名进行验证,确保数据的真实性和完整性。JWT一个重要的特性是不可篡改性。JWT 一旦签发,在到期之前无法强制使其失效。组成JWT 是由三部分组成的,并且用点 (.) 分隔:Header(头部):描述JWT的元信息,主要包括使用的签名算法和token的类型。Payload(载荷):存储实际传递的数据。如用户的邮箱信息,不能存储敏感信息。Signature(签名):用于验证 JWT 的真实性,防止数据篡改。

2025-05-14 10:43:07 908

原创 加密算法总结

PS:本文对上面的学习资料进行补充,请务必要学习上面的资料。关于密码加密相关的关键词有:哈希加密(包含加密哈希算法、非加密哈希算法,慢哈希加密是哈希加密的一种特殊设计)、对称加密,非对称加密、加盐、成本因子、碰撞、撞库、彩虹表。

2025-05-03 10:25:09 862

原创 图论之并查集——含例题

并查集是一种用于处理不相交集合的合并与查询问题的数据结构。它主要涉及以下基本概念和操作:集合:并查集中的集合是由一组元素组成的,这些元素具有相同的属性或特征,集合之间相互不相交。代表元素:每个集合都有一个代表元素,用于标识该集合。集合中的其他元素都可以通过一定的关系与代表元素相连。初始化:将每个元素都初始化为一个独立的集合,每个集合的代表元素就是该元素本身。合并:将两个不同集合合并为一个集合。通常是将一个集合的代表元素连接到另一个集合的代表元素上,使得两个集合成为一个更大的集合。

2025-04-13 22:11:23 1284

原创 Reids 的io并发模型

异步 I/O 模型(Asynchronous I/O,AIO):在异步 I/O 模型中,应用程序发起 I/O 操作后,不需要主动去查询操作的状态,而是由操作系统在 I/O 操作完成后通过回调函数或信号等方式通知应用程序。例如,在读取文件或网络数据时,线程会被挂起,直到数据准备好或操作完成,期间线程不能执行其他任务,这会导致线程资源的浪费,在处理多个 I/O 操作时效率较低。由于主线程是单线程的,命令的执行是串行的,这保证了 Redis 的数据一致性和事务、Lua 脚本等功能的正确性。

2025-04-05 08:06:21 892

原创 Unix/Linux 系统下的文件权限

drwxr-xr-x 是一个常见的 Unix/Linux 文件系统中的权限表示法,用于描述文件或目录的访问权限。每组三个字符可以转换为一个八进制数字,rwx 表示 7,r-x 表示 5,所以 drwxr-xr-x 可以转换为 0755。这个命令将设置 mydir 目录的权限,使得所有者具有读、写、执行权限,而组和其他用户具有读和执行权限。接下来的九个字符:权限位,分为三组,每组三个字符,分别表示文件所有者、文件所属组、其他用户的权限。第一个字符 (d):表示这是一个目录。第一个字符:文件类型。

2025-03-28 11:47:11 2162

原创 路由限流(Gin框架)

也就是说令牌桶是允许一定程度的并发的,比如同一个时刻,有100个用户请求,只要令牌桶中有100个令牌,那么这100个请求全都会放过去。令牌桶算法的原理是系统以恒定的速率产生令牌,然后把令牌放到令牌桶中,令牌桶有一个容量,当令牌桶满了的时候,再向其中放令牌,那么多余的令牌会被丢弃;当想要处理一个请求的时候,需要从令牌桶中取出一个令牌,如果此时令牌桶中没有令牌,那么则拒绝该请求。令牌桶是匀速向桶中添加令牌,服务请求时需要从桶中获取令牌,令牌的数目可以按照需要消耗的资源进行相应的调整。

2025-03-04 09:00:00 1227

原创 Mac/Linux 下的趣味命令大盘点:从蒸汽火车到彩虹数字雨

如果你也想试试这些“无用但有趣”的命令,赶紧安装 Homebrew(Mac 必备工具),在终端中玩一玩!如果在服务器上遇到这些“惊喜”,别紧张,可能只是你的学长在恶作剧,哈哈哈。让我们来看一看如何下载蒸汽火车吧。当你运行这个命令时,终端会显示一列蒸汽火车从左到右驶过的 ASCII 动画,特别有趣且复古。模拟《黑客帝国》中的“数字雨”效果,让终端显示绿色(或自定义颜色)的流动数字,营造出高科技、黑客氛围,非常酷炫!是一个经典的命令,会生成一个 ASCII 艺术形式的奶牛,并“说”出你输入的文本,萌趣又有趣。

2025-03-01 17:12:35 1326

原创 熔断降级(Go语言实现)

虽然这会导致暂时停电,但避免了更大的损失。一个简单的商品详情查询服务,优先从 Redis 缓存读取,如果缓存不可用,则查询数据库,但通过熔断降级防止数据库过载。降级处理:停电后,你可能只能用应急灯或手电筒,而不是所有电器,这是一种“降级”措施,等到电路恢复正常再逐步恢复使用。完全熔断状态:如果故障持续,熔断器“完全切断”,所有请求不再访问 Redis,而是直接触发降级逻辑,保护后端服务。恢复过程:几分钟后,Redis 恢复,熔断器进入半开状态,测试成功后关闭熔断,系统重新使用缓存,恢复正常功能。

2025-02-28 13:00:00 901 5

原创 Redis缓存读写策略、一致性、雪崩、击穿、穿透

假设「请求 A 」和「请求 B 」两个请求,同时更新「同一条」数据,则可能出现这样的顺序:A 请求先将缓存的数据更新为 1,然后在更新数据库前,B 请求来了, 将缓存的数据更新为 2,紧接着把数据库更新为 2,然后 A 请求将数据库的数据更新为 1。举个例子,比如「请求 A 」和「请求 B 」两个请求,同时更新「同一条」数据,则可能出现这样的顺序:A 请求先将数据库的数据更新为 1,然后在更新缓存前,请求 B 将数据库的数据更新为 2,紧接着也把缓存更新为 2,然后 A 请求更新缓存为 1。

2025-02-27 15:22:57 1149

原创 Go map 底层分析

所谓等量扩容,实际上并不是扩大容量,buckets数量不变,重新做一遍类似增量扩容的搬迁动作,把松散的键值对重新排列一次,以使bucket的使用率更高,进而保证更快的存取。每个哈希表的实现对负载因子容忍程度不同,比如Redis实现中负载因子大于1时就会触发rehash,而Go则在在负载因子达到6.5时才会触发rehash,因为Redis的每个bucket只能存1个键值对,而Go的bucket可能存8个键值对,所以Go可以容忍更高的负载因子。,达不到第1点的临界值,就不能触发扩容来缓解这种情况。

2025-02-15 10:00:00 768

原创 超详细配置本地的DeepSeek模型

就像美国推出安卓系统,中国不断完善,但安卓系统还是美国的,deepseek反过来让所有国家共同完善,但还是中国的。不同模型名称中的 1.5B、7B、14B 等数字代表模型的参数量,这里的 B 是“Billion”(十亿) 的缩写。参数量的多少直接影响模型的“聪明程度”、计算资源需求和适用场景,也不是说越多越好,因为越多其硬件的资源消耗也会越多,要根据自己电脑的情况来定。第一次运行该命令会下载 1.5b 的版本,下载完成以后,再执行该命令就无需下载,可以直接运行了。再一次选择:Ollama API。

2025-02-09 11:14:52 1439

原创 用Go实现 SSE 实时推送消息(消息通知)——思悟项目技术4

SSE(Server - Sent Events)是一种允许服务器向客户端实时推送更新的 Web 技术。是一种基于 HTTP 协议的单向通信机制,服务器可以在客户端建立连接后,持续不断地向客户端发送事件流。客户端只需发起一次请求,服务器就能随时向客户端推送新的数据,无需客户端反复请求。

2025-02-08 09:00:00 1269

原创 TCP 三次握手四次挥手

TCP三次握手(Three-Way Handshake) 是建立TCP连接时,客户端和服务器之间为了保证可靠的数据传输而进行的三次消息交换。三次握手的目的是通过交换序列号,确认通信双方都准备好建立连接,并且双方都能进行数据的发送和接收。注意:三次握手只在TCP连接建立时进行一次,而不是在每次发送消息时都进行。因为TCP是一个 面向连接的协议,这意味着在发送数据之前,客户端和服务器需要建立一个持久的连接。这个连接在数据传输过程中保持开放,直到完成数据交换或者关闭连接。

2025-01-25 10:30:49 1433

原创 go chan底层分析

和分别是接收(

2025-01-16 21:32:36 1392

原创 chrome浏览器中 F12 查看接口请求与响应

打开页面,点击F12。

2025-01-14 09:00:00 5767

原创 go 协程练习例题

创建一个程序,计算一个大数组的和,使用多个 goroutine 分担计算任务。将数组分成若干部分,每个部分由一个 goroutine 计算其部分的和,然后将部分和合并得到最终结果。思路:两个协程并发,一个协程读完然后往通道里写数据,另一个协程写完然后读数据,两个协程交替进行,交替阻塞。使用并发/并行的方式,将统计素数的任务分配给多个(4 个)goroutine 去完成。3、要保证任务按照添加的顺序依次执行,即每个任务在前一个任务完成后才能开始执行。2、函数 Start():启动任务调度器并开始执行任务。

2024-12-15 15:05:25 546

原创 go 使用unsafe包实现string和[]byte的转换

特性通过无类型指针转换内存分配分配新的内存无额外分配,共享底层数据数据安全数据独立,修改互不影响修改返回的 []byte 会影响原字符串性能较低:需要分配内存和复制数据较高:直接操作底层指针易读性和维护简单易读较复杂适用场景通常是首选方法,安全易用用于对性能要求极高且可控的场景。

2024-12-08 10:00:00 966

原创 Go 语言文件操作

如果你尝试执行写入操作(如 file.WriteString),会返回一个错误,因为文件没有写入权限。指定新创建文件的权限模式(如果该文件已经存在那么这个文件权限不会起作用,只有在创建文件的时候才起作用)。使用 ioutil.ReadFile 一次将整个文件读入到内存中,适用于文件比较小的情况。os.O_RDWR 表示以读写模式打开文件,这样你就可以在文件上执行读和写操作;表示要打开或创建的文件的路径和名称。注意:用这个方法打开文件,只能读内容,不能写入内容。指定文件打开的模式或操作类型。

2024-12-05 10:00:00 1624

原创 TCP 粘包问题

粘包指的是在基于流的协议(如 TCP)中,由于数据的传输特性导致接收方无法明确区分多条消息的边界,从而将多条消息粘合在一起接收,或者将一条消息拆分成多次接收。

2024-12-05 09:00:00 650

原创 go语言静态资源打包——思悟项目技术3

Go 语言默认情况下打包并不会将静态文件直接包含在可执行文件中。Go 编译器只会打包 .go 源代码文件,静态文件(如 HTML、CSS、JS 或图片等)并不会自动包含在生成的二进制文件中。

2024-10-29 09:32:23 864 1

原创 go语言gin框架平滑关闭——思悟项目技术2

平滑关闭(graceful shutdown)是指在停止服务时,能够让现有的连接、任务或者操作优雅地完成,而不是直接中断。平滑关闭的核心思想是在系统接收到停止信号后,不再接收新请求,只处理当前正在执行的请求,确保所有请求完成后,系统才正式关闭。

2024-10-29 09:27:58 745

空空如也

空空如也

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

TA关注的人

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