遵循老大的教导,善于总结。
这次分享的一个经验是:“共享对象与共享资源”。
大概会围绕这个主题分几点讲:
1 是共享对象,共享资源的普遍场景。
2 相关的实现技巧,方法与模式。
+共享对象,共享资源的普遍场景
打个比方,我们要解析一个文档,文档中有元素如下 Ea Eb Ea Ef Eb Ex, 共5个元素。
那么可能我们会 写一个 class E, 然后分别创建5个对象,给予其赋相应值。
但其实5个对象中,存在重复的对象, 那么想到共享这部分资源|对象, 从而避免这部分资源重复开销。
以上就是共享对象,及共享资源的一个简单的场景描述。
这类场景最突出的表现在:文档解析。 包括xml解析,html解析,乱七八糟的脚本解析。
一个复杂的html页面,解析出来的结点是非常多的,如果每个结点都是独立对象,带来的开销是恐怖的,特别是在服务器端的表现更是如此,瓶颈直接体现在重复的结点==重复开销==内存拷贝。如果能最大程度的让内存拷贝逼近于0,那么理论上解析耗时是与文档长度成线性关系的(无需多余的内存拷贝工作)。
+相关的实现技巧,方法与模式
技巧1:枚举
在做html解析的时候,可以对业务需求的标签类型做枚举,类型就是一个值(可以是1个字节,具体看自己业务需求),开销是最小的了。
技巧2:标记
做文档解析的时候,解析出来的结点,通常还对应一段文本或字节,简称一堆东东。
那么通常会将其copy到这个结点。重复用到这个结点的,当然不会再拷贝一次,但是这样还是不够极致。
极致的做法是,不copy这堆东东,其实你只需要标记好这个结点记住对应的这堆东东的坐标就ok了。
ps, 讨论:这样的做法更倾向于对结点的读操作远大于写操作,才会体现出高效,原因很简单,这种标记的方法,如果要只支持写,就是做另劈空间,然后标识该节点被写脏了,应拿标记坐标去“另辟的空间”去拿数据。...这里做法多种多样
方法与模式:flyweight 和 工厂..这里就不说了,搜一下大把。
以上技巧经过实践,有显著成果,但是有其适用场景,仅供参考,哈哈 ^_^
分享到:
相关推荐
5. Critical Section:Critical Section 是 Windows 2000/XP 中的一种同步对象,用于保护共享资源避免冲突和混淆。 6. 互斥锁:互斥锁是一种同步对象,用于限制多个进程或线程的访问共享资源,避免冲突和混淆。 7. ...
我们充分利用了网络资源(技术论坛,共享的 实例等)。 我们喜欢这次课程设计的感觉,喜欢编程,喜欢团队交流。 c#数据库系统心得体会二: 在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好...
同步互斥算法可以防止多个线程或进程同时访问同一个共享资源,从而避免了可能出现的数据不一致或系统崩溃的情况。 哲学家就餐问题 哲学家就餐问题是计算机科学中一个经典的问题,用于描述多线程或多进程之间的同步...
本资源共享了作者在长期编程开发过程中的经验和心得。作者认为,书上的知识和实践之间存在很大差异,不适合程序员掌握新编程工具。作者建议,在学习新工具时,不要过于依赖参考书,而应该尽快利用开发平台本身提供的...
这是我做的一个很简单的多线程同步程序,目的是为了测试多线程编程下如何使用同步(synchronized)防止产生竞争共享资源的错误状态,从中得到的心得是:一定要将你所共享的变量封装在一个类中,将所有有关该变量的...
优化sql语句 1)减少对数据库的查询次数,即减少对系统资源的请求,使用快照和显形图等分布式数据库对象可以减少对数据库的查询次数。 2)尽量使用相同的或非常类似的SQL语句进行查询,这样不仅充分利用SQL共享池中...
与DotNet数据对象结合的自定义数据对象设计 (一) 数据对象与DataRow ASP.NET中大结果集的分页[翻译] .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库...
在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建健壮、可靠和具有良好响应能力的应用程序与组件奠定了良好的基础。 《CLR via C#(第3版) 》针对.NET ...
在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建健壮、可靠和具有良好响应能力的应用程序与组件奠定了良好的基础。 《CLR via C#(第3版) 》针对.NET...
在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建健壮、可靠和具有良好响应能力的应用程序与组件奠定了良好的基础。 《CLR via C#(第3版) 》针对.NET ...
在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建健壮、可靠和具有良好响应能力的应用程序与组件奠定了良好的基础。 《CLR via C#(第3版) 》针对.NET ...
以下这些情况都可以引发异常:您的代码或调用的代码(如共享库)中有错误,操作系统资源不可用,公共语言运行库遇到意外情况(如无法验证代码),等等<BR><BR>《Exception Handling for C++》关于异常处理论文,向...
同样地,面向对象设计员也沿袭一些模式,像“用对象表示状态”和“修饰对象以便 于你能容易地添加/删除属性”等。一旦懂得了模式,许多设计决策自然而然就产生了。 我们都知道设计经验的重要价值。你曾经多少次有过...
与对象进行交流,如何命令对象,就要用到API。API全称Application Programming Interface,它是访问和操作对象的规则。而DOM就是一种详细描述HTML/XML文档对象规则的API。它规定了HTML/XML文档对象的命名协定,程序...
随着信息技术的飞速发展,信息化的大环境给各成人高校提出了实现校际互联、国际互联,实现静态资源共享、动态信息发布的要求。信息化对学生个人提出了驾驭和掌握最新信息技术的素质要求;信息技术提供了对教学进行...
您可以上传任何与学习相关的档案(如报告, 作业, 心得或任何学习资源)。这些档案除 了您个人专用外, 您也可以透过建立作品集方式分享给您的同学或朋友。 1.2.Moodle 介绍 Moodle 是澳大利亚教师 Martin Dougiamas ...
◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等 ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术 读者对象 本书面向希望在android手机平台上创建应用程序的所有人员。不管是...