首页 文章 精选 留言 我的

精选列表

搜索[链表],共2246篇文章
优秀的个人博客,低调大师

ARTS 0823: 删除链表节点、写进内存不算安全只有 fsync 才扛断电与 Anthropic 扫描再毁掉纸本如何锁住知识

每周完成一个 ARTS: 至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tips、Share 简称 ARTS) ## Algorithm 中等题目:[https://leetcode.cn/problems/delete-node-in-a-linked-list/?envType=study-plan-v2&envId=selected-coding-interview](https://leetcode.cn/problems/delete-node-in-a-linked-list/?envType=study-plan-v2&envId=selected-coding-interview) ![](https://developer.qcloudimg.com/http-save/yehe-10394799/64014e085e014059a99bed506a4f2f4b.png) 一些细节: 1)咱们不知道 head 也不需要知道 2)如果 cur 的值等于需要删除的 node 的值,那么怎么操作呢? 1、咱们不需要返回 head 这个方法是 void 2、如果咱们的需要替换格子 B 那么现在需要把 B 的 next 设置成 D ``` 格子A 格子B 格子C 格子D [4] → [5] → [1] → [9] ↑ node(只能动 B) ``` 3、咱们现在需要最终效果是:A → C → D 那么如果是只能修改 B 和 C,那么咱们直接把 C 的内容设置到 B 即可 ``` /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public void deleteNode(ListNode node) { ListNode cur = node; while (cur != null) { if (cur.val == node.val) { cur.val = cur.next.val; cur.next = cur.next.next; return; } cur = cur.next; } } } ``` ## Review 文章: [https://oldblog.antirez.com/post/redis-persistence-demystified.html](https://oldblog.antirez.com/post/redis-persistence-demystified.html) 核心就一句话:写进内存不算安全,`write()` 只扛进程挂,`fsync()` 才扛断电;Redis 默认 AOF `everysec`,最坏丢 2 秒,和 Postgres / MySQL 调完参数之后其实差不多。 大概分为 5 步: 1. 客户端向数据库发送写入命令(数据位于客户端内存中) 1. 数据库接收到写入请求(数据位于服务器内存中) 1. 数据库调用将数据写入磁盘的系统调用(数据位于内核的缓冲区中) 1. 操作系统将写入缓冲区传输到磁盘控制器(数据位于磁盘缓存中) 1. 磁盘控制器实际将数据写入物理介质(磁盘、Nand 芯片、...) 步骤二是设计会非常复杂,有时候会使用其他的线程进行操作 步骤三是 kernel 实现的,一般会有很多层。在 Linux 系统中,一般是文件系统的 page cache,也是使用缓存等到何时的时机再进行提交到磁盘。有些数据库会自己实现这个层,就使用文件系统的 page cache。也有 API 可以跳过 page cache 直接写入数据,比如 O_DIRECT 和 O_SYNC 步骤五,只有执行到步骤五才能说数据是完全安全的,正常情况下执行完步骤三,一般就没有什么问题了。 --- `POSIX API` 步骤三:我们可以使用 `POSIX API` 进行控制,但是我们能控制的有限。比如我们进行系统调用把内容写到文件里面,但是内核写缓冲区的大小是有限的,如果磁盘无法应对应用程序的写入带宽,内核写缓冲区将达到其最大容量,内核就会阻塞我们的写入。这个时候如果有更多的数据来了之后,那么系统就会拒绝这个写入请求。 步骤四:一般来说写入不会太频繁,因为大块的内容写入速度更快。对于 Linux 系统来说默认 **30 秒** ,也就是说如果在 30 秒内出现问题,数据还是可能会丢失的。 当然也有办法控制,可以使用 `POSIX API` 控制立刻写入数据,但是这个 fsync 操作非常消耗资源。 步骤五:严格来说,从这个角度来看,我们无法通过 POSIX API 对其进行控制。也许某些内核实现会尝试告诉驱动器,实际将数据提交到物理介质上,或者控制器反而会为了速度而重新排序写入操作,并不会尽快将数据真正写入磁盘,而是再等待几毫秒。这完全超出了我们的控制范围。 ## Tips 1)现在 Cursor 支持可以不导入其他 agent 工具的 skills,要不然在 claude 里面的内容全部都跑到 Cursor 里面了。我个人是更习惯分开的,分开便于管理并且不会让 Cursor 的上下文无端增加很多上下文占用。 ![](https://developer.qcloudimg.com/http-save/yehe-10394799/880d4d50c66989c5137dbaac651f54c5.png) 2)跨会话 skills 推荐:`/handoff` ,Github [开源地址](https://github.com/ykdojo/claude-code-tips/blob/main/skills/handoff/SKILL.md) 内容很简单,如下: ``` --- name: handoff description: Write or update a handoff document so the next agent with fresh context can continue this work. --- Write or update a handoff document so the next agent with fresh context can continue this work. Steps: 1. Check if HANDOFF.md already exists in the project 2. If it exists, read it first to understand prior context before updating 3. Create or update the document with: - **Goal**: What we're trying to accomplish - **Current Progress**: What's been done so far - **What Worked**: Approaches that succeeded - **What Didn't Work**: Approaches that failed (so they're not repeated) - **Next Steps**: Clear action items for continuing Save as HANDOFF.md in the project root and tell the user the file path so they can start a fresh conversation with just that path. ``` ## Share 文章:[https://annas-archive.gl/blog/physical-destruction.html](https://annas-archive.gl/blog/physical-destruction.html) 核心就一句话:AI 公司在大批买二手书,拆脊扫描后再毁掉纸本,把 2022 年前「没被机器污染」的文字锁进私有服务器;Anna’s Archive 呼吁全球志愿者抢先扫书上传。 Anthropic 的 Project Panama 在 15 亿美元版权和解里被曝光:花几千万买几百万本纸书,训练 Claude,再全部销毁。法官认定合法买书、扫完毁原件算合理使用,破坏性扫描因此比无损扫描更便宜、更能挡住对手、法律风险也更小。纸书没了,数字副本只留公司内部,知识就被永久垄断。作者说这是跟时间赛跑:每人扫一本,一千万志愿者就是一千万份遗产。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册