归档
按时间整理的全部文章。
-
Lenny 社群智慧:AI 改变产品运营模型、微型团队 GTM 与 AI 作品集
【AI 让产品团队的瓶颈从交付速度迁移到判断质量】背景:这组讨论问的是 AI 如何改变产品运营模型,真正有价值的答案不是 PM 能不能写代码,而是交付加速以后,团队哪里会变成新的约束。多个回答都指向同一件事:工程交付变快之后,产品判断、目标清晰度和跨职能上下文反而更稀缺。 表现最好的团队会尽量消...
-
异步 Agent 时代:从本地补全到后台编码工厂
Latent Space 访谈 Cognition 与 OpenInspect,讨论后台编码 Agent 的生产级问题:架构边界、执行环境、测试验证、企业集成、记忆、多 Agent 编排、代码质量治理与 agent-ready codebase。
-
Satya Nadella 2026:AI 平台战略与企业 Agent 的价值重构
Satya Nadella 谈 AI 时代的平台战略:企业护城河不在单一模型,而在 harness、context layer、private eval、trace 和组织级 agent memory。
-
GitHub 的 AI 编程压力测试:Agent 时代的软件平台重构
Kyle Daigle 从 GitHub 的视角解释 AI coding agents 如何改变提交、PR、Actions、信任链路和平台基础设施,以及为什么 Copilot 的重心正在从补全模型转向 agent runtime 与上下文层。
-
Lenny 社群智慧:创业融资、Vibe Coding 与 Agent 数据语义层
Lenny 社群关于 bootstrapping、Vibe Coding 产品验证、Agent 数据语义层和 APM 基本功的讨论,核心线索是:构建成本下降后,稀缺性迁移到约束选择、分发验证、语义一致性和判断质量。
-
Video Agents:视频生成的下一站是 Agent
Video Agents:视频生成的下一站是 Agent 这期 Latent Space 采访 Ethan He,表面主题是 Grok Imagine、视频生成和世界模型,真正有价值的是一个更大的判断:视频生成正在走 AI 编程已经走过的路。早期大家比较单次输出质量、成本和速度;模型能力到达一定阈值...
-
Cursor Composer 2 训练基础设施与高性能 RL
这期访谈把编程 Agent 的能力提升拉回到系统工程:真实环境、rollout、reward、权重同步、数值一致性和上下文压缩,决定模型能否从会写代码变成能完成软件工程任务。
-
Replit CEO 访谈:AI 原生开发者与后提示时代
Replit CEO Amjad Massad 认为,AI 编程正在把软件创造从工程师专属技能,转化为领域专家、设计师和业务人员都能使用的建设能力。关键变化不是代码生成更快,而是想法到可运行系统的端到端压缩,以及后提示时代人的问题定义、实验和担当。
-
Abridge:医疗 AI 领域的临床智能层构建者
Abridge 展示了垂直 AI 产品如何从临床文档切入,逐步演化为医疗系统的上下文层、评估系统和 Agent 工作环境。
-
Demis Hassabis:AGI 倒计时与 AI Agent 时代
这篇访谈把 Google DeepMind 的几条路线放在同一个框架里:模型能力、Agent 化、模拟环境、科学发现、持续学习和可靠性共同推进 AGI。
-
Anthropic Claude Code 深度访谈:Agent 工程化的下一步
Boris 谈 Claude Code 的真实重点不是增长,而是 Agent 工程化:真实操作权、流程重构、长任务监督、并行调度,以及人类从执行者转向顶层驾驶者。
-
从 OpenClaw 到 Hermes Agent:Agent 不是聊天框,而是新的工作系统
从 OpenClaw 到 Hermes Agent:Agent 不是聊天框,而是新的工作系统 这期播客真正有价值的地方,不是介绍 Hermes Agent 或 OpenClaw 的功能,而是把 Agent 行业的几个底层分歧讲清楚了:模型与 harness 谁更重要,Agent 应该厚约束还是薄封装...
-
Claude Managed Agents:AI 平台正在变成结果交付层
Anthropic 团队把 Managed Agents 定位为一套可运行、可部署、可拥有身份、可被组织接管的执行基础设施。真正的竞争点开始落在状态、工具、沙箱、权限、长期运行和多 Agent 编排上。
-
Anthropic 前沿 Agent 记忆系统与 Dreaming 机制高亮
Anthropic 前沿 Agent 记忆系统与 Dreaming 机制高亮 文本来源是 24 分钟 YouTube 演讲逐字稿。主讲人 Mahes 是 Anthropic 平台团队产品经理,过去参与 MCP 和 Skills 等 primitives,本次分享的重点是 Managed Agents...
-
对话姚顺宇:从理论物理到 AI 的跨界探索与行业洞察
姚顺宇访谈高亮:从物理到 AI、后训练与长程任务 文本来源是微信公众号「语言即世界」对姚顺宇的访谈节选。内容覆盖他从理论物理转向 AI、在 Anthropic 参与 Claude 3.7 后训练、转入 Google DeepMind 后关注 ML coding 与 long horizon,以及对模...
-
Claude Code 团队如何重构研发管理
Claude Code 团队管理经验高亮 文本来源是 28 分钟 YouTube 演讲逐字稿,演讲者是 Anthropic Claude Code 与 Claude.ai 工程和产品负责人 Fiona Fung。内容核心不是 Claude Code 的功能展示,而是当 AI coding 把编码吞吐...
-
Dario 与 Daniela:Agent 组织化与产品节奏
Dario 与 Daniela Amodei 对话高亮:指数增长、组织级 Agent 与 AI 产品节奏 文本来源是 Claude 官方频道 33 分钟对话,参与者为 Dario Amodei、Daniela Amodei,主持人为 Ami Vora。Get 笔记当前只创建出链接笔记,暂未返回逐字稿原...
-
Claude Code 创始人 Boris Cherny 访谈:AI coding 的下一阶段
Claude Code 创始人 Boris Cherny 访谈高亮 文本来源是 24 分钟 YouTube 访谈逐字稿。内容核心不是 Claude Code 的功能介绍,而是 Boris 对 AI coding 产品形态、agent loop、组织流程和软件民主化的判断。按汉松兴趣画像,以下高亮优先...
-
Demis Hassabis(DeepMind)访谈:AGI 技术进展、AI 在科学领域的应用与创业建议
Demis Hassabis 访谈:AGI 技术进展、科学发现与 Agent 路径 视频:How to Build the Future: Demis Hassabis 这次访谈的价值不在于 Demis 又说了一遍 AGI 很快,而在于他把 DeepMind 路线里的几条线串起来了:记忆与持续学习、...
-
OpenClaw 与 Agent 时代:AI 驱动的工作范式与软件生态变革
OpenClaw 与 Agent 时代:AI 驱动的工作范式与软件生态变革 这篇访谈最值得保留的地方,不是 OpenClaw 或 Claude Code 哪个工具更好,而是它把 Agent 从工具讨论推进到了工作界面、公司形态、商业模式和人的角色变化。它很适合放进汉松长期关注的 AI 共生主题里:Agent...
-
李光耀领导力访谈:从殖民到建国
李光耀领导力访谈:从殖民到建国|阅读高亮 这次高亮只筛选领导力相关内容。原访谈很长,核心价值不是李光耀给出一套可复制的领导学公式,而是他不断把领导力放回历史、制度、危机、信任、人才和行为改变里讨论。对技术团队更有价值的是这些机制:信任如何形成,权威如何维持,组织如何从个人能力过渡到制度能力,变革如何...
-
Andrej Karpathy 访谈:AI 时代的编程范式、可验证性与人类价值
【Software 3.0:上下文本身成为编程接口】背景:Karpathy 这里讲的重点,不是 AI 让旧式编程变快,而是可操作对象变了。过去程序处理结构化数据,现在模型直接处理文本、图片、文档和上下文,很多中间应用层会被重新定义。Software 3.0 里,编程变成了提示词和上下文窗口。上...
-
OpenAI 的 Ryan Leopo 谈 Harness Engineering:当代码免费时,如何构建软件
【代码免费之后,稀缺资源发生迁移】背景:Ryan Leopo 的核心判断很直接:编码 Agent 已经让实现本身变得不再稀缺。工程师的工作重心从亲手写代码,迁移到调度大量 Agent、设计约束、管理注意力与上下文。 实现已经不再是软件工程里的稀缺资源。代码是免费的。我们拥有大量代码能力,可以用来解...
-
OpenAI 的 Ryan Leopo 谈"Harness Engineering":当代码免费时,如何构建软件
【"代码免费"的第一性原理:稀缺性发生了什么】背景:Ryan 在演讲开篇给出整个框架的支点,不是"AI 能帮你写代码",而是从稀缺资源角度重新定义了软件工程的约束条件。实现(Implementation)不再是软件工程工作的稀缺资源。代码是免费的。 代码生产免费,重构免费,不再是需要纠结的事情...
-
Shopify CTO Muel Parkin 访谈:内部 AI 工具落地、自研 ML 基础设施与前沿技术应用
Shopify CTO 访谈:内部 AI 工具落地、自研 ML 基础设施与前沿技术应用 本次高亮基于 Get 笔记解析到的 YouTube 视频逐字稿原文,来源字段为 web page.content。原文长度约 7.4 万字符,没有使用 Get 笔记 AI 总结作为主输入。 【Agent 编程的核心指...
-
https://www.latent.space/p/unsupervised-learning-2026
【Agent 工程正在收敛到更小的基本单元】背景:这组摘录来自 AIE Europe 会后的判断,讨论的是 agent infra 是否开始稳定,以及稳定到底体现在哪里。它和你最近关注的 skill、harness engineering、context engineering 很贴近。 过去几...
-
🧠 Community Wisdom Sharing Claude Code skills across the org, Why did lennysjobs.com shut down, opening an LLC for side work, AI for SMB sales, and more.md
【组织级 Skills 是治理系统】背景:这组讨论围绕 50 人创业公司内部如何共享 Claude Code skills。高价值点在于:一旦进入组织级复用,skills 会从个人提示词演化为需要发现、权限、命名、去重、维护和评测的内部资产。 我们有一个插件市场。问题是使用者需要 GitHub ...
-
2026-04-09-[Podwise] 新文章:We Gave Every Employee an AI Agent. Here's What Happened.
个人代理的关键变化,不是更强,而是变成我的 背景:这篇对谈里最有价值的一层,不是 Every 把 OpenClaw 跑起来了,而是他们讲清了为什么个人代理和通用聊天模型在组织里会导向完全不同的关系结构。核心变量不是能力上限,而是归属感、责任感和由此形成的信任传递。 Claude 是所有人的 Clau...
-
不写代码的工程师,才是 AI 时代最值钱的人
引言 我已经很久没写过一行代码了。不是因为懒,而是因为我发现了一件事:当我停止写代码的那一刻,我的产出反而变多了。这听起来像悖论,但 OpenAI 最近做了一个实验:3 人团队,5 个月,100 万行代码,做法是禁止人类写代码。效率是传统方式的 10 倍。他们怎么做到的?答案藏在一个叫“Har...
-
一年花一万二,盘点 2025 年我订阅的 AI 产品
TL; DR 2025 年真的是 AI 产品爆发的一年,24 年我只订阅了 Monica,但在 25 年,我居然为十多款 AI 产品付过费了。不算不知道,一算吓一跳,一年下来我总共花了一万二(人民币),平均一个月在 AI 上面消费一千块。下面是我订阅的产品明细。 | 产品名 | 订阅费(年费) ...
-
从零实现 vLLM (1.4):RMSNorm 如何解决训练不稳定
前言 在上篇文章《从零实现 vLLM(1.3):如何加速 Attention 计算》中,我们深入分析了 Qwen3Attention 组件,学习了 FlashAttention 如何通过在线 Softmax 和分块计算技术,将 Attention 的计算效率提升到极致。今天这篇文章,我们将目光转向 ...
-
从零实现 vLLM (1.3):如何加速 Attention 计算
前言 在上篇文章《从零实现 vLLM (1.2):如何实现张量并行》中,我们深入到 Qwen3DecoderLayer 的第一个核心组件: Qwen3Attention,重点分析 QKVParallelLinear 和 RowParallelLinear,了解了张量并行的原理。今天我们深入到 A...
-
大模型分布式训练(1):FSDP 的原理与实践
FSDP 的起源 什么是数据并行?在大模型出现之前,分布式训练最常用的技术是 数据并行(Data Parallelism, DP) 。 它的核心思想很简单:1. 每个 GPU 上都存放一份完整的模型副本 2. 将一个大批次的数据(Global Batch)分成几个小批次(Micro batche...
-
从零实现 vLLM (1.2):如何实现张量并行
前言 在上篇文章《从零实现 vLLM (1.1):并行词嵌入 VocabParallelEmbedding》中,我们分析了 Qwen3Model 模型中第一个组件:VocabParallelEmbedding 的源码。今天这篇文章我们深入到 Qwen3DecoderLayer 的第一个核心组件: ...
-
从零实现 vLLM (1.1):并行词嵌入 VocabParallelEmbedding
前言 我一直都喜欢通过代码学习各种技术,特别是各种从零开始实现 XX 的。为了学习大模型推理引擎的技术,我找到了 DeepSeek 研究员俞星凯仅用不到 1200 行代码实现的 nano vllm。我会把我的学习过程记录下来,方便大家参考。 要学习这么大一个技术的课题,需要从什么地方下手呢?下面是我学习...
-
AI 编程:找轮子,别造轮子
我最近用 AI 写了一个导出 Gemini 聊天记录的插件,我把 Gemini 网页的源码粘贴给它之后,告诉它要把网页中的聊天记录导出成 markdown,然后它很快就写完了。但我测试后发现它导出的聊天记录没有保留 markdown 格式,于是提醒它要保留 markdown 格式,比如标题和列表,它...
-
从软件工程到上下文工程:AI 时代的开发者新范式
前言 或许你也有过这样的时刻:在代码评审会议上,同事用 AI 助手几分钟就重构了一个你花了几天才完成的微服务架构;又或者,在日常开发中,你发现团队里的新人正在用 AI 编程助手,轻松地处理那些曾经需要反复查阅文档和调试的复杂任务。我们曾经坚信的“代码即真理”的世界,正在被一种更模糊、更接近对话的逻辑...
-
DeepSeek 新论文 SPCT:让奖励模型学会“先定规则后点评,再打分”
开篇:奖励模型挺重要,但不好搞啊!为啥要聊奖励模型? 现在大语言模型(LLM)是越来越火,能力也越来越强。但光能打还不行,还得听话,得知道啥是对的、啥是好的,不能瞎来。这就是所谓的“对齐”(Alignment)。要让 LLM 听话,强化学习(RL)就成了关键技术。在这个过程中,有个角色特别重要,那...
-
AutoGLM 技术探秘:让 AI 学会“点点点”的挑战与策略
前言 最近 AI 领域有个挺火的方向,就是让 AI 像人一样去操作图形界面(GUI),比如自动帮你订外卖、处理邮件等等。智谱 AI 推出的 AutoGLM 就是这个方向的一个尝试(产品地址:https://autoglm research.zhipuai.cn/,开源地址:https://xiao9...
-
不需要人类教练的 o3:OpenAI 用强化学习训练出编程"六边形战士"
TLDR OpenAI 在最近的发表的对比研究中发现:在编程竞赛任务中,人类精心设计的策略败给了强化学习训练的通用模型。论文名称:《Competitive Programming with Large Reasoning Models》。在 o1 出现之前,在 Codeforces 编程竞赛 AI 是没有一席之...
-
深入浅出 GraphRag[2]检索生成
前言 在上篇文章《深入浅出 GraphRag 知识图谱生成》中,我分析了 GraphRag 的图谱生成过程,那么生成的这些图谱数据是如何应用到生成里面的?这篇文章会给出答案。注意本篇文章中提到的很多概念依赖上篇文章的内容,建议先读一下《深入浅出 GraphRag 知识图谱生成》。GraphRag 的检索生成...
-
深入浅出 GraphRag[1]知识图谱生成
前言 GraphRAG 是微软开源的一个基于大模型 + 知识图谱回答用户问题的开源项目。相同传统的 RAG,它的创新点主要有两个:1. 提出了一套完整的利用大模型生成知识图谱的方案。2. 基于 map reduce 的思路支持对数据集全局类型的问答。简单来说,GraphRAG 工作流程主要分为两步:1...
-
ChatGPT 文本生成的工程原理分析与代码示例
之前 ChatGPT 刚出来的时候大家都在研究 GPT 模型,有很多的科普文章都说 GPT 模型其实就是在做文字接龙,根据前面的文本预测下一个字。这样通俗的理解确实没有什么问题,但是作为程序员我们肯定不能满足于这么表面的理解。本文主要就是要从工程角度对大模型的文本生成过程的原理结合代码进行分析。值得注意的是本文...
-
机器学习基础之梯度计算:Pytorch 代码与公式
我们看教科书里面讲批量梯度下降的算法数学公式都是类似这样的: (w,b)←(w,b)−η|B|∑i∈B∂(w,b)l(i)(w,b).(\\mathbf{w},b) \\leftarrow (\\mathbf{w},b) \\frac{\\eta}{|\\mathcal{B}|} \\sum\ {i...
-
ChatGPT 之 GPTs 的使用与分析:5 分钟构建一个天气画报
在 GPTs 推出之后,我用它花了 5 分钟就配置了一个生成天气画报的 GPTs,目前看 GPTs 在提升 AI 应用研发效率上面还是做的非常好的,但并没有超出期望,它只是一种研发范式的创新,并没有带来质的变化:以前 Langchain+GPT4 做不到的事情,现在也做不到。 在这个功能出来之后,有人就说这个功能干死了一...
-
统计学与机器学习交汇点:线性回归的数学基础
本文详细解析了线性回归的数学含义,包括“线性”和“回归”两个核心概念。线性主要涉及可加性和齐次性,这两个性质在数学、统计学乃至软件工程等多个领域都有广泛应用。回归则是一种预测数值型输出(因变量)的方法,基于一个或多个输入(自变量)。线性回归结合了这两个概念,通过找到最佳拟合直线来进行预测。该模型具有...
-
ChatGLM3 的代码解释器(Code Interpreter)实现原理
原理简介 在之前的文章《ChatGLM3 的工具调用(FunctionCalling)实现原理》里面,我们介绍了 ChatGLM3 工具调用的原理,其本质就是让大模型通过微调学会根据 prompt 中的函数的定义学会下一步应该调用哪个函数,然后我们解析大模型预测的文本结果去执行对应的函数,最后再把执行的结果...
-
ChatGLM3 的工具调用(FunctionCalling)实现原理
ChatGLM3 终于带来了跟 ChatGPT 一样的工具调用能力,通过它的源码和样本数据,我们可以了解到让大模型学会使用工具的方法原理。官方例子中的疑问 我们先跟着官方例子的步骤一步步走。构建 System Prompt 这里以两个工具调用为例,首先准备好要构建的数据的描述信息。其实就是定义好我们能...
-
从零开始写数据库:500 行代码实现 LSM 数据库
前言 LSM Tree 是很多 NoSQL 数据库引擎的底层实现,例如 LevelDB,Hbase 等。本文基于《数据密集型应用系统设计》中对 LSM Tree 数据库的设计思路,结合代码实现完整地阐述了一个迷你数据库,核心代码 500 行左右,通过理论结合实践来更好地理解数据库的原理。SSTab...
-
SQL 查询引擎原理浅析
SQL 的诞生 SQL 英文全称是 Structured Query Language,中文名即结构化查询语言,是一门专门用来查询数据的声明式编程语言。 我先解释一下声明式语言的概念,编程语言有两个分类:命令式:手把手教机器做事情 声明式:告诉机器任务,让它自己想办法解决 举个例子,假设你家里有机器人,...
-
对感知机算法的一些理解
机器学习假设了对于某个问题存在一个上帝函数,给定一个输入就能得到一个确定的输出,计算机可以通过样本数据在假设的函数空间中找到一个近似上帝函数的函数,我们可以利用这个近似函数来进行预测。 现实世界的问题大体可以分为两类:分类和回归。分类问题就是对一个东西判断它所属的类别,例如判断一张照片里面的动物是...
-
怎样写线程安全的代码
前言 多线程编程是软件开发中最棘手的问题之一。无论什么时候用多线程来操作同一份数据,都会出现并发问题。这就让写线程安全的代码成为一件非常困难的事情。本文将会从并发问题的本质出发,带你了解问题的根源,然后通过实例阐述保证线程安全的难点在哪里,最后提供常见的并发控制技术的原理和例子,希望能够帮助读者更好...
-
MAB 问题的解法与应用(万字长文)
目录 MAB 问题 MAB 是多臂老虎机(Multi Armed Bandit)的缩写,MAB 问题就是假设有个赌徒到赌场里面摇老虎机,赌场里面有 10 个老虎机,每个老虎机的赢钱概率是不一样的,此时他不知道每个老虎机的赢钱概率,而且他只有 100 个币,也就是说只能摇 100 次,如果他想最大化收益应该怎么摇?...
-
50 行代码实现一个 KV 数据库
最简单的 KV 数据库需要多少行代码实现?答案是不到 50 行。接下来我会带你实现一个基于日志顺序写入的数据库,它的功能很简单,支持写入和查询字符串类型的 key 和 value。一个 KV 数据库最重要的是存储实现,因为它的查询语法很简单,根据 key 查询 value 就行,不像关系型数据库还需要实现解析器和优化器来...
-
从零开始写 KV 数据库:基于哈希索引
前言 新的 KV 数据库层出不穷,我们经常听说的 KV 数据库如 RocksDb、Hbase 等都是基于日志结构的存储引擎。最近我在看《数据密集型应用系统设计》,里面有一章专门在讲日志结构的存储引擎的演进过程,纯看理论不过瘾,所以我决定根据书里的理论动手自己实现一个 KV 数据库。同时,为了能顺便学习 Rust,所以...
-
Java 类隔离加载的正确姿势
什么是类隔离技术 只要你 Java 代码写的足够多,就一定出现这种情况:系统新引入了一个中间件的 jar 包,编译的时候一切正常,一运行就报错:java.lang.NoSuchMethodError,然后就哼哧哼哧的开始谷歌找解决方法,最后在几百个依赖包里面找的眼睛都快瞎了才找到冲突的 jar,把问...
-
Java 日志框架冲突问题排查与总结
Java 日志框架冲突问题排查与总结 前言 Java 有很多的日志框架可以选择,当同一个项目中出现多种日志框架时就很容易出现日志框架冲突的问题,导致日志打印不出来。本文将以一次典型的日志冲突排查问题为例,提供排查步骤和思路,最后分析日志框架冲突的原因。 一般行文思路都是先讲 Why,再讲 How,这...
-
多视角看区块链
前言 像很多新技术一样,区块链开始火起来的时候评价是两级分化的,有人觉得区块链会成为下一代的互联网的基础设施,有人觉得区块链没有任何价值。很多时候观点的不同是因为看的角度不一样,如果能从多个角度看区块链,或许能得到更客观的观点,因此本文会分别从技术和业务的视角来分析区块链。 从技术的视角看区块链 从...
-
分布式系统:一致性协议
一致性模型本质上是进程与数据存储的约定,通过一致性模型我们可以理解和推理在分布式系统中数据复制需要考虑的问题和基本假设。那么,一致性模型的具体实现有一些呢?本文会介绍一致性协议实现的主要思想和方法。 什么是一致性协议 一致性协议描述了特定一致性模型的实际实现。一致性模型就像是接口,而一致性协议就像...
-
分布式系统:Lamport 逻辑时钟
分布式系统解决了传统单体架构的单点问题和性能容量问题,另一方面也带来了很多的问题,其中一个问题就是多节点的时间同步问题:不同机器上的物理时钟难以同步,导致无法区分在分布式系统中多个节点的事件时序。1978 年 Lamport 在《Time, Clocks and the Ordering of Event...
-
分布式系统:向量时钟
在上一篇文章分布式系统:Lamport 逻辑时钟中我们知道 Lamport 逻辑时钟帮助我们得到了分布式系统中的事件全序关系,但是对于同时发生的关系却不能很好的描述,导致无法描述事件的因果关系。向量时钟是在 Lamport 时间戳基础上演进的另一种逻辑时钟方法,它通过向量结构不但记录本节点的 Lamp...
-
IDEA 插件开发入门教程
IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE,它本身的功能已经非常强大了,但是每个人的需求不一样,有些需求 IDEA 本身无法满足,于是我们就需要自己开发插件来解决。工欲善其事,必先利其器,想要提高开发效率,我们可以借助 IDEA 提供的插件功能来满足我们的需求。如果没有我需要...
-
分布式系统:一致性模型
分布式系统中一个重要的问题就是数据复制,数据复制一般是为了增强系统的可用性或提高性能。而实现数据复制的一个主要难题就是保持各个副本的一致性。本文首先讨论数据复制的场景中一致性模型如此重要的原因,然后讨论一致性模型的含义,最后分析常用的一致性模型。 为什么需要一致性模型 数据复制主要的目的有两个:可用...
-
分布式系统:持续一致性
在分布式系统中,数据复制一般是为了增强系统的可用性或提高性能,但是数据一致性跟系统性能往往是矛盾的,对于数据复制的一致性问题没有最好的解决方法。除非放宽对一致性的要求才能获取特定场景下面的有效解决方法。那么放宽一致性的标准是什么?为此,Yu 和 Vahdat 提出了一种用于衡量不一致性以及表述系统中...
-
分布式系统:CAP 理论的前世今生
CAP 理论是分布式系统设计中的一个重要理论,虽然它为系统设计提供了非常有用的依据,但是也带来了很多误解。本文将从 CAP 诞生的背景说起,然后对理论进行解释,最后对 CAP 在当前背景下的一些新理解进行分析,澄清一些对 CAP 的误解。CAP 理论诞生的背景 CAP 理论的是在“数据一致性 VS...
-
编写高质量代码的思考
前言 最近在看《代码大全》,可以说是一本软件开发的百科全书,特别厚,但是干货也很多。平时写代码,代码规范是一个最低的要求(很多老代码连最低要求都达不到),为什么要这样规定代码要这么写,而不是那么写?这是一个值得深究的问题。而不是说我照着代码规范写代码就算完了,高质量的代码是一个专业工程师的追求。要知...
-
代码生成利器:IDEA 强大的 Live Templates
前言 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger 或者 bean 等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates 功能。刚开始觉得它只是一个简单的 Code Snippet,后来发现它支持变量函数配置,可以支持很复杂的代码...
-
IDEA 代码生成插件 CodeMaker
前言 Java 开发过程中经常会遇到编写重复代码的事情,例如说:编写领域类和持久类的时候,大部分时候它们的变量名称,类型是一样的,在编写领域类的时候常常要重复写类似的代码。类似的问题太多,却没找到可以支持自定义代码模板的插件,只能自己动手,丰衣足食,开发了一个 IDEA 的代码生成插件,通过 Vel...
-
2016 我的校招经历与经验
前言 我的校招今年结束得比较早,主要是因为拿的都是 9 月初提前批的 offer。今年的校招我拿了网易,阿里的 offer,而且都不是批发价。网易内推比较早,发 offer 也早,所以是我第一个拿到的 offer。不过我最想去的是阿里,所以在阿里给我发了 offer 之后,我就没有再参加腾讯,百度的...
-
图解 Paxos 一致性协议
前言 Paxos 一致性协议可以说是一致性协议研究的起点,也以难以理解闻名。其实协议本身并没有多难理解,它的难理解性主要体现在:为何如此设计协议以及如何证明其正确性。本文尝试通过流程图来说明协议的内容以及基本应用过程,不涉及如何证明其正确性。 基本概念 Paxos 可以分为两种:Single De...
-
Zookeeper ZAB 协议分析
前言 ZAB 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议。在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。Atomic broadc...
-
ZooKeeper Watcher 和 AsyncCallback 的区别与实现
前言 初学 Zookeeper 会发现客户端有两种回调方式:Watcher 和 AsyncCallback,而 Zookeeper 的使用是离不开这两种方式的,搞清楚它们之间的区别与实现显得尤为重要。本文将围绕下面几个方面展开 Watcher 和 AsyncCallback 的区别 Watcher...
-
ThreadLocal 内存泄露的实例分析
前言 之前写了一篇[深入分析 ThreadLocal 内存泄漏问题][1]是从理论上分析 ThreadLocal 的内存泄漏问题,这一篇文章我们来分析一下实际的内存泄漏案例。分析问题的过程比结果更重要,理论结合实际才能彻底分析出内存泄漏的原因。 案例与分析 问题背景 在 Tomcat 中,下面的代码都在...
-
深入分析 ThreadLocal 内存泄漏问题
前言 ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用 ThreadLocal,就可能会导致内存泄漏。下面,我们将围绕三个方面来分析 ThreadLocal 内存泄漏的问题 Threa...
-
【Getty】Java NIO 框架设计与实现
前言 [Getty][1]是我为了学习 Java NIO 所写的一个 NIO 框架,实现过程中参考了 Netty 的设计,同时使用 Groovy 来实现。虽然只是玩具,但是麻雀虽小,五脏俱全,在实现过程中,不仅熟悉了 NIO 的使用,还借鉴了很多 Netty 的设计思想,提升了自己的编码和设计能力。...
-
Java 线程池框架核心代码分析
前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和资源消耗都是很高的。线程池应运而生,成为我们管理线程的利器。Java 通过 Executor 接口,提供了一种标准的方法将任务的提交过程和执行过程解耦开来,并用 Runnable 表示任务。下面,我们来分析一下 Java 线程池框架的实...
-
RedisHttpSession 的设计与实现
前言 [RedisHttpSession][1] 是我的一个 Java 开源项目,通过将 Session 存储在 Redis 中实现多服务器间共享 Session,同时这一过程是完全透明的。主要用于支持 RESTfuls API。下面我将对其核心类进行分析,阐述它的设计以及实现细节。 RedisHt...
-
三言两语:JVM 字节码执行实例分析
前言 最近在看《Java 虚拟机规范》和《深入理解 JVM 虚拟机》,对于字节码的执行有了进一步的了解。字节码就像是汇编语言,是 JVM 的指令集。下面我们先对 JVM 执行引擎做一下简单介绍,然后根据实例分析 JVM 字节码的执行过程。包括:1. for 循环字节码分析 2. try catch f...
-
【译】JVM 进行线程同步背后的原理
本文翻译自[How the Java virtual machine performs thread synchronization][1],内容略有删改 前言 所有的 Java 程序都会被翻译为包含字节码的 class 文件,字节码是 JVM 的机器语言。这篇文章将阐述 JVM 是如何处理线程同步...
-
三言两语:SQL 连接(join)
前言 本文将从连接的理论和语法讲起,结合具体的例子,详细分析 SQL 连接。 之前对数据库的连接操作似懂非懂,大概知道是什么东西,但是面试笔试的时候被虐成渣,讲不清连接到底是什么。吃一堑,长一智。这就是所谓的似懂非懂, 只是单纯的看书是没用的,只有亲自动手做实验才能彻底理解什么是连接。连接类型与条...
-
Hiho 1289 403 Forbidden(微软编程题)
题意 allow 1.2.3.4/30 deny 1.1.1.1 allow 127.0.0.1 allow 123.234.12.23/3 deny 0.0.0.0/0 输入 ip 按顺序匹配规则,优先匹配前面的规则,如果没有规则可以匹配则视为合法。注意:掩码为 0 的时候表示匹配所有 ip。思...
-
Java String 对 null 对象的容错处理
前言 最近在读《Thinking in Java》,看到这样一段话:Primitives that are fields in a class are automatically initialized to zero, as noted in the Everything Is an Objec...
-
访问 NULL 指针错误背后的原理
前言 说到 NULL 指针大家都是谈之色变,第一印象就是 NullPointerException, Segmentation fault 之类的错误。NULL 指针大部分情况下会导致程序被终止。但是其实严格来说,访问空指针会产生不可预料的结果。只不过大部分情况是程序被终止。为什么呢?接下来让我们来...
-
对抽象类与接口的一点思考
前言 之前写了一篇文章 [简洁代码之道(1):用多态替代条件语句][1],有人问实现多态的时候为什么用抽象类而不是接口。当时写文章的时候并没有想到这个问题。后来仔细想想,这的确是个值得探讨的问题。多态可以用抽象类或者接口实现,重点是应该用哪个?更大问题是,接口和抽象类有什么本质的区别?下面我们将讨论...
-
简洁代码之道(2):避免全局可变状态
前言 本文是我看了 [谷歌简洁代码演讲系列][1] 中的 [全局状态与单例模式][2] 之后的总结。本文的主题是:避免全局可变状态。下面我们将围绕几个问题开展讨论:什么是全局状态 如何设计好的单例模式 如何设计好的 API 全局状态 什么是全局状态 Talk is cheap, show me t...
-
简洁代码之道(1):用多态替代条件语句
前言 本文是我看了 [谷歌简洁代码演讲系列][1] 中的 [多态和条件语句][2] 的总结。大部分的条件语句是可以用多态代替的,本文将围绕以下问题开展: 为什么要用多态替代条件语句 多态和条件语句的使用场景 如何用多态代替条件语句 在哪里决定要创建什么子类 什么情况下使用多态 为什么要用多态替代条件...
-
控制反转(IoC)与依赖注入(DI)
前言 最近在学习 Spring 框架,它的核心就是 IoC 容器。要掌握 Spring 框架,就必须要理解控制反转的思想以及依赖注入的实现方式。下面,我们将围绕下面几个问题来探讨控制反转与依赖注入的关系以及在 Spring 中如何应用。 什么是控制反转?什么是依赖注入?它们之间有什么关系?如何在 Spring 框...
-
Linux 内存寻址之分页机制
在上一篇文章[Linux 内存寻址之分段机制][1]中,我们了解逻辑地址通过分段机制转换为线性地址的过程。下面,我们就来看看更加重要和复杂的分页机制。 分页机制在段机制之后进行,以完成线性—物理地址的转换过程。段机制把逻辑地址转换为线性地址,分页机制进一步把该线性地址再转换为物理地址。硬件中的分页 ...
-
Linux 内存寻址之分段机制
前言 最近在学习 Linux 内核,读到《深入理解 Linux 内核》的内存寻址一章。原本以为自己对分段分页机制已经理解了,结果发现其实是一知半解。于是,查找了很多资料,最终理顺了内存寻址的知识。现在把我的理解记录下来,希望对内核学习者有一定帮助,也希望大家指出错误之处。 分段到底是怎么回事 相信学过操作系...
-
ucore 实验之操作系统启动流程
前言 本文基于 ucore 操作系统实验,简要分析操作系统的启动流程。ucore 操作系统是清华大学用于操作系统教学实验的 OS,参考了 MIT 的 JOS,哈佛的 OS161 以及 Linux 系统。我们可以通过这个迷你操作系统在代码层面上理解操作系统的思想。 [ucore labs][1] wa...
-
Linux 平台下阅读源码的工具
前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径。个人认为:要完全掌握一个软件的方法只有阅读源码 在 Windows 下有 sourceinsight 这个源码阅读软件 (虽然我没用过,但是网上评价还不错),由于我是个 Linuxer,并不喜欢用 Windows,所以自然是选择在 Linux 下...
-
spice 源码分析之 server(1)
前言:本文是结合我自己阅读代码的心得总结而来,同时会忽略很多细节,只能作为阅读源码时的参考。如有错误,欢迎指正。Spice 简介 Spice 是一个开源的云计算解决方案,使客户端能显示远程虚拟主机的操作界面并且使用其设备,如键盘,鼠标,声音等。Spice 给用户提供了一种如同操作本地机器一样的体验,同时...
-
理解链接之链接的基本概念
前言 我们知道,开发程序的基本流程是:设计 代码编写 编译 链接 执行 每一个步骤展开都是一个很大的课题,链接是一个被人忽略的课题,因为它并不是很复杂,相对于编译来说它还是比较简单的,但是并不代表它不重要。 现在编译链接的环节基本上由 IDE 帮助我们完成了,于是我们很少关注编译链接。虽然说不懂编译链接...
-
桌面虚拟化传输协议之 android spice
背景 云计算是目前计算机领域的一个热门领域,桌面虚拟化是其中的一个重要应用,即把桌面系统在服务器端虚拟化,然后通过传输协议传输数据到客户端来实现桌面虚拟化,这样的好处就在于不管用什么设备,只要通过客户端都可以访问到云端的系统,随时随地都可以在一个系统上工作。 目前有两大标准的桌面传输协议,分别是 RB...
-
算法学习之减治法 (decrease and conquer)
什么是分治法 减治技术利用了一个问题给定实例的解和同样问题较小实例的解之间的某种关系。一旦建立了这种关系,就可以从顶至下递归的来用该关系,也可以从底至上非递归的来运用该关系: 1. 减去一个常量 2. 减去一个常量因子 3. 减去的规模是可变的 分治法例子 减去一个常量 拓扑排序 定义 定义:将有向...
-
算法学习之分治法 (divide and conquer)
什么是分治法 字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 解决问题的流程 分治法适用情况 分治法所能解决的问题一般具有以下几个特征:1. 该问题的规模缩小到一定的程度就可以容易地解决 2. 该...
-
算法学习之暴力求解 (brute force)
暴力求解 (brute force) Brute force is a straightforward approach to solving a problem, usually directly based on the problem statement and definitions of t...
-
算法学习之算法基本概念
算法的定义 An algorithm is a sequence of unambiguous instructions for solving a problem 即算法是解决问题的无二义性的指令序列。简单说就是用来解决问题步骤。算法设计及实现流程 重要的问题类型 Sorting Searchi...
-
用 hexo 搭建 github 博客
背景 搭建环境:Linux,nodejs,npm,git 现在网上已经有很多关于搭建 hexo github 博客的文章,我自己也是参考别人的文章过来的,但是现在 hexo 已经到了 3.0 版本,很多教程都过时了,而且感觉他们教程的思路着重于怎么做,并没有说明背后的原因,所以我希望写一篇着重于 为什么 ,而不...