本文介绍了作者如何优化 Mess With DNS 的内存使用。作者首先尝试使用 SQLite 存储 IP 地址数据库,但发现速度太慢。接着尝试使用 trie 结构,但内存占用反而更高。最终,作者通过去重和使用 netip.Addr 结构,成功将内存占用降低了 70MB,同时将查询速度保持在可接受范围内。
这篇文章探讨了终端颜色设置的复杂性和常见问题。作者首先解释了ANSI颜色和终端模拟器如何显示颜色,接着列举了用户可能遇到的问题,例如蓝色在黑色背景上难以阅读、程序使用256色导致的颜色冲突等。文章还介绍了一些解决方案,包括配置终端模拟器、运行shell脚本以及使用“最小对比度”功能。最后,作者推荐了一些有用的工具和资源,例如base16和tinted-theming,帮助读者更好地管理和定制终端颜色。
本文是作者在使用Go进行Web开发时的一些心得体会,包括Go 1.22版本带来的路由改进、使用sqlc自动生成数据库查询代码、SQLite使用技巧、Go 1.19版本中引入的GC内存限制设置方法以及作者选择Go进行Web开发的原因。
本文介绍了作者如何使用 PowerDNS 迁移和改进 Mess With DNS 网站 DNS 功能的过程。文章详细描述了在迁移过程中遇到的八个挑战,包括如何拦截所有 DNS 查询、前端是否应该直接访问 PowerDNS API、如何处理记录 ID、如何生成清晰的错误信息、如何设置 SQLite 数据库、如何升级 Vue.js 和管理表单、如何管理前端状态以及如何对项目进行排序等。作者还分享了在解决这些挑战过程中学到的经验和教训。最终, Mess With DNS 网站成功迁移到 PowerDNS,解决了之前存在的许多 DNS 问题。
本文探讨了Go语言中结构体在赋值时会进行拷贝而非引用传递的特性,并解释了由此可能引发的问题,例如在使用结构体切片时,对子切片的修改可能会影响原切片。此外,文章还介绍了Go语言中方法接收器的类型以及使用建议,并列举了其他一些常见的Go语言错误和编码技巧。
这篇文章讲解了Ruby的Timeout方法为何是危险的。Timeout方法通过在一个新线程中向主线程抛出异常来中断主线程的执行,但这可能会在代码执行的任何阶段发生,包括网络请求、清理操作、数据库操作等,从而导致难以预测的后果。文章还对比了其他语言如Java、Python、C#和C++是如何处理线程中断的,并指出Java的Thread.interrupt方法更加安全,因为它只在特定的时间点抛出InterruptedException异常,例如在Thread.sleep期间。