莫把重载当多态

偶一次,和一两个同事一起面试一个MM,鉴于MM几乎没有工作经验,但是至少是计算机专业的,我只想了解一下她的基础知识掌握的如何,我问了一下面向对象的三个基本特征;她回答道: 封装、继承和多态。

其实,封装、继承基本没什么不好理解的,但是多态却经常有人不理解。而且我也没想提问这个。我的一个同事A却提了个问题:PHP支持多态吗?PHP中的多态如何实现?

MM没能回答上来,我想,如果不是特别清楚的话,现在一定是要回答不上来的,因为面试官已经开始错了。同事A接着便自信地说:其实PHP不支持多态,但是实现起来却也很简单。我知道同事A错了,但是我对这个概念也有一些模糊了,便不想揭穿他,自己就默不作声,任由他们讨论。令我羞愧的是,另一同事B也和他们一起说起默认参数和几个参数的问题了,我彻底无语。不怕你不懂,就怕你错了还不知道自己错了。

多态不是重载,重载也不是覆盖;面向对象中,如果不能区分多态、重载、覆盖这几个概念,那么面向对象就是没有学好。

我们说:

  1.     我有一个函数move(animal),有一个参数是”动物“;如果你给的参数是老鹰,那么该函数表现出来的形态就是fly;如果你给的参数是小鸡,那么该函数表现出来的形态就是run; 这个叫多态(Polymorphism)。多态在C++中是通过虚函数来实现的,如果你是学C++的,你不了解虚函数,那么你一定不了解多态。
  2. 有多个可以接受不同个数、或类型的参数的同名函数,那么这个叫重载(  overload)。可以说,重载不属于面向对象领域(特有)的概念
  3.  如果子类定义了和父类完全相同的方法,那么这个叫覆盖
  4. 重载不是面向对象领域的概念

 

但愿我说明白了,参考文档:

  • http://baike.baidu.com/view/126521.htm
  • http://baike.baidu.com/view/126530.htm

繁华落尽,寂寞成殇

摘自:  http://www.lookmw.cn/yc/2820.html
  时光荏苒,岁月如梭。素什锦年,稍纵即逝,半载青春年华,似沙漏般,弹指间,流在昨天。苦涩与喜悦,都不再去回忆,依然埋在时光的烟尘里。只知青丝变白发,冥冥之中,注定青春与那寂寞有染。

    春去秋来,潮起潮落。往日里,天庭空旷,时光静谧;闲看云雾,静听风 雨;可谓悠闲自得,其乐无穷。转眼,又至寂寞时节,秋风抚叶,泛成黄色,落了一地的沧桑;鸟落廊前,轻声一吟,留下几世的凄凉。如花美眷,敌不过似水流 年。一切美好,都会悄然褪色,暗自凋零,最后落入尘埃。化作孤独,上了心头。

    繁华落尽,乱世成殇。人生似 列车,几经周转,穿行了多少过往。世人都是过客,到了青春驿站,转身何去何从。亲人,已挥手离去;朋友,也渐行渐远。风无定人无常,聚散两茫茫,留下寂寞 的你我,来来往往。看遍了人间繁华,城市的余辉,再美也终将落幕。远方飘来忧伤的夜曲,难得此生相逢,怎料寂寞如歌。待到繁华落尽,在这乱世,成殇。

    寂寞流年,染泪红颜。 灯火阑珊,最难将息。下玄月,西风凉,此夜何人眠;别时易,见时难,相思系红颜。弱水三千,只取一瓢;梦有万千,只梦一朝。衣带渐宽,为得伊人憔悴;千年等待,只求揽你入怀。泪如烈酒,灼人心肺,谁知相思,已成灾。

     往事成烟,宿命依旧。青春染指流年,流年染指红颜。画地为牢,锁我几春秋,染予寂寞。无奈拾起青春的记忆,等一阵清风扑面,挥挥衣袖,又是潇洒一片。

   

  注:

  非哲人,写不出满富哲理的文章

  非诗人,道不出流芳几世的佳句。

  只是简单平凡的我,肺腑之言,句句真切。

  谨以此文,

  祭奠即逝的青春,

  为自己的青春,

添上一段墓志铭

信手拈来

  1.     但求繁华落尽日,亦是得道成仙时.
  2.     楼中山外山,飞鸟各成单.万般皆下品,唯求常心安.
  3.     荒唐人间行, 处处透不平。不沾三分情,但求一身轻。
  4.     一宿黄梁梦,夜夜莫名痛.纵使千般好,万万不心动.
  5.     移山填海英雄气,难得世间女儿心.
  6.     命里有时终须有 命里无时莫强求。
  7.     三世交心。四世同寐。百年同船。千年共枕。
  8.     醉意易显风光,酒香莫说悲伤
  9.     ""前世的寄托,今生的陪伴.
  10.     月过梢,摇曳的花影, 空有一世情、
  11.                 鱼沈雁杳天涯路,始信人间别离苦。 
  12.             红颜远,相思苦,几番意,难相付。
  13.     疏影横斜水清浅、暗香浮动月黄昏。
  14.     当心中装满梦想 眼睛自然被打扫干净 前途无限大 因此别害怕 信念是一把火 燃烧起不灭的希望
  15.     嘚卟菿の詠逺恠騷動 被偏噯の嘟冇恃兂恐
  16.     风声萧瑟 余音渺渺 落叶怎知故人情忆往昔 虽不是峥嵘岁月 却还是忧愁
  17.     こ明月照出相思苦,诗词签名空余春风吹不归`
  18.     等闲变却故人心 却道故人心易变 –
  19.     谁啲眼泪触动了谁啲睸、谁啲笑容呧嘚了谁啲泪、谁啲訫载嘚下谁啲轮囬、谁啲掌纹赎嘚了谁啲嶵、
  20.     花 开 后 花 又 落,轮 回 也 没 结 果。
  21.     水因有性山难转,你若无心我便休
  22.     锦瑟年华,一曲拨断弦。惜流年,可曾相约天涯路踏遍
  23.     几度烟花落,繁华三千尽没
  24.     夕辞:谱夕辞,诉离伤,莫道容颜依旧,只是情思改。
  25.     等闲变却故人心,却道故人心易变。
  26.     梦中楼上月下 站着眉目依旧的你啊。
  27.     当时缠过红线千匝 一念之差为人作嫁。
  28.     い , 拔剑泪斩丝红尘,破而后立定皇图。
  29.     说的是一辈子,差一年,一个月,一天,一个时辰都不算一辈子…..
  30.     一片混乱之中,唯有蝶衣,独自与黑暗之中,传单之下,继续着未尽的绝美的舞步,丝毫未曾停滞…

TokyoTrant同步问题

1. 同样在一组磁盘上的两个TT端口,其读写操作是根据均匀的hash方式来分配的,但是,其中一个3001端口同步数据就很慢,而3002端口同步数据就很快,重启3001端口依然很慢; 把3002端口停掉之后,3001端口依然很慢。

2. 通过tcpdump抓包发现:
   3001端口的master 2001端口,数据流表现为:
      2001 ——–很多数据给—–》 3001
      3001 ——–因为吃不消,所以act 一个win(0) 给 —-》 2001
      2001 ——–不断询问 ———-》3001
      2001 ——–不断询问 ———-》3001
      2001 ——–不断询问 ———-》3001
      3001 ——–响应,说在给点儿吧 ——-》 2001
      2001 ——–很多数据给 ———…..
 
    使用netstat也可以发现,对于3001的同步连接中的接受队列总是会阻塞很多数据,看来是执行的太慢

3. 观察 3001端口的执行情况,下面是使用strace跟踪的这个繁忙的ttserver进程的系统调用情况:
  
  
   为什么futex耗费的时间如此惊人?

关于TokyoTrant的热备份

1. TokyoTrant(后面简称TT)在备份的时候不能提供写服务也不能提供读服务2. 备份的速度取决于磁盘的好坏

下面有一个TT备份的参考:
date; tcrmgr copy -port 3004 10.xx.x.xx @/data1/tokyotyrant/bin/ttbackup.sh; date
Thu Dec 22 23:22:59 CST 2011
Thu Dec 22 23:25:30 CST 2011

这里备份了12G的数据,用了2.5分钟;
磁盘性能:
5块 146G的磁盘做了逻辑卷的, 备份到同一个目录下, 如果按照300MB/s 的写速度, 300MB/s 的读速度,则每秒钟复制150MB的数据,则大约100s可以复制15G的数据;
而这里12G的数据复制了2.5分钟,看来我的计算是有些偏差的

另外一台机器的备份情况,备份数据量: 9.4G

关于复制时的一点注意事项:
当我们将复制好的从库启动之后,可能会发现延迟越来越大,可能是因为,数据都在磁盘上,虽然配置了很大的内存,现在还没能用上,磁盘的随机读写操作可能比较严重,过一段时间之后,随着磁盘数据越来越多地载入内存,这时候的读写操作都会很快了,延迟自然就越来越小了。

磁盘IO情况

关于讲课

  今天扮演了一下内部认证讲师评审的学员,我几乎没有关心讲课的内容,只是在观察一些讲课的技巧和注意事项。每次讲完,评委都会给出一些意见和建议,对我来讲也是一次难得的学习机会,在观察别人的授课的过程中,我也深深地发现自己授课的水平简直就是烂到家了,以后要多学习,多锻炼。
  这次听课使我有幸看到了传说中的邹立巍老师的讲课的风范,他的授课水平我很是赞叹;这次授课,他没有将太多深奥的东西,但就一点点linux的权限的知识便非常好地体现出了他讲课的水平。回头想想我当时将的东西,虽然比他讲的内容有深度,也更实用,但是我讲的就缺点多多,问题多多;所以说,像这样的内部讲师评审不需要讲太NB的东西,重要的是你对授课技巧的掌握。
  下面简要地列几点注意事项:

  1. 不要总是随意地走动(也不要一动不动)
  2. 要面带微笑
  3. 要会使用道具
  4. 衣着要整洁
  5. 要让听众知道所讲的东西对他们有用
  6. 不要总是说这个东西对自己多么的有用,自己总是怎么做的(在你没有被公认之前,这些属于自大)
  7. 语调要根据内容的需要做到抑扬顿挫,如果一堂课下来都是一个音调,学生会睡觉的

windows通过netsh设置防火墙

netsh advfirewall firewall>add rule

提供的许多参数无效。请查看帮助获取正确语法。

用法: add rule name=<string>
      dir=in|out
      action=allow|block|bypass
      [program=<program path>]
      [service=<service short name>|any]
      [description=<string>]
      [enable=yes|no (default=yes)]
      [profile=public|private|domain|any[,…]]
      [localip=any|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>]
      [remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
         <IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>]
      [localport=0-65535|<port range>[,…]|RPC|RPC-EPMap|IPHTTPS|any (default=any)]
      [remoteport=0-65535|<port range>[,…]|any (default=any)]
      [protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|
         tcp|udp|any (default=any)]
      [interfacetype=wireless|lan|ras|any]
      [rmtcomputergrp=<SDDL string>]
      [rmtusrgrp=<SDDL string>]
      [edge=yes|deferapp|deferuser|no (default=no)]
      [security=authenticate|authenc|authdynenc|authnoencap|notrequired
         (default=notrequired)]

备注:

      – 将新的入站或出站规则添加到防火墙策略。
      – 规则名称应该是唯一的,且不能为 "all"。
      – 如果已指定远程计算机或用户组,则 security 必须为
        authenticate、authenc、authdynenc 或 authnoencap。
      – 为 authdynenc 设置安全性可允许系统动态协商为匹配
        给定 Windows 防火墙规则的通信使用加密。
        根据现有连接安全规则属性协商加密。
        选择此选项后,只要入站 IPSec 连接已设置安全保护,
        但未使用 IPSec 进行加密,计算机就能够接收该入站连接的第一个 TCP 或
        UDP 包。
        一旦处理了第一个数据包,服务器将重新协商连接并对其进行升级,以便所
        有后续通信都完全加密。
      – 如果 action=bypass,则 dir=in 时必须指定远程计算机组。
      – 如果 service=any,则规则仅应用到服务。
      – ICMP 类型或代码可以为 "any"。
      – Edge 只能为入站规则指定。
      – AuthEnc 和 authnoencap 不能同时使用。
      – Authdynenc 仅当 dir=in 时有效。
      – 设置 authnoencap 后,security=authenticate 选项就变成可选参数。

示例:

      为不具有封装的 messenger.exe 添加入站规则:
      netsh advfirewall firewall add rule name="allow messenger"
      dir=in program="c:\programfiles\messenger\msmsgs.exe"
      security=authnoencap action=allow

      为端口 80 添加出站规则:
      netsh advfirewall firewall add rule name="allow80"
      protocol=TCP dir=out localport=80 action=block

      为 TCP 端口 80 通信添加需要安全和加密的入站规则:
      netsh advfirewall firewall add rule
      name="Require Encryption for Inbound TCP/80"
      protocol=TCP dir=in localport=80 security=authdynenc
      action=allow

      为 messenger.exe 添加需要安全的入站规则:
      netsh advfirewall firewall add rule name="allow messenger"
      dir=in program="c:\program files\messenger\msmsgs.exe"
      security=authenticate action=allow

      为 SDDL 字符串标识的组 acmedomain\scanners 添加
     经过身份验证的防火墙跳过规则:
     netsh advfirewall firewall add rule name="allow scanners"
      dir=in rmtcomputergrp=<SDDL string> action=bypass
      security=authenticate

      为 udp- 的本地端口 5000-5010 添加出站允许规则
      Add rule name="Allow port range" dir=out protocol=udp localport=5000-5010 action=allow
netsh advfirewall firewall>

更多参考资料: http://technet.microsoft.com/zh-cn/library/cc776229%28WS.10%29.aspx