golang从入门到入门
文章平均质量分 59
怪我冷i
这个作者很懒,什么都没留下…
展开
-
go项目实战——动手写分布式缓存GeeCache
GeeCache 的缓存全部存储在内存中,内存是有限的,因此不可能无限制地添加数据。假定我们设置缓存能够使用的内存大小为 N,那么在某一个时间点,添加了某一条缓存记录之后,占用内存超过了 N,这个时候就需要从缓存中移除一条或多条数据了。那移除谁呢?我们肯定希望尽可能移除“没用”的数据,那如何判定数据“有用”还是“没用”呢?原创 2024-04-30 01:00:00 · 1112 阅读 · 0 评论 -
golang学习笔记——FAQ 1.22.2
What is the purpose of the project?What is the history of the project?What’s the origin of the gopher mascot?Is the language called Go or Golang?Why did you create a new language?What are Go’s ancestors?What are the guiding principles in the design?Is Goog原创 2024-04-27 00:00:00 · 656 阅读 · 0 评论 -
golang学习笔记—— defer、panic 和 recover 处理错误
然后,程序会崩溃并记录日志消息。有时,你可能想要避免程序崩溃,改为在内部报告错误。异常的使用场景简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。通常情况下,当你想要避免忘记任务(例如关闭文件或运行清理进程)时,可以推迟某个函数的运行。通常,你会发送一条错误消息,说明为什么会进入紧急状态。Golang 没有结构化异常,使用 panic 抛出错误,recover 捕获错误。延迟调用中引发的错误,可被后续延迟调用捕获,但仅最后一个错误可被捕获。原创 2024-04-26 00:00:00 · 620 阅读 · 0 评论 -
go项目实战——Go微服务入门到容器化实践,落地可观测微服务项目
系统完整的Go微服务技术栈+实用容器化落地方案+服务级监控观测台。原创 2024-04-18 12:15:00 · 233 阅读 · 0 评论 -
go项目实战——自主开发PaaS平台核心功能
go项目实战——自主开发PaaS平台核心功能。原创 2024-04-16 13:30:00 · 101 阅读 · 0 评论 -
go项目实战——构建Go+ES8企业级搜索微服务
【代码】go项目实战——构建Go+ES8企业级搜索微服务。原创 2024-04-15 00:15:00 · 218 阅读 · 0 评论 -
100个Go语言典型错误
1.1 Go 大纲1.2 简单并不意味着容易1.3 100 个 Go 错误1.4 本章总结。原创 2024-04-12 14:26:10 · 1075 阅读 · 0 评论 -
go第三方库go.uber.org介绍
用于自动设置 GOMAXPROCS 以匹配 Linux 容器 CPU 配额的库。维护 golang/mock 的分支。一种静态分析工具,用于检测 Go 中潜在的零恐慌。Cadence 工作流编排引擎的 Go 客户端。用于将一个或多个 Go 错误组合在一起的库。Go 的 Thrift 编码代码生成器和库。在 Go 中快速、结构化、分级的日志记录。基于依赖注入的 Go 应用程序框架。一个基于反射的 Go 依赖注入库。Go 应用程序的配置库。Go 的消息传递平台。Go 的并发工具包。原创 2024-04-12 00:30:00 · 653 阅读 · 1 评论 -
golang设计模式图解——代理模式
正向代理是客户端的代理。它代表客户端(例如,浏览器)发出请求。客户端设置代理服务器,并通过它访问互联网上的资源。反向代理是服务器的代理。它代表一台或多台服务器接收来自客户端的请求。对于客户端来说,反向代理就像是它正在直接与后端服务器通信。原创 2024-04-06 11:24:20 · 1033 阅读 · 0 评论 -
golang设计模式图解——命令模式
命令模式为我们提供了一种将请求或操作封装到一个对象中的方法,它使我们的代码更具有可扩展性和复用性。希望本文能够帮助你理解命令模式,并在实际开发中找到其应用场景。原创 2024-04-06 09:51:19 · 865 阅读 · 0 评论 -
golang设计模式图解——模板方法模式
GoF提出的设计模式有23个,包括:(1)创建型(Creational)模式:如何创建对象;(2)结构型(Structural )模式:如何实现类或对象的组合;(3)行为型(Behavioral)模式:类或对象怎样交互以及怎样分配职责。原创 2024-04-05 00:00:00 · 735 阅读 · 0 评论 -
golang学习笔记——栈
在main函数中,我们创建了一个Stack对象,并分别将1、2、3三个元素加入栈中。然后我们调用Peek方法返回栈顶元素的值,调用Pop方法两次弹出栈顶元素并返回,最后调用IsEmpty方法判断栈是否为空。在计算机科学中,栈是一种线性数据结构,它具有先进后出(LIFO)的特点。栈通常用于计算表达式,处理递归函数,和其他需要后进先出的处理场景。在上面的代码中,我们首先定义了一个Stack类型,它是一个包含int类型的slice。方法用于返回栈顶元素的值,但不会弹出该元素,方法用于将一个元素添加到栈中,转载 2024-03-15 16:49:59 · 39 阅读 · 0 评论 -
golang学习笔记——type func实现事务
Go 语言中实现事务和 SQL 原生语句其实是非常接近的。执行一系列操作,如果发生错误,通过。回滚,如果没有发生错误,则通过。原创 2024-02-29 17:14:01 · 391 阅读 · 0 评论 -
golang学习笔记——missing go.sum entry for go.mod file
这是在迁移项目,复用模块的时候,遇到的错误。将前一个项目的代码复制到新项目的目录下,并将前一个项目的go.md里的内容,复制到新项目的 go.md 里造成的,这是因为代码中使用了第三方库,但没有更新 go.sum 文件。原创 2024-02-29 19:00:00 · 648 阅读 · 0 评论 -
golang学习笔记——Context 并发编程简明教程
WaitGroup 和信道(channel)是常见的 2 种并发控制的方式。会等待所有的子协程任务全部完成,所有子协程结束后,才会执行wg.Wait()后面的代码。WaitGroup 只是傻傻地等待子协程结束,但是并不能主动通知子协程退出。假如开启了一个定时轮询的子协程,有没有什么办法,通知该子协程退出呢?这种场景下,可以使用的机制。子协程使用 for 循环定时轮询,如果stop信道有值,则退出,否则继续轮询。更复杂的场景如何做并发控制呢?比如子协程中开启了新的子协程,或者需要同时控制多个子协程。转载 2024-02-29 00:00:00 · 48 阅读 · 0 评论 -
golang学习笔记——协程数量控制套路总结
尽管Goroutine(协程)非常清轻量,但是本身也是占用资源的,过多协程切换也会带来开销,总之物极必反,无限制的开协程的结果只会是Game Over。生产实践中必须考虑控制协程数量,本文带你看看针对不同场景和需求的协程数量控制方式。场景如下,go中一个典型场景是,接受数据然后开协程处理,代码如下├── go.mod必须要创建一个XXX_test.go的文件,并引入testing包代码import ("log""runtime""sync""testing""time"原创 2024-02-27 11:13:36 · 457 阅读 · 0 评论 -
golang学习笔记——vscode远程开发没有代码提示
国内 Go 语言实践圈子公认的 Go 语言专家超过 15 年互联网从业经验,曾在金山、盛大从事技术研究方面的工作,是 WPS 2005 的首席架构师。2011 年创办七牛云,致力于为客户提供一站式「云+数据」的服务和多场景解决方案。许式伟,七牛云创始人兼CEO ,ECUG 社区发起人 ,著有《Go语言编程》。《Go 语言程序设计》(译)。在win10下在代码提示,远程之后没有了。原来,这个插件远程也要安装一次。点击之后全选,然后点击OK就会自动下载安装。打开你的 PowerShell 并执行。原创 2024-02-09 23:56:03 · 615 阅读 · 0 评论 -
什么是JWT
【代码】什么是JWT。转载 2024-02-07 20:35:24 · 44 阅读 · 0 评论 -
golang通用后台管理项目——Go+Vue通用后台管理项目实战
vue前端vue+axios+element-ui+echarts+vue-router+vuex+vue-treeselect。go后端 gin+gorm+swagger+reids+jwt+base64Captcha+mysql+yaml。2、掌握jwt,日志,跨域,鉴权中间件的使用。5、掌握go语言开发前后端分离项目的能力。6、从0到1开发完整前后端分离项目的能力。3、掌握基于gorm的sql多表查询。1、掌握组件中业务逻辑抽离的方法。4、掌握gin-swag的应用。原创 2024-02-06 11:16:08 · 1242 阅读 · 2 评论 -
golang学习笔记——面试题 使用 3 个协程顺序打印 cat、dog、fish 各 100 次
思考,可否换成无缓冲区的 channel。原创 2024-01-24 18:31:35 · 1408 阅读 · 0 评论 -
golang学习笔记——http.Handle和http.HandleFunc的区别与type func巧妙运用
的使用方法和面向对象编程差不多,第一步定义一个接口类型,第二步定义一个非接口类型,第三步在非接口类型上实现接口。使用上简洁一些,但原理比较复杂。先定义一个函数(参数类型,返回值都要和ServeHTTP一样),再将它强转为类型,类型有一个方法叫ServeHTTP,这方法会执行一个名叫f的函数,这个函数的类型就是。因为一个对象只要全部实现了接口中的方法,那么就实现了这个接口。所以,类型实现了这个接口。所以,我们只要写一个匿名函数,内部就会为我们转为类型。原创 2024-01-21 21:34:05 · 1464 阅读 · 0 评论 -
golang学习笔记——go语言多文件项目运行的四种方式
有两个源码文件的go语言项目如何运行?如何直接运行会提示找不到文件。是真的找不到文件吗。其实不是。我们把鼠标放到Constructor()函数上就会发现也就这个函数在代码结构中的路径,而且这个函数是的。所以应该是我们的命令有问题。在传统的c/c++项目中,都是先编译才能运行的。go语言作为一门静态语言,也应当如此。这里提供四种方法。原创 2024-01-13 01:30:00 · 898 阅读 · 0 评论 -
golang学习笔记——Go 网络编程:使用 Handler 和 HandlerFunc
上述代码启动了一个 http 服务器,监听 8080 端口,分别实现了。这个方法,当接收到一个匹配路由的请求时,会调用该方法。该方法接收两个参数,一个是路由匹配的字符串,另外一个是。实现这两个路由的方法有点不同,一个使用。接收两个参数,一个是路由匹配的字符串,另外一个是。类型是什么呢,其实它就是一个接口,包含一个。,下面来看看这两个之间的区别;接口,所以其也可以转换成。转载 2023-12-14 12:27:54 · 164 阅读 · 0 评论 -
golang学习笔记——TCP端口扫描器
FileConn返回与打开的文件f相对应的网络连接的副本。完成后关闭f是调用者的责任。关闭c不影响f,关闭f不影响c。测试中发现,把500个goroutine改为20000个,速度是变快了,但结果并不准确。Since返回自t以来经过的时间。多个goroutine可以同时调用一个Conn上的方法。DialTimeout的作用类似于Dial,但需要超时。对带缓存的channel不理解的可以看一下。Conn是一种通用的面向流的网络连接。(代码中创建了500个),利用。拨号连接到命名网络上的地址。原创 2023-12-08 00:56:59 · 193 阅读 · 0 评论 -
golang学习笔记——爬虫colly入门
很多语言都可以写爬虫,包括python,java、c++、Pythhon等。而Go本身是开源的,很多大佬为Python的功能扩展写了很多成熟的工具,也就是网络上常说的xx库,我们可以利用这些工具快速实现我们的需求,比较好入门。另外,需要强调的是,网络上并不是什么东西都可以爬,针对这个问题,我国有着一套完备的法律。爬了不该爬的内容,比如大量个人信息,那可以快速实现“从入门到入狱”。原创 2023-12-09 00:30:00 · 238 阅读 · 0 评论 -
golang学习笔记——sync.Pool
Go并发编程实战课golang并发之sync包。原创 2023-12-10 00:30:00 · 62 阅读 · 0 评论 -
golang学习笔记——数据结构进阶
【代码】golang学习笔记——数据结构进阶。原创 2023-12-09 00:15:00 · 101 阅读 · 0 评论 -
golang学习笔记——互斥锁sync.Mutex、计数器sync.WaitGroup、读写锁sync.RWMutex
临界区总是需要通过同步机制进行保护的,否则就会产生竞态条件,导致数据不一致。原创 2023-12-07 00:00:00 · 566 阅读 · 1 评论 -
golang学习笔记——go流水线示例
Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。原创 2023-12-11 00:00:00 · 67 阅读 · 0 评论 -
golang学习笔记——编写最简单的命令行工具
使用go语言编写最简单的命令行工具go mod初始化打开vscode,创建main.go运行,原创 2023-12-10 00:00:00 · 71 阅读 · 0 评论 -
循环队列的几种实现方式
每次的入队操作都将 flag 置为 true , 每次的出队操作都将 flag 置为 false。使用一个标记 flag 来判断当前队列是空还是满。浪费一个格子, 用来判断队列是空还是满。原创 2023-11-24 09:44:59 · 53 阅读 · 0 评论 -
golang学习笔记——并发计算斐波纳契数
实现并发的改进版本。完成此操作需要几秒钟的时间(不超过 15 秒),就像现在这样。应使用有缓冲 channel。使用两个无缓冲 channel:一个用于计算斐波纳契数,另一个用于等待用户的“退出”消息。golang学习笔记——并发计算斐波纳契数。原创 2023-11-25 00:15:00 · 198 阅读 · 0 评论 -
golang学习笔记——将 channel 用作通信机制
让我们看看它们的工作原理,以及如何开始使用它们来编写并发 Go 程序。如果没有另一个 goroutine 从 channel 接收数据,则整个程序可能会永久处于被阻止状态。有时,在使用多个 channel 时,需要等待事件发生。例如,当程序正在处理的数据中出现异常时,可以包含一些逻辑来取消操作。函数创建 channel 时,会创建一个无缓冲 channel,这是默认行为。语句,但它适用于 channel。它会阻止程序的执行,直到它收到要处理的事件。语句的一个重要方面是,它在处理事件后完成执行。原创 2023-11-23 12:00:00 · 153 阅读 · 0 评论 -
golang学习笔记——多态
演示一个案例:给Usb数组中,存放Phone结构体和Camera结构体变量,Phone还有一个特有的方法call(),请遍历Usb数组,如果是Phone变量,除了调用Usb接口声明的方法外,还需要调用Phone特有方法call。在前面的Usb接口案例,Usb usb,即可以接收手机变量,又可以接收相机变量,就体现了Usb接口多态。接口体现多态的两种形式。原创 2023-11-20 22:45:00 · 149 阅读 · 0 评论 -
golang学习笔记——接口和继承比较2
给运动员和学生结构体添加studyEnglish方法显示是可以的,但是篮球动员和中学生也学习了英语,显示不行。这时,我们可以直接给足球运动员和大学生添加方法,这样子足球运动员和大学生都可以学习英语了。接口比继承更加灵活,继承是满足 is - a的关系, 而接口只需满足 like - a 的关系。现在有一个需要要求大学生和足球运动员掌握英语技能,请问怎么实现?,设计好各种规范(方法),让其它自定义类型去实现这些方法。其实,仔细一想这样有点不太规范。继承的价值主要在于:解决代码的。接口 在一定程度上实现。原创 2023-11-25 00:00:00 · 108 阅读 · 0 评论 -
golang学习笔记——接口和继承比较1
当A结构体继承了B结构体,那么A结构体就自动的继承了B结构体的字段和方法,并且可以直接使用。当A结构需要扩展功能,同时不希望去破坏继承关系,则可以去实现某个接口即可,因此我们可以认为:实现接口是对继承机制的补充。原创 2023-11-21 21:00:00 · 138 阅读 · 0 评论 -
golang学习笔记——快速交换
普通交换需要三行代码。原创 2023-11-20 20:45:00 · 44 阅读 · 0 评论 -
golang学习笔记——fmt.Printf()、fmt.Print() 和 fmt.Println()区别
上面的代码会输出 “Hello, Alice!注意,你需要自己处理字符串的拼接。中的函数,它们都可以用于在控制台输出文本。上面的代码会输出两行内容:“Hello, Alice!如果你只需要简单地输出一个字符串或变量,那么。如果你需要在输出的字符串后面添加一个新行,那么。上面的代码会输出 “Hello, Alice!是一个占位符,表示一个字符串。还有其他的占位符,比如。总的来说,如果你需要格式化输出,那么。这三个函数都是 Go 语言标准库。也会自动处理字符串的拼接。原创 2023-11-20 18:15:00 · 423 阅读 · 0 评论 -
golang学习笔记——接口interfaces
interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型。Go 中的接口是满足隐式实现的。Go 不提供用于实现接口的关键字。原创 2023-11-18 23:15:00 · 627 阅读 · 1 评论 -
golang学习笔记——日志记录
该标准包不提供日志级别,且不允许为每个包配置单独的记录器。如果需要编写更复杂的日志记录配置,可以使用记录框架执行此操作。错误的默认字段名称是error,您可以通过设置zerolog来更改此名称。从Go 1.8开始,将GOPATH设置为环境变量不是必需的。通常,发生错误时,最终用户只会看到一条消息,指示程序出现问题。除了将日志打印到控制台之外,你可能还希望将日志发送到文件,以便稍后或实时处理这些日志。只需设置一次前缀,日志就会包含日志源自的函数的名称等信息。Go 提供了一个用于处理日志的简单标准包。原创 2023-11-20 23:15:00 · 197 阅读 · 0 评论