摘要: 用LINQ时被Deferred Execution的特性给坑了,于是写文章来纪录下>_< Deferred Execution简单来说就是写一个不包含强制马上执行命令(如:Count, Max等)的LINQ表达式时,它只会将表达式保存起来。真正执行的时机则是在真正使用时。具体例子见下图: 18行中的result没有保存结果,反而保存query本身。如果不明白“保存query本身”的真正含义,很容易被坑。以下是我被坑的简化版(不妨手算下输出,看是否会被坑):坑一 1 using System; 2 using System.Collections.Generic; 3 using S 阅读全文
posted @ 2013-05-11 16:45 风中之炎 阅读(1194) 评论(6) 推荐(2) 编辑
摘要: 与我一个team的某外国人(以下简称N)在今天遇到了一个不错的问题,就问我要来一次模拟面试吗。虽然同为实习生,但N被面试经验丰富,而且还去面别人。于是果断说了句,sure。问题如下(为了方便观看,翻译成中文了):有一个整数数组,一个该数组的子数组SA,求一个满足以下条件的子数组1. 子数组包含SA2. 子数组的和要为03. 子数组要小4. 子数组要连续 例如,数组为{1, -1, 2, 8, -9, 4, 0},SA为{8,-9},即数组从下标为3(包含)到下标为5(不包含)的部分(下标从0开始算)。那么所求的子数组是{-1,2,8,-9}。 >_< 往下看之前,可想象下如果自己是 阅读全文
posted @ 2013-04-11 21:03 风中之炎 阅读(1976) 评论(4) 推荐(1) 编辑
摘要: 近段时间,实验室电脑的IP频繁地改变,搞得想用远程偷下懒都不行。这时想到的解决方法有:静态IP,动态域名,自己解决。静态IP虽然可以自己指定,但一关机后,与对方冲突就完了,作罢。免费的动态域名又要手机认证,也作罢。最后只能自己解决。解决方案是写一个程序不断地检测本机IP,如果改变了,就发邮件通知。检测本机IP很简单,就略过。这里介绍下怎样发邮件吧。 发邮件前,需要理解SMTP(Simple Mail Transfer Protocol)。SMTP是电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。SMTP 是请求/响应协议,命令和响应都是基于 ASCII ... 阅读全文
posted @ 2013-01-01 13:41 风中之炎 阅读(14998) 评论(3) 推荐(2) 编辑
摘要: ZeroCrawler V0.1是一只简单的多线程爬虫,其基本架构如下: 整个程序是这样运作的:Scheduler不断从Queue取出URL,如果发现可用的爬虫(空闲线程),那么就将URL分给一只爬虫。然后爬虫完成下载网页,抽取URL,保存网页的工作后就回归Scheduler(变回空闲线程)。直到Queue没有待爬取的URL,并且所有爬虫都空闲下来,就停止程序。 Scheduler的主要工作就是建立线程池,从Queue中取出URL,分配URL给线程。容易出错的地方是退出条件。如果只是判断Queue为空就退出是不行的。因为这时可能还有爬虫在工作中,而它可能提取到新的URL加到Que... 阅读全文
posted @ 2012-11-27 20:57 风中之炎 阅读(4186) 评论(3) 推荐(3) 编辑
摘要: 不怎样的一本书,具体表现为:1)该详细讲解的地方,或者一笔带过或者讲得不全面或者讲些不相关内容;2)该略过的地方,反而详细起来;3)有一部分错误,如sizeof不计算static变量的大小之类的。虽说如此,收获还是有的——知道了在笔试中常见的知识点。这里的笔记就是对我不熟悉或者理解不全面的知识点去Google和查书而来的。C++的关键字1. 使用extern "C"的理由函数被C编译器编译后不带参数信息,被C++编译器编译后会带上参数信息。这是因为C++支持函数重载。所以函数被C编译器编译和被C++编译器编译是不同的。例如:void Zero(int lin),被C编译后, 阅读全文
posted @ 2012-10-31 10:03 风中之炎 阅读(12091) 评论(6) 推荐(3) 编辑
摘要: 开始读《C专家编程》之前,有一个很担心的问题:94年出的讲语言的书,在现在(2012)还有多少是适用的。因此,一边读,一边用VS2010做实验。最后发现大部分内容都还在用。读完后,觉得最精彩的部分有二:一是讲解如何理解声明,二是深入地讲解数组名与指针。下文是将看书过程中所做的笔记进行的整理。p.s: 以下代码均在VS2010测试过1. 使用无符号数时要特别注意(不推荐使用无符号数)当无符号数与有符号数在同一条表达式中出现时,有符号数会被转换为无符号数。e.g:int feng = -1;unsigned int yan = 5;bool result = (feng < yan) ? t 阅读全文
posted @ 2012-09-03 17:26 风中之炎 阅读(4917) 评论(13) 推荐(3) 编辑
摘要: 近日,想写一个小型的爬虫框架,可惜的是,zero并没有写框架的经验。因此有必要找一个现有框架来参照下。GOOGLE了下,发现Crawler最适合作为将要写的框架的参照物。Crawler是一个简单的爬虫框架,它实现了爬虫的共同部分,如URL拼接,网页编码等,使得用户可以专注于提取网页内容(原文:Crawler is a simple Java web crawler/spider/joe or any other name you want to call it.The main goal is to abstract that boring and error-prone code fro.. 阅读全文
posted @ 2012-08-16 09:35 风中之炎 阅读(4772) 评论(2) 推荐(0) 编辑
摘要: 由于要准备测试数据,不得不大量爬取某个网站的内容。为了防止被封,特意将爬虫设计为单线程同步的爬虫。结果在爬了大约3万个页面的时候,对方发回Access Denied。等一段时间后再启动爬虫,结果还是Access Denied。这时才明白这样的想法太天真了,当初就应该找其它方法来避免才对。而本文则记述了这些其它方法。1. 伪装user agent User agent 是HTTP协议的中的一个字段, 其作用是描述发出HTTP请求的终端的一些信息。 服务器通过这个字段就可以知道要访问网站的是什么人了。每个浏览器,每个正规的爬虫都有其固定的user agent,因此只要将这个字段改为这些知名... 阅读全文
posted @ 2012-07-31 16:55 风中之炎 阅读(20667) 评论(7) 推荐(7) 编辑
摘要: 1. CLAPACK简介 要了解CLAPACK,就要先知道什么是LAPACK。 LAPACK(LinearAlgebraPACKage)是一个高性能的线性代数计算库,以BLAS(Basic Linear Algebra Subprograms)为基础,用Fortran语言编写,可用于计算诸如求解线性代数方程、线性系统方程组的最小平方解、计算特征值和特征向量等问题。而CLAPACK则是LAPACK的C语言接口。2. CLPACK的安装 搜了不少网页,终于找到一个方便的安装方法(http://icl.cs.utk.edu/lapack-for-windows/clapack/index.ht... 阅读全文
posted @ 2012-07-20 22:09 风中之炎 阅读(7266) 评论(1) 推荐(1) 编辑
摘要: 1. kNN1.1 基本的kNN模型 kNN(k-nearest neighbor)的思想简单来说就是,要评价一个未知的东西U,只需找k个与U相似的已知的东西,并通过k个已知的,对U进行评价。假如要预测风炎君对一部电影M的评分,根据kNN的思想,我们可以先找出k个与风炎君相似的,并且对M进行过评分的用户,然后再用这k个用户的评分预测风炎君对M的评分。又或者先找出k个与M相似的,并且风炎君评价过的电影,然后再用这k部电影的评分预测风炎君对M的评分。在这个例子中,找相似用户的方法叫做user-based kNN,找相似物品的方法叫做item-based kNN。这两种方法的思想和实现都大同小异,. 阅读全文
posted @ 2012-07-13 18:37 风中之炎 阅读(16384) 评论(24) 推荐(5) 编辑