Java 项目中 PO、DO、BO、DTO、VO 的区别与用法

PO、DO、BO、DTO、VO 经常一起出现,但很多团队对它们的边界并不统一。本文按分层职责、典型场景和常见混用问题重新梳理 5 类对象,保留 Java 示例代码,并给出在小型项目和中大型项目中的实际取舍建议。

Java 项目中 PO、DO、BO、DTO、VO 的区别与用法

Ubuntu 上如何编译、运行并测试 Java 程序

这篇文章整理了在 Ubuntu 上完成 Java 编译、运行与基础单元测试的一套最小流程:安装 OpenJDK 11、验证环境、编译并运行 HelloWorld,再用 Maven 接入 JUnit 4.13.2 执行 `mvn test`。适合刚搭好环境、想快速确认 Java 工具链是否可用的读者。 很多人第一次在 Ubuntu 上跑 Java,卡住的并不是语法,而是环境、编译命令和测试流程到底该怎么串起来。

Ubuntu 上如何编译、运行并测试 Java 程序

Go 语言设计哲学:为什么说组合优于继承?

Go 没有沿用 Java、C++ 那套继承体系,而是把代码复用的重点放在组合、结构体嵌入和接口配合上。本文从继承的局限、Go 的实现方式到几个典型示例,梳理为什么“组合优于继承”不是口号,而是更贴近 Go 设计哲学的工程选择。

Go 语言设计哲学:为什么说组合优于继承?

Kotlin 条件与循环控制入门:if、when、for 与区间表达式详解

这篇文章梳理 Kotlin 中最常见的流程控制写法:`if`、`when` 与 `for`/`while`/`do-while`。重点不是简单罗列语法,而是说明 Kotlin 和 Java 在“表达式返回值”“没有 `switch-case`”“区间遍历”上的实际差异,方便你快速判断该怎么写。 很多刚从 Java 转到 Kotlin 的开发者,第一批遇到的语法差异往往就出现在流程控制上:`if` 不只是语句,`when` 也不是简单照搬 `switch-case`,循环写法看似熟悉,但区间遍历又。

Kotlin 条件与循环控制入门:if、when、for 与区间表达式详解

Ubuntu 编译 Java 提示权限不够怎么办

在 Ubuntu 下编译 Java 时出现“权限不够”,通常不是编译器本身出错,而是项目目录、文件所有权或系统目录使用方式有问题。本文按常见场景梳理 `chmod`、`chown`、目录迁移、`sudo` 临时编译和系统修复几种处理办法,并说明各自适用边界。

Ubuntu 编译 Java 提示权限不够怎么办

Spring Boot 整合 Druid 实战:接入步骤、核心参数清单与避坑说明

这篇文章用 Spring Boot 官方 Starter 为主线,重新梳理了 Druid 的接入步骤、`application.yml` 配置方式、核心参数含义和监控台访问方法,同时补充了容易踩坑的冲突项与性能取舍,方便直接落地到项目中。 在 Spring Boot 项目中接入 Druid,本身并不复杂,难点往往在于参数多、配置层级容易写混,真正上线后又会遇到连接有效性、监控入口和性能取舍这些。

Spring Boot 整合 Druid 实战:接入步骤、核心参数清单与避坑说明

Java 中有没有匿名函数?和其他语言什么区别?

Java 严格来说并没有像部分函数式语言那样“独立存在”的匿名函数,但从 Java 8 开始,开发者已经可以用 Lambda 表达式完成绝大多数匿名函数式写法。本文从匿名内部类到 Lambda 的演进讲起,再对比 JavaScript、Python 和 Scala,帮你判断 Java 的边界与适用场景。

Java 中有没有匿名函数?和其他语言什么区别?

CentOS 上怎么配置 PhpStorm 代码检查功能

这篇文章梳理了在 CentOS 上为 PhpStorm 开启代码检查的完整步骤,包括 Java 运行环境、IDE 安装、PHP 解释器设置、phpcs 接入,以及手动检查和实时检查的使用方式,适合需要快速搭起 PHP 代码质量检查链条的开发者。

CentOS 上怎么配置 PhpStorm 代码检查功能