- 博客(161)
- 资源 (3)
- 收藏
- 关注
原创 Go 语言中的单元测试
本文介绍了Go语言单元测试的核心方法和技巧。主要内容包括:1) go test命令的使用和测试文件命名规范;2) 测试函数类型(功能测试、性能测试等)及其编写方法;3) 通过-short标志管理耗时测试;4) 表格驱动测试的实现方式;5) 性能测试的编写和字符串拼接性能对比分析。文章强调单元测试对保障代码质量的重要性,并提供了具体示例帮助开发者快速掌握测试技能,特别是性能测试结果显示strings.Builder在字符串拼接中性能最优。
2025-06-27 10:25:37
1155
原创 Go 语言中的 package 和 go modules
Go语言包管理机制解析 Go语言通过包(Package)机制组织代码,将功能相关的源文件集合在同一目录下,形成可复用模块。包的核心作用包括代码组织、复用和命名空间管理。每个源文件必须声明所属包,同目录下文件必须属同一包。包成员的可见性由首字母大小写决定:大写可导出,小写仅包内可见。 高级导入技巧包括:使用别名解决命名冲突、点导入简化调用(慎用)、匿名导入仅执行init函数。Go Modules是官方依赖管理系统,通过go.mod和go.sum文件记录依赖关系,确保可复现性。开发时可配置国内镜像代理加速依赖下
2025-06-27 10:18:22
1037
原创 Go 语言中的接口
Go语言接口采用鸭子类型设计哲学,强调"能做什么"而非"是什么",通过隐式实现实现灵活的多态。接口定义只需方法声明,类型自动实现所有方法即满足接口。空接口(interface{})可存储任意类型。实践中应定义小而精的接口,允许单一类型实现多个接口,并通过接口组合与结构体嵌入实现依赖注入,有效降低代码耦合度。这种设计结合了静态类型安全和动态语言灵活性,是Go构建可扩展系统的核心机制。
2025-06-26 19:22:11
964
原创 Go 语言中的指针
本文深入解析了Go语言中指针的本质、使用方法及重要特性。指针在Go中通过传递内存地址实现引用传递,修改函数参数时能影响原始变量。文章详细阐述了指针的工作原理、内存模型,包括普通变量、指针变量、赋值操作和解引用过程。Go指针支持语法糖简化成员访问,但禁止指针运算以提升安全性,仅通过unsafe包支持底层操作。指针初始化需避免nil解引用,介绍了三种初始化方式:取址运算符、结构体字面量取址和new函数。文章还对比了new与make的区别,指出new用于分配内存并返回指针。
2025-06-26 19:00:34
671
原创 Go语言中的结构体
Go语言中type关键字主要用于类型别名、自定义类型和类型判断。类型别名(type MyInt = int)提高可读性但不创建新类型;自定义类型(type MyInt int)创建独立类型并可添加方法。结构体(struct)是Go组织数据的核心方式,支持嵌套和匿名结构体。方法通过接收器((p Person))绑定到类型,区分值接收器(操作副本)和指针接收器(操作原对象)。这些特性构成了Go类型系统的核心,实现了简洁高效的类型扩展和面向对象编程。
2025-06-20 14:28:42
416
原创 Go语言中的 函数、闭包、defer、错误处理
本文摘要: Go语言函数详解:从基础到高阶特性 函数基础 函数是Go的"一等公民",可赋值变量、作为参数/返回值 值传递机制:函数接收参数副本,不影响原始变量 高级特性 可变参数:使用...语法,必须是最后一个参数 命名返回值:支持裸返回,提升短函数可读性 高阶应用 函数变量/回调:实现行为注入 闭包:封装状态,解决全局变量污染问题(如自增计数器案例) 匿名函数:即时定义,适用于临时逻辑 实践价值 闭包通过环境封装实现状态记忆 函数式特性支撑模块化开发 (全文150字,涵盖核心概念和实用
2025-06-18 09:43:55
591
原创 Go 语言中的数组、切片、map 和list
Go语言集合类型解析:数组与切片 摘要:本文详细介绍了Go语言中的两种核心集合类型:数组和切片。数组是一种固定长度、元素类型相同的数据结构,长度是其类型的一部分,不同长度的数组属于不同类型。文章讲解了数组的定义、初始化与遍历方法,并对比了数组的比较规则和多维数组的使用。切片作为Go语言的动态数组,是对底层数组的引用,具有更灵活的特性。文章重点剖析了切片的定义方式及其与数组的关键区别,为开发者提供了两种数据结构的选择指导。通过具体示例展示了数组和切片的初始化、赋值及遍历操作,帮助读者掌握这两种重要数据容器的使
2025-06-18 09:42:07
886
原创 Go 语言中的条件判断和for 循环
Go语言控制结构摘要 本文介绍了Go语言的基本控制结构,包括条件判断和循环语句。主要内容: if条件判断 基础语法无需括号但必须有大括号 支持复合条件(&&/||)和嵌套if结构 推荐使用if-else if处理互斥条件而非多个独立if for循环 Go仅提供for循环,但可模拟while 标准形式包含初始化、条件和后置语句 省略部分可形成无限循环或条件循环 示例演示了1-100累加和九九乘法表实现 代码规范 强调左大括号与关键字同行 提倡使用最简洁的实现方式 提供可视化代码示例辅助理解 这
2025-06-17 21:45:51
1070
1
原创 Go 语言中的字符串基本操作
这篇文章详细介绍了Go语言中字符串处理的关键知识点。主要内容包括: 字符串长度计算:通过len()获取字节数,使用[]rune转换获取真实字符数,特别适用于处理中英混合字符串。 转义符使用:讲解\转义符和反引号原生字符串的应用,以及常见转义序列如\n、\t的用法。 格式化输出:比较字符串拼接与fmt.Printf/Sprintf的优劣,展示格式化输出的便捷性和高效性。 文章通过代码示例直观展示了不同场景下的最佳实践,对处理多语言文本和控制输出格式有重要指导意义。
2025-06-17 10:55:14
925
原创 Go 语言的基础数据类型
Go语言基础数据类型分为布尔类型、数值类型和字符串类型。布尔类型(bool)只有true/false两个值;数值类型包括整数(int8/int16等)、浮点数(float32/float64)和字符类型(byte/rune),其中byte用于ASCII字符,rune处理Unicode字符;字符串(string)是只读字符序列。类型转换必须显式进行,数值转换采用T(v)语法,字符串与数值互转需使用strconv包的Atoi/Itoa函数。更复杂场景可使用Parse系列(字符串转其他类型)和Format系列(其
2025-06-17 10:54:03
803
原创 Go 语言中的变量和常量
本文介绍了Go语言中变量和常量的核心概念。变量部分阐述了静态语言的类型特性、多种声明方式(标准声明、初始化声明、短变量声明)、全局与局部变量作用域,以及使用注意事项(零值、变量冲突等)。常量部分讲解了const关键字的基本用法、类型定义、命名规范、分组定义特性,并重点解析了iota关键字在枚举定义中的递增规则和表达式应用。文章通过具体代码示例,帮助读者掌握Go语言中变量和常量的规范用法及最佳实践。
2025-06-16 13:17:26
1150
原创 GO 开发环境搭建
本文介绍了Go语言开发环境的安装配置及入门指南。首先详细讲解了Go的下载安装步骤,包括官网地址和安装验证方法。接着推荐了两款主流开发工具:VS Code(免费轻量)和GoLand(专业收费),对比分析了它们的功能特点。然后通过创建第一个Go项目演示了基础程序结构,重点讲解了go.mod和main.go文件的作用。最后以"Hello World"为例,说明了Go程序的基本编写规范,强调必须使用package main和func main作为程序入口。文章提供了图文并茂的操作指引,适合Go语
2025-06-16 13:15:59
957
原创 Spring Boot 3.0 整合数据库连接池 Druid
这篇文档主要介绍了如何在Spring Boot 3.0中整合数据库连接池Druid。
2024-10-24 08:34:24
660
原创 Spring Boot 3.0 集成 knife4j 居然这么简单?你只需知道这几步!
这篇文档是关于如何在Java 21 环境下使用Spring Boot和Maven配置Swagger V3(OpenAPI 3)来生成API文档的指南。
2024-10-21 02:16:16
532
原创 Gradle 进阶学习 之 build.gradle 文件
build.gradle 是什么? 想象一下,你有一个大型的乐高项目,你需要一个清单来列出所有的乐高积木和它们如何组合在一起。在软件开发中,build.gradle 就是这个清单,它告诉计算机如何构建(组合)你的软件项目。
2024-05-04 11:12:09
4669
原创 Gradle 进阶学习之 Gradle插件
使用插件是现代自动化构建工具中一个非常重要的概念,Gradle 作为其中一个流行工具,通过插件提供了多种便利。以下是使用插件的几个主要原因:
2024-05-02 11:42:46
1458
2
原创 Gradle 进阶学习之 Dependencies 【依赖】
在Gradle中,依赖管理是一个非常重要的部分,它允许你指定项目所需的各种库和模块。你的案例中提到了三种常见的依赖类型:项目依赖、本地JAR依赖和远程仓库的直接依赖。下面我将分别解释这三种依赖类型,并提供相应的配置方法。
2024-04-20 20:09:19
5454
原创 Gradle 进阶学习之 文件操作
Gradle 提供了强大的文件操作功能,包括创建和操作归档文件。通过定义任务和使用 Gradle 提供的插件,你可以轻松地将项目打包成所需的格式,并执行各种文件操作。这些功能对于自动化构建和持续集成流程至关重要。
2024-04-20 19:19:22
1765
原创 Gradle 进阶学习 之 Task
Task就像是Gradle项目中的小小机器人,每个机器人都有特定的工作要做,而且它们还可以根据项目的需要调整自己的工作方式。通过组合不同的Task,你可以构建起复杂的构建流程。
2024-04-20 17:14:11
1726
原创 Groovy
Groovy 是一种运行在 Java 虚拟机(JVM)上的动态语言,它以其简洁的语法和强大的功能而受到开发者的青睐。作为一种能够与 Java 无缝交互的语言,Groovy 继承了 Java 的许多优点,并且在某些方面进行了扩展和改进,使得开发者能够更加高效地编写代码。:Groovy 的设计哲学之一是减少模板化的代码和重复的模式,使得代码更加简洁。与 Java 相比,完成相同功能的 Groovy 代码通常更短,这使得代码更容易编写和维护。:Groovy 支持动态类型,这意味着开发者无需显式声明变量类型。
2024-04-05 18:20:36
1897
原创 Gradle 入门
Gradle 是一款先进的构建自动化工具,由 Google 专为 Java 应用开发而设计。它基于 JVM,提供了一种灵活、可扩展的构建系统。Gradle 支持多种第三方仓库,如 Maven 和 JCenter,便于依赖管理。其最大的特点在于简化和优化了依赖项的处理,采用传递性依赖管理机制,避免了传统 XML 配置文件的复杂性。取而代之的是,Gradle 使用Groovy 或 Kotlin 等现代编程语言编写简洁的构建脚本,大幅提高了构建过程的灵活性和效率。
2024-03-20 00:49:53
1433
2
原创 Spring之 国际化:i18n
国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国际化是通过配置文件来实现的,假设要支撑两种语言,那么就需要两个版本的配置文件。
2024-01-03 20:07:10
5794
1
原创 spring 之资源操作:Resources
1.接口的实现类可以获取资源的Resource实例。它是用于加载不同类型资源的抽象接口,提供了一种统一的方式来访问各种资源,如文件、类路径资源、URL等。通过,可以轻松地获取和操作应用程序中的资源。2.实现了接口的类实例将获得对的引用。这意味着它们可以在运行时通过来访问资源。这对于将资源加载能力注入到特定的类中非常有用,使它们能够以一种更灵活的方式处理资源。:这个方法用于根据资源位置获取Resource实例。Resource可以表示各种资源,例如文件、URL、类路径资源等。是。
2024-01-02 21:20:35
2299
1
原创 spring 之 事务
什么是事务的传播行为?在service类中有a()方法和b()方法,a()方法上有事务,b()方法上也有事务,当a()方法执行过程中调用了b()方法,事务是如何传递的?合并到一个事务里?还是开启一个新的事务?这就是事务传播行为。②测试/*** 结账* @param bookIds 购买的书籍id* @param userId 用户id*/import com// 循环购买书籍 for(Integer bookId : bookIds) {
2024-01-01 17:50:09
1056
1
原创 3、Spring 之IOC 容器 详解
IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。
2023-09-03 18:58:38
2225
原创 2、Spring6 入门
1、环境要求JDK:Java17+(Spring6要求JDK最低版本是Java17)Maven:3.6+Spring:6.0.2
2023-08-30 13:55:41
409
原创 1、Spring是什么?
Spring 自诞生以来备受青睐,一直被广大开发人员作为 Java 企业级应用程序开发的首选。时至今日,Spring 俨然成为了 Java EE 代名词,成为了构建 Java EE 应用的事实标准。自 2004 年 4 月,Spring 1.0 版本正式发布以来,Spring 已经步入到了第 6 个大版本,也就是 Spring 6。
2023-08-29 10:15:30
2191
原创 分布式事务理论基础
什么是分布式事务。在分布式系统下一个业务,它跨越了多个服务和数据源。每一个服务都可以认为是一个分支事务,而我们要保证的是所有分支事务最终状态一致。要么大家都成功,要么大家都失败。那么这样的一种事务就是分布式事务了。那为什么分布式事务出现了问题?就是因为各个服务之间,或者说各个分支事务之间互相是感知不到的,大家各提交各的,那将来呀,就无法去回滚,就导致状态无法一致。
2023-08-22 07:47:29
457
原创 Sentinel 授权规则&&规则持久化
授权规则是对请求者的身份做一个判断。你有没有权限来访问我?那就有人可能会说这个功能,好像以前我们在学习微服务的时候讲过网关他不就是把门的吗?所有请求都要经过网关,网关去做身份的认证,看你有没有权限访问,我怎么到这儿又要整一个呢?所有请求经过网关路由的微服务,这个时候网关当然可以对请求做身份的认证了。但是万一啊,你们公司里出了个内鬼,他把你们微服务的地址泄露给了外边的那些不怀好意的人。
2023-03-19 16:01:42
1590
原创 Sentinel 隔离和降级
限流其实是对服务故障的一种预防措施,但是一旦服务已经出现了故障。它就很容易把这些故障传递给其他依赖于它的服务,那这样很容易就产生了雪崩了。所以我们就需要用线程隔离,还有降低熔断这些手段啊,去避免接连失败,避免雪崩。所以今天这篇博客啊,我们就来看一下sentinel如何去实现线程隔离和降级熔断。
2023-03-18 22:31:10
1502
原创 微服务保护 -- 初识 Sentinel(雪崩问题,快速入门Sentinel)
首选我们来了解一下雪崩问题及其解决方案,我们学习这个微服务保护,其实就是为了去应对类似于雪崩问题这样的服务故障。
2023-02-27 10:36:55
1114
原创 MongoDB入门(特点,使用场景,命令行操作,SpringData-MongoDB)
哎呀,我去,这个MongoDB 这么牛的吗?那它为什么这么牛?我们就要看看它的特点。
2023-01-26 20:32:15
3124
原创 14 Python 办公自动化
大家好,接下来我们来学习如何使用python 实现自动化办公,而不需要我们人工,或者说尽量减少我们人工的参与。自动化办公在我们的生活中非常的常见,让我们看看通过本博客你可以学习到python哪些自动化操作。
2023-01-03 01:09:28
2394
1
原创 什么是JWT及在JAVA中如何使用?
JSON Web token简称JWT, 是用于对应用程序上的用户进行身份验证的标记。也就是说, 使用 JWTS 的应用程序不再需要保存有关其用户的 cookie 或其他session数据。此特性便于可伸缩性, 同时保证应用程序的安全
2022-10-24 07:35:14
4685
原创 SpringCloud 整合 Dubbo
Dubbo有两种使用方式:1、基于SOA的思想,将一个单体架构拆分为web层和Services层,然后web和services借助Dubbo框架进行数据交互。2、SpringCloud 整合Dubbo。
2022-10-07 15:22:45
8937
跨年烟花代码 html + js + css
2022-12-28
SpingBoot整合Dubbo分布式框架Demo
2022-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人