GoLang
文章平均质量分 75
GoLang
进击云原生
专注云原生、Go、Linux、Java等技术分享,原创文章、效率工具、实战解决方案!关注我,了解互联网动态,学 IT 不迷路
展开
-
Go 中模拟 Kubernetes 客户端进行单元测试
Go 中模拟 Kubernetes 客户端进行单元测试是的,我们可以模仿 K8s Client!编写单元测试一直是开发人员的痛苦。这样做的主要原因是,通常,单元测试(功能单元测试)不得使用应用程序的任何物理组件/运行实例。例如,API 的 SDK 的单元测试不应该有 API 的任何运行实例。这就是为什么模拟应用程序实例变得至关重要,这也是诀窍!在本文中,我们将了解如何使用client-go 包中的 fake(伪造的) clientset (客户端集)模拟 Kubernetes 客户端。让我们开始吧!原创 2022-12-03 11:00:48 · 746 阅读 · 0 评论 -
Go 1.19 发布!
最后,Go 1.19 包括各种性能和实现改进,包括动态调整初始 goroutine 堆栈以减少堆栈复制、在大多数 Unix 系统上自动使用附加文件描述符、在 x86-64 和 ARM64 上用于大型 switch 语句的跳转表,支持 ARM64 上的调试器注入函数调用,RISC-V 上的寄存器 ABI 支持,以及在龙芯 64 位架构 LoongArch (随着内存模型的更新,, Go 1.19 的泛型开发集中在解决社区向我们报告的微妙问题和极端情况,以及重要的性能改进(某些泛型程序高达 20%)。...翻译 2022-08-08 11:02:55 · 463 阅读 · 0 评论 -
Mac 上用 brew 管理和切换 Go 多个版本
挑版本之前,我们先来看看Go语言的。如今,Go团队已经将版本发布节奏稳定在每年发布两次大版本上,一般是在和。Go团队承诺,比如目前最新的大版本是Go1.17,那么Go团队就会为Go1.17和Go1.16版本提供支持。如果Go1.18版本发布,那支持的版本将变成Go1.18和Go1.17。支持的范围主要包括修复版本中存在的重大问题、文档变更以及安全问题更新等。因为Go团队发布的Go语言稳定版本的平均质量一直是很高的,少有影响使用的重大bug。...转载 2022-08-02 15:52:33 · 2017 阅读 · 0 评论 -
一个好玩的Go项目,3D界面管理k8s集群,真好玩
一个用Golang开发,很好玩的工具[`KubeCraftAdmin`](https://github.com/erjadi/kubecraftadmin/):用Minecraft方式管理k8s的工具。身历其境的3D沙盒用户界面,来管理容器编排kubernetes中的工作负载。原创 2022-01-07 11:13:57 · 2807 阅读 · 0 评论 -
kubernetes client-go之expiration_cache实现带过期时间的缓存
kubernetes client-go之expiration_cache实现带过期时间的缓存原创 2020-09-09 22:11:00 · 803 阅读 · 0 评论 -
golang闭包原理、用途、示例代码详解
golang闭包原理、用途、示例代码详解.1、Go语言支持闭包2、Go语言能通过escape analyze识别出变量的作用域,自动将变量在堆上分配。将闭包环境变量在堆上分配是Go实现闭包的基础。3、返回闭包时并不是单纯返回一个函数,而是返回了一个结构体,记录下函数返回地址和引用的环境中的变量地址。原创 2020-09-09 22:08:41 · 982 阅读 · 0 评论 -
kubernetes wait包示例详解
kubernetes源码中,很多地方都用到了wait包,下面对此包做简单介绍和示例,加深理解。Until、NonSlidingUntil原创 2020-08-11 15:02:05 · 1511 阅读 · 0 评论 -
golang日志库glog解析
golang日志库glog解析、vlog简介、每天自动切割日志文件、 设置等级控制日志的输出转载 2019-11-26 11:11:23 · 1743 阅读 · 0 评论 -
Golang性能优化
string与[]byte相互转换、map使用注意事项、字符串拼接、reflect的性能影响转载 2019-11-26 10:39:43 · 1169 阅读 · 0 评论 -
golang操作阿里云对象存储——OSS | 创建桶、上传、下载、查询、删除数据
golang操作阿里云对象存储——OSS;创建桶、上传、下载、查询、删除数据原创 2019-11-25 23:47:26 · 1977 阅读 · 1 评论 -
我非要把这个bug优雅的解决掉 | k8s记录events报错:Could not construct referenc
遇到问题,解决办法可能很多,但怎么解决才算更优雅,接近原生,纯天然,才是值得推荐的。Could not construct reference to ***due to: ‘no kind is registered for the type *** in scheme原创 2019-11-14 00:20:50 · 2226 阅读 · 0 评论 -
golang flag包使用笔记
本文原文地址:flag - 命令行参数解析在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯粹自己写代码来解析,对于比较复杂的,还是挺费劲的。在 go 标准库中提供了一个包:flag,方便进行命令行解析。首先,我们看flag包可以做什么,它具有什么样的能力。1.1 使用示例:我们以 ng...原创 2019-10-25 11:38:40 · 997 阅读 · 0 评论 -
nginx学习笔记
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多个应用上进行逻辑处理。因为有了中间件,使得大型网站在规划有了更好的层次性,维护上更加方便。也可以实现负载均衡、安全防护等。Nginx是一个开源高性能、可靠的HTTP中间件、代理服务,在目前企业中得到了很...原创 2019-10-18 00:58:46 · 412 阅读 · 0 评论 -
ElasticSearch5.x 删除数据
以下测试在elasticsearch5.6.10版本。首先要说明的是ElasticSearch从2.x开始就已经不支持删除一个type了,所以使用delete命令想要尝试删除一个type的时候会出现如下错误:No handler found for uri [/dating_profile/zhenai/] and method [DELETE]测试假如存在一个名为dating_pro...原创 2019-10-18 00:56:31 · 1129 阅读 · 0 评论 -
golang初探与命令源码分析
golang初探与命令源码分析原创 2019-10-18 00:54:25 · 338 阅读 · 0 评论 -
搭建个私有docker镜像仓库
公有仓库和私有仓库:速度:公有仓库走的公网,速度较慢;私有仓库走的是内网,即局域网;安全性:公有仓库存放在公共硬盘上;私有仓库存在自己服务器硬盘上。公有仓:最权威的,但速度比较慢:*https://hub.docker.com/*首先登陆:$ docker login -usmallsoup Password: WARNING! Your password will be st...原创 2019-10-18 00:51:24 · 891 阅读 · 0 评论 -
kube-apiserver审计日志记录和采集
Kubernetes 审计功能提供了与安全相关的按时间顺序排列的记录集,记录单个用户、管理员或系统其他组件影响系统的活动顺序。它能帮助集群管理员处理以下问题:发生了什么?什么时候发生的?谁触发的?为什么发生?在哪观察到的?它从哪触发的?它将产生什么后果?Kube-apiserver执行审计。每个执行阶段的每个请求都会生成一个事件,然后根据特定策略对事件进行预处理并写入后端...原创 2019-10-18 00:48:42 · 3216 阅读 · 0 评论 -
浅谈json web token及应用
Json Web Token (JWT),是一个非常轻巧的规范,这个规范允许在网络应用环境间客户端和服务器间较安全的传递信息。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。在web应用中,我们提供的API接口,通过GET或者POST方式调用,在调用过程中,就...原创 2019-10-18 00:46:08 · 355 阅读 · 0 评论 -
一个神秘现象引发对beego框架的思考
一个神秘现象引发对beego框架的思考:在dev模式和prod模式下异常返回的差异原创 2019-10-18 00:43:43 · 585 阅读 · 0 评论 -
利用golang优雅的实现单实例
平时编写代码过程中,经常会遇到对于全局角度只需运行一次的代码,比如全局初始化操作,设计模式中的单例模式。针对单例模式,java中又出现了饿汉模式、懒汉模式,再配合synchronized同步关键字来实现。其目的无非就是将对象只初始化一次,而且最好保证在用到的时候再进行初始化,以避免初始化太早浪费资源,或者两次初始化破坏单例模式的实例唯一性。Go语言的sync包中提供了一个Once类型来保证全局的...原创 2019-10-18 00:41:38 · 352 阅读 · 0 评论 -
Go语言及Beego框架环境搭建
在开始环境搭建之前,我们先一起来看看:Go有什么优势:不用虚拟机,它可直接编译成机器码,除了glibc外没有其他外部依赖,部署十分方便,就是扔一个文件就完成了。天生支持并发,可以充分的利用多核,很容易实现并发。25个关键字,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化...原创 2019-10-18 00:39:11 · 735 阅读 · 0 评论 -
爬虫遇到了点问题
golang爬珍爱网代码优化后,运行报了如下的错,找了半小时才找到原因,在此记录一下。代码是这样的:有一个interface类型的Parser:type Parser interface { Parser(contents []byte, url string) ParserResult Serialize() (funcName string, args interfac...原创 2019-10-18 00:31:58 · 676 阅读 · 0 评论 -
爬虫性能分析及优化
前两天我们写了单任务版爬虫爬取了珍爱网用户信息,那么它的性能如何呢?我们可以通过网络利用率看一下,我们用任务管理器中的性能分析窗口可以看到下载速率大概是保持在了200kbps左右,这可以说是相当慢了。我们针对来通过分析单任务版爬虫的设计来看下:从上图我们可以看出,engine将request从任务队列取出来,送到Fetcher取获取资源,等待数据返回,然后将返回的数据送到Parser去解...原创 2019-10-18 00:29:11 · 1435 阅读 · 0 评论 -
用go语言爬取珍爱网 | 第三回
前两节我们获取到了城市的URL和城市名,今天我们来解析用户信息。用go语言爬取珍爱网 | 第一回用go语言爬取珍爱网 | 第二回爬虫的算法:我们要提取返回体中的城市列表,需要用到城市列表解析器;需要把每个城市里的所有用户解析出来,需要用到城市解析器;还需要把每个用户的个人信息解析出来,需要用到用户解析器。爬虫整体架构:Seed把需要爬的request送到engine,engin...原创 2019-10-18 00:26:55 · 908 阅读 · 2 评论 -
用go语言爬取珍爱网 | 第二回
昨天我们一起爬取珍爱网首页,拿到了城市列表页面,接下来在返回体城市列表中提取城市和url,即下图中的a标签里的href的值和innerText值。提取a标签,可以通过CSS选择器来选择,如下:$('#cityList>dd>a');就可以获取到470个a标签:这里只提供一个思路,go语言标准库里没有CSS解析库,通过第三方库可以实现。具体可以参考文章:https://my.osch...原创 2019-10-18 00:24:10 · 512 阅读 · 0 评论 -
用go语言爬取珍爱网 | 第一回
我们来用go语言爬取“珍爱网”用户信息。首先分析到请求url为:http://www.zhenai.com/zhenghun接下来用go请求该url,代码如下:package mainimport ( "fmt" "io/ioutil" "net/http")func main() { //返送请求获取返回结果 resp, err := http.Get("htt...原创 2019-10-18 00:21:30 · 472 阅读 · 0 评论 -
NAT模式实现虚拟机共享主机网络
上一节我们在虚拟机上搭建了linux系统,并利用桥接模式访问互联网,这一节,我们来配置一下通过NAT模式访问互联网。说到这里有些小伙伴可能要问了,NAT模式和桥接模式有什么区别呢?桥接模式:虚拟机虚拟出来的系统和局域网内的独立主机属于同等地位,它可以访问局域网内任何一台机器,该模式下,我们得为虚拟主机——linux配置IP地址,子网掩码,而且该IP要和宿主机的IP是同一网段。如果我们需要在局域...原创 2019-10-18 00:19:17 · 3897 阅读 · 0 评论 -
推荐一款超好用的工具cmder
今天来推荐一个超级好用的命令行工具:cmder一款Windows环境下非常简洁美观易用的cmd替代者,它支持了大部分的Linux命令。支持ssh连接linux,使用起来非常方便。比起cmd、powershell、conEmu,其界面美观简洁,功能强大。下面来看看效果:上面演示了linux下的ls -l、vi,以及vi编辑中的删除行,复制、粘贴,跳到行首、行尾。等基本命令,通过设置别名可以让操...原创 2019-10-18 00:14:53 · 651 阅读 · 0 评论 -
golang初探与命令源码分析
前段时间有群友在群里问一个go语言的问题:就是有一个main.go的main函数里调用了另一个demo.go里的hello()函数。其中main.go和hello.go同属于main包。但是在main.go的目录下执行go run main.go却报hello函数没有定义的错:代码结构如下:**gopath ---- src** **----gohello** ...原创 2019-10-18 00:12:26 · 332 阅读 · 0 评论 -
LAMP环境部署物联网项目
今天来在LAMP环境下搭建一个PHP项目,开始之前,先来普及下物联网常识:物联网,即Internet of Things,简写IOT。让所有能行使独立功能的普通物体实现互联互通的网络,通过物联网可以用中心计算机对机器、设备、人员进行集中管理、控制,实现物物相连。近几年物联网在运输、物流、健康医疗、智能环境(家庭、办公、工厂)等领域都在迅速发展,前景打好。B哥最近研究一个物联网项目:基本...原创 2019-10-18 00:02:48 · 605 阅读 · 0 评论 -
linux上安装LAMP笔记
B哥最近在参加比赛,需要把一个php项目部署到服务器上,故此在linux上安装LAMP环境,用于部署项目,第一次安装,做点儿笔记记录一下。安装条件:Redhat或者CentOS linux环境已装好,并配置了yum源。用yum安装httpd、mariadb、php安装httpd:yum -yinstallhttpd安装mariadb:yum -yinstallmariad...原创 2019-10-17 23:56:08 · 458 阅读 · 0 评论 -
ReadMore 之 cnblogs 博客园使用指南
readmore来源于:https://openwrite.cn/openwrite/openwrite-readmore/博客园接入 readmore 很简单,三步走,2 分钟搞定!在 OpenWrite 生成 readmore 脚本微信公众号设置关键词回复在博客园设置中添加脚本第一步, 在 OpenWrite 生成 readmore 脚本在 OpenWrite 后台,增长工...原创 2019-10-17 14:33:17 · 3818 阅读 · 1 评论 -
CSDN VIP如何添加自定义栏目
几个月前我也开始在csdn上开了博客,一来给自己加几个少的可怜的流量,再者,让公众号的原创文章获得更多的曝光,让有需要的同学看到。写过csdn博客的同学都知道,默认只有打赏c币功能;也没有专门广告位;引导栏目,只有侧栏csdn自己的引导二维码。如何在csdn自定义栏目,加赞赏功能,或者其他等引导,让读者能很直观的看到,而不是在每篇文章加,增加自己工作量。这个功能以前对所有用户开放,但是很不幸...原创 2019-10-15 23:52:53 · 469 阅读 · 0 评论 -
mysql数据导出golang实现
mysql数据导出golang实现原创 2019-06-25 15:14:35 · 1410 阅读 · 2 评论 -
golang 设置 http response 响应头与坑
golang 设置 http response 响应头与坑原创 2019-06-25 15:28:16 · 7653 阅读 · 0 评论 -
java、golang日志文件转储压缩实现
日志的转储和压缩是非常关键的,它不仅可以减少硬盘空间占用,主要还可以在发生故障时根据日志定位出故障原因。下面来看看golang和java的文件转储实现。修改权限也可以利用Java7中NIO.2对元数据文件操作的支持,具体可以查看NIO包的使用,其相关教程见文末说明。原创 2019-06-25 15:48:42 · 915 阅读 · 0 评论 -
go语言生成可执行文件
go语言如何生成可执行文件?原创 2019-06-25 15:54:25 · 9023 阅读 · 0 评论 -
如何批量删除k8s资源对象
经常会遇到批量删除k8s资源对象的需求,下面记录一下kubectl和golang发送删除pvc、pv、pod请求的例子,便于后续学习查阅原创 2019-10-10 20:42:53 · 2305 阅读 · 0 评论 -
kubernetes垃圾回收器GarbageCollector Controller源码分析(二)
接上一节:kubernetes垃圾回收器GarbageCollector Controller源码分析(一)GarbageCollector Controller源码主要分为以下几部分:①、monitors作为生产者将变化的资源放入graphChanges队列;同时restMapper定期检测集群内资源类型,刷新monitors②、runProcessGraphChanges从graphCh...原创 2019-10-11 17:29:18 · 478 阅读 · 0 评论 -
k8s自定义资源类型代码自动生成
k8s自定义资源类型代码自动生成原创 2019-11-14 00:13:13 · 2209 阅读 · 0 评论