mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-26 17:24:05 +08:00
vps add some
This commit is contained in:
parent
6d2d7c2f81
commit
c69887664a
@ -130,9 +130,9 @@ function menu() {
|
|||||||
var m = document.getElementsByTagName("pre");
|
var m = document.getElementsByTagName("pre");
|
||||||
for (var i = 0; i < m.length; i++) {
|
for (var i = 0; i < m.length; i++) {
|
||||||
var line = (m[i].clientHeight-10)/15
|
var line = (m[i].clientHeight-10)/15
|
||||||
// if (line < 3) {
|
if (line < 3) {
|
||||||
// continue
|
continue
|
||||||
// }
|
}
|
||||||
console.log(m[i].clientHeight)
|
console.log(m[i].clientHeight)
|
||||||
var nu = m[i].parentElement.insertBefore(document.createElement("div"), m[i]);
|
var nu = m[i].parentElement.insertBefore(document.createElement("div"), m[i]);
|
||||||
nu.className = "number1"
|
nu.className = "number1"
|
||||||
|
@ -147,15 +147,17 @@
|
|||||||
padding-left:10px;
|
padding-left:10px;
|
||||||
}
|
}
|
||||||
.number1 {
|
.number1 {
|
||||||
padding:5px;
|
line-height:15px;
|
||||||
|
padding:10px;
|
||||||
float:left;
|
float:left;
|
||||||
margin-left:0px;
|
margin-left:0px;
|
||||||
font-size:13px;
|
font-size:13px;
|
||||||
background-color:#f8f8f8;
|
background-color:#f8f8f8;
|
||||||
border: solid 1px green;
|
border:solid 1px green;
|
||||||
|
|
||||||
}
|
}
|
||||||
.number1 div {
|
.number1 div {
|
||||||
|
color:#999;
|
||||||
text-align:right;
|
text-align:right;
|
||||||
margin:0;
|
margin:0;
|
||||||
padding:0;
|
padding:0;
|
||||||
|
59
usr/wiki/docker.md
Normal file
59
usr/wiki/docker.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
## 简介
|
||||||
|
docker为应用软件提供一个完整的独立的运行环境,比物理机与虚拟机更加轻量。
|
||||||
|
|
||||||
|
- 官网: <https://www.docker.com/>
|
||||||
|
- 文档: <https://docs.docker.com/>
|
||||||
|
- 源码: <https://github.com/docker/docker-ce>
|
||||||
|
- 入门: <https://yeasy.gitbooks.io/docker_practice>
|
||||||
|
|
||||||
|
配置镜像加速器
|
||||||
|
|
||||||
|
MAC->Preferences->Daemon->Register Mirrors->"https://registry.docker-cn.com"
|
||||||
|
|
||||||
|
### 基本命令
|
||||||
|
下载镜像,启动容器。
|
||||||
|
```
|
||||||
|
$ docker pull busybox:latest
|
||||||
|
$ docker run -it busybox
|
||||||
|
#
|
||||||
|
```
|
||||||
|
|
||||||
|
挂载目录,启动容器。
|
||||||
|
```
|
||||||
|
$ docker run -it -v ~/share:/home/share busybox
|
||||||
|
```
|
||||||
|
|
||||||
|
### 镜像管理 docker image
|
||||||
|
|
||||||
|
- 查看: docker image ls
|
||||||
|
- 删除: docker image rm
|
||||||
|
- 清理: docker image prune
|
||||||
|
|
||||||
|
### 容器管理 docker container
|
||||||
|
- 查看: docker container ls
|
||||||
|
- 查看: docker container ls -a
|
||||||
|
- 清理: docker container prune
|
||||||
|
|
||||||
|
### 启动容器 docker run
|
||||||
|
- 交互式启动: docker run -it busybox
|
||||||
|
|
||||||
|
- 守护式启动: docker run -dt busybox
|
||||||
|
- 交互式连接: docker exec -it *container* sh
|
||||||
|
- 一次性执行: docker exec *container* ls
|
||||||
|
- 停止容器: docker stop *container*
|
||||||
|
|
||||||
|
### 制作镜像
|
||||||
|
|
||||||
|
- 交互式: docker commit *container* *repos:tag*
|
||||||
|
- 脚本式: docker build *deploy_path*
|
||||||
|
|
||||||
|
```
|
||||||
|
$ mkdir image && cd image
|
||||||
|
$ vi Dockerfile
|
||||||
|
FROM debian
|
||||||
|
RUN apt-get update\
|
||||||
|
&& apt-get install python \
|
||||||
|
&& apt-get install git
|
||||||
|
$ docker build .
|
||||||
|
```
|
||||||
|
|
7
usr/wiki/mysql.md
Normal file
7
usr/wiki/mysql.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
## 简介
|
||||||
|
MySQL 是一个开源的关系数据库管理系统。
|
||||||
|
|
||||||
|
- 官网: <https://www.mysql.com>
|
||||||
|
- MAC客户端: <https://sequelpro.com/download#auto-start>
|
||||||
|
|
||||||
|
变量的定义与引用: <https://www.cnblogs.com/EasonJim/p/7966918.html>
|
45
usr/wiki/nginx.md
Normal file
45
usr/wiki/nginx.md
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
## 简介
|
||||||
|
Nginx 是一个异步框架的Web服务器,也可以用作反向代理,负载均衡和HTTP缓存。
|
||||||
|
|
||||||
|
- 维基百科: [https://zh.wikipedia.org/wiki/Nginx](https://zh.wikipedia.org/wiki/Nginx)
|
||||||
|
- 官网: [https://www.nginx.org/](https://www.nginx.org/)
|
||||||
|
|
||||||
|
## 源码安装
|
||||||
|
```
|
||||||
|
$ wget http://nginx.org/download/nginx-1.15.2.tar.gz
|
||||||
|
$ tar xzf nginx-1.15.2.tar.gz
|
||||||
|
$ cd nginx-1.15.2
|
||||||
|
$ ./configure
|
||||||
|
$ make
|
||||||
|
$ sudo make install
|
||||||
|
$ sudo nginx
|
||||||
|
$ curl localhost
|
||||||
|
...
|
||||||
|
```
|
||||||
|
## 基本配置
|
||||||
|
```
|
||||||
|
http {
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root html;
|
||||||
|
index index.html index.htm;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /proxy {
|
||||||
|
proxy_pass http://localhost:9094;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### http 系统配置
|
||||||
|
### server 服务配置
|
||||||
|
#### listen 网络连接
|
||||||
|
#### server_name 服务名称
|
||||||
|
### location 路由配置
|
||||||
|
|
||||||
|
#### root 文件目录
|
||||||
|
#### index 索引文件
|
||||||
|
#### proxy_pass 反向代理
|
320
usr/wiki/redis.md
Normal file
320
usr/wiki/redis.md
Normal file
@ -0,0 +1,320 @@
|
|||||||
|
## 简介
|
||||||
|
Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可持久性的键值对存储数据库。
|
||||||
|
Redis是最流行的键值对存储数据库。
|
||||||
|
|
||||||
|
- 维基百科: <https://zh.wikipedia.org/wiki/Redis>
|
||||||
|
- 官网: <https://redis.io](https://redis.io>
|
||||||
|
- 源码: <https://shylinux.com/wiki/redis-4.0.11>
|
||||||
|
- github: <https://github.com/antirez/redis>
|
||||||
|
|
||||||
|
## 源码安装
|
||||||
|
```
|
||||||
|
$ wget http://download.redis.io/releases/redis-4.0.11.tar.gz
|
||||||
|
$ tar xzf redis-4.0.11.tar.gz
|
||||||
|
$ cd redis-4.0.11
|
||||||
|
$ make
|
||||||
|
```
|
||||||
|
#### 启动服务端
|
||||||
|
```
|
||||||
|
$ src/redis-servce
|
||||||
|
...
|
||||||
|
```
|
||||||
|
#### 启动客户端
|
||||||
|
```
|
||||||
|
$ src/redis-cli
|
||||||
|
127.0.0.1:6379>
|
||||||
|
```
|
||||||
|
#### 基本命令
|
||||||
|
```
|
||||||
|
$ src/redis-cli
|
||||||
|
127.0.0.1:6379> set employee_name shy
|
||||||
|
OK
|
||||||
|
127.0.0.1:6379> get employee_name
|
||||||
|
"shy"
|
||||||
|
```
|
||||||
|
## 源码解析
|
||||||
|
### 目录解析
|
||||||
|
|
||||||
|
- COPYING 版权文件
|
||||||
|
- README.md 说明文档
|
||||||
|
- Makefile make文件
|
||||||
|
- deps/ 依赖库
|
||||||
|
- src/ 源码目录
|
||||||
|
- tests/ 测试脚本
|
||||||
|
- utils/ 工具脚本
|
||||||
|
- redis.conf 配置文件
|
||||||
|
- sentinel.conf 配置文件
|
||||||
|
|
||||||
|
BUGS
|
||||||
|
INSTALL
|
||||||
|
MANIFESTO
|
||||||
|
CONTRIBUTING
|
||||||
|
00-RELEASENOTES
|
||||||
|
|
||||||
|
dump.rdb
|
||||||
|
runtest
|
||||||
|
runtest-cluster
|
||||||
|
runtest-sentinel
|
||||||
|
|
||||||
|
### 代码解析
|
||||||
|
```
|
||||||
|
server.h //服务端
|
||||||
|
redisObject:struct //数据结构
|
||||||
|
type:unsigned
|
||||||
|
encoding:unsigned
|
||||||
|
lru:unsigned
|
||||||
|
refcount:int
|
||||||
|
ptr:void*
|
||||||
|
|
||||||
|
server.c //服务端
|
||||||
|
server: redisServer //服务端上下文
|
||||||
|
pid: pid_t
|
||||||
|
configfile: char*
|
||||||
|
executable: char*
|
||||||
|
exec_argv: char*
|
||||||
|
commands: dict* //命令哈希表
|
||||||
|
db: redisDb* //数据库
|
||||||
|
dict: dict*
|
||||||
|
expires: dict*
|
||||||
|
blocking_keys: dict*
|
||||||
|
ready_keys: dict*
|
||||||
|
watched_keys: dict*
|
||||||
|
id: int
|
||||||
|
avg_ttl: long long
|
||||||
|
clients: list/client //客户端连接
|
||||||
|
id: uint64
|
||||||
|
fd: int
|
||||||
|
db: redisDb*
|
||||||
|
name: robj*
|
||||||
|
querybuf: sds
|
||||||
|
pending_querybuf: sds
|
||||||
|
argc: int
|
||||||
|
argv: robj**
|
||||||
|
cmd: redisCommand*
|
||||||
|
reply: list*
|
||||||
|
|
||||||
|
redisCommandTable: redisCommand //命令列表
|
||||||
|
"get": getCommand
|
||||||
|
"set": setCommand
|
||||||
|
setGenericCommand(c)
|
||||||
|
setKey(c->db,k,v)
|
||||||
|
lookupKeyWrite(db,k)
|
||||||
|
lookupKey(db,k)
|
||||||
|
dictFind(db->dict,k->ptr)
|
||||||
|
dbAdd(db,k,v)
|
||||||
|
dictAdd(db->dict,k->ptr,v)
|
||||||
|
dbOverwrite(db,k,v)
|
||||||
|
dictReplace(db->dict,k->ptr,v)
|
||||||
|
addReply(c, o)
|
||||||
|
prepareClientToWrite(c)
|
||||||
|
listAddNodeHead(server.clients_pending_write, c)
|
||||||
|
_addReplyToBuffer(c, o)
|
||||||
|
c->buf
|
||||||
|
c->bufpos
|
||||||
|
_addReplyObjecToList(c, o)
|
||||||
|
listAddNodeTail(c->reply, sdsdup(o->ptr))
|
||||||
|
|
||||||
|
serverLog() //输出日志
|
||||||
|
server.verbosity
|
||||||
|
serverLogRaw()
|
||||||
|
server.logfile
|
||||||
|
ustime()
|
||||||
|
mstime()
|
||||||
|
|
||||||
|
|
||||||
|
main() //程序入口
|
||||||
|
initServerConfig() //初始化server
|
||||||
|
populateCommandTable() //加载命令列表
|
||||||
|
server.commands = redisCommandTable
|
||||||
|
loadServerConfig() //加载配置文件
|
||||||
|
initServer() //
|
||||||
|
aeCreateFileEvent()
|
||||||
|
loadDataFromDisk()
|
||||||
|
aeMain():ae.c //事件循环
|
||||||
|
el->beforesleep()
|
||||||
|
handleClientsWithPendingWrites() //返回命令执行结果
|
||||||
|
writeToClient(c)
|
||||||
|
write(c->buf)
|
||||||
|
aeProcessEvents(el):ae.c
|
||||||
|
aeApiPoll()
|
||||||
|
el->aftersleep()
|
||||||
|
fe->rfileProc()/acceptTcpHandler() //添加网络监听事件
|
||||||
|
anetTcpAccept()
|
||||||
|
acceptCommonHandler()
|
||||||
|
createClient()
|
||||||
|
aeCreateFileEvent()/readQueryFromClient(el) //添加读取数据事件
|
||||||
|
read(c->querybuf)
|
||||||
|
processInputBuffer(c)
|
||||||
|
processInlineBuffer() //解析客户端命令
|
||||||
|
c->argv[i]=createObject()
|
||||||
|
processCommand(c) //执行客户端命令
|
||||||
|
c->cmd=lookupCommand()
|
||||||
|
dictFetchValue(server.commands)
|
||||||
|
call(c)
|
||||||
|
c->cmd->proc(c)/setCommand(c)
|
||||||
|
|
||||||
|
fe->wfileProc()
|
||||||
|
fe->rfileProc()
|
||||||
|
processTimeEvnts()
|
||||||
|
|
||||||
|
db.c
|
||||||
|
setKey()
|
||||||
|
t_string.c
|
||||||
|
setGenericCommand()
|
||||||
|
setCommand()
|
||||||
|
|
||||||
|
t_hash.c
|
||||||
|
|
||||||
|
t_list.c
|
||||||
|
t_set.c
|
||||||
|
t_zset.c
|
||||||
|
|
||||||
|
networking.c //
|
||||||
|
createClient()
|
||||||
|
|
||||||
|
adlist.h //双链表
|
||||||
|
aslist.c
|
||||||
|
ae.h //事件循环
|
||||||
|
ae.c
|
||||||
|
ae_epoll.c
|
||||||
|
ae_evport.c
|
||||||
|
ae_kqueue.c
|
||||||
|
ae_select.c
|
||||||
|
anet.h //网络接口
|
||||||
|
anet.c
|
||||||
|
aof.c
|
||||||
|
asciilogo.h
|
||||||
|
atomicvar.h
|
||||||
|
bio.h
|
||||||
|
bio.c
|
||||||
|
bitops.c
|
||||||
|
blocked.c
|
||||||
|
childinfo.c
|
||||||
|
cluster.h
|
||||||
|
cluster.c
|
||||||
|
config.h
|
||||||
|
config.c
|
||||||
|
crc16.c
|
||||||
|
crc64.c
|
||||||
|
crc64.h
|
||||||
|
debug.c
|
||||||
|
debugmacro.h
|
||||||
|
defrag.c
|
||||||
|
dict.h
|
||||||
|
dict.c
|
||||||
|
edianconv.c
|
||||||
|
edianconv.h
|
||||||
|
evict.c
|
||||||
|
expire.c
|
||||||
|
fmacros.h
|
||||||
|
geo.c
|
||||||
|
geo.h
|
||||||
|
geohash.h
|
||||||
|
geohash.c
|
||||||
|
geohash_helper.h
|
||||||
|
geohash_helper.c
|
||||||
|
help.h
|
||||||
|
hyperloglog.c
|
||||||
|
intset.h
|
||||||
|
intset.c
|
||||||
|
latency.h
|
||||||
|
latency.c
|
||||||
|
lazyfree.c
|
||||||
|
lzf.h
|
||||||
|
lzf_c.h
|
||||||
|
lzf_d.h
|
||||||
|
lzfP.h
|
||||||
|
memtest.c
|
||||||
|
module.c
|
||||||
|
multi.c
|
||||||
|
networking.c
|
||||||
|
notify.c
|
||||||
|
object.c
|
||||||
|
pqsort.c
|
||||||
|
pqsort.h
|
||||||
|
pubsub.c
|
||||||
|
quicklist.c
|
||||||
|
quicklist.h
|
||||||
|
rand.c
|
||||||
|
rand.h
|
||||||
|
rax.c
|
||||||
|
rax.h
|
||||||
|
rax.malloc.h
|
||||||
|
rdb.c
|
||||||
|
rdb.h
|
||||||
|
redis-benchmark.c
|
||||||
|
redis-cli.c
|
||||||
|
redisassert.h
|
||||||
|
redismodule.h
|
||||||
|
release.c
|
||||||
|
release.h
|
||||||
|
replication.c
|
||||||
|
rio.h
|
||||||
|
rio.c
|
||||||
|
scripting.c
|
||||||
|
sds.h
|
||||||
|
sds.c
|
||||||
|
sdsalloc.h
|
||||||
|
sentinel.c
|
||||||
|
setproctitle.c
|
||||||
|
sha1.h
|
||||||
|
sha1.c
|
||||||
|
siphash.h
|
||||||
|
siphash.c
|
||||||
|
sort.c
|
||||||
|
sparkline.h
|
||||||
|
sparkline.c
|
||||||
|
syncio.c
|
||||||
|
testhelp.c
|
||||||
|
util.c
|
||||||
|
util.h
|
||||||
|
version.h
|
||||||
|
ziplist.h
|
||||||
|
ziplist.c
|
||||||
|
zipmap.c
|
||||||
|
zipmap.h
|
||||||
|
zmalloc.c
|
||||||
|
zmalloc.h
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dict.c //
|
||||||
|
dict:struct
|
||||||
|
type:dictType
|
||||||
|
privdata:void*
|
||||||
|
ht:dictht[2]
|
||||||
|
table:dictEntry**
|
||||||
|
key:void*
|
||||||
|
v:union
|
||||||
|
next:void*
|
||||||
|
size:long
|
||||||
|
sizemask:long
|
||||||
|
used:long
|
||||||
|
rehashidx:long
|
||||||
|
iterators:long
|
||||||
|
|
||||||
|
zmalloc.c //内存管理
|
||||||
|
zmalloc()
|
||||||
|
zcalloc()
|
||||||
|
zrealloc()
|
||||||
|
zmalloc_size()
|
||||||
|
zfree()
|
||||||
|
zstrdup()
|
||||||
|
```
|
||||||
|
|
||||||
|
### server.h
|
||||||
|
#### struct redisServer
|
||||||
|
#### struct client
|
||||||
|
#### struct redisObject
|
||||||
|
### networking.c
|
||||||
|
### db.c
|
||||||
|
### object.c
|
||||||
|
### t_hash.c
|
||||||
|
### t_list.c
|
||||||
|
### t_set.c
|
||||||
|
### t_string.c
|
||||||
|
### t_zset.c
|
||||||
|
### ae.c 事件循环
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
## 简介
|
## 0. 简介
|
||||||
|
|
||||||
zsh 和bash一样,是一种终端的shell,但提供了更丰富的功能,更快捷的补全。
|
zsh 和bash一样,是一种终端的shell,但提供了更丰富的功能,更快捷的补全。
|
||||||
|
|
||||||
@ -8,7 +8,11 @@ vim 是一款强大的编辑器,通过模式化快捷键提升编辑速度,
|
|||||||
|
|
||||||
使用zsh+tmux+vim的工具链,根据自己的使用习惯进行个性化配置,可以极大的提升编程开发速度。
|
使用zsh+tmux+vim的工具链,根据自己的使用习惯进行个性化配置,可以极大的提升编程开发速度。
|
||||||
|
|
||||||
### zsh安装
|
相关链接
|
||||||
|
|
||||||
|
- Mac包管理器: <https://brew.sh/>
|
||||||
|
|
||||||
|
### 0.1 zsh安装
|
||||||
Mac上自带zsh,不用安装,但Ubuntu上需要自己安装一下。
|
Mac上自带zsh,不用安装,但Ubuntu上需要自己安装一下。
|
||||||
```
|
```
|
||||||
$ sudo apt-get install zsh
|
$ sudo apt-get install zsh
|
||||||
@ -21,7 +25,7 @@ $ chsh -s /usr/bin/zsh
|
|||||||
```
|
```
|
||||||
$ curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
|
$ curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
|
||||||
```
|
```
|
||||||
### tmux安装
|
### 0.2 tmux安装
|
||||||
Ubuntu上安装
|
Ubuntu上安装
|
||||||
```
|
```
|
||||||
$ sudo apt-get install tmux
|
$ sudo apt-get install tmux
|
||||||
@ -30,7 +34,7 @@ Mac上安装
|
|||||||
```
|
```
|
||||||
$ brew install tmux
|
$ brew install tmux
|
||||||
```
|
```
|
||||||
如果Mac上没有brew,可以安装一下 [Mac 包管理器 brew](https://brew.sh/)
|
如果Mac上没有brew,可以安装一下.
|
||||||
```
|
```
|
||||||
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||||
```
|
```
|
||||||
@ -38,7 +42,7 @@ $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/maste
|
|||||||
```
|
```
|
||||||
$ tmux
|
$ tmux
|
||||||
```
|
```
|
||||||
### vim安装
|
### 0.3 vim安装
|
||||||
Mac上自带vim,不需要安装,但Ubuntu需要自己安装一下。
|
Mac上自带vim,不需要安装,但Ubuntu需要自己安装一下。
|
||||||
```
|
```
|
||||||
$ sudo apt-get install vim
|
$ sudo apt-get install vim
|
||||||
@ -47,12 +51,12 @@ vim有很丰富的插件,可以下载一个插件管理器。
|
|||||||
```
|
```
|
||||||
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
|
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
|
||||||
```
|
```
|
||||||
## 基本快捷键
|
## 1. 基本快捷键
|
||||||
### zsh使用
|
### 1.1 zsh使用
|
||||||
### tmux使用
|
### 1.2 tmux使用
|
||||||
### vim使用
|
### 1.3 vim使用
|
||||||
## 个性化配置
|
## 2. 个性化配置
|
||||||
## 源码解析
|
## 3. 源码解析
|
||||||
Mac上安装pip
|
Mac上安装pip
|
||||||
```
|
```
|
||||||
$ sudo easy_install pip
|
$ sudo easy_install pip
|
||||||
@ -65,5 +69,7 @@ $ sudo apt-get update
|
|||||||
$ sudo apt-get install asciinema
|
$ sudo apt-get install asciinema
|
||||||
$ sudo apt-get install python3-pip
|
$ sudo apt-get install python3-pip
|
||||||
$ sudo pip install TermRecord
|
$ sudo pip install TermRecord
|
||||||
|
|
||||||
```
|
```
|
||||||
[终端录制](https://asciinema.org/)
|
<video id="video" poster="/static/public/player/playerbg.png" width="100%" height="auto" preload="metadata" controls="" src="blob:http://99vbkc.com/5aa889fc-0af4-4fdc-ac25-46d456b70028"></video>
|
||||||
|
- 终端录制: <https://asciinema.org/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user