自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 深度解析Golang中为什么interface是引用类型

在Go语言中,将interface设计为引用类型是为了实现更灵活、更动态的类型系统。通过引用类型,interface可以容纳各种类型的值,同时在内存利用和性能方面表现出色!

2024-01-29 16:19:55 1106

原创 事务的特性(ACID、BASE)

在软件开发中,事务管理是至关重要的一部分。它确保了数据的一致性和可靠性,同时也提高了系统的可靠性和性能。接下来,我们将深入了解事务的特性,包括ACID属性、隔离级别、并发控制等。

2024-04-23 21:38:16 737 1

原创 MySQL二阶段和三阶段提交

通过本文的介绍,大家应该对MySQL中的二阶段和三阶段提交有了更深入的理解。在实际的分布式系统设计中,选择适合的事务协议对于系统的性能、可用性和一致性都有重要影响,希望能够帮助大家更好地理解和应用这些事务管理协议。

2024-04-15 23:25:31 763 1

原创 Go Vet:提高Go代码质量的工具

Go Vet是Go语言提供的一个静态分析工具,用于检查Go代码中的常见错误和潜在问题。它可以在编译之前对代码进行检查,帮助开发者及时发现并修复问题。Go Vet是一个非常有用的工具,可以帮助开发者发现并修复代码中的潜在问题,提高代码质量和可维护性。通过合理使用Go Vet,开发者可以编写出更加健壮和可靠的Go程序。

2024-04-15 17:42:43 1104

原创 深入理解CAS(比较并交换)

CAS是一种原子操作,常用于并发编程中,用于实现非阻塞算法。它的基本原理是在并发环境下对共享变量进行原子更新,操作包括三个步骤:比较内存中的值和预期值,如果相等则执行更新操作,否则不执行任何操作。CAS(比较并交换)是现代并发编程中的重要概念之一,它提供了一种高效、非阻塞的方式来实现共享资源的访问和更新。尽管CAS具有许多优点,但也存在一些缺点,特别是在处理ABA问题和循环开销方面。然而,在许多情况下,CAS仍然是一种非常有用的同步原语,可以帮助我们在编写代码时实现高性能、线程安全的并发程序。

2024-03-23 10:20:32 363

原创 一文带你了解事务

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。​ 以上介绍了数据库事务的概念、特性和实现机制,以及隔离级别与并发控制的相关内容,希望大家对数据库事务有更深入的理解,能够更好地应用于实际的数据库设计与开发中,提高系统的性能和稳定性!

2024-03-22 20:53:35 838

原创 Go 语言指针

在 Go 语言中,指针是一种特殊的数据类型,它存储了一个变量的内存地址。指针提供了直接访问和修改变量值的能力。本文介绍了 Go 语言指针的基本概念、操作方法以及在实际工作中的应用场景。深入理解指针的使用方法对于开发者来说是至关重要的,希望本文能够帮助读者更好地理解和应用指针,提高代码的效率和性能。

2024-03-01 16:03:20 639 1

原创 深入理解Go语言中的Channel与Select

Channel 是 Go 语言中用于协程之间通信的管道。它允许协程之间通过发送和接收消息来进行通信,并提供了一种同步机制,用于控制协程的执行顺序。Select 是 Go 语言中的一个控制结构,用于处理多个 Channel 上的操作。它类似于 switch 语句,但是用于 Channel 的接收操作。Channel 和 Select 是 Go 语言中非常强大和灵活的并发编程工具,它们为协程之间的通信和同步提供了强大的支持。

2024-02-21 13:44:52 1551

原创 如何保证接口幂等性?

接口幂等性是指无论调用多少次,结果都是一致的,不会因为多次调用而产生副作用。在分布式系统中,网络通信可能会出现丢包、超时、重传等问题,导致客户端多次调用同一接口。如果接口不具备幂等性,可能会导致数据不一致、资源浪费甚至系统崩溃等严重后果。保证接口幂等性是构建可靠、稳定系统的重要步骤。通过采用唯一标识符、Token 等策略,结合实际业务场景和代码实例,可以有效地确保接口的幂等性,提高系统的可靠性和稳定性。

2024-02-21 13:28:26 588

原创 深入理解Golang中的Options模式

选项模式是一种基于函数参数的设计模式,它允许用户在调用函数时传递一系列选项来自定义函数的行为。在Golang中,选项模式通常通过函数选项(Functional Options)或结构体选项(Struct Options)来实现。

2024-02-20 13:26:52 1122

原创 Go Context -- 管理请求的上下文信息

在Go语言中,管理请求的上下文信息对于构建可靠的并发程序至关重要。context包为我们提供了一种优雅的方式来传递请求的取消信号、超时信息和请求范围的值。接下来将深入探讨Go中的context包,包括其基本概念、用法、实际应用场景和最佳实践,以帮助大家更好地利用context进行请求管理。

2024-02-08 17:30:35 1000 2

原创 解析Go内存逃逸

在Go中,内存逃逸指的是在编译时无法确定变量的生命周期,因而无法在栈上分配内存,只能通过堆来分配内存。在一个函数内定义的变量,如果在函数外部仍然被引用,就会发生内存逃逸。x := 10return &x // x 逃逸到堆上在上面的例子中,x是在escape函数中定义的局部变量,但由于返回了指向它的指针,x的生命周期逃逸到了main函数之外,因此编译器将其分配在堆上。

2024-02-04 17:44:38 1368 2

原创 一文了解Go泛型

泛型是一种编程语言的特性,允许在编写代码时不指定具体的数据类型,而在运行时动态确定。这种特性使得我们能够编写更加灵活、通用的代码,而不必为每种数据类型编写相似的逻辑。

2024-02-03 14:18:09 1638

原创 深度解析Go字符串

Go语言中的字符串是一种不可变的字节序列,它在编程中扮演着重要的角色。接下来将深入探讨Go字符串的基本概念、常见操作、性能优化,以及最佳实践,旨在帮助大家更好地理解和利用Go语言中的字符串。

2024-02-03 14:16:58 1257

原创 深入Go反射

反射是指在程序运行时动态地检查、获取和操作程序的信息。在Go中,反射的主要操作由reflect包提供。通过反射,我们可以在不知道类型的情况下检查和修改变量,调用方法,以及探索结构体的字段等。Go语言中的反射是一项强大的特性,通过它我们可以在运行时动态地检查和操作变量、方法、结构体等信息。本文通过深入浅出的方式介绍了反射的基础概念,以及如何在实际应用中运用反射解决问题。通过清晰的例子和代码演示,读者可以更全面地理解并熟练运用Go的反射机制。

2024-02-02 13:56:46 1136

原创 适用在Windows、Linux和macOS环境下打包Go应用程序的详细步骤和命令

本文详细介绍了如何在Windows、Linux和macOS环境下构建和打包Go应用程序。通过简单的示例,我们展示了每个步骤的具体命令和操作,包括本地构建、交叉编译以及一些常用的打包工具。在实际开发中,根据项目需求选择适当的构建和打包方式是很重要的。Go语言的设计理念和工具链确保了开发者能够方便地在不同平台上构建和部署应用程序,提高了开发的便捷性和灵活性。希望以上内容能够帮助大家更好地理解和应用Go语言的构建和打包过程!

2024-02-02 13:04:55 4053

原创 Golang切片与数组

在Go语言中,数组是具有相同数据类型的元素的有序集合。数组的长度是固定的,且在创建后无法更改。var arr [5]int // 声明一个包含5个整数的数组切片是对数组的一层抽象,它是一个引用类型,由三个部分组成:指针、长度和容量。var slice []int // 定义一个整型切片通过解析Golang中的切片与数组,我们了解了它们的定义、初始化、区别以及实际应用。切片的动态增长特性使其在容器和数据封装方面非常强大,而数组则适用于大小固定且性能要求较高的场景。

2024-02-01 14:23:33 1417

原创 什么是Golang中的包循环问题?如何规避?

Go语言的设计原则之一是简洁性和可读性。禁止包循环是为了简化编译器的工作,提高代码的可维护性。在实际开发中,避免包循环的方法包括使用接口、依赖倒置原则和良好的规划。通过实际开发案例,我们演示了如何避免包循环,通过引入接口和依赖倒置原则,构建清晰而有序的包依赖关系。好的规划和设计有助于提高代码的可维护性和可扩展性,使得系统更加健壮和易于理解。希望本文对大家在Golang项目中避免包循环和进行好的规划提供了实用的帮助!

2024-02-01 13:55:43 917

原创 直观了解Golang中new与make的区别

用于值类型,返回指针。用于切片、映射和通道等引用类型。new和make是Golang中用于创建对象的两个关键字,它们分别适用于不同的数据结构。new主要用于值类型的对象,返回一个指向该类型的指针;而make用于切片、映射和通道等引用类型的对象,返回被初始化的实例!

2024-01-31 12:57:13 553

原创 Go语言中的闭包

闭包是Go语言中一个强大而灵活的特性,允许函数保留对外部作用域中变量的引用,形成一个封闭的作用域。同时闭包可以用于保留状态、参数化函数、延迟执行和实现函数式选项等多种场景。然而,在使用闭包时需要注意变量生命周期和并发安全性,以避免潜在的问题。通过深入理解和熟练运用闭包,可以写出更具灵活性和可读性的Go语言代码。希望本文对大家在理解和运用闭包时有所帮助。如果文章有什么不正确的地方请指出。

2024-01-31 12:43:10 784

原创 Golang map与sync.map的异同

sync.Map是专为并发安全设计的数据结构,内置了锁机制,无需额外的同步手段即可在并发环境中安全地进行读写操作。map和sync.Map是Golang中用于存储键值对的两种不同数据结构,各有其适用的场景。通过实际案例的对比,我们深入了解了它们在并发安全性、性能和使用场景上的异同。在实际应用中,选择适当的数据结构将对程序的性能和可维护性产生重要影响!

2024-01-30 23:48:03 546

原创 一文带你了解Golang Map

map是一种无序的键值对集合,其中每个键必须是唯一的。在Golang中,map// 声明一个空的map// 使用make函数创建一个空的map其中,keyType和valueType分别代表键和值的数据类型。map是引用类型,可以通过make函数初始化,也可以直接使用var关键字声明。map是Golang中强大的数据结构,用于处理键值对的集合。通过深入了解map的基本概念、操作和最佳实践,我们可以更有效地使用它。在实际应用中,要注意并发安全性、性能优化等方面,以确保代码的健壮性和效率。

2024-01-30 23:41:23 365

原创 Go语言命令大全

Go语言的命令行工具涵盖了构建、测试、格式化、依赖管理等多个方面,为开发者提供了一套强大而高效的工具集。合理使用这些命令,可以提高开发效率,确保代码质量,使得Go语言在日常开发中更加得心应手。

2024-01-29 14:39:05 725

原创 深入Golang 中的 nil

Golang(或Go)是一门由Google开发的编程语言,以其简洁性、高效性和并发性而受到广泛关注。在Golang中,nil是一个重要的概念,用于表示零值或缺失值。本文将深入介绍和解析nil的概念,探讨其在Golang中的应用、影响以及实际案例中的使用。

2024-01-28 14:55:55 552

原创 MySQL内置函数

以上介绍的MySQL内置函数仅是冰山一角,MySQL还提供了许多其他丰富而强大的函数,适用于各种数据库操作场景。在实际应用中,根据需求选择合适的函数可以提高查询效率和开发效率。MySQL作为一款强大的关系型数据库管理系统,提供了丰富的内置函数,涵盖了字符串、数值、日期、聚合等多个方面,本人也在实际开发中深有体会。下面将对MySQL的常用内置函数进行全面解析,并结合实际案例进行说明。返回一个0到1之间的随机数。将日期格式化为指定的字符串。用于提取字符串的子串。根据条件返回不同的值。返回一个数的绝对值。

2023-12-07 11:58:15 50

原创 Go语言中的iota详解

iota是Go语言中的一个有趣而强大的特性,广泛应用于常量定义、位操作等场景。了解并熟练使用iota将会使我们的代码更为简洁、直观,提高代码的可读性和可维护性。在实际开发中,充分发挥iota的优势,将为代码编写带来更多便利。

2023-11-18 15:59:51 735

原创 ArrayList源码解读

记录第一次简单的ArrayList源码解读

2023-07-13 23:17:52 90

原创 Java运算符

该程序使用到了短路逻辑运算符(&&),首先判断 a<4 的结果为 false,则 b 的结果必定是 false,所以不再执行第二个操作 a++<10 的判断,所以 a 的值为 5。该程序使用到了短路逻辑运算符(&&),首先判断 a<4 的结果为 false,则 b 的结果必定是 false,所以不再执行第二个操作 a++<10 的判断,所以 a 的值为 5。Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

2023-06-10 12:22:00 245 1

原创 解决服务器时间与实际时间相差8小时问题

​。

2023-06-10 12:20:13 2418

原创 git如何初始化本地代码提交到远程仓库?

其中,-u参数表示将本地master分支与远程master分支关联起来,后续可以直接使用git push命令推送代码。其中,-m参数后面的内容是提交的说明信息,可以根据实际情况修改。至此,本地项目已经成功初始化Git并提交到已创建的仓库地址。其中,是远程仓库的地址。

2023-06-10 12:19:39 2413

原创 LeetCode 348周赛 第二题 半有序排列

你可以执行多次下述操作,直到将。题意和代码都挺简单的 直接上代码。如果排列的第一个数字等于。的整数序列,其中包含从。所需的最小操作次数。的每个数字恰好一次。

2023-06-10 12:15:18 44

原创 LeetCode 348周赛 第一题 最小化字符串长度

第348周赛 第一题 最小化字符串长度

2023-06-10 12:13:47 63

原创 [每日一题] 菜鸡写LeetCode第五十八题 难度简单

[每日一题] 菜鸡写LeetCode第五十八题 难度简单

2022-10-06 15:14:34 402

原创 [每日一题] 菜鸡写LeetCode第三十五题 难度简单

[每日一题] 菜鸡写LeetCode第三十五题 难度简单

2022-10-06 15:13:41 455

原创 [每日一题] 菜鸡写LeetCode第二十七题 难度简单

[每日一题] 菜鸡写LeetCode第二十七题 难度简单

2022-10-06 15:12:35 74

原创 [每日一题] 菜鸡写LeetCode第二十六题 难度简单

[每日一题] 菜鸡写LeetCode第二十六题 难度简单

2022-10-06 15:11:47 93

原创 [每日一题] 菜鸡写LeetCode第二十一题 难度简单

[每日一题] 菜鸡写LeetCode第二十一题 难度简单

2022-10-06 15:10:19 388

原创 [每日一题] 菜鸡写LeetCode第二十题 难度简单

[每日一题] 菜鸡写LeetCode第二十题 难度简单

2022-10-06 15:02:52 77

原创 [每日一题] 菜鸡写LeetCode第十四题 难度简单

[每日一题] 菜鸡写LeetCode第十四题 难度简单

2022-09-15 00:33:19 100

原创 [每日一题] 菜鸡写LeetCode第十三题 难度简单

[每日一题] 菜鸡写LeetCode第十三题 难度简单

2022-09-15 00:32:48 119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除