Go 语言简介 -- 高效、简洁与现代化编程的完美结合
在现代软件开发领域,选择合适的编程语言对于项目的成功至关重要。Go 语言(又称 Golang )自 2009 年由Google发布以来,以其简洁的语法、高效的并发模型以及强大的性能,迅速成为开发者们的新宠。Go语言不仅融合了传统编译型语言的高效性和脚本语言的易用性,还专注于解决并发编程中的难题,提供了简洁而强大的解决方案。
Go语 言特别适合用于服务器端开发、大型软件开发以及支持云计算的网络服务。它的设计初衷是提高开发效率,简化代码维护,同时在高并发和分布式系统中表现卓越。越来越多的公司和开源项目选择Go语言作为开发基础,涵盖了从日志处理、虚拟机管理到区块链技术等广泛的应用领域。
本文将详细介绍 Go 语言的特点和优势,探讨其在服务器编程、网络编程、云平台和区块链等方面的应用场景,展示 Go 语言在现代软件开发中的重要性和潜力。无论你是初次接触 Go 语言,还是希望深入了解其在实际项目中的应用,本文都将为你提供有价值的参考
文章目录
- 1、Go 语言简介与背景介绍
- 1.1、Go 语言简介
- 1.2、Go 语言的诞生
- 1.3、Go 的设计与发展
- 1.3.1、早期实现与团队扩展
- 1.3.2、Go 语言的首次公开
- 1.3.3、Go 语言的吉祥物
- 1.3.4、Go 语言影响与发展
- 2、Go 语言的特性
- 2.1、语法简单
- 2.2、并发模型
- 2.3、内存分配
- 2.4、垃圾回收
- 2.5、静态链接
- 2.6、标准库
- 2.7、工具链
- 3、Go 语言的应用
- 3.1、使用 Go 语言的项目
- 3.2、使用 Go 语言的公司
- 3.3、Go 语言的应用场景
- 3.3.1、服务器端开发
- 3.3.2、网络编程
- 3.3.3、云平台
- 3.3.4、区块链技术
- 3.3.5、底层开发
1、Go 语言简介与背景介绍
1.1、Go 语言简介
Go,也称为 Golang,是一种开源编程语言,由谷歌在 2007 年开始开发,并在 2009 年正式发布,是当下备受关注的后端开发主流语言之一。
Go 是一门强大且简洁的编程语言,适合构建高性能、可扩展的应用程序。它的设计理念和特性使其在现代软件开发中具有重要地位,尤其是在云计算、微服务和高并发系统领域。
1.2、Go 语言的诞生
Go 语言,是由肯·汤普森(Ken Thompson)、罗伯·派克(Rob Pike)和罗伯特·格瑞史莫(Robert Griesemer)三位计算机科学家共同设计的编程语言。这三位创始人都有着深厚的背景:
- 肯·汤普森(Ken Thompson):图灵奖获得者、C 语言联合发明人、Unix 操作系统的创始人之一;
- 罗伯·派克(Rob Pike):Plan 9 操作系统的领导者、UTF-8 编码的最初设计者;
- 罗伯特·格瑞史莫(Robert Griesemer):Java 的 HotSpot 虚拟机和 Chrome 浏览器的 JavaScript V8 引擎的设计者之一。
Go 的诞生:在 2007 年 9 月 20 日下午,三位创始人在谷歌山景城总部的一次普通讨论中,萌生了设计一门新编程语言的想法。当时,谷歌内部主要使用 C++ 语言构建各种系统,但 C++ 的复杂性、编译构建速度慢以及对并发支持不足的问题,使他们感到十分不便。因此,他们决定设计一门能够给程序员带来快乐、匹配未来硬件发展趋势,并适合开发谷歌内部大规模网络服务程序的新语言。
初次讨论:那天下午,罗伯·派克启动了一个 C++ 工程的编译构建,预计需要一个小时。利用这段时间,罗伯·派克、罗伯特·格瑞史莫和肯·汤普森讨论了设计一门新编程语言的想法。第二天,他们又在谷歌总部的"雅温得(Yaounde)"会议室里进一步讨论了这门新语言的设计。
设计邮件:会后,罗伯特·格瑞史莫发出了一封题为"prog lang discussion"的电子邮件,对这门新编程语言的功能特性做了初步归纳总结。他们的主要思路是在 C 语言的基础上,修正一些明显的缺陷,删除一些被诟病较多的特性,增加一些缺失的功能,如使用 import 替代 include、去掉宏、增加垃圾回收、支持接口等。这封电邮成为了这门新语言的第一版特性设计稿,三位创始人在一些基础语法特性上达成了初步一致。

命名为"Go":9月25日,罗伯·派克在一封回复电邮中提议将这门新编程语言命名为"Go"。在他看来,"Go"这个单词短小、容易输入,并且可以用于命名 Go 相关的工具,如编译器(goc)、汇编器(goa)、链接器(gol)等(早期版本曾如此命名 Go 工具链,但后续版本撤销了这种命名方式,仅保留 Go 这一统一的工具链名称)。

关于"Golang"的误区:许多 Go 语言初学者经常称这门语言为 Golang,这实际上是不正确的。"Golang"仅用于命名 Go 语言的官方网站,因为当时 go.com 这个域名已经被占用了。
1.3、Go 的设计与发展
在早期讨论后,Go 语言的三位创始人肯·汤普森(Ken Thompson)、罗伯·派克(Rob Pike)和罗伯特·格瑞史莫(Robert Griesemer)开始了 Go 语言的迭代设计和实现过程。
1.3.1、早期实现与团队扩展
第一版编译器:2008 年初,肯·汤普森实现了第一版 Go 编译器。这个编译器将 Go 代码转换为 C 代码,再由 C 编译器编译成二进制文件。这一实现用于验证早期设计。
第二个编译器:2008 年中,同样在谷歌工作的伊恩·泰勒(Ian Lance Taylor)为 Go 语言实现了一个 GCC 的前端,这是 Go 语言的第二个编译器。这不仅证明了 Go 的可行性,也推动了 Go 语言规范和标准库的建立。随后,伊恩·泰勒正式加入 Go 语言开发团队,成为第四位成员,并在语言及工具设计和实现方面发挥了重要作用。
核心团队的扩展:罗斯·考克斯(Russ Cox)是 Go 核心开发团队的第五位成员,他于 2008 年加入。罗斯利用 Go 语言函数类型作为"一等公民"的特性,巧妙地设计了 http 包的 HandlerFunc 类型,使普通函数能够满足 http.Handler 接口。此外,他提出了 io.Reader 和 io.Writer 接口的设计,这奠定了 Go 语言的 I/O 结构模型。后来,罗斯成为 Go 核心技术团队的负责人,推动 Go 语言的持续演化。
1.3.2、Go 语言的首次公开
2009 年 10 月 30 日,罗伯·派克在 Google Techtalk 上做了一次名为"The Go Programming Language"的演讲,这是 Go 语言第一次公之于众。十天后,即 2009 年 11 月 10 日,谷歌官方宣布 Go 语言项目开源,这一天也被确定为 Go 语言的诞生日。
1.3.3、Go 语言的吉祥物
在 Go 语言项目开源后,罗伯·派克的夫人芮妮·弗伦奇(Renee French)设计了一只地鼠(gopher)作为 Go 语言的吉祥物。从此,地鼠成为 Go 程序员的象征,Go 程序员也被昵称为 Gopher。

1.3.4、Go 语言影响与发展
Go 语言的开源吸引了全球开发者的关注。凭借创始人在业界的影响力和谷歌的支持,更多有才华的程序员加入了 Go 核心开发团队,更多贡献者开始为 Go 语言项目做出贡献。在2009年,Go 成为了著名编程语言排行榜 TIOBE 的年度最佳编程语言。
2012年3月28日,Go 1.0 版本正式发布。Go 官方发布了“Go 1 兼容性”承诺:只要符合 Go 1 语言规范的源代码,Go 编译器将保证向后兼容。这意味着使用新版编译器也可以正确编译用老版本语法编写的代码。
自开源以来,Go 语言发展迅猛,发布了多个大版本更新,逐渐成熟。在过去的十余年里,Go 语言在现代软件开发中占据了重要地位,广泛应用于云计算、微服务和高并发系统等领域。
2、Go 语言的特性
Go 语言是一种静态强类型、编译型、并发型、并具有垃圾回收功能的编程语言。 接下来从几个方面来具体介绍一下 G o语言的特性。
2.1、语法简单
抛开语法样式不谈,单就类型和规则而言,Go 与 C99、C11 相似之处颇多,这也是 Go 语言被冠以"NextC"名号的重要原因。
Go 语言的语法处于简单和复杂的两极。C 语言简单到你每写下一行代码,都能在脑中想象出编译后的模样,指令如何执行,内存如何分配,等等。而 C 的复杂在于,它有太多隐晦而不着边际的规则,着实让人头疼。相比较而言,Go 从零开始,没有历史包袱,在汲取众多经验教训后,可从头规划一个规则严谨、条理简单的世界。
Go 语言的语法规则严谨,没有歧义,更没什么黑魔法变异用法。任何人写出的代码都基本一致,这使得 Go 语言简单易学。放弃部分”灵活"和"自由",换来更好的维护性,我觉得是值得的。
将++、--从运算符降级为语句,保留指针,但默认阻止指针运算,带来的好处是显而易见的。还有,将切片和字典作为内置类型,从运行时的层面进行优化,这也算是一种"简单"。
2.2、并发模型
Go 语言做了件极大胆的事,即从根本上将一切并发化,采用 Goroutine 处理并发,运行时用 Goroutine 运行所有的一切,包括 main.main 入口函数。
可以说,Goroutine 是 Go 最显著的特征,这是一种类似协程的并发单元,但在运行时层面进行了深度优化。通过 Goroutine 和 channel 实现的 CSP 模型(Communicating Sequential Processes),使得并发编程变得简单自然,无需处理回调和线程切换。Goroutine 和 channel 的结合,拆解了并发单元间的数据耦合,使得内存共享和锁粒度的问题得到了解决
2.3、内存分配
Go 语言采用 tcmalloc 内存分配器,这是一个为并发设计的高性能内存分配组件。
tcmalloc 使用 cache 为当前执行线程提供无锁分配,多个 central 在不同线程间平衡内存单元复用,而 heap 则管理大块内存,切分成不同等级的复用内存块。这种快速分配和二级内存平衡机制,让内存分配器在高并发下也能高效运行。编译器还会尽量将对象分配在栈上,减少垃圾回收的压力,提高执行性能。
2.4、垃圾回收
Go 语言的垃圾回收器经过不断优化,从并发清理到降低 STW(Stop-The-World)时间,再到并发标记、三色标记和写屏障的引入,都是为了能让垃圾回收在不显著影响用户逻辑的情况下更好地工作。
相比 Java,Go 面临的困难要更多。因指针的存在,所以回收内存不能做收缩处理。幸好,指针运算被阻止,否则要做到精确回收都难。
每次升级,垃圾回收器必然是核心组件里修改最多的部分。从并发清理,到降低 STW 时间,直到 Go 的 1.5 版本实现并发标记,逐步引入三色标记和写屏障等等,都是为了能让垃圾回收在不影响用户逻辑的情况下更好地工作。尽管有了努力,当前版本的垃圾回收算法也只能说堪用,离好用尚有不少距离。
2.5、静态链接
Go 刚发布时,静态链接被当作优点宣传。只须编译后的一个可执行文件,无须附加任何东西就能部署。这似乎很不错,只是后来风气变了。连着几个版本,编译器都在完善动态库 buildmode 功能,场面一时变得有些尴尬。
暂不说未完工的 buildmode 模式,静态编译的好处显而易见。将运行时、依赖库直接打包到可执行文件内部,简化了部署和发布操作,无须事先安装运行环境和下载诸多第三方库。这种简单方式对于编写系统软件有着极大好处,因为库依赖一直都是个麻烦。
2.6、标准库
Go 语言的标准库功能完善、质量可靠,可以完成大部分基础功能开发,降低了学习和使用成本。特别是 net/http 包,只需简单几条语句即可实现高性能的 Web 服务器,这也是 Go 语言在 Web 和微服务开发中广受欢迎的重要原因。丰富的第三方资源和框架进一步扩展了 Go 语言的应用场景
2.7、工具链
Go 语言提供了完整的工具链,包括编译、格式化、错误检查、帮助文档生成、第三方包下载和更新等工具。此外,Go 语言内置了完整的测试框架,包括单元测试、性能测试、代码覆盖率检测和数据竞争检测工具。通过环境变量输出的运行时监控信息(如垃圾回收和并发调度跟踪)进一步帮助开发者改进算法和优化性能。
总的来说,Go 语言通过简洁的语法、强大的并发模型、高效的内存分配和优化的垃圾回收机制,成为现代软件开发中的重要工具。其完善的标准库和工具链,以及广泛的社区支持,使其在云计算、微服务和高并发系统等领域得到了广泛应用。
3、Go 语言的应用
3.1、使用 Go 语言的项目
所有的编程语言都反映了语言设计者对编程哲学的反思,通常包括之前的语言所暴露的一些不足地方的改进。Go 语言从发布 1.0 版本以来备受众多开发者关注并得到广泛使用,Go 语言的简单、高效、并发特性吸引了众多传统语言开发者的加入,而且人数越来越多。
使用 Go 语言开发的开源项目非常多。早期的 Go 语言开源项目只是通过 Go 语言与传统项目进行 C 语言库绑定实现,例如 Qt、Sqlite 等;后期的很多项目都使用 Go 语言进行重新原生实现,这个过程相对于其他语言要简单一些,这也促成了大量使用Go语言原生开发项目的出现。
下面列举的是原生使用 Go 语言进行开发的部分项目:
-
Docker: Docker 是一种操作系统层面的虚拟化技术,允许在一台物理服务器上快速运行多个实例,实现操作系统和应用程序的隔离;
-
Go 语言: Go 语言自身的源码,从Go 1.5版本后,完全使用Go语言编写,对了解Go语言的底层调度有很大帮助;
-
Kubernetes: 由 Google 开发的基于 Docke r的容器编排服务,管理云端容器集群,自动选择合适的节点来执行容器调度;
-
etcd: 一个分布式的、可靠的键值存储系统,由 CoreOS 开发,通过 Raft 一致性算法处理日志复制以保证强一致性;
-
beego: 类似于 Python 的 Tornado 框架,是一个轻量级、高可伸缩性和高性能的 Web 应用框架;
-
martini: 一个快速构建模块化 Web 应用的 Go语 言框架;
-
codis: 一种国产的分布式 Redis 解决方案,实现了对 Redis 的反向代理和负载均衡;
-
delve: Go 语言的强大调试器,被许多集成开发环境和编辑器整合使用。
3.2、使用 Go 语言的公司
Go 语言自 2009 年由 Google 发布以来,以其高效的开发效率和卓越的运行速度迅速风靡全球,被誉为"21 世纪的 C 语言"。越来越多的公司开始采用 Go 语言来开发自己的服务,以下是一些使用Go语言的大公司和他们的应用实例:
-
Google:作为 Go 语言的创造者,Google 在多个项目中使用了 Go 语言。例如,Kubernetes 和 Docker 都是使用 Go 语言开发的。Google 通过这些项目展示了 Go 语言在构建大规模分布式系统方面的强大能力;
-
Facebook:Facebook 也在其多个项目中使用了 Go 语言,并在 GitHub 上建立了 facebookgo 组织。最著名一个的项目是 grace,一个用于实现服务平滑重启的工具;
-
腾讯:腾讯在 2015 年已经在 Docker 大规模应用上进行实践,腾讯主要使用 Go 语言进行新业务的开发,例如一些内部的工具和服务;
-
百度:百度在运维方面广泛使用了 Go 语言,例如 BFE(前端流量接入项目)和消息通讯系统的服务器端;
-
七牛云:七牛云是国内第一家选择 Go 语言作为服务端开发的公司。早在 2011 年,七牛云就使用 Go 语言来开发其存储服务;
-
京东:京东使用 Go 语言开发了云消息推送系统、云存储以及商城的列表页等;
-
小米:小米在其运维监控系统(Open-Falcon)中使用了 Go 语言,此外,小米互娱、小米商城、小米视频和小米生态链等团队也在使用 Go 语言;
-
360:360 公司在多个项目中使用了 Go 语言,例如开源的日志搜索系统 Poseidon 和推送团队的服务。
除了上述公司外,还有很多公司开始尝试使用 Go 语言,如美团、滴滴和新浪等。Go语 言在开发高并发网络服务(如消息推送、监控和容器)方面表现优异,因此成为许多公司在相关项目中的首选开发语言。
Go 语言的强项使其在构建高性能、可靠性和可伸缩性的网络服务中广受欢迎,并逐步成为现代软件开发中的重要工具。
3.3、Go 语言的应用场景
Go 语言以其高效性、易用性和良好的并发支持,适合用于多种场景。以下是 Go 语言的主要应用领域:
3.3.1、服务器端开发
Go 语言专为服务器端开发而设计,适合于开发大型软件和支持云计算的网络服务。其并发模型和性能优势使其在以下方面表现出色:
- 日志处理:高效处理和分析大量日志数据;
- 数据打包:快速处理和打包数据;
- 虚拟机处理:管理和优化虚拟机的运行;
- 文件系统:构建高性能文件系统;
- 分布式系统:开发和维护分布式系统;
- 数据库代理:实现高效的数据库代理服务。
3.3.2、网络编程
Go 语言在网络编程方面表现卓越,常用于以下应用:
- Web应用:开发高性能的 Web 服务器和应用;
- API应用:构建 RESTful API 和微服务架构;
- 下载应用:实现高效的下载和文件传输应用。
3.3.3、云平台
Go 语言被广泛应用于云计算领域,其并发特性和性能使其成为开发云平台的理想选择:
- 内存数据库:开发高效的内存数据库;
- 云平台服务:构建和管理云平台服务。
3.3.4、区块链技术
在区块链技术领域,Go 语言也备受青睐,许多去中心化应用(DApps)和工具都使用Go语言实现:
- 以太坊:以太坊的部分组件是用 Go 语言开发的;
- 超级账本:超级账本(Hyperledger)项目中也使用了 Go 语言;
- 区块链工具:各种区块链相关工具和应用。
3.3.5、底层开发
Go 语言还适合用于底层开发,例如网络协议、操作系统组件等。
综上所述,Go 语言的设计使其特别适合于高并发、分布式系统和网络服务的开发。其简洁的语法、强大的标准库以及高效的并发模型,使其成为现代软件开发中的重要工具。无论是服务器端开发、网络编程、云平台、还是区块链技术,Go 语言都能提供高效、可靠的解决方案。
相关文章:
Go 语言简介 -- 高效、简洁与现代化编程的完美结合
在现代软件开发领域,选择合适的编程语言对于项目的成功至关重要。Go 语言(又称 Golang )自 2009 年由Google发布以来,以其简洁的语法、高效的并发模型以及强大的性能,迅速成为开发者们的新宠。Go语言不仅融合了传统编译…...
绝缘鞋计量校准周期多长时间合适?校验检测方法是什么?
绝缘鞋的计量校准,通常是应用在电学相关领域,因此也是属于计量校准机构中的电学室管辖的范围,而绝缘鞋为了安全防护,也是采用了绝缘材料,其标准要求耐电压至少在15KV以下,可应用于工频(50到60F&…...
python-13(案例讲解)
目录 抓取链家前十页的数据 计算均价和总价 计算的类型(整租,合租) 计算的房型 抓取boss直聘前十页的数据 抓取boss直聘前十页的数据 将获取数据本地序列化 计算每个区的需求个数与均价 抓取链家前十页的数据 链家网址:长…...
【深度学习】最强算法之:人工神经网络(ANN)
人工神经网络ANN 1、引言2、人工神经网络(ANN)2.1 定义2.1.1 定义2.1.2 应用场景 2.2 核心原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝:鱼哥,看新闻没? 小鱼:新闻天天看,啥事大惊小怪的。 小屌…...
Unity vscode在mac上的编译环境设置
在settings.json文件中配置以下信息。 settings.json路径一般在/Users/xxx/Library/Application Support/Code/User/settings.json {"omnisharp.useGlobalMono": "always","editor.fontLigatures": false,"omnisharp.useModernNet": …...
【Java】在高并发场景下,保证 Redis 缓存一致性的几种方案
在高并发场景下,保证 Redis 缓存一致性是一个常见的挑战。以下是几种常见的解决方案及其优缺点,以及相应的代码示例。 1. Cache Aside Pattern (旁路缓存模式) 原理 读取数据时,先读缓存,如果缓存没有命中,再从数据…...
GaussDB数据库的备份与恢复
1.逻辑备份-gs_dump gs_dump是一款用于导出数据库相关信息的工具,支持导出完整一致的数据库对象(数据库、模式、表、视图等)数据,同时不影响用户对数据库的正常访问。 备份sql语句 gs_dump是openGauss用于导出数据库相关信息的工…...
03-02-Vue组件之间的传值
前言 我们接着上一篇文章 03-01-Vue组件的定义和注册 来讲。 下一篇文章 04-Vue:ref获取页面节点–很简单 父组件向子组件传值 我们可以这样理解:Vue实例就是一个父组件,而我们自定义的组件(包括全局组件、私有组件)…...
昂达固态硬盘数据恢复方法:全面解析与操作指南
在数字化时代,数据已经成为我们生活和工作中不可或缺的一部分。而固态硬盘(SSD)由于其读写速度快、抗震性强等优点,慢慢取代了传统的机械硬盘,成为我们存储数据的主要选择。然而,即便再先进的存储设备&…...
C++的红黑树
目录 基本概念 插入结点的颜色 判断性质是否破坏 调整方式 u为g的右孩子 u存在且为红 u存在且为黑 u不存在 结论 红黑树结点定义 代码实现 基本概念 1、红黑树是一种特殊的二叉搜索树,每个结点会增加一个存储位表示结点的颜色(红或黑&#x…...
Keras深度学习框架第二十九讲:在自定义训练循环中应用KerasTuner超参数优化
1、简介 在KerasTuner中,HyperModel类提供了一种方便的方式来在可重用对象中定义搜索空间。你可以通过重写HyperModel.build()方法来定义和进行模型的超参数调优。为了对训练过程进行超参数调优(例如,通过选择适当的批处理大小、训练轮数或数…...
手机App收集个人信息,用户是否有权拒绝?
其实过度收集个人信息这件事,在APP上随处可见,泛滥成灾。 前两天有个不疼不痒的小软件“小鸡词典”,因为收集个人信息受到了处罚。 小鸡词典因划分为工具类APP过度收集隐私(手机号、地理位置定位)、不同意政策不能用…...
云下到云上,丽迅物流如何实现数据库降本50% | OceanBase案例
在2024年3月20日的首场OceanBase数据库城市行活动中,专注于物流及供应链解决方案的丽迅物流的架构师阳磊,围绕“OB Cloud在丽迅物流的实践”这一主题,进行了精彩的演讲。本文为此次演讲的内容回顾。 在丽迅物流(Lesoon Logistics…...
STM32无源蜂鸣器播放音乐
开发板:野火霸天虎V2 单片机:STM32F407ZGT6 开发软件:MDKSTM32CubeMX 文章目录 前言一、找一篇音乐的简谱二、确定音调三、确定节拍四、使用STM32CubeMX生成初始化代码五、代码分析 前言 本实验使用的是低电平触发的无源蜂鸣器 无源蜂鸣器是…...
【云原生】kubernetes中的认证、权限设置---RBAC授权原理分析与应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
【Python设计模式04】策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互相替换。策略模式让算法的变化不会影响使用算法的客户端,使得算法可以独立于客户端的变化而变化。…...
私域用户画像分析:你必须知道的3个关键点!
在互联网时代的变革中,私域流量成为越来越多企业的关注焦点。而了解私域用户画像是建立精准营销策略的关键一步。 今天,就给大家分享私域用户画像分析的三个关键点,让大家都能更好地进行用户画像分析。 1、市场需求 理解市场需求是把握用户…...
【MATLAB源码-第74期】基于matlab的OFDM-IM索引调制系统不同频偏误码率对比,对比OFDM系统。
操作环境: MATLAB 2022a 1、算法描述 OFDM-IM索引调制技术是一种新型的无线通信技术,它将正交频分复用(OFDM)和索引调制(IM)相结合,以提高频谱效率和系统容量。OFDM-IM索引调制技术的基本思想…...
优于其他超导量子比特数千倍!猫态量子比特实现超过十秒的受控比特翻转时间
内容来源:量子前哨(ID:Qforepost) 文丨娴睿/慕一 排版丨沛贤 深度好文:2000字丨8分钟阅读 摘要:量子计算公司Alice & Bob和QUANTIC团队(国立巴黎高等矿业学院PSL分校、巴黎高等师范学院和…...
QtXlsx库编译使用
文章目录 一、前言二、Windows编译使用2.1 用法①:QtXlsx作为Qt的附加模块2.1.1 检验是否安装Perl2.1.2 下载并解压QtXlsx源码2.1.3 MinGW 64-bit安装模块2.1.4 测试 2.2 用法②:直接使用源码 三、Linus编译使用3.1、安装Qt5开发软件包:qtbas…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
