布道Go语言
文章平均质量分 75
Go语言基础和一些常用的开发插件、工具
闫同学鸭
让峡谷旷野放一片晴
展开
-
带你用Go实现二维码小游戏(中)
DPI intX, Y intX, Y int为什么设置三个结构体呢?主要是因为在画证书的时候需要把证书的模板里填上内容,而内容又分为图片内容和文字内容,如图:因为图片内容和文字内容的属性大部分都不一样,所以独立出来了两个结构体。然后同样是Optional的模式= "" {opt(r)return r。原创 2024-10-30 23:00:09 · 460 阅读 · 0 评论 -
带你用Go实现二维码小游戏(上)
先看整个业务的流程图,游戏的核心就是拼图+二维码生成体验地址(目前仅支持PC端):游戏流程1)开始输入你的用户名,并选择你要拼图的图片,然后点击开始:2)选择图片完成后会出现游戏页面,进行拼图游戏:3)拼图完成后会进行提示,点击确定页面跳转到二维码:4)扫码,获取证书Go实现HTTP服务相对简单,只需要启动一个tcp的Listener,绑定端口,与HTTP Server关联,然后启动HTTP服务,如下代码,是我们提供的两个HTTP接口和静态资源地址的指定。if err!= nil {原创 2024-10-27 22:31:41 · 738 阅读 · 0 评论 -
原来go build命令有这么多学问
go build 是 Go 语言中一个非常强大且灵活的命令,它使得从源代码到可执行文件的转换变得简单而直接。通过利用它的各种选项和跨平台编译功能,你可以轻松地编译和分发你的 Go 程序。无论是在开发过程中还是在准备部署时,go build 都是 Go 程序员工具箱中不可或缺的一部分。与此同时,编译原理确实是一门非常值得深入学习的课程,它不仅在理论层面上构筑了计算机科学的重要基石,更在实践应用中展现了其无可替代的价值。原创 2024-10-05 11:01:52 · 1419 阅读 · 0 评论 -
Go小技巧&易错点100例(十七)
总的来说,Go语言中的定时任务具有广泛的应用场景和灵活的使用方法,可以帮助开发人员更好地管理和优化应用程序。在Go语言中,定时任务(也称为定时器或cron作业)具有多种作用,这些作用在应用程序的开发和运维中非常有用。,Go 程序可以调用 C 函数,使用 C 语言定义的数据类型,甚至可以使用 C 语言的头文件和源文件。这个类型的定时任务使用cron表达式进行任务的处理,比如下面代码的cron表达式。这个类型的定时任务是直接使用Go语言的内置类型进行计算,比较简单。(2)创建cron类型的定时任务。原创 2024-08-21 22:32:35 · 845 阅读 · 0 评论 -
Go小技巧&易错点100例(十六)
本期看点:正文开始:在Go语言中,切片(slice)是一个引用类型,它是对底层数组的抽象表示,提供了动态长度的、灵活的序列类型。切片包含三个重要的属性:指向底层数组的指针、切片的长度以及切片的容量。切片的长度和容量之间有一个重要的关系:切片的长度不会超过其容量。 这意味着,当你尝试向切片添加更多元素时,如果添加后的元素个数超过了切片的容量,Go语言会创建一个新的、更大的底层数组,并将原有元素和新元素复制到新数组中,然后让切片指向这个新的底层数组。这个过程称为切片的扩容。需要注意的是,切片的长度和容量是可以变原创 2024-08-21 22:31:50 · 908 阅读 · 0 评论 -
听说它可以让代码更优雅
总的来说,静态代码检查工具是一个能够提升我们代码质量的工具,可以发现编译器发现不了的问题。这些工具的使用可以显著提高软件质量,所以大家赶快掌握起来,写出更优雅的代码!原创 2024-07-30 22:40:25 · 298 阅读 · 0 评论 -
莫非这就是Go最优雅的协程池?
经常写Go的小伙伴都知道,Go语言的goruntine是这门编程语言的一大利器,相比线程,基于协程的goruntine更加轻量和高效,并且在语法上十分的简单。协程(Coroutine)和线程(Thread)是两种不同的并发执行控制结构,它们在多个方面存在显著的差异。首先在定义上,,是轻量级的。,是重量级的。,可以根据需要增长和缩小,内存使用效率高。,堆栈大小限制了线程的数量,并可能导致堆栈溢出错误。原创 2024-07-25 20:28:42 · 1063 阅读 · 0 评论 -
预测一波,这份Go语言资料即将爆火
顾名思义,是一个旨在分享Go语言学习过程中的100个小技巧与易错点的仓库。这些技巧不仅覆盖了Go语言的基础语法、高级特性,还深入探讨了性能优化、并发编程等进阶话题。作者以文章的形式,将每一个问题、每一个技巧都阐述得清晰明了,既适合初学者巩固基础,也适合有一定经验的开发者查漏补缺、提升技能。原创 2024-07-12 22:19:13 · 456 阅读 · 0 评论 -
Go程序出问题了?有pprof!
通过上面对pprof工具的使用,发现其在Go程序分析中具有重要作用。具体来说,pprof通过收集程序运行时的信息,生成可视化的报告,帮助开发者理解程序的行为,并找出代码中的性能问题。其他相关博客推荐。原创 2024-05-27 23:01:04 · 1187 阅读 · 0 评论 -
报告!Golang冲上来啦!
Go语言还善待那些运行Go程序的人,Go程序易于安装和更新,需要最少的配置和依赖关系,并捕获最常见的使用错误和运行时错误,并为用户提供有关问题和如何修复的有用、准确和友好的信息。今天又来讲Go语言,根据全球知名的编程语言排行榜TIOBE在4月份公布的最新的编程语言排名,令人瞩目的是,Go语言已经跃升至历史最高位,位列排行榜第七名,并且。除此之外Go基础库提供描述性名称,比如包名,简单容易记录,易于导入,内部设计深度抽象,让用户利用小而简单的 API 来访问强大、有用的行为。最好的优化是不需要优化。原创 2024-05-12 22:52:25 · 893 阅读 · 0 评论 -
如何优雅的设计一个SDK
到这里大家可能会产生疑问,为什么NewSDK的时候除了host还要带上username和passwd这两个参数。其实主要是因为系统一般会有Auth认证的流程,主要是用于认证调用者是否为该系统的合法用户,API中的header(name=barry yan)也正是为了验证用户,当然实际一定是要比这个复杂的多,SDK也会有对Auth认证方式的封装。aws-sdk-go本文的全部代码也已经打包上传到Github,欢迎大家提出issue。获取代码方式:关注公众号【扯编程的淡】回复【sdk。原创 2023-11-12 19:26:35 · 1149 阅读 · 6 评论 -
Go错误处理方式真的不好吗?
平时经常上一些网络平台阅读一些技术讨论的话题,对Go语言方面也有些浅浅的关注,正如标题所问,Go语言错误处理可以说算是网络上开发中对Go语言吐槽最多的点之一,那么,Go错误处理真的很不堪吗?。相反,我觉得Go的错误处理对程序设计来讲十分优雅。原创 2023-10-15 20:58:07 · 389 阅读 · 3 评论 -
程序员的快乐如此简单
最近在GitHub上发起了一个关于Beego框架的小插件的开源仓库,这一举动虽然看似微小,但其中的快乐和意义却是无法用言语表达的。Beego是一个开源的Go语言Web框架,它采用了MVC架构模式,并集成了很多常用的功能和中间件。小插件是指与Beego框架配套使用的、可扩展的、独立的软件模块或组件。通过开发小插件,可以扩展Beego框架的功能,提高开发效率和代码可维护性。原创 2023-09-23 20:51:08 · 3449 阅读 · 3 评论 -
基于Gin框架的HTTP接口限速实践
nil {return//自定义拦截处理器接口限速是保护系统稳定性和API的重要手段。在实际应用中,我们需要根据实际情况选择合适的限速方法,实现对接口的全面限速。通过接口限速,我们可以提高系统的稳定性、保护API、提高用户体验等。原创 2023-09-02 16:52:50 · 2035 阅读 · 7 评论 -
盘点Go语言中那些酷酷的语法
匿名函数、闭包和lambda三者是完全不同的三个概念,但是又有着相互的关联。首先是匿名函数,它是指在代码中定义的没有名字的函数。匿名函数可以被赋值给变量,也可以作为参数传递给其他函数。闭包是指一个函数内部引用了外部函数的变量,并且可以在函数外部被调用或访问时,依然能够保持对这些变量的访问能力。换句话说,闭包是一个函数以及其引用的外部变量的组合体。在Go语言中,闭包的实现非常简洁。当一个函数内部定义了一个匿名函数,并且这个匿名函数引用了外部函数的变量时,Go语言会自动将这些变量捕获到闭包中。原创 2023-08-20 21:49:46 · 174 阅读 · 4 评论 -
【五一创作】再来一篇,Go+Vue前后端分离设计实践
《手把手教你搭建Spring Boot+Vue前后端分离》姊妹篇~原创 2023-04-30 20:21:58 · 1760 阅读 · 11 评论 -
一文搞懂Go读写Excel文件
以上功能只需灵活扩展后基本上就可以覆盖大部分业务了,但是有一点需要注意,在2.5使用Http协议将数据转换为Excel文件并下载这个操作中,需要将文件进行重命名,这个名称可以自定义,也可以由服务端指定,但是需要以相关文件类型的名称做后缀,否则会输出zip压缩文件,很难看懂。今天的分享就到这里~原创 2022-10-29 18:06:57 · 3980 阅读 · 8 评论 -
Go常用设计模式(下)
装饰器模式很容易理解,他就是在我们想要调用方法的时候增加一些额外的操作,这种操作我们就成为装饰,就是让对象经过装饰增加需要的属性或功能。但是Go实现的代理模式和Java实现的相比不太容易理解,所以还需要我们多花一些时间来理解。原创 2022-09-04 22:28:21 · 305 阅读 · 0 评论 -
Go常用设计模式(中)
由于都是属于行为型模式,策略模式和模板方法模式在实现的过程中非常的类似,但不同的是模板方法模式更偏向于部分功能的复用,而策略模式更偏向于多种功能的选用。原创 2022-09-04 14:27:18 · 302 阅读 · 10 评论 -
Go常用设计模式(上)
因为Go语言并不是严格意义上的面向对象的编程语言,而且二十三种设计模式中有一部分是需要使用到面向对象封装、继承、多肽的特性的,因此Go语言并不是完全能够且适合二十三种设计模式,但是经常用到的设计模式也是非常重要的。...原创 2022-08-28 09:17:41 · 610 阅读 · 0 评论 -
浅谈etcd服务注册与发现
微服务是当今互联网领域的广泛概念,也是一种架构演进的结果,微服务的存在让架构设计更加的解耦合,让人员的分工更加明确,当然他的落地实现也并不止步与某一两种方式,在云原生领域的Kubernetes+etcd,互联网领域常用的Spring Cloud全家桶以及Dubbo等都是微服务的具体实现,而etcd也仅仅是微服务中服务注册中心组件角色的一个代表而已。原创 2022-08-21 16:19:08 · 1827 阅读 · 26 评论 -
酷玩Go命令行工具—Cobra
不知大家有没有在使用Git命令、Linux的yum命令、Go命令、Maven命令的时候感觉到非常的酷原创 2022-08-13 17:24:01 · 885 阅读 · 22 评论 -
从4开始,在后端系统中增加用户注册和登录功能
本次我们接着上四篇文章进行讲解《从0开始,用Go语言搭建一个简单的后端业务系统》、《从1开始,扩展Go语言后端业务系统的RPC功能》、《从2开始,在Go语言后端业务系统中引入缓存》以及《从3开始,在业务系统中增加分页功能》,这次是系统中比较核心的功能——用户登录&注册,这个功能其实本应该是最先实现的,但是由于不同因素的影响,放到了本次进行实现,不过也无伤大雅,后期我们都会不断的进行查漏补缺和优化来使我们的项目总体上更加优雅,话不多说,我们开始正文:(1)注册流程(2)登录流程user结构:dao层代原创 2022-07-21 08:54:42 · 766 阅读 · 8 评论 -
一文搞懂Go整合captcha实现验证码功能
最近在使用Go语言搞一个用户登录&注册的功能,说到登录&注册相关,我们油然会产生一种增加验证码的想法,因此着手实现,后来在GitHub上找到了这个名叫captcha的插件,于是就利用文档进行了初步的学习,并融入到自己的项目中......原创 2022-07-15 13:17:39 · 3135 阅读 · 12 评论 -
浅谈Go并发原语
在操作系统中,往往设计一些完成特定功能的、不可中断的过程,这些不可中断的过程称为原语。因此,并发原语就是在编程语言设计之初以及后续的扩展过程中,专门为并发设计而开发的关键词或代码片段或一部分功能,进而能够为该语言实现并发提供更好的支持。...原创 2022-07-12 11:17:02 · 671 阅读 · 4 评论 -
深度思考:为什么需要泛型?
不知道大家平时在进行后端编程的时候有没有考虑过一个概念:泛型编程,就像面向对象、面向接口编程一样,很常用以致于用成为了大家广泛的习惯原创 2022-07-11 07:00:23 · 594 阅读 · 6 评论 -
一文搞懂Go1.18泛型新特性
关于Go1.18版本的发布,当然不只有泛型(Generics)这一个新特性,具体的发布文档可以看下Go官方博客:https://go.dev/blog/go1.18,可以看出除了泛型,还增加了工作区、模糊测试等新特性原创 2022-07-11 06:56:35 · 462 阅读 · 15 评论 -
一文搞懂Go语言Context
sync.WaitGroup是等待一组协程结束。它实现了一个类似任务队列的结构,可以向队列中加入任务,任务完成后就把任务从队列中移除,如果队列中的任务没有全部完成,队列就会触发阻塞以阻止程序继续运行。sync.WaitGroup只有3个方法,Add(),Done(),Wait()。其中Done()是Add(-1)的别名,使用Add()添加计数,Done()减掉一个计数,计数不为0, 阻塞Wait()的运行。示例:效果:在 Go 服务器中,每个传入请求都在其自己的 goroutine 中处理。请求处理程原创 2022-07-03 08:06:51 · 580 阅读 · 6 评论 -
玩转gRPC—不同编程语言间通信
玩转gRPC原创 2022-07-01 08:07:02 · 803 阅读 · 4 评论 -
Go整合Logrus实现日志打印
2 增加标签WithFields3 配置常见参数Formatter一般分为两种:日志级别一共七种:logrus.log文件的内容:5 利用Hooks将日志输出到其他地方只需要在AddHook是添加相应的Hook就可以了原创 2022-07-01 07:58:35 · 1380 阅读 · 0 评论 -
从3开始,在业务系统中增加分页功能
这一节相对比较的简单,增加分页功能的实现利用了gorm的封装的方法并且同步更改了Gin的接收参数,进而实现了分页功能。原创 2022-06-23 09:17:25 · 298 阅读 · 13 评论 -
玩转MongoDB—使用Go和Java客户端
话说上一节我们说到MongoDB的基本使用,当命令行的操作我们熟悉了以后,就可以使用相关的Driver,也就是驱动程序进行相关编程语言的使用操作,因为在实际的开发过程中总归是要用编程语言来控制的,因此这篇文章我们介绍两个最常用的编程语言—Go&Java,来使用各自的驱动链接并操作MongoDB,Start!...原创 2022-06-22 08:58:32 · 384 阅读 · 4 评论 -
从2开始,在Go语言后端业务系统中引入缓存
本次我们接着上两篇文章进行讲解《从0开始,用Go语言搭建一个简单的后端业务系统》和《从1开始,扩展Go语言后端业务系统的RPC功能》原创 2022-06-20 08:45:45 · 1015 阅读 · 2 评论 -
从1开始,扩展Go语言后端业务系统的RPC功能
这次我们接上一篇文章《从0开始,用Go语言搭建一个简单的后端业务系统》,利用Google开源的RPC框架—gRPC来进行对接口的RPC功能横向扩展原创 2022-06-16 15:49:08 · 449 阅读 · 4 评论 -
从0开始,用Go语言搭建一个简单的后端业务系统
Hello 小伙伴们,今天给大家带来了一份Go语言搭建后端业务系统的教程,restful风格哦原创 2022-06-15 12:27:50 · 4706 阅读 · 15 评论 -
说说Go语言的main函数
符合要求的main函数不能带参数符合要求的main函数不能定义返回值符合要求的main函数所在的包必须指定package为main包才能正常执行符合要求的main函数中可以使用flag包来获取和解析命令行参数首先前两个比较好理解,在这里就不多说了,第三个的意思就是:即使main函数所在的目录名称不是main,但是将package指定为main就可以正常执行:最后一个,如何使用flag包来获取和解析命令行参数,我们演示下:输入的内容:OK,关于go语言main函数的分享就到这里~...原创 2022-06-12 20:46:48 · 2938 阅读 · 2 评论 -
浅谈Go语言反射
反射(Reflection)其实是通过允许在运行时存取程序数据,以改变程序行为的程序设计技术。原创 2022-06-09 19:35:16 · 531 阅读 · 2 评论 -
深入浅出Go语言Map
Map在Go语言中一般被称为“字典”,他跟我们传统的哈希表差别并不是很大,但是也有些地方的设计和使用值得我们注意下,下面我们开始讲解~原创 2022-06-05 08:49:41 · 241 阅读 · 7 评论 -
深度思考:到底什么是面向接口编程?
在以往的编程学习中,我们听说过很多编程概念,比如面向对象编程(OOP)、面向方面编程(AOP)、面向过程编程(POP),以及还有今天要进行深入思考的面向接口编程(IOP)。原创 2022-06-04 19:05:03 · 1526 阅读 · 14 评论 -
浅谈使用VS Code玩转Go Coding
想要成为一名优秀的工程师,掌握一门编程语言是远远不够的,想要成为一名优秀的Go布道师,光会用一个IDE也是远远不够的,因此学习Go语言开发的第二个IDE—VS code原创 2022-06-02 15:18:36 · 360 阅读 · 2 评论