golang学习
文章平均质量分 90
阿兵云原生
这个作者很懒,什么都没留下…
展开
-
在 K8S 中部署一个应用 下
接着上一篇继续部署应用到 K8S中之前简单部署的简单集群,三个工作节点是运行在 docker 和 kubelet 的,还有一个是控制节点。原创 2023-06-23 23:08:31 · 1036 阅读 · 1 评论 -
minikube 试炼
今天我们先来尝试使用一下,可以进入到 https://kubernetes.io/zh/docs/tutorials/hello-minikube/ 页面上直接感受,或者通过如下指令,将 minikube 放入我们的服务器上面进行使用。原创 2023-06-18 17:47:11 · 1092 阅读 · 0 评论 -
k8s 集群部署尝试
K8S 部署方式有很多,有的方式不太友好,需要注意很多关键点,有的方式对小白比较友好,部署简单方便且高效。原创 2023-06-17 12:09:35 · 1935 阅读 · 0 评论 -
ldif 数据转成正确的组织结构再探
上次文章最后有说到按照,我们现在还只是对接 AD域,ldap 协议的其他产品在细节上还会有些许不同, cn 是 common name 的意思,他也可以表示我们理解的用户组和也可以是组的意思,但是对于 AD 域来说,在他们上面能够配置的属性有差别那么对于同步组织结构,我们实际上是可以如何做的呢?不能粗暴的按照之前的方式来实现,原创 2023-04-27 23:01:57 · 446 阅读 · 0 评论 -
golang 实现 ldif 数据转成 json 初探
ldap 返回的数据是以 ldif 格式返回的,会返回0条到多条 entry,我们需要逐个的来解析每一个 entry 里面的数据。上一篇我们分享了如何将 ldif 格式的数据,转换成 json 数据的思路并画相应的简图。处理的逻辑,会去判断 rdn 的 key 是 dc,cn,ou,来做相应的处理,处理每一条 entry 的时候,从右到左获取相应的 rdn(对应的键和值),技术是开放的,我们的心态,更应是开放的。朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力。文件中实现一下,代码结构是这样的。原创 2023-04-19 20:01:02 · 412 阅读 · 0 评论 -
性能测试小工具 wrk 可以怎么用
工作中,项目设计之初或者是项目快要结束的时候,大佬就会问我们,这个服务性能测试的结果是什么,QPS 可以达到多少,RPS 又能达到多少?很多项目上线初期用户量较小,表面上看是风平浪静,实则暗流涌动,慢慢的用户量上来之后,系统的瓶颈慢慢凸显曾经挖的坑,最后还是要我们自己来填,若不能及时填上,可能整个产品就这么断送了。原创 2023-03-13 22:27:59 · 565 阅读 · 0 评论 -
golang 占位符还傻傻分不清?
在写 golang 的时候,也是有对应的格式控制符,也叫做占位符,写这个占位符,需要有对应的数据与之对应,不能瞎搞。原创 2023-03-10 22:59:22 · 712 阅读 · 0 评论 -
你是使用什么工具调试 golang 程序的?
写过 C/C++ 的都是到,调试程序的时候通常使用 gdb 工具来进行调试,用起来可爽了,那么 gdb 是否也适合 golang 程序的调试的Delve 可以让你通过控制程序的执行来与程序进行交互,他可以计算变量,并提供线程 / goroutine 状态、CPU 寄存器状态等信息Delve 的目标是为调试 Go 程序提供一个简单强大的调试功能尝试看一下 dlv 的 help 信息通过 help 我们可以看到可以使用这些命令来调试我们的程序,根据不同的应用场景例如,我们直接编译并调试的时候就可以使用。原创 2023-03-09 22:47:38 · 999 阅读 · 0 评论 -
关于 interface{} 会有啥注意事项?下
我们一起来回顾一下上一次说到的接口类型分为空接口类型和非空接口类型,他们的底层数据结构不太一样。原创 2023-03-07 21:41:16 · 632 阅读 · 0 评论 -
关于 interface{} 会有啥注意事项?上
学习 golang ,对于 interface{} 接口类型,我们一定绕不过,咱们一起来看看 使用 interface{} 的时候,都有哪些注意事项吧。原创 2023-03-06 21:45:11 · 526 阅读 · 0 评论 -
golang 实现链表爽不爽?
定义链表结构定义节点结构。原创 2023-02-27 22:45:47 · 412 阅读 · 0 评论 -
GO 中的 defer 有哪些注意事项?下
上面都是出现 1 个 panic 的情况 ,那么,如果是出现多个 panic 是怎么玩的呢, defer 他还能捕获到 panic 信息吗?,也就是当程序崩溃的时候,defer 语句可以帮我们兜底,可以捕获异常后按照我们期望的逻辑进行执行,让程序回到正确的轨道上面。根据打印我们可以看出,结论和上面一个例子结论一致,并且加入异常捕获之后,程序的崩溃堆栈信息是不会打印出来了,技术是开放的,我们的心态,更应是开放的。看上述代码,panic 之后的程序仍然是不会执行的,但是我们加入了。原创 2023-02-25 21:19:25 · 817 阅读 · 0 评论 -
GO 中的 defer 有哪些注意事项?上
xdm , 不知道你们是否有使用过,这种语法在是 go 特有的,用起来真是爽的不要不要的其实我们是要弄明白其中的注意点,原理,当出现所谓的奇怪现象的时候,处理起来就会得心应手得多。原创 2023-02-23 22:31:05 · 399 阅读 · 0 评论 -
你知道 GO 中的 协程可以无止境的开吗?
那么是不是使用 go 开辟协程越多越好的,那么在 go 里面,协程是不是可以开无限多个呢?那么我们就一起来看看尝试写写 demo 吧。原创 2023-02-21 22:57:31 · 866 阅读 · 0 评论 -
你知道 GO 中什么情况会变量逃逸吗?
Go 语言将这个以前我们写 C/C++ 时候需要做的内存规划和分配,全部整合到了 GO 的编译器中,GO 中将这个称为。原创 2023-02-09 21:26:24 · 1168 阅读 · 0 评论 -
为什么使用 golang http包 会把 linux 句柄打满?
最近工作的时候一个接入服务需要测性能测试,万万没想到测出了一个把具体是什么问题呢,我们一起来看看。原创 2023-01-13 19:48:21 · 1562 阅读 · 0 评论 -
Go语言 WaitGroup 源码知多少
上面我们有说到嘛,原创 2023-01-07 16:37:51 · 603 阅读 · 0 评论 -
Go语言 WaitGroup 源码知多少
上面我们有说到嘛,原创 2023-01-04 19:48:52 · 647 阅读 · 2 评论 -
需要提醒你关于 golang 中 map 使用的几点注意事项
日常的开发工作中,map 这个数据结构相信大家并不陌生,在 golang 里面,当然也有 map 这种类型。原创 2023-01-02 12:02:01 · 1640 阅读 · 2 评论 -
GO语言初始化数据结构的方法你知道吗?
使用 golang 进行编码过程中,你们都是如何初始化数据结构的呢GO 里面提供了 2 个关键字来进行初始化数据结构上面这种情况,是初始化的时候已经明确好了需要填的值,可以使用上面这种做法,不过工作中大多数情况初始化的时候,数据还是未知的,大部分时间还是会使用上述两种方式。原创 2022-12-31 16:31:15 · 1150 阅读 · 1 评论 -
你可能还不知道 golang 的高效编码细节
xdm,我们都知道 golang 是天生的高并发,高效的编译型语言可我们也都可知道,工具再好,用法不对,全都白费,我们来举 2 个常用路径来感受一下。原创 2022-12-30 17:12:13 · 934 阅读 · 0 评论 -
你确定没有滥用 goroutine 吗
学习 golang ,路还很长呢,犹记得刚开始学习 golang 的时候,写起来确实非常简单,有很多包和工具使用,不需要重复造轮子,但是要真的学好一门语言作为工具,对于其原理是非常有必要学懂的。原创 2022-12-26 19:46:44 · 1041 阅读 · 0 评论 -
你以为传切片就是传引用了吗?
xdm ,我们在写 golang 的时候,引用和传值傻傻分不清,就例如我们传的时候,你能分清楚你传的切片是传值还是传引用呢?原创 2022-12-23 19:40:42 · 1306 阅读 · 0 评论 -
原来服务端的退出姿势也可以这么优雅
工作中,我们带有 http 的服务端,肯定还有别的处理逻辑,例如读写文件,GRPC 通信,或者是使用数据库,那么我们程序关闭情况,还是要根据情况来处理,咱们思考一下,这个时候如果遇到了意外,程序崩溃了,panic 了,或者我们认为的 kill 掉了,我们如何判断服务端是如何退出的呢?此处我们使用 context 的方式,当主协程关闭上下文的时候,子协程就会从通道到读取到数据,进而进行优雅关闭,我们可以看到源码,对于上述说到的会操作数据库,读写文件等等会修改数据的,这里可不期望操作数据的过程中被中断,原创 2022-12-23 19:38:53 · 1149 阅读 · 0 评论 -
原来服务端的退出姿势也可以这么优雅
工作中,我们带有 http 的服务端,肯定还有别的处理逻辑,例如读写文件,GRPC 通信,或者是使用数据库,那么我们程序关闭情况,还是要根据情况来处理,咱们思考一下,这个时候如果遇到了意外,程序崩溃了,panic 了,或者我们认为的 kill 掉了,我们如何判断服务端是如何退出的呢?此处我们使用 context 的方式,当主协程关闭上下文的时候,子协程就会从通道到读取到数据,进而进行优雅关闭,我们可以看到源码,对于上述说到的会操作数据库,读写文件等等会修改数据的,这里可不期望操作数据的过程中被中断,原创 2022-12-11 10:34:13 · 689 阅读 · 0 评论 -
听说你还在自己做重复劳动?看我一键生成错误码映射
默认源目录下的 / _string.go,所以我们可以看到例子中我们的输出文件在 mycodes 下的 errcode_string.go。刚才我们是在命令行中,使用 stringer 工具来生成的,那么我们要把这些东西放入项目代码中就需要使用 go generate 工具了。咱们引入 go generate ,可以只用定义错误码和写注释,就可以达到,当我们调用错误码的时候,能够正确的输出我们想要的错误信息。大家在工作中定义错误码的时候都是如何处理的?技术是开放的,我们的心态,更应是开放的。原创 2022-12-10 11:36:15 · 876 阅读 · 0 评论 -
你不知道的goland技巧
过去我们使用 Goland 就是简单的配置一下 go 的 proxy ,以及配置一下 ssh ,与服务器进行文件的上传和下载,其余的技巧也就没有费心去尝试挖掘和使用了,有没有同感的童鞋。剩下的,我们只需要填写单测数据的各种情况即可,此处用到的是 go test 的 子测试 ,要是对单测感兴趣的 xdm 可以查看历史文章。我们在工作中,有很多函数名字不同,但是内部的结果可以说是完全相同的,那么这种代码,我们一般怎么做?根据整个文件来生成单测文件,文件中的所有方法都会有对应的单测方法。原创 2022-12-08 22:46:59 · 1007 阅读 · 0 评论 -
CGO,基本数据类型转换2 和 函数调用
前面 3 个咱们在上一篇短文已经梳理到了,接下来继续[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5lP6xgbk-1660485524922)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f4f6b12f88ab4bc49ea9703737f3c624~tplv-k3u1fbpfcp-zoom-1.image)]...原创 2022-08-14 21:59:32 · 1139 阅读 · 0 评论 -
CGO 初步认知和基本数据类型转换
所以 cgo 中传递的参数类型必须与声明的类型完全一致,而且传递前必须用 ”C” 中的转化函数转换成对应的C类型,不能直接传入Go中类型的变量。文件进行编译,如果咱们是需要将 C 文件做成静态库 或者 动态库的方式,那么就不要将 C 的源码文件放到同级目录下了,避免重名)的上方可以写需要导入的库 C 库,需要注释起来,CGO 会将此处的注释内容当做 C 的代码,被称为。技术是开放的,我们的心态,更应是开放的。的时候,添加一些条件参数,当然这个条件参数在对应的文件中是需要有的,...原创 2022-08-04 23:20:04 · 1862 阅读 · 0 评论 -
【Redis 系列】redis 学习十,Redis 集群搭建和主从复制
主从复制的理论先来说说什么是主从复制主从复制,就是将一台 redis 服务器的数据,复制到其他的 redis 服务器上, 前者为主节点 master,后者为从节点 slave数据的复制是单向的,只能是主机复制到从机,master 以写为主,slave 以读为主默认的情况下,每台 redis 服务器都是主节点,并且一个主节点都会有多个从节点或者没有从节点,但是反过来,一个从节点,只能有一个主节点主从复制的作用:数据冗余主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式故障恢复原创 2022-03-30 21:18:23 · 1019 阅读 · 0 评论 -
(免费领取红包封面)【Redis 系列】redis 学习三,redis 数据结构之 string 和 list 基本使用及熟悉
文末免费领取红包封面哦,总共 2000 个 ,先到先得set 集合set 集合里面的数据是不能重读的SADD key member [member …]向 set 集合中添加元素SMEMBERS key查看集合中的所有元素SISMEMBER key member查看某一个数据是否在集合中SCARD key查看集合数据的个数,也就是集合的长度SREM key member [member …]移除集合中指定的元素127.0.0.1:6379> sadd m原创 2022-01-29 13:11:42 · 282 阅读 · 1 评论 -
【K8S 系列】k8s 学习二,kubernetes 核心概念及初步了解安装部署方式
咱们再来回顾一下 K8S 集群架构的组件,在网上找一张集群架构图说明一波1、master 组件apiserver集群的统一入口,restful 的方式,最后交给 etcd 存储shcheduler节点调度,选择 node 节点进行应用部署controller-manager处理集群中常规后台任务,一个资源对应一个控制器etcd存储系统,用于保存集群相关的数据2、node 组件,工作节点kubeletmaster 排到 node 节点代表,管理本机的容器kub原创 2022-01-01 09:57:36 · 270 阅读 · 0 评论 -
【K8S 系列】k8s 学习一,Kubernetes 基本介绍及核心组件
Kubernetes 概述官网::https://kubernetes.io/kubernetes github:https://github.com/kubernetes/kubernetes学习资料(语言可以自由切换):https://www.kubernetes.org.cn/k8skubernetes 有什么由来?最开始是谷歌公司内部使用的 Borg 系统,后面使用 Golang 重写并捐献给 CNCF 基金会开源了kubernetes 重要的作用?kubernetes 是一个开源的原创 2021-12-23 22:33:00 · 963 阅读 · 0 评论 -
【Docker 系列】docker 学习九,Compose 内容编排官网初步体验
我们前面的文章学习了 docker ,为什么还要 Compose 呢?Compose到底是个啥玩意?Docker Compose 可以来轻松的高效的管理容器,定义运行多个容器咱们一起来看看官方的介绍 docsCompose 是什么Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your appli原创 2021-12-03 22:32:24 · 2142 阅读 · 2 评论 -
【Docker 系列】docker 学习 四,镜像相关原理
【Docker 系列】docker 学习 四,镜像相关原理镜像是什么?镜像是一种轻量级的,可执行的独立的软件包。镜像用来打包软件的运行环境和基于运行环境开发的软件,它包含运行某些软件所需要的所有内容,例如:代码,运行时库,环境变量和配置文件等等所有的应用,可以直接打包 docker 镜像,一键部署,一键运行得到镜像方式有哪些?直接拷贝其他 docker 镜像自己制作一个镜像 DockerFile从远程仓库下载,如 dockerhubDocker 镜像的加载原理UnionFSUnio原创 2021-11-12 23:06:28 · 2669 阅读 · 0 评论 -
【Docker 系列】docker 学习 三
【Docker 系列】docker 学习 三使用 Dcoker 部署 nginx搜索 nginx 镜像使用 docker search nginx# docker search nginxNAME DESCRIPTION STARS OFFICIAL AUTOMATEDnginx Official原创 2021-11-06 21:55:03 · 1523 阅读 · 0 评论 -
【Docker 系列】docker 学习 二,Docker 的常用命令
【Docker 系列】docker 学习 二,Docker 的常用命令基本帮助命令# 查看 docker 的基本版本信息docker version# 查看 docker 的系统信息,如镜像和容器数量docker info# 查看某个命令的帮助docker xx命令 --help咱们可以看官方的帮助文档:https://docs.docker.com/reference/镜像命令docker images 查看镜像Usage: docker images [OPTIONS]原创 2021-10-30 09:25:37 · 238 阅读 · 0 评论 -
我们一起来学RabbitMQ 五:RabbitMQ 应知应会的面试题
我们一起来学RabbitMQ 五:RabbitMQ 应知应会的面试题MQ 是什么?MQ(Message Queue)消息队列用队列机制来实现软件之间的通信,消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息什么是队列?是一种数据结构,遵循 FIFO (先进先出)原则凭啥要使用 MQ , MQ 有啥优势?异步通信将以前也不中不必要的同步操作,优化成异步操作,提高性能业务解耦将原有A模块直接调用B模块的接口,优化成,A模块的请求给到MQ,A模块的事情就做完了原创 2021-10-15 23:02:31 · 239 阅读 · 0 评论 -
【我们一起来学 RabbitMQ 一 】RabbitMQ 的基本介绍
【我们一起来学 RabbitMQ 一 】RabbitMQ 的基本介绍嗨,大家好,我是小魔童哪吒,咱们从今天开始进入开源组件的学习,一边学习一边总结一边分享文章提纲如下:RabbitMQ 简单介绍及使用RabbitMQ 的六种工作模式本次文章不涉及编码,编码咱们统一放在下一次RabbitMQ 简单介绍RabbitMQ 是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高原创 2021-09-25 10:04:12 · 352 阅读 · 2 评论 -
GO的日志怎么玩
GO的日志怎么玩上次咱们分享了 GO的定时器timer和定时任务 cron,咱们来回顾一下:Timer 是什么Timer 如何使用Ticker 是什么Ticker 如何使用cron 是什么cron 如何使用要是想了解如上问题的答案,欢迎查看文章 GO的定时器Timer 和定时任务cron今天咱们来看看 GO 的标准库里面的 日志包 log具体源码路径:src/log/log.go如何简单使用 log 包咱们在编辑器中看看使用log包,会有什么提示一看,log包里面就涉及这些原创 2021-08-25 21:52:40 · 187 阅读 · 1 评论