- 浏览: 4830761 次
- 性别:
- 来自: 上海
-
博客专栏
-
-
robbin谈管理
浏览量:137769
文章分类
最新评论
-
xly1981:
领导者是团队的灵魂。深入一线的过程,包括代码review,能帮 ...
robbin谈管理:改造团队的经验(2) -
jiehuangwei:
像这种总结比较性的ppt文档可以多发啊
Web并发模型粗浅探讨 -
linux1308:
看完学习到了很多东西,感谢推荐!
推荐一篇很好的RoR部署方案性能评测 -
zweite:
直接对搜索的结果进行缓存是不是会更快一点呢
漫谈应用缓存的命中率问题 -
kaogua:
现在已经是ruby2.0了, 不知道这个的效率是怎么样的, 是 ...
Ruby作为服务器端应用已经成熟了
http://code.google.com/p/google-guice/
Google公司的Bob lee开发的轻量级IoC容器,其特点是:
1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少
http://code.google.com/p/google-guice/wiki/SpringComparison
这是Google guice和spring IoC容器的对比
另外xwork2.0已经集成了Google guice容器了。
http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8
这是Google guice的快速入门文档,用起来挺简单的。
无论如何,欢迎任何对spring容器的竞争,因为spring的容器代码和设计确实不太漂亮。
同感,
但是要补充的一点是,哪怕出现了比Spring更好的框架, 目前一时半刻也很难撼动Spring的地位...更多的人考虑的该框架是否有足够的官方/非官方的技术支持,是否可以轻易的从市场招聘到懂该框架的开发人员.
XML解析总比反射耗时,而且不支持重构。
spring确实是超级慢啊。
这个guice看起来不那么embeddable,不知道谁用过ejb3的dependency injection的?给比较一下?
我比较喜欢的功能:
1。快
2。静态检查。没用过,不知道能达到什么程度。
3。没有特殊的setter injection,这样显得更优雅。
有点犹豫的:
1。说是ultra-lightweight。可能是指代码量说的。从侵入性来讲,要求组件import Guice的Annotation,这不太lightweight——当然,从实用角度来讲也不一定就是大不了的问题。
ajoo咋没比较一下yan和guice咧,早晨看到这个帖子就等着ajoo来拍转呢:)
spring慢也是在容器启动的时候慢,做的事情多自然就慢了,guice只是一个IoC容器而已,IoC只是spring的一部分
你以为guice在启动的时候不慢吗,它也要load整个对象图,你看看lz的连接就知道guice有没有aop了,并且如果把spring中配置的bean设置位lazy-init,那spring的启动也是非常快的。虽然spring不只ioc,但是你也可以只用ioc啊,所以spring在启动的时候并不会比guice多做多少事
spring慢也是在容器启动的时候慢,做的事情多自然就慢了,guice只是一个IoC容器而已,IoC只是spring的一部分
spring确实是超级慢啊。
这个guice看起来不那么embeddable,不知道谁用过ejb3的dependency injection的?给比较一下?
我比较喜欢的功能:
1。快
2。静态检查。没用过,不知道能达到什么程度。
3。没有特殊的setter injection,这样显得更优雅。
有点犹豫的:
1。说是ultra-lightweight。可能是指代码量说的。从侵入性来讲,要求组件import Guice的Annotation,这不太lightweight——当然,从实用角度来讲也不一定就是大不了的问题。
仔细看了一下,确实是这样的。Initialization on Demand Holder (IODH) idiom确实是Jeremy Manson和Brian Goetz的成果,也正是Jeremy的建议让Bob知道了这样的写法。
感谢chen的纠正!
关于Initialization on Demand Holder (IODH) idiom,详见:
http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#dcl
为Jeremy Manson和Brian Goetz抱不平,这个写法是他们的研究成果,Bob Lee只是帮他们推广了一下而已,怎么就成了他名下的了?!
Google公司的Bob lee开发的轻量级IoC容器,其特点是:
1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少
http://code.google.com/p/google-guice/wiki/SpringComparison
这是Google guice和spring IoC容器的对比
另外xwork2.0已经集成了Google guice容器了。
http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8
这是Google guice的快速入门文档,用起来挺简单的。
评论
31 楼
acdc
2007-03-01
ajoo 写道
无论如何,欢迎任何对spring容器的竞争,因为spring的容器代码和设计确实不太漂亮。
同感,
但是要补充的一点是,哪怕出现了比Spring更好的框架, 目前一时半刻也很难撼动Spring的地位...更多的人考虑的该框架是否有足够的官方/非官方的技术支持,是否可以轻易的从市场招聘到懂该框架的开发人员.
30 楼
NoName
2007-03-01
这么牛得人?关注关注
29 楼
smilerain
2007-03-01
下载了一个guice用了一下,guice真难用,但guice是要快一点
大概测试一下,快不会超过10倍.大概在4-5倍.
大概测试一下,快不会超过10倍.大概在4-5倍.
28 楼
piaochunzhi
2007-03-01
100 倍是不是 用了 中国的 夸张 的修饰词啊 !
27 楼
smilerain
2007-03-01
快100倍,好像夸张了点,spring慢主要是读取配置,动态注入慢了.核心部分并不慢,spring能够动态注册单列bean.
要是guice也动态注册单列bean,和spring来测试,
谁快谁慢还不一定.
要是guice也动态注册单列bean,和spring来测试,
谁快谁慢还不一定.
26 楼
ray_linn
2007-03-01
justcode 写道
无配置文件这点上,不知道是不是优点......
XML解析总比反射耗时,而且不支持重构。
25 楼
ajoo
2007-03-01
spring可不仅仅是启动慢这么简单.getBean()就很慢的。以前做过一个benchmark(http://docs.codehaus.org/display/YAN/Performance+Test+(Nuts+vs+Spring)),spring的prototype bean最坏情况比yan慢29倍。而yan并不是从效率角度着眼设计的。大量的indirection,抽象在yan中存在,这些都可能影响效率。
这也就是说,想做一个ioc容器比spring还慢的,也不是那么容易的。
所以说,Guice比spring快100倍我并不惊讶。(猜想可能Guice用了特殊的reflection,比如cglib的reflection增强?看bob lee的blog确实有使用cglib reflection可以提高reflection效率的文章)
当然,挺spring最有力的说法就是,getBean()的效率并不重要。因为理想情况是整个app在启动时由spring把所有依赖都注射完毕,然后就没spring的事了。getBean()仅仅调用一次就够了。
如果这样的话,快一百万倍都没有意义了。
关于yan和guice的比较。首先我不是很熟悉guice,不好比。
但是粗略看上去,guice是从可用性和效率着眼的,而yan着眼于灵活性和embeddability。一个容器直接用也许就需要那么寥寥几个功能,但是要是嵌入到别的应用里面,根据要嵌入的应用的不同需求,可能要非常变态的灵活性才能满足。
yan也许更应该和pico放在一起比。而guice和spring才是更竞争的关系。
无论如何,欢迎任何对spring容器的竞争,因为spring的容器代码和设计确实不太漂亮。
这也就是说,想做一个ioc容器比spring还慢的,也不是那么容易的。
所以说,Guice比spring快100倍我并不惊讶。(猜想可能Guice用了特殊的reflection,比如cglib的reflection增强?看bob lee的blog确实有使用cglib reflection可以提高reflection效率的文章)
当然,挺spring最有力的说法就是,getBean()的效率并不重要。因为理想情况是整个app在启动时由spring把所有依赖都注射完毕,然后就没spring的事了。getBean()仅仅调用一次就够了。
如果这样的话,快一百万倍都没有意义了。
关于yan和guice的比较。首先我不是很熟悉guice,不好比。
但是粗略看上去,guice是从可用性和效率着眼的,而yan着眼于灵活性和embeddability。一个容器直接用也许就需要那么寥寥几个功能,但是要是嵌入到别的应用里面,根据要嵌入的应用的不同需求,可能要非常变态的灵活性才能满足。
yan也许更应该和pico放在一起比。而guice和spring才是更竞争的关系。
无论如何,欢迎任何对spring容器的竞争,因为spring的容器代码和设计确实不太漂亮。
24 楼
厌倦发呆
2007-02-28
ajoo 写道
robbin 写道
http://code.google.com/p/google-guice/
Google公司的Bob lee开发的轻量级IoC容器,其特点是:
1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少
http://code.google.com/p/google-guice/wiki/SpringComparison
这是Google guice和spring IoC容器的对比
另外xwork2.0已经集成了Google guice容器了。
http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8
这是Google guice的快速入门文档,用起来挺简单的。
Google公司的Bob lee开发的轻量级IoC容器,其特点是:
1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少
http://code.google.com/p/google-guice/wiki/SpringComparison
这是Google guice和spring IoC容器的对比
另外xwork2.0已经集成了Google guice容器了。
http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8
这是Google guice的快速入门文档,用起来挺简单的。
spring确实是超级慢啊。
这个guice看起来不那么embeddable,不知道谁用过ejb3的dependency injection的?给比较一下?
我比较喜欢的功能:
1。快
2。静态检查。没用过,不知道能达到什么程度。
3。没有特殊的setter injection,这样显得更优雅。
有点犹豫的:
1。说是ultra-lightweight。可能是指代码量说的。从侵入性来讲,要求组件import Guice的Annotation,这不太lightweight——当然,从实用角度来讲也不一定就是大不了的问题。
ajoo咋没比较一下yan和guice咧,早晨看到这个帖子就等着ajoo来拍转呢:)
23 楼
bestapple
2007-02-28
如果没有了配置文件了 那IOC的注入还是以来JAVA代码中的标记来实现,与代码过于耦合了吧
22 楼
ahuaxuan
2007-02-28
quaff 写道
ahuaxuan 写道
如果光讲这个“快”的话不能看比例吧,1毫秒和100毫秒对用户来说没有什么区别,用spring到现在从来没有它有多慢,现在搞的分布式系统里,感觉remote session bean才叫个真慢,呵呵
spring慢也是在容器启动的时候慢,做的事情多自然就慢了,guice只是一个IoC容器而已,IoC只是spring的一部分
你以为guice在启动的时候不慢吗,它也要load整个对象图,你看看lz的连接就知道guice有没有aop了,并且如果把spring中配置的bean设置位lazy-init,那spring的启动也是非常快的。虽然spring不只ioc,但是你也可以只用ioc啊,所以spring在启动的时候并不会比guice多做多少事
21 楼
billchang010
2007-02-28
真的好用的东西就应该赶快拿来实践一下。建议牛人实践一下介绍经验。
20 楼
anweixiao
2007-02-28
类似的形式在commons中出现: source: package org.apache.commons.lang; public class ObjectUtils { public static final Null NULL = new Null(); public static class Null implements Serializable { private static final long serialVersionUID = 7092611880189329093L; Null() { super(); } /** * <p>Ensure singleton.</p> * * @return the singleton value */ private Object readResolve() { return ObjectUtils.NULL; } } }[size=9][/size]
19 楼
former
2007-02-28
Guice (pronounced 'juice') is an ultra-lightweight, next-generation dependency injection container for Java 5 and later.
其关注点在DI,还没有像Spring那样提供一些辅助的功能。现在如果拿来和Spring做全面的比较,还为时尚早。
some 100X faster than Spring for dependency injection.100倍的提高也是在DI,看以后的发展吧。
不过多一个开源的选择还是不错。不知道老Johnson对这个100X如何评价。
其关注点在DI,还没有像Spring那样提供一些辅助的功能。现在如果拿来和Spring做全面的比较,还为时尚早。
some 100X faster than Spring for dependency injection.100倍的提高也是在DI,看以后的发展吧。
不过多一个开源的选择还是不错。不知道老Johnson对这个100X如何评价。
18 楼
jianrc
2007-02-28
无配置文件的好处就是可以静态检查,就是编译器就发现配置的问题,这个很好
17 楼
quaff
2007-02-28
ahuaxuan 写道
如果光讲这个“快”的话不能看比例吧,1毫秒和100毫秒对用户来说没有什么区别,用spring到现在从来没有它有多慢,现在搞的分布式系统里,感觉remote session bean才叫个真慢,呵呵
spring慢也是在容器启动的时候慢,做的事情多自然就慢了,guice只是一个IoC容器而已,IoC只是spring的一部分
16 楼
ahuaxuan
2007-02-28
如果光讲这个“快”的话不能看比例吧,1毫秒和100毫秒对用户来说没有什么区别,用spring到现在从来没有它有多慢,现在搞的分布式系统里,感觉remote session bean才叫个真慢,呵呵
15 楼
ajoo
2007-02-28
robbin 写道
http://code.google.com/p/google-guice/
Google公司的Bob lee开发的轻量级IoC容器,其特点是:
1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少
http://code.google.com/p/google-guice/wiki/SpringComparison
这是Google guice和spring IoC容器的对比
另外xwork2.0已经集成了Google guice容器了。
http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8
这是Google guice的快速入门文档,用起来挺简单的。
Google公司的Bob lee开发的轻量级IoC容器,其特点是:
1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少
http://code.google.com/p/google-guice/wiki/SpringComparison
这是Google guice和spring IoC容器的对比
另外xwork2.0已经集成了Google guice容器了。
http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8
这是Google guice的快速入门文档,用起来挺简单的。
spring确实是超级慢啊。
这个guice看起来不那么embeddable,不知道谁用过ejb3的dependency injection的?给比较一下?
我比较喜欢的功能:
1。快
2。静态检查。没用过,不知道能达到什么程度。
3。没有特殊的setter injection,这样显得更优雅。
有点犹豫的:
1。说是ultra-lightweight。可能是指代码量说的。从侵入性来讲,要求组件import Guice的Annotation,这不太lightweight——当然,从实用角度来讲也不一定就是大不了的问题。
14 楼
jigsaw
2007-02-28
i got to know this singleton impl when i was reading effective java many yrs ago...
13 楼
Allen
2007-02-28
max.h.chen 写道
为Jeremy Manson和Brian Goetz抱不平,这个写法是他们的研究成果,Bob Lee只是帮他们推广了一下而已,怎么就成了他名下的了?!
仔细看了一下,确实是这样的。Initialization on Demand Holder (IODH) idiom确实是Jeremy Manson和Brian Goetz的成果,也正是Jeremy的建议让Bob知道了这样的写法。
引用
Imagine my surprise today when Jeremy Manson pointed me to the Initialization on Demand Holder (IODH) idiom which requires very little code and has zero synchronization overhead. Zero, as in even faster than volatile. IODH requires the same number of lines of code as plain old synchronization, and it's faster than DCL!
感谢chen的纠正!
关于Initialization on Demand Holder (IODH) idiom,详见:
http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#dcl
12 楼
max.h.chen
2007-02-28
Allen 写道
这个Bob Lee可是相当不简单的说……
他写的一个Singleton模式的写法前不久还得到了OnJava编辑的推荐呢:
See in : http://crazybob.org/2007/01/lazy-loading-singletons.html
See also : http://www.oreillynet.com/onjava/blog/2007/01/singletons_and_lazy_loading.html
他写的一个Singleton模式的写法前不久还得到了OnJava编辑的推荐呢:
public class Singleton { static class SingletonHolder { static Singleton instance = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.instance; } }
See in : http://crazybob.org/2007/01/lazy-loading-singletons.html
See also : http://www.oreillynet.com/onjava/blog/2007/01/singletons_and_lazy_loading.html
为Jeremy Manson和Brian Goetz抱不平,这个写法是他们的研究成果,Bob Lee只是帮他们推广了一下而已,怎么就成了他名下的了?!
发表评论
-
WebObjects的来龙去脉
2012-06-08 15:30 7704在知乎上回答的一个问题:http://www.zhihu.co ... -
缓存技术浅谈
2010-09-24 18:08 21868有我在两年前写的一个培训的ppt,是介绍缓存知识的。有兴趣的可 ... -
对领域模型实现的总结性观点
2008-11-30 15:16 19606陶文发起的对领域模型 ... -
发现JBoss Seam很棒呀!有用Seam做过项目的吗?
2008-07-06 20:56 30571上周去见了一个朋友Mark,他应邀在Red Hat的研讨会上面 ... -
Spring Application Platform - SpringSource的应用服务器发布
2008-05-05 17:04 69082008年的5.1劳动节,Spring ... -
Warp framework - 一个相当有前途的Java轻量级Web开发框架
2008-03-06 15:24 22666Warp framework 是最近刚刚 ... -
Google Android会成为手机领域的微软Windows吗?
2007-11-16 17:23 9663Google gPhone手机的传言已经沸沸扬扬好几个月了,然 ... -
Java已经过时了吗?
2007-07-02 15:43 59771在四年以前,当我开始 ... -
Java开源框架发展的遐想
2007-05-23 00:04 34851上周末在杭州网侠大会做演讲的时候,我说:Java开源框架的革命 ... -
漫谈应用缓存的命中率问题
2007-05-09 14:19 26566这篇文章源自于: http://www.iteye.com/ ... -
为什么ORM性能比iBATIS好?
2007-05-06 11:16 34596缓存是有很多层次的,有web server前端缓存,有动态页面 ... -
点评Grails vs RoR
2007-03-30 17:49 8300Grails的革新和RoR相比,非常不彻底,很多地方兼容Jav ... -
缓存简述
2007-03-30 09:55 12284缓存实现的层面有很多: 1、对象缓存 由ORM框架提供,透明 ... -
JRuby0.9.8,正式宣布支持ruby on rails
2007-03-07 10:35 15704http://jruby.codehaus.org/ 自从S ... -
domain model的延伸讨论
2007-03-03 01:17 40844domain model,又称为领域模型,是Java企业应用讨 ... -
可以开始用Struts2.0了
2007-02-27 14:56 56152http://struts.apache.org/ Apac ... -
Spring2.0和EJB3.0随谈
2007-02-08 14:26 18476Spring自从2003年发布以来 ... -
Java程序员的推荐阅读书籍
2007-02-07 20:12 101440《Java程序员的推荐阅读 ... -
应该如何正确使用Quartz
2006-12-27 11:40 34283对于Web容器来说,最忌讳应用程序私自启动线程,自行进行线程调 ... -
静态类型语言的优势究竟是什么?
2006-11-13 10:03 33592在参与这个讨论的过程中,产生了一个新的话题,很想和大家探讨一下 ...
相关推荐
- **轻量级**:相比Spring等其他IoC容器,Guice更小巧,引入的依赖少,启动速度快。 - **简洁的API**:Guice的API设计简单易用,减少了代码量,降低了学习曲线。 - **强大的注解支持**:Guice对Java标准注解和...
【标题】:理解IoC容器及其替代方案:Spring与Guice的对比 【描述】:在Java开发领域,Spring框架的影响力无处不在,它的IoC(控制反转)和AOP(面向切面编程)特性极大地简化了应用的构建。然而,Spring并非唯一的...
速度快,号称比spring快100倍。 无外部配置(如需要使用外部可以可以选用Guice的扩展包),完全基于annotation特性,支持重构,代码静态检查。 简单,快速,基本没有学习成本。 Guice和spring各有所长,...
- **Google Guice**:Google 提供的一个轻量级 DI 框架。 - **Jdon Framework**:提供了一系列企业级应用开发工具。 - **1.12 小结** - **总结**:介绍了 Spring 框架的基本概念、新功能以及生态系统。 #### 第...
它与Google App Engine等Google产品集成良好,也是Spring等其他IoC框架的一个轻量级替代方案。 总的来说,Google Guice是一个强大的工具,它通过依赖注入帮助开发者构建更加灵活、易于测试和维护的Java应用程序。...
另外,Spring 3.1对JSR-330依赖注入规范的全面支持,使得与Google Guice等其他依赖注入框架的互操作性得到增强。 总的来说,这个"spring3.1 jar全集"包含的是一套完整的Spring开发工具,涵盖了从核心功能到高级特性...
Spring 4.x版本开始全面支持JSR-330(Dependency Injection for Java)标准,如@Inject和@Provider等注解,这使得Spring与其他遵循该标准的框架(如Google Guice)更易于互操作。 七、Spring Boot 虽然不直接包含...
虽然Struts 2 本身具备一定的依赖注入能力,但在实际项目中,为了更好地管理组件之间的依赖关系,通常会选择与Spring这样的外部IoC容器进行整合。 #### 三、Struts 2 和 Spring3 的整合步骤 1. **环境准备**: - ...
同时,增强了对JSR-330标准注解(如`@Inject`和`@Provider`)的支持,与Google Guice等其他依赖注入框架更好地集成。 - Bean后处理器(BeanPostProcessor)和初始化回调(InitializingBean)接口的改进,使开发者能...
总之,Spring 5.0.x源码对于Java开发者来说是一份宝贵的参考资料,它涵盖了IoC容器、AOP、MVC、数据访问、事务管理等多个方面的实现,有助于开发者深入理解Spring的工作原理,从而更好地运用和定制这个强大的框架。...
什么是木薯粉? Tapioca 旨在在标准 Java 类库的现有部分... 如果您需要高质量和全功能的 IoC/DI 容器,请务必使用 Spring 或 Google 的 Guice 进行调查。 如果您需要一个具有零外部依赖关系的极其轻量级的容器,Ta
通过本书的学习,读者不仅能够深入理解依赖注入的基本原理和技术细节,还能掌握如何有效地利用Spring、Google Guice等流行框架来优化应用设计。本书特别强调了实践中可能会遇到的问题、陷阱及最佳实践,旨在帮助...
- **控制反转**(Inversion of Control,IoC):依赖注入是IoC的一种实现方式,它改变了对象创建的方式,使对象的创建过程由外部容器控制。 - **依赖注入容器**:依赖注入容器是管理对象生命周期和依赖关系的核心...
Spring2.5版本引入了更多改进,如XML配置的简化、对JSR-303(Bean Validation)的支持和对Google Guice的兼容。 3. **Hibernate3**:Hibernate是一个对象关系映射(ORM)框架,用于简化Java应用与数据库之间的交互...
- **Commons和IoC库**:Apache Commons库提供了各种实用工具,IoC(Inversion of Control)库如Google Guice或Spring本身用于依赖注入。 在没有使用Maven或Gradle等构建工具的情况下,手动收集这些jar包并管理它们...
在Java世界中,Spring是最著名的IOC框架之一,但还有其他如Google的Guice和Apache的PicoContainer等。 描述中提到的“性能比较”可能涉及到不同IOC框架在处理对象创建、依赖解析以及应用启动速度等方面的性能指标。...
它支持方法前、后、异常、最终以及环绕通知,并且可以与Spring IoC容器无缝集成,方便地管理切面和被通知对象。 在实际开发中,AOP的应用场景包括但不限于: - 日志记录:记录方法的调用时间、参数和返回值,便于...
依赖注入是现代软件架构中不可或缺的一部分,尤其在Java领域,它是Spring框架和Google Guice等流行框架的关键特性。 #### 二、依赖注入的实现方式 依赖注入通常可以通过以下三种方式进行: 1. **构造器注入**:这...
"Java"表明Lamino 也支持Java生态系统,这可能意味着它兼容Spring框架或者其他Java DI库,如Guice或Google Dagger。在Java世界里,依赖注入是实现松散耦合的关键工具。Lamino 可能提供了一种类似于.NET实现的方式,...
相比MINA,Netty主要优势在于对Google Protocol Buffers的支持,对IOC容器(如Spring, Guice)的完整支持,以及更加简单易用的API设计。Netty提供了一种统一的网络API,无论是TCP还是UDP,都能提供高性能的网络通信...