- 博客(42)
- 收藏
- 关注
原创 Golang条件编译
条件编译简介 条件编译指的是只编译满足条件的代码段。 很多情况下我们的程序需要根据不同阶段、不同的使用场景做对应的设置或约束,代码中如果写了太多的判断逻辑会显得非常冗余,且可读性、可维护性也比较差,程序体积也会增加。若采用条件编译,只编译满足条件的代码段,则可以有效地避免到处写相同的判断逻辑程序体积也能够显著减小(打个比方:if…else if…else 这3个分
2021-12-27 17:56:46
2457
原创 Golang交叉编译
交叉编译简介 交叉编译是指在一个平台编译另一个平台的代码,如:Windows上面编译Linux平台的代码。 通常情况下某平台编译的代码只有该平台能够运行访问,若拷贝到其他平台可能会因为无法识别文件格式而无法运行。欲使代码能够在目标平台运行,只能专门编写面向目标平台的代码并在该平台编译,这虽然能够实现目的,但毫无疑问跨
2021-12-27 11:45:12
5673
原创 YAML文件书写格式
简介 平时接触的比较多的配置文件大多数都是json、xml、.properties等文件,其实YAML文件也比较常见,不过碍于其比较麻烦的书写规则,开发人员更多的是倾向于前面3种来做配置文件。但不代表说这种配置文件就可以忽略,实际上这种配置文件支持的数据类型也是比较丰富的,而且配置文件里面的结构也很清晰,老实说这种配置文件的语法虽然比前面3种复杂一点,但是却更为直观,支持的类型也更为丰富,简单来说就是好用。特性大小写敏
2021-05-27 14:51:07
1385
原创 golang调用本地包报错原因及解决方案
原因 只要报找不到包的问题,基本都是在设定的路径中查找包的时候没有找到包导致的。找不到包的原因有两种,一种是路径确实没有设置好导致的找不到包,另一种是因为gopath和gomod混用导致。golang做包管理有两种方式,分别是gopath和gomod,这两种是互斥的,不可混用。解决方案 golang是根据环境变量中的
2021-04-30 18:14:42
8456
2
原创 Helm——k8s的包管理工具
简介下面是以Helm3版本介绍。Helm是k8s中的包管理工具,作用类似于ubuntu中的apt或centos中的rpm。通过事先编写好一些资源模板配置文件,将这些配置文件打包发送给k8s进行部署,即完成了对k8s中一系列资源的部署。Helm官网:https://helm.sh/zh/docs/Helm常用操作命令:https://blog.csdn.net/QianLiStudent/article/details/111872100过程将事先准备好的资源模板配置文件的集合(称为chart
2021-01-04 15:07:03
254
原创 Helm3常用操作命令
官网:https://helm.sh/zh/docs/helm/helm作用:查看helm基本操作命令命令:helm作用:查看helm的版本命令:helm version作用:查看环境变量命令:helm env作用:创建chart目录(含基本配置文件和目录)命令:helm create chartName举例:helm create abc作用:将chart目录打包命令:helm package chartDir举例:helm package abc说明:cha
2021-01-04 14:27:50
8873
原创 Ubuntu查看及修改时区
前言程序中的定时任务是比较常见的,定时任务通常依赖于系统时间,如果系统时间有问题可能导致定时任务在一个用户认为错误时间的时刻执行。UTC = Universal Time Coordinated(世界协调时间,0时区)CST = Centeral Standard Time(中央标准时间,分4个时区:中国(+8:00)、美国(-6:00)、澳大利亚(+9:30)、古巴(-4:00))Tip:东 “加” 西 “减” ,如:中国 为 东8区,美国 为 西6区。其中CST表示4个时区的标准时间,那么如何
2020-12-23 16:11:12
5552
原创 Linux service之自定义服务
前言服务是应用程序存在的一种形式,静态的程序(即代码)运行成为进程运行于后台,从执行所规定的业务逻辑,对于后端程序而言通常是监听端口以处理来自客户端的请求。但这并非是一个服务,而只是一个运行于后台的守护经常罢了。服务是对这个进程进行管理,通过服务配置文件中设定好的一些命令和配置参数,可以对程序的生命周期进行管理和监控。使用服务配置文件(即.service文件)书写格式:[Unit]#服务的描述信息Description=xxx daemon #本服务依赖的服务,启动本服务前会检查并启动依赖的服
2020-12-03 17:36:02
1085
原创 Linux 使用openssl x509方式签发证书
前言Linux 使用openssl ca方式签发证书(不推荐用这种方式):https://blog.csdn.net/QianLiStudent/article/details/109291424客服端到服务端或服务端到服务端的请求方式通常是http居多(这里只考虑一般的系统),但是考虑到安全性的问题,我们会采用给系统添加一个证书来做认证,证书相当于一个身份认证。之前没有接触过证书的时候,觉得证书的生成步骤很复杂,而且命令又长,但如果对流程做一下分解就好理解了。概念根证书:也叫自签名证书、CA证书
2020-11-19 17:19:32
2897
原创 Ubuntu配置发送邮件
环境操作系统:Ubuntu邮箱服务器:QQ邮箱安装软件邮件管理工具:mailutils#下载命令sudo apt-get install mailutils#下载过程中弹出的界面选择no configuration即可邮件客户端(通知QQ邮箱、163邮箱等邮件服务器发送邮件):ssmtp#下载sudo apt-get install ssmtpssmtp下载下来后会生成2个配置文件ssmtp.conf需要做如下配置#发件人邮箱root=ken@qq.com#邮件服务器地址
2020-11-18 14:48:11
5105
4
原创 docker镜像清理
前言在docker中如果要清理镜像,比如有某个镜像要删除,可以使用命令:docker rmi imageID(imageName)#作用:根据镜像ID或名称删除镜像在删除镜像的时候同时会将镜像存放在文件系统中的元数据和镜像层都删除,从而释放存储空间。但有时候如果发现本地的存储空间不够用了,镜像造成的原因需要考虑。镜像占用的存储空间、镜像运行的容器(如容器中的日志)、挂载卷保存的数据以及网络造成的数据等都是占用存储空间的,这时候可以使用命令:docker system df#查看镜像中资源(镜
2020-11-04 14:22:49
558
原创 docker保证业务容器不中断的情况下操作远程仓库
前言docker中随时都有业务容器在运行,要想动态地操作(比如pull、push镜像等)远程仓库(这里特指没有在daemon.json中配置insecure-registries过的仓库访问点[ip:port])却是一个问题。目前我只找到两种方案:1、给daemon.json配置live-restore:true,可以保证重启docker的时候业务容器不中断;2、把仓库(如:Harbor)配置成https,然后给docker配置一份证书,这样一来docker可直接访问(pull、push等)远程仓库中的
2020-10-28 18:04:54
364
原创 Harbor配置https访问
前言Harbor内部默认是http方式进行通讯的,如果要配置https就需要用到证书。Harbor支持用三方签发证书,也支持使用自签发证书。Linux openssl签发证书:https://blog.csdn.net/QianLiStudent/article/details/109291424步骤1、拿到应用证书和对应的私钥:2、修改harbor.yml配置:tip:在修改配置之前,先确Harbor组成保容器全部停止,否则后续操作会报错;3、执行prepare重新生成一遍配置;4、启
2020-10-27 16:05:40
2295
1
原创 Linux 使用openssl ca方式签发证书
前言客服端到服务端或服务端到服务端的请求方式通常是http居多(这里只考虑一般的系统),但是考虑到安全性的问题,我们会采用给系统添加一个证书来做认证,证书相当于一个身份认证。之前没有接触过证书的时候,觉得证书的生成步骤很复杂,而且命令又长,但如果对流程做一下分解就好理解了。概念根证书:也叫自签名证书、CA证书,由私钥直接生成,用于给其他的证书签名;服务端证书:由CA证书签名后在服务端配置,比如nginx;客户端证书:由CA证书签名后服务端保存,并发送给客户端进行配置;Tip:下面统一称为CA证
2020-10-27 11:06:11
2041
1
原创 Harbor UI界面使用
Harbor安装流程:https://blog.csdn.net/QianLiStudent/article/details/107224292Harbor UI界面使用说明文档:https://goharbor.io/docs/2.1.0/working-with-projects/tip:不同的Harbor版本UI界面可能会有所改变,甚至增加了一些新特性,这里以Harbor 2.1.0为例。Harbor功能介绍项目:Harbor中镜像仓库的分组管理单位,也被叫做命名空间,主要有创建和删除操作;
2020-10-23 14:57:23
2466
原创 Harbor安装流程
介绍 Harbor是VMware公司开源的一个容器镜像仓库,基于docker registry做了一些企业级扩展。包括:web UI界面,用户角色的访问权限控制,仓库操作的审计日志等。这些东西对于企业级开发而言都是必不可少的。 UI界面:相比无界面的命令终端而言更为直观,操作更为便捷。 角色访问
2020-10-19 18:10:52
874
原创 docker介绍与使用
介绍 docker是一个容器引擎,基于go开发并遵从Apache2…0协议开源。开发者可以打包程序和相关依赖包到容器引擎上,并可进一步发布到Linux服务器或者做虚拟化。 docker主要涉及到3个概念:镜像(image)、容器(container)、仓库(repository)。 镜像(ima
2020-07-09 18:26:36
236
原创 docker四步搭建本地私有镜像仓库
介绍 众所周知,docker hub就是完全公开的仓库,在不做登陆的情况下就可以随意pull拉取仓库中的镜像,在注册账号并登陆后也可push镜像到仓库中。但做开发的时候多少会有需要私有仓库的情况,比如在制作镜像的时候可能仅仅是为了满足企业开发,而特地去制作一些能满足需求的镜像,而这些镜像对外是需要保密的,这时候可以考虑在本地搭建一个私有的镜像仓库。流程一、拉取registry镜像命令:docker pull registry说
2020-07-09 18:19:11
1862
原创 容器指定挂载目录后如何更改挂载目录
介绍 容器中的挂载点在挂载了宿主机上的某个挂载目录之后,有时候会需要更改挂载目录,但是通过命令却无法直接更改容器的挂载目录,这种情况下该怎么做?下面将简单介绍网上流行的3种方式来实现更改容器的挂载目录。流程方法一:直接修改容器的配置文件(以Linux系统为例) 在/var/lib/docker/containers/容器ID/config.v2.json配置文
2020-07-06 18:16:22
1845
原创 Docker Dockerfile的介绍与基本用法
介绍 Dockerfile是一个记录了若干命令文本文件,用来构建一个全新的镜像。docker上下文 拿菜鸟教程上的一个例子:docker build -t runoob/ubuntu:v1 . ,可以看到这条指令最后的参数是一个点,这个点就是上下文路径。通常大多数人会在Dockerfile存放目录中执行上面这条命令,假设Dockerfile中的指令不出错的情况下成
2020-07-06 10:44:57
1171
原创 主机无网情况下如何不通过docker pull导入镜像
介绍 如果出现本机无网络的情况,要搜索下载网络资源简直就是天方夜谭。如果有另一台能通网的机器那么就不存在问题了,因为我们可以通过从通网的机器上下载到相应的资源文件,然后再拷贝或上传给网络不通的本机(如果你原本就有这些资源文件假设存在U盘,甚至都不需要网络了)。 这篇文章是介绍如何在本机网络不通的情况下直接使用docker压缩包进行安装:https://blog.cs
2020-07-01 16:06:56
1710
原创 docker安装包安装
介绍 实际上如果网络通畅的情况下,推荐还是直接使用官方的安装包(windows、MacOS适用)安装或者是使用命令(Linux适用)直接下载安装,安装方式:https://www.runoob.com/docker/windows-docker-install.html 但是如果网络不通或者使用上面的方式下载安装失败,就考虑一下直接下载压缩包安装。(事实上我就是因为
2020-07-01 10:39:00
5824
原创 docker常见基本操作命令
介绍 docker命令有很多,但主要针对的还是镜像、容器和仓库三大概念。命令docker说明:docker命令列表命令:docker-----------------------------------------------------说明:docker配置信息命令:docker info-----------------------------------------------------说明1:docker版
2020-06-29 18:30:55
307
原创 etcd常见问题解决方案
etcd出问题导致整个集群不可用是很常见的事情,通常会发生这种事是因为数据不一致导致的,而解决方案往往都是通过删除掉不一致的数据或直接使用快照来恢复原本正常的数据。下面直接介绍各种问题及其解决方案:问题1:集群id不匹配?图示:分析:是因为集群节点中data_dir(这个是配置文件中的参数,指定etcd节点工作时日志和快照的保存位置,etcd当前的工作目录也在这里)中的集群数据不一致导致的,只需要将该目录删除即可。------
2020-06-04 09:45:28
3397
原创 素数筛算法解析
素数也叫质数,凡是只能被1和自身整除的整数都叫做素数(数学概念),光是知道这个定义我们就可以写出列举某个范围内的素数的算法了。//算法1func main() { t1 := time.Now().UnixNano() //计数器,每10个数换行 count := 0 //列举10000以内的素数 for i := 2; i <= 10000; i++ { isPrime := true for j := 2
2020-05-29 17:15:57
423
原创 windows采用cifs方式挂载共享目录到Linux服务器
简介 在开发过程中项目测试基本在本地测试完就要上传到服务器做测试了,因为本地环境和服务器环境多少是有点区别,可能本地跑起来正常,但是服务器那边就会出现样式、排版等问题,特别是一些由于系统不同而造成的程序解析错误更是让人烦恼至极。比如:windows系统换行默认是 \r\n 而Linux的换行是 \n ...
2020-03-17 18:22:54
4937
原创 阿里云短信服务使用介绍
简介 现在很多的应用包括手机App、网页等绝大多数都已经采用了邮箱、短信验证的方式,甚至很多游戏都需要绑定邮箱和手机号,并通过发送邮件、短信验证码来实现账号的有效化验证和绑定。就像某些应用在用户注册账号的时候直接以用户的邮箱、手机号直接作为登录账号也是屡见不鲜,这样做的好处是避免用户专门去记多余的账号,难道会有人连自己的手机号...
2020-01-31 18:10:21
3745
原创 Golang之消息队列——RabbitMQ的使用
消息队列的使用场景异步处理 异步是指不用一次性执行完,可以先去执行别的,等这边回应了再做处理。这里我就拿一个网上用烂的例子:用户注册。用户在正确填写信息后点击注册,这时会发起网络请求到后端去做数据合法性等的验证,一旦验证通过则会将数据写入数据库并返回注册成功类的信息。但现在很多的应用都会有短信、邮箱等其他媒介的额外通知,这些...
2020-01-21 11:59:05
6497
2
原创 Golang之redis中间件框架——go-redis的使用
写在前面 本文主要介绍操作redis数据库的框架go-redis,因此下面涉及到redis中的命令本文不做详解,下文通过使用go-redis实现go语言代码操作redis,对应命令的作用及说明请看这篇文章,里面介绍了redis各数据类型常用的一些命令。go-redis简介 &n...
2020-01-16 15:39:45
4849
1
原创 Golang之redis中间件框架——redigo的使用
redigo简介 redigo框架是一款go语言操作redis数据库的框架,这个框架的使用非常的简单,只要知道redis中各种操作的命令即可快速掌握使用。redigo安装 下载安装:go get github.com/gomodule/redigo/re...
2020-01-15 15:42:02
2842
1
原创 高性能键值型数据库——redis的使用
Redis英文全称Remote Dictionary Server,即远程字典服务。它是使用ANSI C语言编写的NoSql型的高性能键值型数据库,支持数据的持久化。从前面的描述可以划出几个关键词:ANSI C语言、NoSql、高性能、键值型、数据库、持久化。 &nb...
2020-01-14 15:17:03
975
原创 区块链之理论基础
区块链技术是在比特币(Bitcoin)诞生的同时诞生的,应该这么说,在“中本聪”设计比特币系统的时候采用了某种设计思想,这种设计思想被我们称为“区块链(Block Chain)”。区块链不是一门编程语言,而是一种需要使用语言表达出来的技术方案(或者说思想)。区块链有一个特性就是“去中心化”,即没有所谓的中心,整个区块链是分布式...
2020-01-10 15:29:18
1619
原创 Golang之简单的单元测试和性能测试
程序写完不做测试那是万万不能的,或许你在写了某个算法之后输入某些数据能够输出你所期望的结果,但是程序本身可能会存在一些你意料之外的漏洞(俗称bug)...
2020-01-03 11:51:15
301
原创 Golang之反射--reflect的基本使用
在go语言中反射使用的是内置的reflect包,最常用的就是TypeOf和ValueOf这两个方法。其中TypeOf主要是用来获取参数的类型(如果是结构体可以获取里面的字段名和字段对应的标签tag),至于值得获取使用的是ValueOf,通过该函数可以返回一个Value对象(即将我们的参数值封装成了一个含有具体信息的值对象),在...
2019-12-30 17:55:06
394
原创 面试最常见排序算法
不管是日常的逻辑开发还是面试时的笔试中,都会经常碰到对某些数据做排序,已有的排序算法有多种,像:冒泡排序、选择排序、插入排序、快速排序、堆排序、希尔排序、归并排序、基数排序等,不过说到底最常见的还是前面5种,不过在这里我就介绍前面4种啦,因为我在日常用的和面试的基本都是前面4种,堆排序问的也没有前面的多。上面的排名部分先后,不...
2019-12-27 17:48:58
339
原创 Golang之远程过程调用--gRPC-go库的使用
之前我自己在做自己的项目的时候只是做简单的socket编程或者是http编程,做的基本是直接发起一个网络请求,把请求的数据发送到后端,然后后端接收到这些数据并进行处理,再将结果封装成响应数据返回给前端去接收并解析、渲染等。但远程过程调用确实另一回事,它不仅仅是发送数据给远端,而是直接调用远端的代码来执行。举个例子:网络中存在A...
2019-12-20 11:48:30
1167
原创 Golang之文件数据库--Bolt库的使用
做后端开发的数据库那是见得多了,像什么Mysql、SQL Server、Oracle、SQLite、MongoDB、Redis等都是一些比较主流的数据库(这里边有关系型和非关系型的数据库,这里不讨论这个),具体使用哪种根据需要来定。不过这些数据库都是比较大型的数据库了(这里指像Mysql、SQL Server、Or...
2019-12-19 11:41:37
2954
4
原创 Golang之命令构建库--Cobra的使用
程序员搞命令行基本是搞得太多了,不说做开发的,一些普通用户有时候电脑查查问题,比如:查看端口是否被占用导致服务无法正常启动,或者是查看ip地址之类的,多多少少接触过命令行。说到做开发的命令行更是家常便饭,像是从github这些代码管理平台上clone项目到本地这种事我们肯定都做了不少。做后端的现在基本都采用Linux系统作为项目部署的平台,因为无界面系统运行快啊,它不需要分配多余的资源给UI界面,...
2019-12-18 19:31:22
600
原创 ETCD-常用命令介绍
ETCD是一个开源的、分布式键值(Key/Value)存储系统,首先是一个存储仓库,其次是以键值对的形式存储数据。它被设计之初是在Linux平台中使用的,不过现在也推出了Windows版本(处于试验阶段)。官方文档说ETCD的主要用途是“配置共享和服务发现”,关于这两个主要用途,在后面项目中如果有接触到再慢慢探究其具体的应用。现在主要还是将ETCD用于数据存储(这个行为有种将它当做Redis使用的...
2019-12-17 17:43:16
14133
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人