??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品一区二区三区久久,久久久久亚洲Av无码专,欧美一区二区三区久久综http://m.shnenglu.com/flagman/category/15576.html 唐亮的个人技术博? 【欢q{载,但请标明原作者?/description>zh-cnSat, 12 Feb 2011 11:12:19 GMTSat, 12 Feb 2011 11:12:19 GMT60反射的特性是l常会用到?/title><link>http://m.shnenglu.com/flagman/archive/2011/02/12/reflection_feature_used_in_daily_dev.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Sat, 12 Feb 2011 09:21:00 GMT</pubDate><guid>http://m.shnenglu.com/flagman/archive/2011/02/12/reflection_feature_used_in_daily_dev.html</guid><wfw:comment>http://m.shnenglu.com/flagman/comments/139944.html</wfw:comment><comments>http://m.shnenglu.com/flagman/archive/2011/02/12/reflection_feature_used_in_daily_dev.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/flagman/comments/commentRss/139944.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/flagman/services/trackbacks/139944.html</trackback:ping><description><![CDATA[<p><em>?某网友讨论道: ?br>: RTQ反的Ҏ发现很用?/em><br></p> <p><br><br>恰恰相反Q有些反的Ҏ是l常会被使用到的?/p> <p>反射M上分成两大特性,一是自省,二是发射Q?/p> <p>自省的能力极为重要,而且几乎会天天用刎ͼ很少见到q哪?net应用中不使用attribute的,而attributeҎ就是metadata通过在自省能力支撑下实现的;当然自省不单单是attributeҎ的q用Q只要是在运行时动态检视程序自w的Ҏ都要由反射的自省能力来支持Q比如Visual Studio的IDEQ这个集成开发环境本w就?net应用的好案例Q对?netlg的自动探功能;同时Q自省的能力也是Z虚拟机^台的语言Q比如c#和javaQ区别于传统语言比如c和c++的重要特性之一Q这提供了程序设计开发更Z利和安全的运行时环境Q相对而言Q在c++Q当然是native而不是managedQ的环境下,除了RTTI极ؓ单薄的运行时自省Q也是QTq个库通过meta-object system部分模拟了自省的Ҏ;</p> <p>反射的另外一个重要特性就是发,它让“E序可以写程?#8221;了,要的说就是在q行时动态生成MSILq加载运行以及持久化动态生成的MSIL的能力;p个特性的支持Q让原先一些程序设计和开发领域相对困隑֒J琐的工作,比如元编Emeta programmingQ比如动态代理dynamic proxyQ比如AOP中的基础设施weaver的实玎ͼ变得可能或相Ҏ于实玎ͼ反射的特性,也是Z虚拟机^台CLR的支持,以metadata为基来实现的Q所以这也是虚拟机^台语a的特有优势,而在传统语言q_上,q是难以实现的;比如关于meta programmingQc++是通过模板Ҏ实现的~译期meta programmingQ这与虚拟机q_上实现的q行时meta programmingq是有比较大的差距(比如前者如何保证生成的代码的type-safeQ;</p> <p>以上q两个特性,自省和发,都有个共同点Q他们都是围l着metadata机制Qƈ在虚拟机q_q行时环境CLR支持下实现的Q前者是q行时检视相关的metadataQ后者是q行时动态生成相关的metadata和MSILQ从q点也就可以看出Q要x入理解这些特性,需要研Imetadata和MSIL的实玎ͼ以及虚拟行时环境的实玎ͼ在javaq_上,是bytecode和JVMQ;</p> <p>所以,反射Q可能是虚拟机^台所提供的相Ҏ为强Ԍ最为复杂,和^台运行时本n关系最密切Q也是区别于传统语言和运行时最鲜明的特性?/p> <img src ="http://m.shnenglu.com/flagman/aggbug/139944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/flagman/" target="_blank">flagman</a> 2011-02-12 17:21 <a href="http://m.shnenglu.com/flagman/archive/2011/02/12/reflection_feature_used_in_daily_dev.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于COM?net的思?/title><link>http://m.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Sun, 19 Dec 2010 03:04:00 GMT</pubDate><guid>http://m.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html</guid><wfw:comment>http://m.shnenglu.com/flagman/comments/136922.html</wfw:comment><comments>http://m.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://m.shnenglu.com/flagman/comments/commentRss/136922.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/flagman/services/trackbacks/136922.html</trackback:ping><description><![CDATA[<p><em>?某某提到: ?br>: 一般说COM复杂Q首先是名词太多Q其ơ是ZATL的实现比较难?br>: qƈ不是COM本n复杂Q而是C++已经落后于时代了。所以ATL看v来才会像天书一?/em></p> <p><br>虽然对于全新的工E项目,推荐通过.net实现Q但是,只要你工作在Windowsq_上,必然会遇到和COM相关的技术和机制Q无论是大量的legacy的工E和代码Q还是作为OS重要功能以及nativelg的首选交互Ş式和接口暴露方式Q比如DirectX APIQ比如一些WMI的APIQ最有趣的是Q即使是.net的核心CLR本n也是一个COMlgQ可以通过Host相关接口让native应用来加载,以在当前q程中启动整个CLR的虚拟执行环境或者叫托管执行环境(managed executive environment)?/p> <p>把握COM有两点很关键Q?br>1QInterface-based designQ从设计和编码思\上就是要完全Z接口Q?br>2QVirtualTable-based binary compatibility, 实现上无ZU语a或者机Ӟ只要W合Z虚表的二q制兼容规范Q就都可以实施;</p> <p>COM仅仅是个规范Q基于COM的具体技术非怹多,OLEQAutomationQStructural storageQActiveX...汗牛充栋Q还有COM+Q这个是提供企业U开发必备的一些基功能和设施,比如Q事务管理机Ӟ对象池,安全理Q消息队?..需要指出,目前即便?net Framework也没有实现COM+所提供q些机制Q只是简单的装了后者?/p> <p>COM技术中可能有一些比较困隄地方Q接口的一致性,对象的聚合和生命周期Q套_跨套间的接口讉KQ名字对象,{等Q这些ƈ不是COM规范Zؓ刉的困难Q而是Z设计和提供,可以跨进E和机器边界Q跨异构q_Q当然必dCCOM所规定的基服务Q,透明化具体对象类型及对象生命周期Q便于统一部v和版本管理的lg技术,所必须付出的代Pq个代h从开发h员角度看具体表现为,概念理解的困难以及具体二q制实现的困难;</p> <p>不过从另一个角度看QCOM已经很容易了Q?br>a) COM规范已把要达致这些目标的pȝQ所必须提供的接口和Ҏ抽象了出来Q只不过Z表达q些抽象的概念而新造的术语名词有些陌生和突兀Q如果让遇到怼问题的每一个设计和开发h员都自己来做抽象Q未必会生成更好的方案;</p> <p>b) Z帮助设计和开发h员,Z提供了很多的开发库Q以提高COM开发的正确性和效率Q最显著的就是MFC中关于COM/OLE的辅助类和函敎ͼ以及ZCOM而生的ATLQ从本质上看Q这些类库都是把COM规范中必d现的QWindowsq_本n没有提供Q具体设计和开发h员实际实施时会重复实现的Q同时又非常Ҏ出错的那部分功能Q集中到了这些类库里l一实现Q让具体设计和开发h员以代码重用的Ş式来实现COM规范Q?/p> <p>当然Z也意识到了COMq样的一些问题,特别是具体实现时设计和开发h员必要x几乎所有的二进制细节,于是.netp生了Q把q些规范的许多复杂性都装在了虚拟机里面,把这些目标功能(跨边界、透明性等{)通过一致而又qx的^台接口和自描q的meta dataQ以一U让设计和开发h员更易接受的风格开放了出来Q?/p> <p>COM的媄响是非常q大的,比如XPCOM QFirefox上的一U插件技术标准,是ҎCOM的思想和原则制定的Q许多评QFirefox的成功是因ؓ它插件是如此的成功,q也是COM本n所意料不到的A献之一?/p> <p>?net的^CQ即使是.net CLR/SSCLI的具体实C大量q用了COM的思想和机Ӟ可以?net是搭徏在COM二进制组件^C上的虚拟机托^台?/p> <p>最后,.net开始时的内部编hCOM 2.0</p> <p> </p> <p>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p> <p>*) 关于“名词太多”<br>q是要实现可以跨q程和机器边界,跨异构^収ͼ当然必须实现了COM所规定的基服务Q,透明化具体对象类型及对象生命周期Q便于统一部v和版本管理的lg技术,所必须付出的代仗?/p> <p>COM规范已把要达致这些目标的pȝQ所必须提供的接口和Ҏ抽象了出来Q只不过Z表达q些抽象的概念而新造的术语名词有些陌生和突兀Q如果让遇到怼问题的每一个设计和开发h员都自己来做抽象Q未必会生成更好的方案;</p> <p>举个例子QapartmentQ套_是Z抽象传统OS中进E和U程的实现而新造的术语名词和概念;M抽象q样的一些概念,不新造术语,是非常困隄Q对?netQ后者用了CLR虚拟机来装了大多数的实现细节,q用让h更容易接受的风格来开放接口,可事实上仍然新造了一些名词和概念Q如cM范畴的AppDomainQ?/p> <p>*) 关于“ZATL的实现比较难?#8221;<br>ATL主要使用了template技术,COM接口指针Q用静态{换来模拟动态绑定,{等Q实际ƈ不是很复杂,只能c++实现机制的中{难度,主要涉及Modern C++ design一书中一些相兌计理늚q用。对比Boost中某些库的实玎ͼATL很h道了?/p> <p>*) 关于“qƈ不是COM本n复杂Q而是C++已经落后于时代了”<br>首先COM的规范的是复杂的,为啥Q第一点已l说了,是Z要抽象出跨边界和对象透明的组件技术;.net表象上看比较“单容?#8221;Q风gq设计和开发h员,实际上复杂事务和实现l节都被划分到CLR那个层面上去实现了;ȝ一下CLR的开源实现SSCLIQ你会发玎ͼ整个虚拟机^台的实现Q大量运用了COM的思想和机Ӟ是一个巨型系l^台的COM serverQ?/p> <p>其次QCOM规范本n是独立于实现语言的,只要构徏出的lgW合规范制定的二q制兼容Q系l就可以q作Q这和C++是否落后时代没有关系。如果开发h员认为,.net才够先进Q也完全可以?net中的托管语言Q如C#来实现COMlgQ?/p> <p>最后,每种语言都有光用的范_现在可以q么?#8220;如果有一个全新的目需求,要达致跨边界和对象透明lgQƈ且没有太q严苛的性能需求,那么.netq_及其上的托管语言来实玎ͼ比用C++及相兌助类库来以COMlg形式来实玎ͼ要更合适,也更快速便捷和节省预算?#8221;但是Q在q个判断上我们加了很多严格的U束Q一旦需求变_特别是项目的非功能性需求,要求高性能q算或者更畅的与legacy的nativepȝ怺Q那?#8220;使用native语言来实现性能关键以及legacy交互功能Q通过COM装Q再由COMInterop?net托管应用调用”可能是更现实的方案。C++是一门活的语aQ不断发展的语言Q即使在最新的托管时代里,C#成ؓ标准LQ但C++/CLI仍然是托语a里功能最完整的语a?/p> <p> </p> <img src ="http://m.shnenglu.com/flagman/aggbug/136922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-19 11:04 <a href="http://m.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CLRpd--探烦SSCLI??/title><link>http://m.shnenglu.com/flagman/archive/2010/12/13/136255.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Mon, 13 Dec 2010 01:02:00 GMT</pubDate><guid>http://m.shnenglu.com/flagman/archive/2010/12/13/136255.html</guid><wfw:comment>http://m.shnenglu.com/flagman/comments/136255.html</wfw:comment><comments>http://m.shnenglu.com/flagman/archive/2010/12/13/136255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/flagman/comments/commentRss/136255.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/flagman/services/trackbacks/136255.html</trackback:ping><description><![CDATA[<p>Fusion is one of the most importants features among ones in the runtime implementation of CLI.</p> <p>In the fusion, or any other components or modules, how to retrieve the execution engine instance and how to generate such engine?</p> <p>UtilExecutionEngine, implemented as COM object, support Queryinterface/AddRef/Release, and exposed via interface IExecutionEngine.</p> <p>With SELF_NO_HOST defined, <br>BYTE g_ExecutionEngineInstance[sizeof(UtilExecutionEngine)];<br>g_ExecutionEngineInstance would be the singleton instance of current execution engine,</p> <p>otherwise, without SELF_NO_HOST, the 'sscoree' dll would be loaded and try to get the exported function, which is named 'IEE' from such dll. Here, it is the well-known shim, in .net CLR, such module is named 'mscoree'. Further, if 'IEE' could not be found in such dll, system would try to locate another exported function, named 'LoadLibraryShim', and use such function to load the 'mscorwks' module, and try to locate the 'IEE' exportd functionin it.</p> <p>It's very obvious that Rotor has implemented its own execution engine, but it also gives or make space for implementation of execution engine from 3rd party. Here, .net CLR is a good candidate definitely, Rotor might load the mscorwks.dll module for its usage.</p> <p>PAL, PALAPI, for example, HeapAlloc, one famous WIN32 API, has been implemented as one PALAPI (defined in Heap.c), to make it possible that the CLI/Rotor be ported smoothly to other OS, such freebsd/mac os.</p> <p>CRT routines are also reimplemented, such as memcpy, it has been implemented as GCSafeMemCpy</p> <p>There're many macros in fuctions, such as SCAN_IGNORE_FAULT/STATIC_CONTRACT_NOTHROW/STATIC_CONTRACT_NOTRIGGER, they are for static analysis tool to scan, analyse and figour out the potential issues in code.</p> <p>From view point of the execution model by CLI, the act of compiling (including JIT) high-level type descriptions would be separated from the act of turning these type descriptions into processor-specific code and memory structures.</p> <p>And such executino model, in other word, the well-known 'managed execution', would defer the loading, verification and compilation of components until runtime really needs; At the same time, the type-loading is the key trigger that causes CLI's tool chain to be engaged at runtime. Deferred compilation(lead to JIT)/linking/loading would get better portability to different target platform and be ready for version change; The whole deferred process would driven by well-defined metadata and policy, and it would be very robust for building a virtual execution environment;</p> <p>At the top of such CLI tool chain, fusion is reponsible for not only finding and binding related assemblies, which are via assembly reference defined in assembly, fusion also takes another important role, loader, and its part of functionality is implemented in PEAssembly, ClassLoader classes. For example, ClassLoader::LoadTypeHandleForTypeKey.</p> <p>For types in virtual execution environment of CLI, rotor defines four kinds of elements for internal conducting, <br>ELEMENT_TYPE_CLASS for ordinary classes and generic instantiations(including value types);<br>ELEMENT_TYPE_ARRAY AND ELEMENT_TYPE_SZARRAY for array types<br>ELEMENT_TYPE_PRT and ELEMENT_TYPE_BYREF for pointer types<br>ELEMENT_TYPE_FNPTR for function pointer types</p> <p>every type would be assigned unique ulong-typed token, and such token would be used to look up in m_TypeDefToMethodTableMap (Linear mapping from TypeDef token to MethodTable *)which is maintained by current module; If there it is, the pointer to method table of such type would be retrieved, or it would look up in the loader module, where the method table should exist in while it's JIT loaded, not launched from NGEN image;</p> <p>And all the unresolved typed would be maintained in a hash table, PendingTypeLoadTable; Types and only those types that are needed, such as dependencies, including parent types, are loaded in runtime, such type is fully loaded and ready for further execution, and other unresolved types would be kept in the previous hash table.</p> <img src ="http://m.shnenglu.com/flagman/aggbug/136255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-13 09:02 <a href="http://m.shnenglu.com/flagman/archive/2010/12/13/136255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>思考系lAPI设计的问?/title><link>http://m.shnenglu.com/flagman/archive/2010/12/01/Thinking_Of_API_Design.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Wed, 01 Dec 2010 13:28:00 GMT</pubDate><guid>http://m.shnenglu.com/flagman/archive/2010/12/01/Thinking_Of_API_Design.html</guid><wfw:comment>http://m.shnenglu.com/flagman/comments/135191.html</wfw:comment><comments>http://m.shnenglu.com/flagman/archive/2010/12/01/Thinking_Of_API_Design.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/flagman/comments/commentRss/135191.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/flagman/services/trackbacks/135191.html</trackback:ping><description><![CDATA[<p>最q正好在思考系lAPI设计中考量的一些问题,<br><br>【某|友讨论到?br><em>: 那地址是不是同一个地址呢。我现在的理解是q样的,假设有巨大的真实内存。windows首先高2G的内存自己占了,用作各种内核对象。这2G内存׃nl每个进E,但进E不能直接访问,只能通过windowsl定的函数访问?br>: 然后每个q程都给?G内存Q进E如果创q对象放到自己那2G内存里面Q如果要建立内核对象放到共享的那高2G里面厅R?br>: 所以不同进E如果可以访问高2G内存的话QQ何进E访问到同一个高地址实际上都是访问到同一个对象。但如果讉K?G地址的话Q不同进E是对应不同的对象的?br></em><br><br><br>在不同的q程中,询问同一个内核对象的实际地址Q无论是U性地址q是物理地址Q,是无意义的:</p> <p>首先Q内核对象只能由在内核态下的例E才能直接访问,在我们日常的代码中,所调用的Windows APIQ比如CreateFile, Q注意调用刚开始时是处于用h下的)Q一般都会在ntdll.dll中找到对应的内核函数或例E,接着pȝ切换到内核态,开始调用实际对应的内核函数(KiCreateFile)Q这个时候才会去讉K内核对象的实际地址Q然后徏立一个该内核对象对应当前q程的HandleQƈ把它q回lcallerQ同时切换回用户态;因此Q对于用h程序来_只要且只能知道该内核对象在当前进E中的对应的Handle可以对其进行操作了Q?/p> <p>其次Q这L设计是出于对OS核心数据l构Q当然包括我们正在讨论的内核对象Q的保护Q如果用h程序可以轻易的获取内核数据l构的实际地址Q那么对于整个OS的安全和E_昄构成很大的问题;一个用h的误操作可以轻易的引v整个OS的崩溃,而有了这一层的保护Q崩溃的只是当前q程而不是整个系l;</p> <p>接着上面q点Q也可以看出Q内核对象的如此设计辑ֈ了接UOS本n的^滑演q的目的。从Windows 3.0?5/98Q从NT到Win2k/XPQ再到眼下的Vista/Win7QWindows操作pȝ本n发生了巨大的变化和进步,采纳了无数的新技术新ҎQ但是它基本的系l应用编E接口,也就是我们所熟知的windows APIQ却q没有发生太大的改变Q很多Win 3.0 q个16位OS时代的程序代码只要当初设计规范编码规范,E许修改可以在最新版的OS上运行如飞;是什么做Cq些Q也是所谓的极ؓ重要的向后兼Ҏ,我个为,把操作系l的重要/主要功能抽象成内核对象,q过一套极为solid的API暴露出来Q达成了q个目标?/p> <p>q是一U更高层ơ上的面向对象,把实现的l节Q把pȝ的复杂,单而优雅的装了v来。你只要调用CreateFiled个文件或道或邮槽,不用担心当前OS是Windows 3.0q是Win7Q获得的HandleQ你也不用去兛_它以及它所指向的内核对象是Windows 3.0的实现还是Win7的实现?/p> <p>Windows上所有的_ֽ几乎都是Zq套通过内核对象概念抽象q暴露的API基础之上QCOM/OLEQ这个二十年前震撼性的ABI和IPC范畴的技术规范,其中很多的设计思\也是植根于内核对象的设计理念Q如COM对象的引用计数和内核对象引用计数QIUnknown和Windows Handle(前者是指向某个二进制兼容的lg对象Q后者引用或间接指向某个内核对象Q都是对于某个复杂概늚一致性抽象表q?Q等{;</p> <p>十年前的.netQ本来是作ؓCOM的升U版本推出,把COM/OLE的实现复杂性封装在了虚拟机q_CLR里面Q而从q个虚拟机的开源实现SSCLIQ我们可以看到大量的COM机制?net的具体实现里面v了D重的作用。在q些VM中大量symbol有着COR的前~或者后~QCOR指代什么?Common Object Runtime, 原来CLR/SSCLI的设计思\也是把OS通过虚拟机VM的Ş式,q过common object向应用程序暴露功能?/p> <p>结一下,<br>OS内核对象APIQ三十年前系l别的对象抽象Q?br>COM/OLEQ二十年前二q制lgU别的对象抽象;<br>.net/CLR, 十年前虚拟机q_U别的对象抽象;</p> <p>写到q里倒是引v了我其他的一些思考,软g工业界一直以来对面向对象OO是热火朝天,特别是语a层面Q从C++/Java/C#到Python/JScriptQ不一而Q?/p> <p>但是我们有没有从Ҏ性的设计理念上对面向对象Q察U雅a了呢Q?/p> <p>如果现在设计Windowsq套API的Q务放在大安前,会采用内核对?HandleҎq是直接指向OS内部数据l构的方式来暴露功能Q?/p> <p>从三十年前的q套API的设计中Q我们真的可以学到很多?/p> <p><br> </p> <img src ="http://m.shnenglu.com/flagman/aggbug/135191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-01 21:28 <a href="http://m.shnenglu.com/flagman/archive/2010/12/01/Thinking_Of_API_Design.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.ahtsz.cn" target="_blank">þþ뾫ƷպĦ </a>| <a href="http://www.trgba.cn" target="_blank">18ƾþþAAAƬ</a>| <a href="http://www.gdfw.org.cn" target="_blank">þۺϾþùɫ</a>| <a href="http://www.gzquanjing.cn" target="_blank">ԭۺϾþô</a>| <a href="http://www.dzeuegg.cn" target="_blank">þҹɫƷŷ</a>| <a href="http://www.238000.com.cn" target="_blank">91þó</a>| <a href="http://www.kxtravel.com.cn" target="_blank">Ʒþþþþ </a>| <a href="http://www.rh-hr.cn" target="_blank">þþþAVƬ</a>| <a href="http://www.yaott2.cn" target="_blank">ۺϾƷ㽶þ97</a>| <a href="http://www.yjpute.cn" target="_blank">ƷŮþøվ</a>| <a href="http://www.x-site.cn" target="_blank">ۺϾþü</a>| <a href="http://www.571jia.cn" target="_blank">ɫվþþþۺywww</a>| <a href="http://www.ersunle.cn" target="_blank">Ʒþþþù</a>| <a href="http://www.z5621.cn" target="_blank">97þþþƷۺ88þ</a>| <a href="http://www.rqhsjc.cn" target="_blank">þҹƵ</a>| <a href="http://www.wxjdsteel.cn" target="_blank">þü޾Ʒ?V</a>| <a href="http://www.g8360.cn" target="_blank">þþһ</a>| <a href="http://www.fragrancebeads.cn" target="_blank">޹Ʒþ</a>| <a href="http://www.shzkyz.cn" target="_blank">þþƷ</a>| <a href="http://www.shenhoulong.com.cn" target="_blank">鶹AV뾫Ʒþ</a>| <a href="http://www.shensizxw.cn" target="_blank">þۺϾþ</a>| <a href="http://www.wxwyx.cn" target="_blank">þþþĻɫ</a>| <a href="http://www.wtxpxt.cn" target="_blank">þ99Ʒ</a>| <a href="http://www.enfb.cn" target="_blank">ҹþƷþþþ</a>| <a href="http://www.jkh7.cn" target="_blank">þþƵ</a>| <a href="http://www.kouziye.cn" target="_blank">ŷһþþƷ</a>| <a href="http://www.26zf.cn" target="_blank">þһۺ</a>| <a href="http://www.dbwlcom.cn" target="_blank">þ޾Ʒһ</a>| <a href="http://www.qdpin.cn" target="_blank">ҹƷþ</a>| <a href="http://www.c-c-city.com.cn" target="_blank">ݺݸɺݺݾþ</a>| <a href="http://www.vueq.cn" target="_blank">ձþþþþĻ</a>| <a href="http://www.icrms.org.cn" target="_blank">þþþĻ</a>| <a href="http://www.zfhotel.cn" target="_blank">ɫۺϾþɫ</a>| <a href="http://www.jituansms.cn" target="_blank">99ƷþþƷ</a>| <a href="http://www.s5273.cn" target="_blank">91Ʒɫ۾þ </a>| <a href="http://www.s6893.cn" target="_blank">ŷɫ۾þþƷ</a>| <a href="http://www.gmbs.com.cn" target="_blank">Ļþ2017</a>| <a href="http://www.88kam.cn" target="_blank">רþۺϾĻ</a>| <a href="http://www.sd167.cn" target="_blank">˾þô߽AVۺӰԺ</a>| <a href="http://www.99605.com.cn" target="_blank">ɫþþþþþС˵</a>| <a href="http://www.zzc40.cn" target="_blank">þҹɫƷվ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>