Skip to content

Instantly share code, notes, and snippets.

@xiazhibin
xiazhibin / run_task0.py
Last active March 17, 2018 08:31
定时任务执行
import bisect
import heapq
import time
from collections import namedtuple
timeouts = namedtuple('Timeouts', ['deadline', 'task'])
class Task(object):
def __init__(self, schedule, name):
@xiazhibin
xiazhibin / ioloop.py
Created March 29, 2018 13:46
simple tcpserver
import selectors
import errno
import sys
class IOLoop(object):
@classmethod
@xiazhibin
xiazhibin / 同步阻塞.py
Created March 30, 2018 07:17
五种IO模型
import socket
import time
tic = lambda x: '\nat %1.1f second' % (time.time() - x)
def get_request(path):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 8088))
sock.setblocking(0)
@xiazhibin
xiazhibin / ioloop.py
Created April 1, 2018 08:13
IO复用回调版本
import selectors
import errno
import sys
class IOLoop(object):
@classmethod
@xiazhibin
xiazhibin / concurrent.py
Created April 1, 2018 08:20
IO复用异步编程
def future_add_done_callback(future, callback):
if future.done():
callback(future)
else:
future.add_done_callback(callback)
@xiazhibin
xiazhibin / bit.md
Last active April 11, 2018 08:44
一些位运算的技巧

n个bit能表示的最大数值

-1 ^ (-1<<n) = 2^n-1

原理:将最右n位变成1

  • -1 表示 1111 1111 1111 1111
  • 移4位后 1111 1111 1111 1111 0000
  • 高位舍去,异或
     1111 1111 1111 0000
^ 1111 1111 1111 1111 
@xiazhibin
xiazhibin / thread.md
Last active April 12, 2018 08:25
线程一些常识

主线程退出对子线程的影响

进程是资源分配的基本单位,线程是CPU调度的基本单位

Main线程是个非守护线程,不能设置成守护线程

import threading
import time

threading.currentThread().setDaemon(True)
time.sleep(1)
@xiazhibin
xiazhibin / postgresql_test.md
Last active December 20, 2018 07:41
postgresql生成测试数据

核心方法

generate_series(start,stop);生成序列
(random()*(2*10^9))::integer;生成随机数
substr('abcdefghijklmnopqrstuvwxyz',1,(random()*26)::integer);生成随机字符串

例如有一下的Test表

 Table "public.test"
@xiazhibin
xiazhibin / fanin.go
Created May 10, 2018 02:53
go concurrency pattern
package main
import (
"fmt"
"time"
"math/rand"
)
func main() {
c := fanIn(boring("joe"),boring("Ann"))
@xiazhibin
xiazhibin / UNION_or_OR.md
Last active May 18, 2018 02:13
Query with UNION or OR?
CREATE TABLE public.friend (
   uid1 INTEGER,
   uid2 INTEGER
);
CREATE INDEX index_uid1 ON friend USING BTREE (uid1);
REATE INDEX index_uid2 ON friend USING BTREE (uid2);

friend记录user1和user2是朋友关系,而且只会记录单方,(1,2)和(2,1)是一样的。