冰冰同学的技术博客

  • Makefile 语法

    make 是一个自动化构建工具。它最初常用于 C/C++ 项目编译,但现在也广泛用于: 它的核心能力是: 你可以把 Makefile 理解成一个项目级别的“命令说明书”。 最简单的 Makefile 文件长这样: 在当前目录执行:make hello 输出: 这里: 结构如下: 或者更完整地写: 其中: 目标 执行: 含义是:执行 build 目标下的命令。
    2026-08-19·4 阅读·
  • SIMD 入门:从标量循环到 AVX2

    SIMD:全称是 Single Instruction, Multiple Data,中文通常译为“单指令多数据”。 以下示例运行环境是 x86-64 Linux,主要使用 C、GCC 和 AVX2。本机当前环境: 教程先使用 AVX2,而不是直接使用 AVX-512。AVX2 的概念更简单,支持范围也更广。
    2026-08-10·24 阅读·
  • Thrift 语法详解

    本教程从零开始,系统讲解 Apache Thrift 的 IDL(Interface Definition Language)语法与工程实践,内容覆盖语法细节、生成代码机制、跨语言特性、版本兼容策略、最佳实践与常见坑点。
    2026-08-05·20 阅读·
  • OAuth2 认证原理

    在很多系统里,“登录”“授权”“单点登录”“第三方账号登录”经常被放在一起讨论。OAuth2 也常被称为一种“认证方案”,但严格来说,OAuth2 本身是一个授权框架,它解决的核心问题是:一个应用如何在不拿到用户密码的情况下,安全地代表用户访问另一个系统里的资源。
    2026-07-22·57 阅读·
  • JIT 编译技术详解

    JIT 的全称是 Just-In-Time Compilation,翻译成中文就是即时编译。如果只从字面意思上理解,JIT 的含义就是:程序不是在运行之前就把所有代码都编译成机器码,而是在程序运行过程中,根据实际执行情况,把一部分代码动态编译成机器码。 为了更好地理解 JIT,可以先把程序执行方式大致分成三类: 如果用一条流程表示 AOT 编译,大概如下
    2026-07-20·34 阅读·
  • 创建型模式

    工厂方法模式(Factory Method Pattern)是一个 创建型设计模式,它定义了一个用于创建对象的接口,但由 子类决定实例化哪一个类。换句话说,工厂方法模式通过子类化来推迟对象的创建过程,避免客户端直接使用具体类,增强了系统的灵活性和扩展性。
    2025-02-11·258 阅读·
  • 面向对象设计原则

    依赖倒转原则(Dependency Inversion Principle,DIP)是 SOLID 原则中的一部分,旨在减少模块之间的耦合,使得系统更加灵活和可维护。这个原则的核心观点在于:高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于具体细节,具体细节应该依赖于抽象。
    2025-02-10·159 阅读·
  • SQL 查询语句练习

    表连接:将 score 表和 course 表连接起来,以便能够根据 courseid 获取到 coursename。聚合函数:利用聚合函数 MAX()、MIN() 和 AVG() 分别计算最高分、最低分和平均分。分组:使用 GROUP BY 子句对于 course_name 进行分组,以便对每门课程进行统计。
    2024-06-24·297 阅读·
  • unsafe包

    Go语言的unsafe包提供了一些用于进行低级内存操作的工具,允许程序员绕过Go语言的类型安全和内存安全机制。这些工具通常用于高级编程任务,例如与系统接口交互或进行性能优化。不过,使用unsafe包时需要非常小心,因为它可以导致程序的不稳定性和不可预知的行为。
    2024-06-18·134 阅读·
  • kafka 常见命令

    一个主题在生成后就不能通过简单命令的方式来改变其副本的数量(需要通过配置文件),所以最好是在主题创建时就指定其副本数量。主题的分区只能增加,不能减少。
    2024-04-30·90 阅读·