锅锅来了
运维工程师,全栈开发,后端使用过C#,PHP,Python,Golang,前端使用JQuery,Vue,微信小程序。乐于分享一些运维和开发,Linux性能优化思路和工具等相关的内容。
展开
-
golang运维开发-gopsutil(2)
Golang开发经典案例,点击下方链接Golang开发-案例整理汇总。原创 2025-01-14 15:50:21 · 178 阅读 · 0 评论 -
golang运维开发-gopsutil(1)
当出现服务器异常时,运维人员通常会通过很多linux命令分别分析服务器的负载,CPU,内存,磁盘,网络,进程等信息来判断问题。通常这需要用到很多Linux工具,比如,top vmstat free iostat sar netstat 等。但是一些场景,服务器上都没有全面的命令工具可以使用。而且不同发版的操作系统也有很大差异。原创 2025-01-14 11:30:45 · 403 阅读 · 0 评论 -
GolangWeb开发-好用的HTTP客户端httplib(beego)
golang的net/http模块可以用来HTTP的客户端请求,但是使用方式不是很方便,有没有更好用的HTTP客户端请求的模块呢。答案是有的,beego框架下的httplib模块github地址:https://github.com/astaxie/beego/blob/develop/client/httplib/README.md。原创 2025-01-06 14:39:19 · 138 阅读 · 0 评论 -
GolangWeb开发- net/http模块
Go语言内置的net/http包提供了HTTP客户端和服务端的实现。文档链接: https://pkg.go.dev/net/httpGo语言内置的net/http包,可以满足HTTP客户端和服务器端的使用,但是在实际使用中,我们有更好更方便的选择,HTTP端,可以用beego/httplib模块,服务器端,经典的有Gin和Beego等模块。原创 2025-01-06 11:27:12 · 508 阅读 · 0 评论 -
Golang开发-案例整理汇总
优快云的文章缺少一个索引所有文章分类的地方,所以手动创建这么一个文章汇总的地方,方便查找。Golang开发经典案例汇总。原创 2025-01-06 09:40:28 · 152 阅读 · 0 评论 -
Golang Web开发- Gin不使用Nginx部署Vue项目
当我们应用后端用Gin框架,前端使用Vue开发,那么在最后部署上线的时候,一般是前端Vue构建的dist目录的文件部署在Nginx上,Nginx反向代理到Gin后端代码。但是这样的部署方式略微繁琐,尤其只是临时启动下应用的时候,没必要再部署一个Nginx。下面我们将前端部署项目使用较多的结合Gin 框架实现前端构建产物和Gin打一个包部署。vue已经是目前最流行的前端开发方式了,对于Jquery,Layui这类对于小功能可以使用,稍微复杂的还是考虑使用vue进行前端开发。原创 2024-05-26 21:30:40 · 521 阅读 · 0 评论 -
Golang并发编程-协程goroutine任务取消(Context)
在实际的业务种,我们可能会有这么一种场景:需要我们主动的通知某一个goroutine结束。比如我们开启一个后台goroutine一直做事情,比如监控,现在不需要了,就需要通知这个监控goroutine结束,不然它会一直跑,就泄漏了。我们都知道一个goroutine启动后,我们是无法控制他的,大部分情况是等待它自己结束,那么如果这个goroutine是一个不会自己结束的后台goroutine呢?比如监控等,会一直运行的。原创 2024-05-25 21:40:00 · 965 阅读 · 0 评论 -
Golang并发编程-协程goroutine的信道(channel)
Goroutine的开发,当遇到生产者消费者场景的时候,离不开 channel(信道)的使用。信道,就是一个管道,连接多个goroutine程序 ,它是一种队列式的数据结构,遵循先入先出的规则。// 先声明再初始化var 信道实例 chan 信道类型信道实例 = make(chan 信道类型)// 上面两句合并信道实例 := make(chan 信道类型)关闭一个未初始化的 channel 会产生 panic重复关闭同一个 channel 会产生 panic。原创 2024-05-25 15:20:18 · 997 阅读 · 0 评论 -
第二节:kafka golang sarama的ClusterAdmin类操作
上一节,我们已经简单接触了sarama包的使用,通过Client类型操作,获取了kafka的元数据信息,如果我们需要获取kafka,topic详情信息呢,下面我们使用ClusterAdmin类的使用ClusterAdmin是Kafka的管理客户端,支持管理和检查主题、代理、配置和ACL。所需的最低代理版本为0.10.0.0。具有更严格要求的方法将指定所需的最低代理版本。您必须在客户端上调用Close()以避免泄漏import ("fmt""log"if err!原创 2024-02-20 16:30:17 · 360 阅读 · 0 评论 -
第三节:kafka sarama 遇到Bug?
前面两节,我们已经简单应用了sarama的两个类型Client和ClusterAdmin,其中有一个案例是获取集群的ControllerId,但是在后面的测试过程过程中,发现一个问题,返回的ControllerID是随机的,这个是什么原因呢,我们下面分析下sarama本身也是遵循了kafka kraft版本的代码行为,就使用来说,对客户端是无所谓的,有人相应就好,但是作为运维和排查问题角度,还是需要一个方法,获取到目前集群的Controler的Leader具体是哪个节点。我们可以继续关注这个问题。原创 2024-02-22 12:26:47 · 634 阅读 · 0 评论 -
第一节:kafka golang sarama初体验
关于Kafka的开发库,以Java的居多,Golang语言的开发库,主要推荐的是sarama项目地址:这个项目之前地址是https://github.com/Shopify/sarama 通过源地址也可以访问本节,我们简单通过golang语言,操作sarama.NewClient对象,查询了kafka集群的topic列表,brokers列表,控制器ID。希望大家对sarama有了初步认识。原创 2024-02-20 16:05:03 · 634 阅读 · 0 评论 -
Golang并发编程-协程goroutine初体验
学习Golang一段时间了,一直没有使用过goroutine来提高程序执行效率,在一些特殊场景下,还是有必须开启协程提升体验的,打算整理几篇关于协程的原理的文章和案例,结合工作场景将协程使用起来。本节内容,介绍了Goroutine的使用,为了保证 main goroutine 在所有的 goroutine 都执行完毕后再退出,我们又学习了WaitGroup。目前呢,因为我们没有任何的数据交换,仅仅是开启协程执行并发的任务,因此没有用到信道。原创 2024-05-24 21:57:16 · 1000 阅读 · 0 评论 -
Golang案例开发之gopacket抓包三次握手四次分手(3)
TCP通讯的三次握手和四次分手,有很多文章都在介绍了,当我们了解了gopacket这个工具的时候,我们当然是用代码实践一下,我们的理论。本节内容就是好的实践。相信,通过今天的实践,你一定和我一样对TCP的协议的理解更加深刻。原创 2024-03-22 22:25:06 · 1869 阅读 · 3 评论 -
Golang案例开发之gopacket监听网卡抓包(2)
本节实战,监听指定网卡,进行网络抓包,根据分层,解析不同分层包的内容。本节内容,对gopacket抓包有了一个初步的认识,后期我们需要优化工具。原创 2024-03-19 13:51:55 · 886 阅读 · 2 评论 -
Golang案例开发之gopacket抓包入门(1)
说起网络抓包,我们一定听过大名鼎鼎的Tcpdump和WireShark。他们分别是Linux平台和Windows平台的抓包工具。Wireshark抓包工具,其底层抓包库是npcap(以前是winpcap);Tcpdump,其抓包库是libpcap;本节,主要是搭建下开发环境,尝试获取网络设备的接口。下一节,尝试在一个网络设备上抓包。原创 2024-03-18 14:26:20 · 1143 阅读 · 0 评论