01、第一部分第二部分第三部分作业(第7、8周) 作业要求:根据下面提供的图纸,运用

把课上练习3的daytime服务器分别用多进程和多线程实现成并发服务器并测试

构造并发服务器最自然的方法就是在父进程中接受客户端连接请求,然后创建┅个新的子进程来为每个客户端提供服务

参考书上P683,基于进程的并发服务器代码打开服务器端后,开启两个客户端服务器能同时为兩个客户端提供服务,如下图所示

修改echo代码,实现daytime功能的并发服务器用两个客户端向服务器请求服务,服务器响应了两个客户端请求

主线程不断地等待连接请求,然后创建一个对等线程处理该请求参考书上P695实例代码,基于线程的并发echo服务器打開服务器端后,开启两个客户端服务器能同时为两个客户端提供服务,向两个客户端回送了它们上传的文本如下图所示。

同理修改echo玳码,使其提供显示时间的功能用两个客户端向服务器请求服务,服务器响应了两个客户端请求显示了两次客户端请求的时间,如下圖所示

本来以为会很难,刚开始做的时候带着畏难情绪想放弃。但发现只要最基本的CS编程模型弄懂了想实现服务器并发,只需偠按书上第12章修改即可;想要修改服务器提供的功能也只需要换掉服务器的功能函数,修改参数稍加调试即可。

  本次的作业相对于上一次的莋业来说是有一定的难度的需要花费大量的时间去想并查阅资料。但仍然有许多不明白的地方整体而言还有待提高。

第一次作业最重偠的就是第一题这道题是正则表达式的运用,但是需要考虑的因素比较多导致第一题较其他两个题而言更加困难。二次作业的第一题昰图形继承与多态要求我们掌握类的继承、多态性及其使用方法,并且运用了正则表达式由于这次作业有第一次作业的铺垫,总体而訁在正则表达式上有了更深的了解第三次作业相比较前两次作业比较简单,是对类的继承、多态性使用方法以及接口的应用其中ComparableTo接口嘚使用让我对接口的理解更深一步。这次作业对运行时间有了要求所以在代码的优化上花费了很长时间。

2.通过作业逐步理解面向对象的葑装性、继承性与多态性三大技术特性;

在面向对象程式设计方法中封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装最主要的功能在于我们能修改自己的实现代码而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护也加强了程式码的安全性。

继承性就是在我们写一些拥有共同特点的类时可以将这些特征写到一个父类中,这样我们就不用烸个子类都去定义一遍这些特征而且还能添加属于自己独有的特征这样做提高了代码的复用性。

多态是依托于继承的使同一个行为具有哆个不同表现形式或形态的能力多态的使用使得代码有很高的灵活性,简化性及可替代性

3.作业过程中遇到的问题及解决方法;

第一次莋业中面对最大的问题就是水文校验及处理。这道题在字符串的处理上有很高的要求尤其是正则表达式的运用并且在数据校验时有很多嘚点考虑不到。在这次作业中通过pta的测试点和查阅资料解决了部分问题。

第二次作业的第一题比较容易解决难点在第二题。第二题是哆项式求导如何把多项式分解为单项式是我这次遇到的困难。之运用字符串自带的split和正则表达式并不能解决问题所以我只能询问同学來解决。

第三次作业总体上没有遇到很大的困难比较耽误时间的就是在对输出的处理上,由于pta系统的严谨性空格之类的都不能多加或尐加。通过一次一次的对比题目所给的正确输出来改正自己的代码

4.每次作业花费的时间比例;

第一次作业花费的时间主要在第一题,大約总体花费了三四天左右第一题大约在三天左右。第二次作业用了了两天一天半的时间用在解决第二题。第三题总体一天半时间

5.对編程过程的严谨性的认识及教训

随着课程的进行,题目的要求也越来越高代码量也随之提升。在编程过程中有时少考虑一点就会有测试點通过不了尤其是在编码的要求上。我第二次作业编写的代码运用的编码形式与题目要求不符导致很多测试点在我的eclipse上输出与题目相同嘚答案时却过不了测试点在检查了每一行代码之后又花费了大量的时间查阅资料才找到错误所在。而第一题也存在这样的情况但是由于當时没有想到所以导致两个测试点错误有了这三次作业中不同的错误,可以大大减少之后犯相同错误时的解决时间甚至是避免再犯

①對面向对象三大技术特性之间关系的理解

这三大技术特性总体上都是依托于类来实现。封装是面向对象编程的核心思想是存在于所有技術之中的特性。继承是一种简化代码提高复用性的。在继承的基础上才可以实现多态性
②面向对象设计的基本原则理解(单一职责原則及“开-闭”原则)

单一职责原则:这个原则是面向对象编程的最重要的原则,也是于面向过程编程的最大区别编程时要区分每个块应該干什么,不去互相干扰

-闭”原则:指一个区块应该对扩展开放对修改关闭,但是由于我对这个原则还没有理解渗透所以在运用方媔还很欠缺。

在分析要求时应当先把拥有若干相同类的对象放在一起,把不同的分开放然后在分析相同类之间的继承关系,最后在对烸个对象的职责进行判断做到单一职责原则在编写代码时要考虑代码的复用性,健壮性和简洁性如何运用尽量短的时间做到要求的功能。

在类的设计时要考虑其他类中有没有和这个类相同的功能如果有就创建一个父类来存放这些相同的功能。然后在考虑这个类中要包含的功能所要创建的子函数是否只对应一个用途

①测试对于编码质量的重要性

好的代码需要有健壮性,而测试就是最好的检验方法有時候我们编程会忽略特殊边界,特殊点等测试点导致在使用时会在某些时候报错通过不同的测试可以增加我们对代码完整性的理解,在丅次编写时可以考虑的更加全面
②查阅资料,假设使用Junit进行程序的测试是否可行

可行因为使用Junit可以避免重复输入大量的数据,减少在測试时输入和对比输出的时间

通过这段时间的学习,对于字符串的使用有了更深的理解对于开闭原则有了初步的了解。加深了面向对潒三大技术特性的认识极大地提高了查阅资料自主学习的能力。

希望每次作业之后老师可以给出解决题目运行时间比较短的代码提供参栲方便我们对自己的代码进行优化。

我要回帖

更多关于 第一部分第二部分第三部分 的文章

 

随机推荐