linux 下的C/C++内存泄露、越界检查工具-valgrind
七月 7th, 2006valgrind可以检查无效的内存分配,访问未初始化的内存,内存泄露等,最重要的是它基于GPL的开源协议的。对比以前用过的Rational Purify,我认为功能丝毫不差。下载地址是http://valgrind.org/
valgrind可以检查无效的内存分配,访问未初始化的内存,内存泄露等,最重要的是它基于GPL的开源协议的。对比以前用过的Rational Purify,我认为功能丝毫不差。下载地址是http://valgrind.org/
如何让保险公司陪得血本无归
保险公司的条文晦涩难懂,这篇文章深入浅出的教你如何与保险公司周旋
(一)车损,第三者
(二)丢车
(三)撞车
(四)索赔
保险条款精解(一)- 车损,第三者
咱们先说说最主要的车损险和三责险。
车损险和三责险是车辆保险的基本险,主要赔偿被保险车辆的损失以及由被保险车辆在使用中给第三者带来的损失!
您大概觉得即使是自然灾害造成的车辆损失,保险公司也照赔不误!
这话对了一半,大部分的自然灾害造成的损失都赔,惟独一样除外——–地震!!!!
案例1:如果您的车有幸在地震中被建筑物砸到的话,哈哈
应对方法:等地震过后几天再申请赔偿
出险陈述:大概由于地震造成墙体松动,终于在某一天倒下了(不要提及地震时出险)★★
案例2:如果您的爱车在一次急刹车中,车里的东东飞到了风挡上造成玻璃破裂。您该怎么说呢?
你老老实实的对保险公司说:“我的纸巾盒飞起来打中了玻璃,“哗。。。。。。”(内功够高,呵呵)”
你惨了。。。。。。那个理赔员会指着自己的嘴:“请看我的口型———no!!!!!!”
正确的应对方法:小小的改变一下事实
出险陈述:我的一个练过铁头功的朋友在刹车时撞碎了风挡,ok!
记住,受车内物品的撞击所受损失,保险公司不赔的!!!!!!★★★★★
案例3:您如果在拖车时与别的车发生了碰撞时
应对方法:忽略一些事实存在的东西
出险陈述:别提你在拖带车辆或者被别人拖带,否则不管你有没有事故责任,保险公司一律不赔★
案例4:如果你在事故时,打破了自己的玻璃又没有上玻璃险时,你会向保险公司索赔吗?
没上玻璃险找人家索赔能行吗???????行,绝对行
玻璃险的全称是:玻璃单独破碎险,是指停车和使用时造成的玻璃损坏,而事故造成的玻璃损坏应由车损险来负责赔付
如果您没上玻璃险,当您早上起来发现自己的汽车玻璃不知道被哪个混蛋打破了,怎么办呢??
呵呵,老招法———开车时急刹车造成的,又是脑袋惹的祸!(记得找一个身高差不多的朋友来当挡箭牌啊),如果是侧面的玻璃破了,就说侧滑时脑袋撞的好了,呵呵!★★★★★
案例5:如果您的车在撞车时,打破了一个小灯,您该怎么办呢?
找保险公司,他绝对不敢不赔您,那您赚了??没,您大概要赔了
没听明白??告诉您,每辆车的全险大概在2500-5000之间(太好的车,您就自己算吧,我数学不好),如果您在一年的保险期内没有索赔,您将在下一年投保时获得10%的无赔款优待,这笔帐您自己算算,如果索赔数量太小,哎,就这样算了吧。。。。。
保险条款精解(二) - 丢车
谨以此文献给丢过车和有可能丢车的朋友!
车辆在停放和使用的过程中难免会让人有烦心的事,其中,丢车是最倒霉的事了,不过,如果你按照我说的去做,您的损失会降到最低点。
首先记得先看看自己的保险单里有没有上车辆盗抢险。
什么,没有?那你认倒霉吧,找我花子也没用了,再买一辆吧
如果你上了盗抢险,首先,我要恭喜你,你的损失可以降到最低了,不过,也要小心啊!这时你要做的是闭紧你的嘴,踏踏实实的看完我的帖子,否则你一定会后悔的!
案例1:盗抢险中规定,被保险人丢失行驶证、购车原始发票、车辆购置附加费凭证每一项增加0.5%的绝对免赔。丢失车钥匙增加5%的绝对免赔。这些规定在保险单中用颜色最浅的字体印刷,不信,您可以拿出单子仔细看看,肯定在某个不显眼的角落里能发现这段话。
所以不管你是否有一把备用钥匙曾经丢失过,或者是在您被开跑了的车里有一把钥匙,请您记住一定要忘记这件事,否则。。。。。。5%的损失您自己抗定了!
案例2:如果您的车在收费停车场或营业性修理厂中被盗,保险公司负责赔偿吗?
答案是:不赔!!因为上述场所对车辆有保管的责任,在保管期间,因保管人保管不善造成车辆损毁、丢失的,保管人应承担责任。保险公司不负责赔偿。
所以正确的方式是找停车场去索赔,所以,每次停车时记得收好停车费收据啊,虽然上面印着丢失不管,但根据我国合同法中关于格式合同的规定,这属于单方面推卸自己应负责任!你尽管放心大胆的告他好了,呵呵,给您一个好消息,已经有人打赢了这样的官司,所以根据案件推溯的原则,以后的案件审判可以依照这个案例来判决,哈哈!
案例3:如果,停车场是您的朋友开的,或者您从侧面打听到这个停车场根本无力赔付您的爱车,您是否可以考虑改变一下丢车的地点呢?哈哈,我可什么都没说啊
案例4:再有,如果您是一位老板,因为一些帐物上的问题和朋友闹翻,而您的朋友又是一位小人,他偷偷把您的车偷走了,您猜到会是他干的,您会找保险公司赔偿吗?
告诉您,保险公司可不负责赔偿。因为条款规定:被保险人因与他人的民事、经济纠纷而致车辆被抢、被盗为责任免除。
所以,您大可忘记您的经济纠纷,直接到公安局报案,记住,千万别说出您的怀疑对象,否则就会把经济问题扯进来了,以中国法院的工作效率,您大概半年之内得打车出门了!
案例5:如果您刚买了一辆新车,上了全险,但没有来得及领牌照(现在的交管规定:验车后的15个工作日后方可领牌证),出险后保险公司负责赔偿吗?
不负责赔偿。因为在出险时,保险车辆必须具备两个条件,一是保险车辆须有公安交通管理部门核发的行驶证或号牌,二是在规定期间内经公安交通管理部门检验合格。但一般经特别约定对政府部门规定需先保险后检验核发号牌的新入户车辆可负责车损险和三责险。所以负责丢车赔偿的盗抢险并没有生效,自然,您也得不到赔偿。
看来如果您不是仗着胆子改一下丢失的时间,新买的车就算送人了!我可又什么都没说啊
案例6:如果您的车失而复得,保险公司如何处理赔款?
被盗抢的保险车辆找回后,如果保险公司尚未赔款的,应将该车辆归还给您,但是全车被盗抢期间,车辆受到的损坏或车上零部件、附属设备丢失需要修复的合理费用,保险公司负责赔偿。如果保险公司已经赔偿,应将车辆归还您,同时收回相应赔款。若您不愿收回原车,则车辆的所有权益归保险公司。
保险条款精解(三)- 撞车
谨以此文献给撞过车和有可能撞车的朋友!
只要是撞车,保险公司全赔吗?当然不是
你只要认真看看手里的保单赔偿免责条款就知道了,保险公司有一大堆不赔的东西呢,想把损失降到最低,还是来找我吧,哈哈!
案例1:假设你是一个新手,刚借了一辆车(当然也没准是租的车),在路上练车的时候,把你弟弟给撞了,你知道这辆车有三责险,你会找保险公司索赔吗?
答案:如果你去了,你就是神经病,保险公司会一脚把你踢出去,为什么??
首先,你要知道什么是三责险,全称:第三者责任险。(第三者插足人家可不管,呵呵)
那什么是第三者呢?
第三者指除保险人与被保险人之外的,因保险车辆的意外事故致使保险车辆下的人员或财产遭受损害的在车下的受害人。通俗的讲第三者就是排除四种人:即保险人、被保险人、本车发生事故时的驾驶员及其家庭成员、被保险人的家庭成员。
现在明白了,你作为当时的驾驶员,撞伤你的家人,保险公司是不赔的,好了,你知道该怎么办了!
什么?还不知道?气死我了,换个驾驶员撞的不就完了嘛,真是的,害我什么都说出来了
案例2:如果您有幸开车撞人了,而且全是您的责任,法院判您赔偿您包赔对方的经济损失、精神损失费、伤残损失费。。。。你该如何处理呢??
还能怎么样,给钱就是了!
错!!!!!!!!!!!!!!!!!
你应该和对方家人商量,加大经济损失赔偿和伤残损失赔偿,尽量把精神赔偿降到最低,没有当然就更好了。
为什么?你问我为什么?这不是五马换六羊嘛
老兄,你又错了,保险公司不是无条件地完全承担’被保险人依法应当支付的赔偿金额’,而是依照《道路交通事故处理办法》及保险合同的规定给予赔偿。而条款明确规定,因保险事故引起的任何有关精神损害赔偿为责任免除。所以无论法院判决被保险人是否应赔偿精神损失,保险公司均不负责赔偿。
明白了??别的保险公司都替你赔,精神损失可不管,所以,宁可多给对方点钱,也别答应精神赔偿,总之,慷保险公司之慨呗,呵呵!
案例3:如果你又有幸撞车了,这回不是您的责任,而对方又不想赔钱,您可以找保险公司索赔吗?
答案:可以,不过您必须先向第三方索赔,才有可能获得保险公司的赔偿。如果您放弃了向第三方索赔的权利,而直接向保险公司索赔,保险公司不赔。因为您放弃了向第三方追偿的权利,同时也就放弃了向保险公司要求赔偿的权利。
所以,切记,切记,一定要先找对方赔,最好是有法庭的强制执行未果的证明,然后您就可以理直气壮的找保险公司了,剩下的烂摊子尽管让它们收拾去吧,谁让它们每年收了您那么多的保险费呢!
案例4:记得以前有个倒霉的司机在jc的指挥下,撞向了正在逃窜的罪犯,结果两车相撞,那叫一个惨啊,保险公司会赔他吗?
当然不会啦,保险条款写的明明白白,驾驶员的故意行为不在赔偿之列,所以只能自己修车了:(
所以,如果您没有足够的经济能力,在当英雄之前要考虑一下噢!!!
保险条款精解(四)- 索赔
★保险案例一:(不可不看,因为您以前可能没听说过。)
坛中一知名dx的朋友丢失一爱车,已上全险,找保险公司索赔,未果,保险公司拒赔理由:到车管所查询,此车未年检。
案例分析:保险公司所做所为,十分合理,于保险合同条文也有根据:保险只对合格车辆生效,对于未年检的车辆只能视为不合格车辆,就算您保养的再好也没用,结果只能是丢了白丢,保险也上了白上,顶多退回保险现金价值。
案例结论:您的爱车,千万要按时年检,切不可后延,否则,罚款事小,拒赔事大,此时即使发生交通事故造成第三者损失,也将由您自己承担,保险白买了 :(
案例解决办法:按时年检,即使是一天,也不要晚;
如果真的发生不幸,也要记住千万不要立即报案,尽快花银子把验车手续补齐后再办理报案索赔手续!
不好意思,刚才一阵头晕,我什么也没说吧?说了也是胡话
★保险案例二:
与上相通,驾驶员年审未做的请注意了,您在驾驶中发生的一切问题,保险公司不负责赔偿,理由与上例相似,恕不赘述。
★保险案例三:
这是一个经常被问到的问题:我的车刚买,还没有上牌照,保险是否生效
解释:
车辆在出险时,保险车辆必须具备两个条件,一是保险车辆须有公安交通管理部门核发的行驶证或号牌,二是在规定期间内经公安交通管理部门检验合格。
但一般经特别约定对规定需先保险后检验核发号牌的新车辆可负责车损险和三责险
所以,这时您的车丢了就算倒霉了,撞了人啥的还算凑合有保险公司给您顶着,现在清楚了吧!
★保险索赔证明材料原则:(因为这个问题有n人问起,所以在此做一解答)
保险索赔时分几种情况
1,事故经交通队出面解决的
由交通队出具处罚单或调解书,经法院判决的,用判决书即可。
这些材料绝对好使,在保险公司肯定一路绿灯。放心索赔好了
2,在小区内发生事故的
重大事故:即车损严重的,还是要到交通队开证明,很麻烦
一般剐蹭:到小区物业开证明,因为经常受怀疑,一般也很麻烦
所以,最好报案时报在城市道路上,否则———–累死你!
3,在道路上发生小事故的,包括停车时的剐蹭
(此类事故坛中dx发生的最多)
此类需要证明的原则是:是否涉及第三方
如涉及第三方赔付的,还是需要交通队证明。
如事故双方自行了断的,可以在索赔时注明:事故第三方自修,然后按车损险中的自责索赔,保险公司要是让您到交通队开证明,您一定得咬住了别松口,就说没地儿开去,保险公司一般也不会太较真。您要答应去开证明,别怪我没提醒您,您就跑去吧,赔的钱不定够不够油钱呢!
4,最背的人
如果被别的车撞到后,肇事车逃逸,无法查找
情况严重的就比较麻烦,要通过交通队解决,可以由保险公司代位追偿。
不严重的话,最好也是以自责来解决索赔问题,而且要在索赔时注意到车身是否粘有对方车油漆,以及撞的方向,一定得自圆其说,否则你惨了!
最后提醒一下各位dx:报案时一定要在48小时内报案,否则有可能直接被拒赔!!切记,切记,不在48之内也要说成48啊。
TinyXml学习笔记
张弛
一、 TinyXml的特点
TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器。
1. SAX和DOM
目前XML的解析主要有两大模型:SAX和DOM。
其中SAX是基于事件的,其基本工作流程是分析XML文档,当发现了一个新的元素时,产生一个对应事件,并调用相应的用户处理函数。这种方式占用内存少,速度快,但用户程序相应得会比较复杂。
而DOM(文档对象模型),则是在分析时,一次性的将整个XML文档进行分析,并在内存中形成对应的树结构,同时,向用户提供一系列的接口来访问和编辑该树结构。这种方式占用内存大,速度往往慢于SAX,但可以给用户提供一个面向对象的访问接口,对用户更为友好。
2. 验证和非验证
对 于一个特定的XML文档而言,其正确性分为两个层次。首先是其格式应该符合XML的基本格式要求,比如第一行要有声明,标签的嵌套层次必须前后一致等等, 符合这些要求的文件,就是一个合格的XML文件,称作well-formatted。但除此之外,一个XML文档因其内容的不同还必须在语义上符合相应的 标准,这些标准由相应的DTD文件或者Schema文件来定义,符合了这些定义要求的XML文件,称作valid。
因此,解析器也分为两种,一种是验证的,即会跟据XML文件中的声明,用相应的DTD文件对XML文件进行校验,检查它是否满足DTD文件的要求。另一种是忽略DTD文件,只要基本格式正确,就可以进行解析。
就我所知,验证的解析器通常都是比较重量级的。TinyXml不支持验证,但是体积很小,用在解析格式较为简单的XML文件,比如配置文件时,特别的合适。
二、 TinyXml的构建和使用
1. 获取
TinyXml首页在http://www.grinninglizard.com/tinyxml/index.html,从这里可以找到最新版本的源代码,目前的版本是2.3.4。
2.构建
TinyXml在构建时可以选择是否支持STL,选择的话,则可以使用std::string,所以通常应该打开这个选项。
在Windows上,TinyXml的源码包里提供了VC6的工程文件,直接用它就可以生成两个静态库(带STL和不带STL),非常容易。唯一需要注意的是,默认生成的库是单线程的,如果用在多线程的项目中,需要改动一下配置,生成相应的多线程库。
在Unix 平台上,TinyXml的源码包里只提供了一个Makefile,对于典型的Linux系统,或装了gcc和gmake的其他Unix,这个 Makefile足够用了,我在RH9和RHEL4上测试,简单的make就成功了。需要注意的有以下几点:默认的编译是不支持STL的,可以通过编辑 Makefile的TINYXML_USE_STL := NO那一行,把NO改成YES就可以支持STL了;还有默认只生成了一个测试程序,没有生成任何库,如果要生成静态库的话,可以用ar命令,将生成的几个 目标文件打包就行了,如果要生成动态库,则需要加上-fpic参数重新编译。
3. 使用
构建了 相应的库之后,在使用了它们的工程中,只要在连接时把他们连上就行了。需要注意的是,如果需要STL支持,在编译用到了TinyXml的文件时,需要定义 一个宏TIXML_USE_STL,对gcc,可以使用参数-DTIXML_USE_STL,对cl.exe(VC),可以使用参数 /DTIXML_USE_STL,如果嫌麻烦,可以直接定义在 tinyxml.h文件里。
三、 TinyXml的编程模型1. 类之间的关系
TinyXml实现的时DOM访问模型,因此提供了一系列的类对应XML文件中的各个节点。主要类间的关系如下图所示:
TiXmlBase:其他类的基类,是个抽象类
TiXmlNode:表示一个节点,包含节点的一般方法,如访问自节点、兄弟节点、编辑自身、编辑子节电
TiXmlDocument:表示整个XML文档,不对应其中某个特定的节点。
TiXmlElement:表示元素节点,可以包含子节点和TiXmlAttribute
TiXmlComment:表示注释
TiXmlDeclaration:表示声明
TiXmlText:表示文本节点
TiXmlUnknown:表示未知节点,通常是出错了
TiXmlAttribute:表示一个元素的属性
下面是一个简单的例子:
TinyXml How To
20Some words…
整个文档,对应TiXmlDocument
book,name,price, description,都对应TiXmlElement
第一行对应一个TiXmlDeclaration
第二行对应一个TiXmlComment
“TinyXml How To”对应一个TiXmlText
unit则是price的一个TiXmlAttribute
这些类与XML文件中的相应元素都有很好的对应关系,因此相信参照TinyXml的文档,可以很容易的掌握各个方法的使用。
2. 需要注意的问题
各类之间的转换
由 于各个节点类都从TiXmlNode继承,在使用时常常需要将TiXmlNode*类型的指针转换为其派生类的指针,在进行这种转换时,应该首先使用由 TiXmlNode类提供的一系列转换函数,如ToElement(void),而不是c++的dynamic_cast
检查返回值
由于TinyXml是一个非校验的解析器,因此当解析一个文件时,很可能文件并不包含我们预期的某个节点,在这种情况下,TinyXml将返回空指针。因此,必须要对返回值进行检查,否则将很容易出现内存访问的错误。
如何重头建立一个XML文件
先建立一个TiXmlDocument对象,然后,载入某个模板,或者直接插入一个节点作为根节点,接着就可以像打开一个已有的XML文件那样对它进行操作了。
四、总结
TinyXml 最大的特点就是它很小,可以很方便的静态连接到程序里。对于像配置文件、简单的数据文件这类文件的解析,它很适合。但是由于它是非验证的,因此需要在程序 里做许多检查工做,加重了程序编写的负担。因此对于复杂的XML文件,我觉得最好还是用验证的解析器来处理。
很显然,文章的标题决定了我们是在linux下使用ACE。我们知道ACE在linux下缺省是用select来实现Reactor的,epoll相对于select的好处这里就不再啰嗦了,我们直接讲操作步骤:
第一:重新编译ACE库
ACE库中通过ACE_Dev_Poll_Reactor类来支持epoll,但是ACE库缺省的安装是没有编译这个类的,我们要做的就是将ACE_Dev_Poll_Reactor编译连接到ACE库中(faint,又要重新编译ACE,在我那台破服务器上编译一次需要一个多小时).我的操作系统是Redhat linux AS4.0,ACE的版本是5.4.10。根据ACE压缩包中的ACE-INSTALL.html,我是用”Building ACE with GNU Autoconf“这种方式来安装的,安装步骤如下(很简单,就不翻译了):
1 cd to the top-level ACE_wrappers directory.
2.Create a subdirectory to hold your build’s configuration and built ACE version, and then change to the new directory:
mkdir build
cd build
3.Note that you do not run the create_ace_build.pl utility mentioned in the Cloning the Source Tree section. The configure script takes care of creating all files and links that are needed.
Configure ACE for your platform by issuing the following command: c
../configure [options]
4.Build ACE by typing make.
5. Install ACE by typing make install.
好,现在终于可以讲如何将ACE_Dev_Poll_Reactor编译到ACE库中去了。在上述的第一步和第二步之间修改ACE_wrappers/ace/config-linux.h,增加一行:#define ACE_HAS_EVENT_POLL,然后执行第2、3步,第3步../configure执行完之后,build目录下会生成一些文件和目录,打开ACE_wrappers/build/ace/config.h,增加一行:#define ACE_HAS_EVENT_POLL。然后执行第4步make和第5步make install.OK,在漫长的编译以后,支持epoll的ACE库总算完成了。
第二:修改应用程序
应用程序修改很简单,两行代码搞掂,在应用程序初始化时(必须是在第一次使用ACE_Reactor::instance()之间)加入:
m_pDevPollReactor=new ACE_Dev_Poll_Reactor;
ACE_Reactor::instance(new ACE_Reactor(m_pDevPollReactor));
那么在后续的对ACE_Reactor::instance()的调用就是使用ACE_Dev_Poll_Reactor的实现了。
第三:重新编译应用程序
在应用程序的makefile中加入 -DACE_HAS_EVENT_POLL,重新make应用程序。OK,打完收工。
用过SendLink就知道~能够检测出子网的出口计算机IP,在子网上的机器通过端口映射在局域网出口计算机上打开一个端口,并侦听。
1、搜索UPnP设备:UDP 往 239.255.255.250:1900 广播一个”搜索”的HTTP包(格式当然有规定,就不贴上来了,以免啰嗦,查一下资料即可),如果收到返回,分析一下,会得到包含类似 http://192.168.0.1:2869/upnphost/udhisapi.dll?content=uuid:fb6bbc52-aa87-4939-a4fa-289d3bbccc61 的数据
2、得到UPnP设备属性和描述信息:
TCP 往前面得到的ip/port发一个GET的HTTP包,也就是类似在浏览器中访问http://192.168.0.1:2869/,分析返回的数据,即可得到UPnP的一些描述信息,和 controlurl。
3、对UPnP设备发送控制命令,查询属性。(比如下达增删端口映射的命令)
TCP 往 controlurl 发送一定规格的指令数据即可,比如增加端口是 AddPortMapping,再填一些参数就可以,删除端口是 DeletePortMapping。也可以往这个 controlurl 查询一下,看是否支持一些指令操作,和查询一些属性等等
这些操作都是用TCP或UDP发送HTTP包,包内是XML格式的数据,返回的也是标准的HTTP返回,表明成功失败等等。
UPnP只不过是TCP/UDP、XML、HTTP,还有其它通用协议的综合运用,并没有创新什么新协议。端口映射,只是UPnP一个小的功能模块,严格来说,不算是UPnP特别指定要的,只不过是网关设备支持UPnP操作,提供了增删端口映射的功能调用而已。
UPnP的一个目标是各种设备能自动的互相发现、查询、访问和操作(比如数码相机、电脑、打印机、数码像框都能自动的互相发现和访问对方的相片,等等),具体我也没深究,有兴趣的话查一下资料。
总结一下,打开网关的映射端口有二种方法:第一,使用微软的接口IStaticPortMappingCollection,在MSDN中的地址为:
ms-help://MS.MSDNQTR.2005APR.1033/ics/ics/istaticportmappingcollection.htm
其二,如上所述,通过TCP/UDP等协议与网关交互!
有如下资源可用:
http://www.upnp.org/resources/specifications.asp
http://www.upnp.org/events/default.asp