返回首页
最新
我是一名研究隐私的研究人员,最近开始跟踪英国生物银行向GitHub发送的DMCA通知。截至目前,我已追踪到110份通知,针对全球170名开发者的197个代码库。
在这些撤销通知中,我们常常看到特定文件被针对,而不是整个代码库(这可能是为了证明撤销通知所需的版权侵权,尽管我并不是版权专家;但显然,他们仅在无计可施时才使用DMCA通知,针对那些无法识别的GitHub用户,而这些用户可能在最初就没有获得访问权限)。其中四分之一的文件涉及遗传学/基因组学。表格数据占据了另一大部分,可能包含表型或健康记录。
生物银行数据在GitHub上的曝光是英国生物银行面临的一系列治理挑战中的最新一例。最新的消息是,今天在阿里巴巴上出售了所有50万名会员的信息。
我偶然发现了保罗·格雷厄姆的文章,读得停不下来。真是太惊人了——一个人怎么会如此有洞察力呢?
我真的很好奇,史蒂夫的表达方式、组织思路和连接想法的方式为什么如此出色。从你的角度来看,这背后的秘诀是什么呢?
我正在构建 Sklad,这是一个用 Zig 编写的小型键值数据库。目前它支持基本的设置/获取/删除操作、TTL(生存时间)和范围查询。其主要思想是使用无锁数据结构,并围绕一个由少量工作线程处理的异步任务队列来构建引擎。任务队列是一个无锁的多生产者多消费者(MPMC)队列。内存表(Memtable)也是一个无锁的跳表。在代码中,我还使用了无锁的仅追加队列和栈。目前我唯一使用锁的地方是写入预写日志(WAL)。
请求处理管道被拆分成小任务。一个 I/O 工作线程接受传入请求。当新请求到达时,I/O 工作线程会发布一个读取请求任务,然后由其中一个通用工作线程来处理。接下来,请求会经过一系列更小的任务:查询处理任务解析查询,执行任务执行操作,最后写响应任务将结果发送回客户端。每个阶段都会将下一个任务发布到队列中,而该任务可能会被不同的工作线程拾取。工作线程的最大数量由配置参数控制,并且有简单的逻辑来淘汰闲置工作线程,并在工作负载增加时生成新的工作线程。
Sklad 还收集内部指标,如请求延迟、任务延迟、队列等待时间、待处理的内存表数量和活跃工作线程数量。目前,这些指标通过专门的指标请求暴露出来,但我希望将它们作为引擎自适应行为的输入,例如扩展工作线程池、决定何时进行合并,以及可能调整 SSTable 参数,如内存表大小或每个键的布隆过滤器位数。
GitHub: <a href="https://github.com/sklad-dev/Sklad" rel="nofollow">https://github.com/sklad-dev/Sklad</a>
Suparagent AI 是一个统一的人工智能工作空间,旨在为希望将所有功能集中在一个地方而无需在多个人工智能工具之间切换的人们提供服务。如果您曾尝试过像 Manus 或 Genspark 这样的产品,Suparagent 是一个强大的替代方案,它将 AI 聊天、AI 编程、AI 研究以及 AI 图像和视频生成等功能整合在一起。