Pulpcode

捕获,搅碎,拼接,吞咽

0%

本文算是平时自己在网上请教别人的一些心得的总结,说白了,就是如何干净利落的获得答案。

不要问“大的”问题

这些问题被称为“月经贴”,经常有人来问,却始终没有好的答案。因为这些大而空的问题,不仅仅让你感到迷茫,你的问法更是让回答者感到迷茫。类似提问“如何学好编程”,“如何找到一个男朋友。”
这样问问题的方式,就是让人感觉提问者根本没有认真思考过这个问题。如果你自己都没有认真思考过,那么回答者自然也没有必要认真回答了。相反,从解决一个小问题的实际出发,这样的问题获得答案就容易也实用的多。

阅读全文 »

很早以前,我曾幼稚的认为,“只有聪明人,才会探究事物的因果。而大部分人仅仅停留在事物的表面”。后来我发现自己错了,或者说仅仅对了很小的一部分,实际上,每个人都会沉迷于因果关系,因为这是人们的天性。

之前和某个人聊天,他说自己现在挣得比以前多多了,因为自己祖上原来就是土豪,所以现在有钱是因为自己骨子里就有富人的基因。将来会更有钱,反正跟互联网泡沫无关。

我们总会把成功和失败都归于因果关系,只不过成功都归于内因,而失败都归于外因。

而这种自圆其说的方式,不仅仅是为了让自己相信,也是为了让别人相信。

阅读全文 »

这篇博客,我早就想写了,结果一直拖到现在(快一年),一方面是这篇博客涉及的知识会比较多,“完美主义拖延症”搞得我一直没有去写。但是现在虽然写完了,很多细节我依旧不是很清楚。

这里主要提以下几点:

  1. epoll是一个什么样的模型,它和其它的io多路复用,比如select poll有什么不同。
  2. 相比与多进程和多线程的web服务设计,它好在哪。
  3. 写写在python编程中使用tornado注意的事项。
  4. 写一些关于epoll调用的细节内容。包括水平触发和边缘触发等等。
阅读全文 »

超时时间

如果你使用http库来进行http请求时,你会发现可以设置超时时间。
比如python最好用的requests库,或者是tornado自带的异步http客户端。都有一个可选参数叫timeout。实际上如果你不设置这个值,那它默认就是20s,我不知道其它语言是怎样的,但是在python中,几个http库都是这个默认值。

阅读全文 »

之前的博客,写到过这个技巧,就是tornado可以让多个请求,并行发出。

只所以这样,是因为比如你要n个接口的返回结果:

1
2
3
4
response1 = yield http_client.fetch(url1)
response2 = yield http_client.fetch(url2)
...
responsen = yield http_client.fetch(urln)

那么你这样实现之后,虽然你的服务是异步的,但是却假定他们的请求之间存在某种先后关系,也就是说response1获得了,才可以获得response2。
但是实际上n个异步请求是可以并行的,而且tornado也支持这种写法(列表和字典都可以):

1
response1, response2,... responsen = yield [http_client.fetch(url1) ,  http_client.fetch(url2), ...... ,http_client.fetch(url2) ]
阅读全文 »

查看大小

1
2
3
4
#直接使用du,表示当前目录下的所有文件
du xxxxx (以kb进行显示)
du -h xxxx (以M进行显示),-h可以被用在各种地方。
df -h 查看每个盘符占用的空间大小。

查看启动的python进程: ps -ef | grep python

top

1
2
3
4
5
6
7
8
9
10
11
12
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
阅读全文 »

badcode

想当救世主

这种情结在电影电视剧上可能很常见吧。类似你来到一个新公司,这团如淤泥一般的代码,被你接手之后,马上神奇的绽放出光彩,然后你顿时赢得了别人的尊重,但是实际上真实情况是,新人进入一家公司,对老人报以各种不满和怨言,愤世嫉俗,看不惯这个,看不惯那个,觉得这个技术用的搓,那个设计差,然后慢慢的深入理解这个系统,这个新人满满的就会变成老人,开始明白为啥老人会这样。因为你的那点鸟优化,修改出来,影响简直九牛一毛。他们早都想过了,后来他们也是懒的折腾了。

实际的优化是一个很难的过程,没有从业务和技术深入理解一个系统的人,很难做出一个质变的优化,比如你吐槽python运算慢,gil全局锁,单进程不能利用多核,或是其他的,那只能说你从来都没有吐槽到点子上。很多人做事都是自己知道什么做什么,而不是分析当前局势在做,这也就是为什么有些人看着博学其实一事无成,因为他们只能以他们理解的方式去思考问题。

阅读全文 »