(二)docker的基本使用
在第一节的内容中,我们了解了docker的作用,以及完成了docker的安装和docker的hello world,初步进入了docker的时间,这一节内容会从docker的基本架构出发,讲解组成架构中组成部分的关系以及如何操作它们。
Docker的架构
接下来我会讲解docker的基本使用方式,在学习之前,我们先来看看docker的整体架构。
我们来看看docker的组成部分,首先docker是有一个客户端的,是一个C/S架构。
然后我们来看看docker最核心的部分——容器,镜像,仓库。我们之前说了docker把软件和环境打包到一起,那么这个打包的结果就是一个镜像,这个镜像是一个模板,如果我们要运行这个应用,docker会按照这个模板,生成一个容器去运行这个应用。
与创建一个虚拟机相对比,镜像就类似于iso文件,而容器就类似于虚拟机,镜像只是充当了一个不变的模板,而根据这个模板,我们可以运行任意数量的“容器”。
那么仓库这个概念也就好理解了,仓库就是用于存放镜像的,我们可以从仓库去下载我们需要的镜像,那么接下来我们就先从容器,镜像这两个方面来讲述docker的操作。
镜像的 ...
(一)开启docker的旅程
天下苦环境久矣
printf("Hello World!"),这也许是你学习C语言时打印的第一行语句,C语言作为大多数人的入门语言,Hello World开始了我们的代码生涯。对于过去初学的我们而言,要打印出这一行代码并不轻松,我们要安装一个集成开发环境,可能是CodeBlocks,可能是visual studio等等,有些可能会给我们安装好C语言的环境,有些则要自己安装或者是配置环境变量。可能我们千辛万苦安装好了运行环境,结果要运行一个项目,我们可能还需要下载这个项目所需要的依赖。不管具体的情况如何,配置环境,这短短的四个字可能将会在接下来的几年时间里一直折磨我们。
环境给我们带来了很大的痛苦,但我们显然不会就此认命,有了疼点,就会有相应的解决方案,我们手里可是握着代码的程序员。那么到底应该如何解决这个问题呢。在起初,我们首先解决的是依赖问题,对于各种语言,都有了自己对应的包(依赖)管理机制,例如Java的Maven,javascript的npm等,这些包管理工具记录了我们项目所需要的依赖,借助于这些工具,我们在下次运行这些程序时可以快速下载好所需要的依赖。依赖 ...
mysql索引使用指南
mysql索引概述
在我们正式开始讲索引之前,我们不妨回想一个场景,当我们使用字典的时候,我们并不会直接去整本书去检索内容,而是先去查找目录,根据目录给我们提供的页码,在从字典中查询信息,索引就类似于字典中的目录,可以大大提高数据检索的效率。
mysql的索引机制是mysql提供给我们的一个超强的功能,正确的索引可以大大提高mysql检索的速度和效率。
索引本质
如果了解过数据结构或者数据库的底层,那么一定知道mysql索引的底层是基于B+树的,那就是说所谓索引其实就是B+树,对某一个字段建立索引就是以这个字段为关键字建立B+树,这棵B+树会被保存在mysql的文件中,具体的文件会根据引擎的不同而不同,以最常用的innodb和myiasm为例:
myisam:
tablename_myisam_index.frm:该文件中存储表的结构信息。
tablename_myisam_index.MYD:该文件中存储表的行数据。
tablename_myisam_index.MYI:该文件中存储表的索引数据。
innodb:
tablename_innodb_index.frm:该文件 ...
nginx基本使用指南
nginx是什么
nginx是一个由C语言编写的轻量级web服务器,占用内存小,并发能力强,性能非常优越,是当下非常流行的web服务器。除此以外,nginx还支持相当多的功能,包括但不限于
反向代理
负载均衡
动静分离
这些也是nginx常见的应用场景,今天我们就来全面的介绍一下nginx的应用
环境准备
操作系统采用centos7
nginx的安装相当简单,在centos中我们可以直接用yum安装
1$ yum install nginx
在安装的众多文件中,有两个文件是要注意的
/etc/nginx:存放nginx的配置文件
/usr/share/nginx/html:nginx默认的web根
接下来启动nginx试试
123$ systemctl start nginx# 再来测试看看,能正确返回内容即可$ curl localhost
在浏览器中访问服务器ip,出现下图页面即成功
这里列出一下常用命令
12345678910111213nginx -s reload # 向主进程发送信号,重新加载配置文件,热重启nginx -s reopen # 重启 Ng ...
用git hooks自动化部署hexo
背景
hexo是知名的博客部署框架,采用SSG(Static Site Generation)的方式生成静态页面,结合使用github等托管平台可以快速部署我们的站点。hexo也给我们提供了支持部署的插件,安装完成以后我们可以使用hexo deploy推送内容到托管平台。
虽然hexo已经给我们提供了一套方便的部署方案,但是使用hexo最大的痛点之一就是当我们要换设备时无法方便的迁移。因为hexo deploy只负责把hexo生成的静态页面,也就是public目录下的内容推送到托管平台,我们如果要迁移我们的文章到另一台机器,只能把文件夹拷贝过去,非常的不方便,如果我们意外丢失这个文件夹,那么我们原来的markdown文章都会丢失。
今天要介绍的git hooks就是解决问题的一套方案,我们用git维护我们的hexo文件,不仅方便迁移,而且增加了维护历史版本的功能。
git hooks
开始之前还是先简单的介绍一下git hooks
钩子
可以简单的理解为在特定时机触发的程序。我们用git hooks来举一个简单的例子
123$ git init git-hooks-test$ c ...
从github page到github action
Github Pages和Github Actions
github pages是github给我们提供了托管静态网站的强大功能,让我们可以快速部署自己的一些应用。
github actions是github的一个CI/CD平台,可以帮助我们自动化测试,构建和部署项目,也拥有着十分强大的功能。
看似两者之间没有直接的联系,但是实际上,它们之间的关系比我们想的亲密多了,下面我们就从github pages开始一步一步讲述它们之间的联系。
如果对Github Actions还没有基本的认识,建议可以先去了解相关内容或者阅读我的博客
传送门:github-action简明教程
再认识Github Pages
我们先回到一个熟悉的界面,下面是github pages的配置界面
我们再来看看配置github pages的方式
发现是有两种的,这个时候我们就发现了一个选项——Github Actions,从这里就看出了一些端倪,我们由两种方式去部署github pages,其中一个就是借由Github Actions,下面开始逐个介绍这两种方法。
Deploy from a branch是 ...
cas认证流程简介
CAS是什么
在认识CAS之前,我们先认识一下SSO。
SSO是Single Sign On的缩写,意为单点登录,是一种应用架构,用户只需要登录一次就可以访问所有相互信任的应用。
SSO只是一种架构,而CAS就是实现SSO的一套方案,CAS是Central Authentication Service的简称。
了解CAS
我们先来用一个奇怪的游乐场模拟一下CAS整个运作的流程
在这个游乐场中,我们只需要去授权中心买一次票就可以在全场畅玩。每个游乐设施都需要自己它们自己单独的票据,但是我们不需要在每个地点购买票据,只要有游乐场的通票,我们可以用这个通票让游乐设施的售票处找游乐场授权中心验证(防止通票伪造),验证通过以后售票处会给我们票据,拿着对应的票据我们就可以在对应的游乐设施快乐的玩耍了。
在实际CAS实现中,对应关系如下
游客——浏览器
游乐场授权中心——cas server授权认证中心
游乐设施——多个APP
通票——TGC(Ticket Grangting Ticket)
游乐设施专门的票据——app对应cookie
关系图如下(限于CAS的流程实在比较繁琐,所以下面 ...
swaggo的使用
swag是一个为Go语言生成文档的框架,主要有两个部分组成
swag命令行工具,用于把Go注释生成为对应的Swagger2.0文档
为多种流行框架准备的插件,可以帮助我们快速嵌入Swag
快速开始(以gin为例)
下载和使用swag命令行工具
1$ go install github.com/swaggo/swag/cmd/swag@latest
如果不能使用记得检查一下你的${GOPATH}/bin目录是否加入了环境变量,接下来我们加上Go注释,main()函数中的内容我们暂且不需要管,在你的main.go中加入上面的注释部分就可以了,如果你不想把注释放在main.go的位置,后面使用swag命令行工具的过程中需要带上相关的参数
1234567891011121314151617181920212223242526272829303132333435363738// @title Swagger Example API// @version 1.0// @description This is a sample ...
hexo部署到自己的云服务器
开始之前
本文不会涉及hexo的使用,请先去了解hexo的基本使用和部署,也可以参考我的文章hexo建站简明教程。
本教程基于Centos7.6,如果是其它linux发行版请自行修改相应命令。
构建服务器环境
安装git和nginx
12345yum install gityum install nginx# ubuntuapt install gitapt install nginx
配置git仓库
下面的用户和目录都可以自己定义,但注意要保持上下文统一
123456789useradd hexo # 添加一个用户,其实也不是必须的chown -R hexo:hexo /home/hexo # 把目录的归属权交给hexo用户cd homechmod o+x hexo # 默认创建的hexo文件夹只有hexo有执行权限,nginx用户没有执行权限,将会导致403cd hexomkdir -p /home/hexo/www/blog # 创建博客部署目录git init --bare blog.git # 裸仓库,没有工作空间cd /home/hexo/blog.git/hook ...
github-action简明教程
Github Actions是什么
GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。简单地说,就是通过编写符合Github Actions要求的"脚本",让Github来执行这一的"脚本"。
在开始之前,还是有必要简单的介绍一下持续集成。
持续集成指的是,频繁地(一天多次)将代码集成到主干。
它的好处主要有两个。
**(1)快速发现错误。**每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
**(2)防止分支大幅偏离主干。**如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
**持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。**它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
理解Github Actions工作流
上文中我们提到的脚本在具体的实现中就是一个工作流文件,该文件采用yaml编写,文件的命名没有要求,放置在代码仓库的.github/workflows文件夹下 ...