跳转至

2024

GC 垃圾回收算法

垃圾回收(Garbage Collection,简称 GC)是自动内存管理的核心机制。本文将深入介绍 GC 的评价标准以及经典的标记-清除算法。

评价标准

评价 GC 算法的性能时,我们采用以下 4 个标准:

标准 说明
吞吐量 单位时间内的处理能力,即 GC 不占用的时间比例
最大暂停时间 GC 执行时程序暂停的最长时间,影响用户体验
堆使用效率 堆空间的有效利用率,避免内存碎片
访问的局部性 相关对象在内存中的邻近程度,影响 CPU 缓存命中率

GC 标记 - 清除算法(Mark Sweep GC)

GC 标记 - 清除算法由标记阶段和清除阶段构成。标记阶段是把所有活动对象都做上标记的阶段。清除阶段是把那些没有标记的对象,也就是非活动对象回收的阶段。通过这两个阶段,就可以令不能利用的内存空间重新得到利用。

执行 GC 前堆的状态

B-Tree 与崩溃恢复

B-Tree 是一种非常优秀的数据结构,适用于数据库和文件系统等场景。本文将从以下几个角度解析 B-Tree 的特点与实现。

B-Tree 作为平衡的 n 叉树

高度平衡的树

许多实用的二叉树(如 AVL 树或红黑树)被称为**高度平衡树**,即树的高度(从根到叶的深度)被限制为 \(O(\log(N))\),因此查找操作的复杂度为 \(O(\log(N))\)

B-Tree 同样是一种高度平衡的树,其所有叶节点的高度相同,这确保了其良好的查找性能。

B-Tree 数据结构

可能是以前没有接触过类似的数据结构设计,反复阅读了几遍依然有些不太理解。今天,我决定从读者的角度一步一步介绍我对这个数据结构的理解。

一个节点应该包含以下几个部分:

| type | nkeys |  pointers  |   offsets  | key-values | unused |
|  2B  |   2B  | nkeys * 8B | nkeys * 2B |     ...    |        |

每个 key-value 对的格式如下:

| klen | vlen | key | val |
|  2B  |  2B  | ... | ... |

从头开始构建你自己的数据库

数据库有三个核心概念:持久性索引并发性

  1. 持久性:如何避免数据丢失或损坏,并能够从崩溃中恢复;
  2. 索引:如何高效查询和处理数据;
  3. 并发性:如何通过事务处理多个客户端的请求。

用不到 100 行 Go 语言构建自己的容器

原文地址:https://www.infoq.com/articles/build-a-container-golang/

2013 年 3 月 Docker 的开源发布引发了软件开发行业打包和部署现代应用程序方式的重大转变。在 Docker 发布之后,许多相互竞争、相互补充和相互支持的容器技术也随之诞生,这导致了围绕这一领域的许多炒作和一些幻灭。本系列文章旨在揭示其中的一些困惑,并解释容器在企业中的实际使用情况。

本系列文章首先介绍了容器背后的核心技术以及开发人员目前的使用情况,然后探讨了在企业中部署容器所面临的核心挑战,例如将容器化集成到持续集成和持续交付管道中,以及加强监控以支持不断变化的工作负载和潜在的瞬时性。本系列最后展望了容器化的未来,并讨论了 unikernels 目前在前沿组织中发挥的作用。

使用 Go 实现 BitTorrent 客户端

原文地址:https://blog.jse.li/posts/torrent/

BitTorrent 是一个通过网络下载和分发文件的协议。与传统的客户端/服务器关系相比,下载者连接到中央服务器(例如:在 Netflix 上观看电影,或加载您正在阅读的网页),BitTorrent 网络中的参与者(称为对等点)下载彼此之间的文件片段——这就是它成为点对点协议的原因。我们将研究其工作原理,并构建我们自己的客户端,该客户端可以找到同行并在它们之间交换数据。

论面向对象设计

  1. 介绍项目基本信息
  2. 自己担任的职位
  3. 该项目解决客户的哪些问题
  4. 从题目要求角度描述项目过程
  5. 描述项目交付得到用户的好评
  6. 如果字数不够可以写一些无关痛痒的问题

2023 年 5 月我参加了某航天设计院所的《三维数据轻量化异构项目》,担任系统架构师负责系统的分析和设计工作。该系统主要用于航天设计行业三维数据轻量化和预览工作,解决设计单位、制造单位和维修保障单位上下游间业务数据同步问题。系统包括三维数据轻量化、三维模型可视化、中性格式转换、中性格式一致性校验等功能,技术上使用 Iris、GORM、MYSQL 等技术栈,采用微服务方式进行开发、运维。 项目能够取得成功,很大程度上取决于采用了 RUP 统一过程模型,将一个二维模型划分为多个循环,每个循环完成一个迭代版本;每个循环通过初始、细化、构造、移交,降低了系统风险,确保高质量交付。2024 年 5 月项目顺利通过验收并上线运行,目前已经稳定运行 5 个月,得到了公司领导和客户的一致好评。

论软件的可靠性设计

摘要:我所在的公司是国内三维数据轻量化和渲染的主要厂商之一。作为公司主要的技术负责人之一,2023年3月,我承担了三维轻量化异构项目的设计与研发工作,该项目是我司三维轻量化生态中的子系统之一,主要负责对三维轻量化数据场景搭建、仿真工作。由于系统对于安全性、可靠性、可用性以及性能由很高的要求,在系统开发方面我采用容错设计技术、N 版本程序设计、冗余设计等方式降低了系统研发的风险,提升了系统运行的稳定性。该方案得到了公司领导和同事的肯定和认可,2024年5月,项目顺利通过验收正式上线。

经济杂谈

房地产分析与建议

  1. 房地产市场已无投资机会,未来前景不佳。
  2. 大部分问题与房地产相关,显示市场仍对楼市抱有幻想。
  3. 建议避免购买房产,已购房者可考虑出售。
  4. 美联储降息预期与中国楼市机会无关,中国楼市面临调整。

养老金统筹账户分析

  1. 养老金统筹账户旨在合理分配养老金负担,实现社会共济。
  2. 个人养老金制度与养老金统筹账户相辅相成,确保养老金制度可持续发展。
  3. 住房维修基金与养老金统筹账户类似,旨在保障房屋维修资金的使用效率与公平。