
Golang实战
文章平均质量分 83
Golang是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。
AI天才研究院
中国程序员光剑,AI天才研究院和光剑读书创始人兼CEO。
展开
-
SafeSlice:Golang实现一个协程安全的 Slice 结构工具类
【代码】SafeSlice:Golang实现一个协程安全的 Slice 结构工具类。原创 2025-02-20 17:29:07 · 28 阅读 · 0 评论 -
【亲测 Qwen2.5-Coder-7B-instruct】http chunk 输出流式数据、实现 SSE 流式文本输出源代码 golang
在Go语言中,你可以使用HTTP响应的Chunked Transfer Encoding来实现流式输出数据。这种编码方式允许服务器在不知道最终数据大小的情况下逐块传输数据。下面是一个简单的示例,展示如何在Go中实现流式输出数据。示例代码解释这行代码设置了响应头中的Transfer-Encoding为chunked,表示服务器将使用分块传输编码。使用类型断言将w转换为http.Flusher接口,以便调用Flush方法。这个循环模拟了从数据源中逐块读取数据并将其发送给客户端的过程。原创 2024-12-02 16:26:21 · 120 阅读 · 0 评论 -
【字节跳动面试100题精讲】什么是死锁?如何避免死锁?
死锁是指两个或多个进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象。在这种情况下,如果没有外部干预,这些进程都将无法继续执行下去。为了更好地理解死锁,我们可以通过一个简单的流程图来展示:fill:#333;color:#333;color:#333;fill:none;请求资源2请求资源1无法释放无法释放进程A资源2被进程B占用资源1被进程A占用。原创 2024-09-23 20:16:00 · 320 阅读 · 0 评论 -
【字节跳动面试100题精讲】程序、进程、线程和协程的概念原理区别是什么?
在计算机科学中,程序、进程、线程和协程是四个密切相关但又有明显区别的概念。它们共同构成了现代操作系统和应用程序的基础,对于理解计算机系统的运行机制至关重要。随着多核处理器的普及和并发编程的广泛应用,深入理解这些概念变得越来越重要。趋势:协程在高并发场景中的应用将更加广泛混合使用进程、线程和协程以优化性能挑战:多核CPU的有效利用并发程序的正确性和性能优化分布式系统中的并发控制协程(Coroutine)是一种用户态的轻量级线程,它的调度完全由用户控制。原创 2024-09-23 20:13:45 · 724 阅读 · 0 评论 -
Go语言的goroutines:可以在多核上并行执行,Go运行时会自动管理实现机制与代码详解
Go语言(Golang)自诞生以来,以其简洁的语法、高效的并发模型和强大的标准库赢得了众多开发者的青睐。作为一种现代编程语言,Go的设计初衷之一就是充分利用多核处理器的计算能力,以应对当今复杂的软件开发需求。在这个背景下,goroutines作为Go语言并发编程的核心特性应运而生。goroutines是Go语言中的轻量级线程,它们由Go运行时(runtime)管理,能够在多核处理器上实现真正的并行执行。原创 2024-09-11 02:26:37 · 579 阅读 · 0 评论 -
【字节跳动面试算法题】定义出图模型、树模型数据结构并实现数据模型互相转换
【字节跳动面试算法题】定义出图模型、树模型数据结构并实现数据模型互相转换原创 2024-08-22 00:37:03 · 97 阅读 · 0 评论 -
互联网技术架构全栈技术管理核心能力
随着互联网技术的快速发展,企业对于技术架构的要求越来越高。从单体应用向分布式架构转变,从传统IT向云计算、大数据、人工智能等领域拓展,技术架构的复杂性日益增加。如何构建高效、可靠、可扩展的技术架构,成为了企业IT部门面临的重要挑战。技术管理人员需要具备良好的思考总结能力,能够对工作过程中遇到的问题进行分析和总结。日志记录:记录工作日志,总结经验教训。思考笔记:定期进行思考笔记,梳理思路,总结经验。反思总结:对工作中的问题进行反思总结,寻找解决方案。原创 2024-06-25 00:28:16 · 292 阅读 · 2 评论 -
【编程实战】用golang实现DAG scheduler代码
DAG,指directed acyclic graph,是一个有向无环图。在计算机科学中,DAG 通常用于描述计算依赖关系,比如在数据流编程中,DAG 可以表示数据流图,其中节点表示操作,边表示数据依赖关系。scheduler,即调度器,是系统中负责管理和分配资源的组件。在计算机系统中,scheduler 可以根据 différents 策略调度任务,以实现 load balancing 和 resource utilization。原创 2024-03-19 00:37:30 · 321 阅读 · 0 评论 -
【编程实践】使用golang 解析json字符串代码 / 使用 golang 实现一个HashSet / 使用C语言实现KMP算法,并加上非常详尽的注释。
【代码】【编程实践】使用 golang 实现一个HashSet / 使用C语言实现KMP算法,并加上非常详尽的注释。原创 2023-03-02 03:01:39 · 22858 阅读 · 0 评论 -
【人工智能 Open AI】设计一个SQL Where DSL模型,使用 golang 代码来实现DSL的翻译成SQL。
设计一个SQL Where DSL模型,使用 golang 代码来实现DSL的翻译成SQL。原创 2023-02-22 02:33:41 · 24702 阅读 · 0 评论 -
Go语言实战:工具和包管理之Golang标准库
1.背景介绍1. 背景介绍Go语言,也被称为Golang,是一种静态类型、编译式、多平台的编程语言。它于2009年由Google的工程师Robert Griesemer、Rob Pike和Ken Thompson开发。Go语言的设计目标是简单、高效、可靠和易于扩展。它的核心特点是强大的并发支持、简洁的语法和高性能。Golang标准库是Go语言的核心组成部分,提供了大量的功能和工具,包括...原创 2024-01-21 03:35:34 · 924 阅读 · 0 评论 -
Go语言实战:使用golang.org_x_oauth2_google包进行GoogleAPI访问
1.背景介绍1. 背景介绍Go语言(Golang)是Google开发的一种静态类型、垃圾回收、并发简单的编程语言。Go语言的设计目标是让程序员更容易地编写并发程序。Go语言的核心特性是简单、高效、并发性能强。Google API是一种基于REST的API,用于访问Google服务。Google API通常需要进行身份验证,以确保只有授权的应用程序可以访问API。OAuth 2.0是一种...原创 2024-01-28 14:32:50 · 975 阅读 · 0 评论 -
使用Docker进行Golang容器化
1.背景介绍1. 背景介绍Golang,也称为Go,是一种现代的编程语言,由Google的Robert Griesemer、Rob Pike和Ken Thompson在2009年开发。Go语言旨在简化系统编程,提高开发效率,并在多核处理器上充分利用资源。Docker是一种开源的应用容器引擎,它使用一种名为容器的虚拟化方法来隔离软件应用的运行环境。Docker允许开发人员将应用程序和其所...原创 2024-01-21 03:41:43 · 902 阅读 · 0 评论 -
Golang 的分布式系统:架构与实践
1.背景介绍分布式系统是现代计算机科学的一个重要领域,它涉及到多个计算机节点之间的协同工作,以实现共同完成某个任务或提供某种服务。随着互联网的普及和大数据时代的到来,分布式系统的应用范围和规模不断扩大,成为了企业和组织中不可或缺的基础设施。Golang,又称 Go,是 Google 发起的一种新型的编程语言。它具有简洁的语法、高性能的编译器和运行时支持,以及强大的并发处理能力。这使得 Go...原创 2023-12-31 01:08:05 · 1277 阅读 · 0 评论 -
Docker与Golang容器的运用
1.背景介绍Docker是一个开源的应用容器引擎,它使用标准的容器技术,可以将软件应用程序与其依赖包装在一个容器中,使其在任何环境中都能运行。Golang是一种静态类型、编译型的编程语言,它的设计目标是简单且易于使用,同时具有高性能和高效的编译速度。在现代软件开发中,容器化技术已经成为了一种常见的软件部署和运行方式。Docker作为一种容器技术,已经广泛应用于各种场景,包括Web应用、数据...原创 2024-01-18 02:04:04 · 972 阅读 · 0 评论 -
Go 协程与并发编程实践
Go 协程(goroutine)是 Go 语言中的轻量级线程,它们由 Go 运行时管理。协程的创建、调度和销毁都非常轻量级,因此可以创建大量的协程,从而实现高度并发。轻量级:协程的开销很小,可以创建大量的协程。高度并发:协程之间可以并发执行,提高了程序性能。协作式并发:协程之间通过 channels 进行通信,避免了锁和其他同步原语。抢占式调度:Go 运行时会根据协程的执行情况进行调度,提高了并发性能。原创 2023-12-27 21:55:51 · 461 阅读 · 0 评论 -
Golang 使用正则来匹配出子字符串函数
const SERVICE_IMPL_RULE = ".*?\\.NewServer\\(new\\((.*?)\\)\\)"// getServiceImpl 返回: CompassInsightServiceImpl//{{ .ServiceImpl }} = CompassInsightServiceImpl// svr := insight_service.NewServer(ne...原创 2022-06-26 15:49:27 · 8857 阅读 · 0 评论 -
使用 Go 编程语言 66 个陷阱:Golang 开发者的陷阱和常见错误指北
概述Go 是一种简单而有趣的语言,但是,与任何其他语言一样,它也有一些陷阱……其中许多陷阱并不完全是 Go 的错。如果您来自另一种语言,其中一些错误是自然陷阱。其他是由于错误的假设和缺少细节。初学者:不能将左大括号放在单独的行上未使用的变量未使用的进口短变量声明只能在函数内部使用使用短变量声明重新声明变量不能使用短变量声明来设置字段值意外变量阴影不能使用“nil”来初始化...原创 2022-06-23 10:20:56 · 8935 阅读 · 0 评论 -
Go必知必会系列:GUI开发与Golang
作者:禅与计算机程序设计艺术 1.背景介绍GUI(Graphical User Interface)即图形用户界面,是人机交互界面的一种,它通过图形化的方式向用户提供多种输入方式,支持任务的快速完成,并提升了用户的工作效率。在互联网应用、办公自动化等领域中,GUI的广泛应用促进了用户界面设计的革新原创 2023-10-20 00:57:52 · 718 阅读 · 1 评论 -
Go入门实战:错误处理与调试技巧
1.背景介绍在使用编程语言进行开发时,尤其是在面对复杂的业务逻辑场景、多人协作开发及快速迭代开发中,如何处理错误、控制运行状态、提升软件质量以及优化软件性能等等成为一个难点。相信很多开发人员都会遇到这样或者那样的问题。本文将通过编写真实案例,来分享自己对于错误处理、调试、性能分析方面的一些心得体会,并针对这些问题展开讨论。由于篇幅所限,本文不会涉及太原创 2023-11-10 01:29:21 · 138 阅读 · 0 评论 -
Go必知必会系列:网络安全与加密
1.背景介绍概念简介网络安全是指保障计算机网络通信、数据传输和资源共享的安全性、可用性和完整性。由于信息的快速传递和海量数据的产生,计算机网络安全已经成为人们越来越关注的问题。网络安全产品的研发必须符合相关法律法规和行业规范,并考虑到用户的实际需求,提升用户体验。计算机安全是一个复杂的领域,涉及原创 2023-11-10 01:28:50 · 127 阅读 · 0 评论 -
Go语言学习笔记——通过示例代码和详尽的解释来帮助初学者理解Golang的核心概念
Go 是一种静态类型的、编译型、并发执行的编程语言,由 Google 创建于 2009 年。Go 拥有编译时类型检查、自动内存管理、安全高效运行等特性,能够在一些领域解决一些难题,如实时系统开发、云计算服务构建、分布式系统开发等。Go 是开源的,免费提供给所有人使用。前言里简单介绍了 Golang 以及为什么要学习它。接下来从环境安装到语法基础再到简单的编程实例,带领大家全面掌握 Golang。最后,对 Golang 提供的支持、参考资源做一些回顾。原创 2023-08-01 01:55:47 · 2123 阅读 · 28 评论 -
【架构实践】一致性Hash算法原理图文详解 & 使用 golang 实现
一致性哈希算法的优点在于它具有较好的负载均衡性和容错性,因为当节点数量改变时,只会影响到精确映射到该节点的数据,而大部分数据仍然可以被映射到原来的节点上。在分布式存储中,一致性Hash算法通常用来*将数据分散到不同的节点上,从而实现数据的快速查找和高效负载均衡。因此,在实际应用中,需要根据具体的场景和需求,选择合适的算法和策略来保证系统的可靠性和性能。以上仅是一些常见的应用场景,实际上,一致性Hash算法在分布式系统中的应用非常广泛,几乎涵盖了所有需要进行数据分片和负载均衡的场景。原创 2023-03-06 01:50:29 · 27254 阅读 · 0 评论 -
【数据结构与算法】FST 有穷状态转换器详解:Finite State Transducers & 算法核心思想和代码实现(Golang语言)
Finite State Transducers 简称 FST, 中文名:有穷状态转换器。FST 是一种类似于Trie 或自动机的数据结构。FST 可以表示成FST<Key, Value>的形式,我们可以用O(length(key))的复杂度,找到key所对应的值。除此之外,FST 还支持用Value来查找key以及查找Value最优的key等功能。在查找最优的Value时,会用到求最短路径的Dijikstra算法,但建图过程与此无关。原创 2023-03-21 21:27:52 · 20501 阅读 · 0 评论 -
Golang基于CGO的动态链接库调用利用CGO特性编写可跨平台调用的动态链接库
在Go语言中,支持CGO,也就是说可以通过调用C语言函数来实现Go语言代码。通过调用C语言函数可以节省资源,提升性能。但是,在调用C语言函数的时候需要注意一些细节。需要写C语言的头文件,该头文件需要包含要调用的C语言函数声明,并在源代码中包含这个头文件;在编译Go语言源码时,需要指定相应的链接参数,包括导入的静态库(如libm.a)、动态库(如libcrypto.so)等;虽然可以使用cgo关键字导入头文件,但仍然需要手工处理动态库的导入和链接。原创 2023-07-29 02:02:38 · 1925 阅读 · 7 评论 -
【数据结构与算法】用 golang 实现 LSM Tree 算法代码
LSM Tree(Log-Structured Merge Tree)是一种用于实现高效写入和读取的数据结构,通常用于数据库中。包括一个或多个层次结构,每个层次结构都有一个固定大小的内存缓存和一个磁盘文件。例如 MemTable 的大小、磁盘文件的最大大小等。原创 2023-03-14 23:08:58 · 23011 阅读 · 0 评论 -
Golang 中的 Makefile 原理及使用方法
作者:禅与计算机程序设计艺术 1.背景介绍Makefile 是开发过程中必不可少的工具之一,它可以帮助我们自动化地构建、编译、测试、发布项目等流程。Golang 自带的 Make 命令对 Makefile 的支持也相当不错,但还是有一些细节需要注意,比如如何管理依赖关系、跨平台构建等。本文将主要从原创 2023-10-10 01:19:18 · 1266 阅读 · 5 评论 -
【数据结构与算法】使用 golang 实现 lsm tree 算法代码
总的来说,LSM树是一种高效的数据结构,适用于大规模数据的存储和管理。但是,它也有一些缺点,需要在实际应用中进行权衡和选择。原创 2023-03-17 13:27:16 · 25614 阅读 · 0 评论 -
Go必知必会系列:GUI开发与Golang
作者:禅与计算机程序设计艺术 1.简介Go语言是一个开源的编程语言,在网络服务、系统工具、云基础设施等方面都有很大的应用前景。作为一门优秀的新型语言,Go拥有出色的并发性能表现,可以轻松地编写高效且健壮的代码,同时也带来了诸如接口的动态特性和丰富的标准库支持。针对软件开发领域里面的图形原创 2023-09-25 00:36:42 · 3790 阅读 · 14 评论 -
Go语言开发Web应用实战——这本书介绍了如何用Golang开发Web应用,涵盖从基础概念到实践应用等内容
2019年是第四个十年科技革命的开端,也是Golang被广泛应用的一个年份。这几年,Golang的热度不断提升,在开源社区及企业内部也出现了一批拥抱Go的优秀人员。每当我听到有人宣传“Golang开发更快、更安全、更高效”,或者推荐“Go语言入门”时,都会觉得不可思议。Golang作为新一代的编程语言,非常适合用来开发复杂的分布式系统,但同时它也非常简单易懂,可以轻松地学习掌握。在本书中,你将从零开始构建一个完整的基于Golang+Vue.js+MySQL Web应用程序。原创 2023-07-29 01:40:03 · 1383 阅读 · 6 评论 -
【架构实战】在使用 LLM 大模型服务过程中,怎样实现数据脱敏? 给出一个数据安全的脱敏方案:具体的方案原理,实操步骤,编程语言使用golang
本文介绍了一种数据安全的脱敏方案,包括方案原理、实操步骤和 Markdown 格式的示例代码。该方案通过对称加密算法和密钥管理技术实现数据脱敏,可以确保数据在处理过程中的安全性和隐私性。在实际使用中,您需要根据自己的需要选择合适的加密算法和密钥管理技术,并将密钥保存在安全的位置,以确保数据的安全性。原创 2023-06-08 22:21:10 · 13846 阅读 · 44 评论 -
【GPT-4】用 golang 实现 LSM Tree 算法代码
上面的代码展示了 LSM Tree 的一个简单Go实现。为了使代码更简单和易于理解,某些特性如compaction和bloom filters并未包含在这个示例中。从这里开始,你可以完善flushMemtableToSST函数来直接使用Go函数调用磁盘操作,并在需要时添加缺失的功能。这里是一个简单的LSM Tree(Log-Structured Merge Tree)实现的概述。完整代码将会非常长,因此你可以根据下面的实现思路来自行实现。原创 2023-04-11 15:03:01 · 21978 阅读 · 0 评论 -
用 golang 实现 LSM Tree 代码
这是一个简单的 LSM Tree 实现,只有一个 memtable 和一个 level0,以及一个 levels 数组,其中 level0 和 levels 数组都是有序的 map。如果 levels 中的数量达到一定值,也会进行合并和排序。需要注意的需要注意的是,Print 方法只适用于测试和验证 LSM 树的正确性,它并不是 LSM 树的一部分,也不应该在实际的应用中使用。如果您需要在实际的项目中使用 LSM 树,建议先进行充分的学习和熟悉,避免出现一些难以排查和维护的问题。原创 2023-05-16 20:34:01 · 13841 阅读 · 27 评论 -
WizardCoder:写代码能力测评 Use Golang Write LSM tree code (WizardCoder-15B)
【代码】WizardCoder:写代码能力测评 Use Golang Write LSM tree code。原创 2023-06-22 00:42:13 · 10055 阅读 · 28 评论 -
Go必知必会系列:并发模式与锁
Golang从2009年诞生至今已经十多年的时间了,而它的并发特性也已经成为开发者们非常关注的问题。多线程、协程等编程模型虽然可以提高并行处理能力,但同时也带来了复杂性问题,导致编码难度变高,维护困难等一系列问题。为了解决并发编程中的各种问题,Golang在语言层面上提供了一些并发模式和同步机制,使得开发者可以方便地进行多线程和协程编程。这篇文章将要对Golang中最常用的几种并发模式和同步机制做个简要介绍,并结合具体的代码实例进一步阐述其工作原理。原创 2023-11-04 03:09:58 · 155 阅读 · 0 评论 -
Go编程基础教程:面向对象编程入门
面向对象编程(Object-Oriented Programming,简称OOP)是一种基于类的编程范式,它把复杂的问题分解成各个类之间的交互,通过抽象数据类型和继承机制将功能和数据组织在一起。类可以封装数据、处理逻辑以及实现方法,同时还可以对外提供接口供其他类调用。因此,面向对象编程使得代码更易维护、更容易复用和扩展,是现代编程的一个重要特征。抽象就是将复杂事物的本质特征和行为隐藏起来,只呈现重要特征和行为。原创 2023-11-03 00:54:45 · 176 阅读 · 1 评论 -
Go必知必会系列:函数式编程与Go
作者:禅与计算机程序设计艺术 1.背景介绍函数式编程(Functional Programming)是一个非常重要的编程范式。它强调把计算看做是函数运算,并且数据不可变。通过纯函数、高阶函数、闭包、惰性求值等方法,可以使程序更加容易理解和维护。在Go语言中,提供了对函数式编程支持,包括匿名函数、闭原创 2023-11-02 02:23:56 · 173 阅读 · 0 评论 -
Go必知必会系列:并发编程与Goroutines
作者:禅与计算机程序设计艺术 1.背景介绍Go语言Go语言(简称Go)是一种开源的、高效的编程语言,由Google开发并在2010年首次发布。Go语言的诞生是为了满足互联网公司对高性能、可扩展性的需求,它具有C语言的高性能和Java语言的简单易用性。Go语言原创 2023-10-30 01:30:27 · 145 阅读 · 2 评论 -
Go必知必会系列:容器化与Docker
作者:禅与计算机程序设计艺术 1.背景介绍容器是一个可以打包、部署和运行应用程序的轻量级隔离环境。它使得开发者和系统管理员能够打包应用程序及其依赖项到一个标准化的单元中并简化了应用程序的分发和部署流程。容器化意味着将应用程序从宿主机环境中分离出来,这样就可以在不同的服务器上或云平台上运行。dock原创 2023-10-29 01:52:30 · 156 阅读 · 0 评论 -
Go编程基础教程:网络编程入门
作者:禅与计算机程序设计艺术 1.背景介绍Go语言作为2009年发布的开源编程语言,其应用范围和普及率都非常广泛,已成为现代开发者不可多得的选择。本文将通过Go语言网络编程部分知识点,对网络编程的基本知识、原理、算法模型、具体操作步骤等方面进行详细讲解,并配合完整的代码实例实现一个简单的Web服务原创 2023-10-28 02:13:23 · 146 阅读 · 4 评论