Windows纤程(Fiber)

进程可以包含多个线程,线程又可以划分成多个纤程(Fiber)。

线程是内核对象,由Windows系统自动调度,线程的状态和数据需要内核进程创建和维护。

纤程是Windows提供的用户级线程包,完全运行在用户空间中,即对Windows内核是透明的。纤程由用户手动调度。

纤程的作用和优点:

  1. 使得UNIX服务器应用程序更好地移植到Windows中;
  2. 运行在用户空间中,切换快,资源消耗少;
  3. 用户可以手动调度。

纤程的主要目的是为开发人员调用多个不需要并行执行的任务提供一个便捷的机制。
纤程对程序的并行执行并没有帮助,仅为开发人员手动调度多个任务提供方便
多核程序设计技术-通过软件多线程提升性能[……]

>> 阅读全文…

Python中使用sqlite3数据库

SQLite是一个小巧的关系型数据库,支持SQL语法。它是嵌入式的数据库,不需要安装后台的服务,或者说它是一个文件型的数据库。只需要在程序中加载几个相关文件,就可以使用。相比于MSSQL、MYSQL这种(中)大型的数据库来说,使用起来可谓相当方便。

sqlite3,即SQLite的第3个主版本,目前最新的版本是3.8.2。Python中默认自带了sqlite3模块,用户不需要安装sqlite就可以直接导入sqlite3模块以使用。

开始

Python 中使用sqlite3的具体步骤如下:

PythonChallenge系列-P8 bzip2解压缩

Work Hard

解谜P7之后,转至第八题P8,其URL为

http://www.pythonchallenge.com/pc/def/integrity.html

一张蜜蜂采蜜的图片,下面提示“Where is the missing link?”。蜜蜂区域可以点击,点击弹出身份验证窗口

需要用户名和密码,服务器提示“inflate”(膨胀,充气)。再看网页源码,蜜蜂的点击区域使用HTML的map标签实现的,当然这与题目应该无关,但其中有两行重要提示:

un: ‘BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00[……]

>> 阅读全文…

PythonChallenge系列-P7图像处理

Smarty

解谜P6之后,转至第七题P7,其url为

http://www.pythonchallenge.com/pc/def/oxygen.html

打开之后,只有一张图片,图片的特点就是中间有一条灰度部分。再查看网页源码,没有发现什么线索。还是从图片着手吧,结合之前的做题经验,每道题都关联着Python的一个重要部分,如P3为字符串匹配,P4为urllib模块使用,P5为数据序列化,P6为zip压缩。那么这一题,应该就是图像处理。

Python中图像处理最重要的一个库就是PIL(Python Image Library),Python3 中不再维护,改为 Pillow。看了看这个库学[……]

>> 阅读全文…

(译)Python中如何使用urllib2模块

这是Python For Beginners 中的一篇文章,原文How to use urllib2 in Python,对urllib2讲解的深入浅出,确实是一篇很好的urllib2入门教程。为了确保翻译准确,关键词汇会使用原文或将原文备注于括号内。全文翻译如下:

概述(Overview)

尽管文章题目为”urllib2“,但是我们也会展示一些使用urllib模块的例子,因为它们经常一起使用。

这是一篇介绍urllib2的文章,在这里我们将关注Getting URLs、Requests、Posts、User Agents以及Error handling等内容。

更多内容请查看官方[……]

>> 阅读全文…

PythonChallenge系列-P6 ZipFile

Now These Are Pairs

解谜P5后跳转至第六题P6

http://www.pythonchallenge.com/pc/def/channel.html

just 一张图,注意到网页的标题为“Now there are pairs”, 看来是要用到pair数据结构,可是Python中并没有单独的这个类型的数据结构。继续,查看网页源代码,其中有如下一段话

The following has nothing to do with the riddle itself. I just thought it would be the right point to offer you[……]

>> 阅读全文…

PythonChallenge系列-P5数据持久化

Peak Hell

解谜P4后,转至第五题P5,其url如下

http://www.pythonchallenge.com/pc/def/peak.html

一张图,图上是一个绿色的小山头,下面的文字提示“pronounce it”。不明所以,再打开网页源码找找线索。

源码中有一段提示“peak hell sounds familiar ?” 又是再提示发音,peak hell?hell难道是hill(山) ? peak难道是“pic”(picture,图片)或者“pick”(摘,选择)?

源码中还有一个链接,src="banner.p",打开banner.p看看。

[……]

>> 阅读全文…

为什么孙悟空不是玉皇大帝

想不起来是因为什么了,突然想到童年时的一件事。那时候喜欢看《西游记》,孙悟空在里面无法无天大闹天宫,众神都斗不过他,玉皇大帝吓得都从座位上跌倒桌子下了。我就很奇怪了,玉皇大帝怎么说也是众神之王啊,怎么手下的众神好歹还能打打,他无能的什么都干不了。孙悟空这么能厉害,为什么他不是玉皇大帝呢,为什么众神要服从那么个懦弱的糟老头?

我问我妈,我妈当时就给了我一个很好的解释,让我记忆深刻。

她没有直接说为什么,而是反问我,你看JZM是不是最厉害的,他不也是主席么?

这是我印象中我妈做过的最好的最早的解释,我一下子就明白了,最厉害的不一定官最大。

这就是她的智慧。[……]

>> 阅读全文…

Python正则表达式Regex(笔记)

正则表达式语法

正则表达式,Regular Expression,用于模式匹配,表达式中的字符分为:普通字符(Ordinary Character)和特殊字符(Special Character)。特殊字符就是在模式匹配时具有特殊用的字符,如“*”、”+”等,除去特殊字符剩下的都是普通字符。

使用python中的raw string,在字符串前加r修饰,字符串会被原样解析,如 r”\n” 会被解释成两个字符 \ 和 n,如果不使用r,会被解析成\n一个字符。

常用的语法

符号
含义

.
匹配任意字符

[ ]<
匹配字符集中的任何一个

*
匹配前一个字符0次至无穷次[……]

>> 阅读全文…

PythonChallenge系列-P4使用urllib

Follow The Chain

解谜P3后,转至第四题P4,其url为

http://www.pythonchallenge.com/pc/def/linkedlist.php

只有一张图片,没有文字提示。鼠标移动到图片上,发现可点击,点击图片。

观察,url中有一个“nothing=12345”,页面内容提示“next nothing=44827”,那么把url中的12345替换成44827,又打开了一个新页面,页面又提示了新的nothing中,看来nothing值上大有文章,但具体怎么做文章,目前的提示不够,再看网页源代码。

urllib may help. DON’T TRY[……]

>> 阅读全文…

PythonChallenge系列-P3字符匹配

Re

解谜P2之后,转到P3,(其url如下)

http://www.pythonchallenge.com/pc/def/equality.html

先观察图中下方的文字,有这么一句:

To see the solutions to the previous level, replace pc with pcc, i.e. go to: http://www.pythonchallenge.com/pcc/def/equality.html

这就告诉了我们如何查看已经做过的题目的解答(做过Preject Euler童鞋都不陌生,这与PE中的论坛类似)。看了一下Solutions,这里面[……]

>> 阅读全文…

PythonChallenge系列-P2字符搜索

OCR

解谜P1之后即可来到P2,(其url如下)

http://www.pythonchallenge.com/pc/def/ocr.html

观察谜面,图中是一本打开的书,书中字符不可辨认。下方文字提示:字符识别,或许在书中,或许在页面源代码(page source)中。书中不可能,那么就看网页源代码。

果然在源代码中,问题是“find rare characters in the mess below”,在一大段字符中找出现次数少的字符。下面着手分析解决这个问题

思路

首先遇到的问题就是字符太多了(一千多行),如果直接复制到代码中,赋值给字符串变量,即便代码很庞大不是问题,但要在每一[……]

>> 阅读全文…

PythonChallenge系列-P1字符转换

What About Making Trans

解谜P0热身题之后,url会自动跳转到第一题P1,(其url如下)

http://www.pythonchallenge.com/pc/def/map.html

观察谜面,图中将K、O、E分别对应指向M、Q、G,这应该是暗示了一种字符转换规则。图片下方给出了一大段乱排的字母,应该在用转换规则对其转换后会给出该题的答案

思路

由K、O、E分别对应指向M、Q、G,知转换规则为字符后移两位。又注意到下方的乱排字母段全部为小写,则只要转换小写的即可。

编写代码之前要注意2点:

  • (1) 只翻译字母,特殊字符不要翻译;
  • (2) 考虑最后的 y和z,y要变[……]

    >> 阅读全文…

PythonChallenge系列-P0热身

Warming Up

PythonChallenge 是一个编程解谜网站,依据题目给出的谜面,解谜问题并解决问题,继而打开下一题。通常每道题的谜面会是一张图片和一段文字提示,据此推断出要解决的问题是什么,并用Python编程解决问题,问题的答案就是打开下一个问题的线索。

P0 热身题

点击“Click here to get challenged”开启解谜之旅

谜面是一张图,图中是数字2和38,并组成了2^38,下面文字提示我们改变url地址。

url地址为:"http://www.pythonchallenge.com/pc/def/0.html

思路

观察url,最后为0.h[……]

>> 阅读全文…

轻量级C#编译器

由于Visual Studio 系列的正统编译器对系统资源消耗过大,性能稍差的机子跑起来会很卡,新换系统后没敢装,但有时又要写点简单的C#代码,怎么办?经过搜寻,发现了一款名为Snippet Compiler的轻量级C#编译器。

Snippet Compile的优点与不足

优点

  • 免安装,解压即可用
  • 轻量,下载压缩包仅1.26M,解压后才3.27M
  • 语法高亮和智能提示
  • 可以生成exe

不足

  • 只能编译命令行C#,不能建立带窗体的工程

下载地址:http://www.sliver.com/dotnet/SnippetCompiler

注:如果系统没有安装.NET FrameWor[……]

>> 阅读全文…