- 博客(410)
- 资源 (4)
- 收藏
- 关注

原创 Go常见并发模式
文章目录一、Go语言并发的基础元素1.goroutine2.channel3.sync 包的同步原语4.多并发控制神器:Context二、常见并发模式Go语言实现1.for select 循环模式无限循环(监控狗)有限循环(for range select )2.select timeout 模式3.流水线模式(Pipeline)4.扇出和扇入模式5.未来模式(Futures)一、Go语言并发的基础元素goroutine、channel、sync 是并发编程中必不可少的元素,context标准包更是为
2021-01-14 10:36:28
2469
5

原创 Go语言并发实践
https://golang.google.cn/一、并发模型CSPCSP基本思想是:将并发系统抽象为channel和process两部分,二者相互独立,没有从属关系 ;channel用来传递消息,消息的发送和接收有严格的时序限制;process用于执行 。在Go语言中,channel就是通道 process就是goroutine 。Go语言调度模型goroutine的调度模型抽象出来三个实体:M P GM:machine:一个内核线程 P:processor Go执行一段代码的上下
2021-01-11 14:40:18
380
转载 成为 Go 高手的 8 个 GitHub 开源项目
想成为 Go 高手吗?那推荐看看这些开源项目。Go 从 2009 年开始正式对外公布,随着时间的推移,Go 在当前的编程语言中占有良好的地位,在 WEB 领域、云原生领域、底层服务领域都有广泛的应用。Go 是一门相对年轻的语言,具有 C/C++ 等编译语言的性能和安全性,同时也具有良好的开发速度。本文将核心库、学习路线、项目和资源进行了分类,以便你进一步扩展你对 Go 语言的了解。
2023-01-10 17:38:21
383
原创 vsftp使用
取消匿名用户的相关设置(虚拟用户与匿名用户使用相同的参数,所以如果要设定虚拟用户,取消主配置文件中关于匿名用户的配置,子虚拟用户配置文件才有作用)人为创建,生成数据库文件,找一个系统用户作为虚拟用户的映射用户,借助系统用户的家目录作为默认登陆点,则默认登录位置:/home/*dir下的配置文件的名字和虚拟用户文件中的用户名相同即可,每个用户就有每个配置文件。2.使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制。注:给映射用户的家目录,设置r权限,让虚拟用户有读写权限。
2023-01-05 17:36:04
505
原创 Go语言三个高效编程的技巧
其实也和上面的例子一样,encoding/json使用反射,这会导致性能不高,并且在编写返回 json 响应的 API 、或者微服务时会造成损失。比如像Loger,或者ORM,因为只有使用了通用的类型,才能编写出通用的代码,不然每个都要写一次。比如你可以使用 Easyjson,它很简单,也很高效,它是使用代码生成器来创建将结构转换为 json 所需的代码,以最大限度地减少分配。例如,Logrus 并不关心类型,但显然 Go 需要知道(最终)。两者都宣称零分配,这也是我们希望的,因为它们的性能影响最小。
2022-12-30 09:21:16
1432
原创 Selenium简介
selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。
2022-12-19 17:46:26
74
原创 Go实验性的大一统日志库
在 2022 年 8 月,Go 团队的 @ Jonathan Amsterdam 发起了 discussion: structured, leveled logging[1] 的讨论,试图与这个乱象再度一决雌雄。除此之外,在用户场景上,有着不包含上下文(context)信息、性能不够强劲、无法引入自定义插件等扩展诉求。基本上第三方库均有实现的,基本都用户的痛点之一。毕竟已经 10 年了,本讨论中得到了许多人的建议和推进,成功孵化。目标涵盖了前文背景中提到的痛点。
2022-12-12 17:23:37
406
原创 使用 Asynq 实现 Go 异步任务处理
Asynq 是一个 Go 库,用于对任务进行排队并与工作人员异步处理它们。它的工作原理:客户端将任务放入队列服务器从队列中拉出任务并为每个任务启动一个工作 goroutine多个工作人员同时处理任务仓库https://mp.weixin.qq.com/s/qCnjHo0uleLDr4Sukh77zw
2022-12-05 10:48:39
165
原创 Go 程序打成 rpm 包
go-bin-rpm 的配置文件是 rpm.json ,当然你也可以用其他文件名,我这里直接使用默认的,这样后面打包时就不用指定配置文件的名字。如果在不同的平台或系统有不同的二进制,则可以准备多个 rpm.json,然后在打包时,使用 -f rpm.json 来指定配置文件。于是乎,有人就编写了一个开源工具 go-bin-rpm,用它可以很方便的将二进制文件打包成 rpm 包。rpmbuild 的使用,需要你写不少的配置,非常繁琐,有研究过的人自然知道其中的泪。一切准备好了,就可以使用如下命令。
2022-11-30 17:33:34
705
原创 好用的源码行数统计工具——cloc
该命令会统计当前文件夹下所有符合.c和.h的文件。:统计某一压缩文件中的代码行数;:统计当前目录下的代码行数;
2022-10-27 10:24:11
1366
原创 makefile简单使用
commandtarget:一个object file(目标文件)、一个执行文件、一个标签(label)。label涉及“伪目标prerequisites: 生成该 target 所依赖的文件或targetcommand: 该 target 要执行的命令(任意的 shell 命令)这是一个文件的依赖关系,也就是说, target 这一个或多个的目标文件依赖于 prerequisites 中的文 件,其生成规则定义在 command 中。
2022-10-26 15:18:05
351
原创 k8s-client-go
开 发 者 常 使 用 client-go 基 于 Kubernetes 做 二 次 开 发 , 所 以 client-go是开发者应熟练掌握的必会技能。
2022-10-25 09:40:17
330
原创 K8S源码分析-kubelet-1
cAdvisor(https://github.com/google/cadvisor)是 google 开发的容器监控工具,集成在 kubelet 中,起到收集本节点和容器的监控信息,大部分公司对容器的监控数据都是从 cAdvisor 中获取的 ,cAvisor 模块对外提供了 interface 接口,该接口也被 imageManager,OOMWatcher,containerManager 等所使用。容器健康检查:检查容器运行状态,根据 pod 设置的重启策略进行处理。
2022-10-24 09:04:13
141
原创 基于Go-kratos落地DDD
基于Go-kratos落地DDD提示:以下是本篇文章正文内容,下面案例可供参考例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2022-10-24 09:03:08
959
转载 一文详解四元数、欧拉角、旋转矩阵、轴角如何相互转换
D3D和OpenGL不同,用的坐标系是Y轴竖直向上的左手系,所以欧拉角的顺规是跟广大blog、OpenGL不一样的,那么博客上、甚至维基百科[2]上的各种基于右手系xyz顺规(分别对应roll, pitch,yaw)的看起来就不太能随随便便直接用了。
2022-10-20 09:20:36
429
原创 轴角、四元数转换
四元数的乘法不符合交换律(commutative law)。轴角用一个以单位矢量定义的旋转角,再加上一个标量定义的旋转角来表示旋转。通常的表示[x,y,z,theta],前面三个表示轴,最后一个表示角度。明确地说,四元数是复数的不可交换延伸。如把四元数的集合考虑成多维实数空间的话,四元数就代表着一个四维空间,相对于复数为二维空间。轴角最大的一个局限就是不能进行简单的插值,此外,轴角形式的旋转不能直接施于点或矢量,必转换为矩阵或者四元数。四元数就是形如 ai+bj+ck+d 的数,a、b、c、d是实数。
2022-10-19 15:33:00
711
翻译 Go语言之道[译]-The Tao of Go
道”是指事物的内在本质或自然趋势。例如,水向低处流:这就是水的“道”。你可以筑坝、疏导、抽水,或以其他方式干扰它,但尽管你做了种种努力,它最终可能还是会流向它要去的地方。你遵循“道”并将其作为你的处事原则,就是要对事物的自然趋势保持敏感,不浪费精力与之抗争,而是顺势而为,而非逆势而为。扩展一下水的比喻,一个泳技糟糕的游泳者在水中乱扑腾,制造了很多噪音和骚动,但却没有真正前进。而道家,则是在水中冲浪(译注:借助波浪,顺势而为)。那么什么是Go语言之道呢?
2022-10-07 09:44:12
253
原创 三、Helm3常见命令
Helm chart将它们的依赖存储在charts/目录中。对于chart开发人员来说,管理一个声明所有依赖的依赖文件(requirements.yaml)通常更容易。helm dependency命令对该文件进行操作,使得在所需的依赖和存储在charts/目录中的实际依赖项之间进行同步变得很容易。设置–max配置返回的修订列表的最大长度。在执行helm命令的时候,使用tab键默认时无法自动补全的。后,双击tab发现,会自动弹出子命令供选择,,此时双击tab键是不能自动补全命令的。如果在chart包内。
2022-09-16 16:25:02
1200
原创 二、Helm3安装
选择helm版本:https://github.com/helm/helm/releases/tag/v3.6.3。安装参考:https://helm.sh/zh/docs/intro/install/下载完成后,解压,将helm.exe报备到有执行权限的目录。K8S本地版本:“v1.21.5”
2022-09-16 14:20:22
401
原创 NFS使用-动态供应
1、创建NFS-Subdir-External-Provisioner1-sep.yaml2、创建NFS StorageClass2-sc.yaml3、创建PVC3-pvc.yaml4、负载绑定pv5、创建service。
2022-09-02 10:57:51
204
原创 Goland快捷键整理
Ctrl + Shift + ↑/↓ 将光标所在的行进行上下移动(也可以使用 Alt+Shift+↑/↓)CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里。CTRL+SHIFT+P 查看表达式类型(在表达式上或者表达式末尾使用)Ctrl + Shift + Alt + N 查找类中的方法或变量。Ctrl + Alt + Space 类名或接口名提示(代码提示)CTRL+ALT+F7 选中的字符查找工程出现的地方。CTRL+SHIFT+ALT+N 查找方法或变量。
2022-08-22 16:07:06
756
原创 7、AWS SDK for Go-文件分片上传
分段即分片。文档地址:传送门对象分片上传对象的分片上传优势使用分段上传可提供以下优势:建议您按以下方式使用分段上传:分段上分为三个步骤:开始上传、上传对象分段,以及在上传所有分段后完成分段上传。当您发送请求以开始分段上传时,Amazon S3 将返回具有上传 ID 的响应,此 ID 是分段上传的唯一标识符。无论您何时上传分段、列出分段、完成上传或停止上传,您都必须包括此上传 ID。如果您想要提供描述已上传的对象的任何元数据,必须在请求中提供它以开始分段上传。上传分段时,除了指定上传 ID,还必须指定
2022-07-26 16:03:45
1351
1
原创 5、AWS SDK for Go-使用s3manager上传下载文件
S3下载管理器确定文件是否可以拆分为更小的部分并并行下载。您可以自定义并行下载的数量和下载部分的大小。S3上传管理器确定文件是否可以拆分为更小的部分并并行上传。您可以自定义并行上传的数量和上传部分的大小。上传和下载管理器可以分解大型对象,以便可以将它们分成多个部分并行传输。这使得恢复中断的传输变得容易。下载的文件d_2.jpg如图。...
2022-07-26 13:53:15
993
原创 4、AWS SDK for Go-session使用
如果AWS_SDK_LOAD_CONFIG环境变量设置为真值,则会话是根据共享配置(~/.aws/config)和共享凭证(~/.aws/credentials)文件中的配置值创建的。如果AWS_SDK_LOAD_CONFIG设置了环境变量,或者使用SharedConfigEnable选项来创建会话(如下例所示),则还会从共享配置文件(~/.aws/config)中加载其他配置信息(如果存在)。创建会话时,您可以设置多个环境变量来调整SDK的运行方式以及创建会话时加载的配置数据。...
2022-07-26 13:46:06
323
原创 2、使用S3协议访问OSS
例如,已通过RAMPolicy或者BucketPolicy将Bucket内的所有Object或者与指定Prefix匹配的Object的访问权限设置为私有,但是考虑到您需要将其中某个Object开放给所有互联网匿名用户访问,则选择ObjectACL,并将ACL设置为public-read。文档地址https//docs.aws.amazon.com/zh_cn/sdk-for-go/?github地址https//github.com/aws/aws-sdk-go。............
2022-07-26 10:11:51
2746
原创 1、aws-sdk-go快速使用(minio和oss)
只要会话没有被修改,会话就可以安全地并发使用。创建会话后,SDK不会修改会话。从共享会话同时创建服务客户端是安全的。
2022-07-22 08:59:59
1484
原创 C++11、C++14、C++17、C++20新特性总结(5万字详解)
传送门:C++11、C++14、C++17、C++20新特性总结(5万字详解)
2022-07-13 13:40:15
606
Redis集群配置文件
2019-12-27
证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用
2019-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人