发布了文章6 月 24 日
简介Thread 是 .NET 里直接创建和管理线程的底层 API。命名空间: {代码...} 最简单的写法: {代码...} 一句话概括: {代码...} 不过,现代 .NET 项目里并不需要到处 new Thread()。常见选择应该是: {代码...} Thread 更底层,也更难管理。只有确实需要专用线程时,...
发布了文章6 月 23 日
简介Emit 通常指的是: {代码...} 它是 .NET 里一套非常底层的运行时代码生成 API。一句话概括: {代码...} 普通 C# 代码是先写源码,再编译成程序集,然后运行。Emit 的思路不一样: {代码...} 这听起来有点像“运行时手写 IL”。实际也差不多。Emit 能解决什么问题?...
发布了文章6 月 22 日
简介项目代码写久了,很容易出现这种函数签名: {代码...} 真正的业务参数只有 userId 和 productId。后面的 logger、config、tx 更像“运行环境”:日志对象配置对象当前登录用户数据库事务权限能力请求上下文监控埋点对象这些对象通常不会在每一层变化,但又经常被一...
发布了文章6 月 21 日
简介interface 是 Go 里非常重要的类型。它不保存字段,也不写具体逻辑。它只定义一组方法。比如: {代码...} 这段代码表达的是: {代码...} 一句话概括: {代码...} 结构体更像“数据长什么样”。接口更像“能做什么事”。例如: {代码...} 第一个 interface 示例先看一...
发布了文章6 月 20 日
简介TaskFactory 是 .NET 里专门用来创建和调度 Task 的工厂类。最常见的入口是: {代码...} 很多代码里会把它当成 Task.Run 的高级版,甚至直接用它替代 Task.Run。这种理解只对了一半。一句话概括: {代码...} 普通后台任务,直接用 Task.Run 通常更清楚。只有需要...
发布了文章6 月 19 日
JdbcTemplate、MyBatis、MyBatis-Plus、MyBatis-Flex、Spring Data JPA,底层最终都会通过 JDBC 和数据库通信。
发布了文章6 月 18 日
简介Tomcat 全名是 Apache Tomcat。它是 Java Web 领域很常见的 Servlet 容器,也可以理解成轻量级 Java Web 服务器。它主要负责这些事情: {代码...} 传统 Java Web 项目、Spring MVC 项目、打成 WAR 包的 Spring Boot 项目,都可以部署到 Tomcat。一句话概括: {代...
发布了文章6 月 17 日
简介Flyway 是一个数据库迁移工具。它解决的问题和 Liquibase 类似: {代码...} 不过 Flyway 的风格更简单直接。它主要通过 SQL 文件管理数据库变更。比如: {代码...} 应用启动或命令执行时,Flyway 会检查哪些脚本已经执行过,哪些还没执行,然后按版本顺序执行新...
发布了文章6 月 16 日
简介pointer 是 Go 里绕不开的基础概念。中文通常叫“指针”。它的作用很简单: {代码...} 先看一个最小例子: {代码...} 这里:a 是普通变量,值是 10&a 是 a 的地址p 是指针变量,保存了 a 的地址*p 可以拿到 p 指向的值一句话概括: {代码...} Go 的指针比 C/C+...
发布了文章6 月 15 日
简介with 是 Kotlin 标准库里的作用域函数。作用域函数常见有 5 个:letrunwithapplyalsowith 的定位很清楚:把一个已有对象传进去,在这个对象的作用域里执行一段逻辑,然后返回 Lambda 最后一行的结果。常见写法: {代码...} 这里的 name、age 来自 user 对象,res...
发布了文章6 月 14 日
简介Liquibase 是一个数据库变更管理工具。它解决的问题不是: {代码...} 而是: {代码...} 比如项目从第一个版本到第三个版本,数据库可能经历这些变化: {代码...} 如果靠手动执行 SQL,很容易出现这些问题: {代码...} Liquibase 的做法是把数据库变更写成文件,...
发布了文章6 月 13 日
简介Doctrine ORM 是 PHP 生态里非常常见的对象关系映射框架,Symfony 项目中用得尤其多。它的作用可以用一句话概括: {代码...} 传统写法通常是直接写 SQL: {代码...} 使用 Doctrine 后,代码会变成操作实体对象: {代码...} 表面上只是写法变了,底层做的事情更多...
发布了文章6 月 12 日
简介run 是 Kotlin 标准库里的作用域函数。作用域函数常见有 5 个:letrunwithapplyalsorun 的特点比较鲜明:在对象作用域里执行一段逻辑,然后返回 Lambda 最后一行的结果。常见写法: {代码...} 这里的 name、age 来自 user 对象,result 是 Lambda 最后一行的字符...
发布了文章6 月 11 日
简介struct 是 Go 里最重要的复合类型之一。它用来把多个字段组合成一个整体。比如一个用户有 ID、名称、邮箱、年龄: {代码...} 这段代码表达的是: {代码...} Go 没有传统意义上的 class,但很多业务模型都会用 struct 表达:用户商品订单配置请求参数响应结果数据...
发布了文章6 月 10 日
简介Spring Data JPA 是 Spring Data 家族里专门用来简化 JPA 开发的模块。它不是一个新的 ORM 规范。更准确地说: {代码...} 在 Spring Boot 项目里,常见调用链大致是: {代码...} 它的核心目标是: {代码...} 一句话概括: {代码...} JPA、Hibernate、Spring Data...
发布了文章6 月 9 日
简介MyBatis 是 Java 里很常见的持久层框架。它做的事情可以简单理解为: {代码...} 相比直接写 JDBC,MyBatis 省掉了大量重复代码: {代码...} 相比全自动 ORM,MyBatis 又保留了 SQL 的控制权。SQL 写成什么样,执行计划怎么优化,字段怎么映射,都可以清楚地放在 ...
发布了文章6 月 8 日
简介MyBatis-Plus 是一个基于 MyBatis 的增强工具。它经常被简称为 MP。它的核心定位是: {代码...} 普通 MyBatis 项目里,哪怕只是做一张表的增删改查,也经常要写: {代码...} MyBatis-Plus 把这些单表常规操作封装成了通用方法。最常见的写法是: {代码...} 继承 ...
发布了文章6 月 7 日
简介make 是 Go 里的内置函数,专门用来创建并初始化三种类型:slicemapchannel语法大概长这样: {代码...} 常见写法: {代码...} 一句话概括: {代码...} 这点和 new 不一样。new 返回指针,得到的是某个类型的零值指针。make 返回类型本身,得到的是已经初始化好的...
发布了文章6 月 6 日
简介new 是 Go 里的内置函数,作用很简单: {代码...} 语法如下: {代码...} 比如: {代码...} 这行代码会得到一个 *int 类型的指针,指针指向的值是 int 的零值,也就是 0。一句话概括: {代码...} 注意,new 不是很多语言里的“构造函数”。它不会调用构造方法,也不...
发布了文章6 月 5 日
简介also 是 Kotlin 标准库里的作用域函数。作用域函数常见有 5 个:letrunwithapplyalsoalso 主要用于附加操作,比如打印日志、调试中间结果、做校验、记录埋点、保存审计信息。一句话概括:also 会把当前对象传进 Lambda,执行一段附加逻辑,然后返回对象本身。常...