摸鱼精选第 19 期
1. EasyLogger
EasyLogger 是一款超轻量级(ROM小于1.6K, RAM小于0.3K)、高性能的 C/C++ 日志库,非常适合对资源敏感的软件项目,例如: IoT 产品、可穿戴设备、智能家居等等。相比 log4c、zlog 这些知名的 C/C++ 日志库, EasyLogger 的功能更加简单,提供给用户的接口更少,但上手会很快,更多实用功能支持以插件形式进行动态扩展。
2. flatbuffers
谷歌开源的高性能序列化库。类似 Protocol Buffers 的序列化格式,但解析速度更快、占用内存更少,多用于对解析耗时敏感的 Android 应用和游戏。
3. C++ Core Guidelines
C++ 核心指南。一份由 C++ 之父 Bjarne Stroustrup 领导的 C++ 编码指南,目的是为了帮助大家更好地使用现代 C++。这个项目主要讨论的是关于 C++ 编写接口、内存管理、并发等方面的问题,适合有一定 C++ 基础想要进阶的小伙伴。
4. jq
轻快的命令行 JSON 处理器,这个项目可以通过简单的命令对 JSON 数据进行格式化、过滤等操作,还支持直接解析接口的 JSON 数据,十分灵活和方便。
这个命令和 curl 结合非常好,但是如果只是获取 http 请求,有一个更好的自带格式化的库httpie。
5. Tencent lemon-cleaner
腾讯柠檬清理是针对 macOS 系统专属制定的清理工具。主要功能包括重复文件和相似照片的识别、软件的定制化垃圾扫描、可视化的全盘空间分析、内存释放、浏览器隐私清理以及设备实时状态的监控等。重点聚焦清理功能,对上百款软件提供定制化的清理方案,提供专业的清理建议,帮助用户轻松完成一键式清理。
6. 函数式编程术语
函数式编程世界的行话。该项目希望通过介绍函数编程中的术语,让学习函数式编程变得容易些,示例代码均采用 JavaScript 编写。 比如基本的函子(Functor)、单子(Monad),还有态射(Morphism)、半群(Smigroup)、透镜(Lens)等。
7. 《深入浅出 Webpack》
本书是国内第一本系统全面讲解 Webpack 的图书,涵盖了 Webpack 的入门、配置、实战、优化、原理。 除了深入讲解 Webpack,本书还附带介绍了 ES6、TypeScript、PostCSS、Prepack、离线缓存、单页应用、CDN 等 Web 开发相关的技能。 在线阅读:http://webpack.wuhaolin.cn/
8. MicroPython
可运行在单片机上的 Python。众所周知 Python 是一门语法非常简单的编程语言,如果能用 Python 操控硬件岂不美哉!该项目就是单片机上的“迷你” Python,通过它就可以用 Python3 进行单片机开发了,大大地降低了硬件开发的入门门槛。
9. TencentOS tiny
TencentOS tiny 是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。
TencentOS tiny 提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU (如 STM32 全系列)及模组芯片上。而且,基于 RTOS 内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入腾讯云物联网平台。
10. async_simple
阿里开源的轻量级 C++ 异步框架。提供了基于 C++20 无栈协程(Lazy)、有栈协程(Uthread) 以及 Future/Promise 等异步组件,能够轻松完成 C++ 异步的开发,广泛应用于阿里的图计算引擎、时序数据库、搜索引擎等系统。
11. folly
Facebook 开源的 C++ 工具库。包含一系列高性能的 C++ 组件库,方便且高效在 Facebook 内部被广泛应用。该项目不仅代码规范测试用例充足,而且源码中包含丰富的注释。同样功能的函数为什么别人写的性能好还健壮,这次终于可以一探究竟了。
AtomicHashMap.h :高性能原子数据结构 Bits.h:处理各种位操作的工具 Conv.h:处理各种数据类型的转换 dynamic.h:动态类型的对象,可用来处理 json-> map
12. Go 语言实战: 编写可维护 Go 语言代码建议
编写可维护 Go 代码的建议。《Go 语言最佳实践》一文的中文翻译版。
13. 图解 React 源码系列
图解 React 源码。作者从 React 项目结构和运行机制入手,先介绍 React 的整体结构,然后讲解运行核心、数据管理以及用到的高频算法。篇篇到“肉”干货满满,推荐给想要深入学习 React 源码的小伙伴。
14. type-challenges
在线挑战 TypeScript 类型问题。该项目包含了不同难度的关于 TypeScript 类型的问题以及答案,通过这些挑战可以更好地理解 TypeScript 的类型系统。
15. ants
ants 是一个高性能的 goroutine 池,实现了对大规模 goroutine 的调度管理、goroutine 复用,允许使用者在开发并发程序的时候限制 goroutine 数量,复用资源,达到更高效执行任务的效果。
功能:
- 自动调度海量的 goroutines,复用 goroutines
- 定期清理过期的 goroutines,进一步节省资源
- 提供了大量有用的接口:任务提交、获取运行中的 goroutine 数量、动态调整 Pool 大小、释放 Pool、重启 Pool
- 优雅处理 panic,防止程序崩溃
- 资源复用,极大节省内存使用量;在大规模批量并发任务场景下比原生 goroutine 并发具有更高的性能
- 非阻塞机制
16. Thanks Mirror
国内公共仓库镜像的集合。该项目包含开发常用的库、软件、系统镜像地址以及使用的方法
17. uthash
为 C 语言提供哈希表的库。由于 C 语言中没有类似字典的数据结构,该库提供了哈希表常见的查询、插入、删除、排序等函数。使用方法简单,仅需引入一个头文件。
18. lvgl
美观易用的轻量级嵌入式系统图形库
- 拥有丰富的图形组件:按键、图表、图片等
- 支持多种输入设备:触摸屏、键盘、按键等
- 最低资源占用:64 kB ROM、16 kB RAM
- 不依赖特定的硬件平台,可在多种显示屏上运行
- 支持多语种:中文、韩文、阿拉伯文等
- 丰富详细的示例
19. Building a DNS server in Rust
用 Rust 从头写一个 DNS 服务的教程
20. Coost
Coost 是一个优雅、高效的跨平台 C++ 基础库,基于 C++ 11,它没有 boost 那么重,但仍然提供了足够强大的功能,可以看做是 Boost 的替代品。 在 C++ 上实现类似 Go goroutine 的库。它实现了协程同步事件、协程锁、协程池、channel、waitgroup,内存占用少实测 1000 万协程占用 2.8G 内存。
#include "co/co.h"
DEF_main(argc, argv) {
co::Chan<int> ch;
go([ch]() { /* capture by value, rather than reference */
ch << 7;
});
int v = 0;
ch >> v;
LOG << "v: " << v;
return 0;
}