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

推荐订阅源

P
Proofpoint News Feed
H
Hacker News: Front Page
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cisco Blogs
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
AWS News Blog
AWS News Blog
Spread Privacy
Spread Privacy
S
Schneier on Security
The Hacker News
The Hacker News
Cyberwarzone
Cyberwarzone
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Tailwind CSS Blog
S
Secure Thoughts
N
Netflix TechBlog - Medium
T
The Exploit Database - CXSecurity.com
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
Google Online Security Blog
Google Online Security Blog
L
LangChain Blog
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
Hacker News: Ask HN
Hacker News: Ask HN
www.infosecurity-magazine.com
www.infosecurity-magazine.com
有赞技术团队
有赞技术团队
P
Privacy International News Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recent Announcements
Recent Announcements
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
Recorded Future
Recorded Future
The Last Watchdog
The Last Watchdog
G
Google Developers Blog
T
Threatpost
小众软件
小众软件
S
Securelist
Recent Commits to openclaw:main
Recent Commits to openclaw:main
O
OpenAI News

蛮荆

如何获取更多的免费服务器 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 国际许可协议 进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,商业转载请联系作者获得授权。