首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
虚拟化.超融合.云计算
›
公有云
›
SAAS
›
ARTS 0815: 分隔链表、大删除是加活不是减负与协议栈如 ...
返回列表
发新帖
ARTS 0815: 分隔链表、大删除是加活不是减负与协议栈如何一层层拆信封
[复制链接]
发表于 2026-8-16 17:50:34
|
显示全部楼层
|
阅读模式
每周完成一个 ARTS: 至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术本领、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tips、Share 简称 ARTS)
Algorithm
中等难度,标题 https://leetcode.cn/problems/partition-list/description/?envType=study-plan-v2&envId=selected-coding-interview
有几点需要注意:
1)双指针的 small、large由于会一直向后走,末了拼接答案的时候需要第一个节点
2)第一个节点就 0 所以需要第一个节点的后面一个,也就是 begin.next 和 later.next
3)Java 是引用传递,如果把 head 用 tmp 吸取,之后 tmp.next = 0 页就让 head 的内容直接消失
4)由于 small 和 large 末了面会出现长度更长的情况,所以需要终极结束循环吧 next 都设置为 null
class Solution {
public ListNode partition(ListNode head, int x) {
// 两个 piont 一个 res,最后 res 拼接两个 point
ListNode small = new ListNode();
ListNode large = new ListNode();
ListNode begin = small;
ListNode later = large;
while (head != null) {
if (x <= head.val) {
large.next = head;
large = large.next;
} else if (x > head.val) {
small.next = head;
small = small.next;
}
head = head.next;
}
small.next = null;
large.next = null;
small.next = later.next;
return begin.next;
}
}
复制代码
Review
文章是这一篇:https://planetscale.com/blog/the-only-scalable-delete
原文讲 Postgres:大 DELETE 是加活不是减负。MySQL 结论一样,机制不同,InnoDB 的 DELETE 要注意这几件事:
删了不等于没了。InnoDB 只是打删除标记,旧版本在 undo 里,后台 purge 确认没有事务还要这个快照,才物理删行和二级索引。一次清几百万行会狂写 redo、undo、binlog,复制延迟容易飙升;长事务拖着旧 read view 时 purge 走不动,history list / undo 膨胀,别的一致性读还要顺着版本链回溯。删完页里的空洞只能给这张表后续插入用,.ibd 通常不缩小,想把磁盘还给操纵体系得 OPTIMIZE TABLE 重建。
TRUNCATE (删除表的全部数据,但是表结构还在)是 DDL,隐式提交,事务里回滚不了,别先清空再插回。如果要删除的很多就通过建新表,而不是删除旧表的方式。要留的远多于要删的,就小批量 DELETE,让 purge 跟得上。日常逾期数据按日期分区,到期 DROP PARTITION,别夜夜百万行 DELETE。外键 CASCADE 也可能把删一行变成一次巨型删除。
而且一样平常商业体系也不会删除用户的数据,普遍采取的做法是逻辑删除。
Tips
1、搜索资料可以实验使用 pi + pi-autoresearch
pi install npm:pi-autoresearch
复制代码
2、cmd 脚本如果写中文的话,使用 GBK 编码(可以写一个 skill 专门用来写)
3、在 Vide Coding 的时候,如果有一些硬性条件比如:一个类不能超过 600 行、一个方法不能超过 40 行等,可以用 Hook 在编辑之后直接跑一个 bash 脚本,进行校验。这样虽然不会改变不合格的现实,但是会提醒 AI 你这里出标题了,记得修改!
4、agtens.md 最好做成「地图」而不是什么内容都写进去
5、为了方便 AI 读代替码,可以写一个 py 脚本,当作仓库的导览图,减少不必要的 tool call
6、如果有明白修改的类,直接 @xxx 不要再让 AI 浪费 token 使用工具去找相关的代码
Share
读《TCP/IP 详解》大概 5 页左右
一)
1、OSI 每一层数据叫 PDU (协议数据单元),当在网络层的 PDU 叫
IP 数据包
2、当第 N 层的 PDU 传输给 N - 1 层的时候,他会自动添加上标识信息,相互之间不需要沟通。而且 N - 1 层答应不查看 N 层的 PDU 信息。
3、分层还有一个利益就是,不是全部的网络装备都需要实现完整的层,比如路由器、交换机、主机实现的层是不同的。理想情况下交换机只需要实现:数据链路层、物理层。
二)
1、下面演示了一台 Internet 主机分解 DPU 的大概流程:
传入的以太网帧包含:48 位的目的地址(也叫 MAC 地址)和 16 位的以太网类型字段。这个 16 位以太网类型字段有三个:0x0800 表示 这个帧包含 IPv4 的数据报、0x0806 表示 ARP、0x68DD 表示 IPv6 的数据报。而且还会检测这个目的地址和吸取到的地址是否匹配,这个帧被吸取而且进行差错校验,以太网同类型字段用于处理他的网络层协议。
如果接受的帧包含 IP 数据报,以太网的头部和尾部的信息会被消除,而且将剩余的字节交给 IP 来处理,IP 会检测一些列字段如果发现目的 IP 地址和自己的 IP 地址匹配,而且数据报头部没有错误(不会检测有效荷载),那么就检测具体使用哪一个协议来剖析,比如 1(ICMP)、2(IGMP)、4(IPv4)、6(IPv6)和 17(UDP) 等等。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
莱莱
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表