
getaddrinfo函数详解及使用举例
本文系统介绍 POSIX 网络编程中的 getaddrinfo 函数,说明其参数、返回值、addrinfo 结构、hints 配置和 AI_PASSIVE 的作用,并结合 Redis 源码与 C 语言示例演示主机名解析和服务器地址绑定的典型用法。
最近 12 个月发布 58 篇,集中在

本文系统介绍 POSIX 网络编程中的 getaddrinfo 函数,说明其参数、返回值、addrinfo 结构、hints 配置和 AI_PASSIVE 的作用,并结合 Redis 源码与 C 语言示例演示主机名解析和服务器地址绑定的典型用法。

如何一眼看透复杂的 C++ 声明?秘诀就在于“由右向左”的解析顺序。

在这篇博客中,我们将对套接字(Socket)进行基本介绍。套接字是网络编程中的核心概念,它为不同计算机之间的数据交换提供了一种机制。我们将探讨套接字的定义、作用以及常见的套接字类型(如TCP和UDP套接字),并简要介绍如何使用套接字进行网络通信。通过本篇博客,您将对如何使用套接字进行数据传输、如何创建、绑定和监听套接字等基本操作有一个清晰的理解,并为进一步的网络编程打下基础。

从第一原理出发,评估“开发新功能”和“重构旧代码”的取舍:先看商业目标与风险边界,再选最合适的手段(不一定是重构,也可能是提高测试覆盖或采用非技术手段如保险)。适用于创业与高风险金融场景的决策框架。

Spring Boot 打包成 JAR 后,ClassPathResource 里的文件不在文件系统,不能用 getFile() 获取,应改用 getInputStream以流方式读取资源,避免 “cannot be resolved to absolute file path” 报错。

本文简要梳理了 Elasticsearch 常见的 Java 客户端,包括官方的 Transport Client(已弃用)、High Level REST Client、全新的 Java API Client,帮助你快速理解各类客户端的演进路径,并为项目选型提供参考。

介绍如何系统地书写 Git commit message,从格式约定到常见 type 分类,帮助团队提升代码 review 效率和变更可追溯性。

介绍如何调试JDK源码的详细教程,方便我们更好的深入理解Java语言和JVM的内部机制。

在Linux编程中,errno 是一个至关重要的全局变量,它用于表示系统调用或库函数执行失败时的具体错误类型。在本篇博客中,我们将深入解析 errno 的工作原理,常见错误码及其含义,并提供示例代码来帮助开发者更好地理解如何处理错误信息。无论是文件操作、网络编程,还是进程管理,正确使用 errno 都能帮助你更快地定位问题,提高程序的健壮性。

本文分析了在使用 Logback 作为日志框架时,日志路径中出现 IS_UNDEFINED 的常见原因,通常是由于未正确配置或未定义相关变量(如 ${LOG_PATH})。文章介绍了该问题的排查方式以及解决方案,帮助开发者更好地掌握 Logback 的配置机制。

本文详细介绍了在macOS M1环境下使用Parallels Desktop安装Ubuntu虚拟机的步骤,包括如何选择合适的镜像、安装过程中的设置、以及如何通过SSH连接Ubuntu虚拟机。还介绍了如何安装Parallels Tools以实现文件共享功能,并提供了常见问题的解决方法和实用参考链接,帮助用户顺利完成虚拟机的安装与配置。

使用 macOS 终端命令快速制作 Ubuntu 安装 U 盘。本教程涵盖如何查找磁盘、使用 dd 命令写入 ISO 镜像,并安全地弹出设备,适合希望在 mac 上制作 Linux 启动盘的用户。

在 macOS 上搭建高效的 Java 开发环境:使用 sdkman 安装 JDK 与 Maven,配置 IntelliJ IDEA 常用选项,并推荐一批实用插件(JRebel、Grep Console、Maven Helper 等)和日志配色方案,提升日常开发效率。

在MAC的终端(Terminal)中,不仅可以通过原生的功能完成工作,还可以通过一系列的美化和配置,将其打造成一个既美观又高效的开发工具。本文将从字体选择、Terminal 主题美化到 Zsh 配置优化,为您详细介绍如何一步步提升MAC Terminal的使用体验。

本文深入对比了 socket 的阻塞模式与非阻塞模式的行为差异,涵盖 connect、accept、send、recv 等常用函数在两种模式下的表现,以及各自的优缺点、适用场景和错误处理方式,帮助你在开发高性能网络程序时做出正确选择。

记录如何下载并重命名 Spring 5.3.10 源码、使用 Gradle 编译并在 IntelliJ IDEA 中创建测试模块,验证注解扫描与依赖注入可正常运行,并给出 Gradle 构建日志与注意事项。

本文从动态代理入手,系统梳理了 Spring AOP 中几个最核心的概念和实现方式:先用 CGLIB / JDK 动态代理说明“代理”究竟改变了什么,再通过 ProxyFactory、Advice、Advisor、Pointcut 等 API 串起 Spring AOP 的底层机制,最后再回到注解驱动的使用方式,帮助读者把「怎么用」和「为什么这样设计」连接起来。

本文从源码角度解析 Spring AOP 中 ProxyFactory 的实现,重点说明其在 JDK 动态代理与 CGLIB 之间的选择逻辑,以及 AopProxy、MethodInterceptor 链的构建与执行流程,帮助理解 Spring AOP 代理创建与方法拦截的内部机制。

梳理 Spring 核心概念:Bean、BeanDefinition、BeanFactory 及其重要实现(DefaultListableBeanFactory)、BeanDefinitionReader 与扫描器、ApplicationContext 及常用实现、BeanPostProcessor、BeanFactoryPostProcessor、FactoryBean 的机制与示例,以及扫描过滤与元数据读取要点。

通过HelloWorld示例深入探讨了 Spring 的底层核心原理。文章解释了 Spring 是如何通过 AnnotationConfigApplicationContext 创建 Bean、如何进行依赖注入、如何管理 Bean 的生命周期以及如何通过 AOP 实现动态代理。此外,还介绍了 Spring 事务的处理机制以及如何推断构造方法。通过本篇文章,你将更清楚地了解 Spring 的工作机制及其强大之处。

在Spring框架中,FactoryBean是一个特殊的Bean,它并不直接返回实例,而是通过实现getObject方法来生成或修饰对象。本文介绍了FactoryBean的概念及其与BeanFactory的区别,探讨了它在Spring容器中的重要作用,并举例说明如何使用FactoryBean来简化复杂对象的实例化过程。

在 C 语言中,typedef 关键字用于为已有类型创建新的别名,从而提高代码的可读性和可维护性。本篇博客将深入解析 typedef 的用法,包括结构体重命名、指针类型定义、函数指针的应用,以及 typedef 和 struct 的区别,帮助你全面掌握 typedef 的使用技巧。

介绍了如何通过使用__attribute__ ((packed))关键字来取消默认的字节对齐,从而减少内存占用。通过一个简单的代码示例展示了在字节对齐和非字节对齐情况下结构体的内存占用对比。

本文详细介绍了BOM(材料清单)的概念、格式以及如何在项目中使用。BOM实际上是一个特殊的POM文件,它列出了一个工程的所有依赖及其对应版本,便于其他工程引用而无需指定具体版本。文章通过一个具体的BOM文件示例,解释了其关键信息和结构,包括打包方式、依赖管理等。