- 博客(171)
- 资源 (5)
- 收藏
- 关注
原创 1. 准备环境
硬件资源mac 12.2.1golang 1.15.3minikube v1.25.1prometheus-operator 0.35.1 下载地址:https://github.com/prometheus-operator/prometheus-operator.git启动minikubeminikube start --kubernetes-version=v1.16.0 -...
2022-08-18 11:04:49
254
原创 pprof查docker内存占用
https://zhuanlan.zhihu.com/p/363584053https://blog.youkuaiyun.com/u010278923/article/details/78774914
2022-08-18 11:04:49
551
原创 oklog run包使用
oklog/run 包介绍oklog/run 包非常简单,只有一个类型,两个方法,共 60 行代码。其中 Group 是一组 actor,通过调用 Add 方法将 actor 添加到 Group 中。// Package run implements an actor-runner with deterministic teardown. It is// somewhat similar...
2022-08-18 11:04:49
404
原创 go-bindata包的使用
安装go get -u github.com/jteeuwen/go-bindata/...使用指定生成的代码的文件名cmd/pipelineService/pipelineBindata.go,以及指定静态目录的位置static# 生成代码文件、包名需要改下,默认是maingo-bindata -o=asset/asset.go -pkg asset static/...#...
2021-01-27 13:27:29
1716
原创 go安装
Centos 安装golang并安装使用中文文档下载yum源并安装golangrpm --import https://mirror.go-repo.io/centos-unstable/RPM-GPG-KEY-GO-REPOcurl -s https://mirror.go-repo.io/centos-unstable/go-repo-unstable.repo | tee /etc/y...
2021-01-27 13:27:29
195
原创 mac编译windows包使用cgo
主要问题是go里面使用了sqlite3包导致需要使用cgo来编译runtime/cgogcc_libinit_windows.c:7:10: fatal error: 'windows.h' file not found安装MacPortshttps://www.macports.org/install.php#installing从上述连接选择对应的系统版本,下载...
2021-01-27 13:27:29
2027
原创 go debug k8s
安装Telepresence这个工具是在本地运行服务,同时可以将该服务连接到远程Kubernetes群集brew cask install osxfusebrew install datawire/blackbird/telepresence运行telepresence例子创建在端口8000上公开的名为hello-world的部署和服务,并确认已经就绪$ kubectl a...
2021-01-27 13:27:29
166
原创 go使用kubebuilder
kubebuilder官方:https://book.kubebuilder.io/quick-start.html好博客:https://www.cnblogs.com/alisystemsoftware/p/11580202.htmlhttps://www.huweihuang.com/kubernetes-notes/code-analysis/kube-controller-man...
2021-01-27 13:27:29
330
原创 使用步骤
下载项目代码fork 代码到自己项目下面下载代码 git clone https://github.com/qixiang-liu/rancher.git指定代理库,并下载代码到本地# 指定代理的仓库地址$ git remote add upstream https://github.com/rancher/rancher.git# 不要push到源仓库# Never pus...
2021-01-27 13:27:29
138
原创 捕捉系统推出信号来停止channel
利用系统信号来中断服务利用系统信号中断服务,避免业务chan中的缓存的消息,没有完全被消费// 建立系统信号接收管道 signals := make(chan os.Signal, 1)// 监听系统信号 signal.Notify(signals, os.Interrupt) for { select { case part, ok := <-consumer....
2021-01-27 13:27:29
252
原创 8-gin使用JWT认证
什么是JWTJWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0认证的业务场景下。为什么需要JWT在偏传统的一些web项目中,我们通常使用的是Cookie-Session模式实现用户认证。相关认证流程大致如下:用户在浏览器端填写用户名和密码,并发送给服务端服务端对用户名和密码校验通过...
2020-03-26 07:20:56
754
原创 0-gin框架的优势
gin和django对比中间件利用函数调用栈后进先出的特点,巧妙的完成中间件在自定义处理函数完成的后处理的操作。django它的处理方式是定义个类,请求处理前的处理的定义一个方法,请求处理后的处理定义一个方法。gin的方式更灵活,但django的方式更加清晰。请求参数绑定对于获取请求内容,在模型绑定当中,有以下的场景绑定失败是用户自己处理还是框架统一进行处理用户需是否需要关心请求...
2020-03-26 07:20:56
2004
原创 BindQuery和shouldBindQuery的区别
BindQueryBindQuery在请求过程中, 如果参数错误会直接抛异常 返回400状态// BindQuery is a shortcut for c.MustBindWith(obj, binding.Query).func (c *Context) BindQuery(obj interface{}) error { return c.MustBindWith(obj, bi...
2020-03-26 07:20:56
4842
原创 6-gin操作数据库
go get -u github.com/jinzhu/gorm# 官方:https://gorm.io/zh_CN/docs/index.htmlgorm快速入门package mainimport ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite")...
2020-03-26 07:20:56
1139
原创 7-实现无限级菜单
[toc]第一种方法数据表如下-- ------------------------------ Table structure for `auth_menu`-- ----------------------------DROP TABLE IF EXISTS `auth_menu`;CREATE TABLE `auth_menu` (`id` int(10) unsigned...
2020-03-26 07:20:56
340
原创 数组和切片使用技巧
两个切片如何去重func sliceUniq(lenSlice, shortSlice []string) (process []string) { lenMap := make(map[string]bool, len(lenSlice)) shortMap := make(map[string]bool, len(shortSlice)) for _, v := range...
2020-03-26 07:20:56
499
原创 swag使用
[toc]Java使用Spring Boot写Restful API时,可以在代码里用注解来标识API,编译为Jar包后,运行时Web应用可以直接托管API文档。具体的可以参考文章:使用swagger来做API文档。那么golang系有没有类似的做法呢?有是有的,只是没有springfox的那么方便就是了。swaggo提供了golang版本的swagger自动生产Restful API文档...
2020-03-26 07:20:56
17154
1
原创 websocket简介以及使用
[toc]简介在本次课程中,我们来学习使用WebSocket来打造一个实时聊天系统。我们会从一下几个方面来进行学习:什么是websocket;Websocket与传统的HTTP协议有什么区别;Websocket有哪些优点;如何建立连接;如何维持连接;Golang实战项目—实时聊天系统;总结;什么是websocket?WebSocket协议是基于TCP的一种新的网络协议。它实现...
2020-03-26 07:20:56
877
原创 9-gin使用websocket
[toc]gin使用websocketGin 框架默认不支持 websocket,可以使用 github.com/gorilla/websocket 实现。Talk is cheap. Show me the code,代码如下:项目布局:github.com└── leffss └── ginWebsocket ├── go.mod ├── g...
2020-03-26 07:20:56
5825
1
原创 time处理5*8h
输入5*8h 7*24h、开始时间、结束时间、返回时间间隔package mainimport ( "fmt" "strconv" "strings" "time")// 是否在工作时间func isWorkTime(i int) bool { var ( WorkTimeS...
2020-03-26 07:20:56
289
原创 函数-练习题
课后作业一个数如果恰好等于它的因子之和,这个数称为"完数",例如6=1+2+3,编程找出1000以内的完数输入一个字符串,判断是否是回文,回文字符串是指从左到右读和从右到左读完全相同的字符串输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数计算俩个大数相加的和,这俩个大数会超过int64的表示范围实现一个冒泡排序实现一个选择排序实现一个插入排序...
2020-01-09 04:00:00
258
原创 结构体-练习题
学生管理系统学生管理系统package mainimport ( "fmt" "os" "strconv")/*使用面向对象的思维方式实现一个简单的学生信息管理系统。每个学生有姓名、性别、年龄、班级信息,用户可以在控制台添加学生、修改学生信息、删除学生、打印所有的学生列表。*/// 1. 打印出来全部的学生// 2...
2019-12-25 11:23:43
475
原创 开发相关
[toc]golanggitbook-reload、blog-reload:用户通过把文档提交到gitlab中gitbook-reload会触发webhook,自动格式化文档,生成目录,格式化为gitbook格式,reload到线上gitbook,动态生成gitbook内容。达到自动发布文档到gitbook中使用client-go编写 k8s config...
2019-11-26 16:02:20
111
原创 etcd原理
[toc]etcd的raft协议原理分布式共识原理,理解实例:第一阶段:一个节点很容易就达成协议或者共识第二阶段:如果是多个节点如何达成共识?分布式共识问题raft协议规定每个节点都有3个状态:跟随,候选,领导者下面俩个图是领导人选举的过程:第三阶段:日志复制到数据写入过程,达到共识客户端发送(数据5)到主节点,主节点会保存更改信息到节点日志中...
2019-11-26 16:02:18
428
原创 goroutine原理
[TOC]前言:Go语言在语言层面实现并发。Go编写一个并发编程程序很简单,只需要在函数调用之前使用一个go关键字即可启动一个goroutine执行并发。虽然使用一个go关键字即可实现并发编程,但是是这个关键字的背后的实现非常复杂。前导:并发与并行通常说的并发编程,是指允许多个任务同时执行,但实际上并不一定在同一时刻被执行。在单核处理器上,通过多线程共享CPU...
2019-11-26 16:02:18
1650
原创 linux相关
[toc]用户态切换到内核态的3种方式异常当cpu在执行运行在用户态下的程序时,发生了一些没有预知的异常,如缺页异常缺页异常: CPU通过地址总线可以访问连接在地址总线上的所有外设, 包括物理内存, IO设备等, 但是从CPU发出的访问地址并非是这些外设在地址总线上的物理地址, 而是一个虚拟地址, 由MMU将虚拟地址转换成为物理地址再从地址总线上发出, MMU...
2019-11-26 16:02:18
124
原创 docker原理
[toc]dockerrunCrunC是运行时,遵循了oci接口,一般来说基于libcontainer。用来运行容器的,可以认为它就是个命令行小工具,可以不用通过 docker 引擎,直接运行容器。RunC 是运行容器的运行时,它负责利用符合标准的文件等资源运行容器,但是它不包含 docker 那样的镜像管理功能。所以要用 runC 运行容器,我们先得准备好容器的...
2019-11-26 16:02:17
359
原创 k8s原理
[toc]k8spause(暂停)组件的作用首先复制下docker的namespacepause容器主要为每个业务容器提供以下功能在pod中担任Linux命名空间共享的基础;pod中,user、UTS、mount、network都是共享的。pod中,pid、ipc默认是不共享的启用pid命名空间,开启init进程。Pod中,PID默认是不共享的...
2019-11-26 16:02:16
963
原创 golang相关
[toc]contextcontext作用是主动关闭运行中的goroute。实现原理:通过向通道中发送信号,来达到关闭goroute,俩个根节点,4个方法Background()和TODO()Go内置两个函数:Background()和TODO(),这两个函数分别返回一个实现了Context接口的background和todo。我们代码中最开始都是以这两个内置...
2019-11-26 16:02:16
258
原创 golang中使用json的技巧
[toc]前言taowen是json-iterator的作者。 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧。 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些struct解析成json的技巧,以及 json-iterator 库的一些便利的处理。有的时候上游传过来的字段是string类型的,但是我们却想用变成数字...
2019-11-20 16:01:57
1167
原创 4-gin中间件
全局中间件所有请求都经过此中间件package mainimport ( "github.com/gin-gonic/gin" "time" "fmt")// 自定义中间件func MiddleWare() gin.HandlerFunc{ return func(c *gin.Context){ t:=time.Now() ...
2019-11-18 19:26:56
183
原创 3-gin渲染
[toc]gin渲染各种数据格式的响应json、结构体、xml、yaml类似于java的properties、ProtoBufpackage mainimport ( "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/testdata/protoexample")// gin渲染func ...
2019-11-18 19:26:41
513
原创 1-gin入门和路由
[toc]gin入门介绍gin是一个golang的微框架,封装比较优雅,api友好,源码注释比较明确,具有快速灵活,容错方便等特点对于golang而言,web框架的依赖要比python、java之类的要小的多,完全使用自身net/http包封装的,足够坚定,性能也非常好介质框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范安装...
2019-11-18 19:24:06
625
原创 2-gin数据解析和绑定
gin 数据解析和绑定json数据解析和绑定客户端传参,后端接收并解析到结构体// json数据解析和绑定type Login struct { // binding 标签的意思是必须要解析,若接收值为空,则报错,必选字段 User string `form:"username" json:"user" uri:"user" xml:"user" bind...
2019-11-18 19:24:05
1468
原创 5-gin会话控制cookie和session
[toc]cookie是什么?http是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出cookie就是解决http协议无状态的方案之一Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就可以根据该信息处理请求c...
2019-11-18 19:24:03
6235
2
原创 go操作es
[TOC] 前言:elasticsearch 是一个基于Lucene构建的开源的、分布式、restful接口的全文搜索引擎。es还是一个分布式的文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索。es扩展能力很强,可以扩展到几百台服务器以及处理PB级的数据。可以在短时间内存储、搜索和分析大量的数据。通常应用于复杂搜索场景情况下的核心发动机elas...
2019-10-11 00:03:21
5852
1
原创 grpc通信
[TOC]摘要: 总体上来说,HTTP每次请求比较浪费资源的。虽然HTTP也是走在TCP上面的,但是HTTP请求自己添加了很多自己的信息,因此会消耗带宽资源。所以一些公司就是用RPC作为内部应用的通信协议。rpcRPC(Remote Procedure Call,远程过程调用) 是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议...
2019-10-11 00:01:32
868
原创 go操作etcd
[TOC]Etcd介绍 etcd高可用的分布式key-value存储系统,可以用于共享和服务的注册和发现etcd的特点完全复制:集群中的每个节点都可以使用完整的存档高可用性:etcd可用于避免硬件的单点故障或网络问题一致性:每次读取都会返回跨多主机的最新写入简单:包括一个定义良好、面向用户的api(grpc)安全:实现了带有可选的客户端证书身份验证的自...
2019-09-25 00:03:01
468
原创 url标准库的使用
[TOC]简介使用##QueryUnescape解码abcd := `dimensions=%7BuserId%3D1513409009336235%2C+instanceId%3Di-j6c7s9rn1cj778v2jq3i%7D`a, _ := url.QueryUnescape(abcd)fmt.Println(a)// dimensions={use...
2019-09-20 00:03:48
431
zabbix3.2.5(v1.2)安装配置及告警
2018-01-06
3.linux企业级应用
2018-01-06
2.Linux安全与高级应用
2018-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人