`
文章列表
    三篇博客之间又发了一些别的博客。因此做一个索引帖,也方便回过头来看。英文版这部分20几页,但是断断续续边看边记搞了三天。看一遍明白大意和这种近似于翻译的记录确实工作量差很多,但是对于理解与记忆的帮助也差很多。希望自己能坚持,加油! 1.《现代操作系统》读书笔记之——进程间通信1 2.《现代操作系统》读书笔记之——进程间通信2 3.《现代操作系统》读书笔记之——进程间通信3
强大的类型系统是Haskell的一个非常大的优势。   Haskell所有表达式类型在编译期判断。这样的话,可以使得代码 更加安全,比如说,拿一个整数和一个字符串进行除法运算是没办法进行的,那么在编译器就会直接报错,不会等到运行时程序崩溃才知道。Haskell与 Java不一样,Haskell能够进行类型推断(Type Inference),也就是说,你不需要明确的说100是个数字,或者说是整型,编译期能推断出这是一个整型。 在GHCi中,我们可以使用:t 命令来检测一个表达式的类型。 Prelude> :t 'q' 'q' :: Char Prelu ...
1.Tuple Tuple用来将几个元素打包成为一个值。Tuple用()包起来。看起来和List很像,但是Tuple和List有很重要的区别: (1)List元素数量是不固定的,但是Tuple的元素数量是固定的; (2)List必须存储同种类型的元素,但是Tuple可以存储不同类型元素。 看几个Tuple的例子: Prelude> (1,2) (1,2) Prelude> (1,"a",True) (1,"a",True)   Tuple看起来实在是和List太像了,我一开始也不知道Tuple存在的必 ...
1.Ranges 有时候我们有这样一种需求:我们需要一个List,它的元素从1到20。从1到20敲出每一个元素肯定是一种可以搞定的办法,但肯定不是好办法。这时候,我们可以使用Haskell的Ranges来处理这种需求。 Ranges用来构建元素可以按照某种顺序枚举的List。像数字1,2,3,4就是可枚举的;字母a,b,c,d也是。我们看看两个Ranges的例子:上面说到的1-20,使用Ranges可以这样表示: Prelude> [1..20] [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]  同理,所有的小写字母可以这 ...
这一系列博客是《Learn You a Haskell for Great Good》的读书笔记。 一句话介绍:Haskell是一门纯粹的函数式编程语言。至于什么是函数式编程?尽管网上也有很多关于函数式语言与指令式语言之间的区别与联系,但是没有实际使用过函数式编程语言的情况下,我也搞不清楚。因此,先从学习一门函数式编程语言开始吧。 1.安装Haskell要开始使用Haskell其实很简单,只需要一个文本编辑器和一个Haskell的编译器。目前来说最流行的Haskell的编译器是Glasgow Haskell Compiler(GHC),我使用的就是这样一个编译器。一般来 ...
四、更新策略     互联网是实时变化的,具有很强的动态性。网页更新策略主要是决定何时更新之前已经下载过的页面。常见的更新策略又以下三种:     1.历史参考策略     顾名思义,根据页面以往的历史更新数据,预测 ...
    网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。这篇博客主要对爬虫以及抓取系统进行一个简单的概述。 一、网络爬虫的基本结构及工作流程     一个通用的网络爬虫的框架如图所示:     网络爬虫的基本工作流程如下:     1.首先选取一部分精心挑选的种子URL;     2.将这些URL放入待抓取URL队列;     3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。     4 ...
    捕获到异常时,往往需要进行一些处理。比较简单直接的方式就是打印异常栈轨迹Stack Trace。说起栈轨迹,可能很多人和我一样,第一反应就是printStackTrace()方法。其实除了这个方法,还有一些别的内容也是和栈轨迹有关的。       1.printStackTrace()     首先需要明确,这个方法并不是来自于Exception类。Exception类本身除了定义了几个构造器之外,所有的方法都是从其父类继承过来的。而和异常相关的方法都是从java.lang.Throwable类继承过来的。而printStackTrace()就是其中一个。     这个方法会将T ...
1.上下左右移动光标:     h:左    l:右    k:上    j:下 2.删除一行:dd 3.删除一个字符:x 4.删除一个换行符:J 5.在光标下方新建一行,并且进入插入模式:o(小写字母o) 6.在光标上方新建一行,并且进入插入模式:O(大写字母O) 7.光标移动到下一单词的词首:w 8.光标移动到前一单词的词首:b 9.光标移动到下一单词的词尾:e 10.光标移动到前一单词的词尾:ge 11.移动到当前行第一个字符:0(数字0) 12.移动到当前行的第一个非空字符:^
     好长时间没使用虚拟机了。之前一段时间一直是Windows7和Ubuntu10.10。但是这段时间做毕业设计,来回切换系统确实也不方便。加上前两天把笔记本内存升级为8G。总之一大堆各种原因吧。怎么样配置网络都忘了,翻了一下自己以前的日志又在网上差了些资料,整理一下记下来备忘。     1.host-only配置     安装软件的过程很简单,一直下一步就好。安装好了之后,系统网络管理部分会出现虚拟网卡。     默认情况下,Vitual Box的网络方式是host-only方式。在安装CentOS系统的时候,配置网络选择手动(Mannal),IP为:192.168.0.x(x选一个 ...
前言:翻译自《Pro Git》。正在学习Git,于是打算翻译这篇文档。一方面锻炼自己英文文档阅读能力,翻译成中文也可以方面别人。正所谓赠人玫瑰,手有余香。鉴于本人水平有限,当然是不可能达到信、达、雅的水准。不过在翻译过程中,我会尽量保证遵循原文,有些不好直译的部分我会根据理解意译,对于有些实在不知道用中文怎么去表述但是不影响所讲述内容的英文,我可能会直接忽略掉。此外,对于没有把握的专有名词,我会给出翻译的同时保留原文。 1. 简介 此处省略若干字…… 2. 起步 这一章的内容主要关于如何开始使用Git ...
1.安装Subversion,不断下一步即可。 2.创建一个根目录,用来存储所有svn工厂信息。每个工厂Repository对应一个项目。我这里在e:\svndata。 3.启动svn,使用如下的命令svnserve -d -r e:\svndata。其中-d选项指的是后台模式,但是非常遗 ...
1.什么是存储过程         这篇博客主要介绍存储过程(Stored Procedure),简称过程。存储过程是Oracle PL/SQL中的一种程序单元。存储过程可以通过给一个PL/SQL语句块命名从而将这个语句块存储在数据库中,以便将来可以被反复的调用。     存储过程与一般的匿名PL/SQL块的一个主要区别是有无确定的名称。此外,对于匿名块来说,每次提到到数据库进行执行时,PL/SQL解析程序都会对其 进行一次解析,然后再运行;然而对于存储过程来说,PL/SQL的解析程序只在其创建时对其进行一次解析,后续的调用就不需要再次解析了。     存储过程可以在其他耳朵可执 ...
    游标是PL/SQL非常重要的一部分,也是很多人为什么使用PL/SQL的原因。游标能够让开发者对数据库查询进行记录级别的控制。也就是说,可以对查询返回的数据一次一行进行步进,并且在两行之间停顿一段时间来进行一些特别的处理操作。     游标分为两种:隐式游标和显式游标。下面我们先介绍隐式游标,一会在介绍更加强大的显示游标。     1.隐式游标     隐式游标是不需要定义的,说白了,隐式游标就是数据操作语言DML,例如SELECT语句。也就是我们上一讲中提到的PL/SQL处理部分中的语句。先看一个例子: DECLARE v_port_name varchar2( ...
  安装mysql时 make 时  提示 redeclaration of C++ built-in type ‘bool’ 错误。 是没有安装 gcc-c++ 导致的,解决如下。 sudo apt-get install build-essential     如果还出现是因为gcc-c++是在configure之后安装的,此时只需重新configure mysql后再编译make即可。
Global site tag (gtag.js) - Google Analytics