Golang源码研究:3. unsafe包

使用unsafe包修改私有成员 在go中,私有成员是不允许在外部更改的,但是我们可以通过go提供的unsafe.offset做偏移计算从而修改私有成员。 输出如下 利用unsafe获取silce和map长度 根据上文所说的,通过unsafe直接获取私有成员的值,array 作为一个指针,指向所属的底层数组。 占用内存为8字节(64位系统),通过分别偏移8字节和16字节,即可获取到len和cap的值…

Golang源码研究:2. context 上下文

context 是啥? context 中文叫做上下文,是 goroutine 的上下文。主要用于在不同的goroutine中传递上下文。 主要应用于 取消信号、超时时间、截止时间、k-v传递。并且是并发安全的。 context 有什么用 超时管理,上游因为种种原因提前关闭了链接、或者超过了请求方要求的时间,就需要快速退出掉这条链路上的所有的goroutine。 k-v 传递,在多个不同的goro…

Golang源码研究:1. 切片扩容问题

很多语言中都存在类似动态数组的概念,c++中的vector,Golang里的silce,都是类似动态数组概念。 silce的组成 从源码中可以看到,go中的silce结构体包含三个部分,array len cap. array传入的是一个指针,用作silce的底层存储数组。len是silce的长度,cap则是底层数组的大小。 当silce的len逐渐逼近cap的时候(len达到cap的一半),将会…

Agent 系列 Part2. MCP与Skills

在 MCP 和 Skills 概念刚兴起的时候,有很多混乱的观点。有人认为 Skills 是来代替 MCP 的。这种观点是不正确的,MCP 和 Skill 完全是两个不同的东西,甚至有时候他俩是可以相辅相成的。 MCP (Model Context Protocal) 官方介绍:MCP 是一个可以使 LLM 程序和外部数据和外部工具无缝的整合在一起。 从官方的话中,我们可以看到 MCP 主要是给L

PoW (Proof of Work 工作量证明) -- 验证码应用

一、关于 PoW Proof of Work,工作量证明,原用于区块链技术。核心目的是:通过计算一道复杂的数学题来确认交易并维护网络安全的共识机制。 二、在验证码的应用 传统验证码中,人需要面临一堆扭曲图片去识别主要防护的是机器爬虫,但同时也给用户带来了一些负担。为了应对这些高速爬虫对服务器的压力,我们可以尝试 PoW 验证码,他对用户是无感的,但是在一定情况下可以有效防御高速爬虫频繁的访问对服务

Agent系列 Part 1. 上下文腐化问题

我们常常遇到一种情况,我们的 Agent Context 上下文达到一定长度时候就会变得奇蠢无比。即使宣传的是 1M 上下文长度,其实实际能用的也是大概200K左右,超出这个范围,AI 的智力水平就开始直线下降。 什么是上下文腐化 上下文腐化(Context Decay) 是指:随着对话轮次或任务步骤的推进,早期注入的关键信息因被后续内容稀释、截断或注意力分散,逐渐失去对模型推理的有效影响,导致智

[题解] abc465D-X to Y

[AtCoder abc465d] X to Y 涉及知识点:图论、树形结构、 K -叉树、最近公共祖先 (LCA)、双指针、数学(整除与取模) 问题描述 给你两个整数 X, Y ,还有一个不小于 2 的整数 K 。 有一个变量 x ,初始值是 x

有向图游戏-DAG博弈

最近的牛客暑假营L题和26上海CCPC市赛出现了这个类型的题。 引用 OI-WIKI 上的介绍 本文讨论的公平组合游戏,要求同一局面不能出现两次,也不存在平局的可能性.因此,对应的博弈图总是有向无环图.本节放宽了这一限制,讨论如何在一般的有向图上判定各个状态是先手必胜、先手必败或平局. 有向图游戏的规则和其他的公平组合游戏大体一致:从起始状态出发,轮流沿着有向图的边移动一步,直到无路可走.根据游戏
上一页1/ 2下一页