精华内容
下载资源
问答
  • Springmvcssh2框架的优势和劣势

    万次阅读 2016-09-19 10:48:52
    Springmvcssh2框架的优势和劣势

    近几年来SpringMVC的发展是比较迅速的,他的优点也慢慢的体现出来了,甚至很多公司要求SpringMVC替代SSH框架,SpringMVC到底有那些区别呢?

    SpringMVC框架是什么?

    SpringMVC框架流程

    Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和POI。Spring MVC 框架并不知道使用的视图,所以你可以自主的选择视图。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

    SpringMVC是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得 spring是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比 struts所没有的优势。而且框架本身有代码,而且看起来容易理解。


    SSH2框架是什么?

    SSH框架流程

    SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。


    SpringMVC和SSH的比较:

    struts封装的功能更多更全面,用法比较独有。springmvc比较接近原生servlet,灵活度高。而且因为springmvc的controller是单例的,以及没有大量的过滤器,性能要比struts2好。

    还有一点就是Spring有自己的JdbcTemplate,用来执行原生态的SQL语句。

    如:

    1
    2
    3
    4
    5
    @Transactional
    public  Integer click(String id){
         jdbcTemplate.update( "UPDATE content set count=count+1 where id=?" ,id );
         return  jdbcTemplate.queryForInt( "select count from content where id=?" ,id);
    }

    SSH中操作数据库使用的是Hibernate的数据映射,操作的是对象。

    如:

    1
    2
    3
    4
    public  void  click(user){
         //update(user);
         save(user);
    }

    Hibernate本来就是基于JDBC的封装,所以较之执行原生态SQL效率上肯定比操作对象更快。

    注意:如果想使用Spring来实现Hibernate的功能,那么可以知己封装

    如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
         public  T save(T entity){
             Field[] declaredFields = entityClass.getDeclaredFields();
             String pk= "" ;
             for (Field f : declaredFields){
                 boolean  annotationPresent = f.isAnnotationPresent(Id. class );
                 if (annotationPresent){
                     pk = f.getName();
                     break ;
                 }
             }
             if (StringUtils.isBlank(pk)){
                 Method[] declaredMethods = entityClass.getDeclaredMethods();
                 for  (Method method : declaredMethods) {
                     boolean  annotationPresent = method.isAnnotationPresent(Id. class );
                     if (annotationPresent){
                         String field = method.getName().replace( "get" "" );
                         //首字母转小写
                         pk = field.replace(field.charAt( 0 ), ( char )(field.charAt( 0 )+ 32 ));
                         break ;
                     }
                 }
             }
             Map<String, Object> map = EntityToMapUtil.convertEntityToMap(entity);
             Object pkvalue = map.get(pk);
             if (pkvalue!= null &&StringUtils.isNotBlank(pkvalue.toString())){
                 update(map,pk);
                 return  entity;
             }
             SimpleJdbcInsert simpleJdbcInsert= new  SimpleJdbcInsert(jdbcTemplate);
             KeyHolder keyHolder = simpleJdbcInsert.withTableName(table())
             //.usingColumns(new String[keySet.size()])
             .usingGeneratedKeyColumns(pk)
             .executeAndReturnKeyHolder(map);
             try  {
                 BeanUtils.setProperty(entity, pk, keyHolder.getKeys().values());
             catch  (Exception e) {
                 e.printStackTrace();
                 return  null ;
             }
             return  entity;
         }
         
         public  void  insert(Map map,String... pks){
             Set<String> columns = map.keySet();
             for (String pk : pks){
                 if (columns.contains(pk))
                     columns.remove(pk);
             }
             SimpleJdbcInsert simpleJdbcInsert= new  SimpleJdbcInsert(jdbcTemplate);
             KeyHolder keyHolder = simpleJdbcInsert.withTableName(table())
             .usingColumns(columns.toArray( new  String[columns.size()]))
             .usingGeneratedKeyColumns(pks)
             .executeAndReturnKeyHolder(map);
         }  

    原来就是使用反射来获取对象的属性,然后对应数据库字段,最后拼写成SQl语句,效率上感觉影响不是很大。


    我们现在的公司就是采用SpringMVC来做为基础框架的,而且没有整合Hibernate。最新版的SpringMVC还支持RestFull,可以直接返回相应的JSON或者XML。

    如代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @RestController
    @RequestMapping ( "public" )
    public  class  CommonController {
         @Autowired
         private  ContentService contentService;
         @RequestMapping ( "ViewClick" )
         public  String clicks(HttpServletRequest request, @RequestParam  String id){
             int  clicks= 0 ;
             synchronized  ( this ) {
                 clicks= contentService.click(id);
             }
             return  "document.write('" +clicks+ "')" ;
         }
    }
    1
    @RestController //关键注解

    在前台调用(这只是我的博客目前使用的一个小功能)

    1
    阅读(< script  src = "../public/ViewClick?id=${content.id}" ></ script >)

    展开全文
  • Python的优势和劣势

    千次阅读 2018-05-29 16:02:28
    Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学...阅读个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优...

    Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

    python语言的优点

    ⑴作为初学python的科班出身的小白,python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。

    ⑵易学。python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。

    ⑶Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。Python希望看到一个更加优秀的人创造并经常改进。

    ⑷可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!

    ⑸在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python

    展开全文
  • JavaScript的优势和劣势

    万次阅读 2018-09-03 16:10:18
    如所有的计算机语言一样, JavaScript有特定的优势和劣势。 JavaScript的优势: 快速的终端反应: Java 脚本为客户端编写,不需要服务器端支持就可运行。也不需要在客户端被编译提高速度优势。在用户电脑上作为...

    如所有的计算机语言一样, JavaScript有特定的优势和劣势。

    JavaScript的优势:

    快速的终端反应: Java 脚本为客户端编写,不需要服务器端支持就可运行。也不需要在客户端被编译提高速度优势。在用户电脑上作为脚本执行,依靠任务,结果几乎是立即完成的。例如,在发送到服务器之前,你可以校验任何客户的输入内容。 这样可以减少服务器上载的内容。

    简洁性: JavaScript很容易学习和实现。它利用DOM模型, 提供大量的预编制的功能性对象代码,使得开发一个满足用户需要的脚本变得轻而易举。

    用途广泛: JavaScript和其他语言可以很好的交互,并且广泛应用于各个领域。现在,有很多的方法可以通过Node.js服务器使用JavaScript。如果你曾经使用node.js的Express框架bootstrap,使用一个文档数据库如mongodb,并且在客户前端使用JavaScript,那么完全可以只使用JavaScript开发一个从前端到后端的app应用。

    JavaScript的劣势:

    安全性: JavaScript被显示的添加到网页和客户浏览器,它可以利用客户系统,有风险的代码可能在客户机器上执行。

    浏览器支持: JavaScript在不同的浏览器中有时进行不同的解释。不同层引擎对Javascript有不同的渲染结果, 这都是因为不同的功能和接口的差异性。大部分JavaScript依赖浏览器DOM元素的操作。并且,不同的浏览器对对象的访问类型不一样,尤其是Internet Explorer。

    更多更好竞争对手: JavaScript是机器上运行的非常老的脚本化语言,其实有其他的技术可以取代它做同样的事情。(如 JQuery ),并且更好更简单。

    关闭JavaScript:如果关闭浏览器的JavaScript支持,整个JavaScript代码就不会运行了。

    文件下载: JavaScript文件可以在客户端电脑下载,任何人都可以阅读并且可以重复利用。


    JavaScript 介绍

     JavaScript 基础

    展开全文
  • 云计算的优势和劣势

    千次阅读 2012-06-19 21:02:34
     任何件事物都有利弊之分,云计算更不例外了,所以我们不能它一概而论,只有充分的认识到这些优势和劣势之后才能更好的做出决断。也许你可以称它是场比WEB 2.0还要巨大的革命;也许你也可以称它当初AJAX...
    云计算的优势和劣势 
    

      任何一件事物都有利弊之分,云计算更不例外了,所以我们不能对它一概而论,只有充分的认识到这些优势和劣势之后才能更好的做出决断。也许你可以称它是一场比WEB 2.0还要巨大的革命;也许你也可以称它和当初AJAX一样,属概念炒作、新瓶装旧酒;不管如何,没有深入虎穴焉得虎子,那么下面我们就具体分析一下它到底有哪些优势和劣势。

    优势或值得应用的方面:

    1.能快速搭建我们的应用

      云计算最大的好处就是能够快速搭建我们的企业应用,比如我们现在要开发一个网站,我们就不必担心是否需要花巨资购买硬件来集群,然后是巨额资金购买所需的系统软件而且这些也需要一些人员来组建和维护的,如果恰巧这是一个比较新且可能会带来盈利的商业点子,那搭建在云上就是一个非常不错的选择,这起码能比其他企业先行一步。

    2.提供了更大的灵活性和扩展性

      由于“云”的规模可以动态伸缩,这样就可以不用加大投资硬件设备的力度来满足应用和用户规模增长的需要,同时也无形起到了降低成本的作用。如果项目突然废弃,也没有什么大的损失,所以在这方面,云计算是相当灵活和易于扩展的。

    3.可以解决一些特殊的场景

      很多公司都是在特定的时期盈利较大,比如一些情人节和圣诞节的帮办公司,它们就是在这段时间的营业额比较大,在一年中的其他时候,几乎不能盈利,在这种情况下,如果按照传统的软件部署习惯,势必会造成一定的浪费。正如一个有大量波峰和波谷的企业一样,你可能就被迫要将更多的IT资源分配给峰值时期使用。这种情况下将峰值需求外包可能会节约更多成本。

    4.缩短了产品的开发周期

      不管你是使用哪个厂商的云计算产品.都有一个显著的特点,那就是能缩短产品的开发周期,一个想法到一个产品的开发周期因为云计算的到来而逐渐缩短,由此你可以看出里面蕴藏的巨大价值。云计算确实已经开始影响到我们做业务的方式。我们开始减少研究的循环周期,这对于我们来说非常重要而且必要。

    5.节约了建立基础设施的成本

      其实对于每个企业来说基础设施都是一笔开支比较大的费用,而且除了费用之外还需要专门的人力和物力的投入,在这个过程中又要保持快速的软硬件更新速度来适应市场的不断变化,所以云计算的出现无疑是值得考虑的一种解决方案。很多时候,我们也会时常注意到数据中心使用面积不够、应用软件超出基础架构的承受能力、软硬件更新太快等问题,云计算服务能帮助企业将资本转移到运营费用上,尤其是在生死攸关的关键时刻,所以在这方面来说,是值得考虑的。

    劣势或需要改进的方面:

    1.数据安全性

      对数据安全性方面看,目前比较热的云计算厂商亚马逊、谷歌、IBM、微软、甲骨文、思科、惠普、Salesforce、VMware等都没有完全解决这个问题,所以很多企业了解到所用数据的类型和分类后,他们还是会决定通过内部监管来控制这些数据。而绝不会将具备竞争优势或包含用户敏感信息的应用软件放在公共云上,这个也是众多企业保持观望的一个原因。

    2.厂商按流量收费有时会超出预算

      虽然云厂商推出云产品时大力宣传随时获取,按需使用,随时扩展,按使用付费,但是在很大程度上价格都比较高,至少在目前还没有降低的趋势,这样对某些企业就会起到相反的效果,比如说像索尼娱乐这样的公司,他们就不考虑采用外部云服务来应对存储扩展能力的挑战。位于加利福尼亚的Culver City的高级系统工程师Nick Bali表示。每天索尼动画访问和产生的数据量都在4千兆到12千兆之间。Bali解释说"如果放在云上进行数据读取的话,我们需要的网络带宽是非常庞大的,这样所需的成本过于巨大,甚至超过了购买存储本身的费用。目前索尼公司正在使用ParaScale的云存储软件评估私人存储云。所以从这点看出并不是云平台就一定便宜。

    3.企业的自主权降低

      其实关于企业自主权这个问题是一个比较争议的话题,也许这也是出于慎重的考虑,毕竟对自己公司的应用,大家都希望能完全管理和控制,原来的模式中,可以搭建自己的基础架构,每层应用都可以自定义的设置和管理;而换到云平台以后,企业不需要担心基础架构,也不需要担心诸如安全、容错等方面,好处是一个方面,但同时也让企业感到了担忧,毕竟现在熟悉的东西突然变成了一个黑盒。当然在这个时候众厂商也推出了内部云或者云套件来补救,但是这个问题也没得到根本解决。

    4.规模大且成型的企业难以扩展

      很多大型企业已经花了巨资来购买硬件并逐渐构建了自己的服务器集群(有的企业还大量购置了最新的刀片服务器),然后也购买了所需的系统软件和应用软件,而且也在此基础上搭建了基础平台架构。那么针对这样的企业来说,他们没有必要把自己的应用舍本求末的放在云上,所以这个也是很多企业不愿意移植的原因之一。

    5.云计算本身还不太成熟

      尽管众云计算厂商把云计算炒得大红大紫,每个厂商推出的云产品和云套件也是琳琅满目、层出不穷,但是他们都各自为战,没有有统一的平台和标准来规范。所以冷静下来想一想,到底它能不能为我们企业所用,在安全性、稳定性和企业本身因素方面必须尽管慎重的考虑才行,不要被眼前的广告所忽悠。你要知道每个企业要宣传自己的产品都会采取各种手段的,比如说到公共云不安全,厂商就开始推私有云;说到企业原有应用难以整合到云上,厂商马上就推出了混合云;但是在根本上云计算还有很长的路要走,很多地方都得优化。当然我们也愿意在这个过程中充当试金石,因为体验它之后,我们相信它必定会成为未来的趋势。

    展开全文
  • es的优势与劣势

    千次阅读 2019-01-29 16:13:55
    转载: 首先ES是基于Lucene这个非常成熟的索引方案,另加上一些分布式...分片机制提供更好的分布性:同个索引分成个分片(sharding),这点类似于HDFS的块机制;分而治之的方式来提升处理效率,相信大家都不会陌...
  • JSP的优势 和劣势 php的比较

    万次阅读 2015-02-06 16:44:08
    jsp的 优势 与劣势 由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理安全性。 作为Java平台的部分,JSP...
  • 百度推广的优势和劣势

    千次阅读 2019-11-05 17:31:08
    百度推广的优势和劣势 优势 百度搜索推广具有覆盖面广、针对性强、按效果付费、管理灵活等优势。您可以将推广结果免费地展现给大量网民,但只需为有意向的潜在客户的访问支付推广费用。相对于其它推广方式,您...
  • JSP的优势与劣势浅析

    千次阅读 2016-07-07 13:49:00
    本文简单介绍了JSP技术,并JSP的优势与劣势进行了简单的分析。JSP页面由HTML代码嵌入其中的Java代码所组成。   JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的种动态...
  • 网络营销的优势和劣势

    千次阅读 2019-12-04 14:51:24
    2、因为网络浏览它不受时间地点的限制能够使消费的决策更具有便利性自主性,消费者完全由自己做主,只需操纵鼠标而已,这样的灵活、快捷方便,是商场购物所无法比拟的。 3、在网上发布信息,代价有限,将产品...
  • 其工作原理是采用2.4G频段,实现基站终端的点点无线通讯,链路层采用以太网协议为核心,以实现信息传输的寻址校验。 而ZigBee的工作原理呢,就是基于ZigBee的无线设备工作在868MHZ,915MHZ...
  • 二维码支付的优势与劣势

    千次阅读 2019-09-20 14:41:33
     第三方移动支付是指交易双方通过手机、平扳电脑等移动终端,利用移动通信网络无线通信技术,由独立于移动通讯运营商银行以外的第三方支付平台支持的支付服务,完成资金转移及支付的行为。    2.二维码支付...
  • 鸿蒙系统现在发布了,也有很用户已经用上了。就算是经过了长时间的内测但是这个系统多少还是有一些隐藏的小缺点一些明面上的大优点。接下来小编就来为大家盘点一下吧。1.鸿蒙系统的小缺点近日,在万众瞩目下,首...
  • .NET的优势与劣势

    千次阅读 2005-08-20 23:39:00
    .NET的优势与劣势。 XML Web服务并未成为普及.NET的导火索 此前人们一直在想:“.NET来说,是否存在不同于Java的、独特的应用领域市场?”。 业内普遍认为,微软新一代系统构筑环境--.NET Framework是在研究Java...
  • 自动化测试优势&劣势

    万次阅读 2018-07-30 20:42:21
     软件自动化测试是相对手工测试而存在的,由测试人员根据测试用例中描述的规程步步执行测试,得到实际结果期望结果的比较。在此过程中,节省人力、时间或硬件资源,提高测试效率。 二、自动化测试优势&amp...
  • 分析google推广服务的优势和劣势

    千次阅读 2014-07-16 10:45:07
    google推广服务一直是我们从事谷歌推广的重点,而google推广服务有优势也有劣势,那么google推广优势和劣势主要表现在哪些方面呢?在本篇文章中,笔者大家分析分析谷歌推广 服务的优势和劣势。 1、google推广...
  • 图标字体运用以及其优势与劣势

    千次阅读 2016-11-10 19:15:52
    使用图标字体的优势和劣势1、轻量性:个图标字体比系列的图像(特别是在Retina屏中使用双倍图像)要小。一旦图标字体加载了,图标就会马上渲染出来,不需要下载个图像。可以减少HTTP请求,还可以配合HTML5离线...
  • 美团饿了么是现在外卖界的两大主要平台,2017年H1中国在线餐饮外卖平台用户份额显示,饿了吗美团...美团饿了么相比,优势主要集中在提供服务多样化、市场占有率高(美团网在团购市场占有60%的份额)、流转资金...
  • 中国十大电商网站优势与劣势分析

    千次阅读 2015-05-01 17:54:17
    它们的优势和劣势在哪里?56联盟小编将为您深入解析中国十大电商网站排行榜的优势与劣势:1、天猫商城;2、京东商城;3、苏宁易购;4、腾讯电商;5、唯品会;6、亚马逊中国;7、当当网;8、国美电商;9、1号店;10、...
  • C# foreach循环较for循环的优势与劣势

    千次阅读 2018-08-27 09:42:42
    C# foreach循环较for循环的优势与劣势 、foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1、foreach语句简洁 2、效率比for要高(C#是强类型检查,for循环对于数组...
  • 什么是微服务?它的优势和劣势?

    千次阅读 2019-09-06 11:33:37
    它的优势和劣势? 官方说明:微服务是现在非常主流的种架构风格,个大型的复杂项目,由个或 个小型服务组成。系统中的各个小型服务可被独立部署,各个小型服务之间是松耦合的, 并且这些小型服务之间以轻量级的...
  • PostgreSQL中使用索引的优势和劣势

    千次阅读 2018-04-24 10:26:35
    PostgreSQL中使用索引的优势有: 1、在WHERE从句中使用索引列可以加速查询。 2、B-树索引可以加速max()min()聚合。 3、B-树索引可以加速ORDER BY从句。 4、索引可以加速连接,但是这还取决于优化器连接策略的...
  • Android平台的优势和劣势

    千次阅读 2010-06-29 20:34:00
     在不少手机论坛都会有针对某一型号的子论坛,对一款手机的使用心得交流,并分享软件资源。而对于Android平台手机,由于厂商丰富,产品类型多样,这样使用同一款机型的用户越来越少,缺少统一机型的程序强化。举个...
  • 本人,算是个入行不到几年的虾皮跨境电商卖家。在下不才,之前刚接触跨境是准备去做亚马逊的,准备搞FBA海外仓,但是中途看,做亚马逊遍地后,就止步不前。 后来遇到个超级大神,给我说了条明路,说东南亚...
  • 导读优势和劣势也是面试中的常问问题,求职者应该有所准备,准备好自己的3个优势和3个劣势。 对于优势来说,最好是结合职位要求、或是产品经理的基本能力,谈一些自己具备的职位相关的优势,并且能拿出证据、经历...
  • 近期也看到一些分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容实例应用的我而言,还是有不少激励的。目前,Spring Cloud在国内的知名度并不高,一些互联网公司的架构师、技术VP...
  • 就是大家不知道X86主板ARM主板的有适合劣势都有哪些?下面就由业内人事凌阳教育的老师为大家分享一下他们手中的资料是怎么叙述的:  ARM嵌入式主板  1、最大缺点是目前ARM主板都是采用了Windows CE系统或者Linux...
  • 浅谈Html5的优势和劣势

    万次阅读 2017-04-19 19:26:37
    、网络标准 HTML5本身是由W3C推荐出来的,它的开发是通过谷歌、苹果,诺基亚、中国移动等几百家公司一起酝酿的技术,这个技术最大的好处在于它是个公开的技术。换句话说,每个公开的...二、设备跨平台 用
  • yum安装源码安装优势劣势

    千次阅读 2018-07-17 00:37:45
    在网上看到很观点,有的说yum安装好,有的说源码安装好,还有的人说两者结合起来好,下面是从网上摘录的几种观点: 观点 根做运维的朋友聊天,谈到了,yum安装源码安装哪个好的问题。真没想到,关于这个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,228
精华内容 23,691
关键字:

一对一与一对多的优势和劣势