- 浏览: 822047 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (488)
- struts1 (4)
- spring (13)
- extjs (36)
- mysql (3)
- sqlserver (2)
- oracle (37)
- 杂谈 (11)
- 面试相关 (35)
- Java基础知识总结 (5)
- Java重要知识点 线程和io流知识点 (6)
- 服务器相关 (1)
- 生活 (1)
- jsp (7)
- servlet (2)
- junit (3)
- struts2 (9)
- 开发必备 (4)
- 使用开发工具总结的知识 (4)
- ibatis (12)
- ajax (2)
- dwr (2)
- jquery (1)
- 设计模式 (4)
- Lucene的学习 (5)
- 经验总结 (19)
- mysql全文搜索相关 (7)
- hibernate (33)
- Sphinx (1)
- log4j的总结 (1)
- 敏捷开发 (9)
- 持续集成 (15)
- UML使用总结 (1)
- Scrum (1)
- OO(面向对象编程) (1)
- struts1和struts2总结 (1)
- 数据库加密 (1)
- 多线程和Socket编程 (6)
- PowerDesigner (2)
- 权限相关 (1)
- ant应用总结 (4)
- 面试必知知识点总结 (6)
- io流与nio流总结 面试相关 (1)
- 敏捷管理工具的使用 (7)
- hsqldb相关 (1)
- svn源码相关 (2)
- debug调试技巧总结 (1)
- hibernate和ibatis对比相关 (6)
- eclipse mylyn 插件的使用总结 (2)
- fisheye使用总结 (2)
- java泛型总结 (1)
- ssh整合总结 (10)
- SpringSide的学习总结 (1)
- JPA学习总结 (2)
- RoR 总结 (2)
- 模型驱动 总结 (1)
- Oracle SQL优化技巧 (4)
- 数据库相关资料 (1)
- oracle练习相关 (4)
- PowerDesigner 使用总结 (2)
- Struts实现国际化相关 (2)
- 权限框架 Spring Security (1)
- freemarker使用总结 (1)
- jsp servlet总结相关 (3)
- Java NIO总结 (1)
- 自己学习必须 (3)
- 蝴蝶容器相关 (2)
- eclipse插件的使用 (1)
- myeclipse的使用 (1)
- flex相关 (1)
- javaeye重生后总结的知识点 (2)
- 公司学习总结 (3)
- JAXB 相关 (1)
- ECSide (1)
- EdoJs 企业ajax框架 (1)
- RSA加密算法 (1)
- jbpm相关 (1)
- JMF原理 (1)
- MyEclipse使用总结 (1)
- Funsion Charts 相关总结 (3)
- 常用知识2011 (2)
- Flex与Java整合 (1)
- IBM WebSphere相关 (1)
- jQuery使用技巧 (2)
- 2011年面试相关知识点总结 (2)
- sqlserver开发相关 (8)
- eclipse 打jar相关 (2)
- Oracle/Mysql/SqlServer比较 (1)
- WebService Axis1.4开发相关 (4)
- 进制数的转换 总结 (1)
- WebService Axis2.0开发相关 (0)
- iteye Struts2 Spring Hibernate整合相关 (3)
- iteye osgi资料相关总结 (1)
- iteye ifos相关相关 (1)
- iteye 国际化相关 (1)
- iteye Hibernate缓存机制 (4)
- iteye Struts2 总结 (1)
- iteye Struts标签总结 (0)
- iteye web配置文件大全 (6)
- iteye Efs 框架总结 (1)
- iteye sql优化 (2)
- iteye 大数据量高并发的数据库优化 (1)
- iteye 开发相关 (1)
- iteye s1sh 和 s2sh整合中的问题以及解决 (1)
- iteye s1sh整合实例 (1)
- iteye s2sh整合实例 (1)
- iteye 面试相关 基础篇 (1)
- iteye Android相关 (1)
- iteye 面试相关 Web篇 (1)
- iteye Sql Server相关 (0)
- iteye struts1与struts2比较 (1)
- iteye jquery 和Struts2 (0)
- iteye struts2与其他插件整合 (0)
- iteye jquery 开发相关 (1)
- iteye eclipse结合spket(Ext,Jquery)开发相关 (0)
- iteye myeclipse 使用技巧相关 (0)
- iteye Memcached 缓存系统相关 (0)
- iteye 常用软件相关 (0)
- iteye 最新技术预览 AjaxSwing (0)
- iteye struts上传下载相关 (0)
- iteye 新技术相关 (0)
- test (0)
- iteye 开发Java游戏相关 (0)
- iteye Java反编译 (0)
- iteye XML解析相关 (0)
- iteye 压缩ZIP相关 (0)
- iteye 面试相关 (0)
- iteye Android开发相关 (4)
- csdn (0)
- e-inoc (0)
- iteye http错误码对应说明 (0)
- iteye 面试扩展知识点 (0)
- iteye oracle面试相关 存储过程,触发器,游标等 (0)
- iteye english study (0)
- iteye starflow工作流引擎 (0)
- iteye IBM WebSphere Application Server Toolkit使用相关 (0)
- iteye spring3 (0)
- iteye mybatis (0)
- iteye js技巧总结 (0)
- iteye SEO优化相关 (2)
- iteye QUI网页界面集成框架 (1)
- iteye AjaxAnywhere (1)
- iteye Nutz相关 (1)
- iteye ibatis技巧 (0)
- iteye dwz (0)
- 128个ajax/javascript框架 (0)
- iteye 2012 Java Swing教程 (1)
- iteye 码头集装箱相关 (1)
- iteye swing (2)
- 兼职工作 (0)
- 2012 新总结的面试相关知识点 常用知识点 (1)
- 淘宝网店相关 (0)
- oracle 常用函数 2012新总结 (1)
- 我的时尚潮流屋 (0)
- 2012 年 面试新总结知识 (1)
- 技巧 (1)
- 2013总结 (1)
- 2015工作相关 (3)
- springmvc (5)
- EasyPR-Java (1)
- java (2)
- editplus 4.0 注册码 (1)
- android (1)
- oracle连接数据库相关 (1)
- 编程资料总结 (2)
- 20160808 (1)
- visio 2013 (1)
最新评论
-
drew926:
泛型的类型参数可以有多个?这是java哪个版本支持的?
java泛型总结 -
listenan:
赞!非常感谢。
Scrum总结 -
cwscwj:
写的很深刻,谢谢,看了一遍,过段时间打算再看一遍。
Scrum总结 -
hwedwin:
w
Struts 2中的OGNL\EL的使用总结 -
lanni2460:
不错 很好 支持……
sqlserver三个驱动包下载
不进行持续集成的理由:
- 硬件花费
对于大多数的团队来说,持续集成服务器不需要运行在一台性能异常强大的机器上,使用一台开发机器加一个指示灯(在构建失败时变红)已经足够了,硬件的成本在不断的下降,和开发团队不断修复回归测试发现的缺陷,编译失败,延迟发布比起来,这个投资应该是非常划算的。
- 管理开销
目前的持续集成服务器已经比较成熟,并且有许多免费的产品(如CruiseControl)可以选择。这些服务器不论是运行还是配置都非常简单。开发团队可以根据熟悉的编程语言选择相关产品,以CruiseControl为例,分别有CruiseControl.rb (Ruby), CruiseControl.net (.Net), CruiseControl(Java)可以进行选择。这样开发团队可以在没有系统管理员的清况下,自行维护持续集成服务器。
- 减慢了开发者提交的速度
开发者花10分钟进行测试,节省了整个团队修复构建的时间,免去了不必要的交流成本,节省了修复bug的成本, 大大减少了延迟发布的可能。
- 学习自动化测试
不要重复你自己! 花半天学习Ant, Maven, Shell脚本比每天花半个小时手工测试要有趣得多,引入自动化测试,节省的不仅仅是个人的时间,整个团队效率也因此提高。
让持续集成过程更强大:
- 流水线构建
作为持续集成实践的一部分,在完成代码编译后,必须将软件部署到测试或者产品环境中,在现代软件构建过程中,部署不再仅仅是将某个2进制文件拷贝到文件系统中,它通常包括了部署以及对于应用本身、数据库、Web容器等进行配置的过程。在进入产品环境前,软件通常会经过开发以及测试人员在开发环境,QA环境,性能测试环境,模拟产品环境的重重测试。由于环境以及操作的复杂,大量的手工劳动譬如修改配置文件在这个时候被引入进来。
流水线构建的出现就是为了解决上述问题:一个RC版本需要通过所有的测试阶段,在每一个阶段中,产品都会被测试并且进行某种形式的修改来准备下个阶段的测试。产品在管道中不断的前进,并且被不断检验,组装,修改。如果产品能够成功的到管道的终点,它就可以被认为是一个成功的RC版本。
流水线构建被划分为提交阶段, 验收阶段, 性能测试阶段/手工测试阶段, 产品部署等4个阶段。
提交阶段:是管道的第一个部分。当开发者提交代码后,产品就进入这个阶段。在提交阶段,代码被编译,相关的单元测试被运行。这个阶段所需要的测试时间必须尽量短,开发者需要等到这个阶段成功完成才可以开始下一个任务。这个阶段不是通过测试类型教条划分的,我们应该根据哪些测试可以被快速运行并且帮我们发现大多数常见的问题来划分测试。譬如,在我现在参与的项目中存在JUnit,JWebUnit , JSUnit, Selenium 测试等,Selenium 花费的时间相对长,而且运行JUnit, JWebUnit以及JSUnit在通常清况下,已经可以帮助我们发现大多数的问题,那么它们将成为我们能否能通过提交阶段的依据。
验收阶段: 在很多清况下,我们的软件可以通过单元测试,功能测试,但是这并不意味着有了一个成功、可用的软件,因为它也许与我们的业务需求背道而驰,验收测试用于验证软件是否更够满足业务需求,体现商业价值。验收测试通常运行在开发者本地测试相似的环境中(使用相同的OS, JDK等)。只有能够通过验收阶段的产品才有可能成为RC版本的软件. 在这个阶段,我们应当使用提交阶段的构建结果。而不是重新编译,打包。(想象一下,软件正在这个管道中移动,我们要做的是继续组装而不是拆卸),例如,提交阶段结束后,一个war被拷贝至文件系统某个特定的目录,而验收测试服务器通过扫描目录发现更新并通过使用它进行Selenium 测试。
在进入下一个阶段前,我们需要通过部署阶段。在这个阶段,我们需要初始化测试环境,并根据测试环境的需求,修改配置文件。初始化测试环境对于整个构建管道非常重要,它确保了产品在确定的环境中运行,减小分析问题的难度。这正是工业自动化的精髓所在:尽量的在生产过程中,通过自动化去除不确定因素。初始化测试环境通常是通过还原镜像文件来进行,我们根据目标测试环境制作不同的镜像文件,并且在部署还原镜像文件。这个阶段可能是自动的也可能是手动的。当然,原则是尽量自动化进行,但是如果难度过大,手工还原也可作为一种妥协。
性能测试和手工测试:它们可以同时在不同的服务器上进行。自动化测试只能阻止已知缺陷不会再出现。但是无法验证测试用例之外的情况。手工测试或者叫做探索测试 正是在这种情况下进一步的测试软件的行为。
产品部署 :整个管道的最终阶段,验证软件是否能够真正的安装并运行在目标产品环境中。
- 分布式构建
某些持续集成工具(如CruiseControl)支持合成构建模式,即当且仅当所有子构建全部成功,主构建才会成功。分布式构建(以 CruiseControl为例)就是建立在JINI以及合成构建的基础上。通过使用分布式构建,我们可以大大缩短构建时间以及在不同的环境下对产品进行构建。
分布式构建通过将主构建分为若干可以同时进行构建的模块来加快速度,譬如、某项目可能由:登录模块测试(10分钟),付款模块测试(20分钟),管理模块测试(20分钟)。在这种清况下,我们可以部署4个CruiseControl实例(一个作为主构建,其余三个作为子构建分别重复安装目标项目)。子构建分别运行不同模块的测试,而主构建负责收集根据子构建成功与否决定整个构建是否通过。与上述的实践相似,通过将实例部署在不同环境中(Windows, Linux, Unix等),我们也可以验证产品是否可以在不同环境中进行构建。
关于分布式构建,ThoughtWorks发布了一份详细的文档指导开发者如何一步步进行配置,在此不再赘述。
总结:
持续集成是软件开发一个重要的实践,通过持续集成,我们能够更早的发现问题,更快的解决问题,同时大大减少了构建过程中不确定性,提高团队的生产效率。当然,持续集成实践不是孤立的,它与其他的软件开发实践例如测试驱动等紧密相关。正确使用持续集成实践将帮助我们在一个轻松的环境中快速开发,发布高质量的产品。
参考:
The Deployment Pipeline
Continous Integration
CruiseControl Reference
Using distrib from the CruiseControl contrib
- 硬件花费
对于大多数的团队来说,持续集成服务器不需要运行在一台性能异常强大的机器上,使用一台开发机器加一个指示灯(在构建失败时变红)已经足够了,硬件的成本在不断的下降,和开发团队不断修复回归测试发现的缺陷,编译失败,延迟发布比起来,这个投资应该是非常划算的。
- 管理开销
目前的持续集成服务器已经比较成熟,并且有许多免费的产品(如CruiseControl)可以选择。这些服务器不论是运行还是配置都非常简单。开发团队可以根据熟悉的编程语言选择相关产品,以CruiseControl为例,分别有CruiseControl.rb (Ruby), CruiseControl.net (.Net), CruiseControl(Java)可以进行选择。这样开发团队可以在没有系统管理员的清况下,自行维护持续集成服务器。
- 减慢了开发者提交的速度
开发者花10分钟进行测试,节省了整个团队修复构建的时间,免去了不必要的交流成本,节省了修复bug的成本, 大大减少了延迟发布的可能。
- 学习自动化测试
不要重复你自己! 花半天学习Ant, Maven, Shell脚本比每天花半个小时手工测试要有趣得多,引入自动化测试,节省的不仅仅是个人的时间,整个团队效率也因此提高。
让持续集成过程更强大:
- 流水线构建
作为持续集成实践的一部分,在完成代码编译后,必须将软件部署到测试或者产品环境中,在现代软件构建过程中,部署不再仅仅是将某个2进制文件拷贝到文件系统中,它通常包括了部署以及对于应用本身、数据库、Web容器等进行配置的过程。在进入产品环境前,软件通常会经过开发以及测试人员在开发环境,QA环境,性能测试环境,模拟产品环境的重重测试。由于环境以及操作的复杂,大量的手工劳动譬如修改配置文件在这个时候被引入进来。
流水线构建的出现就是为了解决上述问题:一个RC版本需要通过所有的测试阶段,在每一个阶段中,产品都会被测试并且进行某种形式的修改来准备下个阶段的测试。产品在管道中不断的前进,并且被不断检验,组装,修改。如果产品能够成功的到管道的终点,它就可以被认为是一个成功的RC版本。
流水线构建被划分为提交阶段, 验收阶段, 性能测试阶段/手工测试阶段, 产品部署等4个阶段。
提交阶段:是管道的第一个部分。当开发者提交代码后,产品就进入这个阶段。在提交阶段,代码被编译,相关的单元测试被运行。这个阶段所需要的测试时间必须尽量短,开发者需要等到这个阶段成功完成才可以开始下一个任务。这个阶段不是通过测试类型教条划分的,我们应该根据哪些测试可以被快速运行并且帮我们发现大多数常见的问题来划分测试。譬如,在我现在参与的项目中存在JUnit,JWebUnit , JSUnit, Selenium 测试等,Selenium 花费的时间相对长,而且运行JUnit, JWebUnit以及JSUnit在通常清况下,已经可以帮助我们发现大多数的问题,那么它们将成为我们能否能通过提交阶段的依据。
验收阶段: 在很多清况下,我们的软件可以通过单元测试,功能测试,但是这并不意味着有了一个成功、可用的软件,因为它也许与我们的业务需求背道而驰,验收测试用于验证软件是否更够满足业务需求,体现商业价值。验收测试通常运行在开发者本地测试相似的环境中(使用相同的OS, JDK等)。只有能够通过验收阶段的产品才有可能成为RC版本的软件. 在这个阶段,我们应当使用提交阶段的构建结果。而不是重新编译,打包。(想象一下,软件正在这个管道中移动,我们要做的是继续组装而不是拆卸),例如,提交阶段结束后,一个war被拷贝至文件系统某个特定的目录,而验收测试服务器通过扫描目录发现更新并通过使用它进行Selenium 测试。
在进入下一个阶段前,我们需要通过部署阶段。在这个阶段,我们需要初始化测试环境,并根据测试环境的需求,修改配置文件。初始化测试环境对于整个构建管道非常重要,它确保了产品在确定的环境中运行,减小分析问题的难度。这正是工业自动化的精髓所在:尽量的在生产过程中,通过自动化去除不确定因素。初始化测试环境通常是通过还原镜像文件来进行,我们根据目标测试环境制作不同的镜像文件,并且在部署还原镜像文件。这个阶段可能是自动的也可能是手动的。当然,原则是尽量自动化进行,但是如果难度过大,手工还原也可作为一种妥协。
性能测试和手工测试:它们可以同时在不同的服务器上进行。自动化测试只能阻止已知缺陷不会再出现。但是无法验证测试用例之外的情况。手工测试或者叫做探索测试 正是在这种情况下进一步的测试软件的行为。
产品部署 :整个管道的最终阶段,验证软件是否能够真正的安装并运行在目标产品环境中。
- 分布式构建
某些持续集成工具(如CruiseControl)支持合成构建模式,即当且仅当所有子构建全部成功,主构建才会成功。分布式构建(以 CruiseControl为例)就是建立在JINI以及合成构建的基础上。通过使用分布式构建,我们可以大大缩短构建时间以及在不同的环境下对产品进行构建。
分布式构建通过将主构建分为若干可以同时进行构建的模块来加快速度,譬如、某项目可能由:登录模块测试(10分钟),付款模块测试(20分钟),管理模块测试(20分钟)。在这种清况下,我们可以部署4个CruiseControl实例(一个作为主构建,其余三个作为子构建分别重复安装目标项目)。子构建分别运行不同模块的测试,而主构建负责收集根据子构建成功与否决定整个构建是否通过。与上述的实践相似,通过将实例部署在不同环境中(Windows, Linux, Unix等),我们也可以验证产品是否可以在不同环境中进行构建。
关于分布式构建,ThoughtWorks发布了一份详细的文档指导开发者如何一步步进行配置,在此不再赘述。
总结:
持续集成是软件开发一个重要的实践,通过持续集成,我们能够更早的发现问题,更快的解决问题,同时大大减少了构建过程中不确定性,提高团队的生产效率。当然,持续集成实践不是孤立的,它与其他的软件开发实践例如测试驱动等紧密相关。正确使用持续集成实践将帮助我们在一个轻松的环境中快速开发,发布高质量的产品。
参考:
The Deployment Pipeline
Continous Integration
CruiseControl Reference
Using distrib from the CruiseControl contrib
发表评论
-
持续集成
2010-09-07 10:47 815持续集成 原文链接:http://martinfowler ... -
持续集成实践
2010-08-18 17:22 1249CC的项目配置: Xml代码 1. < ... -
通过持续集成尽早发现缺陷
2010-08-18 16:17 1133通过持续集成尽早发现缺陷 http://www.xp163. ... -
cruisecontrol、ant、svn持续集成
2010-08-18 16:14 1901自己两个多星期以来对持续集成的概念和应用有了一些了解。下面主要 ... -
持续集成 java手册
2010-08-18 10:24 1100持续集成 java手册 一、概念 martin fowle ... -
持续集成的极好例子
2010-08-18 09:48 1252持 续集成在目前大多数的公司里都会有这样或者那样的使用。有的会 ... -
浅谈CruiseControl的部署
2010-08-18 09:45 2317浅谈CruiseControl的部署 ... -
持续集成
2010-08-17 09:53 893谈到持续集成,不如先 ... -
如何进行持续集成?
2010-08-17 08:41 909如何进行持续集成? 在进行持续集成实践前,应当正确的 ... -
持续集成(第二版)
2010-08-17 08:33 1083持续集成(第二版) ... -
持续集成:什么应该自动化?
2010-08-17 08:24 897持续集成:什么应该自动化? 一、什么是持续集成(Contin ... -
持续集成和Scrum相关
2010-08-16 18:56 891持续集成和Scrum相关 -
持续集成和Scrum相关
2010-08-16 17:53 752持续集成和Scrum相关 -
持续集成总结
2010-08-16 17:43 1621一、什么是持续集成( ...
相关推荐
xml java系统源码 title date tags categories Ansible + Jenkins+Maven+Nginx搞定自动发布,构建程序的持续集成平台 2016-09-12 ...二、为什么Jenkins能帮助我们进行持续集成 理由有如下几点: 1、Jenkins
通过引入自动化工具,如构建工具、测试框架和持续集成服务,可以自动完成代码的编译、压缩、测试等繁琐工作,使得开发者能够专注于业务逻辑的编写,而不是被低效的手动操作所困扰。例如,百度内部的FIS项目,正是...
集成电路是现代信息技术的核心组成部分,它的制造过程涉及到一系列复杂的微机械加工技术。集成电路的工艺流程和技术发展具有严格的规律...随着科技的不断发展,我们有理由期待更加先进、高效和智能的集成电路产品问世。
- **缺少正式的新产品研发项目建议书**:在没有明确的产品研发项目建议书的情况下进行可行性研究可能会导致目标不清晰、方向不确定等问题。 - **可行性研究工作不充分**:尤其是缺乏技术可行性分析和技术论证,可能...
智能大厦的系统集成不仅仅是设备的堆砌,而是通过技术整合,实现信息共享和资源共享,从而达到“1+1>2”的效果。 智能建筑系统集成通常分为几个阶段,从最初的子系统功能集成,逐步发展到控制网络集成,最终实现...
而集成电路作为现代信息技术的核心,其在电子政务中的应用更是不可或缺。本篇文章将重点探讨一种集成电路专用焊接器在电子政务领域的应用及其重要性。 集成电路(Integrated Circuit,简称IC)是现代电子设备的基础...
《工业化集成住宅——技术革新与优势解析》 工业化集成住宅,作为现代建筑行业的一大创新,以其高效、节能、...在未来,随着科技的不断进步,我们有理由相信,产业化集成住宅将为人们提供更加舒适、绿色的生活空间。
在国际上,宝马、奥迪等豪华品牌较早引入了数字钥匙技术,并持续进行技术创新;在国内,诸如比亚迪、蔚来等新势力车企也纷纷推出了各自的解决方案。 ##### 软件系统架构介绍 汽车数字钥匙的软件系统通常包括前端...
智能装备系统集成及应用是现代工业生产中的一个重要领域,它涉及到自动化、信息化、智能化等多个方面的技术...随着科技的进步,我们有理由相信,未来的智能装备系统集成将更加成熟,为各行各业带来更多的变革和机遇。
1. 信号调理:集成无源电路元件可以对传感器输出的弱信号进行放大、滤波,降低噪声,提高信号质量,确保后续数据处理的准确性。 2. 数据采集:在数据转换器前端,集成无源电路元件有助于稳定输入电压,提高ADC(模拟...
3. 数据采集与处理:高精度传感器持续监测轨道、隧道、桥梁等关键部位的状态,收集的数据经过预处理后,运用人工智能算法进行模式识别和异常检测,提供决策依据。 4. 预警与应急响应:当监测数据超出安全阈值时,...
- 收集信息:通过浙江安防协会等渠道获取目标系统集成商名单,进行行业内部调查,了解客户需求和行业动态。 - 目标客户的筛选:根据公司业务规模、主要业务、年销量等标准选择合适的合作伙伴。 2. **竞争品牌调查...
本资料主要围绕光半导体集成电路装置的设计、制造工艺以及应用进行详尽的阐述。 首先,光半导体集成电路的核心是光电器件,如激光二极管、光电二极管等。这些器件能够实现光能与电能之间的相互转换。激光二极管作为...
功率半导体器件是现代电子系统中不可或缺的组成部分,其主要任务是处理和控制...随着技术的持续演进,我们有理由期待在不远的将来,功率半导体将在能源转换、电力控制等领域发挥更大的作用,推动科技进步和社会发展。
- **数据质量管理:**建立数据质量监控体系,对数据质量进行持续跟踪和改进。 **接口标准与规范制定:** - **接口标准化:**制定统一的接口标准和规范,降低系统间集成的难度。 - **接口安全性:**确保接口数据传输...
### 软考系统集成项目管理工程师重点背诵 #### 项目整体管理 **项目章程的内容**: 1. **项目干系人的要求和期望**:明确指出项目的主要受益者及他们的具体需求。 2. **项目必须满足的业务要求或产品需求**:确保...
随着集成电路技术的不断发展,快速热处理系统也在持续演进,包括改进的热均匀性、更高的加热速率以及更低的能耗。这些进步有助于电子政务领域的可持续发展,降低运行成本,同时推动科技创新,为公民提供更高效、便捷...