JAVA - record

Java 14 引入并在 Java 16 中正式稳定的 record 是一种新型类,用于定义不可变数据载体,简化“数据类”的定义。record 自动生成所有字段的 private final 声明、构造函数、getters 方法(字段名同名)、以及 toString()、equals() 和 hashCode() 方法。适用于仅需存储数据而无需大量样板代码(如构造函数、getter、toString 等)的场景。例如,创建一个 `Person` record 类,其中包含地址和年龄信息,可以轻松实现数据封装与访问,同时保持对象的不可变性。

liujie Published on 2025-04-21

GO学习(五)

go类型转换 数值类型转换 type_name(expression) var a int = 10 var b float64 = float64(a) 示例: package main import "fmt" func main() { var sum int = 17

liujie Published on 2025-03-17

GO 学习(四)

本文介绍了Go语言中的指针、结构体(struct)、切片(slice)和Map集合的基本概念及使用方法。首先,指针通过`&`获取变量的内存地址,并通过`*`访问该地址存储的值。接着,结构体定义了新的数据类型,包含一个或多个成员,可以通过点`.`操作符访问其字段。切片是一种灵活的数据结构,基于数组实现,支持动态扩展和切割操作。最后,Map是键值对的无序集合,可通过`make`函数或字面量创建,并提供了添加、删除和查询等操作。此外,还介绍了`range`关键字在遍历数组、切片、通道以及Map时的应用。这些特性使得Go语言在处理复杂数据结构时既高效又方便。

liujie Published on 2025-03-14

GO 学习(三)

本文介绍了Go语言中函数的定义、使用及特性。Go程序至少需要一个`main()`函数作为入口。函数声明包括名称、参数列表和返回类型,标准库提供了如`len()`等内置函数。Go支持函数返回多个值,并可将函数作为参数传递给其他函数。匿名函数(闭包)在Go中也得到良好支持,它们可以访问外部变量且无需显式声明。此外,Go还允许为结构体或自定义类型定义方法,这些方法属于该类型的方法集。文章最后简要提到了Go中的变量作用域规则与数组的基本概念,强调了数组大小是其类型的一部分,不同长度的数组被视为不同类型。

liujie Published on 2025-02-21

GO 学习(二)

在 Go 语言中,`make` 是一个用于初始化切片(slice)、映射(map)和通道(channel)的内建函数。它不仅分配内存,还初始化数据结构的内部状态,使其可以直接使用。与 `new` 函数不同,`new` 只是分配内存并返回指向类型零值的指针,而不进行初始化。 - **切片**:通过 `make([]T, length, capacity)` 创建,其中 `T` 是元素类型,`length` 是长度,`capacity` 是容量(可选)。例如,`slice := make([]int, 5, 10)` 创建了一个长度为 5、容量为 10 的整数切片。 - **映射**:通过 `make(map[K]V, capacity)` 创建,其中 `K` 和 `V` 分别是键和值的类型,`capacity` 是初始容量(可选)。例如,`m := make(map[string]int)` 创建了一个空的字符串到整数的映射。 - **通道**:通过 `make(chan T, capacity)` 创建,其中 `T` 是传输的数据类型,`capacity` 是缓冲区大小(可选)。例如,`ch := make(chan int, 2)` 创建了一个容量为 2 的整数通道。 `make` 与 `new` 的主要区别在于 `make` 初始化数据结构并返回引用,而 `new` 只分配内存并返回指针。此外,文章还介绍了 Go 中的并发编程机制,包括 goroutine、channel、select 语句等,并详细解释了它们的用法和特点。

liujie Published on 2025-02-20

GO 学习(一)

本文介绍了Go语言中变量和常量的基础知识及使用方法。首先,通过 `:=` 操作符可以在函数内部声明并初始化变量,但不能用于全局变量;多变量声明时可以自动推断类型。变量间值的交换可以通过简单的赋值语句实现。空白标识符 `_` 用于丢弃不需要的值。常量在程序运行期间不可更改,支持布尔型、数字型和字符串型,并且可以用作枚举。特别地,iota 是一个特殊的常量生成器,在每个const声明行自动递增。文章还介绍了位运算符(如按位与、或、异或等)和其他运算符(如取地址符 `&` 和指针解引用符 `*`)的用法及其示例。

liujie Published on 2025-02-20

Solidity -基础数据类型和关键字

Solidity基础数据类型 以下是Solidity基础数据类型的表格,包含示例和说明: 数据类型

liujie Published on 2024-09-10

浅谈Spring中的@EventListener和@TransactionalEventListener

文章讨论了在Spring框架中使用发布/订阅模式时遇到的问题及解决方案。初始示例展示了如何利用`@EventListener`实现用户注册后自动分配顾问的功能,但发现该方法与用户注册事务绑定在一起,导致业务逻辑未能完全解耦。为了解决这个问题,文章介绍了`@TransactionalEventListener`注解,它允许更灵活地控制事件监听器的执行时机,如事务提交后(默认)、回滚后或完成时。通过设置`Propagation.REQUIRES_NEW`开启新事务,可以确保即使原事务已提交,监听器中的数据操作仍能正常进行。此外,对于耗时较长的操作,还可以结合`@Async`注解异步处理。总之,`@TransactionalEventListener`提供了一种有效的方法来增强发布/订阅模式下的事务管理能力。

liujie Published on 2023-11-01
liujie Published on 2023-08-26

OpenFeign

OpenFeign OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。 Spring Cloud OpenFei

liujie Published on 2023-08-15
Previous Next