The Mirages

樱桃沟夹事

跟你在一起也很长时间了。现在怎么觉得我们两的共同语言越来越少了,你喜欢的我就勉强跟着喜欢,而我喜欢的你却骂我脑子有毛病。 是阿,我是认识一个脑子有毛病的人,可惜她已经死了,跟电视里那个人一样的毛病–脑瘤。 我知道你的工作压力比我高许多,可也不能因为这样而生闷气啊,这样不光对自己身体不好,对于家人也不好。你以前不是什么事情都喜欢说出来啊,可为什么现在不说了,只是从表情上看出来不大高兴。我知道你的意思是想让我们大家猜哄着你,可你也是大人了啊,可不能跟小孩子一样。我希望的是以后有什么事情可以直接说出来,虽然我看过心理学,但还是不怎么懂你啊。看来我得理论和实践共同成长,也许能做到以后你一个小动作就能知道你想啥了,不过那样会不会觉得我恐怖了呢? 另外一个是穿衣和化妆。我是不反对你在这上面花时间的,我觉得这样挺好,但是你的衣服大多看着不好,感觉太随便了那种。我想对于你工作来说真不适合这样穿。应该更正式一点,你买的休闲西服上的也都不穿,要说配裤子,那我们就买去啊。女孩子还是少穿牛仔裤这样的较好,得淑女点。化妆倒还好啦,本来淡淡的妆就好了,最好是不用化就好,毕竟化妆品都是化学成分,对于皮肤总不会好到哪里去的。看看那些明星不化妆的那个脸,我相信这些都是化妆品给弄的。毁的越多就越化,越化越毁,越毁越化。 好了,虽然这样,我觉得我们家宝宝还是不错的。可能由于单位同事的关系,你对生活的物质需求越来越高,你从小就是吃你爸做的饭长大的,怎么现在就吃不习惯了呢,我都吃的挺习惯的。看来人跟人的差距还是大的。对于我来说外在的物质需求真的很简单,很无所谓。关键是有书看,有事情可做,有梦想,这就心里不再空虚了。我希望每天都能昨天一样,可以安静的写文档看会书,但是这样就让你觉得我不理你了。所以还是做早起的鸟吧,这些事情留在早上来做,请允许我通过1周的时间来调整吧。那样晚上就可以配着你,而且也不耽误学习,但是我现在怕起的太早会打搅到你。 关于兴趣吧,我觉得吹口琴挺好,虽然不会,但是我知道你其实会的,音乐对于开拓自己很有好处的,真羡慕小田子会那种高级乐器。我要会就好了。还有昨天说的折纸啥的,你太小看这些小玩意,这个我还真准备当作爱好来培养,智能电子那个东西要买很多外部设备,而折纸真是材料太简单了。小玩意玩出大花样,不是之前跟你说过之前有个老太太只会剪纸,结果美国人把她当文物一样移民到美国去了。生活中很多事情我们看着简单,但是其实还有很多深入挖掘的东西。你不懂计算机,但是你知道这个内部是多么的复杂,做一个像《愤怒的小鸟》这样的游戏需要多少人写多少代码吗? 这些都是你不可想象的。 好了,先就说这么多吧!

MySQL服务器的linux性能优化和扩展技巧

作者:Yoshinori Matsunbu

作者现在是DeNA公司的数据库和基础设施架构师。
之前在SUN公司工作。
他也是HandlerSocket的作者。
这个是MySQL的NoSQL插件。

本文是根据他的PPT整理而成的,如有不正确敬请指教。

本文有可以直接点击下载:linux性能优化技巧

本文主要的内容有如下:

阅读全文 »

对于常看PDF文档的人来说,批注是非常有用的功能。

而对于我这样经常看英文文档的,有时候旁边加个翻译什么也是常有的事情。最近发现xournal是个不错的pdf批注的工具。可以用很多工具进行批注。默认保存的格式是xoj。但是一旦我们批注完成想进行发布和保存的时候可以导出为pdf格式。 5470057896_e2391bdecc_z.jpg 在ubuntu直接sudo apt-get install xournal 安装就可以了。 也可以上项目首页:http://xournal.sourceforge.net/ 帮助文档在:http://xournal.sourceforge.net/manual.html

sohu系统工程师的面试题还是比较内容全面的。下面就是我之前进的时候的一些笔试题目,之后还有好多面试的,是一轮又一轮阿。应该说这些都是比较基础的题目,而不会考你一些源码啊,这其中还有一些开放的题目。比如15和16题基本可以根据自己的想法来写。

  1. GPLV2协议的主要内涵是什么?
  2. UNIX,Linux,BSD,Solaris,System V之间的关系是?
  3. Linux开机引导的步骤
  4. inode和VFS的涵义?  文件权限 4755的涵义?
  5. 64位和32位的主要差异。
  6. Linux内存管理的工作模式。
  7. DNS反向解析的工作过程。
  8. traceroute的工作原理。
  9. TCP3次握手过程。
  10. TCP滑动窗口原理。
  11. time_wait, fin_wait2的涵义。
  12. http1.1中keepalive1.1的涵义。
  13. apache的apxs和dso的关系。
  14. SQUID的cache置换基本工作原理。
  15. 大型web提供性能的方式。
  16. SCSI标准为什么被sas取代。
  17. RAID0,1,5,0+1涵义。

注:这个手册只是为了方便自己看而翻译,并不是官方的。其中省略了后面getting ext4 code的部分,官方手册请点https://ext4.wiki.kernel.org/index.php/Ext4_Howto

ext4-howto中文版

通用信息 ext4在Linux2.6.28作为了一个稳定版本的功能发布了,同时所有现代的发行版本都包含了它(有些还作为默认文件系统),所以你使用一个新的发行版本的话,也许你已经使用上了ext4,那就不需要改成ext4。

在生产环境中它是可以安全使用的,但是作为任何软件,它都是有bug的(在第一个稳定版本中都有可能被隐藏)。任何周知的严重的bug都会被迅速修复。如果你发现一个严重的bug,你可以联系ext4的开发者在ext4 mailing list(http://vger.kernel.org/vger-lists.html#linux-ext4)。他们通常也会上IRC(https://ext4.wiki.kernel.org/index.php/IRC)。 ext4的特点 兼容性 任何现有的ext3文件系统都可以用ext4重新mount,而不需要任何格式化改变。无论如何,我们都可以在只读模式下通过一串命令来升级ext3文件系统来利用ext4的一些特性。这就意味这你可以增加性能,存储限制和特性而无需重新format或者重新安装系统和软件环境,如果你在生产环境需要ext4的优势,你就可以升级你的文件系统。这个过程是安全的,并且对你的数据是没有风险的(当然,备份你的重要的数据是应该的,就算你没有升级文件系统也是应该的。但是这个升级在RHEL6中是没有售后服务的)。ext4只会对新的数据使用新的数据结构,而老的数据结构会继续保留,当需要时候也会进行对写它们。这就意味着,如果你升级到了ext4,那就就不能再退回到ext3了。 更大的文件系统和文件大小 现在,ext3支持最大16TB的文件系统大小和最大2TB的单个文件大小。ext4增加了48bit的block地址,所以它支持最大1EB的文件系统和最大16TB的单个文件大小。为什么是48bit而不是64bit呢?因为在让ext4支持64bit之前我们还有一些限制需要被修复,所以没有在ext4中被使用。ext4数据结构的设计已经在思想上确认了,所以未来ext4可能在一些点上会实现完整的64bit。1EB在那之前应该是足够的。 注意: 创建大于16TB的文件系统的代码已经在写这篇文章的时候有了。它将在未来会被发布。 1EB=1024PB 1PB=1024TB 1TB=1024GB 子目录扩展 在ext3中现在单个目录中最大的子目录数是32000个。ext4打破了这个限制,允许拥有无限制的子目录。 extents 传统的类Unix文件系统象ext3这样的都使用间接的block映射方式来保持每个block相对应的文件的数据的block的track。对于大文件这是低效的,特别是对大文件进行删除或者清空操作的时候,因为对每一个单一的block的入口都进行了映射,而大文件拥有很多block—>大量的映射,于是就有了缓慢的操作。现代文件系统使用了不同的方法叫作”extents“。一个extent本质上就是一串相邻的物理block。在本质上说“数据在后面n个block中”。比如,一个100MB的文件会被分配到单个那样大小的extent,来替代创建间接的25600个block映射(4KB每个block)。非常巨大的文件也会被分在多个extent中。extent提升了性能,也减少了磁盘碎片,所以extent促进了在磁盘上的保持连续layout。 多block分配 当ext3需要写数据到磁盘上,它的block分配器就会确定哪些空余的block可以被用作写入数据。但是ext3的block分配器在同一时间只能分配一个block。这就意味着如果系统需要写入100MB的数据,在写入的前一个点,它需要调用25600(100MB/4K)次block分配器。这样不仅是没有效率的,它不允许block分配器优化分配策略,因为它不知道有多少数据已经被分配掉的,它只知道单独的block是否被分配掉。ext4使用“multiblock allocator”(mballoc)在一次调用的时候就分配许多block,用来替代一次调用分配单独一个block,避免了一部分的负载压力。这种方法提升了性能,尤其在延迟分配和extent下会更有用。这个特性不影响磁盘的格式。而且ext4的block/inode分配器还有一些其他的提升,会在后面进行描述。 延迟分配 延迟分配(http://en.wikipedia.org/wiki/Allocate-on-flush)是一个性能特性(它不更改磁盘格式)在一些现代的文件系统中诸如XFS,ZFS,btrfs或者Reiserfs4等,它会尽可能延迟block的分配,相反的一些传统的文件系统(如ext3,ext2,Reiserfs3)都是尽可能快的进行分配block。比如当一个进程write(),文件系统的代码就会立刻根据数据将要分配的地方分配block,甚至数据当时还没有被在写到磁盘时它有时就会保存在cache内的数据。这种方法已经落后了。比如当一个进程连续的往一个文件里写入数据,连续不断的write()为数据分配block,但是它不知道文件是否持续增长。而延迟分配就在另一方面,当进行write()时它不会立刻分配block,事实上,它会一直延迟保存在cache中的文件的block的分配,直到它真的是要写入到磁盘上。这给了block分配器以机会来优化那些在老旧系统中所有没有的分配。延迟分配能跟先前两个提到的特性multiblock分配和extent下很好的运行,因为当文件最后写入到磁盘它需要分配到extents中,而这些extent已经通过multiblock分配器分配完成对应的block,这当中会有很大的工作负载。在一些工作负载中这样性能会更好,同时磁盘碎片也会大大改善。 快速fsck fsck是非常缓慢的操作,特别是第一步:检查文件系统中所有的inode。在ext4中,每一组inode表最后都会保存未使用的inode列表(为了安全还含有校验和),所以fsck就不需要检查那些inode。结果是完整的fsck的时间将会提升2到20倍,根据已使用的inode(http://kerneltrap.org/Linux/Improving_fsck_Speeds_in_Ext4)。当在fsck时候必须通告未使用inode的列表在不是ext4的时候。这就意味着当你必须运行fsck来获得未使用inode的列表时,只有下一次fsck运行的时候会更快(任何时候把ext3转成ext4必须先通过fsck)。还有个特性就是fsck加速“灵活的block组”–这个同样能加快文件系统操作。 日志校验 日志是磁盘使用率最高的部分,动了这个部分的block很有可能导致硬件故障。从有问题的日志中进行恢复只会导致更大的问题。ext4会校验这些日志数据来知道是否日志block是否已经失效还是有问题。日志校验还带来一个意外的好处:它把ext3中的2段提交变成了直接提交,在一些情况下对于文件系统操作加快了20%-故可靠性和性能同时都会提升。(注:日志校验提升性能的部分-异步日志记录现在已经被默认关闭,等将来它更可靠之后才会被默认开启) 无日志记录模式 日志记录通过不间断记录磁盘更改的日志来保证文件系统的完整性。当然,它会产生一些额外开销。一些人会有一些特殊的需求和工作需要关闭日志模式并牺牲完整性。在ext4中日志记录功能可以被关闭,能小小的提升性能。 在线磁盘整理 (这个功能已经开发完成,在未来的版本中会包含发布)。由于有延迟分配,extent,以及multiblock分配这些帮助了系统减少碎片,但是只要使用文件系统就会产生碎片。比如:你在一个目录下写3个文件接着写入到磁盘上。有一天你需要更新当中那个文件,使那个文件增加了1bit,然后没有足够的空间给它了。你不得不把多出的部分移动到通过查找的磁盘的其它地方,或者分配文件连续的其它地方,远离了原先的另外2个文件,当一个应用程序需要读取在这个目录下的所有文件就会通过查找来进行(一个文件管理器会对整个目录做一个缩略图)。另外,文件系统只关心确定的文件碎片类型,它不知道比如它必须保留所有相邻的启动相关的文件,因为它不知道哪些文件是启动相关的。为了解决这个问题,ext4将支持在线的磁盘碎片整理,同时e4defrag工具能够整理单个文件和整个文件系统。 inode相关的特性 更大的inode,纳秒级的时间戳,快速的扩展属性,inode预订。。。 更大的inode:ext3支持配置inode的大小(通过mkfs -I参数),但是默认的inode大小是128byte。ext4中将默认的变为256byte。这是为了迎合一些扩展的字段(象纳秒级的时间线或者inode版本),然后inode剩余的空间用作存储扩展属性。这导致访问这些属性更快,提升了那些用到这些扩展属性的应用程序的性能通过3-7次的一个因素。 inode预订存在于当一个目录被创建时都会预订一些inode,并期望在未来会被使用。这提升了性能,因为当一个文件在一个目录下被创建时它们会使用这些被预约的inode。因此文件被创建会删除会更有效率。 纳秒级的时间戳意味着inode信息象“modified time”将可以使用纳秒级别来代替ext3中的秒级别。 连续的预分配 这个特性,在最新的kernel版本中的ext4是可用的,它通过文件系统的glibc仿真实现,但是没有支持,它允许应用程序预分配磁盘空间:应用程序告诉文件系统预分配空间,然后文件系统会预分配必要的block和数据结构,但是这些都是没有数据在里面的直到将来应用需要写数据到里面。这就跟p2p应用程序会预分配自己接下来几个小时或几天的空间来用作下载,但是通过文件的一个通用API来实现会更有效率。这有许多种用途:首先避免应用程序(比如p2p应用程序)通过0来填充满一个文件是非常不经济的。第二会改善磁盘碎片情况由于block会在同时被连续的分配。第三确认应用程序将要需要的磁盘空间,这对于实时的应用程序是非常重要的,因为没有预分配文件系统就需要得到完整的重要操作。这个特性是可用的通过libc posix_fallocate()接口。 默认的隔离 这是一个提升文件系统完整性的一个选择,但是会牺牲一些性能(你可以通过”mount -o barrier=0”来关闭它,推荐你在进行压力测试的时候关闭它)。通过这篇LWN的文章(http://lwn.net/Articles/283161/):“文件系统代码必须在写提交日志记录之前先确认所有的事务信息已经产生在日志中了。仅仅根据正确的顺序写还是不够的;现在的驱动为了更好的性能都会包含大量的内部cache用来记录操作。所以文件系统必须在提交记录之前清楚地通知磁盘获得所有在存储上日志数据。如果提交的数据写别写入,那日志有可能是不完整的。内核的block I/O子系统通过使用隔离是能力解决这个问题的;在本质上,一个隔离就会禁止任何block的写入,直到所有隔离提交前的block都写入到存储上。通过使用隔离,文件系统可以确定在磁盘上数据结构在所有时候都仍旧一致的。” getting ext4 code 略…………

据说冯小刚自己最喜欢的片子是《一地鸡毛》这部10集电视连续剧,于是我就在优酷上看了下,发现还真是不错。

在94年的时候大学生还稀缺资源,自然进入中央各个部门当个小科员不成问题,但是那个时代做官可不怎么样,穷啊,全民都在做生意。

当初流行这句 “10亿人民9亿倒,还有1亿在思考。” 大家都在思考怎么经商来着。这就是为什么结局的时候小林幻想自己成为了一个擦车的。这在现在看来是不可思议的,可在当时这是十分正常,父母一辈好多人当初 都下海了。

俗话说“30年河东,30年河西。”看来这个世界啊就是到处转啊。

从经济学上看也是如此,如果一个人一直坚持一开始的选择,那他最后获得的收益往往是最高的,而对于那些中途改变自己的选择,那肯定是没多少收益的。

这种例子在现实生活中比比皆是,我们常说的“傻人有傻福”基本就是这个道理。

阅读全文 »

学习古文一定要懂古代汉语,特别是先秦的古文,

那文字的意思应该跟现在的差别很大,而唐宋之后的文字基本跟现在的差别就相对较少。 应该说我古文基础还可以,基本大体意思可以看明白,但是有时候精读的时候还是会有点问题。特别是相近的词进行辨析的时候。 在看了《古代汉语》之后算是有了一点点明白。下面我就根据书中的内容进行整理的,也备自己以后看书时候查验。 言 1 動詞: 說話,說。 論語中有“食不語,寢不言”。左傳中有“豈敢言病” 2名詞: 話,言論。 論語中“聽其言,觀其行” 語 1動詞: 談話  論語中有“食不語,寢不言”  李白有詩“不敢高聲語,恐驚天上人” 2讀yu,第四聲: 告訴。 左傳中“公語之故,且告之悔”。 3名詞:言論,話。 論語中“吾聞其語矣,未見其人也” 4名詞: 諺語,俗話。“語曰:‘脣亡則齒寒’” 这2个词都有动词“说话”和名词“言论”的意思。 “言”是自动地跟他人说话 “语”是指回答别人的問話,或是和人谈论一件事。 “言”“语”用作及物动词时,分别就更明显了。“言”一般能带事物的宾语(言病,言事),如果指人,只能是他指,而不能指说话的对方。“语”既能带指事物的并与,可以指谈话的对方。

买房真是一个辛酸的过程。到现在我还没买上。

关键是周围意见分歧还挺大。父母派基本觉得以后是下跌的趋势,而媳妇这一方觉得以后还是涨,毕竟是被涨怕了。但是综合考虑还是应该相信父母的意见,可要说服媳妇也是挺难的事情。可以后买房越来越难,所以一定要用好第一套房这个入场券啊。我知道对于一个女人来说,家就是她的全部。所以我发誓一定要让她住上大房子,不管是要奋斗多少年。 希望下一个情人节的时候能够跟媳妇住上新房子,大房子。 应该说北京的房价正在一步步趋同的过程,特别五环以内以及附近。3环左右的一些老楼也3W,清河,回龙观什么的也3W左右。那看来3环内老公房会越来越吃香的。看看小区里借房子的人越来越多。 买房子不光是看地段,也要看周边配套。按北京的道路交通来看,地铁是必须的了。不然你开车啥的根本算不准时间阿。而地铁是尽量选择南北或者东西贯通的,这样就算换乘也方便,而不要选择断头线,比如八通线,房山线这样的。 新房和二手房也是一个抉择的过程。新房交易成本低,但是北京新房估计没有适合刚需的,而且新房基本都是期房,不拖你个2,3年估计很难交房。而这2,3年的你的租房成本也必然要计算在内的。而二手房如果是5年以内的契税也是非常可观的。所以最好是5年-6年的房子是最好的,20年以上的房子估计连贷款也难办了。 同样一个小区的房子价格也会有1K-3K的差距的,这个主要是朝向和位置上。然后小户型的均价明显是比大户型的要高许多。而且越是新的房子,这个公摊面积越大。有些带电梯的公摊会达到30%。怪不得当初英国姥要在中国打官司呢,说买房全世界都按照使用面积来算的,为啥中国是建筑面积呢。 其实看房选房只是慢慢买房征程的第一步,后面还有好多好多的事情需要办理产调,看下房产证信息啥的,然后才是起草和签署合同,接着是付首付和契税,首付一般是要走第三方监管的,然后是贷款,有公积金和银行贷款2种,时间大概是20天左右,接着才是过户,最后才是放款和交房。天那,这个流程也太复杂了。怪不得大家都找中介呢。 而新房相对来说简单的多,主要是首付和贷款办理,买之前查验开发商各种资质和证件。主要还是合同内容,这个建议给身边懂法律的朋友看看,因为我发现我之前要定的那个新房楼盘的合同存在很大的问题,不知道住建委怎么让这样的合同审核通过的。一个住房买卖合同居然没有户型图以及响应的长宽以及位置信息,这种合同怎么可以签署呢? 看房还真是一个体力活,对于我这种劳动人民的儿子,只能是公交地铁加11路进行看房,一个中介接着一个中介,一个楼盘接着一个楼盘。双休日也不在是双休日了。

要创建ext4文件系统之需要运行

1
mkfs.ext4 /dev/device

默认的选项对于大部分使用情况都是最优化的。
具体的参数可以 man mkfs.ext4 获得

对于条带化块设备(如RAID5),条带的属性可以在文件系统创建的时候进行指定。在ext4中使用合适的条带化设置可以大幅的提升性能。

当在lvm或者磁盘卷上创建文件系统,mkfs.ext4选择一个最优的参数。这种参数可能对于一些可以导出参数信息到操作系统的硬件的RAID也是适用的。

对于特定的条带化参数,可以用mkfs.ext4的-E参数来指定
stride=stride-size
指定RAID的chunk大小

阅读全文 »

在RHEL6中ext4就会成为了默认的文件系统,

我想还是有必要了解个大概。 ext4文件系统是对于ext3文件系统的扩展。ext4已经是RHEL6的默认文件系统了。它能够支持最大16TB的单个文件和1EB的文件系统。它支持无限数量的子目录(而ext3是最多32000个子目录) 主要的特点: ext4使用extents(不像ext3和ext2那种block映射的模式),这提高了当使用大文件时候的性能和减少了大文件的元数据过载。另外,ext4标记那些未被分配的block group和相应的inode表,这样就可以当文件系统check的时候可以跳过它们不检查。这样就可以更快的检查文件系统,这个在越来越大的文件系统上是非常有用的。 分配的特点 ext4文件系统的分配模式: 持续的预分配 延迟分配 多个块同时分配 stripe-aware分配:对于底层的条带化存储来说配额和I/O是一样的一种分配行为。这是依赖于在mkfs的时候有效的条带化信息。做一致的分配I/O能够有效的避免无效的读-修改-写的周期在底层存储上。 由于延迟分配和其它的性能加速,导致ext4写文件到磁盘的行为跟ext3有所不同。程序写数据到文件系统并不保证写到磁盘上,除非程序在后面执行fsync()方法。 而默认的,ext3都会自动的几乎是立刻的强制创建文件到磁盘上,甚至不需要执行fsync()方法。这种行为隐藏了问题当程序没有使用fsync()来确认写数据到磁盘上。ext4文件系统在另外一方面,经常会等待几秒去把更改的数据写到磁盘上,允许合并和更改写比ext3拥有更好的磁盘性能。 注意事项: 不像ext3,ext4文件不用强制数据写入到磁盘就跟事务提交一样。本身,它花费更长缓存写然后刷新到磁盘上。在任何文件系统,使用数据完整的回调类似fsync()来确定数据写入到永久的存储中。 其他特性 ext4同样支持以下特性: 增强的属性(xattr),允许系统给每个文件赋予其他的name/value值。 磁盘配额日志,这样就避免在系统崩溃时候漫长的磁盘配额检查。 亚秒级别的时间线。 ext4主要的特性就是上面这些。下面一些对上面的解释。 在ext4中引入了extent的概念, 下面一些内容是摘自:http://www.ibm.com/developerworks/cn/linux/l-cn-filesrc5/ 所谓extent就是描述保存文件数据使用的连续物理块的一段范围。每个extent都是一个ext4_extent类型的结构,大小为 12 字节。 图 ext4中extent 树的布局结构

下面这个是ext3 与 ext4 磁盘布局对比。从这个图中我们可以很清楚的看到ext4中多了个group的概念

0%