etcd
1.概览分布式kv存储,一致性,高可用,采用raft。预写日志可用于恢复。日志多了转化成快照。提供grpc api可以被调用。watch机制可监听key变化。lease(租约)用于实现心跳。
经典的案例是k8s用它做配置中心。
和redis的比较租约 对应ttl,watch机制对应订阅机制。
和zookeeper比较多版本并发控制,语言支持更好。
raft法定人数:写数据需要半数以上节点同意。一个宕机,集群将不可写。
奇数节点:因为偶数节点会形成平票结果,系统会不可写。
设计https://etcd.io/docs/v3.6/learning/
kv存储:b+树。key是三元组,major(在源码里是main)表示版本,sub表示健,type为特殊后缀,如墓碑为0为当前代结束。维持二级 B 树索引加速范围查询。key具有mvcc。
learner:新加入的节点由于需要同步太多日志造成网络负担降低可用性。引入学习者概念,只负责同步日志而不算在etcd工作节点。
auth:用户角色模型。持久化存储。
持久化:bbolt。b+树文件存储,文件形式存预写日志和快照。
apiKV APIs
R ...
怎么最大化利用cursor pro
引言作为吊打市面最好的vibe coding IDE,cursor的白嫖通道逐渐缩窄,淘宝商家也逐渐没招,因为他的计费方式和识别白嫖手段已经在大陆玩家的紧逼下变得异常严苛。特别是免费用户只能auto这一环节直接绝杀。而怎么把一个pro账号用到极致是一门极致哲学。接下来我们探讨以下游戏规则。(省流请划到底部)
计费规则层级森严。众所周知,claude就是最强的。然而max mode和thinking让人摸不着头脑到底怎么选。
首先我们来看一下max mode的官方解释
某些模型具备使用 Max Mode 的能力,这允许进行更长时间的推理和更大的上下文窗口。虽然大多数编码任务不需要使用 Max Mode,但对于更复杂的查询,尤其是在处理大型文件或代码库时,它会有所帮助。使用 Max Mode 会消耗更多使用量。您可以在您的仪表板上查看所有请求和 token 的分解情况。
这意味着只有我的问题遇到瓶颈的时候才考虑开启这个模式,平时省略即可。
另外一点是现在的计费模式采用token消耗制,而不是次数制。提问的token价格远小于输出,而输出往往不可控。这时非常有必要确定好agent的工作范 ...
go的container包解读
1.introduction在日常写缓存的时候经常遇到可以使用双向链表的情况,而这恰恰中了go的list包下怀。也许list包已经用的熟练了,但是这种强劲数据结构不免引人想去看看官方是怎么实现的。与此同时,我发现了这个包身边还伴随两个强劲的伙伴——ring和heap(环形链表和堆)。
他们统一都在container包中,接下来开始阅读。
2.list众所周知list是一个双向链表。链表有节点,我们平时叫他“node”,但是在这里是一个叫element的结构
type Element struct { next, prev *Element list *List Value any}
其中list很特殊,它代表一个list的容器。进一步说,是把一条双向链表给包装起来。这里的list指向“belongs to”
type List struct { root Element len int }
这样一看就很明显了,一个链表有root(头一个元素),len(长度)。初步可以理解成这样
神奇的一幕来了。我们之前认为New函数为非结构体函数 ...
6.四月
我会在一切结束后重新处理。
1.select/poll/epollsocket定位为是linux上的一个api。当然其实各个操作系统上都有实现这样一个“socket”,但是我们一说到操作系统默认就是linux。理解这一点非常重要。
socket翻译过来叫插座,调用它可以创建一个网络连接。所以不如叫他《网络编程》。linux中一切皆文件,所以socket自然就是文件。linux有个概念叫fd(windows里叫句柄,是一个指针),也就是文件描述符,这就是文件的唯一id(直接叫他索引)。准确来说socket是通过linux内核暴露的api来操作linux内核。如果感到抽象,不妨想想前端调用后端的api接口,所谓“内核”有时候听起来很高级,其实只不过就是个相对于调用方的“后端”罢了,所以我归纳为内核就是一个提供了调用接口的功能实现者实体。
最常见来说,网络请求的协议是HTTP。那么HTTP只不过是对TCP的封装,本质上的特性都应该在传输层的TCP来看。为什么提到网络就这么喜欢说TCP?你就当他是个坤哥,后面可能有很多协议,但是本质上只是在模仿他,根本无法撼动“网络协议之父 ...
5.11月弃文集合
前言来自2024年11月一些文集弃文的集合。我改了一下发上来。
至于为什么变弃文了,是因为居然真的有人看,感觉表现的太中二会让人感觉当成异类。
uber阅读interface1.接口类型本身就是指针。如果需要修改其存储的值,需要用指针传递,这样就可以修改原值,否则只能修改拷贝值。进一步说,读可以不用指针,写的话要用指针。
2.防御性编程。由于go的规则是struct去实现interface的所有func才称作implement,因此存在可能我们漏实现了某个函数却没发现,那么原本构建的逻辑将会被打乱。而添加了一个
var 接口=空结构体
的判断,如果结构体未implement接口,则编译的时候会报错,因为他们是接不上的。这样就利用人工标注有效地弥补了机制上编译器无法弥补的东西。
type Handler struct { // ...}var _ http.Handler = (*Handler)(nil)func (h *Handler) ServeHTTP( w http.ResponseWriter, r *http.Request,) { ...
踩坑记录Windows 删除文件文件夹提示“找不到该项目
问题描述删除文件夹时,发现其中存在一个顽固文件,不管怎么删除都会提示”找不到该项目“,无法删除。
根据网络所见,貌似文件夹也存在这种情况。
问题猜想我这里存在的问题推测是因为文件名末尾多带了一个 .,即类似于 example.file.txt.,正常操作是无法创建这样的文件的,貌似我这里是由于旧版本 adb 的 bug 所产生。
该文件并非无拓展名,具体肯定是属于异常情况,但这里不深究。
据说文件夹也存在这样的异常。
解决方法方法一这里提供我试验过后的成功方法。
创建一个 del.bat:
del /f /a /q \\?\%1rd /s /q \\?\%1
然后将要删除的东西拖到这个批处理文件上即可。
我这里直接拖入顽固文件不起作用,但是将顽固文件所在的文件夹直接拖入就删除成功了。
如果连正常文件都无法起作用,重新创建批处理文件并将编码修改为 ANSI。
方法二右键,选择 Winrar 的添加到压缩文件,并勾选删除源文件(或者叫”压缩后删除原来的文件“)。
我这里直接对顽固文件进行操作未能成功,没有对所在文件夹尝试过,一些网友说有用,故也记录下来。
附录参考文献
Windows桌面 ...
黑神话悟空日与我无关但是我没睡着天就亮了
一有时候感觉时间就挺多的,如果不睡觉的话,还有心情写点儿日记。
白天就感觉时间挺少的,如果睡到十点左右,起来刷一会儿手机就中午了。中午边娱乐边吃饭,下午又睡满了。晚上在电脑前做些杂七杂八的动作,好像是在水群其实,断断续续看点教学视频,感觉生活好像要有点起色了,但一会儿就九点了,然后就醒悟过来,视频时长合起来可能就只有半个小时,倒是娱乐视频看了超过一个小时。
半夜玩起小游戏,前端又来和我对接口了,但是我啥都没动,准备装睡。
躺了好久,在幻想自己的一场华丽的演讲和讲得头头是道的无数的人生哲理,仿佛自己就是赢家。哎,都没做梦,只是夜晚做了个白日梦。哪怕是在完美的幻想里,满嘴说着“他妈的”也让自己的形象显得非常的帅。
二还有一副横幅,气势磅礴,and座无虚席——“千里逢迎,高朋满座”。
一种江湖的气派。我要告诉世人,从古至今,真正的技艺都是传承,拜师求学,用心传授,才是学习本来的样子。这种每个学生被迫分配一个老师,一个老师被迫分配一堆学生,没有产生吸引和匹配,就是一堆工具的相互利用,像是社会机器的运转。
人好为人师,可以美其名费曼学习法。说先天的,就是装逼。说没有的,就是吹逼。而说自己最近学到 ...
近来感悟
1有些傻子读了书,也只是读了书的傻子。满嘴科学,逻辑,客观,脑里只有精致利己,“自命不凡”,没有经验积累,逻辑全靠臆想。“知识分子”容易拿臆想当理性,带着一股子“自我感觉良好实则缺乏大脑”还不自知,大概是家里有矿娇生惯养导致的,智力停留在幼儿园。人的“逻辑”不可能做到客观,因此不是真正的逻辑。对优绩主义深信不疑,忽略运气,以为既得利益都归结于自己的努力。现实里只是个整天和别人以嫉妒心暗暗较劲的垃圾,心里早已做好当人上人的美梦。自诩修养高尚不与人争论的人比比皆是,读了书的傻子是其中之一。
2网上所谓的中西医之争,本质是意识形态之争,利益之争,就不是效果之争,不是帮人与否之争。争来争去,没有一个人是看到病人临死时的痛苦,就是以科学、医学之名来维护各方利益。
3作文写的再好,也不过是满足阅卷人的喜好。我指的是所谓比赛和科研,本质上都是形式主义,而非真才实学。有真才实学之后再出的成就,才是真正的成就。因此不要略过了沉淀就开始水结果。
4十几年的学习的真正作用——储备知识,锻炼思维,进而增强能力,真正的目的在于建立良好的思维习惯,而不是学习得了多少分。不能再去拘泥于形式上有多少荣誉,而是成为自己 ...
算法题解(置顶)
题单链接:https://ac.nowcoder.com/discuss/926597
NC207040丢手绢9.90
如下:
#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int main(){ int n; cin>>n; int a[N]; int sum=0; for(int i=0;i<n;i++){ cin>>a[i]; sum+=a[i]; } int d=0,j=0,ans=0;; for(int i=0;i<n;i++){ while(j<n&&a[j]+d<=sum/2){ d=d+a[j]; j++; } ans=max(ans,d); d=d-a[i]; } ...
解决conda太慢的方案
conda config –set solver libmamba
换回去
conda config –set solver classic
pip废物的结局方案:结尾加上:
-i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
可以在搜狗输入法放入这个自定义短语
python demo.py --checkpoint-path checkpoint_iter_370000.pth --video 0
set http_proxy=http://127.0.0.1:1438