软件服务工程中的一些总结

1、请解释控制反转(IoC)的原理和举例说明在什么情况下用到IoC?

IoC(Inversion of Control)

控制反转是Spring框架的核心。其原理是基于面向对象(OO)设计原则的The Hollywood Principle:Don't call us, we'll call you。所有的组件都是被动的,所有的组件初始化和调用都由容器负责。用来减低计算机代码之间的耦合度。借助于“第三方”实现具有依赖关系的对象之间的解耦。把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。把各个对象类封装之后,通过IoC容器来关联这些对象类。这样对象与对象之间就通过IoC容器进行联系,但对象与对象之间并没有什么直接联系。如果软件系统引入了Ioc容器之后,对象A和对象B之间失去了直接联系,所以,当对象A实例化和运行时,如果需要对象B的话,IoC容器会主动创建一个对象B注入到对象A所需要的地方。对象A获得依赖对象B的过程,由主动行为变成了被动行为,控制权颠倒过来了。控制反转(IoC)的技术促进了松耦合。当IoC被使用,一个对象依赖的其它对象不会通过自己创建或者查询以来对象,而是以被动的的方式被传递。

应用场景

在应用开发中,当我们在设计组件时,往往需要引入和调用其他组件的服务时,这种依赖关系如果固化在组件设计中就会导致组件之间的耦合和维护难度的增大,这个时候如果使用 IoC 容器,把资源获取的方式反转,让 IoC 容器主动管理这些依赖关系,将依赖关系注入到组件中,那么这些依赖关系的适配和管理就会更加灵活。

2、AJAX分别通过什么机制实现标准化呈现、实现动态显示和交互、进行数据交换与处理、进行异步数据读取、绑定和处理所有数据?

是一种 Web 应用程序开发的手段,它采用客户端脚本与 Web 服务器交换数据,把服务器负担的一些工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。 Ajax不必采用会中断交互的完整页面刷新,就可以动态地更新 Web 页面。

  1. Ajax使用XHTML和CSS标准化呈现;
  2. Ajax使用DOM实现动态显示和交互;
  3. Ajax使用XML和XSLT进行数据交换与处理;
  4. Ajax使用XMLHttpRequest进行异步数据读取;
  5. Ajax使用JavaScript绑定和处理所有数据。

3、请描述RESTWeb服务架构?

REST是一个依赖于资源、表示和动作的三轮车。

    资源是Web平台的基本元素。在进行REST工作时,第一个任务是识别资源并找出它们是如何相互链接的。每个资源在Web平台上都有一个唯一的标识符,称为通用资源标识符URL,Web上最好的例子是统一资源定位器。引用资源的URL数量没有限制。

    动作是一个HTTP动作,如post、get-put、delete、options等。使用URL,可以为通信确定目标服务器的标识,但HTTP谓词只告诉需要在主机上执行哪些操作。客户机可以在主机上触发许多操作。

    表示确定向客户展示这些资源的方法。REST支持所有格式,没有任何限制;因此可以使用任何格式来表示资源。根据客户机和服务器处理格式的能力,可以使用JSON、XML或任何其他格式。接口就是可以通过服务端部署的机器提供出来的URL地址进行动态的数据交互。通常是前后端协商定义数据接口格式(一般就是JSON格式)形成文档。接口遵循RESTful规范,基于这个风格设计可以更简洁,更有层次,更易于实现缓存等。

    RESTWeb服务确保能够对用户进行身份验证,并授权允许其访问和使用的资源。确保信息从收集之时起到存储之时以及以后提供给被授权人时的保密性和完整性。HTTP带有一些继承的身份验证机制,它允许基本的、摘要式的和自定义的身份验证。

 

4、请比较描述机器学习的分类模型XGboost、Adaboost、Catboost、随机森林和GBDT?

xgboost是梯度提升树的一种高效系统实现,是对GBDT进一步的改进,包括对代价函数进行了二阶泰勒展开,在代价函数里加入了正则项,借鉴了随机森林的列采样方法,支持并行计算等。传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。与CatBoost不同,XGBoost不能独自处理分类特征,它只接受与随机森林类似的数值。

AdaBoost是基于boosting的思想,通过多个弱分类器的线性组合来得到强分类器,训练时重点关注被错分的样本,准确率高的弱分类器权重大。在训练过程中,它不改变所给的训练数据,而是不断改变训练数据权值的分布,使得被误分类的数据再后一轮的分类中受到更大的关注。同时采用加权多数表决的方法,加大分类误差率小的弱分类器的权值,使其在最后的表决中起更大的作用,减小分类误差率大的弱分类器的权值,使其在最后的表决中起较小的作用。

CatBoost是Category 和 Boosting的缩写,最大的特点就是可以直接处理类别特征,不需要任何预处理来将类别转换为数字。catboost的基模型采用的是对称树,同时计算leaf-value方式和传统的boosting算法也不一样,传统的boosting算法计算的是平均数,而catboost在这方面做了优化采用了其他的算法,这些改进都能防止模型过拟合。最大的特点对category特征的直接支持,甚至支持字符串类型的特征。

随机森林算法通过随机的行采样(bagging)和列采样(feature bagging)构造不同的训练集,建立一个决策树森林,利用加权平均方式或多数表决的方式得到最后的预测结果,能够并行学习,对噪声和异常数据具有很好的过滤作用。行采样和列采样都是为了减小模型之间的相关性使基学习器变得不同从而减小集成模型的方差,但这种随机性会导致随机森林的偏差有所增加(相比于单棵不随机树),因此随机森林的单棵树都会采用很深的决策树,并不进行剪枝操作,以减小每棵树的偏差,这使得每一棵决策树就是一个精通于某一个窄领域的专家(因为我们从全部特征中选择部分来让每一棵决策树学习),这样在随机森林中就有了很多个精通不同领域的专家,对一个新的问题(新的输入数据),可以用不同的角度去看待它,最终再通过投票或平均得到结果。这也正是群体智慧的体现。

GBDT是以决策树(CART)为基学习器的GB算法,xgboost扩展和改进了GDBT,xgboost算法更快,准确率也相对高一些。GBDT是基于boosting的思想,串行地构造多棵决策树来进行数据的预测,它是在损失函数所在的函数空间中做梯度下降,即把待求的决策树模型当作参数,每轮迭代都去拟合损失函数在当前模型下的负梯度,从而使得参数朝着最小化损失函数的方向更新。GBDT可以看作是AdaBoost的一个推广,Ad

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值