GOLANG
ailinyingai
DevOps 搬砖人 干饭人
展开
-
go内置容器
数组 array切片 slice对比一下可以发现,唯一的区别就在于,数组是使用 [5]int{xxx} 来进行初始化,而 slice 是使用 []int{xxx}。在Go中,我们经常使用slice。slice的特点是,长度是可以改变的,也就是说,我们可以无限追加元素到slice中。其他特点slice与数组并无区别。mapmap是哈希表,Go语言中,声明一个map是这样用:var x map[string]string但是注意,上面只是说明x的类型是 map[string]string,但是x的翻译 2021-01-21 18:58:39 · 122 阅读 · 1 评论 -
golang基本类型
如果你学过计算机组成的话,就应该知道,现在的计算机是都是基于二进制,而二进制只能表示两个状态,1和0。其实我们平时在 计算机上看到的所有东西,例如一个字符串,一个整数,一张图片,一个网页等等,他们在最底层,都是一长串的0和1。那么我们怎么知道哪些0和1是字符串,哪些0和1是整数呢?其实这是人为规定的。我们把一个0或1,也就是最小的单位,叫做一个bit。 而把8个这样的单位组合在一起,叫做一个byte,也就是说,1 byte = 8 bit。既然一个bit能表示两个状态,那么八个bit就能表示 2 ** 8翻译 2021-01-21 18:56:47 · 338 阅读 · 0 评论 -
golang 编辑器
chime 注重细节和周到的设计翻译 2020-03-03 09:11:18 · 688 阅读 · 0 评论 -
golang的选择
http://dockone.io/article/8350原创 2020-02-06 16:43:49 · 156 阅读 · 0 评论 -
为什么选择golang
感谢 ror 带我入门 web,虽然它可能并不适合用来入门 web主要是因为它提供的所有实践都是最方便开发的,以至于跳过了很多新手趟坑的阶段,而显得有了太多的魔法动态语言一时爽,不写测试火葬场ROR 在当年有非常优雅的 ORM 实现,ActiveRecord 和链式调用的实践开创者。后来这两个套路被别的 Web 框架学过去了,就泯然众人矣了,毕竟动态语言先天的弱点是摆在那里的https:/...原创 2020-02-06 10:51:13 · 285 阅读 · 0 评论 -
go-python
何时使用go-python你需要一个功能,没有开源的go实现,但是python有,并且性能不是很重要你需要一个脚本语言嵌入到go中,让go代码获得动态能力你想使用Cython干一些hack的事但是又不想撸C语言go-python有什么缺点python虚拟机是全局的,意味着线程不安全,在必要的地方要使用GIL保护python会拖慢golang的性能,在性能重要的场合谨慎使用python...原创 2020-02-03 17:28:14 · 1270 阅读 · 0 评论 -
prometheus
2.1 图形化还是配置文件Zabbix 的图形化配置毫无疑问是完爆 Prometheus 的,但这真的是个优势吗?细想起来还真未必。图形化确实省去了手动改配置文件和命令行的繁琐,但这种努力毫无疑问是已经做出了需要人工介入的假设。但 Prometheus 是为云原生环境而生的,这种情况下,环境是动态变化的,服务器会随时增减,人工介入不太现实,那么图形化在这种情况下意义就不大了,毕竟要做自动化,那...原创 2020-01-22 14:23:57 · 291 阅读 · 0 评论 -
K8S
应用程序生命周期管理 8%安装,配置和验证 12%核心概念 19%网络 11%调度 5%安全 12%集群维护 11%日志/监控 5%存储 7%故障排除 10%翻译 2020-01-20 17:48:11 · 108 阅读 · 0 评论 -
docker 命令大全
功能划分命令环境信息相关infoversion系统运维相关attachbuildcommitcpdiffexportimagesimport / save / loadinspectkillportpause / unpausepsrmrmirunstart / stop / restarttagtopwait日志信息相关eventshist...翻译 2020-01-16 09:45:36 · 137 阅读 · 0 评论 -
Prometheus 0006
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haprox...原创 2020-01-15 17:52:38 · 149 阅读 · 0 评论 -
golang 文档
我真的习惯了我的Python框架和库,如Flask,Jinja2,Requests还有Kazoo,我真的很担心我找不到一个适合Go的。但是你可以猜到,Go这个伟大的社区拥有自己独特的库,甚至可以让你完全忘记以前的库。以下是我的一些偏好-Python Requests => net / http内置的net / http 提供了非常棒的HTTP客户端和服务器实现,而且非常易于使用。F...原创 2020-01-15 10:30:52 · 256 阅读 · 0 评论 -
prometheus 0005 操作
docker run --name=prometheus -d -p 9090:9090 -v /root/promethues/server/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/promethues/server/rules.yml:/etc/prometheus/rules.yml prom/prometheus:v2....原创 2020-01-14 17:43:47 · 301 阅读 · 0 评论 -
prometheus 0004
作业和实例Prometheus 中,将任意一个独立的数据源(target)称之为实例(instance)。包含相同类型的实例的集合称之为作业(job)。 如下是一个含有四个重复实例的作业:job: api-serverinstance 1: 1.2.3.4:5670instance 2: 1.2.3.4:5671instance 3: 5.6.7.8:5670instance 4:...原创 2020-01-14 10:45:31 · 121 阅读 · 0 评论 -
prometheus 0003
docker run --name prometheus -d -p 127.0.0.1:9090:9090 quay.io/prometheus/prometheus运行 docker start prometheus 启动服务运行 docker stats prometheus 查看 prometheus 状态运行 docker stop prometheus 停止服务Promethe...原创 2020-01-14 10:34:34 · 192 阅读 · 0 评论 -
Prometheus 0002
Prometheus vs ZabbixZabbix 使用的是 C 和 PHP, Prometheus 使用 Golang, 整体而言 Prometheus 运行速度更快一点。Zabbix 属于传统主机监控,主要用于物理主机,交换机,网络等监控,Prometheus 不仅适用主机监控,还适用于 Cloud, SaaS, Openstack,Container 监控。Zabbix 在传统主机监...翻译 2020-01-14 10:04:57 · 102 阅读 · 0 评论 -
文档记录
https://juejin.im/entry/5d5b63bae51d45620346b8b5https://juejin.im/entry/5d5b63dbe51d453b5d4d8d65https://studygolang.com/articles/10994https://reading.developerlearning.cn/interview/articles/intervi...原创 2020-01-08 08:55:26 · 86 阅读 · 0 评论 -
python3 c/cpp扩展
创建一个文件setup.py第一行代码导入setup库,其中name是打包的库说明的.egg-info的文件名version=“1.0” 这个说明文件名的后缀,如果不设置后缀会默认0.0.0ext_modules=[Extension(“mymod”, [“mymod.c”] )] 中mymode是对应的模块名称和模块文件名,[“mymod.c”]里面是编译为库的源文件,可以是多个文件,这里...原创 2020-01-02 14:16:26 · 265 阅读 · 0 评论 -
golang的开发学习
error 是接口类型 通过 errors.New 函数生成的错误值 只能赋值給变量 而不能赋給常量syscall 包 Errno 类型 代表了系统调用时可能发生的底层错误这个错误类型 是error接口的实现类型 同时也是对内建类型 uintptr 的再定义类型可以作为常量的类型 用其建的错误值列表 无法被修改os 包 的错误值os.ErrClosedos.ErrInvalidos...原创 2019-12-28 14:11:14 · 194 阅读 · 0 评论 -
golang 进制转换
package mainimport ( "fmt" "math" "strconv" "strings")var tenToAny map[int]string = map[int]string{0: "0", 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", ...原创 2019-12-23 15:50:58 · 1198 阅读 · 0 评论 -
golang mysql封装
package modelsimport ( "database/sql" "errors" . "gin_monitor/config" "strings" // "fmt" _ "github.com/go-sql-driver/mysql")//数据库连接DSNconst ( DbType = "mysql" // ...原创 2019-12-23 15:47:04 · 998 阅读 · 2 评论 -
go语言开发的要点
开发热更新我们在开发代码时希望能够边改代码边运行看到结果,类似于 PHP脚本语言那样,但受限于 Go 的编译运行,自身无法实现,所以要借助一些第三方工具来解决这个问题。我使用 Go 开发了一个文件更新通知的软件 fileboy,可以很好的处理这类问题。该软件已开源,有兴趣的朋友可以在 fileboy github 下载使用。测试测试时一款健壮的应用程序不可或缺的一部分(虽然我们都不喜欢写这...原创 2019-12-18 17:57:05 · 237 阅读 · 0 评论 -
为什么选择golang
因为 “golang并没有颠覆性解决问题”,只是, 简单, 学习简单1.1 太阳底下没有新鲜事, 历史总是在"重复"当年 写 CGI , php 打败了 perl , 无他, 在 web 的 CGI 时代, php 学习成本低.同样 , 2018年 vueJS 与 react 相比更为"火", 无他, vuejs 学习成本低.go 相对于 java 也有点类似, 学习成本低.好几...原创 2019-12-17 14:06:11 · 311 阅读 · 0 评论 -
k8s 命令搜集
#查看所有namespace的pods运行情况kubectl get pods --all-namespaces#查看具体pods,记得后边跟namespace名字哦kubectl get pods kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system# 查看pods具体信息kubectl get pods -o w...原创 2019-12-06 15:24:46 · 94 阅读 · 0 评论 -
gin 基础教程
// 匹配 /user/geektutur.GET("/user/:name", func(c *gin.Context) {name := c.Param(“name”)c.String(http.StatusOK, “Hello %s”, name)})// 匹配users?name=xxx&role=xxx,role可选r.GET("/users", func(c *gi...翻译 2019-11-26 21:17:51 · 704 阅读 · 0 评论 -
golang发展
有没有一个或多个杀手级应用。C、C++ 和 Java 的杀手级应用不用多说了,就算是对于 PHP 这样还不能算是一个好的编程语言来说,因为是 Linux 时代的第一个杀手级解决方案 LAMP 中的关键技术,所以,也发展起来了。上述的这三点是非常关键的,新的技术只需要占到其中一到两点就已经很不错了,何况有的技术,比如 Java,是三点全占到了,所以,Java 的发展是如此好。当然,除了上面这三点重...原创 2019-11-26 13:31:49 · 447 阅读 · 0 评论 -
go 源码分析
Python等解释性语言采用的是多进程并发模型,进程的上下文是最大的,所以切换耗费巨大,同时由于多进程通信只能用socket通讯,或者专门设置共享内存,给编程带来了极大的困扰与不便;C++等语言通常会采用多线程并发模型,相比进程,线程的上下文要小很多,而且多个线程之间本来就是共享内存的,所以编程相比要轻松很多。但是线程的启动和销毁,切换依然要耗费大量CPU时间;于是出现了线程池技术,将线程先储存...原创 2019-11-08 14:22:12 · 1220 阅读 · 0 评论 -
生产消费
package mainimport ( "time" "fmt" "os")var ch1 chan int = make(chan int)var bufChan chan int = make(chan int, 1000)var msgChan chan string = make(chan string)func sum(a int, b int...原创 2019-10-15 09:14:38 · 158 阅读 · 0 评论 -
分布式id
package mainimport ( "fmt" "os" "github.com/bwmarrin/snowflake")func main() { n, err := snowflake.NewNode(1) if err != nil { println(err) os.Exit(1) } ...原创 2019-10-07 23:39:17 · 103 阅读 · 0 评论 -
go协程
package mainimport ( "fmt" "github.com/PuerkitoBio/goquery" "strconv" "strings" "sync" "time")func do_task(url string, domain string) { p, err := goquery.NewDocument(u...原创 2019-10-07 19:15:03 · 145 阅读 · 0 评论 -
gin框架
基本上现在的golang的web库都是从http上搭建起来,golang的http包的核心如下:func ListenAndServe(addr string, handler Handler) error { server := &Server{Addr: addr, Handler: handler} return server.ListenAndServe()}...原创 2019-09-20 09:08:31 · 338 阅读 · 0 评论 -
go 000005
session的基本原理是由服务器为每个会话维护一份信息数据,客户端和服务端依靠一个全局唯一的标识来访问这份数据,以达到交互的目的。当用户访问Web应用时,服务端程序会随需要创建session,这个过程可以概括为三个步骤:生成全局唯一标识符(sessionid);开辟数据存储空间。一般会在内存中创建相应的数据结构,但这种情况下,系统一旦掉电,所有的会话数据就会丢失,如果是电子商务类网站,这将造...原创 2019-08-20 17:07:52 · 103 阅读 · 0 评论 -
go 000004
Web开发中一个很重要的议题就是如何做好用户的整个浏览过程的控制,因为HTTP协议是无状态的,所以用户的每一次请求都是无状态的,我们不知道在整个Web操作过程中哪些连接与该用户有关,我们应该如何来解决这个问题呢?Web里面经典的解决方案是cookie和session,cookie机制是一种客户端机制,把用户数据保存在客户端,而session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构...原创 2019-08-20 16:54:15 · 103 阅读 · 0 评论 -
go 000003
go http 包整个的代码执行过程。首先调用Http.HandleFunc按顺序做了几件事:1 调用了DefaultServeMux的HandleFunc2 调用了DefaultServeMux的Handle3 往DefaultServeMux的map[string]muxEntry中增加对应的handler和路由规则其次调用http.ListenAndServe(":9090", ...原创 2019-08-20 11:20:40 · 97 阅读 · 0 评论 -
go 000002
http 包创建服务func (srv *Server) Serve(l net.Listener) error { defer l.Close() var tempDelay time.Duration // how long to sleep on accept failure for { rw, e := l.Accept() if...原创 2019-08-20 11:16:20 · 84 阅读 · 0 评论 -
go 000001
创建http 服务器package mainimport ( "fmt" "net/http" "strings" "log")func sayhelloName(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析参数,默认是不会解析的 fmt.Println(r....原创 2019-08-20 11:08:25 · 115 阅读 · 0 评论