摘要: 在Go语言中,通道(Channel)是一种强大的并发编程工具,主要用于在不同的Goroutine之间传递数据。通过通道,可以轻松实现在Goroutine之间的通信和同步,避免手动加锁的复杂性。Channel底层是一个先进选出的环形队列(固定大小环形数组实现),示意图如下所示: 通道具备以下特点: f 阅读全文
posted @ 2025-10-26 22:17 Surpassme 阅读(7) 评论(0) 推荐(0)
摘要: 1.概述 如果你写过Go项目,一定会喜欢其整洁的项目结构和项目依赖。而反观Python的项目结构和项目依赖,就真的一言难尽了。 Python最开始面向的并不是大型工程项目,而是定位于脚本开发和教学使用,所以对项目结构、项目依赖等,并无太多规范和建议,因此大家都是根据个人习惯或理解来自定义项目结构。 阅读全文
posted @ 2025-10-02 21:05 Surpassme 阅读(28) 评论(0) 推荐(0)
摘要: 1.loguru 1.1 loguru 介绍 loguru是一个功能强大且非常容易使用的第三方开源Python日志管理库。它建立在Python标准库中的logging模块之上,并提供了更加简洁直观、功能丰富的接口。github仓库地址:https://github.com/Delgan/loguru 阅读全文
posted @ 2025-09-27 21:50 Surpassme 阅读(57) 评论(0) 推荐(0)
摘要: 在学习并发编程之前,我们先来了解一下一些相关的术语:进程、线程、并行、并发、同步、异步、阻塞、非阻塞、协程等概念。 19.1 进程/线程 进程是计算机中的程序在某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。例如一个运行的QQ软件就是一个进程。 线程是操作系统能 阅读全文
posted @ 2025-09-25 00:32 Surpassme 阅读(11) 评论(0) 推荐(0)
摘要: 18.日志 18.1 自带log包 在日常项目,在出现问题之后需要排查,一种比较主要的排查方式是通过日志。所以在代码的关键地方,需要打印相应的日志。在Go语言中log包提供了简单的日志功能,其输出格式如下所示: 打印 格式化打印 换行打印 备注 log.Print() log.Printf() lo 阅读全文
posted @ 2025-09-21 00:49 Surpassme 阅读(15) 评论(0) 推荐(0)
摘要: 17.时间处理 日期和时间是日常编程常用的功能之一。如果没有日期和时间,会导致很多功能无法实现,例如日志记录、定时任务、时间延迟等。Go标准库提供了操作日期和时间的方法。 在提到时间,还需要注意不同地区的时间会不一样,所以这里还需要考虑到不同时区、不同历法等带来的影响。目前使用较多的两种时间GMT( 阅读全文
posted @ 2025-09-15 00:14 Surpassme 阅读(34) 评论(0) 推荐(0)
摘要: 1.问题引入 假设我们有这样一个动物类,示例代码如下所示: from typing import Optional class Animal(): def __init__(self, name:str): self.name = name def __str__(self)->str: retur 阅读全文
posted @ 2025-09-10 00:36 Surpassme 阅读(86) 评论(0) 推荐(0)
摘要: 16.目录与文件 任何编程语言在运行时都依赖于操作系统,所以程序在运行时会对系统文件、目录等执行一些相应操作,例如文件读写、执行系统命令、创建新的目录等。在Go语言中,可以使用内置包os实现了多种操作系统的操作指令,如主机、用户、进程、环境变量、目录与文件操作、终端执行等。 16.1 路径操作 存储 阅读全文
posted @ 2025-09-07 17:11 Surpassme 阅读(20) 评论(0) 推荐(0)
摘要: 15.1 模块化 用任何语言开发,如果软件规模扩大,会编写大量的函数、结构体、接口等。而这些代码不可能全部写在同一个文件中,因此就会产生大量的文件。如果这些文件是杂乱无章,则会造成名称冲突、重复定义、难以检索、无法引用、共享不便、版本管理、代码如何复用等一系列问题。因此需要有方案来解决类似问题,Go 阅读全文
posted @ 2025-09-07 17:10 Surpassme 阅读(10) 评论(0) 推荐(0)
摘要: Go语言自带有一套完整的命令行操作,可以在终端中执行go来进行查看,如下所示: Go is a tool for managing Go source code. Usage: go <command> [arguments] The commands are: bug start a bug re 阅读全文
posted @ 2025-08-30 18:13 Surpassme 阅读(23) 评论(0) 推荐(0)
摘要: 本节主要来学习Go语言中存在一些独有特性 13.1 值类型/引用类型 Go语言中针对不同的数据类型可以分为值类型和引用类型变量,两者描述如下所示: 值类型变量是变量直接存储数据,内存通常在栈中分配,对应的数据类型整型、布尔型、浮点型、字符串、数组等 引用类型变量是变量存储的是一个内存地址,在内存地址 阅读全文
posted @ 2025-08-30 18:12 Surpassme 阅读(9) 评论(0) 推荐(0)
摘要: Go语言在v1.18版本添加。其中泛即通用的意思。 12.1 泛型函数 如果没有泛型,同一种类型需要使用重载功能,但Go又不支持重载功能。如果写一个简单的加法计算函数,我们只能定义出如下所示的代码: func AddInt(a, b int) int { return a + b } func Ad 阅读全文
posted @ 2025-08-26 00:22 Surpassme 阅读(11) 评论(0) 推荐(0)
摘要: 11.异常处理 在大部分的编程语言都支持异常处理机制,例如比较常见的try...catch...finally。但Go语言的设计者认为其他语言的异常处理太过消耗资源,且设计和处理比较复杂。导致使用者不能很好的处理错误,甚至觉得处理麻烦,从而忽视或忽略错误,导致程序崩溃。为了解决这些问题,Go将错误处 阅读全文
posted @ 2025-08-26 00:21 Surpassme 阅读(6) 评论(0) 推荐(0)
摘要: 1.硬盘I/O测试类型 在日常测试中,硬盘I/O测试类型主要有以下几种类型 随机读、随机写、随机读写 顺序读、顺序写、顺序读写 2.FIO介绍 FIL是Linux中开源的一款IOPS测试工具,主要用来对硬盘进行压力测试和性能验证。使用FIO可以产生多线程或进程来执行特定类型的I/O操作,通过编写配置 阅读全文
posted @ 2025-08-24 17:54 Surpassme 阅读(675) 评论(0) 推荐(0)
摘要: 1.概述 在日常写代码的过程中,经常能在很多地方看到__init__.py文件,似乎感觉没有什么用,但有时候却又不得不存在这个文件,而文件里面的内容通常又是空,那这个文件到底有什么作用呢?今天让我们就来探究一下。 2.Python的模块和包 在Python代码组织里面有两个基本单位模块(module 阅读全文
posted @ 2025-08-24 17:49 Surpassme 阅读(186) 评论(0) 推荐(0)
摘要: 在学习接口时,已经接触了一些面向对象的概念,在这个章节中,我们来重点学习一下面向对象的相关概念。 面向对象程序设计(OOP:Object-oriented programming)是一种具有对象概念的编程典范,同时也是一种程序开发的抽象方针,包含数据、特性、代码与方法。主要涉及两个核心概念。 类(C 阅读全文
posted @ 2025-08-17 23:59 Surpassme 阅读(12) 评论(0) 推荐(0)
摘要: 9.接口 Go语言提供了一种称为接口(interface)的数据类型,用于表示一组行为规范,即定义一组未实现的函数声明。谁调用接口谁负责参照接口的方法负责实现它们。 在Go语言中,使用组合实现对象特性的描述。对象内部使用结构体嵌套组合对象应该具有的特性,对外则通过暴露接口,让其他对象进行访问。Go语 阅读全文
posted @ 2025-08-17 23:58 Surpassme 阅读(9) 评论(0) 推荐(0)
摘要: 8.结构体 Go语言的结构体有点像面向对象编程语言中的"类",但也不完全是。 面向对象是一种对现实世界理解和抽象的一种方法,通过抽象把相关的数据和方法组织为一个整体来看待,从高层次进行系统建模。更贴近事物的自然运行模式。例如:人类就是一个抽象的类,而小明,则代表了一个具体人。在其他语言中,类一般使用 阅读全文
posted @ 2025-08-11 23:51 Surpassme 阅读(9) 评论(0) 推荐(0)
摘要: 7. 函数 7.1 函数定义 在Go语言中,函数是若干语句组成的语句块、函数名称、参数列表、返回值构成,是组织代码的最单元。使用函数的主要作用如下所示: 结构化编程是对代码的最基本的封装,一般按照功能组织一段代码 使用函数封装,可提高代码复用,减少冗余代码 使用代码可使代码简洁美观,增加代码的可读性 阅读全文
posted @ 2025-08-11 23:50 Surpassme 阅读(15) 评论(0) 推荐(0)
摘要: 6. 容器类型 6.1 数组 数组是一个固定长度的特定相同类型元素组成的序列。其元素个数可以为>=0个。 在Go语言中,由于数组长度是固定,且缺乏一定的灵活性,在Go语言一般较少使用,通常都是使用切片 6.1.1 数组定义 Go语言的数组定义如下所示: // 方式一:在定义时即指定长度 var na 阅读全文
posted @ 2025-07-26 23:03 Surpassme 阅读(7) 评论(0) 推荐(0)