- 博客(215)
- 资源 (7)
- 收藏
- 关注

原创 一个小时快速走进Kubernetes的世界
大家好!今天我们花一个小时快速走进Kubernetes的世界。我们先通过一个真实场景理解K8s的价值:假设我们要部署一个电商网站,需要处理突发流量、保证服务不中断、管理数十台服务器…传统运维方式会遇到部署慢、扩容难等问题,而K8s就像智能机器人管家,帮我们自动化处理这些复杂任务。
2025-04-03 09:33:33
697

原创 MySQL8.0之MGR单主模式部署(一)
MGR单主模式部署一、服务器设置1.1环境准备1.1.1服务器规划:IP 主机名 数据库版本信息 server-id 192.168.136.11 mgr_node1 MySQL-8.0.24 101 192.168.136.12 mgr_node2 MySQL-8.0.24 102 192.168.136.13 mgr_node3 MySQL-8.0.24 103 1.1.2关闭防火墙# 关闭防火
2021-05-06 18:50:17
736

原创 部署一套完整的企业级K8s集群
部署一套完整的企业级K8s集群一、准备环境服务器要求:• 建议最小硬件配置:4核CPU、4G内存、50G硬盘• 服务器最好可以访问外网,会有从网上拉取镜像需求,如果服务器不能上网,需要提前下载对应镜像并导入节点软件环境:软件 版本 操作系统 CentOS7.8_x64 Docker 19+ Kubernetes 1.20 服务器整体规划:角色 IP 其他单装组件 k8s-master1 192.168.1.1 d
2021-04-26 10:04:52
2473
3
原创 Kubernetes 网络排障完全指南:从崩溃到畅通的终极自救手册
现象可能原因解决方案Pod 无法解析集群服务CoreDNS 异常检查 DNS Pod 状态和日志跨节点 Pod 无法通信CNI 插件故障或防火墙拦截验证 CNI 端口和路由规则外部域名解析失败CoreDNS 上游配置错误检查 CoreDNS 的 forward 配置。
2025-04-03 09:18:32
520
原创 领导让我把YAML发布的微服务改成Helm Chart,怎么办?别慌!看完这篇轻松搞定!
🚀 领导让我把YAML发布的微服务改成Helm Chart,怎么办?别慌!看完这篇轻松搞定! 🔧Helm三大绝招:1️⃣ 模板化:一套配置走多环境2️⃣ 版本控制:轻松回滚到任意版本3️⃣ 依赖管理:MySQL/Redis等中间件一键安装HelmChart图解:Step 2:设计目录结构(关键!)Step 3:注入动态变量(示例)Step 4:模板转换技巧原始YAML:Helm化后:Step 5:一键安装🔥 核心改造 | 六大关键模块处理1. 服务路由(Ingress)
2025-04-02 09:22:56
256
原创 《从0到100:DevOps全栈实战手册》第二章:GitLab全栈教学——2.1GitLab简介与社区版安装
立即部署你的企业级GitLab平台,构建安全可靠的私有化代码仓库!欢迎在评论区交流讨论 💬。通过CGroup限制CPU/内存使用,避免容器资源争抢导致宿主机雪崩。建议预留20%资源缓冲。Docker部署需配合宿主机HA机制(如Keepalived)实现故障转移。,提供社区版(CE)和企业版(EE),适用于个人开发者、中小团队及大型企业。GitLab作为核心DevOps平台,需保障。,覆盖从代码开发到部署运维的全流程。SSH端口建议与宿主机隔离。即可登录(用户:root)GitLab 是一个。
2025-04-01 13:51:58
741
原创 第十二章 标准库——8.context包
context包是Go语言中处理并发编程中常见问题的强大工具。通过理解Context接口的方法以及如何使用context包提供的主要方法,我们可以更加优雅和高效地管理并发任务。
2025-01-11 11:22:11
307
原创 第十二章 标准库——7.net包
本文详细讲解了如何使用Go语言的net包创建HTTP服务和RPC服务。通过示例代码,读者可以了解到如何处理HTTP请求、如何定义和注册RPC服务以及如何创建RPC客户端并调用远程方法。这些知识点是Go语言网络编程的基础,希望对读者有所帮助。
2025-01-11 11:21:37
622
原创 第十二章 标准库——6.os包
通过本文的学习,我们掌握了Go语言os包的基本使用方法,包括命令行参数处理、环境变量操作、系统信息获取、shell命令执行以及文件操作。这些功能在实际开发中非常常用,能够帮助我们更好地与操作系统进行交互。
2025-01-11 11:21:05
201
原创 第十二章 标准库——5.strcov包
strconv包是Go语言标准库中的一个包,用于实现基本数据类型与字符串之间的转换。它提供了数字类型与字符串、布尔类型与字符串之间的转换函数,使得在编程过程中能够方便地在这些数据类型之间进行转换。strconv包是Go语言中用于数字和字符串转换的重要工具。它提供了丰富的函数来满足不同场景下的转换需求。
2025-01-11 11:20:31
318
原创 第十二章 标准库——4.strings包
本文详细介绍了Go语言strings包中的常用函数,包括字符串的分割、合并、查找、替换、修剪以及大小写转换等操作。
2025-01-11 11:19:55
221
原创 第十二章 标准库——3.time包
time包是Go语言标准库中的一个包,提供了时间处理和操作的函数。它主要用于获取当前时间、格式化日期和时间、解析日期和时间、增加和减少时间、以及暂停程序的执行等。
2025-01-11 11:19:23
284
原创 第十二章 标准库——2.fmt包
fmt包是Go语言标准库中的一个包,提供了格式化输入输出的函数。它主要用于控制台的输入输出,包括打印输出到控制台和从控制台读取输入。
2025-01-07 14:09:32
352
原创 第十二章 标准库——1.flag包
flag包是Go语言标准库中的一个包,用于实现命令行参数的解析。它允许开发者定义命令行参数,并在程序启动时自动解析这些参数,将它们的值赋给程序中对应的变量。
2025-01-07 14:09:01
286
原创 第十一章 测试——4.数据库测试
本文介绍了在Go语言中进行数据库测试的方法,包括原生SQL测试、sqlmock库的使用以及GORM的使用与测试。通过这些方法,我们可以方便地编写和运行数据库测试,确保应用程序与数据库交互逻辑的正确性。
2025-01-07 14:07:28
293
原创 第十一章 测试——2.性能测试
本文介绍了Go语言中的性能测试框架及其基本用法和高级命令。通过示例代码和性能分析,读者可以更好地理解和掌握Go语言性能测试的技巧和方法。
2025-01-07 14:06:12
313
原创 第十一章 测试——1.单元测试
本文介绍了Go语言单元测试的基本概念、编写方法以及一些高级技巧。通过编写单元测试,可以确保代码的正确性和稳定性。同时,结合断言库、批量测试和基准测试等高级技巧,可以进一步提高测试效率和代码质量。
2025-01-07 14:05:38
698
原创 第十章 包管理——2.依赖管理
Go Modules是Go语言从1.11版本开始引入的依赖管理方案,旨在解决之前依赖管理方案中存在的版本管理问题。从Go 1.14版本开始,官方推荐在生产环境中使用Go Modules,而在Go 1.16版本中,Go Modules默认开启。本文详细介绍了Go语言的依赖管理机制,包括Go Modules的使用、GOPROXY和GOPRIVATE的设置,以及依赖包的引入和升级。
2025-01-07 14:05:03
371
原创 第十章 包管理——1.包引用
包的基本概念Go语言中的包可以理解为一个存放.go文件的文件夹,通常这个文件夹名也是这个包的名字。包是一种高级的代码复用方案,通过包可以将相关的代码组织在一起,方便管理和使用。定义包定义一个包需要在.go文件的第一行使用package关键字,后跟包名。这里的mypackage就是包名,需要注意的是,包名不能包含符号。本文详细介绍了Go语言中包的使用,包括包的定义、引用、可见性以及初始化函数等相关知识,并通过示例帮助读者更好地理解和掌握所学内容。
2025-01-07 14:04:26
307
原创 第九章 泛型——1.泛型介绍
Go语言的泛型特性为开发者提供了更加灵活和可重用的代码编写方式。通过使用泛型,可以减少重复代码,提高代码的可读性和可维护性。然而,在使用泛型时,也需要更加注意其限制和注意事项,以确保代码的正确性和可读性。
2025-01-07 14:03:21
321
原创 第八章 并发编程——5.并发安全
并发安全是Go语言并发编程中的重要课题。通过使用互斥锁、读写锁、WaitGroup、Once和并发安全的Map等同步机制,我们可以有效地避免数据竞争和保证程序的正确性。
2025-01-07 14:02:48
222
原创 第八章 并发编程——4.select多路复用
select语句是Go语言并发编程中非常重要的一个特性,它允许goroutine在多个通信操作中进行选择,从而实现了多路复用。通过合理使用select语句,我们可以实现诸如超时检测、优先处理等复杂功能。
2025-01-07 14:02:18
348
原创 第八章 并发编程——3.channel使用
通道是Go语言中实现并发编程的重要工具,它允许不同的goroutine之间进行安全、高效的数据通信。通过掌握通道的基本概念、类型、操作以及高级用法,开发者可以编写出更加健壮、可维护的并发程序。
2025-01-07 14:01:43
226
原创 第八章 并发编程——2.goroutine使用
定义Goroutine是Go语言中的协程,是Go语言支持并发的核心。在一个Go程序中,可以同时创建成百上千个goroutine。特点Goroutine的栈大小初始很小(一般为2KB),可以根据需要动态扩展。Goroutine由Go的运行时(runtime)调度,而不是由操作系统内核调度,因此切换开销较小。每个Go程序都至少包含一个goroutine,即主goroutine(main goroutine),在程序启动时自动创建。
2025-01-07 14:01:09
401
原创 第八章 并发编程——1.并发编程介绍
Go语言的并发编程模型提供了高效、简洁的方式来处理并发任务。通过goroutine和channel,我们可以轻松地实现任务的并发执行和通信。
2025-01-07 14:00:35
725
原创 第七章 反射——2.结构体反射
通过结构体反射,我们可以在运行时动态地获取和操作结构体的字段和方法。这在处理动态数据结构、实现序列化/反序列化等功能时非常有用。
2025-01-07 13:59:58
363
原创 第七章 反射——1.reflect包
反射是Go语言的一种强大特性,它允许我们在运行时动态地处理类型。通过reflect包,我们可以获取类型信息、操作变量的值等。但需要注意的是,反射会带来一定的性能开销,并且可能会使代码变得难以理解和维护。因此,在使用反射时应该谨慎考虑其必要性和可能带来的影响。
2025-01-07 13:59:28
157
原创 第六章 接口——3.空接口和接口值
空接口是没有定义任何方法的接口,可以存储任意类型的值。接口值是一个包含具体类型和该类型值的复合类型。我们可以使用类型断言来检测接口值所持有的具体类型,并获取其值。
2025-01-07 13:58:56
117
原创 第六章 接口——1.接口类型
接口是Go语言中非常重要的一个特性,它提供了一种抽象的方式来定义对象的行为。通过接口,我们可以实现代码的解耦和更高的灵活性。在Go语言中,接口分为基本接口和一般接口两种类型,它们分别适用于不同的场景。
2025-01-07 13:55:50
404
原创 第五章 类型——3.结构体方法
在Go语言中,结构体(struct)是一种重要的自定义数据类型,它允许我们将多个任意类型的变量组合在一起,形成聚合数据类型。除了定义结构体之外,Go语言还允许我们为结构体类型定义方法(method),使得我们可以为特定的结构体类型添加函数。在Go语言中,方法为结构体类型定义函数,并使用方法接收者(receiver)来绑定方法和结构体实例。方法接收者可以是值接收者或指针接收者。是接收者的类型(结构体类型或指向结构体类型的指针),是接收者变量名(可以省略,但在方法体内可以使用),类型的匿名字段,因此。
2025-01-03 16:53:36
289
原创 第五章 类型——2.结构体
在Go语言中,使用type和struct关键字来定义结构体类型。...其中,TypeName表示自定义结构体的名称,Field1Field2等表示结构体的字段名,Type1Type2等表示字段的具体类型。示例Id intDel bool在上述示例中,我们定义了一个名为UserId(整型)、Name(字符串型)、Email(字符串型)、Del(布尔型)和Parent(指向User类型的指针)。
2025-01-03 16:52:34
435
原创 第五章 类型——1.类型声明
在Go语言中,我们可以使用type关键字基于已经存在的类型定义新类型。其中,NewType表示新的类型名称,SourceType表示源类型。通过这种方式定义的新类型与源类型的底层类型相同,但它们是两个不同的类型,因此它们之间不支持直接赋值,需要进行显式转换。示例type MyInt int // 基于int类型声明一个MyInt类型type ListStr []string // 基于字符串切片声明一个ListStr类型。
2025-01-03 16:52:03
318
原创 第四章 函数——3.内置函数
defer是Go语言中的一个关键字,它用于延迟一个函数或方法的执行,直到包含defer语句的函数即将返回时才执行。这种特性非常适合在函数退出之前执行一些清理操作、资源释放或记录日志等。panic是Go语言中的一个内建函数,用于引发(触发)一个panic。当程序遇到无法处理的错误或异常情况时,可以使用panic来停止程序的正常执行流程,并引发panic。recover是Go语言中的另一个内建函数,用于从panic中恢复并继续正常执行程序。recover只能在defer函数中使用,并且通常与panic搭配使用。
2025-01-03 16:51:31
236
原创 第四章 函数——2.匿名函数和闭包
匿名函数和闭包是Go语言中非常有用的特性,它们允许开发者在代码中定义和使用临时的函数,并捕获周围的变量。通过理解和应用这些特性,可以编写更灵活、更强大的代码。
2025-01-03 16:50:52
222
原创 第四章 函数——1.函数声明
在Go语言中,函数是一种独立的代码块,用于执行特定的任务。函数可以接收参数并返回结果,可以被其他代码调用和重复使用。不定参数可以接收0个或多个参数。
2025-01-03 16:49:58
138
原创 第三章 切片和Map——3.map
在Go语言中,map是一种无序的键值对集合,也被称为字典(Dictionary)或关联数组。map中的每个元素都由一个唯一的键和对应的值组成。通过键可以快速地访问或修改对应的值。其中,mapName是map的名称,KeyType是键的类型,ValueType是值的类型。需要注意的是,map的key必须是可比较的类型,因为key是唯一的。引用类型(如切片、函数等)不能作为key。map是Go语言中一种非常强大的数据结构,它允许我们通过键快速地访问或修改对应的值。
2025-01-03 16:49:14
210
原创 第三章 切片和Map——2.切片
在Go语言中,切片(Slice)是一种比数组更灵活的数据结构。切片是可变长的数组,它的底层实现是一个数组,但切片为底层的数组提供了一个访问的“窗口”。切片之于数组,就像文件描述符之于文件。在Go语言中,数组更多地承担底层存储空间的角色,而切片则走向了“前台”,方便程序员进行高效的内存管理和数据操作。
2025-01-03 16:48:41
341
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人