惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
T
Threatpost
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - Franky
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
S
Security Affairs
P
Proofpoint News Feed
L
LINUX DO - 最新话题
宝玉的分享
宝玉的分享
S
Security @ Cisco Blogs
H
Hacker News: Front Page
Security Archives - TechRepublic
Security Archives - TechRepublic
Vercel News
Vercel News
Engineering at Meta
Engineering at Meta
Know Your Adversary
Know Your Adversary
Y
Y Combinator Blog
美团技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
月光博客
月光博客
量子位
博客园_首页
The Last Watchdog
The Last Watchdog
D
DataBreaches.Net
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed
The Register - Security
The Register - Security
Schneier on Security
Schneier on Security
H
Help Net Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
F
Full Disclosure
C
Cyber Attacks, Cyber Crime and Cyber Security
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
L
Lohrmann on Cybersecurity
S
Secure Thoughts
Stack Overflow Blog
Stack Overflow Blog
Cloudbric
Cloudbric
Microsoft Security Blog
Microsoft Security Blog

蛮荆

如何获取更多的免费服务器 Kubernetes 调度器队列 - 设计与实现 Kubernetes 调度器 - 核心流程 Kubernetes Networking Model & CNI Kubernetes 控制器管理总结 Kubernetes CronJob 设计与实现 Kubernetes Job 设计与实现 Kubernetes HPA 设计与实现 Kubernetes Deployment 滚动更新实现原理 Kubernetes GC 设计与实现 Kubernetes Pod 驱逐 - 设计与实现 Kubernetes Daemonset 设计与实现 Kubernetes ReplicaSet 设计与实现 Kubernetes EndPoint 设计与实现 Kubernetes Informer 设计与实现 降本增效之应用优化 (三) 日志存储与检索 Kubernetes Pod 设计与实现 - 创建流程 Kubernetes 探针设计与实现 Kubernetes - CRI 概述 Golang 编译速度为什么这么快? Kubernetes Pod 设计与实现 - Pause 容器 Kubernetes - kube-proxy 代理模式工程优化 Kubernetes 应用最佳实践 - 优雅关闭长连接 Kubernetes Service 类型和会话亲和性 Kubernetes 为什么需要 Ingress Kubernetes 架构 - 控制平面和数据平面 降本增效之应用优化 (二) 大报表 Go 语言如何获取 CPU 利用率 降本增效之应用优化 (一) Redis 业务规则引擎演变过程简述 微服务中的熔断算法 漏桶算法和令牌桶算法 jsonparser 为什么比标准库的 encoding/json 快 10 倍 ? zap 高性能设计与实现 HTTP Router 算法演进 fastcache 高性能设计与实现 Web 常见的三个安全问题 ants Code Reading Go 线程安全 map 方案选型 布隆过滤器 死锁、活锁、饥饿、自旋锁 sync.Pool Code Reading Go 内存管理概述 Go netpoll Code Reading goroutine 泄漏与检测 time/Timer Code Reading GMP Scheduler Code Reading Go channel 的 15 条规则和底层实现 为什么 Linux “一切皆文件” context.Context Code Reading runtime/HACKING.md Goland 最佳实践 互联网开发与金庸武学 为什么 Redis 6.0 引入多线程模型? Kubernetes 应用最佳实践 - 金丝雀发布 容器中如何正确配置 GOMAXPROCS ? singleflight Code Reading sync.Map Code Reading sync.Cond Code Reading sync.WaitGroup Code Reading sync.RWMutex Code Reading sync.Mutex Code Reading sync.Once Code Reading Go 无锁编程 sync/atomic Code Reading goroutine 交替打印奇偶数 GODEBUG Go 并发模式 Go 汇编 UUID 通用技术选型 Kubernetes 应用最佳实践 - 水平自动伸缩 Go 高性能 Tips fasthttp 为什么比标准库 net/http 快 10 倍 ? 技术文章配图指南 ChatGPT 初体验 Docker 网络原理概览 iptables 的五表五链 Kubernetes 应用最佳实践 - 亲和性和污点容忍度 Go 的反射与三大定律 Docker 官方提供的最佳实践 Go 语言内置的设计模式 HTTP1 到 HTTP3 的工程优化 Kubernetes 应用最佳实践 - Sidecar 模式 Kubernetes 应用最佳实践 - init 容器和钩子函数 为什么 recover 必须在 defer 中调用? 为什么 defer 的执行顺序和注册顺序不同? Go map 设计与实现 Go 切片扩容底层实现 Go 语言中的零拷贝 Go Delve 云原生和边缘计算简介 Kubernetes Pod 服务质量等级 Kubernetes 应用最佳实践 - 探针 Kubernetes 应用最佳实践 - 资源请求和限制 CDN 原理 Kubernetes 应用最佳实践 - 开篇 缓存策略和模式 Go 内存模型 Kubernetes 核心概念 软件版本语义化
Unix 编程艺术名句摘录
2023-11-11 · via 蛮荆

蛮荆

2023-11-11 Unix 软件工程

Unix 哲学浓缩: KISS 原则。

Unix 哲学:一个程序只做一件事并且做好。程序之间可以协作并且可以处理文本流,因为这是最通用的接口。

  1. (不要过早优化) 你无法确定程序会在什么地方耗费时间,瓶颈通常出现在意想不到的地方,所以不要着急胡乱修改代码。

  2. 花哨的算法比简单算法更容易出 Bug、更难实现,尽量使用简单的算法配合简单的数据结构。

  3. 编程的核心是数据结构,而不是算法。题外话:程序 = 数据结构 + 算法,但是前者比后者更重要。

  4. 计算机编程的本质就是控制复杂度。

  5. (模块原则) 控制复杂软件的唯一方法是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至于牵动全身。

  6. 源代码首先是给人看到,其次才是计算机。

  7. (隔离原则) 策略同机制分离,接口同引擎分离。

  8. (健壮原则) 软件不仅能在正常情况下运行良好,而且在超出设计者设想的意外条件下也能够运行良好。

  9. 程序越简洁,越透明,也就越健壮。

  10. 设计良好的程序将用户的注意力视为有限的宝贵资源。

  11. 程序出现异常时,马上退出并给出足够的错误信息。

  12. (自动化) 尽量编写程序去生成程序。

  13. 先制作原型,再精雕细琢。先求运行,再求正确,最后求快。

  14. Linux 的长期目标是包容,Linux 模拟的目的就是为了吸收。

  15. 软件设计有两种方式:一种是设计得极为简洁,没有明显的缺陷;另一种是设计得极为复杂,明显看不到缺陷。

  16. 魔数七,加二或减二:人类信息处理能力的局限性。

  17. 完美之道,不在无可增加,而在无可删减。

  18. 编写简洁、健壮的代码而节省的精力,将来完全可能就是自己的财富。

  19. 拿不准,用穷举。

  20. 更高级的语言可以用更少的行数完成更多的任务,也意味着更少的 Bug。

  21. 随着时间的推移,设备资源变得越来越廉价,但程序员头脑中的空间只会越来越昂贵。

  22. 表达是编程的精髓,仔细思考数据才是最好的行动。

  23. 一切都是可配置的。

  24. 可以假设并悲观地认为,许多优化方法都是暂时的,而且常常随着成本比例而变化。

  25. Everything should be made as simple as possible, but no simpler. ——Albert Einstein

  26. 急剧下降的成本从根本上改变了编程的经济含义。大多数情况下,和C一样节约机器资源已经不再有任何意义。 相反地,经济方面的最优选择已经变成尽可能减少调试时间、尽可能延长人类对代码的长期可维护性。因此,用较新一代的解释语言和脚本语言, 能够更好地为绝大多数种类的应用实现(包括应用程序的原型设计)服务。这种转变和历史车轮中上一次 C/C++ 崛起而汇编语言衰落的情况类似。

Reference

转载申请

本作品采用 知识共享署名 4.0 国际许可协议 进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,商业转载请联系作者获得授权。