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文件夹下 ...
大学物理光学笔记
简谐振动
简谐振动的微分方程:d2xdt2+w2x=0简谐振动的微分方程:\\
\frac{d^2x}{dt^2}+w^2x=0
简谐振动的微分方程:dt2d2x+w2x=0
简谐振动方程:x=Acos(wt+φ)简谐振动方程:\\
x=Acos(wt+\varphi)
简谐振动方程:x=Acos(wt+φ)
质点运动的速度:v=dxdt=−Awsin(wt+φ)质点运动的速度:\\
v=\frac{dx}{dt}=-Awsin(wt+\varphi)
质点运动的速度:v=dtdx=−Awsin(wt+φ)
如果已知初始条件:t=0x=x0v=v0{x0=Acosφv0=−wAsinφ⟹{A=x02+v02w2tanφ=−v0wx0如果已知初始条件:\\
t = 0\quad x = x_0\quad v=v_0\\
\begin{cases}
x_0=Acos\varphi\\
v_0=-wAsin\varphi
\end{cases}
\Longrightarrow
\begin{cases}
A=\sqrt{x_0^2+\frac{v_0^2}{w^2}}
\\
tan\ ...
hexo建站简明教程
安装node.js
前往官网下载长期稳定版的node.js
Node.js
下载完成以后检查一下能否打印出版本,正常打印就表示下载成功
12npm -vnode -v
安装hexo
我们用npm在全局安装hexo
1npm install -g hexo-cli
检查一下是否下载成功
1hexo -v
初始化博客
找到你想要放置博客的目录,在当前目录下执行初始化命令,后面跟着你想给博客目录取的名字
1hexo init <dir-name>
现在你可以看到当前目录下多出了my-blog目录,我们进入到这个文件夹中
1cd myblog
你看到目录结构大概是这样的,作为使用者,我们不需要了解每个目录的作用,我们着重需要关注的是下面这些文件
source——保存你的博客文章的源文件,也就是以后你写的文章都会在这个目录里面
点开source,我们会发现一个_post目录,这是存在已发布文章的目录,你可以看见这里面已经有一篇helloworld了
_config.yml——博客的配置文件
运行你的博客
接下来我们将运行你的博客
123npm install ...