Golang
【GoLang】GoLang 错误处理 -- 使用异常的思路进行处理
go处理错误的另一种方式 go处理错误常见的方式是 err := funcReturningError() if err != nil { // 处理错误 } 然而因为过于繁琐而饱受诟病。下文简述另一种处理错误的写法。 这种写法最初我是从标准库里看到的,代码在 https://github.com/golang/go/blob/master/src/encoding/gob/e
日期 2023-10-26 10:14:02Golang基础(2):Go条件语句、switch和循环语句
一:Go条件语句 package main import "fmt" //========go条件判断语句=== func main() { var var1 int = 10 if var1 < 21 { fmt.Println("if 语法,小于") } if var1 < 20 { fmt.Println
日期 2023-10-26 10:14:02【编程实践】Golang 实现 Yaml编码和解码
Golang 实现 Yaml编码和解码 目录 Golang 实现 Yaml编码和解码 1.1.1. 介绍 1.1.2. 基本规则 1.1.3. Yaml文件 1.1.4. 代码实现 1.1.5. 运行结果 1.1.1. 介绍 YAML Ain’t Markup Language,一种非常简洁的非标记语言,可以快
日期 2023-10-26 10:14:02golang 常见疑惑总结
经常会有一些朋友问go语言的一些问题和疑惑,其实好多问题在官方文档和stackoverflow里都有详细的讲解,只要你肯花时间读一遍官方文档和Effective Go基本上都有找到答案。本文总结一下大家经常问到的一些问题,长期更新。 代码都在github上, 地址 https://github.com/lpxxn/gocommonquestions new 和ma
日期 2023-10-26 10:14:02golang发送html邮件
package main import ( _ "github.com/go-sql-driver/mysql" "database/sql" "fmt" "strconv" "gopkg.in/gomail.v2" "crypto/tls" ) const runsql = "select id, 11 as
日期 2023-10-26 10:14:02Golang gRPC 和 gRPC-gateway 结合使用
一、安装 go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger go get -u github.com/golang/protobuf/protoc-gen-go
日期 2023-10-26 10:14:02Golang:user_agent解析HTTP用户代理User Agents
UserAgent is a Go library that parses HTTP User Agents. As an example: 译文:UserAgent是解析HTTP用户代理的Go语言库
日期 2023-10-26 10:14:02【GPT-4】用 golang 实现 LSM Tree 算法代码
这里是一个简单的LSM Tree(Log-Structured Merge Tree)实现的概述。完整代码将会非常长,因此你可以根据下面的实现思路来自行实现。 package main import ( "container/list" "math/rand" "os" "sort" "strconv" "sync" ) const (
日期 2023-10-26 10:14:02Golang filepath.Walk panic error on large directory
func GetFiles() { err := filepath.Walk("C:\\", walkpath) if err != nil { fmt.Printf(err.Error()) } } Panic error: panic: runtime error: invalid memory address or nil pointer der
日期 2023-10-26 10:14:02golang常用库包:日志记录库-logrus使用
介绍 logrus 它是一个结构化、插件化的日志记录库。完全兼容 golang 标准库中的日志模块。它还内置了 2 种日志输出格式 JSONFormatter 和 TextFormatter,来定义输出的日志格式。 github地址:https://github.com/sirupsen/logrus logrus 使用 使用的版本:logrus v1.8.1 1. 开始使用 package
日期 2023-10-26 10:14:02golang常用库包:log日志记录-uber的Go日志库zap使用详解
Go 日志记录库:uber-go 的日志操作库 zap 使用 一、简介 zap 是 uber 开源的一个高性能,结构化,分级记录的日志记录包。 go1.20.2 zap v1.24.0 zap的特性 高性能:zap 对日志输出进行了多项优化以提高它的性能 日志分级:有 Debug,Info,Warn,Error,DPanic,Panic,Fatal 等 日志记录结构化:日志内容记
日期 2023-10-26 10:14:02golang程序性能优化方法----不断更新
https://www.jianshu.com/p/e81213503b5a
日期 2023-10-26 10:14:02TutorABC 董海冰:Golang + WebRTC 搭建实时音视频云实践(转)
在 2019年第五届 Gopher China 大会上, TutorABC研发总监董海冰进行了题为《 用Golang搭建实时音视频云》的演讲。主要内容如下: 什么是TutorMeet+ 为什么使用Golang WebRTC 问题总结 关于SaaS 以下为演讲实录。
日期 2023-10-26 10:14:02在你的 Android 手机上运行 Golang 程序
在我们日常开发中,运行一个服务,都是在 shell 或 cmd 下执行命令,像是使用 go run main.go 直接编译运行,或是 go build 编译生成可执行文件后,以 ./xxx 方式运行。 Go 支持交叉编译生成各平台的可执行文件。那有没有想过如何把你写的程序编译后跑在 Android 上呢。 废话少说,流程分解: 接下来逐一击破。 main.go 中创建了一个 http 服
日期 2023-10-26 10:14:02golang程序设计:Go middleware中间件以及Gin 中间件分析
先从业务开发角度出发,来逐渐引出中间件。 一、刚开始时业务开发 开始业务开发时,业务需求比较少。 当我们最开始进行业务开发时,需求不是很多。 第一个需求产是品向大家打声招呼:“hello world”。 接到需求任务,我们就进行代码开发了。 一般都会写下如下的代码,用handlefunc来处理请求的服务 package main import ( "net/http" ) func h
日期 2023-10-26 10:14:02golang之常量
1、 常量可以是全局常量,也可以是函数内部的局部常量。常量的值不可修改,常量表达式的值在编译期计算,而不是在运行期。存储在常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。当常量比较少时,推荐如下: const 常量名1 = 常量值/常量表达式 const 常量名2 = 常量值/常量表达式 &
日期 2023-10-26 10:14:02golang-笔记1
指针: 指针就是地址。 指针变量就是存储地址的变量。 *p : 解引用、间接引用。 栈帧: 用来给函数运行提供内存空间。 取内存于 stack 上。 当函数调用时,产生栈帧。函数调用结束,释放栈帧。 栈帧存储: 1. 局部变量。 2. 形参。 (形参与局部变量存储地位等同) 3. 内存字段描述值 指针使用注意: 空指针:未被初始化的指针。 var p *int *p --
日期 2023-10-26 10:14:02Go_20: Golang 中 time 包的使用
time包中包括两类时间:时间点(某一时刻)和时常(某一段时间) 1. 时间常量(时间格式化) const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 MST 2006" RubyDate = "Mon Jan 02 15:04:05 -0700 200
日期 2023-10-26 10:14:02全面总结: Golang 调用 C/C++,例子式教程
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 大部分人学习或者使用某样东西,喜欢在直观上看到动手后的结果,才会有继续下去的兴趣。 前言: G
日期 2023-10-26 10:14:02golang 如何将imagemagick 和golang 打包到docker 环境中
公司最近开发了个项目,用到了imagemagick 和golang 环境,在我本地机上开发妥妥的,结果准备部署到线上环境的时候,出现了大坑,尝试了无数次后,最后还是解决了,官方说有问题也不说清楚点,一步一步的摸索直接上最后的代码吧 FROM golang MAINTAINER jackluo RUN apt-get update && apt-get install -y
日期 2023-10-26 10:14:02Golang中接口的使用场景——通过裁员的故事来说明
[本文出自天外归云的博客园] 本故事纯属虚构,如有雷同纯属巧合。 本故事纯属虚构,如有雷同纯属巧合。 本故事纯属虚构,如有雷同纯属巧合。 什么是接口?那个主谓结构的句子来举例:公司要裁员——这里公司就是接口,裁员就是接口中的方法。 解释:公司是不确定的,裁哪些人也是不确定的。所以把公司作为一个接口,裁员作为接口中的方法。任何结构体继承了这个公司接口,都要实现裁员方法。 Golang
日期 2023-10-26 10:14:02搭建Golang开发环境
Go语言是谷歌 2009 年首次推出并在 2012 年正式发布的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去10多年间软件开发的难度令人沮丧。Google 对 Go 寄予厚望,其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。它具有现代的程序语言特色,
日期 2023-10-26 10:14:02Golang进阶,揉碎数据库中间件,干货满满!(二)
七、权限管理实现原理#重点关注的地方 # server.go:381 // todo 用户白名单校验 只有指定的user、ip才能使用Proxy if allowConnect : conn.IsAllowConnect(); allowConnect false { err : mysql.NewError(mysql.ER_ACCESS_DENIED_ERROR, ip addres
日期 2023-10-26 10:14:02Golang SQL连接池梳理 (三)
六、MySQL连接池所受的限制#数据库连接池的大小到底设置为多少 得根据业务流量以及数据库所在机器的性能综合考虑。mysql连接数到配置在 my.cnf中 具体的参数是max_connections。当业务流量异常猛烈时 很可能会出现这个问题 to many connections对于操纵系统内核来说 当他接受到一个tcp请求就会在本地创建一个由文件系统管理的socket文件。在linux中我们
日期 2023-10-26 10:14:02GO_05_2:Golang 中 panic、recover、defer 的用法
函数 defer 1. 它的执行方式类似其他语言中的折构函数,在函数体执行结束后按照调用顺序的 相反顺序 逐个执行 2. 即使函数发生 严重错误 也会被执行,类似于 java 中 try{...} catch(){} finally{} 结构的 finally 3. 支持匿名函数的调用 4. 常用于资源清理、文件关闭、解锁以及记录时间等善后操作 5. 通过与匿名函
日期 2023-10-26 10:14:02LeetCode-1103. 分糖果 II(Golang实现)
LeetCode题号:1103. 分糖果 II 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友
日期 2023-10-26 10:14:02Golang:go-querystring将struct编码为URL查询参数的库
go-querystring is a Go library for encoding structs into URL query parameters. 译文:go-querystring 将str
日期 2023-10-26 10:14:02Go_17:GoLang中如何使用多参数属性传参
我们常常因为传入的参数不确定而头疼不已,golang 为我们提供了接入多值参数用于解决这个问题。但是一般我们直接写已知代码即所有的值都知道一个一个塞进去就好了,但是绝大部分我们是得到用户的大量输入想通过循环传入,但是这样发现无法使用这个多值参数的功能。其实底层实现将多个参数视为传入的一个不定长数组。那么我们就有想法了:既然底层使用数组,那我们传入数组是否可以,结论是不可以的,或者这样说比较合
日期 2023-10-26 10:14:02golang环境搭建
目录Golang的三种安装方式下载在Linux上安装在Mac上安装二进制包方式安装PKG方式安装 学习一门编程语言总是从搭建这门语言的开发环境开始,作为一名以PHP为主要开发语言的后端开发者,我也一直想学习一门静态类型的编程语言,在了解了一些静态类型语言的特性后,最终我决定学习golang,因为我也相信这是一门属于未来的语言。 Golang的三种安装方式 Go源码安装:这是一种标准的软件安装方
日期 2023-10-26 10:14:02golang语言cli库/Golang的CLI 命令行程序开发
很多用Go写的命令行程序都用了urfave/cli这个库,包括geth,有必要简单了解一下。 用C写过命令行程序的人应该都不陌生,我们需要根据argc/argv一个个地解析命令行参数,调用不同的函数,最后还要写一个usage()函数用于打印帮助信息。urfave/cli把这个过程做了一
日期 2023-10-26 10:14:02[golang]golang signal.Notify 信号,如何优雅的退出
[golang]golang signal.Notify 信号,如何优雅的退出 golang 中的signal 包的Notify函数 函数声明为 func Notify(c chan<- os.Signal, sig ...os.Signal) 官方描述: Notify函数让signal包将输入信号转发到c。如果没有列出要传递的信号,会将所有输入信号传递到c;否则只传递列出的输入信号
日期 2023-10-26 10:14:02Vscode Golang大小仓开发必备插件
[本文出自天外归云的博客园]
日期 2023-10-26 10:14:02golang动态库调用方式
golang 调用动态库在使用第三方功能比较常见。 方法如下: 编写c语言代码实现动态库的调用,然后cgo引用c代码,间接方式实现动态库的调用。 优点: 通用性强,没什么难度。 缺点: 多了一次封装代码可能比较繁琐 使用syscall包进行调用,适用与linux,windows.比较广泛。推荐使用。 优点: 没有cgo代码,syscall底层直接使用汇编语言实现,比较彻底。无依赖。 缺点
日期 2023-10-26 10:14:02[golang优秀组件] Cobra
Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra create appname 和cobra add cmdname 如果命令输入错误,将提供智能建议,如 app srver,将提示srver没有,是
日期 2023-10-26 10:14:02golang中特殊的标识符
你会发现在 Go 代码中的几乎所有东西都有一个名称或标识符。另外,Go 语言也是区分大小写的,这与 C 家族中的其它语言相同。有效的标识符必须以字符(可以使用任何 UTF-8 编码的字符或 _)开头,然后紧跟着 0 个或多个字符或 Unicode 数字,如:X56、group1、_x23、i、өԑ12。 以下是无效的标识符: 1ab(以数字开头) case(Go 语言的关键字) a+b(运算符
日期 2023-10-26 10:14:02理解golang调度之二 :Go调度器
简介 第一篇文章解释了关于操作系统层级的调度,我认为这对于理解Go的调度是很重要的。这一部分我会在语义层级解释Go调度器是如何工作的,并且着重关注它的一些高级行为。Go 调度器是一个十分复杂的系统,细节不重要,重要的是对于其工作和行为有一个好的理解,这会让你做出更好的工程方面的决定。 从一个程序开
日期 2023-10-26 10:14:02Golang 接口
定义 把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口 举例 接口Phone, 有一个函数call type Phone interface { call() } 定义2个strct type NokiaPhone struct { } type Samsung struct { } 实现接口中的call()函数 func (nokiaPhon
日期 2023-10-26 10:14:02golang:reflect反射
因为之前一直以C++为主要开发语言,所以刚接触go语言中的reflect时感觉很懵逼,因此决定找资料彻底学习一下。 到底反射是什么? https://blog.golang.org/laws-of-reflection 根据这篇文章中的介绍: Reflection in computing is the ability of a program to examine its own struct
日期 2023-10-26 10:14:02golang的flag包源码解析与使用
当我们 import package时,package内的全局常量和全局变量会进行初始化,并且紧接着init函数会执行。因此我们先看一下flag包的全局常量和全局变量。 一、flag包的全局常量、全局变量、init函数 所有全局常量和变量如下图所示。 1、三个常量 2、五个变量
日期 2023-10-26 10:14:02【人工智能 Open AI】设计一个SQL Where DSL模型,使用 golang 代码来实现DSL的翻译成SQL。
设计一个SQL Where DSL模型,使用 golang 代码来实现DSL的翻译成SQL。 下面是使用golang代码实现DSL模型的示例: package main import ( "fmt" "s
日期 2023-10-26 10:14:02【GoLang】转载:我为什么放弃Go语言,哈哈
我为什么放弃Go语言 作者:庄晓立(Liigo) 日期:2014年3月 原创链接:http://blog.csdn.NET/liigo/article/details/23699459 转载请注明出处:http://blog.csdn.Net/liigo 有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个
日期 2023-10-26 10:14:02golang实现基本排序算法
package main import ( "fmt" ) func main() { arr := []int{10, 9, 5, 7, 3, 5, 2, 9, 4, 6, 10} //res := SelectionSort(arr)// 选择排序 //res := InsertionSort(arr) // 插入排序 //res := InsertionSortPro(a
日期 2023-10-26 10:14:02golang 性能优化分析:benchmark 结合 pprof
前面 2 篇 golang 性能优化分析系列文章: golang 性能优化分析工具 pprof (上) golang 性能优化分析工具 pprof (下) 一、基准测试 benchmark 简介 在 golang 中,可以通过 benchmark 基准测试来测试代码性能。基准测试主要是通过测试 cpu 和内存的效率问题,来评估被测试代码的性能。 基准测试的指标: 程序所花费的时间 内存使用
日期 2023-10-26 10:14:02【GoLang】golang 如何像Java 一样通过类名反射对象?
结论: golang不支持解析string然后执行。 golang的反射机制只能存在于已经存在的对象上面。 不知道后续的版本有没有规划,现在只能先加载注册,然后实现类似Java工厂模式的反射。 代码示例: t := reflect.ValueOf(Human{}).Type() // h := reflect.New(t).Elem()
日期 2023-10-26 10:14:02golang 实现广度优先算法(走迷宫)
maze.go package main import ( "fmt" "os" ) /** * 广度优先算法 */ /** * 从文件中读取数据 */ func readMaze(filename string) [][]int { file, err := os.Open(filename) if err != nil { pa
日期 2023-10-26 10:14:02golang的module管理与使用go mod
############################# 更换或升级了golang后,需要删除go.mod、go.sum、vendor文件,然后重建,不然一直卡在那里 使用: Go modules 操作命令及相关文件解读 可以命令行执行 go help mod 打印出 go
日期 2023-10-26 10:14:02PHP中的多态和GoLang中的多态
<?php interface Animal{ public function fun(); } class Cat implements Animal{ function fun(){ echo "cat say miaomiao...\n"; } } class Dog implements
日期 2023-10-26 10:14:02golang gc 问题(转的)
在实际使用go语言的过程中,碰到了一些看似奇怪的内存占用现象,于是决定对go语言的垃圾回收模型进行一些研究。本文对研究的结果进行一下总结。 什么是垃圾回收? 曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰开
日期 2023-10-26 10:14:02golang channel 用法转的
一、Golang并发基础理论 Golang在并发设计方面参考了C.A.R Hoare的CSP,即Communicating Sequential Processes并发模型理论。但就像John Graham-Cumming所说的那样,多数Golang程序员或爱好者仅仅停留在“知道”这一层次,理解CSP理论的并不多,毕竟多数程序员是搞工程 的。不过要想系统学习CSP的人可以从这里下载到CSP论文的
日期 2023-10-26 10:14:02【Networking】k8s容器网络 && golang相关
Bookmarks flannel/proxy.c at master · coreos/flannelkubernetes/kubernetes: Production-Grade Container Scheduling and ManagementKubernetes - Production-Grade Container OrchestrationOverview - Kubernet
日期 2023-10-26 10:14:02