- 博客(11)
- 资源 (5)
- 收藏
- 关注
原创 Gitlab CI/CD
Gitlab CI/CD1.概述Gitlab是常用的开源git代码管理工具之一,随着发展也推出了ci/cd解决方案.顾名思义具体来说ci/cd主要完成以下两个工作.ci(持续构建)代码提交后触发自动化的单元测试,代码预编译,构建镜像,上传镜像等.cd(持续发布)持续发布则指将构建好的程序发布到各种环境,如预发布环境,正式环境.2.特性gitlab ci/cd具有以下特性跨平台支持只要支持go语言的...
2018-02-24 11:32:16
8236
原创 使用iptables实现etcd集群白名单功能
使用iptables实现etcd集群白名单功能1.概述由于etcd自身不提供ip白名单功能,当在生产环境运行etcd,且当该etcd简体监听外网时,应该通过ip白名单来允许能够访问的外网ip,拒绝非法的ip访问,从而提高生成环境etcd集群的安全性,这里将使用iptables来实现该功能。2.iptables使用在centos中,iptables可以通过服务方式进行运行,使用服务方式运行相对来说更加
2017-09-20 11:58:20
1814
原创 信封加密存储秘钥
众所周知,在业务使用的过程中我们往往需要使用秘钥进行安全验证,通常一个秘钥往往是一个合法身份的凭证,这里就如孙悟空和六耳猕猴一样,两个人都声称自己叫孙悟空,这个时候验证谁是真正悟空,往往需要让两个悟空回答一些只有真的悟空才能知道的答案,这个只有真的悟空才能回答出来的答案就等同于秘钥。这里就会衍生出一个问题,秘钥如果泄漏了怎么办,如果只是单纯的使用秘钥作为身份验证,那么这里的确毫无办法,因此秘钥
2017-07-28 17:59:37
2447
2
原创 golang程序版本管理
版本管理主要用于对运行程序的版本追踪,从而可以管理线上服务的运行版本,避免各个版本的服务程序混淆.这里通常的做法为在程序中埋入版本标志,同时该版本号会对应到git上的tag或release版本.从而对线上服务更改有一个更全面的信息说明.这里将介绍基于GNU风格一种版本命名方式.1. 版本号命名格式主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]] Major_Version_Numb
2017-05-11 18:28:26
2504
原创 golang 进程出现too many open files的排查过程
1. 现象服务的cpu跑满(golang实现), 并大量报too many open files错误.服务使用systemd来运行,部署在阿里ecs上.2.分析从日志来看,cpu的上升主要为到达文件数限制引起的,但之前已经更改过系统的文件数及所有用户的文件数,按道理是不应该出现这个问题的,后来查阅资料发现,文件数可以从三个维度限制分别为操作系统限制,用户态限制,以及进程限制
2016-09-21 15:17:34
13084
原创 etcd 集群搭建及常用场景分析
概述etcd 是一个分布式一致性k-v存储系统,可用于服务注册发现与共享配置,具有以下优点。简单 : 相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的raft算法实现一致性,并通过gRPC提供接口调用安全:支持TLS通信,并可以针对不同的用户进行对key的读写控制高性能:10,000 /秒的写性能1. etcd单机模式单机模式的etcd
2016-08-31 16:19:51
43445
1
原创 一致性hash算法原理及golang实现
概述这里存在一种场景, 当一个服务由多个服务器组共同提供时, key应该路由到哪一个服务.这里假如采用最通用的方式key%N(N为服务器数目), 这里乍一看没什么问题, 但是当服务器数目发送增加或减少时, 分配方式则变为key%(N+1)或key%(N-1).这里将会有大量的key失效迁移,如果后端key对应的是有状态的存储数据,那么毫无疑问,这种做法将导致服务器间大量的数据迁移,从而照成
2016-08-15 23:56:17
7921
原创 redis集群搭建及分析
redis提供了无中心化的模式来提供对key的shading, 提供数据存储的master节点与master节点之间是对等的, master节点与master节点之间通过gossip协议进行通信,以实现集群选主,失效转移, 触发数据迁移等操作.1. redis 集群搭建1.1 配置项说明cluster-enabled : 是否开启集群模式, yes开启, no不开启.
2016-08-11 19:30:36
2361
2
原创 Go 语言中Select与for结合使用时可能会遇到的坑
作为一个刚接触go编程的新鸟,是不是被它的某些新特性给吓到,尤其是之前已经习惯了C++的编程。对于Go语言,网上褒贬不一,有极力推崇的,如七牛的许式伟,其对go的评价极高,并预言Go的市场占有率会一直逐步上升,取代java,成为第一。也有极力贬低的,他们一般会网络上有各种博客帖子,详细的剖析了go的不妥之处。而我接触go这段时间之后,不得不说,它真的是一门很有意思的语言,为什么用有意思形容呢,借用
2015-04-03 09:01:52
2533
原创 QT实现头像图片剪切框
近期在做一个qt项目,在用户选择头像图片后,需要将图片载入,并对其进行用户自定义裁剪。通过研究参照各流行软件的裁剪方式后,发现qq实现的裁剪比较好看,于是,我想那就做一个和qq相似的吧。先放一张qq实现的效果,然后最后再放我实现的效果。1. 怎样去实现裁剪对于一张载入的图片,要实现用户自定义裁剪,那么首先我需要有一个能够响应用户自由缩放的边框,当用户缩放到心仪大小,再摆到适当位置,
2015-02-28 11:30:40
7193
5
原创 动态规划—最长子序列问题
1. 问题引出最长字段匹配问题归结如下:假设存在两个字符段:A={'a', 'b', 'c','b', 'd', 'a', 'b'};B= {'b', 'd','c', 'a', 'b', 'a'};则A、B两个字段的匹配即为A、B的公共子序列,如{‘a’}、{‘b’}、{‘b、‘d’}、{‘b’、’c’、’a’、’b’}均为该两个字符段的公共子序列,而最长公共子序列则为以
2014-05-10 10:51:25
1135
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人