如何处理前任程序员留下的代码
作为软件工程师不可避免会遇到的一个场景是:我们在改变或添加一个功能到不是我们创建的、我们不熟悉的、与我们负责的系统部分无关的代码中时,会遇到麻烦。
作为软件工程师不可避免会遇到的一个场景是:我们在改变或添加一个功能到不是我们创建的、我们不熟悉的、与我们负责的系统部分无关的代码中时,会遇到麻烦。
这篇文章深入探讨了现代内存管理中的漏洞利用技术,重点分析了堆布局操作的细节和在实际攻击中的应用场景。通过具体案例展示了如何构造和利用堆漏洞,揭示了内存分配机制中的潜在安全隐患。内容适合安全研究人员、漏洞挖掘工程师以及对内存安全和攻防技术感兴趣的技术爱好者,提供了深度学习和实践参考。
本文探讨了基于容器技术的代码沙箱应用,旨在隔离代码执行环境,提升安全性和稳定性。通过 Docker 容器创建语言镜像,支持多语言代码执行。文章介绍了使用 Jupyter 实现代码可视化,并借助 nbformat 和 nbconvert 管理和执行 Jupyter 笔记本,增强代码展示效果。此方案不仅提高了开发灵活性,还便于在 AI 编程中实时展示和分析结果。
在 Rust 中如何同时支持异步和同步代码?本文提供了详细的解决方案,从基础实现到 maybe_async crate 的使用,帮助你在一个代码库中高效处理这两种模式的转换。无论你是构建高并发系统还是希望代码更灵活,这篇文章都提供了实用的技巧。感兴趣的开发者不容错过!
本文介绍了如何使用OpenRewrite工具优化Java代码。OpenRewrite可以通过自动化脚本进行代码重构,减少技术债务,提升代码质量。作者详细讲解了如何配置Maven插件,并使用多种重构“处方”,例如排序import语句、升级到Java 21、替换Base64实现,以及迁移到Spring Boot 3.2和JUnit 5。通过这些工具和方法,开发者可以简化代码维护和升级流程。
之前在某电商 App 上浏览商品评论区时,发现一些晒单照片中包含的二维码被马赛克处理了,从马赛克的处理痕迹来看不像是用户手动处理的,更像是机器识别+处理的,对此我更好奇其实现原理了。
借助 ChatGPT,了解到主流的处理方式是通过 OpenCV 识别二维码的位置,并创建一个模糊图层对其覆盖。
最近编写了一个Go程序,向数百万个IP地址发送ICMP ping消息。显然,希望这个过程能尽可能快速高效地完成。因此,这促使我研究各种与网络栈交互和快速发送数据包的各种方法。这是一个有趣的旅程,所以在本文中,我将分享一些学习成果,并记录下来供将来参考:)你将看到,仅使用8个内核就可以达到1880万数据包/秒。这里还有一个GitHub仓库,其中包含了示例代码,可以方便地跟随学习。
双缓冲(double buffering)是高效处理I/O操作的一种并发技术,它使用两个buffer,一个goroutine使用其中一个buffer进行写,而另一个goroutine使用另一个buffer进行读,然后进行交换。这样两个goroutine可能并发的执行,减少它们之间的等待和阻塞。
本文还提供了一个类似Java的java.util.concurrent.Exchanger的Go并发原语,它可以用来在两个goroutine之间交换数据,快速实现双缓冲的模式。 这个并发原语可以在github.com/smallnest/exp/sync/Exchanger找到。
本篇记录一下我传书到 Kindle 的「独特」方式——WiFi 传书插件。可以直接通过 WiFi 传输电子书到 Kindle,不需要使用 USB 线,也不依赖其它服务,只要 Kindle 和手机/电脑在同一个局域网内,就可以通过浏览器直接上传电子书到 Kindle。
本文整理自美团技术沙龙第77期《美团亿级流量系统的质量风险防控和稳定性治理实践》。文章第一部分介绍了软件系统风险与变更;第二部分介绍了代码变更风险可视化系统的能力建设;第三部分介绍了整个系统在美团内部实践落地的情况;最后是对未来的规划和展望。希望对大家能有所帮助或启发。
在工作中,常常会容易遇到一台电脑用多个 Git 账号的场景,比如账号 company 账号是工作用的,而账号 personal 是自己个人用的。 由于 Git 本身并没有多账号的机制,导致我们在默认设置下无法很好的区分哪个仓库使用哪个账号。 同时,在某些众所周知的场景下,我们无法直接访问到 Github 仓库,需要走一层 proxy 来加速我们的代码拉取与推送速度, 本文将使用 SSH config 相对优雅的解决这些问题。