Rongfeng 的个人资料凤影渡霞照片日志列表更多 ![]() | 帮助 |
凤影渡霞看不尽的荣光霞影,读不完的凤藻华章 11月10日 慕田峪长城 昨天去慕田峪长城了! 长城,我已经去过好几回了,体验过居庸关的雄壮、目睹过箭扣古长城的凄惨,聆听过山海关的幽怨......有道是:曾经沧海难为水,除却巫山不是云。慕田峪长城还有什么值得我去的?走之前,没敢有太多期望,只去拍拍相片而已;回来后,从心底觉的不虚此行,没有枉费我一天时间。 到了慕田峪才知道,原来这段长城是明朝大将徐达修建的。我从来就很欣赏徐达,因而心中顿生好感。徐达绝对是偶像级人物,明朝开国大元帅,常胜将军,想当初以摧枯拉朽之势直捣元大都,逼走元顺帝。徐达绝对可以入选中国历史上的十大将军。 闲话少说言归正传。我们来的日子不错,晴空万里,山上色彩斑斓,另外慕田峪长城还是比较容易爬上去的,所有条件都有利于拍相片。慕田峪长城真是美不胜收,如果要在众多长城中选美的话,我定要投它一票。 8月2日 PERFORMANCE-MONITORINGPerformance-Monitoring 是Intel提供的可以监测统计CPU内部所产生事件的一组方法。在Intel的手册上介绍了两类CPU事件监测方法:architectural performance monitoring 和 non-architectural performance monitoring。Architectural performance monitoring与平台(CPU系列)无关但所能监测的事件少;non-architectural performance monitoring与平台密切相关,能监测大量事件。我仅关注architectural performance monitoring。
Architectural performance monitoring介绍 CPU通过两个寄存器来完成事件监测工作:事件选择寄存器IA32_PERFEVTSELx ( programming performance event select registers)和计数器IA32_PMCx (performance monitoring counter)。在计数前,设置事件选择寄存器并将计数器清零;计数结束时,读取计数器。 IA32_PERFEVTSELx与IA32_PMCx都是成对使用,共同完成计数工作。IA32_PMCx寄存器对应于从0xc1开始的一段连续地址,IA32_PERFEVTSELx寄存器对应于从0x186开始的一段连续地址。每种CPU的寄存器位数和可以使用的寄存器对数可能不一样,但可以通过CUPID.0AH:EAX指令来获取这些元信息: Bits 07 - 00: Version ID of architectural performance monitoring, If >0, architectural performance monitoring capability is supported. Bits 15- 08: Number of general-purpose performance monitoring counter per logical processor Bits 23 - 16: Bit width of general-purpose, performance monitoring counter Bits 31 - 24: Length of EBX bit vector to enumerate architectural performance monitoring events 事件选择寄存器IA32_PERFEVTSELx的配置 Event select field (bits 0 through 7):事件选择码区填写需要监测的事件码,这些事件码都是事先定义好的,可以在Intel的手册中查找。 Unit mask (UMASK) field (bits 8 through 15):掩码区填写与事件选择码对应掩码,掩码与事件码共同使用来确定要监测的事件,掩码与事件码一样是事先定义好的,可在Intel手册上查找。 USR (user mode) flag (bit 16):标识是否统计CPU处于用户态(CPU处于特权级别为:1、2、3)下发生的事件。可以与下面的OS位配合使用。 OS (operating system mode) flag (bit 17):标识是否统计CPU处于系统态(CPU处于特权级别为0)下发生的事件。可以与上面的USR位配合使用。 EN (Enable Counters) Flag (bit 22):计数允许位。注意:在写计数器IA32_PMCx之前,必须清除计数允许位(设为0)。 Counter mask (CMASK) field (bits 24 through 31):计算器掩码,如它不为零,但事件发生是,只有它小于计数器的值,计数器计数才会增加1。 计数示例 下面代码是统计事件DTLB_MISSES.ANY,其事件码为0x08,掩码为0x01。 //寄存器地址码 #define IA32_PMC0 0xc1 #define IA32_PERFEVTSEL0 0x186 //事件码及其掩码 #define EVENT 0x08 #define MASK 0x01 Int nEventMask, nCount; Int nEventRegisterHigh,nEventRegisterLow; nEventMask = IA32_PERFEVTSEL0;
nCount = IA32_PMC0; nEventRegisterHigh=nEventRegisterLow=0; //设置事件码及掩码 nEventRegisterLow |= EVENT; nEventRegisterLow |= MASK<<8; //设置用户态系统态标识位 nEventRegisterLow |= 1<<16; nEventRegisterLow |= 1<<17; //清楚计数允许位 nEventRegisterLow &= ~(1<<22); //设置事件选择寄存器 wrmsr(nEventMask, -(u32)( nEventRegisterLowl), -1); //计数器清零 wrmsr(nCount, -(u32)( 0), -1); //设置计数允许位 nEventRegisterLow |= 1<<22; wrmsr(nEventMask, -(u32)( nEventRegisterLowl), -1); 。。。。//计数中
//读起计数结果
rdmsr(nCount, nEventRegisterLow, nEventRegisterHigh); Non-architectural performance monitoring介绍 (还不太了解这方面的知识!) Linux内存管理Linux采用的非一致内存访问(NUMA)模型将内存划分为多个节点(node)。但在80x86结构中,使用一个单独的节点来管理所有物理内存。 Linux将每个内存节点的物理内存划分为3个管理区: ZONE_DMA: 包含低于16M的内存页框,为外设准备的 ZONE_NORMAL: 16M—896M内存页框 ZONE_HIGHMEM: 高于896M的内存页框,内核直接寻址空间0—896M,高地址必须通过内存映射才能访问,如:永久内核映射、临时内核映射。 当内核调用一个内存分配函数时必须指明请求页框所在分区。 内核动态分配内存时,可能因为空闲内存不足而进行内存回收,进而导致内核控制路径的阻塞。但是有些情况下(如:中断、临界区)是不能阻塞内核控制路径的,为此Linux开辟了保留内存池来提高这种原子内存分配请求的成功率。保留内存池就是在每个管理区中划出一小块内存区域,一般的内存请求下不分配出去而留给原子性内存请求。当管理区空闲内存小于某个阈值时就启动页框回收算法,来保证保留内存池的安全。 伙伴系统(buddy system) 伙伴系统关注大块内存分配,致力于解决外碎片问题。它将所有的空闲页框分成11组,保存在11个链表中,每个链表分别包含大小为1、2、4、8、16、32、64、128、256、512、1024个连续页框。 分配算法:首先遍历不小于所需内存大小的最小链表,找到空闲块则分配出去;否则,遍历下一个链表(块大小刚好是上一个链表的两倍)找到空闲块,将空闲块一分为二,其一插入上一个链表,其二分配出去;若本链表也无空闲块,则遍历下一链表直到第11个链表(含有1024个连续页框,即每块4M);否则分配失败。 回收算法:回收是分配的逆过程,试图合并两个连续的块成一个更大的块。 Slab分配器 (Slab分配器其中的细节还不甚了解) Slab分配器关注小块内存(<1K)分配,致力于解决内碎片问题。它将内存区看作对象,有构造函数与析构函数。这些对象的构造初始化耗费大量时间。slab分配器把那些析构后的对象保存在内存中,而不是将它释放掉,在内核下次分配请求时就可直接使用这些保存的对象,大大提高效率。 动态内存管理函数 struct page * alloc_pages(unsigned int gfp_mask, unsigned int order) 分配2order 个连续页,返回第一个页框描述符地址。可用通过以下函数得到内存地址: void * page_address(struct page *page) 或者通过以下函数直接得到内存地址: unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order) 如果只需分配一页内存可以调用以下两个函数: struct page * alloc_page(unsigned int gfp_mask) unsigned long __get_free_page(unsigned int gfp_mask) 以下函数可以获得初始化为0的一页内存: unsigned long get_zeroed_page(unsigned int gfp_mask) 以上分配内存的函数对应的释放内存函数: void __free_pages(struct page *page, unsigned int order) void free_pages(unsigned long addr, unsigned int order) void free_page(unsigned long addr) 上面的内存分配函数都是以页为单位,下面介绍两对以字节为单位的内核内存分配函数: void * kmalloc(size_t size, int flags)/void kfree(const void *ptr) 分配物理上连续的内存区域; void * vmalloc(unsigned long size)/ void vfree(void *addr) 分配在虚拟内存空间连续的内存区域,其对应物理内存不一定连续。 7月1日 月坨岛之旅月坨岛位于河北乐亭县西南,因形似一弯晓月而得。岛上建筑全是荷兰风格,有无数水上双人小木屋,在此能与海零距离接触。每当夜幕降临,海水起潮直至木屋脚下,游客便可以躺在屋内闻着阵阵海风的气息、聆听大海的沉吟,真乃旅游恋爱之圣地。 6月17日 参透Linux内核中断机制1. 中断概述与中断控制器 中断就是打断CPU执行指令序列的事件,这事件可能产生于CPU之内也可能产生于外设。中断可分为同步中断和异步中断两类。同步中断又称为异常,它由CPU控制单元产生,如:缺页异常、除0异常;异步中断是由外设产生,如:各类IO中断。有时候,将异步中断直接称为中断。 x86CPU为实现中断机制提供了两根引脚:NMI 和 INTR。其中 NMI 是不可屏蔽中断,它通常用于电源掉电和物理存储器奇偶校验;INTR是可屏蔽中断,可以通过设置中断屏蔽位来进行中断屏蔽,它主要用于接受外部硬件的中断信号。 中断信号不是由外部硬件直接发送给CPU引脚的,而是通过中断控制器来传达。在早期的系统中,CPU通过INTF引脚连到一个8259A可编程中断控制器(PIC)上。8259A有8个引脚,因而可以同时连接8个外设;同时8259A可以两个级联在一起,形成主辅两级(其中主8259A直接与CPU相连,从8259A连到主8259A的一个引脚上),这样可以提供15个引脚。为了提高对称多处理器系统(SMP)的并发性,出现了高级可编程中断控制器(APIC)。该系统中每个CPU都有一个本地APIC,于本地APIC相连的是IO APIC。当中断信号从外设到达IO APIC时,IO APIC可以公平地将中断信号传给各个本地APIC。每个APIC由24个引脚,系统可以同时有8个IO APIC。 目前大部分单处理器系统都包含一个 IO APIC 芯片,它可以通过以下两种方式来对这种芯片进行配置: 1): 作为一种标准的 8259A 工作方式。本地 APIC 被禁止,外部 I/O APIC 连接到 CPU,两条 LINT0 和 LINT1 分别连接到 INTR 和 NMI 引脚。 2): 作为一种标准外部 IO APIC。本地 APIC 被激活,且所有的外部中断都通过 I/O APIC 接收。 2. Linux下中断分类 前面介绍过中断可以分为异常与异步中断;而根据异常时CPU状态和异常处理方式和返回行为的不同,异常又可以可分为故障(fault)、陷阱(trap)、终止(abort)三类。
Linux系统定义了19种异常,比较有名的有:Divide error、Debug、 Page fault等。 3. Linux中断处理机制 Linux系统为了管理各个中断定义了中断描述表(IDT),它保存各个中断或异常向量和对应的中断处理程序入口地址。在系统启动时初始化IDT。IDT中的记录分为三类,分别称为:任务门描述符、中断门描述符、陷阱门描述符。Linux用中断门处理中断,用陷阱门处理异常。与中断不同,异常并不会引起进程切换。但它们都会引起一个内核控制路径,即代表当前进程在内核态执行单独的指令序列。内核控制路径是可以嵌套的,即中断处理程序可以被中断。 通常内核为了快速地处理异常,会在异常到来时向引起异常的进程发送一个信号通知一个反常条件的出现。然后直到该进程接收到这个信号才开始处理这个异常。一般异常处理程序的结构是: 1.在内核堆栈保存大多数寄存器的内容 2.异常处理 3.返回恢复寄存器内容ret_from_exception() 与异常处理不同在中断信号到来时,内核不能向异常处理一样向进程发送信号,因为中断可能会导致进程的切换。一个挂起很长时间的进程,等待的中断信号到来后,一个完全无关的进程可能正在运行,给当前进程发送信号是毫无意义的。为了让内核更快地处理中断,Linux将中断处理分成top half与bottom half 两部分。top half 是内核必须马上处理的,包括读中断信号、设置中断寄存器状态等;bottom half则实现各个中断的处理逻辑,中断的主要操作、大部分处理时间都是在这里完成。bottom half的处理是可以推延的,因而可以让CPU很快地响应完中断。根据bottom half 的处理方式不同,Linux提供了softirq, tasklet, work queue等处理机制。不管采用何种方式,中断处理程序的总体结构是: 1.在内核堆栈保存IRQ值和寄存器的内容 2.为正在给IRQ服务的PIC一个应答,允许PIC进一步发出中断 3.执行共享这个IRQ的所有设备的中断服务例程(ISR) 4.返回恢复寄存器内容ret_from_intr() 前面提到中断控制器上IRQ线总是是有限的,为了满足众多中断请求和便于扩展的需求,Linux提供IRQ线的动态分配的方法为多个设备共享同一条IRQ线。动态分配共享IRQ线的方法如下: 1.在激活一个准备利用IRQ线的设备之前,其驱动程序会调用request_irq()创建一个新的irqaction描述符。 int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char *devname, void *dev_id) 2.然后调用setup_irf()将这个描述符插入到合适的IRQ链表。 3.当设备操作结束时,驱动程序调用free_irq()释放这个描述符。 void free_irq(unsigned int irq, void *dev_id) 如前所述, softirq是内核提高中断响应的一种技术,Linux提供open_softirq()来初始化软中断、raise_softirq()来激活软中断、raise_softirq_irqoff()清除软中断。 tasklet是在softirq的基础上可以在运行时初始化的一种延时中断处理技术,它的调用比softirq简单多,是IO驱动程序实现可延时函数的首选方法。 与softirq和taslet的可延时函数运行在中断上下文中不同,work queue中的函数是运行在进程上下文的。因而执行可阻塞的函数就必须使用work queue。work queue函数是通过一种叫做work thread的内核线程来执行的,因而具有可阻塞的特性。 3月8日 归来 好久没有更新自己的博客啦,早就该过来留点痕迹,胡编些文字了。
先汇报下工作吧,我现在北京金信桥网络技术有限公司研发部任职,关注并参与自然语言处理、信息检索技术的研究开发,同时实践Linux下网络程序、服务器的开发。公司目前正广纳人才,我也得机面试多人,可叹未有可用之才。唉!面试的人多了,发现有两种人最让我难受、无策。其一:不愿表达,面试下来说的话还没有我多;其二:不注意仪表,接电话者有之、身带怪味者有之、面容诡异恐怖者有之。都说不能以貌取人,可做起来很难很辛苦!
上周去学校打了一回羽毛球,发现学校变化太大了,新建了好几栋大楼,羽毛球馆也重新装修了,差点找不到大门了!!!!!!打球自然得有球友相伴,可这次没想到能遇上这么多故友!遇上馒头是个意外事件,遇上佳人学妹更是不可能事件。看到他们,就觉的学校变化快也没人变化快.
最近股市忽上忽下,是抄底还是割肉,就如to be or not to be 一样着困扰人,直教我愁如春水,绵绵不断,日夜东流。 3月19日 一群不知天高地厚的人 都说识实务为俊杰,可是在网络上,一个个传奇却都来自大胆的创想,一个个开创者有谁不是在务虚。
今天又有一群不知天高地厚的人走在一起,因为不甘平凡而想在网络上做点什么!!
开始没有明确的目标,也没有什么确定任务。大家讨论,一次.......两次........没有实质的成果。一直缺乏一个能做决策的人,直到我的加入为止。我怂恿他们卖A片,我蛊惑他们经营非法生意。一行五人,每个人都有自己的想法,性格不一,想法太多了,很好玩!大家想好:柳清负责下载、小恒负责制作刻盘、瘳敏负责送货(购买数量大者,还可以献身)........
玩笑的活可不能当真!最后还是老老实实地回到正题。大家决定做游戏资讯网,为游戏玩家提供各种服务。听起来不错哦,不过一上网查发现有不少类似的网站,压力不少!接着为网站取域名,游戏先锋、游戏天堂、游戏地带、游戏网........最后敲定:游戏爱好者 www.gamer.com!最后讨论各个人责任:有人管星际,有人管CS,有人管魔兽。
已上路,不知终点在哪里?有人说:糜不有初,鲜克有终!又有人说:善始者不必善终,善作者不必善成。可见不管怎么样,过程总是好的,努力总是对的。祝愿这群人吧! 2月9日 立春 二月四号立春,本与佳人有约,无奈中生变故,便赋闲在家。曾经听说过:在立春时分,鸡蛋能够坚立而起。我在百无聊赖之际、无可奈何之时,便生一试之意、探个究竟虚实!然而大家对这虚无之事都不确信,父亲一直说那是魔术师玩的把戏。好在我凭一片赤诚、满脸认真打动他们与我一起尝试。
下午一点十五分,爆竹声渐起,东边响过,西边又起。可是我们手中鸡蛋一个也没立起来,大伙都放弃了,不信有这回事,坐在旁边唏嘘。说时迟,那时快,我手中鸡蛋就神奇地立起来啦。大家顿时括目相看,纷纷拿起鸡蛋欲放立起来,但是时辰已过,竟无人能再成功!
好问者说问:这是为什么?我自己心中也不甚明了,少不得又胡撰些理由哄哄他们。我说:那一刻太阳、地球、月亮在一条线上,引力恰好竖直向下,因而鸡蛋恰能立起来。我以为自己的解释很完美,大家若有所思地赞同。不过这种解释经不起自己的推敲,下次还得找位贤达好好请教。 10月29日 喜闻Sky卫冕WCG2006之魔兽争霸10月18-22号在意大利,Sky一路击败Gostop,Grubby,Tod后成功卫冕WCG魔兽争霸!
得庆祝下,有时间大家多练习下魔兽争霸!
推荐首歌:《Beyond The Game》---WCG2004主题歌。 10月14日 痛快! 今天打球了。
10月10日 Network这几天看计算机网络,研究TCP/IP,终于搞懂了ATM技术!!!!
ATM--异步传输模式,号称有可能革新计算机组网的技术。支持流传输,实时性好,面向连接的传输,信道宽。
看好多讲计算机网络的书,但本本都不好看。这些编书的烂人,个个都不肯花心思,写的书都垃圾。哼,什么时候自己写本算了! 10月2日 野山坡国庆去野三坡玩。出发前听说此地有山有水,想来不是人间仙境也该是世外桃源了。心中甚是向往!
我们去得早,显然是国庆第一批游客。小镇坐落于山谷中,人不多。本是一农村,现在大家都做旅游业了,靠城里人带来的钞票过日子。我们这样没见识的人就是他们的财源了。 刚到的时候我们比较累了,火车上实在难受!到了旅馆才好些,午餐后便有些想玩了。我们便去骑马,马上颠簸,人就是在受折磨嘛。下午登清泉山,山好陡峭,爬得好累。晚上大家都K歌,气氛好热烈。
.............
............ 9月27日 重返师大"狎兴生疏,酒徒萧索,不似去年时!"
很久没有在师大逗留了,上周末终于回了趟。学校已经物人全非了,到处都在搞建设,真如她所说学校成了北京施工大学!我重游了几个我最想去的地方----羽毛球馆,西西楼!
打羽毛球,我所好也,无奈:狎兴生疏,酒徒萧索,不似少年时!长时间不打球,没想到随便玩玩,尽累得自己全身酸痛。唉,要在当初这种强度的运动我是打不累跑不死的!好在今天有师妹相陪打球,别有一翻乐趣。想来她们也累惨了吧。本来是想来学校打牌的,可惜牌都没有摸一下!
小肥鼠走了,小林子跑了,蛮头也不见踪影,连一直打得比我逊的王猪猪也杳无音信啦......好郁闷啦,几个月来打羽毛球罕缝高手,求一败也难!我相续把轮滑、电脑、自行车抛弃后,现在就只剩下羽毛球拍在身边了。为了考研我一次次放弃了自己喜欢的东西,这次可能会把球拍送人了。不知道对不对,也不知道会不会失去我最想要的东西,也许根本就不比想这么多。徐志摩说的好:既然选择了前方,就只顾风雨兼程,而不去管是否成功! 9月9日 唐朝太上皇近来跟朋友说唐史,说起唐朝一有趣的现象:太上皇多~!
玄武门之变后,李渊应邀把大位传给了李世民,自己便当起了太上皇; 纵横大半辈子的武则天,在卧病之际一个不留神,就大权旁落; 费尽苦心夺得大位睿宗李旦的好快就觉的高处不胜寒--受不了太平公主与李隆基的折腾,匆匆地把大位传于李隆基了; 李隆基让父亲做了太上皇,他儿子李亨如法炮制,也让他做了6年太上皇;他做太上皇可就没有他的几位前辈清闲了,三十年太平天子做太上皇后在宫中竟处处被太监挟制; ....... ........ ....... ........
太上皇现象源远流长! 真怀念那个后浪推前浪的时代....................
8月29日 星夜登泰山 五岳之尊泰山,大名蜚声海内外,我早就想去看看了,一直苦无良机。这次同学邀我同去,正中我怀。同行四人,到泰山周游二日,一睹祖国大好河山,整理整理学习心情,其乐无穷! 周六八点,我出门赶往北京站,心想路途遥远,便买了两份报纸车中解闷。天意弄人,一路看报,没想到尽然晚到车站,让同伴们等了十多分钟!天,又迟到了,一下子又想起家中小妹妹,她定会嘲笑我了!我是初会同行的旖旎小姐和X君。他们都是师大同学,一个是湖南妹子,一个是重庆小弟。 每次出去游玩我都是漫无目的地看看风景,读读人文,走上一着便回来。譬如登山,我就会沿着山路走上山顶,看看路边风景,吹吹山上凉风,便下山去;又如游园,我便找条最长的路径绕着园子走上一圈,看看园中美景,望望身边游人,兴尽而归。然而这次登泰山我们却有共同目标:到山顶看日出!在众人口中泰山日出那么美,我们四人不见日出不死心。所有行程安排都为了确保看上日出。 下午五点就到了泰安火车站,时间尚早,便先在城中逛逛。最终到一川菜馆大吃晚餐,此处菜还挺便宜,味道不错。饱餐过后就赶往泰山。此时天已尽黑,不过我们走的很慢,夜里九点才到山脚,开始登山之旅。刚上山的一段路程是最享受的。缓缓的坡,慢慢地走着,不时地仰望天空繁星,呼吸着山里的清新空气,体味着吹来的阵阵凉风,聆听着夜里的虫鸣声与水花声。一下子离开了喧哗繁闹,没有了灯火尘嚣,人也精神不少。大家就闲庭信步般地走着,如同梦吁般地聊着,都沉浸在这安宁舒爽的环境中,都陶醉于这和谐清心的氛围里。 慢慢地山路变陡了,步子变重了,我们开始大口喘气。看着路边的休息的行人越来越多,我对自己说:真正的登山苦旅开始了。此刻脑子里只想快些到达山顶!可是路过一家店又是一家店,翻过一座山还有一座山,路途还是那么远,山顶还是那么遥不可及!越往上走,休息地越频繁,我体力也到了临界点,真难受。在高处气温低了好些,我们不得不加件外衣了。渐渐地我渡过体力极点,开始好起来。两女生可就难受的很了,一步一停的,我不得不替她俩背包。我背上背一个包,胸前也背一个包,腰间还得再挎一个包,身兼三包!想想那模样应该挺滑稽吧! 半夜十二点终于到了中天门。山路到这一下子平坦了许多,游客们多在此集聚休整,准备登南天门。饱餐的晚餐此时似乎已消耗殆尽,肚子空空。时不我待,我们吃过些干粮后,便朝南天门奔去。走过一条条漫漫长道,可怜双脚肿痛难忍,无奈人也似要累爬下了。身边游人又多起来了,大家多是年轻人,结伴而来。也遇到位独行侠,赤脚登山,还气定神闲,佩服! 山路越走越险,风景却越来越美。途中云步桥跨山泉而筑,飞越于峡谷两岸,夺造化之巧。站在桥上,仰望奔流而下的山泉,恍惚就要被它带走;沐着清爽怡人的水气,又似快要羽化登仙。跨过天桥继续着登山苦旅,嘴已经语无伦次,腿更是软绵无力。只有心还在不停地呐喊、不断地激励自己:前面灯火处就是终点!于是咬着牙冲向终点,可是每次都失望地发现终点后面又是一道长梯!这样一次次地在失望中寻求偶尔的满足,一次次由“终点”回到原点,我们离南天门也就越来越近了。 早就知道要上南天门就得爬过十八盘。十八盘的陡峭与艰险,如同泰山日出与云海一样被人称道。有人把十八盘比作上天之路,我觉得这一点也不夸张。层层叠叠不见尽头的石阶,绕过一弯又转过一圈没有终点的天梯,排山倒海般直竖在眼前,压得人喘不过气来。当我望着身旁举步维艰的同伴走上这天路时、当我拖着那双重如铅注的双腿踏上这天梯时,所有的豪言壮语与雄心壮志都已飞入九霄云外,留下的只是后悔与绝望。恨不能腋下生双翼,助我直上云端去!不知道走了多长时间,不记得多少次从绝望中爬起;终于在绝望处望见远方耸立一天门。我们终于要到南天门了!想直冲上去,无奈身不由己!天门近在咫尺又远若天涯,浑身乏惫却又精神抖擞! 上了南天门路就好走多了,高处天寒我们租了军大衣。找个清静的地方吃些补给,便就地而眠,静候佳时,登顶望日!五点我们赶到日观峰,天边已有一抹淡淡的红霞。寻到一高处,坐看日出风云变幻。山顶上人越聚越多,很快就挤满了。大家或立或坐,凝视着东方。只见红霞渐亮,天际如同托着一条长长的红丝带。红丝带下面露出一抹山影,有如山水画般恬静。霞,真美,她似在微笑着迎接我;山,真静,好似在脉脉地凝望我。她那可人的微笑,她那神秘的眼眸,如同春风吹暖我心!晓霞越来越窄越来越亮,大家都安静了,等候着东方奇观。突然,一线红弧出现在红霞与山影间!山上顿时响起阵阵欢呼声,太阳出来了,千呼万唤的太阳出来了!初醒的太阳似乎还不愿起床,它慢慢地往上爬着,终于露出大半边脸;在众人的注视下它好像害羞似的,招来几片云挡挡它那大红脸!云似乎受不了它的“热情”,很快就散去了;它也不害羞了,开始散发耀眼光芒,令人不敢仰视!心愿得偿,我们久久不愿离去,回味着刚才的激动与喜悦。 在山顶休整后,我们就下山去了。人人都道:下山要比上山难。可我觉得此话不妥,应是:下山要比上山爽!沐浴在晨风中,踏着得意步伐,遍看路边百般风景,岂不逍遥赛神仙!来到泰山才知山中之美,归隐之情油然而生。归去来兮,田园将芜胡不归? 8月28日 BIRTV Show II 8月24号,我匆匆地参观了BIRTV2006。展览会规模真大,多数展品闻所未闻见所未见,真得增长了好多见识! 我先到八号馆,这里多是外企,大展台大公司多,Sony,NTT,THOMSON等等。他们都提供系列产品。参展的多是硬件产品,我对此不熟也不太有兴趣,也就没多问,只看看它们的作用和与其他公司的相似产品对比的比较优势。我重点看的是与我现在工作相似的软件产品,考察了Sobey的EditMax 和Quantel 的EQ。 EditMax用户界面做的很花哨,宣称HD下能答到3层实时。要它演示Zoom Blur,到也真达实时,细问他硬件如何配置,才说他们是有硬件支持不是纯软件实现的。他们还提供产品报价单,工作做的很细了,这是我参加此次展出要到的唯一一张报价单! EQ的卖点是其视频合成技术,他们的解说员多次强调这点。他们也现场演示了其视频合成技术,吸引不少看客!他们的输入设备是专门的笔和板子,演示时他操作的好熟练,使我感觉这东西好方便!后来才听Stan说这东西价格不菲!EQ也能做其他一些特效,但其解说者对此多刻意回避,可能没什么出色处吧. 也看了中科大洋产品,他们提供好多软件产品,有一完整系列.向他们索要资料时更是给了一大堆,我觉得这个他们做的很不错了. 还有些公司产品是不能演示的,或者没有达到他们所宣传的性能.我去问他们是他们对自己的产品多闪烁其词,而当我提到其他公司做的比他们要好时,他们多是抨击拆台. 中途我跟Cathy去听了下Avid公司的宣讲会.Avid请好多大腕来介绍他们使用Avid产品的经历与经验.他们都是在电影界打拼多年,可谓句句都是肺腑真言.可惜多是从香港过来的,说的粤腔普通话,我听不大明白,也没什么收获. 下午四点逛了半天后,身体很累我就坐车回到公司了. 8月25日 BIRTV Show 8月24号,我匆匆赶到中国国际展览中心(CIEC)观看第十五届北京国际广播电影电视设备展览会(BIRTV)。CIEC好大,逛来逛去巨累!参展商好多,CIEC1-9号馆都摆地满满的。我们公司展台在3号馆,不过8号馆最大最精彩,我也在那待了最久,真是大开眼界了。 展出的多是高清/标清软硬件产品,摄影、存储、后期编辑、传送、播出各个环节的设备应有尽有!众多的展商可分三类:本土厂商、日本货商、欧美洋商。本土展商多而小,没有提供完整的产品链。不过中科大阳是个列外,风头正紧。欧美洋商技术过硬,往往会show下他们产品这实际应用中的效能!Avid产品为大片《金刚》提供了后期制作平台!不过他们的展区不太热闹。日本货商不多可个个大名鼎鼎,索尼,松下,日立,佳能......它们有个特色--请来好多美女做秀!索尼美女球赛激情四溢,松下美女读书温馨扑面,佳能佳人抚琴古雅满堂。拍了不少照片回来,以饱眼福!有美女们捧场,日货吸引了好多人的眼球。我这种不识技术,又不懂市场的人,也便有了看点。小小的一个展区被装饰的好别致,五六台摄像机从不同方位拍摄其中美女。看客们就可从旁边的屏幕细细打量镜中美人,体验高清晰电视带来的视觉享受!我从来都没有用过如此先进的装备,从如此多的角度,这么肆无忌惮地打望美女。这次让我明白了佳能广告词:Delighting you always!的真谛了。 我是很敬业的,顶住日货美女的重重诱惑。考察了公司竞争对手索贝EditMax7和宽泰EQ两款产品,他们都是高清视频编辑软件,和我在公司开发的一样。愧不如人!不多写了,下午还得向大老板Stan汇报情报呢。 8月23日 初试保龄球 最近上面派了几个大佬来公司主持工作,Stan就是其中一个。据说这是Stan第二次来到公司,但却是第一次与我会面。其貌平常,头发花白,脸有风霜,嗓音洪亮饱满!他也平易近人,可惜不会中文。每次只能我听懂他说,他听不太明白我讲的英文。为了迎接他,昨晚公司特聚一聚玩一玩。 下班后,我们结伴去西三环香格里拉大酒店旁吃比萨自助。公司一行20人,好拖沓麻烦!我那时饿的很,狠狠地吃了一顿。饱餐过后,便到附近玩保龄球。这是我第一次玩保龄球,本来还觉得这玩意儿会挺高深不好把握,一试之后发现也不难。你要把球扔直扔准,关键是扔球时手臂动作要舒展,身体重心要低而稳。当然了手感也很重要了,不过我好像向来不缺这个。应当是我平时喜欢运动,两轮下来我得了两个93分,作为初学者我对自己的成绩很得意了。公司还是有高手的,剑西竟然得了160分!好在我们这组实力相近,大家玩的不是特好也不差,排名也一直更替!可惜我中间没能把握机会让Sandy赶超,不然我就能得此第一啦! 保龄球是挺好的一项运动,男女老少咸宜!以后有机会再去练练。 8月21日 搬家 这些天忙搬家,累!
从中关园搬到人大西门不算太远,但要收拾的东西多,也很折腾人。两包书,两箱衣服,被子褥子都不是好惹的主儿。最不想动的还是搬电脑,又重又脏!最难收拾得该是鞋子,装也不是提也不是!
这次搬到的地方,我现在不大满意,以后可能越来越讨厌!住在高楼,上下电梯要等好久不太爽!屋子里人多,较吵。地方又小,满脑子的不是。北京这破房子!
安得广厦千万间,使我长驻开心颜! Optimization 工作快三个月了,一直致力于程序优化。试过递归改迭代;做过加法换乘法;建过快表;也曾苦苦研究牛顿下山法;甚至写过汇编代码!遍尝各路武艺后,便觉如鱼得水,心也飘飘,欣然自喜,自己俨然是位领域专家。可今天读到一篇大作后才知自己多么可笑。
这文章写的太好了!A reasonably skilled programmer will not write a grossly inefficient program. At least not deliberately. Optimization is what you do when the performance is insufficient. Sometimes the optimizations are easy, sometimes they are hard. Sometimes they fly in the face of your original design, and sometimes they require that you grossly violate your beautiful abstractions in your class system. But always, and I repeat, always, my experience has been that no programmer has ever been able to predict or analyze where performance bottlenecks are without data. No matter where you think the time is going, you will be surprised to discover that it is going somewhere else.
... ...
You optimize because you have a problem in performance. Sometimes it is computational optimization: your bitmap manipulation is just too slow. Sometimes it is data access optimization: it just takes too long to get the data into the machine. And sometimes it is algorithmic optimization: you're doing it wrong. If you don't understand the difference between an n2 sort and an n log n sort, you're probably already in trouble, but that knowledge alone is not useful.
... ...
Optimization matters only when it matters. When it matters, it matters a lot, but until you know that it matters, don't waste a lot of time doing it. Even if you know it matters, you need to know where it matters. Without performance data, you won't know what to optimize, and you'll probably optimize the wrong thing.
The result will be obscure, hard to write, hard to debug, and hard to maintain code that doesn't solve your problem. Thus it has the dual disadvantage of increasing software development and software maintenance costs, and having no performance effect at all.
... ...
真是不见大海不知自己之渺小;不读佳作不识自己之无知! 8月17日 笑雨声中的颐和园 上周末重逢高一同学王大小姐。好久不见,大家早非吴下阿蒙,幸得好友相告才得相识。失而复得,不亦乐乎,我们三人便商量着去颐和园玩。
颐和园佳名远播,我心仪已久。刚到北宫门,心早就飞入园中,脑里已是一片云蒸霞蔚,气象万千的盛景,耳边尽是恢弘广袤,波澜壮阔的仙乐。进入园中难免有点意外,有的只是寻常院落、通幽曲径!好在游人如织,倒也一派繁华。沿着小径,踏过古阶,我们登上小山顶。眼前豁然开朗!登临送目,碧波漫漫,轻舟点点;时觉凉风抚脸,衣袂飘舞;身也如释重负,心更空旷无尘。一路上来少不得说笑玩乐,我被戏虐为赖导(悔不该口无遮拦),刘大小姐成了老佛爷!看不完的飞檐画栋,数不尽的雕廊砌玉,叠叠重重的琉璃翠瓦,曲曲折折的风光小道,与两位绰约仙子相得益彰。
翻过小山,我们来到昆明湖畔,兴奋。我早就跟她俩说好要去湖中划船!到头来还是有些措手不及,我得去排队等船。我们要的电动船可火了,我足足等有半小时。天不负苦心人,终于开船了,我掌舵。偌大的一个昆明湖上,乘着小舟,荡漾于湖心,吹着迎面凉风,闻住清新草味,夙愿得偿,快哉!在湖中,在船上,自由自在,心旷神怡,挂不住的喜悦上心头,留不住的软语出丹唇。借小船之力我们穿过十七孔桥,绕过湖心小岛,朝西边荷塘而去。
未到荷塘,天色已暗,天先降几滴小雨,续而大雨如豆。好在带有雨伞,不然必成落汤之人。无可奈何,我们寻到码头,弃舟登岸。却还有人在等船,使我想起李白诗“郎今欲渡缘何事,如此风波不可行”。后来想想我们自己还不是一样续走长堤,伴雨游园。局内局外,看风景看人,谁知道呢?真是可笑!
王是第一次来京,因此打算多看看。我们便漫步于雨中,踏过十七孔桥,登上湖心小岛。岛上有龙王庙,也有“仙子笑”--谁家仙鹤成野鸭!岛上高处有一楼,名曰:涵虚堂。分明是出自孟浩然大作:"八月湖水平,涵虚混太清"。刘家大小姐说:涵虚是指包含天空宇宙,而我认为虚就是指堂前昆明湖了。现在想想还是她说的更有理。
雨还在肆虐,我们却不得不回去了。真是好玩的一天,真是难忘的经历。 8月16日 创世纪 起初,我创造了这块家园。其框架杂乱无章,其内容空虚混沌。我令它运行于网上。 我说:“要有个名号”,就有了凤影渡霞。我看名号是美的,就配之于霞光。我又美其容状,丰其内涵。 这是神创造的世界。 |
||||||||||||||||||||||||
|
|