好记性,不如烂笔头

万物寻其根,通其堵,便能解其困。
  博客园  :: 新随笔  :: 管理

11 2018 档案

摘要:什么是原语? 答:执行时不可中断的过程。 P操作P(s):将整形型号量s的值减去1,如果结果小于0,那么调用P(s)的进程,将进程的信号量s的等待状态。 V操作V(s):将整形信号量s的值减去1,如果结果大于0,那么释放一个等待信号量s的进程。 值得注意的是:pv执行时,唤醒的顺序是由系统决定,唤醒 阅读全文

posted @ 2018-11-30 16:45 阅读(993) 评论(0) 推荐(0)

摘要:并发进程的执行可能是有关的,也可能是无关的。 无关并发进程是指他们分别在不同的变量集合上操作,所以一个进行的执行与其它并发的进程并不会有变量集(值)交集。有关并发进程是指他们可能共享变量集上的某些变量,如果没有进行PV操作(后面会介绍,暂时挂起),那么可能在同时“存、取、改”操作上产生错误。 针对上 阅读全文

posted @ 2018-11-29 16:29 阅读(597) 评论(0) 推荐(0)

摘要:使用StaticFileHandler进行首页默认访问页面,最好将StaticFileHandler放在最后面,这样不会覆盖要匹配自定义的路径 static_path/template_path static_path:设置静态文件的访问目录 template_path:设置静态页面路径 stati 阅读全文

posted @ 2018-11-28 20:42 阅读(2108) 评论(0) 推荐(0)

摘要:set_header()/set_default_headers() set_header():设置请求头数据 set_default_headers():设置默认请求头数据 set_status(status_code, reason=None) # 当set_status()中的参数status 阅读全文

posted @ 2018-11-28 00:30 阅读(1964) 评论(0) 推荐(0)

摘要:import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver from tornado.options import options from tornado.web import RequestHandler, url tornado.options.define('port... 阅读全文

posted @ 2018-11-27 13:10 阅读(509) 评论(0) 推荐(0)

摘要:最外面的代码结构 值得注意的是: debug包含四个内容,分别是:原文件是否被改变/缓存模板是否要消除/静态文件的hash是否消除/和异常捕获,对应:autoreload/compiled_template_cache/static_hash_cache/serve_traceback get_qu 阅读全文

posted @ 2018-11-27 00:31 阅读(2137) 评论(0) 推荐(0)

摘要:简单比较Django和Tornado Django是走大而全的方向,注重的是高效开发,最出名的是全自动化管理后台 Tornado走的是少而精的方向,注重的是性能的优化,最出名的是异步非堵塞 安装方式: 通用:pip3 install tornado 还以可以下载wheel安装包进行安装,window 阅读全文

posted @ 2018-11-26 00:30 阅读(156) 评论(0) 推荐(0)

摘要:import re import collections # 写将要匹配的正则 NUM = r'(?P\d+)' PLUS = r'(?P\+)' MINUS = r'(?P-)' TIMES = r'(?P\*)' DIVIDE = r'(?P/)' LPAREN = r'(?P\()' RPAREN = r'(?P\))' WS = r'(?P\s+)' # 构建compile()对象 ma... 阅读全文

posted @ 2018-11-22 23:20 阅读(336) 评论(0) 推荐(0)

摘要:xml.sax.saxutils.quoteattr() 阅读全文

posted @ 2018-11-22 22:36 阅读(467) 评论(0) 推荐(0)

摘要:# 关于html.parse.HTMLParser的使用 from html.parser import HTMLParser class MyHtmlParser(HTMLParser): # 使用“”将会被调出来 def handle_decl(self, decl): # 实现基类的方法 HTMLParser.handle_decl(self... 阅读全文

posted @ 2018-11-22 00:25 阅读(349) 评论(0) 推荐(0)

摘要:使用textwrap.wrap() 使用textwrap.fill 使用textwrap.shorten() 对文本内容进行缩进操作 使用dedent() 使用indent() 阅读全文

posted @ 2018-11-21 23:42 阅读(254) 评论(0) 推荐(0)

摘要:# 关于format和format_map的使用# 如果要使用输出的字符串对其不仅仅是可以使用format,还可以使用ljust/rjust/center来处理,输出当然也可以是使用%来进行操作,但是format()属于Python3的特性,所以在这里专门介绍format,其他的暂不打算做笔记 # 阅读全文

posted @ 2018-11-20 17:54 阅读(515) 评论(0) 推荐(0)

摘要:unicodedata.normalize()清理字符串 # normalize()的第一个参数指定字符串标准化的方式,分别有NFD/NFC 注:Python中同样支持NFKC/NFKD,使用原理同上 combining()匹配文本上的和音字符 使用strip()、rstrip()和lstrip() 阅读全文

posted @ 2018-11-19 20:31 阅读(3090) 评论(0) 推荐(1)

摘要:str.replace()可以进行简单的替换 re.sub()可以使用正则替换 # re.sub还可以保留原字符串的大小写(不过要麻烦一些) 使用calendar.month_abbr # 可以将字符串/数字进行转换成为对应的因为月份 使用re.subn() # 进行统计进行替换的次数 upper( 阅读全文

posted @ 2018-11-18 00:07 阅读(1481) 评论(0) 推荐(0)

摘要:split()对字符串进行划分: 复杂一些可以使用re.split() 捕获分组和非捕获分组 startswith、endswith和fnmatch 如果想忽略该区别可以是fnmatchcase(),fnmatchcase()严格区分大小写 finditer()将找到的全部的参数以迭代器的形式返回 阅读全文

posted @ 2018-11-17 11:18 阅读(625) 评论(0) 推荐(0)

摘要:# 下面结果执行一次不容易出差距,所以都执行100000次 # 第一种:字典推导式 # 第二种:dict() # 第三种:通过键值来构建 下面是输出结果: 阅读全文

posted @ 2018-11-16 00:26 阅读(213) 评论(0) 推荐(0)

摘要:关于itertools.groupby() itertools.groupby()就是将相邻的并且相同的键值划分为同一组,相似功能可以看https://docs.python.org/3/library/itertools.html?highlight=groupby#itertools.group 阅读全文

posted @ 2018-11-15 22:42 阅读(1302) 评论(0) 推荐(0)

摘要:# operator.itemgetter(*items) # 获取item # 使用attrgetter()获取其属性# 《python cookbook》 书籍的例子 # 使用attrgetter可以使用lambda来进行代替: 《python cookbook》书籍中提到attrgetter( 阅读全文

posted @ 2018-11-14 00:27 阅读(129) 评论(0) 推荐(0)

摘要:关于slice.indices() indices()的使用,能够从新定义截取的最大长度 关于collections.Counter用来统计数据 # Counter()统计数据 # 使用element()来显示Counter()里面的全部内容# 注意下面使用a和a.elements()遍历的区别 # 阅读全文

posted @ 2018-11-13 23:49 阅读(247) 评论(0) 推荐(0)

摘要:关于deque的使用 collections.deque([list[, max_length]]) # 不限定长度,可随意添加没有上限 # 定义限定的list长度,当list中的值超过限定的长度之后,会从添加端的另一侧删除参数超出部分 # 使用append()从右侧添加数据,如果添加数据满了,会从 阅读全文

posted @ 2018-11-12 19:03 阅读(292) 评论(0) 推荐(0)

摘要:关于heapq(优先级队列算法): heapq.heapify(x):个人理解就是以线性时间(O(n)时间)将一个list转换经过堆排序之后在放入list中,而这种堆特点是根节点必须小于左右节点。曾听到过一个说法,在java里面这种叫堆排序方法做小根堆 例子: 图如下: heapq.heappush 阅读全文

posted @ 2018-11-11 16:13 阅读(2421) 评论(0) 推荐(0)