经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
 Go语言

Go 互斥锁 Mutex 源码分析(二)

原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 Go 互斥锁 Mutex 源码分析(一) 一文中分析了互斥锁的结构和基本的抢占互斥锁的场景。在学习锁的过程中,看的不少文章是基于锁的状态解释的,个人经验来看,从锁的状态出发容易陷入细节,了解锁的状态转换过一段时间就忘,难以做到真正的...[2024/8/26]

Viper:强大的Go配置解析库 - Hello-Brand

1 介绍 Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。目前Star 26.6k, 它支持以下特性: 设置默认值 从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置...[2024/8/20]

从零到一:用Go语言构建你的第一个Web服务

从零到一:用Go语言构建你的第一个Web服务

使用Go语言从零开始搭建一个Web服务,包括环境搭建、路由处理、中间件使用、JSON和表单数据处理等关键步骤,提供丰富的代码示例。 关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,复旦机器人智能实验室成员,国家级大...[2024/8/7]

2024-07-31:用go语言,给定两个正整数数组arr1和arr2,我们要找到属于arr1的整数x和属于arr2的整数y组成的所有数对(x, y)中,具有最长公共前缀的长度。 公共前缀是指两个数的

2024-07-31:用go语言,给定两个正整数数组arr1和arr2,我们要找到属于arr1的整数x和属于arr2的整数y组成的所有数对(x, y)中,具有最长公共前缀的长度。 公共前缀是指两个数的最左边的一位或多位数字相同的部分。例如,对于整数5655359和56554来说,它们的公共前缀...[2024/7/31]

golang对遍历目录操作的优化

一转眼go1.23都快发布了,时间过得真快。 不过今天我们把时间倒流回三年半之前,来关注一个在go1.16引入的关于处理目录时的优化。 对于go1.16的新变化,大家印象最深的可能是io包的大规模重构,但这个重构实际上还引进了一个优化,这篇文章要说的就是这个优化。 本文默认Linux环境,...[2024/7/31]

番外2: go语言写的简要数据同步工具

番外2: go语言写的简要数据同步工具

go-etl工具 作为go-etl工具的作者,想要安利一下这个小巧的数据同步工具,它在同步百万级别的数据时表现极为优异,基本能在几分钟完成数据同步。 1.它能干什么的? go-etl是一个数据同步工具集,目前支持MySQL,postgres,oracle,SQL SERVER,DB2等主流...[2024/7/22]

美团VS饿了么,到底谁更胜一筹?

最近啊,收到一个粉丝的投稿,我发现他在美团和饿了么都去面试过。 这俩企业大家应该都经常用吧,咱点外卖的时候,我有时候就琢磨,到底他俩谁更厉害点。 今天咱们就瞅瞅,在面试这块儿谁更难一些。 (目前都只有一面的情况,要是想要后续的,私聊我发给你哈) 美团 一面 自我介绍 项目做完了吗?背景是...[2024/7/19]

解码 xsync 的 map 实现

解码 xsync 的 map 实现

解码 xsync 的 map 实现 最近在寻找 Go 的并发 map 库的时候,翻到一个 github 宝藏库,xsync (https: github.com/puzpuzpuz/xsync) 。这个库提供了一些支持并发的数据结构,计数器Counter,哈希 Map,队列Queue。我着重看了...[2024/7/17]

2024-07-13:用go语言,给定一个从0开始的长度为n的整数数组nums和一个从0开始的长度为m的整数数组pattern,其中pattern数组仅包含整数-1、0和1。 一个子数组nums[i.

2024-07-13:用go语言,给定一个从0开始的长度为n的整数数组nums和一个从0开始的长度为m的整数数组pattern,其中pattern数组仅包含整数-1、0和1。 一个子数组nums[i..j]的大小为m+1,如果满足以下条件,则我们称该子数组与模式数组pattern匹配: 1....[2024/7/13]

boltdb一瞥

boltdb 网上关于boltdb的文章有很多,特别是微信公众号上,例如: boltdb源码分析系列-事务-腾讯云开发者社区-腾讯云 (tencent.com) 这些文章都写的挺好,但不一定覆盖了我所关注的几个点,下面我把我关注的几个点就来下来。 node page bucket tx db...[2024/7/12]

[golang]在Gin框架中使用JWT鉴权

什么是JWT JWT,全称 JSON Web Token,是一种开放标准(RFC 7519),用于安全地在双方之间传递信息。尤其适用于身份验证和授权场景。JWT 的设计允许信息在各方之间安全地、 compactly(紧凑地)传输,因为其自身包含了所有需要的认证信息,从而减少了需要查询数据库或会话...[2024/7/3]

Golang 依赖注入设计哲学|12.6K 🌟 的依赖注入库 wire

一、前言 线上项目往往依赖非常多的具备特定能力的资源,如:DB、MQ、各种中间件,以及随着项目业务的复杂化,单一项目内,业务模块也逐渐增多,如何高效、整洁管理各种资源十分重要。 本文从“术”层面,讲述“依赖注入”的实现,带你体会其对于整洁架构 & DDD 等设计思想的落地,起到的支撑作...[2024/7/3]

2024-06-19:用go语言,给定一个起始下标为 0 的整数数组 nums 和一个整数 k, 可以执行一个操作将相邻两个元素按位AND后替换为结果。 要求在最多执行 k 次操作的情况下, 计算数组

2024-06-19:用go语言,给定一个起始下标为 0 的整数数组 nums 和一个整数 k, 可以执行一个操作将相邻两个元素按位AND后替换为结果。 要求在最多执行 k 次操作的情况下, 计算数组中所有元素按位OR后的最小值。 输入:nums = [3,5,3,2,7], k = 2...[2024/6/19]

golang reflect 反射机制的使用场景

  Go语言中的 reflect 包提供了运行时反射机制,允许程序在运行时检查和操作任意对象的数据类型和值。   以下是 reflect 包的一些典型使用场景:   1. 动态类型判断与转换:当需要处理多种类型的变量且具体类型直到运行时才能确定时,可以使用...[2024/6/13]

这么简单的问题都不会,那还面试什么!?

这么简单的问题都不会,那还面试什么!?

最近群里的讨论太猛了,硝烟味很重,有的群友直接开怼:这么简单的问题都不会,那你还面试什么呀?我一看这不就是很简单的数组和切片的区别嘛。 本文来自专栏:Go入门进阶实战专栏:其实学Go很简单。,欢迎订阅。 在 Go 语言的丰富数据类型中,数组和切片是处理有序数据集合的强大工具。它们允许开发...[2024/6/13]

golang sync.Map 与使用普通的 map 的区别

  使用sync.Map与普通的Go map主要有以下几点区别: 1. 并发安全性   普通map: 在没有外部同步的情况下,不是并发安全的。在多goroutine访问时,如果没有适当的锁或其他同步机制保护,可能会导致数据竞争和未定义行为。   sync.Map: 是并发安全...[2024/6/12]

如何基于R包做GO分析?实现秒出图

GO分析   基因本体论(Gene Ontology, GO)是一个用于描述基因和基因产品属性的标准术语体系。它提供了一个有组织的方式来表示基因在生物体内的各种角色。基因本体论通常从三个层面对基因进行描述:细胞成分(Cellular Component,CC)、生物学过程(Biolo...[2024/6/12]

golang 的 net/http 和 net/rpc 的区别, rpc 效率比 http 高?

golang 的 net/http 和 net/rpc 的区别, rpc 效率比 http 高?

  在Go语言中,net/http 和 net/rpc 是两个不同的包,它们分别用于实现不同的网络通信模式: net/http:   net/http 包主要用于构建Web服务和客户端,它实现了HTTP协议,这是互联网上最广泛使用的应用层协议之一,主要用于传输超文本(HTML)和...[2024/6/5]

containerd 源码分析:创建 container(三)

文接 containerd 源码分析:创建 container(二) 1.2.2.2 启动 task 上节介绍了创建 task,task 创建之后将返回 response 给 ctr。接着,ctr 调用 task.Start 启动容器。 containerd/client/task.g...[2024/6/5]

golang开发 gorilla websocket的使用

很多APP都需要主动向用户推送消息,这就需要用到长连接的服务,即我们通常提到的websocket,同样也是使用socket服务,通信协议是基本类似的,在go中用的最多的、也是最简单的socket服务就是gorilla/websocket,它有21.1K的star,足以说明它的受欢迎程度, 它的...[2024/5/31]

containerd 源码分析:启动注册流程

0. 前言 containerd 是一个行业标准的容器运行时,其强调简单性、健壮性和可移植性。本文将从 containerd 的代码结构入手,查看 containerd 的启动注册流程。 1. 启动注册流程 1.1 containerd 首先以调试模式运行 containerd: co...[2024/5/22]

golang select 和外层的 for 搭配

  select语句通常与for循环搭配使用,但并不是必须的。 在某些情况下,select可能会直接放在一个独立的goroutine中,没有外层的for循环。 这通常发生在你知道只会有一次或有限次操作的情况下。 例如,你可能有一个简单的goroutine,它等待一个特定的cha...[2024/5/22]

两种解法搞定Swap Nodes in Pairs算法题

最近还是很喜欢用golang来刷算法题,更接近通用算法,也没有像动态脚本语言那些语法糖,真正靠实力去解决问题。 下面这道题很有趣,也是一道链表题目,具体如下: 24. Swap Nodes in Pairs Solved Medium Topics Companies Given a l...[2024/4/19]

Go语言的100个错误使用场景(61-68)|并发实践

目录前言9. 并发实践9.1 context 的不恰当传播(#61)9.2 开启一个协程但不知道何时关闭(#62)9.3 在循环中没有谨慎使用协程(#63)9.4 使用 select 和 channel 期待某个确定的行为(#64)9.5 不使用用于通知的 channel(#65)9.6 不使用...[2024/4/15]

实战:如何优雅的从 Skywalking 切换到 OpenTelemetry

背景 最近公司将我们之前使用的链路工具切换为了 OpenTelemetry. 我们的技术栈是: OTLP Client──────────?Collect────────?StartRocks (Agent...[2024/4/10]

pprof - 在现网场景怎么用

如何使用 pprof 来定位现网 Golang 问题,已经是一名 Gopher 所需要掌握的必备技能了。我们在实际工作中也经常使用它来定位现网问题。网上有很多文章来描述 pprof 的使用,但是实际的线上使用场景,却和各个文章的描述的多少有些差异。 比如网上大部分文章都会告诉你,使用命令行打开...[2024/4/8]

标准库unsafe:带你突破golang中的类型限制

标准库unsafe:带你突破golang中的类型限制

本文分享自华为云社区《突破语言golang中的类型限制》,作者:码乐。 1 简介 在使用c语言编程时,常常因为类型的问题大伤脑筋,而其他语言比如java,python默认类型又是难以改变的,golang提供了一些方式用于喜欢hack的用户。 2 标准库unsafe的简单介绍 官方说明标准...[2024/3/29]

使用Go语言开发一个短链接服务:一、基本原理

章节 ?使用Go语言开发一个短链接服务:一、基本原理   ?使用Go语言开发一个短链接服务:二、架构设计 ?使用Go语言开发一个短链接服务:三、项目目录结构设计 ?使用Go语言开发一个短链接服务:四、生成code算法 ?使用Go语言开发一个短链接服务:五、添加和获取短链接 ?使用Go...[2024/3/27]

分享一个项目:go `file_line`,在编译期得到源码行号,减少运行期runtime消耗

分享一个项目:go `file_line`,在编译期得到源码行号,减少运行期runtime消耗

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 file_line https: github.com/ahfuzhang/file_line Like __FILE__/__LINE__...[2024/3/27]

golang gc的内部优化

今天讲一个常见的gc compiler(也就是官方版本的go编译器和runtime)在垃圾回收的扫描标记阶段做的优化。 我对这个优化的描述印象最深的是在bigcache的注释里,大致内容是如果map的键值都不包含指针,那么gc扫描的时候不管这个map多大都不会深入扫描map内部存储的数据,只检...[2024/3/26]

fyne - 谁说用Go不能开发应用界面

fyne - 谁说用Go不能开发应用界面

fyne项目介绍 fyne 是一个纯 Golang 的跨平台 GUI 库,跨平台库说实话,是有很多选择的,Flutter、Electron、QT等。fyne 绝对不是一个很大众的选择。但是在我,一名后端程序员尝试使用 Electron实现一个简单的番茄时钟,痛苦地在使用 js 如何在渲染进程和主...[2024/3/22]

golang sync.Map之如何设计一个并发安全的读写分离结构?

在 golang中,想要并发安全的操作map,可以使用sync.Map结构,sync.Map 是一个适合读多写少的数据结构,今天我们来看看它的设计思想,来看看为什么说它适合读多写少的场景。 如下,是golang 中sync.Map的数据结构,其中 属性read 是 只读的 map,dirt...[2024/3/20]

golang 依赖控制反转(IoC) 改进版

  最近在开发基于golang下的cqrs框架 https: github.com/berkaroad quat (陆续开发中,最近断了半年,懒了。。。)。这个框架依赖ioc框架,因为之前写了一个ioc,所以借此完善下,主要从灵活性、易用性、性能角度进行了优化。顺带也支持了go mod,并将源码...[2024/3/20]

golang开发_goroutine在项目中的使用姿势

golang开发_goroutine在项目中的使用姿势

很多初级的Gopher在学习了goroutine之后,在项目中其实使用率不高,尤其一些跨语言过来的人,对并发编程理解不深入,可能很多人只知道go func(),或者掌控不够,谨慎一些,尽量少使用或者不使用,用的话就是go func(),主要列一下我们这边的主要使用方法。 goroutine在...[2024/3/11]

Go语言VSCode开发环境配置

最近学习Golang,先把开发环境配置好。 一、安装Go语言开发包 https: golang.google.cn/dl/  按步骤安装即可,安装完成后需要设置Windows环境变量  配置好,做个测试 二、VSCode Golang开发环境配置 vs...[2024/3/11]

Dapr v1.13 版本已发布

Dapr是一套开源、可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性、微服务、无状态以及有状态等应用程序类型。Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统难题,由此显著提高生产力并缩短开发时长。Dapr 是用于构建云原生应用程序的开发人员框架,可以更...[2024/3/7]

Go语言的100个错误使用场景(55-60)|并发基础

目录前言8. 并发基础8.1 混淆并发与并行的概念(#55)8.2 认为并发总是更快(#56)8.3 分不清何时使用互斥锁或 channel(#57)8.4 不理解竞态问题(#58)8.5 不了解工作负载类型对并发性能的影响(#59)8.6 不懂得使用 Go contexts(#60)小结 前...[2024/3/4]

gin中间件&控制器&model

中间件 Gin 框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。 通俗的讲:中间件就是匹配路由前和匹配路由完成后执行的一系列操作 路由中间件 Gin ...[2024/2/28]

Excelize 开源基础发布 2.8.1 版本,2024 年首个更新

Excelize 是 Go 语言编写的用于操作电子表格办公文档的开源基础库,基于 ISO/IEC 29500、ECMA-376 国际标准。可以使用它来读取、写入由 Microsoft Excel、WPS、Apache OpenOffice、LibreOffice 等办公软件创建的电子表格文档...[2024/2/26]

推荐两个网络复用相关的 Go pkg: cmux smux

推荐两个网络复用相关的 Go pkg: cmux mux 只写一下如何使用,不对实现进行大量描述,两个库的代码都比较精炼,花一会看一下就行。 cmux 对端口进行复用,单端口可以建立不同协议的连接(本质都是 TCP),如 TCP/TLS/HTTP/gRPC 或自定义协议 smux 对TCP连接...[2024/2/23]

golang中的接口(数据类型)

golang中的接口(数据类型)

golang中的接口 Golang 中的接口是一种抽象数据类型,Golang 中接口定义了对象的行为规范,只定义规范 不实现。接口中定义的规范由具体的对象来实现,通俗的讲接口就一个标准,它是对一个对象的行为和规范进行约定,约定实现接口的对象必须得按照接口的规范 接口的定义 在go中接...[2024/2/23]

Go 之烧脑的接口

Go 之烧脑的接口

基本定义 Go 官方对于接口的定义是一句话:An interface type is defined as a set of method signatures. 翻译过来就是,一个接口定义了一组方法的集合。这和 Java 和 PHP 的接口类似,定义一组方法而不定义方法的具体实现。但...[2024/2/18]

Go语言的100个错误使用场景(一)|代码和项目组织

目录前言1. Go: Simple to learn but hard to master1.1 Go 语言概述1.2 简单不等于容易1.3 使用 Go 的100个错误2. Code and project organization2.1 变量屏蔽(#1)2.2 没有必要的代码嵌套(#2)2.3...[2024/1/29]

他凌晨1:30给我开源的游戏加了UI|模拟龙生,挂机冒险

一、前言 新年就要到了,祝大家新的一年:?? 龙行龘龘,?? 前程朤朤! 白泽花了点时间,用 800 行 Go 代码写了一个控制台的小游戏:《模拟龙生》,在游戏中你将模拟一条新生的巨龙,开始无尽的冒险! 3天前的《??模拟龙生|500行Go代码写一个随机冒险游戏|巨龙修为挑战》文章中已经对核...[2024/1/24]

Go-命令行参数解析

1. 解析命令行参数 程序在执行时,获取在命令行启动程序是使用的参数 命令行( Command line interface -- CLI):基于文本来查看、处理、操作计算机的界面,又被称为 终端、控制台 命令:在命令行执行的程序,一般是一行,包含命令名字、子命令与命令相关的选项(Flag...[2024/1/24]

Go 语言为什么建议多使用切片,少使用数组? - frank-wei

大家好,我是 frank,「Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言中,数组固定长度,切片可变长度;数组和切片都是值传递,因为切片传递的是指针,所以切片也被称为“引用传递”。 读者朋友们在使用 Go 语言开发项目时,或者在阅读 Go 开源项目源码时,发现很少使用到...[2024/1/8]

Go 语言为什么很少使用数组? - frank-wei

大家好,我是 frank,「Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言中,数组是一块连续的内存,数组不可以扩容,数组在作为参数传递时,属于值传递。 数组的长度和类型共同决定数组的类型,不同类型的数组之间不可以比较,否则在编译时会报错。 因为数组的一些特性,我们在 ...[2024/1/2]

Go 泛型之泛型约束

Go 泛型之泛型约束

Go 泛型之泛型约束 目录Go 泛型之泛型约束一、引入二、最宽松的约束:any三、支持比较操作的内置约束:comparable四、自定义约束五、类型集合(type set)六、简化版的约束形式七、约束的类型推断八、小结 一、引入 虽然泛型是开发人员表达“通用代码”的一种重要方式,但这并不意味...[2023/12/29]

go并发 - channel

概述 并发编程是利用多核心能力,提升程序性能,而多线程之间需要相互协作、共享资源、线程安全等。任何并发模型都要解决线程间通讯问题,毫不夸张的说线程通讯是并发编程的主要问题。go使用著名的CSP(Communicating Sequential Proce ,通讯顺序进程)并发模型,从设计之初 G...[2023/11/20]

go 上下文:context.Context

go 上下文:context.Context

Go语言中的上下文(Context)是一种用于在 Goroutines 之间传递取消信号、截止时间和其他请求范围值的标准方式。context 包提供了 Context 类型和一些相关的函数,用于在并发程序中有效地传递上下文信息。 在Go语言中,上下文通常用于以下场景: 请求的传递:当一个请求...[2023/11/17]

347
2
记录数:1097 页数:1/2212345678910下一页尾页
 友情链接:直通硅谷  点职佳
加载更多