- 1 简介本文实例展示真实存在于 Flask/Django 源码中的经典 duck-typing 实例(已节选并格式化)。这些代码能清晰展示两个框架如何通过鸭子类型实现“行为即接口”的设计。 2 Flaskmake_response() 通过接口类型识别多种返回值Flask 视图函数可以返回 字符串、dict、元组、Response 对象等,都是靠 duck typing 来判断并转换。F... 1 简介本文实例展示真实存在于 Flask/Django 源码中的经典 duck-typing 实例(已节选并格式化)。这些代码能清晰展示两个框架如何通过鸭子类型实现“行为即接口”的设计。 2 Flaskmake_response() 通过接口类型识别多种返回值Flask 视图函数可以返回 字符串、dict、元组、Response 对象等,都是靠 duck typing 来判断并转换。F...
- 1 简介本文简介duck typing类型, 一个简洁、可直接运行的 Python3 示例,展示“鸭子类型”(duck typing) 如何让代码灵活 + 简洁;最后说明 Flask 与 Django 中有哪些典型地方使用了这一思想。 2 Python 鸭子类型示例无需关心对象的真实类型,这就是鸭子类型核心思想: “If it walks like a duck and quacks ... 1 简介本文简介duck typing类型, 一个简洁、可直接运行的 Python3 示例,展示“鸭子类型”(duck typing) 如何让代码灵活 + 简洁;最后说明 Flask 与 Django 中有哪些典型地方使用了这一思想。 2 Python 鸭子类型示例无需关心对象的真实类型,这就是鸭子类型核心思想: “If it walks like a duck and quacks ...
- 1 简介不同语言都有类似于go的接口类型,Java, Python 3, 和 Rust 都有类似的接口类型设计, 它们的实现和设计理念有所不同。本文是对这些语言的接口设计的简单对比,以更全面了解该类型。 2 Java 中的接口设计Java 接口Java 中的接口是明确声明的,类型必须显式实现接口。接口定义了一组方法,但不包含任何实现。类通过 implements 关键字来声明自己实现某个接... 1 简介不同语言都有类似于go的接口类型,Java, Python 3, 和 Rust 都有类似的接口类型设计, 它们的实现和设计理念有所不同。本文是对这些语言的接口设计的简单对比,以更全面了解该类型。 2 Java 中的接口设计Java 接口Java 中的接口是明确声明的,类型必须显式实现接口。接口定义了一组方法,但不包含任何实现。类通过 implements 关键字来声明自己实现某个接...
- 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编排等企业级技术。适合后端工程师转型和架构师学习分布式系统设计,通过实战项目掌握高并发场景的开发与优化。
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签