David Dong

David Dong

Java/C/C#/Python

Java/C/C#/Python

  • posts

  • RawPosts - A theme for Jekyll

    RawPosts is a simple, elegant, and clean Jekyll theme. It is born from the creation of my blog website. It is designed with a fully responsive feature and can be deployed on Github Pages. I open-sourced this theme on Github with an MIT license, so it is free for use.

  • CodeGraph vs Code-Review-Graph:两大代码图分析 MCP 工具深度对比

    当 AI 编程助手遇到大型代码仓库时,”大海捞针”式的文件搜索和上下文拼接很快就会达到性能和成本瓶颈。代码图(Code Graph) 技术应运而生——它预先把代码仓库的调用关系、依赖结构、模块边界等信息建模为一个可查询的图结构,让 AI 能够”按图索骥”而不是”全文扫描”。

    当前最有代表性的两个解决方案是 CodeGraph(由 Colby McHenry 开发,Node.js 生态)和 Code-Review-Graph(由 Tirth Pandya 开发,Python 生态)。本文基于实际项目中的使用体验,从多个维度进行深度对比,并分享如何在 AI 编程工作流中组合使用它们。

  • Claude Code vs CodeBuddy:两大 AI 编程助手的权限系统设计深度对比

    随着 AI 编程助手从 IDE 插件走向终端命令行,权限系统设计成为了区分「玩具」和「生产工具」的关键分水岭。终端环境下的 AI 助手拥有文件读写、Shell 执行等高度敏感的能力,一个设计良好的权限系统需要在 效率安全 之间找到平衡。

    本文基于对 Claude Code 和 CodeBuddy 的实际使用体验,从架构设计、规则体系、运行模式、安全边界四个维度进行对比。

  • Mainstream UI App Development Frameworks in 2026 — A Learning Summary

    Over the past decade, the landscape of UI application development has undergone a dramatic transformation. The days when building an app for iOS, Android, Windows, and macOS meant maintaining four separate codebases are fading fast. Today, developers have an overwhelming number of cross-platform frameworks to choose from — each with its own philosophy, trade-offs, and ideal use cases. After studying this topic in depth, here is what I have learned and my personal take on where things stand in 2026.

  • Rust startup - trait

    Is Rust an object-oriented programming language? I have searched for the answer to this question on different AI assistants.

  • Rust startup - Ownership

    Ownership in Rust refers to a set of rules that govern how memory is managed. At any given time, each value in Rust has a variable that is known as its owner. There can be only one owner at a time. When the owner goes out of scope, the value is dropped and its memory is deallocated.

  • Rust startup - environment setup

    Rust is hot, I’ve heard a lot of people talking about the Rust language, and it’s powered me enough to learn more about it!

  • What it's like to use ChatGPT

    ChatGPT is very hot recently, I also registered an account and experienced it myself. 😉

  • About gerrit.createChangeId

    git config --bool --get gerrit.createChangeId is a command used in the Git version control system to retrieve the value of the configuration option gerrit.createChangeId.

  • Keep old change-id when do git commit

    When I use git commit --amend command, it will generate a new change-id. But I want to use the previous change-id and don’t want to generate a new one. How should I keep the old change-id and keep only one change-id?

  • Git hook 配置与使用

    Hook 就是在执行某个事件之前或之后进行一些其他额外的操作。在 Git 中也有许多的事件(commit、push 等等),每个事件也是对应了有不同的钩子的(如 commit 前,commit 后),那么我们就可以在这些钩子这里配置一些自己需要执行的操作来实现各种各样的需求。

  • Windows 消息处理机制

    Windows32 程序是由消息事件驱动的。一个消息,是系统定义的一个 32 位的值,它唯一的定义了一个事件,向 Windows 发出一个通知,告诉应用程序某个事情发生了。

  • 浅谈 Java 线程同步技术

    Java 里实现线程间的同步有多种方法,比如使用 synchronized 关键字,waitnotifyvolatile 变量,重入锁,局部变量,阻塞队列或者原子类型变量等。