【译】Python 幕后 #1: CPython 虚拟机如何工作

原文链接:Python behind the scenes #1: how the CPython VM works。 介绍(Introduction) 你是否曾经好奇过当你运行 Python 代码时 python 做了些什么? $ python script.py 这篇文章将开启一个系列来尝试解答这个问题。我们将深入 Python 最流行的实现 CPython 的内部。 通过深入 CPython 的内部我们将更深一层的去理解这门编程语言本身。这也是我们这个系列的最主要的目标。...

comments

【译】Rust 意味着无需手动关闭 Socket 连接

译者注:这是我学习 Rust 生命周期对我最有帮助的文章之一,故翻译了一下。 原文链接:Rust Means Never Having to Close a Socket Rust 最酷的特性之一就是它可以自动地帮助你管理资源,同时在仍能保持安全(没有段错误)和高性能。 这是因为 Rust 是一门与众不同地编程语言,要理解我说的可能有点困难,让我来更近一步说明: Rust 就像带垃圾回收的编程语言,你无需手动释放内存 Rust...

comments

【译】Rust 借用和生命周期

译者注:这是我学习 Rust 生命周期对我最有帮助的文章之一,故翻译了一下。 原文链接:Rust Borrow and Lifetimes。 Rust 是一门处于往 1.0 活跃开发的新语言(译注:1.0 早已发布,目前最新稳定版本 1.42)。 我必须再写一篇关于我为什么觉得 Rust 很棒的新博客,但是今天我将关注在它的借用(borrow) 和生命周期(lifetimes)系统,这也是常常让包括我在内的 Rust 新手陷入困境的地方。这篇文章假设 你基本了解...

comments

【译文】理解布隆过滤器

原文:Understanding Bloom filters with Pharo Smalltalk。 本文通过 HTML 转录了 PharoPDS 库及其扩展附带的交互式教程,以探索和理解布隆过滤器。 因此,如果您想在真实的环境中修改这些数据结构,请尝试在 Pharo 镜像中安装这个库,并按照交互式教程并使用提供的自定义工具进行操作。 理解布隆过滤器 布隆过滤器是一个非常节省空间的数据结构,由 Burton Howard Bloom 于 1970 年所提出(Space/Time...

comments

【译文】什么是幂等

原文:WHAT IS IDEMPOTENCE (原文是一个视频的文字记录版,有兴趣的可以看原文和原文中的视频,本文只翻译文字并结合自己的一些理解做一些整理。) 引子 幂等意味着可以重复,也就是说你可以安全的重试一个操作不会产生任何问题。经典的例子是电梯按钮:你按两次并不会叫来两辆电梯。同时我们来探索为什么在一个 Email 服务中需要这个特性。 什么是幂等?为什么幂等对于分布式编程非常有用?通过这篇文章,你将知道如何在你自己的系统中实现幂等。...

comments

Python 3.8 新增 multiprocessing.SharedMemory 支持共享内存

Python 在 2019-02-25 释出了 3.8 早期预览版 3.8.0a2,其中新增了 multiprocessing.SharedMemory 用以支持共享内存,大大提高多进程之间通信效率。简单看了一下实现代码主要涉及如下 Python 模块 内置类型 memoryview mmap 在 POSIX 平台下共享内存创建过程如下: 基于 tmpfs 打开或创建具名(文件名)的共享内存,得到文件描述符 通过 mmap 将文件描述符映射进程的内存地址空间 通过 memoryview...

comments

译文:Go 内存分配器可视化指南

当我第一次开始尝试理解 Go 语言的内存分配器时,整个过程让我抓狂。一切看起来都像一个神秘的黑盒子。因为几乎所有技术魔法(technical wizardry)都隐藏在抽象之下,所以你需要一层一层的剥离才能去理解它。 我们将通过这篇文章来一层层的剥离这些细节。如果你想学习所有关于 Go 内存分配器的知识,那么这篇文章正适合你。 物理内存和虚拟内存 每一个内存分配器都需要运行在由底层操作系统管理的虚拟内存空间(Virtual Memory Space)之上。...

comments

《敏捷革命》读书笔记

基本过程 准备 挑选一位 产品负责人(Product Owner) :负责沟通客户并根据客户反馈规划待办事项 挑选 团队 :小而精,3 ~ 9 人 挑选 Scrum 主管(Scrum Master) :培训 Scrum 确保 Scrum 正确运用,消除团队障碍 确定 冲刺(Sprint) 周期,不要超过一个月,最好 1 ~ 2 周 执行 产品负责人拟定 待办事项 ,并确定优先级 让实际开发的团队评估和改进待办事项 通过 冲刺规划会 规划接下来一个冲刺要完成的待办事项,并将借助 看板...

comments

通过 acme.sh 获取 Let's Encrypt 免费证书

配置 Nginx 正确处理 Webroot 验证 在证书签发过程中 Let's Encrypt 会验证你拥有当前域名,最基本的方式在你的网站根目录创建一个文件,并通过域名在外部进行请求,如能请求到则认为你拥有该网站的控制权。假设你有一个域名 example.com, 验证步骤大体如下: 通过工具在网站根目录下创建 .well-known/acme-challenge/some-random-letters 工具将创建的路径告知 Let's Encrypt Let's Encrypt...

comments