diff --git a/usr/library/wiki.js b/usr/library/wiki.js index 552e297b..7c2ffa5c 100644 --- a/usr/library/wiki.js +++ b/usr/library/wiki.js @@ -130,9 +130,9 @@ function menu() { var m = document.getElementsByTagName("pre"); for (var i = 0; i < m.length; i++) { var line = (m[i].clientHeight-10)/15 - // if (line < 3) { - // continue - // } + if (line < 3) { + continue + } console.log(m[i].clientHeight) var nu = m[i].parentElement.insertBefore(document.createElement("div"), m[i]); nu.className = "number1" diff --git a/usr/template/common/wiki.html b/usr/template/common/wiki.html index e015d278..d9c990ed 100644 --- a/usr/template/common/wiki.html +++ b/usr/template/common/wiki.html @@ -147,15 +147,17 @@ padding-left:10px; } .number1 { - padding:5px; + line-height:15px; + padding:10px; float:left; margin-left:0px; font-size:13px; background-color:#f8f8f8; - border: solid 1px green; + border:solid 1px green; } .number1 div { + color:#999; text-align:right; margin:0; padding:0; diff --git a/usr/wiki/docker.md b/usr/wiki/docker.md new file mode 100644 index 00000000..5a5a9e1d --- /dev/null +++ b/usr/wiki/docker.md @@ -0,0 +1,59 @@ +## 简介 +docker为应用软件提供一个完整的独立的运行环境,比物理机与虚拟机更加轻量。 + +- 官网: +- 文档: +- 源码: +- 入门: + +配置镜像加速器 + +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 . +``` + diff --git a/usr/wiki/mysql.md b/usr/wiki/mysql.md new file mode 100644 index 00000000..a74df95b --- /dev/null +++ b/usr/wiki/mysql.md @@ -0,0 +1,7 @@ +## 简介 +MySQL 是一个开源的关系数据库管理系统。 + +- 官网: +- MAC客户端: + +变量的定义与引用: diff --git a/usr/wiki/nginx.md b/usr/wiki/nginx.md new file mode 100644 index 00000000..bb35c91b --- /dev/null +++ b/usr/wiki/nginx.md @@ -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 反向代理 diff --git a/usr/wiki/redis.md b/usr/wiki/redis.md new file mode 100644 index 00000000..5645dab2 --- /dev/null +++ b/usr/wiki/redis.md @@ -0,0 +1,320 @@ +## 简介 +Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可持久性的键值对存储数据库。 +Redis是最流行的键值对存储数据库。 + +- 维基百科: +- 官网: +- 源码: +- github: + +## 源码安装 +``` +$ 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 事件循环 + diff --git a/usr/wiki/zsh_tmux_vim.md b/usr/wiki/zsh_tmux_vim.md index 7f0227da..1a71dd2d 100644 --- a/usr/wiki/zsh_tmux_vim.md +++ b/usr/wiki/zsh_tmux_vim.md @@ -1,4 +1,4 @@ -## 简介 +## 0. 简介 zsh 和bash一样,是一种终端的shell,但提供了更丰富的功能,更快捷的补全。 @@ -8,7 +8,11 @@ vim 是一款强大的编辑器,通过模式化快捷键提升编辑速度, 使用zsh+tmux+vim的工具链,根据自己的使用习惯进行个性化配置,可以极大的提升编程开发速度。 -### zsh安装 +相关链接 + +- Mac包管理器: + +### 0.1 zsh安装 Mac上自带zsh,不用安装,但Ubuntu上需要自己安装一下。 ``` $ 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 ``` -### tmux安装 +### 0.2 tmux安装 Ubuntu上安装 ``` $ sudo apt-get install tmux @@ -30,7 +34,7 @@ Mac上安装 ``` $ brew install tmux ``` -如果Mac上没有brew,可以安装一下 [Mac 包管理器 brew](https://brew.sh/) +如果Mac上没有brew,可以安装一下. ``` $ 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 ``` -### vim安装 +### 0.3 vim安装 Mac上自带vim,不需要安装,但Ubuntu需要自己安装一下。 ``` $ sudo apt-get install vim @@ -47,12 +51,12 @@ vim有很丰富的插件,可以下载一个插件管理器。 ``` $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim ``` -## 基本快捷键 -### zsh使用 -### tmux使用 -### vim使用 -## 个性化配置 -## 源码解析 +## 1. 基本快捷键 +### 1.1 zsh使用 +### 1.2 tmux使用 +### 1.3 vim使用 +## 2. 个性化配置 +## 3. 源码解析 Mac上安装pip ``` $ sudo easy_install pip @@ -65,5 +69,7 @@ $ sudo apt-get update $ sudo apt-get install asciinema $ sudo apt-get install python3-pip $ sudo pip install TermRecord + ``` -[终端录制](https://asciinema.org/) + +- 终端录制: