- 1 简介Go 的接口(interface)是其语言的特性,涉及到了一些底层设计和意图,下面是详细的分析其底层设计原理和意图:Go 语言中的 interface 类型设计是为了强调灵活性和简洁性。隐式实现:Go 中的接口类型不需要显式声明“实现某个接口”,只要一个类型拥有接口所要求的所有方法,它就自动实现了该接口。这样可以更自由地组合代码,而不必担心每个类型都需要显式地声明“我实现了这个接口... 1 简介Go 的接口(interface)是其语言的特性,涉及到了一些底层设计和意图,下面是详细的分析其底层设计原理和意图:Go 语言中的 interface 类型设计是为了强调灵活性和简洁性。隐式实现:Go 中的接口类型不需要显式声明“实现某个接口”,只要一个类型拥有接口所要求的所有方法,它就自动实现了该接口。这样可以更自由地组合代码,而不必担心每个类型都需要显式地声明“我实现了这个接口...
- 1 简介为什么map数据结构在大多语言是无序?本文通过一些计算例子说明和帮助理解。通过一个具体的例子来说明 哈希值的计算是基于键的内容,而不是插入顺序。示例:假设我们有一个 map,它的键是字符串,值是整数。我们将通过计算每个键的哈希值来展示 map 中的元素是如何存储的。 2 计算原理和示例哈希表的基本原理哈希表通过一个 哈希函数 将键映射到哈希表的桶(bucket)中。哈希函数通常会根... 1 简介为什么map数据结构在大多语言是无序?本文通过一些计算例子说明和帮助理解。通过一个具体的例子来说明 哈希值的计算是基于键的内容,而不是插入顺序。示例:假设我们有一个 map,它的键是字符串,值是整数。我们将通过计算每个键的哈希值来展示 map 中的元素是如何存储的。 2 计算原理和示例哈希表的基本原理哈希表通过一个 哈希函数 将键映射到哈希表的桶(bucket)中。哈希函数通常会根...
- 命令行工具在日常开发中用得很多,比如git、docker这些我们天天用的工具。Go语言写命令行程序特别方便,语法简单,编译后就是一个可执行文件,部署起来很轻松。这篇文章会带你从零开始,学会用Go写命令行工具的基础知识。主要涉及两个核心内容:如何处理命令行参数和如何获取用户输入。 1. 命令行参数处理 1.1 os.Args基础用法Go语言内置的os.Args是个字符串切片,专门用来获取命令行... 命令行工具在日常开发中用得很多,比如git、docker这些我们天天用的工具。Go语言写命令行程序特别方便,语法简单,编译后就是一个可执行文件,部署起来很轻松。这篇文章会带你从零开始,学会用Go写命令行工具的基础知识。主要涉及两个核心内容:如何处理命令行参数和如何获取用户输入。 1. 命令行参数处理 1.1 os.Args基础用法Go语言内置的os.Args是个字符串切片,专门用来获取命令行...
- 在网络安全和系统管理工作中,端口扫描器是个很实用的工具。它能帮我们快速检测目标主机开放了哪些端口,进而了解系统运行的服务和可能存在的安全问题。Go语言的并发特性让编写高效的端口扫描器变得相对简单。本文会通过三个版本的TCP端口扫描器实现,带你深入理解Goroutine池的工作原理。从最基础的串行版本开始,到无限制并发版本,最后到资源可控的Goroutine池版本。 1. 串行版本扫描器 1.... 在网络安全和系统管理工作中,端口扫描器是个很实用的工具。它能帮我们快速检测目标主机开放了哪些端口,进而了解系统运行的服务和可能存在的安全问题。Go语言的并发特性让编写高效的端口扫描器变得相对简单。本文会通过三个版本的TCP端口扫描器实现,带你深入理解Goroutine池的工作原理。从最基础的串行版本开始,到无限制并发版本,最后到资源可控的Goroutine池版本。 1. 串行版本扫描器 1....
- 端口扫描器在网络安全和系统管理中扮演着重要角色。通过扫描目标主机的端口状态,我们可以了解系统运行的服务,发现潜在的安全漏洞。本文将带你用Go语言实现三种不同的TCP端口扫描器:从最基础的串行版本,到高效的并发版本,再到资源可控的goroutine池版本。每种实现都有其适用场景,让我们一步步来看。 1. 基础串行扫描器 1.1 实现原理最简单的端口扫描器就是逐个尝试连接目标端口。虽然速度慢,但... 端口扫描器在网络安全和系统管理中扮演着重要角色。通过扫描目标主机的端口状态,我们可以了解系统运行的服务,发现潜在的安全漏洞。本文将带你用Go语言实现三种不同的TCP端口扫描器:从最基础的串行版本,到高效的并发版本,再到资源可控的goroutine池版本。每种实现都有其适用场景,让我们一步步来看。 1. 基础串行扫描器 1.1 实现原理最简单的端口扫描器就是逐个尝试连接目标端口。虽然速度慢,但...
- 1 简介在 Go 中,map 是 无序的,这是由其底层设计和性能优化决定的。本文试图解释和分析为什么 Go 的 map 不能保证元素的顺序,探讨其底层实现原理。 2. Go Map 的底层实现原理Go 的 map 是基于 哈希表(Hash Table)实现的。哈希表的基本思想是通过哈希函数(hash function)将键(key)映射到一个数组或桶(bucket)中。哈希表通常能够实现 ... 1 简介在 Go 中,map 是 无序的,这是由其底层设计和性能优化决定的。本文试图解释和分析为什么 Go 的 map 不能保证元素的顺序,探讨其底层实现原理。 2. Go Map 的底层实现原理Go 的 map 是基于 哈希表(Hash Table)实现的。哈希表的基本思想是通过哈希函数(hash function)将键(key)映射到一个数组或桶(bucket)中。哈希表通常能够实现 ...
- 1 简介map 本身是 无序的,也就是说,Go 不保证遍历 map 时的顺序,因此无法直接对 map 的键进行排序并输出。本文通过一些技巧间接实现排序,或者使用其他数据结构来保持排序。 2 如何对 map 的键进行排序并输出首先,我们需要将 map 的键提取到一个切片中,然后对这个切片进行排序。排序后的键可以用来访问 map 中的值。示例:对 map 的键排序并输出假设我们有一个 map ... 1 简介map 本身是 无序的,也就是说,Go 不保证遍历 map 时的顺序,因此无法直接对 map 的键进行排序并输出。本文通过一些技巧间接实现排序,或者使用其他数据结构来保持排序。 2 如何对 map 的键进行排序并输出首先,我们需要将 map 的键提取到一个切片中,然后对这个切片进行排序。排序后的键可以用来访问 map 中的值。示例:对 map 的键排序并输出假设我们有一个 map ...
- 分布式系统听起来很复杂,但用Go来实现其实没那么难。今天我们来搭建一个完整的分布式系统,包含服务注册、服务发现、负载均衡和健康检查等核心功能。这个项目虽然简单,但麻雀虽小五脏俱全,基本涵盖了分布式系统的主要组件。代码都是可以直接运行的,你可以在本地跑起来看看效果。 1 项目整体架构我们要搭建的系统叫 simple_distributed_system,目录结构是这样的:simple_dist... 分布式系统听起来很复杂,但用Go来实现其实没那么难。今天我们来搭建一个完整的分布式系统,包含服务注册、服务发现、负载均衡和健康检查等核心功能。这个项目虽然简单,但麻雀虽小五脏俱全,基本涵盖了分布式系统的主要组件。代码都是可以直接运行的,你可以在本地跑起来看看效果。 1 项目整体架构我们要搭建的系统叫 simple_distributed_system,目录结构是这样的:simple_dist...
- 1 简介本文给出 multiSorter 多字段排序 实现示例,该代码实现了一个可组合多字段排序器,非常类似 SQL ORDER BY: ORDER BY user ASC, lines DESC, ...它允许:动态传入多个比较函数(lessFunc)按优先级链式比较(逐字段比)自定义每个字段升序或降序 2 核心设计思想支持多字段排序(Primary key、Secondary ke... 1 简介本文给出 multiSorter 多字段排序 实现示例,该代码实现了一个可组合多字段排序器,非常类似 SQL ORDER BY: ORDER BY user ASC, lines DESC, ...它允许:动态传入多个比较函数(lessFunc)按优先级链式比较(逐字段比)自定义每个字段升序或降序 2 核心设计思想支持多字段排序(Primary key、Secondary ke...
- 1 简介在 Go 语言中,对 slice 的操作比较灵活。要删除或替换 slice 中的元素,主要有以下几种常见的方法: 2 append 删除 slice 中的元素假设你有一个长度为 10 的 int 类型的 slice,想要删除第 3 个元素(索引为 2),可以通过以下两种常见方法实现。使用 append 删除元素通过 append 函数,你可以将 slice 中的元素重新组合,从而... 1 简介在 Go 语言中,对 slice 的操作比较灵活。要删除或替换 slice 中的元素,主要有以下几种常见的方法: 2 append 删除 slice 中的元素假设你有一个长度为 10 的 int 类型的 slice,想要删除第 3 个元素(索引为 2),可以通过以下两种常见方法实现。使用 append 删除元素通过 append 函数,你可以将 slice 中的元素重新组合,从而...
- 1 简介Go原生函数没有IN函数用于方便快捷地判断某个元素是否存在切片,本文示例 代码尝试实现类似 Python in 操作符的功能,用来判断某个元素是否存在于不同类型的容器中(如 slice, array, map 等)。 2 需要实现的功能首先将In 函数支持 slice / array,还不支持 map、struct slice 等情况。本文详细讲一下改进方案和实现方式Python ... 1 简介Go原生函数没有IN函数用于方便快捷地判断某个元素是否存在切片,本文示例 代码尝试实现类似 Python in 操作符的功能,用来判断某个元素是否存在于不同类型的容器中(如 slice, array, map 等)。 2 需要实现的功能首先将In 函数支持 slice / array,还不支持 map、struct slice 等情况。本文详细讲一下改进方案和实现方式Python ...
- 系统讲解Go语言全栈开发,从Web框架到微服务架构,涵盖云原生部署、Kubernetes编排等企业级技术。适合后端工程师转型和架构师学习分布式系统设计,通过实战项目掌握高并发场景的开发与优化。 系统讲解Go语言全栈开发,从Web框架到微服务架构,涵盖云原生部署、Kubernetes编排等企业级技术。适合后端工程师转型和架构师学习分布式系统设计,通过实战项目掌握高并发场景的开发与优化。
- 1 简介框架定位 / 优势: 强调服务化抽象、可插拔架构、简单易用的开发体验,提供一整套“微服务运行时”组件:默认 RPC、服务发现、配置、事件驱动(pub/sub)等,强调可插拔(pluggable)和快速起步。 2 常用配套Web / RPC 层:go-micro 自带 RPC 抽象并有 HTTP 转接,常见与 gRPC/HTTP 一起使用(源码在 go-micro 组织)。队列 / ... 1 简介框架定位 / 优势: 强调服务化抽象、可插拔架构、简单易用的开发体验,提供一整套“微服务运行时”组件:默认 RPC、服务发现、配置、事件驱动(pub/sub)等,强调可插拔(pluggable)和快速起步。 2 常用配套Web / RPC 层:go-micro 自带 RPC 抽象并有 HTTP 转接,常见与 gRPC/HTTP 一起使用(源码在 go-micro 组织)。队列 / ...
- 1 简介go-kit(微服务 toolkit)框架定位 / 优势:理念上是「构建可维护、可测试、可观察的微服务的工具箱」非常模块化(transport、endpoint、middleware、metrics、tracing、circuit-breaker 等分离),适合复杂企业级分布式系统,需要你自己组合但能得到高度可控和良好架构。 2 常用配套Web / RPC 层:通常与 net/ht... 1 简介go-kit(微服务 toolkit)框架定位 / 优势:理念上是「构建可维护、可测试、可观察的微服务的工具箱」非常模块化(transport、endpoint、middleware、metrics、tracing、circuit-breaker 等分离),适合复杂企业级分布式系统,需要你自己组合但能得到高度可控和良好架构。 2 常用配套Web / RPC 层:通常与 net/ht...
- 1 简介性能和可扩展性在 Go 设计时考虑了性能和可扩展性 。它具有轻量级的 goroutine 调度算法和高度优化的运行时,使其成为构建高性能系统的理想选择。本文从几个方面说明高性能与高扩展性的体现在哪里。 2 轻量级并发模型(Goroutine)go worker(&wg) 启动了一个 goroutine。Goroutine 是 Go 的核心并发单元,由 Go 运行时(runtime)... 1 简介性能和可扩展性在 Go 设计时考虑了性能和可扩展性 。它具有轻量级的 goroutine 调度算法和高度优化的运行时,使其成为构建高性能系统的理想选择。本文从几个方面说明高性能与高扩展性的体现在哪里。 2 轻量级并发模型(Goroutine)go worker(&wg) 启动了一个 goroutine。Goroutine 是 Go 的核心并发单元,由 Go 运行时(runtime)...
上滑加载中
推荐直播
-
昇腾AI算法挑战赛-核心算子如何优化?专家带你深度解析2025/11/17 周一 16:00-17:00
王老师 华为算子专家
昇腾AI算法挑战赛进阶赛战鼓催征!本期直播间,我们特邀华为算子专家王老师,为你深度剖析Matmul、wholereducesum等核心算子的底层原理与优化技巧,直击赛题核心。想提升代码效率、冲击更高排名?锁定直播,带你破局!
回顾中 -
AI编码实干派,“码”力全开2026/02/26 周四 15:00-16:30
谈宗玮/于邦旭/丁俊卿/陈云亮/王一男
【中国,深圳,2026年2月26日】,以“AI编码实干派,码力全开”为主题的华为云码道(CodeArts)代码智能体新春发布会在线上成功召开。华为云码道公测版正式发布,为开发者和企业提供具备工程化能力的智能编码解决方案。
回顾中 -
华为云码道-玩转OpenClaw,开启在线养虾模式2026/03/11 周三 19:00-20:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中
热门标签