怎么对容器抓包

微信公众号:LinuGo,欢迎关注在生产中,容器为了轻量级,里面并没有封装一些ip,ping这些基础命令,这时候可以通过进入容器的网络命名空间来执行命令。当然,也可以用这种方式对容器进行抓包。使用命令介绍nsenternsenter命令用于进入指定进程的命名空间,包括最常用的挂载命名空间和网络命名空间。适用于容器这种特殊的进程。#常用用法: #进入网络命名空间 $ nsenter -t <Pid> -n #进入挂载命名空间,类似docker exec进入容器 $ nsenter -t <Pid>...阅读全文

Segmentfault 2021-01-08 18:32:34 .container .car 等

协程池的简单设计

微信公众号:LinuGo,欢迎关注Golang标准库搭建的http服务端会为每一个请求创建一个协程去处理,虽然每个协程占有的栈空间很小,但是如果万一来个数百万千万的请求(当然,这种可能性有点极端),服务端只能对每一条请求乖乖创建一个协程,这时候,该go进程就存在大量的goroutine,占用服务器资源不说,还会增大gc压力。这时候就想给该机制加一个限制,搞一个协程池限制一下最大处理请求的协程数量。浏览一下标准库该部分的源码实现func (srv *Server) Serve(l net.List...阅读全文

Segmentfault 2021-01-08 12:32:35 .container .car 等

golang 下载依赖太慢 go get 太慢解决办法(goproxy 国内代理),详细版

用过go的同学都知道go get …… 是一个漫长的过程,既然python 有pip国内镜像,node 也有国内镜像,那go是否有类似的镜像呢?确实有go mod + goproxy 可参考http://mirrors.aliyun.com/goproxy/,具体怎实现呢? 在环境变量中加入GOPROXY值为https://mirrors.aliyun.com/goproxy/ 新建一个文件夹test 在test下执行go mod init test 新建main.go 写入代码 package...阅读全文

简书 2021-01-05 08:32:41 逸宸a

windows Golang基础教程

golang基础教程一、安装和配置golang的sdkWindows 安装和配置sdk1、下载golang sdk工具包1.Go 语言的官网为:golang.org , 因为各种原因,可能无法访问。2.SDK 下载地址:Golang 中国 https://studygolang.com/dl3.如何选择对应的 sdk 版本 Windows系统下,根据自己电脑的系统是32位还是64位的自行选择下载32位系统:go1.15.6.windows-386.msi 、go1.15.6.windows-38...阅读全文

简书 2021-01-05 08:32:40 jecken_yuan

GoLang的匿名函数与闭包

序言 在GoLang开发过程中,经常会遇到「匿名函数」和「闭包」,但是对这两个概念始终是一知半解,因此决定认真整理一下以解答这一疑惑。 一、什么是匿名函数? 首先,什么是「匿名函数」。匿名函数,顾名思义就是没有名字的函数,我们从一个简单的例子开始介绍。 1. 不带参数的匿名函数 package main import ( "fmt" ) func main() { f:=func(){ fmt.Println("hello world") } f()//hello world fmt.Print...阅读全文

简书 2021-01-05 08:32:36 MyBigSur

golang 注册和获取consul服务,api服务注册获取以及grpc注册获取

1.普通接口注册服务 执行后就会出现下面那个服务,他这里会检查这个服务是否可用,不可用就会自动剔除 package main import ( "fmt" "net/http" consulapi "github.com/hashicorp/consul/api" ) const ( consulAddress = "124.70.156.31:8500" localIP = "124.70.156.31" localPort = 3001 ) func consulRegister() { /...阅读全文

简书 2021-01-04 21:32:42 大地缸

golang 注册和获取consul服务,api服务注册获取以及grpc注册获取

1.普通接口注册服务 执行后就会出现下面那个服务,他这里会检查这个服务是否可用,不可用就会自动剔除 package main import ( "fmt" "net/http" consulapi "github.com/hashicorp/consul/api" ) const ( consulAddress = "124.70.156.31:8500" localIP = "124.70.156.31" localPort = 3001 ) func consulRegister() { /...阅读全文

简书 2021-01-04 16:32:50 哆啦在这A梦在哪

Kubernetes学习笔记之kube-proxy service实现原理

Overview我们生产k8s对外暴露服务有多种方式,其中一种使用 external-ips clusterip service ClusterIP Service方式对外暴露服务,kube-proxy使用iptables mode。这样external ips可以指定固定几台worker节点的IP地址(worker节点服务已经被驱逐,作为流量转发节点不作为计算节点),并作为lvs vip下的rs来负载均衡。根据vip:port来访问服务,并且根据port不同来区分业务。相比于NodePort ...阅读全文

Segmentfault 2021-01-07 18:32:33 .container .car 等

简单4步,利用Prometheus Operator实现自定义指标监控

本文来自Rancher Labs 在过去的文章中,我们花了相当大的篇幅来聊关于监控的话题。这是因为当你正在管理Kubernetes集群时,一切都会以极快的速度发生变化。因此有一个工具来监控集群的健康状态和资源指标极为重要。 在Rancher 2.5中,我们引入了基于Prometheus Operator的新版监控,它可以提供Prometheus以及相关监控组件的原生Kubernetes部署和管理。Prometheus Operator可以让你监控集群节点、Kubernetes组件和应用程序工作负...阅读全文

简书 2021-01-04 14:32:54 RancherLabs

【golang】随机数的使用方法

使用math/rand包操作随机数,rand.Seed(seedNum)方法设定种子值,rand.Intn(n)获取一个小于n的随机数,需要注意的是,同一个种子值,生成的随机数是确定的。所以我们尽量保证种子值的随机性,一般情况下可以采用系统时间的毫秒数作为种子值。 package main import ( "fmt" "math/rand" "time" ) func main() { var seedNum int64 = 666 //创建随机数种子,种子的值决定了随机数的值,只要种子确定,...阅读全文

简书 2021-01-04 14:32:46 七八个星天

【golang】冒泡排序和选择排序

冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 package main import "fmt" /** 冒泡排序:将每一个数同相邻的下一个数对比,比下一个数大则交换位置. */ func bubble(list []int) []int { //用来判断是否完成...阅读全文

简书 2021-01-04 14:32:46 七八个星天

Excelize 发布 2.3.2 版本, Go 语言 Excel 文档基础库

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选2020 Gopher ...阅读全文

Segmentfault 2021-01-07 11:32:33 xuri

docker的常规操作

配置阿里云容器加速器 0 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 1 配置阿里云镜像加速器:cd /etc/docker/daemon.json, 2 vim daemon.json 把: {"registry-mirrors": ["https://3tg72qr.mirror.aliyuncs.com"]} 填上 2_2 在镜像中心-镜像加速器- (https://3tg72qr1.mirror.aliyuncs...阅读全文

简书 2021-01-04 08:32:43 想暗算我窗户都没有

如何读取yaml,json,ini等配置文件【Golang 入门系列九】

本文转载自如何读取yaml,json,ini等配置文件【Golang 入门系列九】 前面已经讲过一些Go语言的基础知识,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。 实际项目中,还有一个比较重要的基础功能,就是读取相关的配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。 一. go读取json配置文件 JSON 应该比较熟悉,它是一种轻量级的数据交...阅读全文

简书 2021-01-03 22:32:53 雪域迷影

Golang实践-error

Golang实践-error Error Go error 是一个普通的接口,普通的值 type error interface { Error() string } 经常使用errors.New()来返回一个error对象 type errorString struct { s string } func (e *errorString) Error() string { return e.s } 对于真正意外的情况,那些表示不可恢复的程序错误,比如索引越界,不可恢复的环境问题,栈溢出,才会使...阅读全文

简书 2021-01-03 22:32:53 LegendGo

【golang】函数的使用

一.无参数无返回值函数 package main import "fmt" /** * 无参数无返回值 */ func helloFunc(){ fmt.Println("Hello World!") } func main() { helloFunc() } 运行结果: Hello World! 二.有参数无返回值,可以传递一个或多个参数 package main import "fmt" /** * 有参数无返回值,同类型参数可以合并在一起写,用“,”分隔 */ func helloFunc...阅读全文

简书 2021-01-03 22:32:52 七八个星天

golang中的switch

Go 编程语言中 switch 语句的语法如下: switch Variable{ case val1: ... case val2: ... default: ... } switch 语句执行的过程从上至下,直到找到匹配项。与C++中不同的是:switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面的 case,可以使用 fallthrough。但是fallthrough语句会强制执行下一个case,不论是否判断为真。 例如: ...阅读全文

简书 2021-01-03 22:32:52 小刀田田

【golang】递归求最大公约数

首先是求两个数最大公约数的数学原理:   辗转相除法, 又名欧几里德算法,是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 使用golang实现的代码如下: package main import "fmt" func divisor(min,max int) (maxDivisor int){ //用小数除大...阅读全文