摘要: > getline 控制输入 使用getline可以对输入进行更多的控制。用变量名作为参数传递给getline,getline能将数据读入到这个变量。 1: # gawk sample: g1 2: BEGIN { 3: getline aa 4: print aa 5: } 6: -------... 阅读全文
posted @ 2012-09-07 22:49 郝玉琨 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 由于之前师兄的内推,昨天去参加了某公司的openday。上午是交流会,技术副总做公司简介和QA,下午是面试。面试是连着三轮,从下午1点多到5点,一气儿三轮下来。只能说一个感觉,懵了,完全懵了。。。第一面,2v1 。先问的项目,数据库的存储结构,这个讲了下;后来又问索引如何加锁查询,自己的的review还没有到这里,很无奈地说跳过了;后来讲了想log的存储和读取。对了,中间还问sql语句的解析,这个简单讲了下, 但是有bug,确实没有review到这里,思路不是很完善,完事翻了下ipad里面的文档,确实在面的时候说的算法是有问题的。后来问:给定一颗二叉树的先序遍历和后序遍历,如何确定出这棵树。确 阅读全文
posted @ 2012-09-06 09:28 郝玉琨 阅读(430) 评论(0) 推荐(0) 编辑
摘要: > pattern的细化首先说下BEGIN和END之间的多个模式的执行顺序,我写了下面的程序来验证下:图1 多个模式的执行顺序验证(数据文件为cars)如上图,BEGIN,END中间有三个模式,缺省模式,判断出厂时间($3>2000),判断品牌($1 ~ /ford/),运行结果如下:图2 运行结果可见,对数据文件中的一条记录,gawk的多个文件是依次匹配的。· pattern中用到的语法和运算符:1、正则表达式如图1中看到的,用 / / 将正则表达式括起来,即可将该表达式作为模式使用:单独的“ /ford/ ” 表示用该表达式匹配整个记录也可以至少用“ ~ ”,如“$1 阅读全文
posted @ 2012-09-04 11:06 郝玉琨 阅读(825) 评论(0) 推荐(0) 编辑
摘要: 第一次看见awk这三个字母,是在某实习童鞋的QQ状态里面,赞同事写的awk如何高效。昨天在书畅草草看了下IBM官方技术博里的文章,觉得很赞,很激动,但是有点看不太懂,还是自己抱着教科书,老老实实从头看起吧。哦,这里说一下,最近看的shell相关的东西,都是跟着《A Pratical Guide to Linux Commands,Editors, and Shell Programming》这本书的。gawk是awk的GNU版本。> 使用条件主要是用gawk来处理结构化的数据。什么是结构化呢,我的理解,就是一个文件里面的内容,可以按照某种记录记录格式,一条记录一条记录地读,同时,每一条记 阅读全文
posted @ 2012-09-04 00:28 郝玉琨 阅读(3060) 评论(0) 推荐(0) 编辑
摘要: 开始真正了解RE是从这篇开始的。RE实在是博大精深,且把之前学到的东西再整理回忆下了。正则表达式就是记录文本规则的代码。前面那句话说的好,RE是描述的一种字符排列的规则,这就有两个要素:1、表达形式:表达形式包含了主体和组合方式a) 主体:各种字符,不管一个正则表达式的字符代表了一个还是一类字符,总之,这些主体是可以看到的b) 组合方式:也就是位置,同样的字符,位置不同,排列不同,表示的字符串也不同所以说,表达形式这块的内容,可以直接地从RE匹配的结果中看出来。.匹配除换行符"\n"之外的任意字符\b代表单词的开头或结尾,即单词的分界处[ \b匹配这样的位置:它的前一个字符 阅读全文
posted @ 2012-08-31 16:57 郝玉琨 阅读(283) 评论(2) 推荐(0) 编辑
摘要: 闲话几句:不是特别喜欢按部就班地跟着教科书学东西,觉得刚开始一点都不了解的时候,需要看一点书,了解一些之后,就要多看实际的例子,通过实践、例子来把东西学明白。 接着前面(3)中的quiz的例子,把其中拍代码时不时很明白的几个点,抠出来琢磨下。 1: #!/bin/bash 2: # a quiz program 3: 4: set ... 阅读全文
posted @ 2012-08-30 17:43 郝玉琨 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 2、恢复管理 2.1 日志的语义实现 前面在Log底层实现提到,Log只负责日志在字节粒度上的实现,并不知晓日志的语义信息。日志的语义信息由恢复管理器来实现。 图1 恢复管理器下日志记录类图 LogRecord作为一个抽象了,定义了所有日志记录的基本接口;系统提供了6种不同的日志类型{CHECKPOINT,START,COMMIT,ROLLBACK,SETINT,SETSTRING}。... 阅读全文
posted @ 2012-08-30 14:17 郝玉琨 阅读(623) 评论(0) 推荐(0) 编辑
摘要: > 算术赋值 与 算术扩展 算术扩展:$((expression)) 用它给表达式赋值,并用得到的结果来取来$((expression))。用来显示表达式的值或把值赋给一个变量 算术赋值:let “expression” 或 ((expression)) 用来给表达式赋值,并返回一个状态码。用来进行逻辑比较或赋值运算 # 算术扩展可以看做是类似 int 型返回值的函数,而算术赋值是类似 vo... 阅读全文
posted @ 2012-08-29 13:38 郝玉琨 阅读(353) 评论(0) 推荐(0) 编辑
摘要: > 数组NAMES=(max helen sam zach)NAMES[*] 取出所有数据,然后作为一个元素返回NAMES[@] 取出所有数据,但是返回的仍然是一个数组,可以用来完成数组的赋值> export使父进程的变量对子进程可见、可用;一旦利用expert生命一个变量作为参数,shell就会把变量的值传递到子进程得到调用环境中,使用的是传值调用 每个子进程在使用变量时得到变量的副本。eg. export cheese=american或 cheese=american export cheese> typeset函数内,局部变量用typeset修饰,避免重名------ 阅读全文
posted @ 2012-08-27 20:27 郝玉琨 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 在关系型数据库里面,每一项操作,都是要放在一个事务中完成。自顶向下看来,事务处在顶层的位置,事务统领了查询,统领了日志,统领了存储。 按照类似于软件工程中 喷泉模型 的思路,用层层迭代的方式,来看待关系型数据库管理系统从小到大各个组件的扩张,最初解决了无语义的字节存储,然后附加上日志的底层实现,再加上事务(包含了日志的语义信息处理),就得到了一个最小的系统。之后的查询,优化等都可以在这个最小系统... 阅读全文
posted @ 2012-08-27 14:56 郝玉琨 阅读(745) 评论(0) 推荐(0) 编辑
摘要: > vi复制粘贴 光标移动到要复制的部分的开头,Esc退出插入模式,按v进入Visual模式,用hjkl选中要复制的部分 按Y或者yy,复制 移动光标到目标位置,按p,粘贴 > echo –e 参数 –e 可以使echo解释由反斜杠“\”转义的字符,转义字符一定要由双引号引起来 echo –E 与-e相反,禁止对转义字符“\”的解释,默认如此 > echo –n 禁止换行符终止... 阅读全文
posted @ 2012-08-26 16:09 郝玉琨 阅读(208) 评论(0) 推荐(0) 编辑
摘要: log的类图如下: 图 1 Log 类图 > BasicLogRecord 最基础的日志读写的类。提供方法读取一条日志记录。但是,这各类紧限于按次序,在Page内顺序读取一个int值或一个string值。BasicLogRecord类操作的粒度是字段,即在一个LogRecord内,读字段的值。因此,本类对象之外,需要有组件了解一条LogRecord中值的类型及个数,管理本类的操作。 成... 阅读全文
posted @ 2012-08-25 21:34 郝玉琨 阅读(799) 评论(0) 推荐(0) 编辑
摘要: 几句闲话:08年还是大二的时候,在导师的建议下,读了布朗大学Edward Sciore教授做的一个教学RDBMS,叫simpledb,然后和同学一起照猫画虎实现一个C#版本的,当初只是为了了解RDBMS的实现原理。几年后,电面时几次被问到当初的这个小东西,发现自己竟然有好多细节忘记了。不由生出心思,再读一遍。或许,RDBMS不想以前那么火了,Nosql在大行其道,不过,想起在《Readings in database》里面有一篇论文叫《What goes around, comes around》,复习一些,还是会有些裨益吧。而且,simpledb麻雀虽小,五脏俱全,对于了解RDBMS的底层实 阅读全文
posted @ 2012-08-16 20:06 郝玉琨 阅读(3885) 评论(1) 推荐(0) 编辑
摘要: 今天主动打到上次面试的电话那里,问了下二面的结果。。。悲剧鸟。问了下原因,说Linux、分布式系统的底层知识不满意,特别说了关于数据库的索引、存储的底层实现,答得不好。。。好吧,略伤感之余,想起一句话,出来混迟早是要还的。当初虽说把系统做出来的,但是这几年过去了,真的有些忘了,这期间也确实没时间把整个项目代码重新看一遍。当初写程序的时候,多少还是有些疏漏,文档什么的做的也不那么好。。。略忧伤下,再来过吧!今晚开始,每天一篇,把simpledb#再来一遍! 阅读全文
posted @ 2012-08-09 17:45 郝玉琨 阅读(396) 评论(1) 推荐(0) 编辑
摘要: 前段去了趟丽江,好久不更新了。说来也巧,到达丽江第一天,正好是周五,中午正在古城的KFC吃东西,结果接到一个010开头的电话,通知我周一电话二面,好吧。旅行的第一天额亲。木有办法,周六、周日、周一都屯在了屋里,准备二面。由于第一面是问的项目,猜想二面是不是问点常规的,算法数据结构神马的。结果,二面问的还是项目。搞不清某度的套路了。连内推的师姐也大呼诡异。入正题了:第一个,问做的那个教学DBMS怎么实现表的存储的?由于设计比较简单,所有的表,单个存储为.tbl文件。字段设为定长。有基本的tableinfo.tbl, indexinfo.tbl, viewinfo.tbl,这三个表作为数据字典。在 阅读全文
posted @ 2012-08-03 22:13 郝玉琨 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 实在睡不着,整理下以前项目的代码。跟着项目代码来的,可能略琐碎,见谅。贴了较多代码,只为方便自己以后再用的时候查阅。1、Excel与Datatable的互操作,相互导入导出。简单地说,Excel的表结构与DataTable,以及包含了DataTable的DataGridView,格式上是一样的,相互导入导出,就是对齐格式,然后从源拷贝ElementItem的内容到目标Item。>DataGridView中的数据导出至ExcelDateGridViewExportToExcel 1 // 公用函数 将选定的DataGridView中的内容,输出到Excel表中 2 ... 阅读全文
posted @ 2012-07-16 05:22 郝玉琨 阅读(867) 评论(0) 推荐(0) 编辑
摘要: 配置文件在/etc/network/interfaces cd /etc/network/ sudo vi interfaces 需要修改权限,否则无法保存 ls –l 默认为644 sudo chmod 777 interfaces vi interfaces 修改内容如下,注意的是,网卡的名称需要事先查看下 之后,重启下网卡,就ok了,如果网卡名称设置不对的话,会... 阅读全文
posted @ 2012-07-15 16:28 郝玉琨 阅读(1971) 评论(0) 推荐(0) 编辑
摘要: From http://duanple.blog.163.com/blog/static/709717672011330101333271/ thx:) Orz 一.google论文系列 1. google系列论文译序 2. The anatomy of a large-scale hypertextual Web search engine 3. 面向... 阅读全文
posted @ 2012-07-14 23:56 郝玉琨 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 毕设做实验需要从网上下几万张图片,以前用师兄做的Flickr下载器,用Flickr的API完成的。但是Flickr上的图片是用户分享居多,通过指定的关键词去搜索,很多时候无法得到满意的图片。在Google、Bing上虽然能得到比较好的搜索结果,但是Google早早地停用了搜索的SDK,CodeProject上的例子是N年前的,试过都不能用了;Bing虽然现在还有SDK,但是看官方的通告,大约是8月份也要停用了,而且现在提供的下载限制每天一张,木有办法,只能自己想招了。 在查看Google图片搜索页面的源码时,发现在<a>的href属性里面包含了图片原始的url,所以就想到解析搜索结 阅读全文
posted @ 2012-07-11 22:06 郝玉琨 阅读(4052) 评论(12) 推荐(1) 编辑
摘要: From: http://yanbohappy.sinaapp.com/?p=106 Thx a lot:) 目前的HDFS中数据是靠三备份triplication来保证冗余的。显然这只是一个简单有效的方法而不是一个非常elegant的方法。三备份浪费了大量存储空间,在集群规模较小的时候可能还不是那么明显,但是对于大规模集群就比较明显了。如果按照1GB存储空间的成本是1$来算,如果数据规模是5T... 阅读全文
posted @ 2012-07-10 23:33 郝玉琨 阅读(3480) 评论(0) 推荐(0) 编辑