Blog icon indicating copy to clipboard operation
Blog copied to clipboard

h2O's Blog

Results 100 Blog issues
Sort by recently updated
recently updated
newest added

Crontab 用法 ============ ### crontab 命令 列出 `cron` 任务 ``` $ crontab -l $ crontab -u USERNAME -l ``` 清除所有 `cron` 任务 ``` $ crontab -r ``` 清除某个用户的 `cron` 任务...

Linux

### 服务器配置 #### 创建空仓 `ssh` 到服务器, 创建一个空仓 ```Bash $ mkdir blog.git $ cd blog.git $ git init --bare --shared ``` `--bare`:创建一个空仓 `--shared`:指定仓库可以多个用户共享 #### 创建钩子 ```Bash $ vi hooks/post-receive ``` 输入如下内容:...

Git

#### 插入排序 #### **插入排序**(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 ##### 算法描述 ##### 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: >1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置 4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5. 将新元素插入到该位置后 6. 重复步骤2~5 *附上图片:* ![插入排序](https://upload.wikimedia.org/wikipedia/commons/0/0f/Insertion-sort-example-300px.gif) 如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为**二分查找插入排序**。 ##### 算法应用 ##### function insertion_sort(&$arr) {...

算法

描述器 ====== 描述器 ------ #### 描述器协议 - ``__get__(self, instance, owner)`` - ``__set__(self, instance, value)`` - ``__delete__(self, instance)`` 这是所有的「描述器」的方法. 一个对象具有其中 `任一` 方法就会成为「描述器」. 如果一个对象同时定义了 `__get__()` 和 `__set__()` 方法,则叫做「资料描述器」(data descriptor) 只定义了 `__get__()` 方法的「描述器」叫做「非资料描述器」(non-data...

Python

MRO 和 super ============= 场景 ----- 在《流畅的Python》的第八章第七节说到调用父类方法,其中有段示例代码: ```Python class Base : def __init__ (self): print ('Base.__init__') class A (Base): def __init__ (self): super() . __init__() print ('A.__init__') class B (Base):...

Python

限流 ==== 问题触发的场景 -------------- 在对接 `IB` 接口的时候,它们接口有一个严格的规定: > 用户 1s 内的请求不能超过50个 在对接的时候,采用 `Python` 的 `协程` + `事件循环`,也就是所谓的`异步`,每秒向 `TWS` 发送 50个请求,在请求 `每天` 级别的数据时,接口可以正常工作。 但,在请求 `每5分钟` 级别的数据时,接口不能正常工作:当请求达到一定的数量时就会触发接口的规定 > ERROR:ib_insync.wrapper:Error 100, reqId 20:...

算法

堆排序 ======= ### 堆 **堆(英语:Heap)** 是计算机科学中一类特殊的数据结构的统称。`堆` 通常是一个可以被看作一棵树的数组对象。 #### 逻辑定义 N个元素序列{k1, k2...ki...kn},当且仅当满足下列关系时称之为堆: (ki = k2i+1), (i = 1, 2, 3, 4... n/2) #### 性质 - 任意节点小于(或大于)它的所有后裔,最小元(或最大元)在堆的根上(堆序性) - 堆总是一颗完全树。即除了最底层,其他层的节点都被元素填满,且最底层尽可能地从左到右填入 详细参考:[堆(数据结构) Wiki](https://www.wikiwand.com/zh-hans/%E5%A0%86_(%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84)#/overview) ###...

算法

Vim小技巧收集 ============= - :up newfile.txt > 只有真正修改了文件才更新文件的元属性,例如,文件更改的时间。 而`:w newfile.txt`则是,无论你是否真的修改了文件,都会更新文件的元属性。 - :qa > 关闭所有打开的文件。 - 翻屏 | 按键 | 描述 | |------|--------| |CTRL-F|下翻一屏| |CTRL-B|上翻一屏| |CTRL-D|下翻半屏| |CTRL-U|上翻半屏| |CTRL-E|下翻一行| |CTRL-Y|上翻一行| - 重画屏幕上的当前行,底部或中部 |...

Vim

迭代器和生成器 =============== ![relationships](https://user-images.githubusercontent.com/18098145/34812773-207e5116-f6e2-11e7-932a-e201c2d78e92.png) ### 迭代器 (Iterator) `迭代器对象`:必须实现 `__iter__()`, `__next__()` 这两个特殊方法的对象,另外,又把实现这两个特殊方法统称为 `迭代器协议`. 其中,`__iter__()` 方法返回迭代器对象自身,`__next__()` 方法返回序列的下一个值,如果序列中没有更多元素了,则抛出 `StopIteration` 异常. ```Python >>> class PowTow: ... def __init__(self, max=0): ... self.max = max ... self.n...

Python

Mysql 简单优化 ============== #### 场景 使用 `Python` 连接 `Mysql` 查询数据库相关信息,由于`高并发`:查询速度快,而且采用线程并发,发现服务器上 `Mysql` 程序占用 `CPU` 过高. 以下是部分代码: ```Python t2 = time.time() res = self.db.get_code_data(symbol) t3 = time.time() t4 = t3 - t2...

Mysql