要不要池化是个艰难的选择

2019-03-25 11:37|来源: 网络

要不要池化是个艰难的选择.

如果结合现实世界的情况, 池化肯定是必须的.

比方说如果你想要出远门, 那么在现实世界你有几个选择:

1, 坐公交; 2, 买台车; 3, 租台车; 4, 搭便车...

当然还有更多, 但是很明显的是, 就算你最后选择造一台车, 你最终大概也不会每次出门前都花几年时间造一台车. 除非你的速度快到可以在1毫秒的时间内造出一辆车, 这样的话不管是哪一种方式都明显不够这一种快. 但是问题是, 如果你真的这么干, 并且受你的影响, 其他人通过向你学习都学会了极速造车, 这样子表面上看起来问题好象已经是解决了. 但如果大家出门次数都比较多的话, 一个新的问题又将浮了出来:

你家已经没有地方放这么多的车. 这时候你可能会说: 我当然不会傻到这一步. 我有一台就够了, 干嘛造那么多?

写到这, 我觉得问题的本质已经暴露出来了, 我们在现实世界中日复一日地执行着将对象重用的法则, 但是在程序代码中却不停地重复制造功能完全相同的对象. 要知道在现实世界中, 对象的使用价值会随着时间的推移不断折旧, 当旧到不能再使用的时候, 我们就会需要一个新的对象. 这也是制造行业存在的根本. 但是反观我们程序员们整以生存的代码世界, 它们从来不存在折旧的问题, 我们的代码从来就不会越跑越老.  然后我们却从来不考虑重新使用对象, 每次我们想要一台汽车的时候, 我们就重新创造一台.

这当然不是一个正确的软件生态行为. 我这样说可能有点太华丽. 我只是不想有人以为我在讨论性能问题. 当然, 对象的重用肯定与性能相关, 但是两者不是同一个层次的问题. 性能是对运行状态的度量, 但是对象重用确确实实是从一个生态的角度来考虑问题的.

SUN公司提倡不需要在代码中使用对象池技术. 他们认为虚拟机完全可以解决对象池可以解决(在虚拟机内部)的问题. 我认为果然这样的话, 虚拟机就不再需要垃圾回收了. 垃圾回收本身就是对对象状态之存在的反证. 如果对象的状态从头到尾是一致的, 当然就不会需要任何对象回收. 正因为对象有具有使用价值和不再具有使用价值的区别, 我们才需要把仍然具有使用价值的对象保留起来, 把不再具有使用价值的对象抛弃. 这一点联系到现实生活就是我家里有一个垃圾桶. 其实就平常来说, 我往垃圾桶里面扔的东西的种类大多是一些包装纸或者包装纸盒, 当然还有一些食物残渣, 如果我在家里吃饭的话. 但是很少会有电脑, 或者手机之类的东西. 可能会有人说那是因为这些东西很贵, 所以你不会用一次就扔掉. 那么一支铅笔呢? 或者一个打火机呢(这里请不要考虑它的折旧)?

东西要不要扔掉, 决定于它对于我们是不是继续具有使用价值. 注意这里有一个相对关系. 一张废纸, 当然仍然具有使用价值, 但我却不再需要, 所以我只能抛弃它. 可能又会有人说 (其实是我自己的想法) 一张废纸也可以重新使用啊, 比如拿来生火(HOHO, 我有时候确实需要, 当燃气炉点不着的时候, 一张纸的用处实在是太大了).  这样一说其实引出更深的一层意思, 我们首先应该制造能够重新使用的东西, 然后当我们决定抛弃一件东西之前, 首先应该想想这件东西是不是还有别的用途呢? 比方一张已经写满的草稿纸确实可以用来生火. 哪怕这种纸质很不幸不适合生火(有些纸就是点不着, 不过我分不清到底是哪一种), 你一恼怒就又想扔掉它了! 且慢, 如果你家有足够的地方, 并且这张纸至少还算干净的话, 象我这种人 (我很少扔东西, 我家里面有十年以前的买的鞋子. 这样做的目的是为了当碰上连绵阴雨的天气我不至于要一天买一双鞋. 我不喜欢穿皮鞋或雨鞋!) 就会劝你还是留下来并且保管好. 当然, 这里有个前提, 就是你在家里并不能独自制造出一张纸. 如果你能呢? 也许恰好你就住在造纸厂里面, 这样你当然应该扔掉它. 我主张对象重用但从来不反对扔掉没有用的东西. 比方说一个破烟头, 我很少会留下这样的东西 (我还是会经常留下一两个在烟灰缸里面, 虽然我直到现在还是没有发现它们有什么用途. 但是这样的话我家里就会长期拥有破烟头. 除非有一天我发现破烟头原来会引起女孩子的反感, 我应该是不会改变这个习惯的. )


本文链接:要不要池化是个艰难的选择,转自http://www.ixpub.net/thread-792786-1-1.html

相关问答

更多
  • 公有制职称是全国范围适用,非公有制职称则是地方性的,哪里的职称就在哪里适用。 社会化职称与非公职称有很大区别,区别有三: 一是评审条件不同。 社会化职称评审条件是以人事部颁发文件为基础,具体需要从业资格、学历、基础职称资格、外语、计算机、继续教育、论文、业绩等,是评审\考试或考评结合。非公职称评审条件是呼和浩特市政府颁发行政文件,具体需要从业资格、学历、从事专业时间、业绩等,是评审取得。 二是评审机构和核发机构不同。 社会化职称是由人事局或人事厅组织评审与核发,非公职称是由呼和浩特市人事局组织评审与核发。 ...
  • 现在考华为认证的人越来越多,华为认证的培训机构也良莠不齐,加上费用也是高低不一,很多学生很难抉择,也担心自己是否真正学到东西,因此这里探讨一下华为认证自学与培训的区别,分析一下该不该选择培训机构。 一、教材问题 首先是教材问题,一个经过华为授权的培训中心必然会提供华为最新最全的学习资料,不另外收教材费。自主学习虽然省去了培训费用,但是同样要支付较高的教材费用,同时,华为教材一般只提供其授权的培训中心,在市面上很难买到最新的华为配套教材。 二、知识理解问题 即使买到最新教材自主学习,教材中的知识也可能会和实际 ...
  • Spring提供的ThreadPoolTaskExecutor类也可以创建 线程池,就是ThreadPoolTaskExecutor,任务会被拒绝,但实际上Spring也提供了功能类似的类。这个类处理被拒绝的任务。
  • Linux内核的ubuntu系统好像可以。可以在Windows平台下安装的。可以在启动的时候选择系统。
  • 第一个是你自己的文件或是程序解压后生成的文件。第二是机器出现问题了,可以刷机的程序文件。大概就这个区别。
  • 您可以将Lambda触发器功能与Cognito用户池一起使用,以自定义发送给用户的消息。 自定义消息Lambda触发器向您发送一个事件源,可以帮助您识别特定的用户池或用户,然后向服务返回一个消息模板,该模板将在发送SMS或电子邮件时使用。 它应该符合包含{####}作为代码参数的合同。 在特定情况下,要识别特定国家/地区的用户,您可以在用户池中为源国家/地区创建自定义属性 。 在每个SignUp调用中,您可以设置该值,服务将该值发送到您的lambda函数。 You can use the Lambda Tr ...
  • 这是逻辑上的,并没有太多使用sp_setapprole的经验,但是在调用之前是否无法检查安全上下文? 或者首先检查安全权限和上下文? Nope, it's not possible.
  • 你问过伪代码,但有时候把它写成Java也同样简单明了。 该解决方案的一般思想是尝试将每个数字添加到等式的左侧或右侧。 它跟踪递归中每一步的每一侧的计数和总和。 评论中有更多解释: class Balance { public static void main(String[] args) { System.out.println(balanced(-3, 5, 12, 14, -9, 13)); // true System.out.println(balanced(-3, 5, - ...
  • 解决方案是针对功能声明参数化整个层次结构,并为具体实现创建typedef / specific类。 Destination_base -> Destination extends Destination_base ^ | Point3d_base -> Point3d extends Point3d_base 实现层次结构是参数化的。 啊。 爱你的预处理。 The solution is to parameterize the ent ...