From ce8af8b1d174564be19318c7beeed9bba6c08ab1 Mon Sep 17 00:00:00 2001 From: "m9rco (from Travis CI)" <542684913@qq.com> Date: Sun, 1 Mar 2020 23:31:03 +0000 Subject: [PATCH] Deploy p.0x06.cn to github.com/m9-lab/m9-lab.github.io.git:master --- 404.html | 6 +- assets/js/19.1f71a0e2.js | 1 - assets/js/19.2aa38084.js | 1 + assets/js/25.9165907b.js | 1 + assets/js/25.e734f04f.js | 1 - .../js/{app.58b94fd8.js => app.317b3400.js} | 4 +- db/postgresql/postgresql-01.png | Bin 0 -> 5429 bytes db/postgresql/postgresql-02.png | Bin 0 -> 166527 bytes index.html | 4 +- service-worker.js | 74 ++++++++++-------- zh/db/clickhouse.html | 4 +- zh/db/hbase.html | 4 +- zh/db/index.html | 6 +- zh/db/mongodb.html | 4 +- zh/db/mysql.html | 4 +- zh/db/neo4j.html | 4 +- zh/db/postgreSQL.html | 33 +++++++- zh/db/redis.html | 4 +- zh/devops/index.html | 4 +- zh/distributed/index.html | 4 +- zh/guide/index.html | 4 +- zh/index.html | 4 +- zh/os/coroutines.html | 4 +- zh/os/cpu.html | 4 +- zh/os/index.html | 4 +- zh/os/io.html | 4 +- zh/os/linux.html | 4 +- zh/os/process.html | 4 +- zh/os/thread.html | 4 +- zh/program/c.html | 4 +- zh/program/golang.html | 4 +- zh/program/index.html | 4 +- zh/program/javascript.html | 4 +- zh/program/php.html | 4 +- zh/program/python.html | 4 +- 35 files changed, 129 insertions(+), 94 deletions(-) delete mode 100644 assets/js/19.1f71a0e2.js create mode 100644 assets/js/19.2aa38084.js create mode 100644 assets/js/25.9165907b.js delete mode 100644 assets/js/25.e734f04f.js rename assets/js/{app.58b94fd8.js => app.317b3400.js} (85%) create mode 100644 db/postgresql/postgresql-01.png create mode 100644 db/postgresql/postgresql-02.png diff --git a/404.html b/404.html index dbacf3e..184d60e 100644 --- a/404.html +++ b/404.html @@ -16,13 +16,13 @@ - + -

404

How did we get here?
+ - + diff --git a/assets/js/19.1f71a0e2.js b/assets/js/19.1f71a0e2.js deleted file mode 100644 index 8566382..0000000 --- a/assets/js/19.1f71a0e2.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{261:function(t,e,v){"use strict";v.r(e);var _=v(2),a=Object(_.a)({},(function(){var t=this,e=t.$createElement,v=t._self._c||e;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"数据库"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#数据库"}},[t._v("#")]),t._v(" 数据库 🔎")]),t._v(" "),v("p",[t._v("数据库不是凭空产生的,它们是为了解决实际使用中提出的问题,在RDBMS(关系数据库管理系统)出现的环境中,数据库插叙你的灵活性比灵活的模式更重要")]),t._v(" "),v("h2",{attrs:{id:"数据库概述"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#数据库概述"}},[t._v("#")]),t._v(" 数据库概述")]),t._v(" "),v("p",[t._v("本节包含了9种数据库的信息")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th"),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("MongoDB")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("counchDB")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Riak")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Redis")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Neo4J")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("HBase")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Mysql")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Clickhouse")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("文档")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("文档")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("键-值")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("键-值")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("关系")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("图")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("列")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("关系")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("列")])]),t._v(" "),v("tr",[v("td",[t._v("数据类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("有类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("有类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Blob")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("半类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("预定义且有类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("预定义且有类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("数据关系")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("自由定义的(链接)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("预定义")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("预定义的(边)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("标准对象")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JSON")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JSON")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("文本")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("字符串")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("表")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("哈希")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("列")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("编写语言")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("C++")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Erlang")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Erlang")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("C/C++")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("C")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JAVA")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JAVA")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("接口协议")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("TCP上自定义")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("HTTP")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("HTTP-Protobuf")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("TCP上的简单文本")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("TCP上自定义")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("HTTP")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Thrift-HTTP")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("HTTP/REST")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("二级索引")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("版本化")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("Build Load")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("mongoimport")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Bulk Doc API")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("COPY命令")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("非常大的文件")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("GridFS")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("附件")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Luwak(已弃用)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("BLOB")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("自由定义的查询")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("命令mapreduce")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("临时视图")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("弱支持Lucene")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("命令")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("SQL")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("图遍历,Cypher,搜索")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("弱")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("mapreduce")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JavaScript")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JavaScript")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JavaScript,Erlang")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Hadoop")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("伸缩性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("数据中心")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("数据中心")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("数据中心")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("集群(主-从)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("集群(通过一些扩展)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("集群(通过HA)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("数据中心")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("耐久性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写前日志安全模式")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("只在崩溃时")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写入法定数则耐久")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("仅追加的日志")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("ACID")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("ACID")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写前日志")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("请求压缩")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("文件重写")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("快照")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("复制")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从(通过复集)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-主")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("基于对等主-主")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从(在企业版中)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("并发")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写锁")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无锁的MVCC")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("向量锁")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("表/行写锁")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写锁")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("每行一段")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("分片")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("是")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("锁(通过BigCouch过滤器)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("是")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("插件(客户端)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("扩展(PL/Proxy)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("通过HDFS")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("事务")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("多操作队列")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("ACID")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("ACID")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("是")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("触发器")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("更新验证或改变API")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("提交前后")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("是")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("事物事件处理程序")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("安全性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("用户")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("用户")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("口令")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("用户/群")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Kerberos,通过Hadoop的安全性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("一主机多实例")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("主要区别")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("容易查询大量数据")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("耐久的可嵌入的集群")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("高可用性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("非常非常快")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("最好的OSS RDBMS模型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("灵活的图")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("规模非常大,Hadoop基础设施")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("不足")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("嵌入能力")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("查询能力")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("查询能力")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("负责数据")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("分布式高可用性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Blob或TB级数据")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("灵活增长查询能力")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])])])]),t._v(" "),v("h2",{attrs:{id:"附录"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#附录"}},[t._v("#")]),t._v(" 附录")]),t._v(" "),v("ul",[v("li",[v("a",{attrs:{href:"https://db-engines.com/en/ranking",target:"_blank",rel:"noopener noreferrer"}},[t._v("数据库全球排名"),v("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/19.2aa38084.js b/assets/js/19.2aa38084.js new file mode 100644 index 0000000..b4dc341 --- /dev/null +++ b/assets/js/19.2aa38084.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{261:function(t,e,v){"use strict";v.r(e);var _=v(2),a=Object(_.a)({},(function(){var t=this,e=t.$createElement,v=t._self._c||e;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"数据库"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#数据库"}},[t._v("#")]),t._v(" 数据库 🔎")]),t._v(" "),v("p",[t._v("数据库不是凭空产生的,它们是为了解决实际使用中提出的问题,在RDBMS(关系数据库管理系统)出现的环境中,数据库插叙你的灵活性比灵活的模式更重要")]),t._v(" "),v("h2",{attrs:{id:"数据库概述"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#数据库概述"}},[t._v("#")]),t._v(" 数据库概述")]),t._v(" "),v("p",[t._v("本节包含了9种数据库的信息")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th"),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("MongoDB")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("counchDB")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Riak")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Redis")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[v("RouterLink",{attrs:{to:"/zh/db/postgreSQL.html"}},[t._v("PostgreSQL")])],1),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Neo4J")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("HBase")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Mysql")]),t._v(" "),v("th",{staticStyle:{"text-align":"center"}},[t._v("Clickhouse")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("文档")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("文档")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("键-值")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("键-值")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("关系")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("图")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("列")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("关系")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("列")])]),t._v(" "),v("tr",[v("td",[t._v("数据类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("有类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("有类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Blob")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("半类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("预定义且有类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("预定义且有类型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("数据关系")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("自由定义的(链接)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("预定义")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("预定义的(边)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("标准对象")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JSON")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JSON")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("文本")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("字符串")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("表")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("哈希")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("列")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("编写语言")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("C++")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Erlang")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Erlang")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("C/C++")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("C")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JAVA")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JAVA")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("接口协议")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("TCP上自定义")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("HTTP")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("HTTP-Protobuf")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("TCP上的简单文本")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("TCP上自定义")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("HTTP")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Thrift-HTTP")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("HTTP/REST")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("二级索引")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("版本化")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("Build Load")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("mongoimport")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Bulk Doc API")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("COPY命令")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("非常大的文件")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("GridFS")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("附件")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Luwak(已弃用)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("BLOB")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("自由定义的查询")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("命令mapreduce")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("临时视图")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("弱支持Lucene")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("命令")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("SQL")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("图遍历,Cypher,搜索")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("弱")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("mapreduce")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JavaScript")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JavaScript")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("JavaScript,Erlang")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Hadoop")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("伸缩性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("数据中心")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("数据中心")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("数据中心")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("集群(主-从)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("集群(通过一些扩展)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("集群(通过HA)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("数据中心")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("耐久性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写前日志安全模式")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("只在崩溃时")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写入法定数则耐久")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("仅追加的日志")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("ACID")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("ACID")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写前日志")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("请求压缩")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("文件重写")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("快照")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("复制")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从(通过复集)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-主")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("基于对等主-主")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从(在企业版中)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("主-从")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("并发")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写锁")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无锁的MVCC")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("向量锁")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("表/行写锁")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("写锁")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("每行一段")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("分片")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("是")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("锁(通过BigCouch过滤器)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("是")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("插件(客户端)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("扩展(PL/Proxy)")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("否")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("通过HDFS")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("事务")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("多操作队列")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("ACID")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("ACID")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("是")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("触发器")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("更新验证或改变API")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("提交前后")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("是")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("事物事件处理程序")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("安全性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("用户")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("用户")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("口令")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("用户/群")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("无")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Kerberos,通过Hadoop的安全性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("一主机多实例")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("✅")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("主要区别")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("容易查询大量数据")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("耐久的可嵌入的集群")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("高可用性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("非常非常快")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("最好的OSS RDBMS模型")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("灵活的图")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("规模非常大,Hadoop基础设施")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),v("tr",[v("td",[t._v("不足")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("嵌入能力")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("查询能力")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("查询能力")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("负责数据")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("分布式高可用性")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("Blob或TB级数据")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("灵活增长查询能力")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),v("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])])])]),t._v(" "),v("h2",{attrs:{id:"附录"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#附录"}},[t._v("#")]),t._v(" 附录")]),t._v(" "),v("ul",[v("li",[v("a",{attrs:{href:"https://db-engines.com/en/ranking",target:"_blank",rel:"noopener noreferrer"}},[t._v("数据库全球排名"),v("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/25.9165907b.js b/assets/js/25.9165907b.js new file mode 100644 index 0000000..90ddd18 --- /dev/null +++ b/assets/js/25.9165907b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{267:function(s,t,a){"use strict";a.r(t);var n=a(2),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"postgresql"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[s._v("#")]),s._v(" PostgreSQL")]),s._v(" "),a("center",[a("img",{attrs:{src:s.$withBase("/db/postgresql/postgresql-01.png"),alt:"foo"}})]),s._v("\n20世纪70年代初,最初的项目产生于加州大学伯克利分校,叫做交互式图形和检索系统(Interactive Graphincs and Retrieval System),简称Ingres,在20世纪80年代,推出了一个改进版,post-ingres,简称为Postgres,虽然后面这个项目让伯克利大学中介,但开源社区拿到了源码,并将其改名为PostgreSQL95,后来在1996年更名为PostgreSQL,表示对心的SQL标准的支持,此后就一直用这个名字\n"),a("h2",{attrs:{id:"初始化"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化"}},[s._v("#")]),s._v(" 初始化")]),s._v(" "),a("p",[s._v("PostgreSQL不仅支持关系数据库的各种功能,而且还具备类、继承等对象数据库的特征。它是目前功能最强大、特性最丰富和结构最复杂的开源数据库管理系统,其中有些特性甚至连商业数据库都不具备。这个起源于加州大学伯克利分校(UCB)的数据库研究计划,现在已经衍生成一项国际开发项目,并且拥有广泛的用户群。PostgreSQL主要运行在Unix和Linux操作系统上(从8.0版本开始推出了Windows平台上的版本),并且免费开放源代码,用户可以在其"),a("a",{attrs:{href:"www.postgresql.org"}},[s._v("官方网站")]),s._v("上下载各种安装程序和文档")]),s._v(" "),a("h3",{attrs:{id:"数学关系"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#数学关系"}},[s._v("#")]),s._v(" 数学关系")]),s._v(" "),a("p",[s._v("关系数据库的名称源于它们包含关系(即表),它们是元组(即行)的集合,元组又将属性映射到原子值,可用的属性通过头部的属性元组来定义,这些属性映射啊都某个域或限制的类型,这是关系结构的要点")]),s._v(" "),a("h3",{attrs:{id:"准备环境"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#准备环境"}},[s._v("#")]),s._v(" 准备环境")]),s._v(" "),a("ol",[a("li",[s._v("安装环境,并进入环境")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("set")]),s._v(" -ex "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" docker run --name pgsql -e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("POSTGRES_PASSWORD")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("marco -d postgres:9.6 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" docker "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("exec")]),s._v(" -it -u postgres pgsql /bin/bash \n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[s._v("创建"),a("code",[s._v("book")]),s._v("数据库")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[s._v(" createdb book "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# pg套件里自带的命令")]),s._v("\n")])])]),a("h3",{attrs:{id:"从sql开始"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#从sql开始"}},[s._v("#")]),s._v(" 从SQL开始")]),s._v(" "),a("p",[s._v("一个简单的CURD")]),s._v(" "),a("div",{staticClass:"language-sql extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sql"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CREATE")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("TABLE")]),s._v(" students "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("id "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERIAL")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("PRIMARY")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("KEY")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("name "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("VARCHAR")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("UNIQUE")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("hobby "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("VARCHAR")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("255")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("INSERT")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("INTO")]),s._v(" students"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("hobby"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("VALUES")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'marco'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'foo'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'jack'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'bar'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("UPDATE")]),s._v(" students "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SET")]),s._v(" hobby"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"bar"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("WHERE")]),s._v(" name"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'marco'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("DELETE")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" students "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("WHERE")]),s._v(" name"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'jack'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SELECT")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" students"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n")])])]),a("p",[s._v("获得结果集")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("book")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# SELECT * FROM students;")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("id")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" name "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" hobby\n----+-------+-------\n "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" marco "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" bar\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" row"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])])]),a("p",[s._v("关于外键")]),s._v(" "),a("div",{staticClass:"language-sql extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sql"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CREATE")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("TABLE")]),s._v(" class "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("student_id "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("REFERENCES")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"students"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"id"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" title "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("VARCHAR")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CHECK")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("title "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("''")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("PRIMARY")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("KEY")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("title"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("student_id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("INSERT")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("INTO")]),s._v(" class"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("student_id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("title"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("VALUES")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'boss'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n")])])]),a("p",[s._v("查看当前数据库里所有表类似mysql的"),a("code",[s._v("SHOW TABLES;")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("book")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# \\d")]),s._v("\n List of relations\n Schema "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" Name "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" Type "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" Owner\n--------+-----------------+----------+----------\n public "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" class "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" table "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" postgres\n public "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" students "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" table "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" postgres\n public "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" students_id_seq "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" sequence "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" postgres\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),s._v(" rows"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n")])])]),a("h2",{attrs:{id:"体系结构"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#体系结构"}},[s._v("#")]),s._v(" 体系结构")]),s._v(" "),a("img",{attrs:{src:s.$withBase("/db/postgresql/postgresql-02.png"),alt:"foo"}}),s._v(" "),a("p",[s._v("PostgreSQL数据库由连接管理系统(系统控制器)、编译执行系统、存储管理系统、事务系统、系统表五大部分组成,")]),s._v(" "),a("ul",[a("li",[a("strong",[s._v("连接管理系统")]),s._v(" 接受外部操作对系统的请求,对操作请求进行预处理和分发,起系统逻辑控制作用;")]),s._v(" "),a("li",[a("strong",[s._v("编译执行系统")]),s._v(" 由查询编译器、查询执行器组成,完成操作请求在数据库中的分析处理和转化工作,最终实现物理存储介质中数据的操作;")]),s._v(" "),a("li",[a("strong",[s._v("存储管理系统")]),s._v(" 由索引管理器、内存管理器、外存管理器组成,负责存储和管理物理数据,提供对编译查询系统的支持;")]),s._v(" "),a("li",[a("strong",[s._v("事务系统")]),s._v(" 由事务管理器、日志管理器、并发控制、锁管理器组成,日志管理器和事务管理器完成对操作请求处理的事务一致性支持,锁管理器-和并发控制提供对并发访问数据的一致性支持;")]),s._v(" "),a("li",[a("strong",[s._v("系统表")]),s._v(" 是PostgreSQL数据库的元信息管理中心,包括数据库对象信息和数据库管理控制信息。系统表管理元数据信息,将PostgreSQL数据库的各个模块有机地连接在一起,形成一个高效的数据管理系统。")])]),s._v(" "),a("h2",{attrs:{id:"mvcc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mvcc"}},[s._v("#")]),s._v(" MVCC")])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/25.e734f04f.js b/assets/js/25.e734f04f.js deleted file mode 100644 index 7573a54..0000000 --- a/assets/js/25.e734f04f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{267:function(t,s,e){"use strict";e.r(s);var r=e(2),n=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"postgresql"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[this._v("#")]),this._v(" PostgreSQL")])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/app.58b94fd8.js b/assets/js/app.317b3400.js similarity index 85% rename from assets/js/app.58b94fd8.js rename to assets/js/app.317b3400.js index 8bb03bc..f19d49c 100644 --- a/assets/js/app.58b94fd8.js +++ b/assets/js/app.317b3400.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],c=e[1],u=e[2],f=0,p=[];f-1}function i(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function a(t,e){for(var n in e)t[n]=e[n];return t}var s={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var s=o.$createElement,u=n.name,l=o.$route,f=o._routerViewCache||(o._routerViewCache={}),p=0,d=!1;o&&o._routerRoot!==o;){var h=o.$vnode?o.$vnode.data:{};h.routerView&&p++,h.keepAlive&&o._directInactive&&o._inactive&&(d=!0),o=o.$parent}if(i.routerViewDepth=p,d){var v=f[u],m=v&&v.component;return m?(v.configProps&&c(m,i,v.route,v.configProps),s(m,i,r)):s()}var y=l.matched[p],g=y&&y.components[u];if(!y||!g)return f[u]=null,s();f[u]={component:g},i.registerRouteInstance=function(t,e){var n=y.instances[u];(e&&n!==t||!e&&n===t)&&(y.instances[u]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){y.instances[u]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==y.instances[u]&&(y.instances[u]=t.componentInstance)};var b=y.props&&y.props[u];return b&&(a(f[u],{route:l,configProps:b}),c(g,i,l,b)),s(g,i,r)}};function c(t,e,n,r){var o=e.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(n,r);if(o){o=e.props=a({},o);var i=e.attrs=e.attrs||{};for(var s in o)t.props&&s in t.props||(i[s]=o[s],delete o[s])}}var u=/[!'()*]/g,l=function(t){return"%"+t.charCodeAt(0).toString(16)},f=/%2C/g,p=function(t){return encodeURIComponent(t).replace(u,l).replace(f,",")},d=decodeURIComponent;function h(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=d(n.shift()),o=n.length>0?d(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function v(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return p(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(p(e)):r.push(p(e)+"="+p(t)))})),r.join("&")}return p(e)+"="+p(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var m=/\/?$/;function y(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=g(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:w(e,o),matched:t?_(t):[]};return n&&(a.redirectedFrom=w(n,o)),Object.freeze(a)}function g(t){if(Array.isArray(t))return t.map(g);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=g(t[n]);return e}return t}var b=y(null,{path:"/"});function _(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function w(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||v)(r)+o}function x(t,e){return e===b?t===e:!!e&&(t.path&&e.path?t.path.replace(m,"")===e.path.replace(m,"")&&t.hash===e.hash&&O(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&O(t.query,e.query)&&O(t.params,e.params)))}function O(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],o=e[n];return"object"==typeof r&&"object"==typeof o?O(r,o):String(r)===String(o)}))}function k(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),l=e&&e.path||"/",f=u.path?k(u.path,l,n||o.append):l,p=function(t,e,n){void 0===e&&(e={});var r,o=n||h;try{r=o(t||"")}catch(t){r={}}for(var i in e)r[i]=e[i];return r}(u.query,o.query,r&&r.options.parseQuery),d=o.hash||u.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:f,query:p,hash:d}}var q,W=function(){},G={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,s=o.route,c=o.href,u={},l=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==l?"router-link-active":l,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,v=null==this.exactActiveClass?d:this.exactActiveClass,g=s.redirectedFrom?y(null,V(s.redirectedFrom),null,n):s;u[v]=x(r,g),u[h]=this.exact?u[v]:function(t,e){return 0===t.path.replace(m,"/").indexOf(e.path.replace(m,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,g);var b=function(t){X(t)&&(e.replace?n.replace(i,W):n.push(i,W))},_={click:X};Array.isArray(this.event)?this.event.forEach((function(t){_[t]=b})):_[this.event]=b;var w={class:u},O=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:b,isActive:u[h],isExactActive:u[v]});if(O){if(1===O.length)return O[0];if(O.length>1||!O.length)return 0===O.length?t():t("span",{},O)}if("a"===this.tag)w.on=_,w.attrs={href:c};else{var k=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=H(l.path,s.params),c(l,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function bt(t){return function(e,n,r){var i=!1,a=0,s=null;_t(t,(function(t,e,n,c){if("function"==typeof t&&void 0===t.cid){i=!0,a++;var u,l=Ot((function(e){var o;((o=e).__esModule||xt&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:q.extend(e),n.components[c]=e,--a<=0&&r()})),f=Ot((function(t){var e="Failed to resolve async component "+c+": "+t;s||(s=o(t)?t:new Error(e),r(s))}));try{u=t(l,f)}catch(t){f(t)}if(u)if("function"==typeof u.then)u.then(l,f);else{var p=u.component;p&&"function"==typeof p.then&&p.then(l,f)}}})),i||r()}}function _t(t,e){return wt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function wt(t){return Array.prototype.concat.apply([],t)}var xt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ot(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var kt=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);kt._name="NavigationDuplicated";var Ct=function(t,e){this.router=t,this.base=function(t){if(!t)if(Y){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=b,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function St(t,e,n,r){var o=_t(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=q.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return wt(r?o.reverse():o)}function Et(t,e){if(e)return function(){return t.apply(e,arguments)}}Ct.prototype.listen=function(t){this.cb=t},Ct.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Ct.prototype.onError=function(t){this.errorCbs.push(t)},Ct.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,(function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach((function(t){t(o)})))}),(function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach((function(e){e(t)})))}))},Ct.prototype.confirmTransition=function(t,e,n){var r=this,a=this.current,s=function(t){!i(kt,t)&&o(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)};if(x(t,a)&&t.matched.length===a.matched.length)return this.ensureURL(),s(new kt(t));var c=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else t=decodeURI(t.slice(0,n))+t.slice(n);return t}function Pt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Lt(t){vt?mt(Pt(t)):window.location.hash=t}function Mt(t){vt?yt(Pt(t)):window.location.replace(Pt(t))}var It=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){i(kt,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Ct),Rt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Z(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!vt&&!1!==t.fallback,this.fallback&&(e="hash"),Y||(e="abstract"),this.mode=e,e){case"history":this.history=new At(this,t.base);break;case"hash":this.history=new jt(this,t.base,this.fallback);break;case"abstract":this.history=new It(this,t.base);break;default:0}},Nt={currentRoute:{configurable:!0}};function Dt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Rt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Nt.currentRoute.get=function(){return this.history&&this.history.current},Rt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof At)n.transitionTo(n.getCurrentLocation());else if(n instanceof jt){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Rt.prototype.beforeEach=function(t){return Dt(this.beforeHooks,t)},Rt.prototype.beforeResolve=function(t){return Dt(this.resolveHooks,t)},Rt.prototype.afterEach=function(t){return Dt(this.afterHooks,t)},Rt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Rt.prototype.onError=function(t){this.history.onError(t)},Rt.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},Rt.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},Rt.prototype.go=function(t){this.history.go(t)},Rt.prototype.back=function(){this.go(-1)},Rt.prototype.forward=function(){this.go(1)},Rt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Rt.prototype.resolve=function(t,e,n){var r=V(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?C(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Rt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==b&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Rt.prototype,Nt),Rt.install=function t(e){if(!t.installed||q!==e){t.installed=!0,q=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",s),e.component("RouterLink",G);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Rt.version="3.1.5",Y&&window.Vue&&window.Vue.use(Rt);var Ft=Rt;var Ut=n(1),Bt={created(){this.$ssrContext&&(this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.description=this.$page.description||this.$description)},mounted(){this.currentMetaTags=new Set,this.updateMeta()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.$page.frontmatter.meta||[],e=t.slice(0);0===t.filter(t=>"description"===t.name).length&&e.push({name:"description",content:this.$description});const n=document.querySelectorAll('meta[name="description"]');n.length&&n.forEach(t=>this.currentMetaTags.add(t)),this.currentMetaTags=new Set(Ht(e,this.currentMetaTags))}},watch:{$page(){this.updateMeta()}},beforeDestroy(){Ht(null,this.currentMetaTags)}};function Ht(t,e){if(e&&[...e].forEach(t=>{document.head.removeChild(t)}),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}var Vt=n(29),qt=n.n(Vt),Wt={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:qt()((function(){this.setActiveHash()}),300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Gt=n(30),Xt=n.n(Gt),Yt={mounted(){Xt.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||r.a.component(t.name)||Xt.a.start(),n()}),this.$router.afterEach(()=>{Xt.a.done(),this.isSidebarOpen=!1})}},Kt=n(78),Qt=n.n(Kt),Zt={mounted(){Qt.a.polyfill()}},Jt=(n(97),Object.assign||function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(t){function e(){}t(e,e)},o=function(t){var e=t.target;e!==C?-1!==b.indexOf(e)&&v({target:e}):h()},i=function(){if(!w&&k.original){var t=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(x-t)>O.scrollOffset&&setTimeout(h,150)}},a=function(t){var e=t.key||t.keyCode;"Escape"!==e&&"Esc"!==e&&27!==e||h()},s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t;if(t.background&&(C.style.background=t.background),t.container&&t.container instanceof Object&&(e.container=Jt({},O.container,t.container)),t.template){var n=ee(t.template)?t.template:document.querySelector(t.template);e.template=n}return O=Jt({},O,e),b.forEach((function(t){t.dispatchEvent(ae("medium-zoom:update",{detail:{zoom:S}}))})),S},c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(Jt({},O,e))},u=function(){for(var t=arguments.length,e=Array(t),n=0;n0?e.reduce((function(t,e){return[].concat(t,re(e))}),[]):b;return r.forEach((function(t){t.classList.remove("medium-zoom-image"),t.dispatchEvent(ae("medium-zoom:detach",{detail:{zoom:S}}))})),b=b.filter((function(t){return-1===r.indexOf(t)})),S},f=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.addEventListener("medium-zoom:"+t,e,n)})),_.push({type:"medium-zoom:"+t,listener:e,options:n}),S},p=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.removeEventListener("medium-zoom:"+t,e,n)})),_=_.filter((function(n){return!(n.type==="medium-zoom:"+t&&n.listener.toString()===e.toString())})),S},d=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,n=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},e=void 0,n=void 0;if(O.container)if(O.container instanceof Object)e=(t=Jt({},t,O.container)).width-t.left-t.right-2*O.margin,n=t.height-t.top-t.bottom-2*O.margin;else{var r=(ee(O.container)?O.container:document.querySelector(O.container)).getBoundingClientRect(),o=r.width,i=r.height,a=r.left,s=r.top;t=Jt({},t,{width:o,height:i,left:a,top:s})}e=e||t.width-2*O.margin,n=n||t.height-2*O.margin;var c=k.zoomedHd||k.original,u=ne(c)?e:c.naturalWidth||e,l=ne(c)?n:c.naturalHeight||n,f=c.getBoundingClientRect(),p=f.top,d=f.left,h=f.width,v=f.height,m=Math.min(u,e)/h,y=Math.min(l,n)/v,g=Math.min(m,y),b="scale("+g+") translate3d("+((e-h)/2-d+O.margin+t.left)/g+"px, "+((n-v)/2-p+O.margin+t.top)/g+"px, 0)";k.zoomed.style.transform=b,k.zoomedHd&&(k.zoomedHd.style.transform=b)};return new r((function(t){if(e&&-1===b.indexOf(e))t(S);else{if(k.zoomed)t(S);else{if(e)k.original=e;else{if(!(b.length>0))return void t(S);var r=b;k.original=r[0]}if(k.original.dispatchEvent(ae("medium-zoom:open",{detail:{zoom:S}})),x=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,w=!0,k.zoomed=ie(k.original),document.body.appendChild(C),O.template){var o=ee(O.template)?O.template:document.querySelector(O.template);k.template=document.createElement("div"),k.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(k.template)}if(document.body.appendChild(k.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),k.original.classList.add("medium-zoom-image--hidden"),k.zoomed.classList.add("medium-zoom-image--opened"),k.zoomed.addEventListener("click",h),k.zoomed.addEventListener("transitionend",(function e(){w=!1,k.zoomed.removeEventListener("transitionend",e),k.original.dispatchEvent(ae("medium-zoom:opened",{detail:{zoom:S}})),t(S)})),k.original.getAttribute("data-zoom-src")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("srcset"),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.src=k.zoomed.getAttribute("data-zoom-src"),k.zoomedHd.onerror=function(){clearInterval(i),console.warn("Unable to reach the zoom image target "+k.zoomedHd.src),k.zoomedHd=null,n()};var i=setInterval((function(){k.zoomedHd.complete&&(clearInterval(i),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",h),document.body.appendChild(k.zoomedHd),n())}),10)}else if(k.original.hasAttribute("srcset")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("sizes");var a=k.zoomedHd.addEventListener("load",(function(){k.zoomedHd.removeEventListener("load",a),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",h),document.body.appendChild(k.zoomedHd),n()}))}else n()}}}))},h=function(){return new r((function(t){if(!w&&k.original){w=!0,document.body.classList.remove("medium-zoom--opened"),k.zoomed.style.transform="",k.zoomedHd&&(k.zoomedHd.style.transform=""),k.template&&(k.template.style.transition="opacity 150ms",k.template.style.opacity=0),k.original.dispatchEvent(ae("medium-zoom:close",{detail:{zoom:S}})),k.zoomed.addEventListener("transitionend",(function e(){k.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(k.zoomed),k.zoomedHd&&document.body.removeChild(k.zoomedHd),document.body.removeChild(C),k.zoomed.classList.remove("medium-zoom-image--opened"),k.template&&document.body.removeChild(k.template),w=!1,k.zoomed.removeEventListener("transitionend",e),k.original.dispatchEvent(ae("medium-zoom:closed",{detail:{zoom:S}})),k.original=null,k.zoomed=null,k.zoomedHd=null,k.template=null,t(S)}))}else t(S)}))},v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target;return k.original?h():d({target:e})},m=function(){return O},y=function(){return b},g=function(){return k.original},b=[],_=[],w=!1,x=0,O=n,k={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(e)?O=e:(e||"string"==typeof e)&&u(e),O=Jt({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},O);var C=oe(O.background);document.addEventListener("click",o),document.addEventListener("keyup",a),document.addEventListener("scroll",i),window.addEventListener("resize",h);var S={open:d,close:h,toggle:v,update:s,clone:c,attach:u,detach:l,on:f,off:p,getOptions:m,getImages:y,getZoomedImage:g};return S},ce=[Bt,Wt,Yt,Zt,{data:()=>({zoom:null}),mounted(){this.updateZoom()},updated(){this.updateZoom()},methods:{updateZoom(){setTimeout(()=>{this.zoom&&this.zoom.detach(),this.zoom=se(".theme-default-content :not(a) > img",void 0)},1e3)}}}],ue={name:"GlobalLayout",computed:{layout:function(){var t=this.getLayout();return Object(Ut.h)("layout",t),r.a.component(t)}},methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},le=n(2),fe=Object(le.a)(ue,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;Object(Ut.f)(fe,"mixins",ce);var pe=[{name:"v-746bd11e",path:"/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-746bd11e").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-5ba934e1",path:"/zh/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-5ba934e1").then(n)}},{path:"/zh/index.html",redirect:"/zh/"},{name:"v-74d01bde",path:"/zh/db/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-74d01bde").then(n)}},{path:"/zh/db/index.html",redirect:"/zh/db/"},{name:"v-58cebc34",path:"/zh/db/clickhouse.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-58cebc34").then(n)}},{name:"v-dbd7ec2c",path:"/zh/db/hbase.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-dbd7ec2c").then(n)}},{name:"v-94740eec",path:"/zh/db/mongodb.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-94740eec").then(n)}},{name:"v-5559350a",path:"/zh/db/mysql.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-5559350a").then(n)}},{name:"v-0a8a5aec",path:"/zh/db/neo4j.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-0a8a5aec").then(n)}},{name:"v-fc0c3ca4",path:"/zh/db/postgreSQL.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-fc0c3ca4").then(n)}},{name:"v-f82d23ac",path:"/zh/db/redis.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-f82d23ac").then(n)}},{name:"v-16372753",path:"/zh/devops/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-16372753").then(n)}},{path:"/zh/devops/index.html",redirect:"/zh/devops/"},{name:"v-793e68e1",path:"/zh/distributed/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-793e68e1").then(n)}},{path:"/zh/distributed/index.html",redirect:"/zh/distributed/"},{name:"v-5cfbe97e",path:"/zh/guide/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-5cfbe97e").then(n)}},{path:"/zh/guide/index.html",redirect:"/zh/guide/"},{name:"v-accb5676",path:"/zh/os/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-accb5676").then(n)}},{path:"/zh/os/index.html",redirect:"/zh/os/"},{name:"v-728e1cec",path:"/zh/os/coroutines.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-728e1cec").then(n)}},{name:"v-d2c24fec",path:"/zh/os/cpu.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-d2c24fec").then(n)}},{name:"v-173c9516",path:"/zh/os/io.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-173c9516").then(n)}},{name:"v-3d7c27ec",path:"/zh/os/linux.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-3d7c27ec").then(n)}},{name:"v-77f2e22a",path:"/zh/os/process.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-77f2e22a").then(n)}},{name:"v-d505af64",path:"/zh/os/thread.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-d505af64").then(n)}},{name:"v-4db484c1",path:"/zh/program/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-4db484c1").then(n)}},{path:"/zh/program/index.html",redirect:"/zh/program/"},{name:"v-6c1827f0",path:"/zh/program/c.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-6c1827f0").then(n)}},{name:"v-775f4f8a",path:"/zh/program/golang.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-775f4f8a").then(n)}},{name:"v-3ca656aa",path:"/zh/program/javascript.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-3ca656aa").then(n)}},{name:"v-a9d38bc4",path:"/zh/program/php.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-a9d38bc4").then(n)}},{name:"v-3bd307ca",path:"/zh/program/python.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-3bd307ca").then(n)}},{path:"*",component:fe}],de={title:"",description:"",base:"/",pages:[{title:"Home",frontmatter:{home:!0,heroImage:"/hero.png",actionText:"快速上手 →",footer:"MIT Licensed | Copyright © 2020 Marco"},regularPath:"/",relativePath:"README.md",key:"v-746bd11e",path:"/",lastUpdated:"2/28/2020, 6:33:35 AM"},{title:"Home",frontmatter:{home:!0,heroImage:"/hero.png",actionText:"快速上手 →",actionLink:"/zh/guide/",features:[{title:"简洁至上",details:"以 Markdown 为中心的项目结构,以最少的配置帮助你专注于写作。"}],footer:"MIT Licensed | Copyright © 2020-PRESENT Marco"},regularPath:"/zh/",relativePath:"zh/README.md",key:"v-5ba934e1",path:"/zh/",lastUpdated:"2/15/2020, 9:48:35 AM"},{title:"数据库 🔎",frontmatter:{},regularPath:"/zh/db/",relativePath:"zh/db/README.md",key:"v-74d01bde",path:"/zh/db/",headers:[{level:2,title:"数据库概述",slug:"数据库概述"},{level:2,title:"附录",slug:"附录"}],lastUpdated:"2/28/2020, 6:33:35 AM"},{title:"Clickhouse",frontmatter:{},regularPath:"/zh/db/clickhouse.html",relativePath:"zh/db/clickhouse.md",key:"v-58cebc34",path:"/zh/db/clickhouse.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"HBase",frontmatter:{},regularPath:"/zh/db/hbase.html",relativePath:"zh/db/hbase.md",key:"v-dbd7ec2c",path:"/zh/db/hbase.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"MongoDB",frontmatter:{},regularPath:"/zh/db/mongodb.html",relativePath:"zh/db/mongodb.md",key:"v-94740eec",path:"/zh/db/mongodb.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"MySQL",frontmatter:{},regularPath:"/zh/db/mysql.html",relativePath:"zh/db/mysql.md",key:"v-5559350a",path:"/zh/db/mysql.html",headers:[{level:2,title:"基础架构",slug:"基础架构"},{level:3,title:"连接器管理",slug:"连接器管理"},{level:3,title:"Mysql缓存",slug:"mysql缓存"},{level:3,title:"分析器",slug:"分析器"},{level:3,title:"优化器",slug:"优化器"},{level:3,title:"执行器",slug:"执行器"},{level:3,title:"日志系统",slug:"日志系统"},{level:2,title:"数据结构",slug:"数据结构"},{level:3,title:"B树、B-树、B+树",slug:"b树、b-树、b-树"},{level:3,title:"磁盘存取原理",slug:"磁盘存取原理"},{level:3,title:"MyISAM 索引实现",slug:"myisam-索引实现"},{level:3,title:"InnoDB 索引实现",slug:"innodb-索引实现"},{level:2,title:"锁机制",slug:"锁机制"},{level:2,title:"隔离级别",slug:"隔离级别"},{level:2,title:"MVCC",slug:"mvcc"},{level:2,title:"InnoDB",slug:"innodb"},{level:2,title:"Explain",slug:"explain"},{level:3,title:"参考文献",slug:"参考文献"}],lastUpdated:"2/16/2020, 4:43:13 PM"},{title:"Neo4J",frontmatter:{},regularPath:"/zh/db/neo4j.html",relativePath:"zh/db/neo4j.md",key:"v-0a8a5aec",path:"/zh/db/neo4j.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"PostgreSQL",frontmatter:{},regularPath:"/zh/db/postgreSQL.html",relativePath:"zh/db/postgreSQL.md",key:"v-fc0c3ca4",path:"/zh/db/postgreSQL.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"Redis",frontmatter:{},regularPath:"/zh/db/redis.html",relativePath:"zh/db/redis.md",key:"v-f82d23ac",path:"/zh/db/redis.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{frontmatter:{},regularPath:"/zh/devops/",relativePath:"zh/devops/README.md",key:"v-16372753",path:"/zh/devops/",lastUpdated:"2/15/2020, 11:02:54 AM"},{frontmatter:{},regularPath:"/zh/distributed/",relativePath:"zh/distributed/README.md",key:"v-793e68e1",path:"/zh/distributed/",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"要怎样努力,才能成为很厉害的人",frontmatter:{},regularPath:"/zh/guide/",relativePath:"zh/guide/README.md",key:"v-5cfbe97e",path:"/zh/guide/",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"操作系统",frontmatter:{},regularPath:"/zh/os/",relativePath:"zh/os/README.md",key:"v-accb5676",path:"/zh/os/",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"协程",frontmatter:{},regularPath:"/zh/os/coroutines.html",relativePath:"zh/os/coroutines.md",key:"v-728e1cec",path:"/zh/os/coroutines.html",lastUpdated:"2/24/2020, 2:21:13 PM"},{title:"CPU",frontmatter:{},regularPath:"/zh/os/cpu.html",relativePath:"zh/os/cpu.md",key:"v-d2c24fec",path:"/zh/os/cpu.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"IO",frontmatter:{},regularPath:"/zh/os/io.html",relativePath:"zh/os/io.md",key:"v-173c9516",path:"/zh/os/io.html",headers:[{level:2,title:"概念",slug:"概念"},{level:3,title:"用户态切换到内核态",slug:"用户态切换到内核态"},{level:3,title:"进程的结构-PCB",slug:"进程的结构-pcb"},{level:3,title:"进程切换",slug:"进程切换"},{level:3,title:"创建进程",slug:"创建进程"},{level:3,title:"进程的阻塞",slug:"进程的阻塞"},{level:3,title:"同步与异步",slug:"同步与异步"},{level:3,title:"同步与异步的区别",slug:"同步与异步的区别"},{level:3,title:"阻塞与非阻塞",slug:"阻塞与非阻塞"},{level:3,title:"文件描述符 fd",slug:"文件描述符-fd"},{level:2,title:"缓存 I/O",slug:"缓存-i-o"},{level:2,title:"网络 I/O",slug:"网络-i-o"},{level:2,title:"IO模式",slug:"io模式"},{level:2,title:"阻塞 I/O",slug:"阻塞-i-o"},{level:3,title:"非阻塞 I/O",slug:"非阻塞-i-o"},{level:3,title:"同步非阻塞与同步阻塞之间有什么优缺点呢?",slug:"同步非阻塞与同步阻塞之间有什么优缺点呢?"},{level:2,title:"I/O 多路复用",slug:"i-o-多路复用"},{level:3,title:"poll",slug:"poll"},{level:3,title:"epoll",slug:"epoll"},{level:3,title:"实现原理",slug:"实现原理"},{level:2,title:"信号驱动 I/O",slug:"信号驱动-i-o"},{level:2,title:"异步 I/O",slug:"异步-i-o"},{level:3,title:"小结",slug:"小结"},{level:2,title:"IO设计模式",slug:"io设计模式"},{level:3,title:"传统IO设计模式",slug:"传统io设计模式"},{level:3,title:"多线程模式",slug:"多线程模式"},{level:3,title:"线程池模式",slug:"线程池模式"},{level:3,title:"高性能IO设计模式",slug:"高性能io设计模式"},{level:3,title:"Reactor",slug:"reactor"},{level:3,title:"Proactor",slug:"proactor"}],lastUpdated:"2/25/2020, 7:09:44 AM"},{title:"LINUX",frontmatter:{},regularPath:"/zh/os/linux.html",relativePath:"zh/os/linux.md",key:"v-3d7c27ec",path:"/zh/os/linux.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"进程",frontmatter:{},regularPath:"/zh/os/process.html",relativePath:"zh/os/process.md",key:"v-77f2e22a",path:"/zh/os/process.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"线程",frontmatter:{},regularPath:"/zh/os/thread.html",relativePath:"zh/os/thread.md",key:"v-d505af64",path:"/zh/os/thread.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"编译型语言",frontmatter:{},regularPath:"/zh/program/",relativePath:"zh/program/README.md",key:"v-4db484c1",path:"/zh/program/",lastUpdated:"2/22/2020, 6:07:07 PM"},{title:"C",frontmatter:{},regularPath:"/zh/program/c.html",relativePath:"zh/program/c.md",key:"v-6c1827f0",path:"/zh/program/c.html",lastUpdated:"2/22/2020, 6:07:07 PM"},{title:"Golang",frontmatter:{},regularPath:"/zh/program/golang.html",relativePath:"zh/program/golang.md",key:"v-775f4f8a",path:"/zh/program/golang.html",lastUpdated:"2/22/2020, 6:07:07 PM"},{title:"JavaScript",frontmatter:{},regularPath:"/zh/program/javascript.html",relativePath:"zh/program/javascript.md",key:"v-3ca656aa",path:"/zh/program/javascript.html",lastUpdated:"2/22/2020, 6:07:07 PM"},{title:"PHP",frontmatter:{},regularPath:"/zh/program/php.html",relativePath:"zh/program/php.md",key:"v-a9d38bc4",path:"/zh/program/php.html",headers:[{level:2,title:"源码整体框架",slug:"源码整体框架"},{level:2,title:"执行原理概述",slug:"执行原理概述"},{level:2,title:"Zend 虚拟机",slug:"zend-虚拟机"},{level:3,title:"符号表",slug:"符号表"},{level:3,title:"指令",slug:"指令"},{level:2,title:"生命周期",slug:"生命周期"},{level:3,title:"SAPI",slug:"sapi"},{level:2,title:"内存管理",slug:"内存管理"},{level:2,title:"垃圾回收",slug:"垃圾回收"},{level:3,title:"垃圾的产生",slug:"垃圾的产生"},{level:3,title:"回收过程",slug:"回收过程"},{level:3,title:"垃圾收集的内部实现",slug:"垃圾收集的内部实现"},{level:2,title:"扩展的构成及编译",slug:"扩展的构成及编译"},{level:3,title:"扩展的构成",slug:"扩展的构成"},{level:3,title:"编译工具",slug:"编译工具"},{level:3,title:"php-config",slug:"php-config"},{level:3,title:"编写扩展的基本步骤",slug:"编写扩展的基本步骤"},{level:3,title:"config.m4",slug:"config-m4"}],lastUpdated:"2/24/2020, 2:14:52 AM"},{title:"Python",frontmatter:{},regularPath:"/zh/program/python.html",relativePath:"zh/program/python.md",key:"v-3bd307ca",path:"/zh/program/python.html",lastUpdated:"2/22/2020, 6:07:07 PM"}],themeConfig:{repo:"m9rco/practice",docsRepo:"m9-lab/m9-lab.github.io",docsBranch:"master",editLinks:!0,docsDir:"docs",algolia:{apiKey:"17103d809d3df489f3e1de21aaa02b48",indexName:"practice"},smoothScroll:!0,locales:{"/":{label:"简体中文",selectText:"选择语言",ariaLabel:"选择语言",editLinkText:"在 GitHub 上编辑此页",lastUpdated:"上次更新",nav:[{text:"指南",link:"/zh/guide/"},{text:"数据库",link:"/zh/db/"},{text:"操作系统",link:"/zh/os/"},{text:"编程语言",link:"/zh/program/"},{text:"分布式设计",link:"/zh/distributed/"},{text:"DevOPS",link:"/zh/devops/"},{text:"通用基础",ariaLabel:"通用基础",items:[{text:"算法 & 数据结构",items:[{text:"数据结构",link:"/zh/structures-algorithm/structures.html"},{text:"基本算法",link:"/zh/structures-algorithm/algorithm.html"},{text:"Leetcode",link:"/zh/leetcode/"}]},{text:"网络安全",items:[{text:"WEB 安全",link:"/zh/structures-algorithm/structures.html"},{text:"服务器安全",link:"/zh/structures-algorithm/algorithm.html"},{text:"序列化漏洞",link:"/zh/structures-algorithm/algorithm.html"},{text:"加密解密",link:"/zh/structures-algorithm/algorithm.html"},{text:"网络隔离",link:"/zh/structures-algorithm/algorithm.html"}]},{text:"设计思路",items:[{text:"并发问题",link:"/zh/structures-algorithm/structures.html"},{text:"限流熔断",link:"/zh/structures-algorithm/algorithm.html"},{text:"海量搜索",link:"/zh/structures-algorithm/algorithm.html"}]}]}],sidebar:{"/zh/guide/":[{title:"指南",collapsable:!1,children:[""]}],"/zh/db/":[{title:"关系型数据库",collapsable:!1,children:["mysql","postgreSQL"]},{title:"键-值数据库",collapsable:!1,children:["redis"]},{title:"列数据库",collapsable:!1,children:["hbase","clickhouse"]},{title:"文档型数据库",collapsable:!1,children:["mongodb"]},{title:"图数据库",collapsable:!1,children:["neo4j"]}],"/zh/os/":[{title:"操作系统",collapsable:!1,children:["io","cpu","thread","coroutines","process"]},{title:"计算机原理",collapsable:!1,children:["linux"]}],"/zh/program/":[{title:"解释型语言",collapsable:!1,children:["php","python","javascript"]},{title:"编译型语言",collapsable:!1,children:["golang","c"]}]}},"/en":{label:"English",selectText:"Languages",ariaLabel:"Select language",editLinkText:"Edit this page on GitHub",lastUpdated:"Last Updated",nav:[{text:"Guide",link:"/guide/"},{text:"Config Reference",link:"/config/"},{text:"Plugin",link:"/plugin/"},{text:"Theme",link:"/theme/"},{text:"0.x",link:"https://v0.vuepress.vuejs.org/"}],sidebar:{}}}},locales:{"/":{lang:"zh-CN",title:"笃行",description:"笃行致远,不负芳华",path:"/"},"/en/":{lang:"English",title:"Practice",description:"The back-end architects self practice",path:"/en/"}}};function he(t){var e=document.createElement("link");e.href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css",e.rel="stylesheet",document.body.appendChild(e);var n=document.createElement("script");function r(t){var e=document.getElementById("gitalk-container");e||((e=document.createElement("div")).id="gitalk-container",e.classList.add("content"));var n=document.querySelector(".page-nav");n&&(n.appendChild(e),"undefined"!=typeof Gitalk&&Gitalk instanceof Function&&(t.fullPath,new Gitalk({clientID:"5e01d05713fb81675776",clientSecret:"599d38643f2c2fb15438c137f345a03fcb244b50",repo:"practice",owner:"m9rco",admin:["m9rco"],id:location.pathname,distractionFreeMode:!1,language:"zh-CN"}).render("gitalk-container")))}n.src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js",document.body.appendChild(n),t.afterEach((function(t){n.onload?r(t):n.onload=function(){r(t)}}))}n(98);r.a.component("Bit",(function(){return Promise.all([n.e(0),n.e(6)]).then(n.bind(null,285))})),r.a.component("Comment",(function(){return n.e(11).then(n.bind(null,256))})),r.a.component("OtherComponent",(function(){return n.e(13).then(n.bind(null,286))})),r.a.component("UpgradePath",(function(){return Promise.all([n.e(0),n.e(7)]).then(n.bind(null,287))})),r.a.component("demo-1",(function(){return n.e(14).then(n.bind(null,257))})),r.a.component("diagram-markdown-slot-relationship",(function(){return n.e(15).then(n.bind(null,288))})),r.a.component("svg-container",(function(){return Promise.all([n.e(0),n.e(8)]).then(n.bind(null,289))})),r.a.component("Foo-Bar",(function(){return n.e(12).then(n.bind(null,258))})),r.a.component("Badge",(function(){return Promise.all([n.e(0),n.e(10)]).then(n.bind(null,290))}));n(99),n(100);function ve(t){const e=document.documentElement.getBoundingClientRect(),n=t.getBoundingClientRect();return{x:n.left-e.left,y:n.top-e.top}}n(101);var me={name:"BackToTop",props:{threshold:{type:Number,default:300}},data:function(){return{scrollTop:null}},computed:{show:function(){return this.scrollTop>this.threshold}},mounted:function(){var t=this;this.scrollTop=this.getScrollTop(),window.addEventListener("scroll",qt()((function(){t.scrollTop=t.getScrollTop()}),100))},methods:{getScrollTop:function(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},scrollToTop:function(){window.scrollTo({top:0,behavior:"smooth"}),this.scrollTop=0}}},ye=(n(110),Object(le.a)(me,(function(){var t=this.$createElement,e=this._self._c||t;return e("transition",{attrs:{name:"fade"}},[this.show?e("svg",{staticClass:"go-to-top",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 49.484 28.284"},on:{click:this.scrollToTop}},[e("g",{attrs:{transform:"translate(-229 -126.358)"}},[e("rect",{attrs:{fill:"currentColor",width:"35",height:"5",rx:"2",transform:"translate(229 151.107) rotate(-45)"}}),this._v(" "),e("rect",{attrs:{fill:"currentColor",width:"35",height:"5",rx:"2",transform:"translate(274.949 154.642) rotate(-135)"}})])]):this._e()])}),[],!1,null,"5fd4ef0c",null).exports);function ge(t,e){void 0===e&&(e={});var n=e.registrationOptions;void 0===n&&(n={}),delete e.registrationOptions;var r=function(t){for(var n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];e&&e[t]&&e[t].apply(e,n)};"serviceWorker"in navigator&&window.addEventListener("load",(function(){Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))?(!function(t,e,n){fetch(t).then((function(r){404===r.status?(e("error",new Error("Service worker not found at "+t)),_e()):-1===r.headers.get("content-type").indexOf("javascript")?(e("error",new Error("Expected "+t+" to have javascript content-type, but received "+r.headers.get("content-type"))),_e()):be(t,e,n)})).catch((function(t){navigator.onLine?e("error",t):e("offline")}))}(t,r,n),navigator.serviceWorker.ready.then((function(t){r("ready",t)}))):be(t,r,n)}))}function be(t,e,n){navigator.serviceWorker.register(t,n).then((function(t){e("registered",t),t.waiting?e("updated",t):t.onupdatefound=function(){e("updatefound",t);var n=t.installing;n.onstatechange=function(){"installed"===n.state&&(navigator.serviceWorker.controller?e("updated",t):e("cached",t))}}})).catch((function(t){e("error",t)}))}function _e(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(t){t.unregister()}))}class we{constructor(t){Object.defineProperty(this,"registration",{value:t,configurable:!0,writable:!0})}update(){return this.registration.update()}skipWaiting(){const t=this.registration.waiting;return t?(console.log("[vuepress:sw] Doing worker.skipWaiting()."),new Promise((e,n)=>{const r=new MessageChannel;r.port1.onmessage=t=>{console.log("[vuepress:sw] Done worker.skipWaiting()."),t.data.error?n(t.data.error):e(t.data)},t.postMessage({type:"skip-waiting"},[r.port2])})):Promise.resolve()}}var xe=n(12);r.a.component("SWUpdatePopup",()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,254)));var Oe=n(77),ke=(n(81),n(91),Object(le.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticStyle:{"enable-background":"new 0 0 50 50"},attrs:{xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 30 30"}},[e("rect",{attrs:{x:"0",y:"13",width:"4",height:"5"}},[e("animate",{attrs:{attributeName:"height",attributeType:"XML",values:"5;21;5",begin:"0s",dur:"0.6s",repeatCount:"indefinite"}}),this._v(" "),e("animate",{attrs:{attributeName:"y",attributeType:"XML",values:"13; 5; 13",begin:"0s",dur:"0.6s",repeatCount:"indefinite"}})]),this._v(" "),e("rect",{attrs:{x:"10",y:"13",width:"4",height:"5"}},[e("animate",{attrs:{attributeName:"height",attributeType:"XML",values:"5;21;5",begin:"0.15s",dur:"0.6s",repeatCount:"indefinite"}}),this._v(" "),e("animate",{attrs:{attributeName:"y",attributeType:"XML",values:"13; 5; 13",begin:"0.15s",dur:"0.6s",repeatCount:"indefinite"}})]),this._v(" "),e("rect",{attrs:{x:"20",y:"13",width:"4",height:"5"}},[e("animate",{attrs:{attributeName:"height",attributeType:"XML",values:"5;21;5",begin:"0.3s",dur:"0.6s",repeatCount:"indefinite"}}),this._v(" "),e("animate",{attrs:{attributeName:"y",attributeType:"XML",values:"13; 5; 13",begin:"0.3s",dur:"0.6s",repeatCount:"indefinite"}})])])}),[],!1,null,null,null).exports),Ce={x:0,y:0,"line-width":2,"line-length":50,"text-margin":10,"font-size":14,"font-color":"#8DA1AC","line-color":"#8DA1AC","element-color":"black",fill:"white","yes-text":"yes","no-text":"no","arrow-end":"block",scale:1},Se={ant:Object.assign({},Ce,{symbols:{start:{class:"start-element","font-color":"white",fill:"#595959","line-width":"0px"},end:{class:"end-element","font-color":"white",fill:"#595959","line-width":"0px"},operation:{class:"operation-element","font-color":"white",fill:"#1890ff","line-width":"0px"},inputoutput:{class:"inputoutput-element","font-color":"white",fill:"#1890ff","line-width":"0px"},subroutine:{class:"subroutine-element","font-color":"white",fill:"#FF485E","element-color":"#fff","line-color":"red"},condition:{class:"condition-element","font-color":"white",fill:"#FF485E","line-width":"0px"},parallel:{class:"parallel-element","font-color":"white",fill:"#1890ff","line-width":"0px"}}}),vue:Object.assign({},Ce,{symbols:{start:{class:"start-element","font-color":"white",fill:"#2F495F","line-width":"0px"},end:{class:"end-element","font-color":"white",fill:"#2F495F","line-width":"0px"},operation:{class:"operation-element","font-color":"white",fill:"#00BC7D","line-width":"0px"},inputoutput:{class:"inputoutput-element","font-color":"white",fill:"#EB4D5D","line-width":"0px"},subroutine:{class:"subroutine-element","font-color":"white",fill:"#937AC4","element-color":"#fff","line-color":"red"},condition:{class:"condition-element","font-color":"white",fill:"#FFB500","line-width":"0px"},parallel:{class:"parallel-element","font-color":"white",fill:"#2F495F","line-width":"0px"}}})},Ee={name:"flowchart",components:{Loading:ke},props:{id:{type:String,required:!0},code:{type:String,required:!0},preset:{type:String,default:"vue"}},data:function(){return{loading:!0}},mounted:function(){var t=this,e=Se[this.preset];if(e){var r=this.code;this.$el.setAttribute("id",this.id);Promise.all([n.e(3).then(n.t.bind(null,250,7)),new Promise((function(t){return setTimeout(t,500)}))]).then((function(n){(0,Object(Oe.a)(n,1)[0].default.parse)(r).drawSVG(t.id,e),t.loading=!1}))}else console.warn("[vuepress-plugin-flowchart] Unknown preset: ".concat(this.preset))}},Ae=(n(140),Object(le.a)(Ee,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"vuepress-flowchart",class:{loading:this.loading}},[this.loading?e("Loading",{staticClass:"vuepress-flowchart-loading-icon"}):this._e()],1)}),[],!1,null,null,null).exports),$e=[function(t){var e=t.Vue,r=t.isServer,o=t.router;try{document&&he(o)}catch(t){console.error(t.message)}r||n.e(4).then(n.t.bind(null,249,7)).then((function(t){e.use(t.default)}))},{},function(t){t.Vue.mixin({computed:{$dataBlock:function(){return this.$options.__data__block__}}})},{},{},({Vue:t,router:e})=>{e.options.scrollBehavior=(e,n,r)=>{if(r)return window.scrollTo({top:r.y,behavior:"smooth"});if(e.hash){if(t.$vuepress.$get("disableScrollBehavior"))return!1;const n=document.querySelector(e.hash);return!!n&&window.scrollTo({top:ve(n).y,behavior:"smooth"})}return window.scrollTo({top:0,behavior:"smooth"})}},({Vue:t})=>{t.component("BackToTop",ye)},({router:t,isServer:e})=>{t.onReady(()=>{e||ge("/service-worker.js",{registrationOptions:{},ready(){console.log("[vuepress:sw] Service worker is active."),xe.a.$emit("sw-ready")},cached(t){console.log("[vuepress:sw] Content has been cached for offline use."),xe.a.$emit("sw-cached",new we(t))},updated(t){console.log("[vuepress:sw] Content updated."),xe.a.$emit("sw-updated",new we(t))},offline(){console.log("[vuepress:sw] No internet connection found. App is running in offline mode."),xe.a.$emit("sw-offline")},error(t){console.error("[vuepress:sw] Error during service worker registration:",t),xe.a.$emit("sw-error",t),ga("send","exception",{exDescription:t.message,exFatal:!1})}})})},({router:t})=>{var e,n,r,o,i,a;"undefined"!=typeof window&&(e=window,n=document,r="script",o="ga",e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,i=n.createElement(r),a=n.getElementsByTagName(r)[0],i.async=1,i.src="https://www.google-analytics.com/analytics.js",a.parentNode.insertBefore(i,a),ga("create","UA-158536766-1","auto"),ga("set","anonymizeIp",!0),t.afterEach((function(t){ga("set","page",t.fullPath),ga("send","pageview")})))},function(t){const{Vue:e}=t;e.component("FlowChart",Ae)}],je=["BackToTop"];n(141),n(93),n(95);var Te=n(80),ze=n.n(Te);function Pe(t,e){for(var n=0;nt.path.toLowerCase()===e.toLowerCase()).length>0}var Re={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return Object(Ut.h)("pageKey",e),r.a.component(e)||r.a.component(e,Object(Ut.d)(e)),r.a.component(e)?t(e):t("")}},Ne={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:[`content__${e.slotKey}`]},n()[e.slotKey])},De=(n(146),Object(le.a)({},(function(t,e){var n=e._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),e._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])}),[],!0,null,null,null).exports),Fe={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};r.a.config.productionTip=!1,r.a.use(Ft),r.a.use(Me),r.a.mixin(function(t,e,n=r.a){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const o=new(t(n.$vuepress.$get("siteData"))),i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((t,e)=>(e.startsWith("$")&&(t[e]=i[e].get),t),a),{computed:a}}((function(t){return function(){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e)}var n,r,o;return n=e,(r=[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var o in r)"/"===o?e=r[o]:0===this.$page.path.indexOf(o)&&(t=r[o]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||""}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;nn||(t.hash?!r.a.$vuepress.$get("disableScrollBehavior")&&{selector:t.hash}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(Ie(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Ie(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Ie(t,o)?r(o):Ie(t,n)?r(n):r()}})}(n);const o={};try{$e.forEach(e=>{"function"==typeof e&&e({Vue:r.a,options:o,router:n,siteData:de,isServer:t})})}catch(t){console.error(t)}return{app:new r.a(Object.assign(o,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},je.map(e=>t(e)))])})),router:n}}(!1);window.__VUEPRESS__={version:"1.3.0",hash:"0e1c4d9"},Be.onReady(()=>{Ue.$mount("#app")})}]); \ No newline at end of file + */function o(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function i(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function a(t,e){for(var n in e)t[n]=e[n];return t}var s={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var s=o.$createElement,u=n.name,l=o.$route,f=o._routerViewCache||(o._routerViewCache={}),p=0,d=!1;o&&o._routerRoot!==o;){var h=o.$vnode?o.$vnode.data:{};h.routerView&&p++,h.keepAlive&&o._directInactive&&o._inactive&&(d=!0),o=o.$parent}if(i.routerViewDepth=p,d){var v=f[u],m=v&&v.component;return m?(v.configProps&&c(m,i,v.route,v.configProps),s(m,i,r)):s()}var y=l.matched[p],g=y&&y.components[u];if(!y||!g)return f[u]=null,s();f[u]={component:g},i.registerRouteInstance=function(t,e){var n=y.instances[u];(e&&n!==t||!e&&n===t)&&(y.instances[u]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){y.instances[u]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==y.instances[u]&&(y.instances[u]=t.componentInstance)};var b=y.props&&y.props[u];return b&&(a(f[u],{route:l,configProps:b}),c(g,i,l,b)),s(g,i,r)}};function c(t,e,n,r){var o=e.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(n,r);if(o){o=e.props=a({},o);var i=e.attrs=e.attrs||{};for(var s in o)t.props&&s in t.props||(i[s]=o[s],delete o[s])}}var u=/[!'()*]/g,l=function(t){return"%"+t.charCodeAt(0).toString(16)},f=/%2C/g,p=function(t){return encodeURIComponent(t).replace(u,l).replace(f,",")},d=decodeURIComponent;function h(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=d(n.shift()),o=n.length>0?d(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function v(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return p(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(p(e)):r.push(p(e)+"="+p(t)))})),r.join("&")}return p(e)+"="+p(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var m=/\/?$/;function y(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=g(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:w(e,o),matched:t?_(t):[]};return n&&(a.redirectedFrom=w(n,o)),Object.freeze(a)}function g(t){if(Array.isArray(t))return t.map(g);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=g(t[n]);return e}return t}var b=y(null,{path:"/"});function _(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function w(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||v)(r)+o}function x(t,e){return e===b?t===e:!!e&&(t.path&&e.path?t.path.replace(m,"")===e.path.replace(m,"")&&t.hash===e.hash&&O(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&O(t.query,e.query)&&O(t.params,e.params)))}function O(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],o=e[n];return"object"==typeof r&&"object"==typeof o?O(r,o):String(r)===String(o)}))}function k(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),l=e&&e.path||"/",f=u.path?k(u.path,l,n||o.append):l,p=function(t,e,n){void 0===e&&(e={});var r,o=n||h;try{r=o(t||"")}catch(t){r={}}for(var i in e)r[i]=e[i];return r}(u.query,o.query,r&&r.options.parseQuery),d=o.hash||u.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:f,query:p,hash:d}}var q,W=function(){},G={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,s=o.route,c=o.href,u={},l=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==l?"router-link-active":l,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,v=null==this.exactActiveClass?d:this.exactActiveClass,g=s.redirectedFrom?y(null,V(s.redirectedFrom),null,n):s;u[v]=x(r,g),u[h]=this.exact?u[v]:function(t,e){return 0===t.path.replace(m,"/").indexOf(e.path.replace(m,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,g);var b=function(t){X(t)&&(e.replace?n.replace(i,W):n.push(i,W))},_={click:X};Array.isArray(this.event)?this.event.forEach((function(t){_[t]=b})):_[this.event]=b;var w={class:u},O=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:b,isActive:u[h],isExactActive:u[v]});if(O){if(1===O.length)return O[0];if(O.length>1||!O.length)return 0===O.length?t():t("span",{},O)}if("a"===this.tag)w.on=_,w.attrs={href:c};else{var k=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=H(l.path,s.params),c(l,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function bt(t){return function(e,n,r){var i=!1,a=0,s=null;_t(t,(function(t,e,n,c){if("function"==typeof t&&void 0===t.cid){i=!0,a++;var u,l=Ot((function(e){var o;((o=e).__esModule||xt&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:q.extend(e),n.components[c]=e,--a<=0&&r()})),f=Ot((function(t){var e="Failed to resolve async component "+c+": "+t;s||(s=o(t)?t:new Error(e),r(s))}));try{u=t(l,f)}catch(t){f(t)}if(u)if("function"==typeof u.then)u.then(l,f);else{var p=u.component;p&&"function"==typeof p.then&&p.then(l,f)}}})),i||r()}}function _t(t,e){return wt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function wt(t){return Array.prototype.concat.apply([],t)}var xt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ot(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var kt=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);kt._name="NavigationDuplicated";var Ct=function(t,e){this.router=t,this.base=function(t){if(!t)if(Y){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=b,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function St(t,e,n,r){var o=_t(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=q.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return wt(r?o.reverse():o)}function Et(t,e){if(e)return function(){return t.apply(e,arguments)}}Ct.prototype.listen=function(t){this.cb=t},Ct.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Ct.prototype.onError=function(t){this.errorCbs.push(t)},Ct.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,(function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach((function(t){t(o)})))}),(function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach((function(e){e(t)})))}))},Ct.prototype.confirmTransition=function(t,e,n){var r=this,a=this.current,s=function(t){!i(kt,t)&&o(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)};if(x(t,a)&&t.matched.length===a.matched.length)return this.ensureURL(),s(new kt(t));var c=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else t=decodeURI(t.slice(0,n))+t.slice(n);return t}function Pt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Lt(t){vt?mt(Pt(t)):window.location.hash=t}function Mt(t){vt?yt(Pt(t)):window.location.replace(Pt(t))}var It=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){i(kt,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Ct),Rt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Z(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!vt&&!1!==t.fallback,this.fallback&&(e="hash"),Y||(e="abstract"),this.mode=e,e){case"history":this.history=new At(this,t.base);break;case"hash":this.history=new jt(this,t.base,this.fallback);break;case"abstract":this.history=new It(this,t.base);break;default:0}},Nt={currentRoute:{configurable:!0}};function Dt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Rt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Nt.currentRoute.get=function(){return this.history&&this.history.current},Rt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof At)n.transitionTo(n.getCurrentLocation());else if(n instanceof jt){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Rt.prototype.beforeEach=function(t){return Dt(this.beforeHooks,t)},Rt.prototype.beforeResolve=function(t){return Dt(this.resolveHooks,t)},Rt.prototype.afterEach=function(t){return Dt(this.afterHooks,t)},Rt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Rt.prototype.onError=function(t){this.history.onError(t)},Rt.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},Rt.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},Rt.prototype.go=function(t){this.history.go(t)},Rt.prototype.back=function(){this.go(-1)},Rt.prototype.forward=function(){this.go(1)},Rt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Rt.prototype.resolve=function(t,e,n){var r=V(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?C(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Rt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==b&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Rt.prototype,Nt),Rt.install=function t(e){if(!t.installed||q!==e){t.installed=!0,q=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",s),e.component("RouterLink",G);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Rt.version="3.1.5",Y&&window.Vue&&window.Vue.use(Rt);var Ft=Rt;var Ut=n(1),Bt={created(){this.$ssrContext&&(this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.description=this.$page.description||this.$description)},mounted(){this.currentMetaTags=new Set,this.updateMeta()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.$page.frontmatter.meta||[],e=t.slice(0);0===t.filter(t=>"description"===t.name).length&&e.push({name:"description",content:this.$description});const n=document.querySelectorAll('meta[name="description"]');n.length&&n.forEach(t=>this.currentMetaTags.add(t)),this.currentMetaTags=new Set(Ht(e,this.currentMetaTags))}},watch:{$page(){this.updateMeta()}},beforeDestroy(){Ht(null,this.currentMetaTags)}};function Ht(t,e){if(e&&[...e].forEach(t=>{document.head.removeChild(t)}),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}var Vt=n(29),qt=n.n(Vt),Wt={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:qt()((function(){this.setActiveHash()}),300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Gt=n(30),Xt=n.n(Gt),Yt={mounted(){Xt.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||r.a.component(t.name)||Xt.a.start(),n()}),this.$router.afterEach(()=>{Xt.a.done(),this.isSidebarOpen=!1})}},Kt=n(78),Qt=n.n(Kt),Zt={mounted(){Qt.a.polyfill()}},Jt=(n(97),Object.assign||function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(t){function e(){}t(e,e)},o=function(t){var e=t.target;e!==C?-1!==b.indexOf(e)&&v({target:e}):h()},i=function(){if(!w&&k.original){var t=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(x-t)>O.scrollOffset&&setTimeout(h,150)}},a=function(t){var e=t.key||t.keyCode;"Escape"!==e&&"Esc"!==e&&27!==e||h()},s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t;if(t.background&&(C.style.background=t.background),t.container&&t.container instanceof Object&&(e.container=Jt({},O.container,t.container)),t.template){var n=ee(t.template)?t.template:document.querySelector(t.template);e.template=n}return O=Jt({},O,e),b.forEach((function(t){t.dispatchEvent(ae("medium-zoom:update",{detail:{zoom:S}}))})),S},c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(Jt({},O,e))},u=function(){for(var t=arguments.length,e=Array(t),n=0;n0?e.reduce((function(t,e){return[].concat(t,re(e))}),[]):b;return r.forEach((function(t){t.classList.remove("medium-zoom-image"),t.dispatchEvent(ae("medium-zoom:detach",{detail:{zoom:S}}))})),b=b.filter((function(t){return-1===r.indexOf(t)})),S},f=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.addEventListener("medium-zoom:"+t,e,n)})),_.push({type:"medium-zoom:"+t,listener:e,options:n}),S},p=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.removeEventListener("medium-zoom:"+t,e,n)})),_=_.filter((function(n){return!(n.type==="medium-zoom:"+t&&n.listener.toString()===e.toString())})),S},d=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,n=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},e=void 0,n=void 0;if(O.container)if(O.container instanceof Object)e=(t=Jt({},t,O.container)).width-t.left-t.right-2*O.margin,n=t.height-t.top-t.bottom-2*O.margin;else{var r=(ee(O.container)?O.container:document.querySelector(O.container)).getBoundingClientRect(),o=r.width,i=r.height,a=r.left,s=r.top;t=Jt({},t,{width:o,height:i,left:a,top:s})}e=e||t.width-2*O.margin,n=n||t.height-2*O.margin;var c=k.zoomedHd||k.original,u=ne(c)?e:c.naturalWidth||e,l=ne(c)?n:c.naturalHeight||n,f=c.getBoundingClientRect(),p=f.top,d=f.left,h=f.width,v=f.height,m=Math.min(u,e)/h,y=Math.min(l,n)/v,g=Math.min(m,y),b="scale("+g+") translate3d("+((e-h)/2-d+O.margin+t.left)/g+"px, "+((n-v)/2-p+O.margin+t.top)/g+"px, 0)";k.zoomed.style.transform=b,k.zoomedHd&&(k.zoomedHd.style.transform=b)};return new r((function(t){if(e&&-1===b.indexOf(e))t(S);else{if(k.zoomed)t(S);else{if(e)k.original=e;else{if(!(b.length>0))return void t(S);var r=b;k.original=r[0]}if(k.original.dispatchEvent(ae("medium-zoom:open",{detail:{zoom:S}})),x=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,w=!0,k.zoomed=ie(k.original),document.body.appendChild(C),O.template){var o=ee(O.template)?O.template:document.querySelector(O.template);k.template=document.createElement("div"),k.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(k.template)}if(document.body.appendChild(k.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),k.original.classList.add("medium-zoom-image--hidden"),k.zoomed.classList.add("medium-zoom-image--opened"),k.zoomed.addEventListener("click",h),k.zoomed.addEventListener("transitionend",(function e(){w=!1,k.zoomed.removeEventListener("transitionend",e),k.original.dispatchEvent(ae("medium-zoom:opened",{detail:{zoom:S}})),t(S)})),k.original.getAttribute("data-zoom-src")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("srcset"),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.src=k.zoomed.getAttribute("data-zoom-src"),k.zoomedHd.onerror=function(){clearInterval(i),console.warn("Unable to reach the zoom image target "+k.zoomedHd.src),k.zoomedHd=null,n()};var i=setInterval((function(){k.zoomedHd.complete&&(clearInterval(i),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",h),document.body.appendChild(k.zoomedHd),n())}),10)}else if(k.original.hasAttribute("srcset")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("sizes");var a=k.zoomedHd.addEventListener("load",(function(){k.zoomedHd.removeEventListener("load",a),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",h),document.body.appendChild(k.zoomedHd),n()}))}else n()}}}))},h=function(){return new r((function(t){if(!w&&k.original){w=!0,document.body.classList.remove("medium-zoom--opened"),k.zoomed.style.transform="",k.zoomedHd&&(k.zoomedHd.style.transform=""),k.template&&(k.template.style.transition="opacity 150ms",k.template.style.opacity=0),k.original.dispatchEvent(ae("medium-zoom:close",{detail:{zoom:S}})),k.zoomed.addEventListener("transitionend",(function e(){k.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(k.zoomed),k.zoomedHd&&document.body.removeChild(k.zoomedHd),document.body.removeChild(C),k.zoomed.classList.remove("medium-zoom-image--opened"),k.template&&document.body.removeChild(k.template),w=!1,k.zoomed.removeEventListener("transitionend",e),k.original.dispatchEvent(ae("medium-zoom:closed",{detail:{zoom:S}})),k.original=null,k.zoomed=null,k.zoomedHd=null,k.template=null,t(S)}))}else t(S)}))},v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target;return k.original?h():d({target:e})},m=function(){return O},y=function(){return b},g=function(){return k.original},b=[],_=[],w=!1,x=0,O=n,k={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(e)?O=e:(e||"string"==typeof e)&&u(e),O=Jt({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},O);var C=oe(O.background);document.addEventListener("click",o),document.addEventListener("keyup",a),document.addEventListener("scroll",i),window.addEventListener("resize",h);var S={open:d,close:h,toggle:v,update:s,clone:c,attach:u,detach:l,on:f,off:p,getOptions:m,getImages:y,getZoomedImage:g};return S},ce=[Bt,Wt,Yt,Zt,{data:()=>({zoom:null}),mounted(){this.updateZoom()},updated(){this.updateZoom()},methods:{updateZoom(){setTimeout(()=>{this.zoom&&this.zoom.detach(),this.zoom=se(".theme-default-content :not(a) > img",void 0)},1e3)}}}],ue={name:"GlobalLayout",computed:{layout:function(){var t=this.getLayout();return Object(Ut.h)("layout",t),r.a.component(t)}},methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},le=n(2),fe=Object(le.a)(ue,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;Object(Ut.f)(fe,"mixins",ce);var pe=[{name:"v-746bd11e",path:"/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-746bd11e").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-5ba934e1",path:"/zh/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-5ba934e1").then(n)}},{path:"/zh/index.html",redirect:"/zh/"},{name:"v-74d01bde",path:"/zh/db/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-74d01bde").then(n)}},{path:"/zh/db/index.html",redirect:"/zh/db/"},{name:"v-58cebc34",path:"/zh/db/clickhouse.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-58cebc34").then(n)}},{name:"v-dbd7ec2c",path:"/zh/db/hbase.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-dbd7ec2c").then(n)}},{name:"v-94740eec",path:"/zh/db/mongodb.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-94740eec").then(n)}},{name:"v-5559350a",path:"/zh/db/mysql.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-5559350a").then(n)}},{name:"v-0a8a5aec",path:"/zh/db/neo4j.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-0a8a5aec").then(n)}},{name:"v-fc0c3ca4",path:"/zh/db/postgreSQL.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-fc0c3ca4").then(n)}},{name:"v-f82d23ac",path:"/zh/db/redis.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-f82d23ac").then(n)}},{name:"v-16372753",path:"/zh/devops/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-16372753").then(n)}},{path:"/zh/devops/index.html",redirect:"/zh/devops/"},{name:"v-793e68e1",path:"/zh/distributed/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-793e68e1").then(n)}},{path:"/zh/distributed/index.html",redirect:"/zh/distributed/"},{name:"v-5cfbe97e",path:"/zh/guide/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-5cfbe97e").then(n)}},{path:"/zh/guide/index.html",redirect:"/zh/guide/"},{name:"v-accb5676",path:"/zh/os/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-accb5676").then(n)}},{path:"/zh/os/index.html",redirect:"/zh/os/"},{name:"v-728e1cec",path:"/zh/os/coroutines.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-728e1cec").then(n)}},{name:"v-d2c24fec",path:"/zh/os/cpu.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-d2c24fec").then(n)}},{name:"v-173c9516",path:"/zh/os/io.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-173c9516").then(n)}},{name:"v-3d7c27ec",path:"/zh/os/linux.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-3d7c27ec").then(n)}},{name:"v-77f2e22a",path:"/zh/os/process.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-77f2e22a").then(n)}},{name:"v-d505af64",path:"/zh/os/thread.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-d505af64").then(n)}},{name:"v-4db484c1",path:"/zh/program/",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-4db484c1").then(n)}},{path:"/zh/program/index.html",redirect:"/zh/program/"},{name:"v-6c1827f0",path:"/zh/program/c.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-6c1827f0").then(n)}},{name:"v-775f4f8a",path:"/zh/program/golang.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-775f4f8a").then(n)}},{name:"v-3ca656aa",path:"/zh/program/javascript.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-3ca656aa").then(n)}},{name:"v-a9d38bc4",path:"/zh/program/php.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-a9d38bc4").then(n)}},{name:"v-3bd307ca",path:"/zh/program/python.html",component:fe,beforeEnter:function(t,e,n){Object(Ut.a)("Layout","v-3bd307ca").then(n)}},{path:"*",component:fe}],de={title:"",description:"",base:"/",pages:[{title:"Home",frontmatter:{home:!0,heroImage:"/hero.png",actionText:"快速上手 →",footer:"MIT Licensed | Copyright © 2020 Marco"},regularPath:"/",relativePath:"README.md",key:"v-746bd11e",path:"/",lastUpdated:"2/28/2020, 6:33:35 AM"},{title:"Home",frontmatter:{home:!0,heroImage:"/hero.png",actionText:"快速上手 →",actionLink:"/zh/guide/",features:[{title:"简洁至上",details:"以 Markdown 为中心的项目结构,以最少的配置帮助你专注于写作。"}],footer:"MIT Licensed | Copyright © 2020-PRESENT Marco"},regularPath:"/zh/",relativePath:"zh/README.md",key:"v-5ba934e1",path:"/zh/",lastUpdated:"2/15/2020, 9:48:35 AM"},{title:"数据库 🔎",frontmatter:{},regularPath:"/zh/db/",relativePath:"zh/db/README.md",key:"v-74d01bde",path:"/zh/db/",headers:[{level:2,title:"数据库概述",slug:"数据库概述"},{level:2,title:"附录",slug:"附录"}],lastUpdated:"3/1/2020, 11:29:42 PM"},{title:"Clickhouse",frontmatter:{},regularPath:"/zh/db/clickhouse.html",relativePath:"zh/db/clickhouse.md",key:"v-58cebc34",path:"/zh/db/clickhouse.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"HBase",frontmatter:{},regularPath:"/zh/db/hbase.html",relativePath:"zh/db/hbase.md",key:"v-dbd7ec2c",path:"/zh/db/hbase.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"MongoDB",frontmatter:{},regularPath:"/zh/db/mongodb.html",relativePath:"zh/db/mongodb.md",key:"v-94740eec",path:"/zh/db/mongodb.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"MySQL",frontmatter:{},regularPath:"/zh/db/mysql.html",relativePath:"zh/db/mysql.md",key:"v-5559350a",path:"/zh/db/mysql.html",headers:[{level:2,title:"基础架构",slug:"基础架构"},{level:3,title:"连接器管理",slug:"连接器管理"},{level:3,title:"Mysql缓存",slug:"mysql缓存"},{level:3,title:"分析器",slug:"分析器"},{level:3,title:"优化器",slug:"优化器"},{level:3,title:"执行器",slug:"执行器"},{level:3,title:"日志系统",slug:"日志系统"},{level:2,title:"数据结构",slug:"数据结构"},{level:3,title:"B树、B-树、B+树",slug:"b树、b-树、b-树"},{level:3,title:"磁盘存取原理",slug:"磁盘存取原理"},{level:3,title:"MyISAM 索引实现",slug:"myisam-索引实现"},{level:3,title:"InnoDB 索引实现",slug:"innodb-索引实现"},{level:2,title:"锁机制",slug:"锁机制"},{level:2,title:"隔离级别",slug:"隔离级别"},{level:2,title:"MVCC",slug:"mvcc"},{level:2,title:"InnoDB",slug:"innodb"},{level:2,title:"Explain",slug:"explain"},{level:3,title:"参考文献",slug:"参考文献"}],lastUpdated:"2/16/2020, 4:43:13 PM"},{title:"Neo4J",frontmatter:{},regularPath:"/zh/db/neo4j.html",relativePath:"zh/db/neo4j.md",key:"v-0a8a5aec",path:"/zh/db/neo4j.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"PostgreSQL",frontmatter:{},regularPath:"/zh/db/postgreSQL.html",relativePath:"zh/db/postgreSQL.md",key:"v-fc0c3ca4",path:"/zh/db/postgreSQL.html",headers:[{level:2,title:"初始化",slug:"初始化"},{level:3,title:"数学关系",slug:"数学关系"},{level:3,title:"准备环境",slug:"准备环境"},{level:3,title:"从SQL开始",slug:"从sql开始"},{level:2,title:"体系结构",slug:"体系结构"},{level:2,title:"MVCC",slug:"mvcc"}],lastUpdated:"3/1/2020, 11:29:42 PM"},{title:"Redis",frontmatter:{},regularPath:"/zh/db/redis.html",relativePath:"zh/db/redis.md",key:"v-f82d23ac",path:"/zh/db/redis.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{frontmatter:{},regularPath:"/zh/devops/",relativePath:"zh/devops/README.md",key:"v-16372753",path:"/zh/devops/",lastUpdated:"2/15/2020, 11:02:54 AM"},{frontmatter:{},regularPath:"/zh/distributed/",relativePath:"zh/distributed/README.md",key:"v-793e68e1",path:"/zh/distributed/",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"要怎样努力,才能成为很厉害的人",frontmatter:{},regularPath:"/zh/guide/",relativePath:"zh/guide/README.md",key:"v-5cfbe97e",path:"/zh/guide/",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"操作系统",frontmatter:{},regularPath:"/zh/os/",relativePath:"zh/os/README.md",key:"v-accb5676",path:"/zh/os/",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"协程",frontmatter:{},regularPath:"/zh/os/coroutines.html",relativePath:"zh/os/coroutines.md",key:"v-728e1cec",path:"/zh/os/coroutines.html",lastUpdated:"2/24/2020, 2:21:13 PM"},{title:"CPU",frontmatter:{},regularPath:"/zh/os/cpu.html",relativePath:"zh/os/cpu.md",key:"v-d2c24fec",path:"/zh/os/cpu.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"IO",frontmatter:{},regularPath:"/zh/os/io.html",relativePath:"zh/os/io.md",key:"v-173c9516",path:"/zh/os/io.html",headers:[{level:2,title:"概念",slug:"概念"},{level:3,title:"用户态切换到内核态",slug:"用户态切换到内核态"},{level:3,title:"进程的结构-PCB",slug:"进程的结构-pcb"},{level:3,title:"进程切换",slug:"进程切换"},{level:3,title:"创建进程",slug:"创建进程"},{level:3,title:"进程的阻塞",slug:"进程的阻塞"},{level:3,title:"同步与异步",slug:"同步与异步"},{level:3,title:"同步与异步的区别",slug:"同步与异步的区别"},{level:3,title:"阻塞与非阻塞",slug:"阻塞与非阻塞"},{level:3,title:"文件描述符 fd",slug:"文件描述符-fd"},{level:2,title:"缓存 I/O",slug:"缓存-i-o"},{level:2,title:"网络 I/O",slug:"网络-i-o"},{level:2,title:"IO模式",slug:"io模式"},{level:2,title:"阻塞 I/O",slug:"阻塞-i-o"},{level:3,title:"非阻塞 I/O",slug:"非阻塞-i-o"},{level:3,title:"同步非阻塞与同步阻塞之间有什么优缺点呢?",slug:"同步非阻塞与同步阻塞之间有什么优缺点呢?"},{level:2,title:"I/O 多路复用",slug:"i-o-多路复用"},{level:3,title:"poll",slug:"poll"},{level:3,title:"epoll",slug:"epoll"},{level:3,title:"实现原理",slug:"实现原理"},{level:2,title:"信号驱动 I/O",slug:"信号驱动-i-o"},{level:2,title:"异步 I/O",slug:"异步-i-o"},{level:3,title:"小结",slug:"小结"},{level:2,title:"IO设计模式",slug:"io设计模式"},{level:3,title:"传统IO设计模式",slug:"传统io设计模式"},{level:3,title:"多线程模式",slug:"多线程模式"},{level:3,title:"线程池模式",slug:"线程池模式"},{level:3,title:"高性能IO设计模式",slug:"高性能io设计模式"},{level:3,title:"Reactor",slug:"reactor"},{level:3,title:"Proactor",slug:"proactor"}],lastUpdated:"2/25/2020, 7:09:44 AM"},{title:"LINUX",frontmatter:{},regularPath:"/zh/os/linux.html",relativePath:"zh/os/linux.md",key:"v-3d7c27ec",path:"/zh/os/linux.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"进程",frontmatter:{},regularPath:"/zh/os/process.html",relativePath:"zh/os/process.md",key:"v-77f2e22a",path:"/zh/os/process.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"线程",frontmatter:{},regularPath:"/zh/os/thread.html",relativePath:"zh/os/thread.md",key:"v-d505af64",path:"/zh/os/thread.html",lastUpdated:"2/15/2020, 11:02:54 AM"},{title:"编译型语言",frontmatter:{},regularPath:"/zh/program/",relativePath:"zh/program/README.md",key:"v-4db484c1",path:"/zh/program/",lastUpdated:"2/22/2020, 6:07:07 PM"},{title:"C",frontmatter:{},regularPath:"/zh/program/c.html",relativePath:"zh/program/c.md",key:"v-6c1827f0",path:"/zh/program/c.html",lastUpdated:"2/22/2020, 6:07:07 PM"},{title:"Golang",frontmatter:{},regularPath:"/zh/program/golang.html",relativePath:"zh/program/golang.md",key:"v-775f4f8a",path:"/zh/program/golang.html",lastUpdated:"2/22/2020, 6:07:07 PM"},{title:"JavaScript",frontmatter:{},regularPath:"/zh/program/javascript.html",relativePath:"zh/program/javascript.md",key:"v-3ca656aa",path:"/zh/program/javascript.html",lastUpdated:"2/22/2020, 6:07:07 PM"},{title:"PHP",frontmatter:{},regularPath:"/zh/program/php.html",relativePath:"zh/program/php.md",key:"v-a9d38bc4",path:"/zh/program/php.html",headers:[{level:2,title:"源码整体框架",slug:"源码整体框架"},{level:2,title:"执行原理概述",slug:"执行原理概述"},{level:2,title:"Zend 虚拟机",slug:"zend-虚拟机"},{level:3,title:"符号表",slug:"符号表"},{level:3,title:"指令",slug:"指令"},{level:2,title:"生命周期",slug:"生命周期"},{level:3,title:"SAPI",slug:"sapi"},{level:2,title:"内存管理",slug:"内存管理"},{level:2,title:"垃圾回收",slug:"垃圾回收"},{level:3,title:"垃圾的产生",slug:"垃圾的产生"},{level:3,title:"回收过程",slug:"回收过程"},{level:3,title:"垃圾收集的内部实现",slug:"垃圾收集的内部实现"},{level:2,title:"扩展的构成及编译",slug:"扩展的构成及编译"},{level:3,title:"扩展的构成",slug:"扩展的构成"},{level:3,title:"编译工具",slug:"编译工具"},{level:3,title:"php-config",slug:"php-config"},{level:3,title:"编写扩展的基本步骤",slug:"编写扩展的基本步骤"},{level:3,title:"config.m4",slug:"config-m4"}],lastUpdated:"2/24/2020, 2:14:52 AM"},{title:"Python",frontmatter:{},regularPath:"/zh/program/python.html",relativePath:"zh/program/python.md",key:"v-3bd307ca",path:"/zh/program/python.html",lastUpdated:"2/22/2020, 6:07:07 PM"}],themeConfig:{repo:"m9rco/practice",docsRepo:"m9-lab/m9-lab.github.io",docsBranch:"master",editLinks:!0,docsDir:"docs",algolia:{apiKey:"17103d809d3df489f3e1de21aaa02b48",indexName:"practice"},smoothScroll:!0,locales:{"/":{label:"简体中文",selectText:"选择语言",ariaLabel:"选择语言",editLinkText:"在 GitHub 上编辑此页",lastUpdated:"上次更新",nav:[{text:"指南",link:"/zh/guide/"},{text:"数据库",link:"/zh/db/"},{text:"操作系统",link:"/zh/os/"},{text:"编程语言",link:"/zh/program/"},{text:"分布式设计",link:"/zh/distributed/"},{text:"DevOPS",link:"/zh/devops/"},{text:"通用基础",ariaLabel:"通用基础",items:[{text:"算法 & 数据结构",items:[{text:"数据结构",link:"/zh/structures-algorithm/structures.html"},{text:"基本算法",link:"/zh/structures-algorithm/algorithm.html"},{text:"Leetcode",link:"/zh/leetcode/"}]},{text:"网络安全",items:[{text:"WEB 安全",link:"/zh/structures-algorithm/structures.html"},{text:"服务器安全",link:"/zh/structures-algorithm/algorithm.html"},{text:"序列化漏洞",link:"/zh/structures-algorithm/algorithm.html"},{text:"加密解密",link:"/zh/structures-algorithm/algorithm.html"},{text:"网络隔离",link:"/zh/structures-algorithm/algorithm.html"}]},{text:"设计思路",items:[{text:"并发问题",link:"/zh/structures-algorithm/structures.html"},{text:"限流熔断",link:"/zh/structures-algorithm/algorithm.html"},{text:"海量搜索",link:"/zh/structures-algorithm/algorithm.html"}]}]}],sidebar:{"/zh/guide/":[{title:"指南",collapsable:!1,children:[""]}],"/zh/db/":[{title:"关系型数据库",collapsable:!1,children:["mysql","postgreSQL"]},{title:"键-值数据库",collapsable:!1,children:["redis"]},{title:"列数据库",collapsable:!1,children:["hbase","clickhouse"]},{title:"文档型数据库",collapsable:!1,children:["mongodb"]},{title:"图数据库",collapsable:!1,children:["neo4j"]}],"/zh/os/":[{title:"操作系统",collapsable:!1,children:["io","cpu","thread","coroutines","process"]},{title:"计算机原理",collapsable:!1,children:["linux"]}],"/zh/program/":[{title:"解释型语言",collapsable:!1,children:["php","python","javascript"]},{title:"编译型语言",collapsable:!1,children:["golang","c"]}]}},"/en":{label:"English",selectText:"Languages",ariaLabel:"Select language",editLinkText:"Edit this page on GitHub",lastUpdated:"Last Updated",nav:[{text:"Guide",link:"/guide/"},{text:"Config Reference",link:"/config/"},{text:"Plugin",link:"/plugin/"},{text:"Theme",link:"/theme/"},{text:"0.x",link:"https://v0.vuepress.vuejs.org/"}],sidebar:{}}}},locales:{"/":{lang:"zh-CN",title:"笃行",description:"笃行致远,不负芳华",path:"/"},"/en/":{lang:"English",title:"Practice",description:"The back-end architects self practice",path:"/en/"}}};function he(t){var e=document.createElement("link");e.href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css",e.rel="stylesheet",document.body.appendChild(e);var n=document.createElement("script");function r(t){var e=document.getElementById("gitalk-container");e||((e=document.createElement("div")).id="gitalk-container",e.classList.add("content"));var n=document.querySelector(".page-nav");n&&(n.appendChild(e),"undefined"!=typeof Gitalk&&Gitalk instanceof Function&&(t.fullPath,new Gitalk({clientID:"5e01d05713fb81675776",clientSecret:"599d38643f2c2fb15438c137f345a03fcb244b50",repo:"practice",owner:"m9rco",admin:["m9rco"],id:location.pathname,distractionFreeMode:!1,language:"zh-CN"}).render("gitalk-container")))}n.src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js",document.body.appendChild(n),t.afterEach((function(t){n.onload?r(t):n.onload=function(){r(t)}}))}n(98);r.a.component("Bit",(function(){return Promise.all([n.e(0),n.e(6)]).then(n.bind(null,285))})),r.a.component("Comment",(function(){return n.e(11).then(n.bind(null,256))})),r.a.component("OtherComponent",(function(){return n.e(13).then(n.bind(null,286))})),r.a.component("UpgradePath",(function(){return Promise.all([n.e(0),n.e(7)]).then(n.bind(null,287))})),r.a.component("demo-1",(function(){return n.e(14).then(n.bind(null,257))})),r.a.component("diagram-markdown-slot-relationship",(function(){return n.e(15).then(n.bind(null,288))})),r.a.component("svg-container",(function(){return Promise.all([n.e(0),n.e(8)]).then(n.bind(null,289))})),r.a.component("Foo-Bar",(function(){return n.e(12).then(n.bind(null,258))})),r.a.component("Badge",(function(){return Promise.all([n.e(0),n.e(10)]).then(n.bind(null,290))}));n(99),n(100);function ve(t){const e=document.documentElement.getBoundingClientRect(),n=t.getBoundingClientRect();return{x:n.left-e.left,y:n.top-e.top}}n(101);var me={name:"BackToTop",props:{threshold:{type:Number,default:300}},data:function(){return{scrollTop:null}},computed:{show:function(){return this.scrollTop>this.threshold}},mounted:function(){var t=this;this.scrollTop=this.getScrollTop(),window.addEventListener("scroll",qt()((function(){t.scrollTop=t.getScrollTop()}),100))},methods:{getScrollTop:function(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},scrollToTop:function(){window.scrollTo({top:0,behavior:"smooth"}),this.scrollTop=0}}},ye=(n(110),Object(le.a)(me,(function(){var t=this.$createElement,e=this._self._c||t;return e("transition",{attrs:{name:"fade"}},[this.show?e("svg",{staticClass:"go-to-top",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 49.484 28.284"},on:{click:this.scrollToTop}},[e("g",{attrs:{transform:"translate(-229 -126.358)"}},[e("rect",{attrs:{fill:"currentColor",width:"35",height:"5",rx:"2",transform:"translate(229 151.107) rotate(-45)"}}),this._v(" "),e("rect",{attrs:{fill:"currentColor",width:"35",height:"5",rx:"2",transform:"translate(274.949 154.642) rotate(-135)"}})])]):this._e()])}),[],!1,null,"5fd4ef0c",null).exports);function ge(t,e){void 0===e&&(e={});var n=e.registrationOptions;void 0===n&&(n={}),delete e.registrationOptions;var r=function(t){for(var n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];e&&e[t]&&e[t].apply(e,n)};"serviceWorker"in navigator&&window.addEventListener("load",(function(){Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))?(!function(t,e,n){fetch(t).then((function(r){404===r.status?(e("error",new Error("Service worker not found at "+t)),_e()):-1===r.headers.get("content-type").indexOf("javascript")?(e("error",new Error("Expected "+t+" to have javascript content-type, but received "+r.headers.get("content-type"))),_e()):be(t,e,n)})).catch((function(t){navigator.onLine?e("error",t):e("offline")}))}(t,r,n),navigator.serviceWorker.ready.then((function(t){r("ready",t)}))):be(t,r,n)}))}function be(t,e,n){navigator.serviceWorker.register(t,n).then((function(t){e("registered",t),t.waiting?e("updated",t):t.onupdatefound=function(){e("updatefound",t);var n=t.installing;n.onstatechange=function(){"installed"===n.state&&(navigator.serviceWorker.controller?e("updated",t):e("cached",t))}}})).catch((function(t){e("error",t)}))}function _e(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(t){t.unregister()}))}class we{constructor(t){Object.defineProperty(this,"registration",{value:t,configurable:!0,writable:!0})}update(){return this.registration.update()}skipWaiting(){const t=this.registration.waiting;return t?(console.log("[vuepress:sw] Doing worker.skipWaiting()."),new Promise((e,n)=>{const r=new MessageChannel;r.port1.onmessage=t=>{console.log("[vuepress:sw] Done worker.skipWaiting()."),t.data.error?n(t.data.error):e(t.data)},t.postMessage({type:"skip-waiting"},[r.port2])})):Promise.resolve()}}var xe=n(12);r.a.component("SWUpdatePopup",()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,254)));var Oe=n(77),ke=(n(81),n(91),Object(le.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticStyle:{"enable-background":"new 0 0 50 50"},attrs:{xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 30 30"}},[e("rect",{attrs:{x:"0",y:"13",width:"4",height:"5"}},[e("animate",{attrs:{attributeName:"height",attributeType:"XML",values:"5;21;5",begin:"0s",dur:"0.6s",repeatCount:"indefinite"}}),this._v(" "),e("animate",{attrs:{attributeName:"y",attributeType:"XML",values:"13; 5; 13",begin:"0s",dur:"0.6s",repeatCount:"indefinite"}})]),this._v(" "),e("rect",{attrs:{x:"10",y:"13",width:"4",height:"5"}},[e("animate",{attrs:{attributeName:"height",attributeType:"XML",values:"5;21;5",begin:"0.15s",dur:"0.6s",repeatCount:"indefinite"}}),this._v(" "),e("animate",{attrs:{attributeName:"y",attributeType:"XML",values:"13; 5; 13",begin:"0.15s",dur:"0.6s",repeatCount:"indefinite"}})]),this._v(" "),e("rect",{attrs:{x:"20",y:"13",width:"4",height:"5"}},[e("animate",{attrs:{attributeName:"height",attributeType:"XML",values:"5;21;5",begin:"0.3s",dur:"0.6s",repeatCount:"indefinite"}}),this._v(" "),e("animate",{attrs:{attributeName:"y",attributeType:"XML",values:"13; 5; 13",begin:"0.3s",dur:"0.6s",repeatCount:"indefinite"}})])])}),[],!1,null,null,null).exports),Ce={x:0,y:0,"line-width":2,"line-length":50,"text-margin":10,"font-size":14,"font-color":"#8DA1AC","line-color":"#8DA1AC","element-color":"black",fill:"white","yes-text":"yes","no-text":"no","arrow-end":"block",scale:1},Se={ant:Object.assign({},Ce,{symbols:{start:{class:"start-element","font-color":"white",fill:"#595959","line-width":"0px"},end:{class:"end-element","font-color":"white",fill:"#595959","line-width":"0px"},operation:{class:"operation-element","font-color":"white",fill:"#1890ff","line-width":"0px"},inputoutput:{class:"inputoutput-element","font-color":"white",fill:"#1890ff","line-width":"0px"},subroutine:{class:"subroutine-element","font-color":"white",fill:"#FF485E","element-color":"#fff","line-color":"red"},condition:{class:"condition-element","font-color":"white",fill:"#FF485E","line-width":"0px"},parallel:{class:"parallel-element","font-color":"white",fill:"#1890ff","line-width":"0px"}}}),vue:Object.assign({},Ce,{symbols:{start:{class:"start-element","font-color":"white",fill:"#2F495F","line-width":"0px"},end:{class:"end-element","font-color":"white",fill:"#2F495F","line-width":"0px"},operation:{class:"operation-element","font-color":"white",fill:"#00BC7D","line-width":"0px"},inputoutput:{class:"inputoutput-element","font-color":"white",fill:"#EB4D5D","line-width":"0px"},subroutine:{class:"subroutine-element","font-color":"white",fill:"#937AC4","element-color":"#fff","line-color":"red"},condition:{class:"condition-element","font-color":"white",fill:"#FFB500","line-width":"0px"},parallel:{class:"parallel-element","font-color":"white",fill:"#2F495F","line-width":"0px"}}})},Ee={name:"flowchart",components:{Loading:ke},props:{id:{type:String,required:!0},code:{type:String,required:!0},preset:{type:String,default:"vue"}},data:function(){return{loading:!0}},mounted:function(){var t=this,e=Se[this.preset];if(e){var r=this.code;this.$el.setAttribute("id",this.id);Promise.all([n.e(3).then(n.t.bind(null,250,7)),new Promise((function(t){return setTimeout(t,500)}))]).then((function(n){(0,Object(Oe.a)(n,1)[0].default.parse)(r).drawSVG(t.id,e),t.loading=!1}))}else console.warn("[vuepress-plugin-flowchart] Unknown preset: ".concat(this.preset))}},Ae=(n(140),Object(le.a)(Ee,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"vuepress-flowchart",class:{loading:this.loading}},[this.loading?e("Loading",{staticClass:"vuepress-flowchart-loading-icon"}):this._e()],1)}),[],!1,null,null,null).exports),$e=[function(t){var e=t.Vue,r=t.isServer,o=t.router;try{document&&he(o)}catch(t){console.error(t.message)}r||n.e(4).then(n.t.bind(null,249,7)).then((function(t){e.use(t.default)}))},{},function(t){t.Vue.mixin({computed:{$dataBlock:function(){return this.$options.__data__block__}}})},{},{},({Vue:t,router:e})=>{e.options.scrollBehavior=(e,n,r)=>{if(r)return window.scrollTo({top:r.y,behavior:"smooth"});if(e.hash){if(t.$vuepress.$get("disableScrollBehavior"))return!1;const n=document.querySelector(e.hash);return!!n&&window.scrollTo({top:ve(n).y,behavior:"smooth"})}return window.scrollTo({top:0,behavior:"smooth"})}},({Vue:t})=>{t.component("BackToTop",ye)},({router:t,isServer:e})=>{t.onReady(()=>{e||ge("/service-worker.js",{registrationOptions:{},ready(){console.log("[vuepress:sw] Service worker is active."),xe.a.$emit("sw-ready")},cached(t){console.log("[vuepress:sw] Content has been cached for offline use."),xe.a.$emit("sw-cached",new we(t))},updated(t){console.log("[vuepress:sw] Content updated."),xe.a.$emit("sw-updated",new we(t))},offline(){console.log("[vuepress:sw] No internet connection found. App is running in offline mode."),xe.a.$emit("sw-offline")},error(t){console.error("[vuepress:sw] Error during service worker registration:",t),xe.a.$emit("sw-error",t),ga("send","exception",{exDescription:t.message,exFatal:!1})}})})},({router:t})=>{var e,n,r,o,i,a;"undefined"!=typeof window&&(e=window,n=document,r="script",o="ga",e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,i=n.createElement(r),a=n.getElementsByTagName(r)[0],i.async=1,i.src="https://www.google-analytics.com/analytics.js",a.parentNode.insertBefore(i,a),ga("create","UA-158536766-1","auto"),ga("set","anonymizeIp",!0),t.afterEach((function(t){ga("set","page",t.fullPath),ga("send","pageview")})))},function(t){const{Vue:e}=t;e.component("FlowChart",Ae)}],je=["BackToTop"];n(141),n(93),n(95);var Te=n(80),ze=n.n(Te);function Pe(t,e){for(var n=0;nt.path.toLowerCase()===e.toLowerCase()).length>0}var Re={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return Object(Ut.h)("pageKey",e),r.a.component(e)||r.a.component(e,Object(Ut.d)(e)),r.a.component(e)?t(e):t("")}},Ne={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:[`content__${e.slotKey}`]},n()[e.slotKey])},De=(n(146),Object(le.a)({},(function(t,e){var n=e._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),e._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])}),[],!0,null,null,null).exports),Fe={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};r.a.config.productionTip=!1,r.a.use(Ft),r.a.use(Me),r.a.mixin(function(t,e,n=r.a){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const o=new(t(n.$vuepress.$get("siteData"))),i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((t,e)=>(e.startsWith("$")&&(t[e]=i[e].get),t),a),{computed:a}}((function(t){return function(){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e)}var n,r,o;return n=e,(r=[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var o in r)"/"===o?e=r[o]:0===this.$page.path.indexOf(o)&&(t=r[o]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||""}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;nn||(t.hash?!r.a.$vuepress.$get("disableScrollBehavior")&&{selector:t.hash}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(Ie(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Ie(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Ie(t,o)?r(o):Ie(t,n)?r(n):r()}})}(n);const o={};try{$e.forEach(e=>{"function"==typeof e&&e({Vue:r.a,options:o,router:n,siteData:de,isServer:t})})}catch(t){console.error(t)}return{app:new r.a(Object.assign(o,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},je.map(e=>t(e)))])})),router:n}}(!1);window.__VUEPRESS__={version:"1.3.0",hash:"29055b8"},Be.onReady(()=>{Ue.$mount("#app")})}]); \ No newline at end of file diff --git a/db/postgresql/postgresql-01.png b/db/postgresql/postgresql-01.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ee2964be4c9222b5a18d9eefc47c646f43aeee GIT binary patch literal 5429 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�OJI%gO8-N3mk+OqP;1snC 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%0A}SQJVqZG|^IudvPm(V?}K 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 - + @@ -119,6 +119,6 @@

- + diff --git a/service-worker.js b/service-worker.js index f572970..31a98c8 100644 --- a/service-worker.js +++ b/service-worker.js @@ -27,7 +27,7 @@ self.addEventListener('message', (event) => { self.__precacheManifest = [ { "url": "404.html", - "revision": "0bc59f6271a35919e8fd4a3c027c8a55" + "revision": "4b49a7a628f51024ae26e3716431f6aa" }, { "url": "architecture.png", @@ -78,8 +78,8 @@ self.__precacheManifest = [ "revision": "ec3ac35925e27c05249678dae39f399e" }, { - "url": "assets/js/19.1f71a0e2.js", - "revision": "e66eb3b1e4c4cb6a3979639feabef19e" + "url": "assets/js/19.2aa38084.js", + "revision": "d569ff51a63f3059ebdeb41ad83b584d" }, { "url": "assets/js/20.0a44368a.js", @@ -102,8 +102,8 @@ self.__precacheManifest = [ "revision": "56df2757105168d6989f41af98dd0f49" }, { - "url": "assets/js/25.e734f04f.js", - "revision": "daa557ff7488ec00d5fd9c84f6b64358" + "url": "assets/js/25.9165907b.js", + "revision": "cbdb1a9c20e0c65e46931ef7c746c828" }, { "url": "assets/js/26.0c6371a4.js", @@ -198,8 +198,8 @@ self.__precacheManifest = [ "revision": "c1f319c99acdf47265e5e17c04b1c431" }, { - "url": "assets/js/app.58b94fd8.js", - "revision": "4e1107a31cafade314c8427182da0f02" + "url": "assets/js/app.317b3400.js", + "revision": "d30ffa44ce4db023da63a84aeeb60048" }, { "url": "assets/js/vendors~docsearch.87ae9561.js", @@ -241,6 +241,14 @@ self.__precacheManifest = [ "url": "db/mysql/mysql-07.jpg", "revision": "416a1b17f4bc9055db554500393f6e2c" }, + { + "url": "db/postgresql/postgresql-01.png", + "revision": "67635cd276286d0b14aa3917466ec08f" + }, + { + "url": "db/postgresql/postgresql-02.png", + "revision": "ac0a50769fd3d8ee4cec55d9a8a71ce2" + }, { "url": "hero.png", "revision": "a77336361b60cc149e9ace8b8b4b0e0f" @@ -299,7 +307,7 @@ self.__precacheManifest = [ }, { "url": "index.html", - "revision": "34cbc30053164906b6aeaa459bbfe5c8" + "revision": "465af8e5411f931a505507612ba027b6" }, { "url": "line-numbers-desktop.png", @@ -383,103 +391,103 @@ self.__precacheManifest = [ }, { "url": "zh/db/clickhouse.html", - "revision": "cacefa1586ffcc3eba61a471a81dbcd3" + "revision": "0b719590fff4f7f9a313542fe97cbd2a" }, { "url": "zh/db/hbase.html", - "revision": "8fb68528b4e984da9482d1b035dfc432" + "revision": "70aa429513f9de8477590f63687295fd" }, { "url": "zh/db/index.html", - "revision": "d3ca30e9753d5c52935731adac1d46ca" + "revision": "1313119f0bc34f206e0e8558042c00ca" }, { "url": "zh/db/mongodb.html", - "revision": "05e8896fac09defd6ee260a6bc3c54e0" + "revision": "6abc2468d6089a7fcd9d779f21c42bc4" }, { "url": "zh/db/mysql.html", - "revision": "f21f91a9da7c988154d71f4da66739ec" + "revision": "733e55d8ee6e551259902f6ca983ccaa" }, { "url": "zh/db/neo4j.html", - "revision": "eecd96852e59f5432d658279415ba3e7" + "revision": "28a0e9e42d7f1e3bd0f524fcc95ad34b" }, { "url": "zh/db/postgreSQL.html", - "revision": "a2747e2dfe7be1d6844f0ddba3c32edc" + "revision": "1e052f09686d7d4422c833ccca3bb377" }, { "url": "zh/db/redis.html", - "revision": "81ba66d1177193625a855059fddea266" + "revision": "e1b318ca2bc8176baf6789e16ae3df26" }, { "url": "zh/devops/index.html", - "revision": "7eb109df22de9c8701f57d911cc1bc84" + "revision": "316c5fc5e74f9d05e47afe3918524cd1" }, { "url": "zh/distributed/index.html", - "revision": "ff3e5c5440f670e5496c708c98136cd9" + "revision": "fe09771504970e3f4db9d46447107df4" }, { "url": "zh/guide/index.html", - "revision": "f6a36567f90e2c433a53bbd30d0e5d62" + "revision": "2249f3a2bc9937f71ada603299dbeee7" }, { "url": "zh/index.html", - "revision": "83b3d8b931dfe27d1f64abd53a62a8ee" + "revision": "ccdd9d59a4793605d90d7258c1446599" }, { "url": "zh/os/coroutines.html", - "revision": "7610b1e9024beb045c0b379ebebf4813" + "revision": "49c674a49b5f49eed0fb7d0888a43058" }, { "url": "zh/os/cpu.html", - "revision": "d3b93d8d3c154cc6636ba39375f5bf79" + "revision": "39d7ef8a295621a637f4569c55338de8" }, { "url": "zh/os/index.html", - "revision": "b0c0c48566d4c7b4ba1b4f296daf1c9e" + "revision": "3db5cf3ff66ede35418e431285ad4211" }, { "url": "zh/os/io.html", - "revision": "946e3bd876f6f9d834e370ee730724cc" + "revision": "f07bf4849a35274a59a708781d25cff7" }, { "url": "zh/os/linux.html", - "revision": "7c1181da14d3a8ff39a9ec26dfc5b177" + "revision": "1951a3d409aa5883ea4633ee63b04b0a" }, { "url": "zh/os/process.html", - "revision": "ffb2a7e62c92eb3ea914d02363188d37" + "revision": "0975225c059c8e742797ee1c28d07dd4" }, { "url": "zh/os/thread.html", - "revision": "800cba2b1d4ccfcf5da6b7e757865a4c" + "revision": "f4e7160861559b43c52241264df98f06" }, { "url": "zh/program/c.html", - "revision": "1ac1075131d06c2b7dddc9558634195c" + "revision": "0936a914faabe5a63e0259caa89110d5" }, { "url": "zh/program/golang.html", - "revision": "93d4f57180c3ac37762046d38fcc5b78" + "revision": "6661e04edebf9636fbc1addc7da8dd84" }, { "url": "zh/program/index.html", - "revision": "482d5844e17e798b842c2d6ebb1bc2ca" + "revision": "3bc8f310ed7623f28b714a46d483c986" }, { "url": "zh/program/javascript.html", - "revision": "931b3a3b15cf24e2b4cb4c5c28c6f4e6" + "revision": "497e6f99fbe1bba3d9949b3ca7ab9bb9" }, { "url": "zh/program/php.html", - "revision": "11750cf08ee5f39c37047ece72e583d7" + "revision": "cd812ebe292061b854804f9c981741e9" }, { "url": "zh/program/python.html", - "revision": "87347787ffa0cd62306e4e09ba49bc66" + "revision": "ed19a0f38f5e63c3c9d7c8a0a6b917bc" } ].concat(self.__precacheManifest || []); workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); diff --git a/zh/db/clickhouse.html b/zh/db/clickhouse.html index 3caf863..ff1b744 100644 --- a/zh/db/clickhouse.html +++ b/zh/db/clickhouse.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@

- + diff --git a/zh/db/hbase.html b/zh/db/hbase.html index bb9680e..d4ebc56 100644 --- a/zh/db/hbase.html +++ b/zh/db/hbase.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/db/index.html b/zh/db/index.html index 30413e2..b73265d 100644 --- a/zh/db/index.html +++ b/zh/db/index.html @@ -16,7 +16,7 @@ - + @@ -112,7 +112,7 @@ English GitHub -

# 数据库 🔎

数据库不是凭空产生的,它们是为了解决实际使用中提出的问题,在RDBMS(关系数据库管理系统)出现的环境中,数据库插叙你的灵活性比灵活的模式更重要

# 数据库概述

本节包含了9种数据库的信息

MongoDB counchDB Riak Redis PostgreSQL Neo4J HBase Mysql Clickhouse
类型 文档 文档 键-值 键-值 关系 关系
数据类型 有类型 有类型 Blob 半类型 预定义且有类型 无类型 预定义且有类型
数据关系 自由定义的(链接) 预定义 预定义的(边)
标准对象 JSON JSON 文本 字符串 哈希
编写语言 C++ Erlang Erlang C/C++ C JAVA JAVA
接口协议 TCP上自定义 HTTP HTTP-Protobuf TCP上的简单文本 TCP上自定义 HTTP Thrift-HTTP
HTTP/REST
二级索引
版本化
Build Load mongoimport Bulk Doc API COPY命令
非常大的文件 GridFS 附件 Luwak(已弃用) BLOB
自由定义的查询 命令mapreduce 临时视图 弱支持Lucene 命令 SQL 图遍历,Cypher,搜索
mapreduce JavaScript JavaScript JavaScript,Erlang Hadoop
伸缩性 数据中心 数据中心 数据中心 集群(主-从) 集群(通过一些扩展) 集群(通过HA) 数据中心
耐久性 写前日志安全模式 只在崩溃时 写入法定数则耐久 仅追加的日志 ACID ACID 写前日志
请求压缩 文件重写 快照
复制 主-从(通过复集) 主-主 基于对等主-主 主-从 主-从 主-从(在企业版中) 主-从
并发 写锁 无锁的MVCC 向量锁 表/行写锁 写锁 每行一段
分片 锁(通过BigCouch过滤器) 插件(客户端) 扩展(PL/Proxy) 通过HDFS
事务 多操作队列 ACID ACID
触发器 更新验证或改变API 提交前后 事物事件处理程序
安全性 用户 用户 口令 用户/群 Kerberos,通过Hadoop的安全性
一主机多实例
主要区别 容易查询大量数据 耐久的可嵌入的集群 高可用性 非常非常快 最好的OSS RDBMS模型 灵活的图 规模非常大,Hadoop基础设施
不足 嵌入能力 查询能力 查询能力 负责数据 分布式高可用性 Blob或TB级数据 灵活增长查询能力

# 附录

- +

# 数据库 🔎

数据库不是凭空产生的,它们是为了解决实际使用中提出的问题,在RDBMS(关系数据库管理系统)出现的环境中,数据库插叙你的灵活性比灵活的模式更重要

# 数据库概述

本节包含了9种数据库的信息

MongoDB counchDB Riak Redis PostgreSQL Neo4J HBase Mysql Clickhouse
类型 文档 文档 键-值 键-值 关系 关系
数据类型 有类型 有类型 Blob 半类型 预定义且有类型 无类型 预定义且有类型
数据关系 自由定义的(链接) 预定义 预定义的(边)
标准对象 JSON JSON 文本 字符串 哈希
编写语言 C++ Erlang Erlang C/C++ C JAVA JAVA
接口协议 TCP上自定义 HTTP HTTP-Protobuf TCP上的简单文本 TCP上自定义 HTTP Thrift-HTTP
HTTP/REST
二级索引
版本化
Build Load mongoimport Bulk Doc API COPY命令
非常大的文件 GridFS 附件 Luwak(已弃用) BLOB
自由定义的查询 命令mapreduce 临时视图 弱支持Lucene 命令 SQL 图遍历,Cypher,搜索
mapreduce JavaScript JavaScript JavaScript,Erlang Hadoop
伸缩性 数据中心 数据中心 数据中心 集群(主-从) 集群(通过一些扩展) 集群(通过HA) 数据中心
耐久性 写前日志安全模式 只在崩溃时 写入法定数则耐久 仅追加的日志 ACID ACID 写前日志
请求压缩 文件重写 快照
复制 主-从(通过复集) 主-主 基于对等主-主 主-从 主-从 主-从(在企业版中) 主-从
并发 写锁 无锁的MVCC 向量锁 表/行写锁 写锁 每行一段
分片 锁(通过BigCouch过滤器) 插件(客户端) 扩展(PL/Proxy) 通过HDFS
事务 多操作队列 ACID ACID
触发器 更新验证或改变API 提交前后 事物事件处理程序
安全性 用户 用户 口令 用户/群 Kerberos,通过Hadoop的安全性
一主机多实例
主要区别 容易查询大量数据 耐久的可嵌入的集群 高可用性 非常非常快 最好的OSS RDBMS模型 灵活的图 规模非常大,Hadoop基础设施
不足 嵌入能力 查询能力 查询能力 负责数据 分布式高可用性 Blob或TB级数据 灵活增长查询能力

# 附录

+ diff --git a/zh/db/mongodb.html b/zh/db/mongodb.html index 04e306d..a027a71 100644 --- a/zh/db/mongodb.html +++ b/zh/db/mongodb.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/db/mysql.html b/zh/db/mysql.html index 872f33b..475e500 100644 --- a/zh/db/mysql.html +++ b/zh/db/mysql.html @@ -16,7 +16,7 @@ - + @@ -141,6 +141,6 @@ →

- + diff --git a/zh/db/neo4j.html b/zh/db/neo4j.html index 24db032..d5f1357 100644 --- a/zh/db/neo4j.html +++ b/zh/db/neo4j.html @@ -16,7 +16,7 @@ - + @@ -117,6 +117,6 @@

- + diff --git a/zh/db/postgreSQL.html b/zh/db/postgreSQL.html index 2922575..26ac5f0 100644 --- a/zh/db/postgreSQL.html +++ b/zh/db/postgreSQL.html @@ -16,7 +16,7 @@ - + @@ -112,7 +112,34 @@ English GitHub -

# PostgreSQL

- + diff --git a/zh/db/redis.html b/zh/db/redis.html index d8129d5..899b9a6 100644 --- a/zh/db/redis.html +++ b/zh/db/redis.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/devops/index.html b/zh/devops/index.html index 72d5fcd..8686f5e 100644 --- a/zh/devops/index.html +++ b/zh/devops/index.html @@ -16,7 +16,7 @@ - + @@ -113,6 +113,6 @@ GitHub

README.md

- + diff --git a/zh/distributed/index.html b/zh/distributed/index.html index 1fc9140..0ebeaaf 100644 --- a/zh/distributed/index.html +++ b/zh/distributed/index.html @@ -16,7 +16,7 @@ - + @@ -113,6 +113,6 @@ GitHub

README.md

- + diff --git a/zh/guide/index.html b/zh/guide/index.html index 4939eff..880741c 100644 --- a/zh/guide/index.html +++ b/zh/guide/index.html @@ -16,7 +16,7 @@ - + @@ -113,6 +113,6 @@ GitHub

# 要怎样努力,才能成为很厉害的人

foo

我以前啊,和你一样,很想成为一个很厉害很厉害很厉害的人。

喜欢看热血的东西,幻想自己是屠龙的勇士,登塔的先锋,我左手有剑,右手有光,没头没脑的燃烧自己,敌人的骑军来了,我说你们何人堪与之战,我的女人在等我。

后来我现实了一点,我觉得我要成为那种说走就走,说日就日的男人,我梳大背头,流浪在欧洲或者新几内亚的,我拍孩子,拍野兽,拍流浪的雏妓,与罗伯特德尼罗握手,说嘿,我给你写了愤怒的公牛2。

再后来,我觉得我人生的梦想,是在城市中心买上一间顶层公寓,把一整面墙都改造成钢化玻璃,在灯火通明的夜晚,我就要端着酒站在巨大的窗前,看整个城市在呼吸,然后我的朋友叩门,他带来了一打嫩模,我们就玩一些成年人的游戏

现在,我发现龙并不存在,我不会骑马,不会用单反,家住2楼,我能做的,就是把眼前的事儿做好,赚到足够的钱,这样我可以给我的姑娘一个地球仪,然后用飞镖扎它,扎到哪儿,就去哪儿玩。

这样看来,虽然我的想法随着生殖器的发育,始终在变,但那个很厉害很厉害的人,一直离我很远,甚至越来越远。

我心中曾经执剑的少年,此刻也混迹在市井之间。

血似乎都凉了。

我也不是没有惶恐过,是不是我这一生,都不能左手持剑,右手握着罗伯特德尼罗,说这里的嫩模随便你玩但是你他妈别从窗户上掉下去。

这样一看,我逊得不行,我的朋友都是一些凡人,比我还逊,业余生活就是推塔、中单、跪。

我心想,我是不是这辈子都要做一个逊逼,直到我的坟墓上写好墓志铭,我甚至都想好了:

我来,我见,我挂了。

最后我给了自己一个否定的答复,我不要。

我喜欢我的朋友们,喜欢我现在的生活,首先我希望你明白,没有厉害与逊逼得区分,只有血的凉与热,有的人觉得生活就这样吧,我算了,现在没什么不好。

有的人觉得生活这样挺好,但是我还要更好。

这种只要剧情稍微热血一点就会热泪盈眶的傻逼,已经不多了,一刻也不要停留。

所以现在,我和你不一样了,我仍然想成为一个很厉害很厉害很厉害的人,像我们这种剧情稍微热血一点就会热泪盈眶的傻逼,要好好珍惜自己。

很多人坐下来了,跟你说你不行,说你省点儿心吧,说你请静一静。

汹涌的人群就把你这样的少年淹没了,人群散去的时候,你也不见了,你那些承诺,谁也听不见,这个世界对于你,就再不可能有什么更有趣更漂亮的女朋友。

你就失约了,小逼崽子。

这么跟你说。

虽然随着年龄的增长,我趋于现实,不能像你那样分分钟冲动的燃烧,然而我每时每刻都有想做的事,有想达成的目标。

不排除以后的某一年,我会握着罗伯特德尼罗的手,他说这是你写得吗,愤怒的公牛2,只要他还没死。

故事里拳王拉莫塔忍着伤,他举着铁拳,挥汗如雨,要和命运斗争,他说我怎么能失约呢,我是那个要成为很厉害很厉害的拳王拉莫塔!

小伙儿,成为很厉害很厉害的人,最重要的,就是要热血,永远也不要让你的血凉下去,你凉下去了,就再也不能找到一个更有趣更漂亮的女友,你就失约了,于是那天她踏梦而来,就成了一个彻头彻尾的笑话。

当有一天你成为你讨厌的那种人,浑浑噩噩,你走在街上,看见那些更有趣更漂亮的女孩,你会不会想起多年以前,你说我答应你,在一个承诺就是永远的年纪。

读书,交友,美容,都不如你这一腔狗血,滚烫,灼人,你要燃上大半辈子,才对得起你现在说的这些话。

我听闻最美的故事,是公主死去了,屠龙的少年还在燃烧。

火苗再小,你都要反复的点燃。

所谓热血的少年,青涩的爱恋,死亡与梦之约。

这么好的故事。

你可别演砸了。

最后我给你点个人建议:

  1. 读书,读到倦,网上有很多方法,但你从来沉不下心看。
  2. 学习,学到疼,网上有很多方法,但你从来沉不下心看。
  3. 开口说话,冷场也要说话,脸皮薄也要说话,挨打也要说话。
  4. 如果你现在不知道做什么,至少你还可以先从做一个牛逼的学生开始。
  5. 更漂亮更有趣的女孩,五年以后再找。
  6. 承诺是鞭子,不是兴奋剂。
  7. 年纪大了,也不要说什么心如死灰。

改变自己是非常,非常,非常痛苦的,我能看出来你一腔热血的优点,自然知道你孤僻懒散自以为是的缺点,方法很多,不过我不确定你吃不吃得了苦,我和你共勉吧。

在成为最厉害最厉害最厉害的道路上。

- + diff --git a/zh/index.html b/zh/index.html index 284bddd..674bed1 100644 --- a/zh/index.html +++ b/zh/index.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@

简洁至上

以 Markdown 为中心的项目结构,以最少的配置帮助你专注于写作。

- + diff --git a/zh/os/coroutines.html b/zh/os/coroutines.html index e7ca15a..dec0caa 100644 --- a/zh/os/coroutines.html +++ b/zh/os/coroutines.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/os/cpu.html b/zh/os/cpu.html index 516d7c4..b912f1a 100644 --- a/zh/os/cpu.html +++ b/zh/os/cpu.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/os/index.html b/zh/os/index.html index c1ea73e..85c6abe 100644 --- a/zh/os/index.html +++ b/zh/os/index.html @@ -16,7 +16,7 @@ - + @@ -113,6 +113,6 @@ GitHub

# 操作系统

- + diff --git a/zh/os/io.html b/zh/os/io.html index 59036b6..8e9076e 100644 --- a/zh/os/io.html +++ b/zh/os/io.html @@ -16,7 +16,7 @@ - + @@ -279,6 +279,6 @@ →

- + diff --git a/zh/os/linux.html b/zh/os/linux.html index 1875ad7..f6cebd4 100644 --- a/zh/os/linux.html +++ b/zh/os/linux.html @@ -16,7 +16,7 @@ - + @@ -117,6 +117,6 @@

- + diff --git a/zh/os/process.html b/zh/os/process.html index 293e5d8..f35ae8b 100644 --- a/zh/os/process.html +++ b/zh/os/process.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/os/thread.html b/zh/os/thread.html index 19c413c..e05ec0a 100644 --- a/zh/os/thread.html +++ b/zh/os/thread.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/program/c.html b/zh/program/c.html index a637679..d40b744 100644 --- a/zh/program/c.html +++ b/zh/program/c.html @@ -16,7 +16,7 @@ - + @@ -117,6 +117,6 @@

- + diff --git a/zh/program/golang.html b/zh/program/golang.html index c81687c..8f85cfa 100644 --- a/zh/program/golang.html +++ b/zh/program/golang.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/program/index.html b/zh/program/index.html index f953575..da28819 100644 --- a/zh/program/index.html +++ b/zh/program/index.html @@ -16,7 +16,7 @@ - + @@ -129,6 +129,6 @@ 中间码依赖jvm,而不依赖于平台(操作系统),只要jvm支持中间码,中间就能运行,不同平台的兼容性,就由jvm来解决,开发者可以专注于开发业务逻辑,这解决了编译语言的跨平台问题。

但如果你代码发生了改变,仍然需要再次编译。

# 完全解释

PHP是完全解释,它一次编译都省了,直接由解释器加载源代码,就开始逐行翻译并运行。 那么,调试程序的时候,更改代码就能直接再次运行,不存在编译的步骤,它在跨平台的基础上,又为开发调试提供了便利。 但这不一定是好事,这将导致php每一次运行,都需要先解释,再执行,运行效率上比不上java的直接由jvm运行中间码。

当然,java半编译半解释,虽然通过jvm解决了跨平台问题,但运行效率上,也是比不上编译型语言的,因为编译型语言开发的程序运行时,计算机只需要关注程序本身的流程就好了,但java,jvm也是对计算机资源的一种开销,不过这种开销非常小,几乎可以忽略。

- + diff --git a/zh/program/javascript.html b/zh/program/javascript.html index c2e8217..b8ebdf8 100644 --- a/zh/program/javascript.html +++ b/zh/program/javascript.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/zh/program/php.html b/zh/program/php.html index f7521ad..11a9e60 100644 --- a/zh/program/php.html +++ b/zh/program/php.html @@ -16,7 +16,7 @@ - + @@ -345,6 +345,6 @@ →

- + diff --git a/zh/program/python.html b/zh/program/python.html index cf4b77a..c620bda 100644 --- a/zh/program/python.html +++ b/zh/program/python.html @@ -16,7 +16,7 @@ - + @@ -121,6 +121,6 @@ →

- +