软件课程设计问答

不允许拷贝粘贴(违者直接重修),用自己的理解组织语言

(1)举例说明一些设计模式,并给出伪代码(至少2个)

常见的设计模式有:
适配器模式:适配器模式负责不同类之间的转换,使转换之后的类能够满足指定要求,它可以作为不同接口之间起着适配的功能。
伪代码:

//从class one 适配到class two
Interface Adapter{
Function request1();
Function request2();
Function request3();
}
Public Class OneToTwo extends two implements Adapter{
Public OneToTwo(){};
Pubulic request1(){};//适配操作,转为目标所期望的请求
Pubulic request2(){};
Pubulic request3(){};
}
工厂模式:将相同的一部分功能整合抽象封装成一个接口处理,如将对象的创建交给工厂类,而不同的类都调用同一个接口来实现某一类功能。这样可以减少代码的复用。
Pubulic interface Creator{
Function Create();
}
Public class CreatorOne implements Creator{
@override
Public void Create(){};
}
Public class CreatorTwo implements Creator{
@override
Public void Create(){};
}
Public class CreatorFactory {
Public void Create(String type){
Condition 1: return new CreatorOne();
Condition 2: return new CreatorTwo();
};
}

(2) 框架和设计模式有何不同?怎样认识MVC作为框架或设计模式

框架和模式有着相似之处,同时也存在着不同。框架包括相似场景的代码复用是可以直接使用的,只需根据实际需求做简单调整即可;而模式指的是在相同或相似的场景采用类似的逻辑规则对代码进行调整,这个过程需要程序员对设计模式有一定的理解并将其以代码的形式表现出来。因此模式是一种框架的抽象总结。就使用场景而言,同一个项目的设计框架中往往会根据需要使用很多的设计模式。而MVC即指的是模型,视图,控制代码分离的一种思想,因此,从概念上来说,MVC更像是一种设计模式而非设计框架。反而是所谓的23种设计模式更像是一种框架。再举一个例子,比如说我做软件设计大作业用的Web框架Django,用的是MTC,和MVC有类似的效果。基本上都是框架搭好了,自己去补充对应部分的代码,它只能能算是一个框架,而它所遵循的模式如MTC可以是算作一个设计模式。总结上文,模式和框架的关系类似于一个抽象类和它的实体。

(3) 如果你的网络服务端容易受到流量攻击,导致系统无法正常访问,从架构上(web和网络结合)有何方法合理解决该问题?(配图)

先从攻击谈起,现有的流量攻击大多是像DDOS和DOS或者是CC攻击这一类。一般都是通过大量的无效请求造成带宽占用从而阻塞,从而使实际需要申请的请求无法进入。
对于DDOS这样的,一方面对于攻击方仅知道IP,不知道端口号这种情况,可以尽量避免使用3306这样的常用端口。
另外一方面,可以建一个表起到黑名单的作用,再增加一个用于负载均衡的转发设备,当DDOS的前几个没有响应时就加入黑名单,负载均衡器下一次见到和黑名单中一样的IP时可以直接丢掉。当然,这种情况也存在一定弊端,很容易误伤。
还有一种考虑,DDOS攻击的到来频率和一般的正常请求是有一定区别的,可以通过深度学习对上述规律进行学习来判断是否有恶意攻击发生。
除了以上方法,还可以使用防火墙自带的设置来防御流量攻击和有些比较耗时的报文过滤操作来实现防御效果,如图1所示。
软件课程设计问答
图1 流量攻击防御(引自网络)

[题目2]:就最近的中美冲突:

(1)我国的IT和软件相关行业存在哪些优势,可以降低国际形势带来的影响?

市场优势:首先,中国网民规模巨大。截至2020年3月,我国网民规模达到了9.04亿。由此可见,如此庞大的市场势必会吸引来自国外的互联网公司逐利。他们不仅带来了资本,也带来了技术。但是与此同时,随着国内公司竞争的逐渐激烈化,会淘汰很大一部分无法站住脚的初创公司。会出现国内的互联网巨头,就像阿里巴巴,腾讯,字节跳动,华为等公司占据大部分的市场份额。
竞争优势:一方面,这些大公司为了进一步扩展市场,会不断进行扩张,吞并国内外的小公司,形成自己的产业生态。另外一方面,为了保持长期的竞争力,这些公司也会投入大量的人员和资金进行前沿技术的研究和开发应用。从近几年的各公司招聘就可以看出,互联网企业在近期会响应国家政策,投入更多的资金研究电动汽车,自动驾驶,人工智能等技术的应用落地。同时,为了防止被扼住技术的核心,从而受制于人,专利技术与核心技术如以FPGA为代表的大部分智能设备核心元件也是各大厂发力的地方。在资本参与的领域内,同时有着国家的扶持,这些互联网大厂能够做到不断创新,即减少了中国受制于人的几率。不仅如此,这些公司凭借他们在中国取得的优势还有机会走出去,在国外扎根,扩大自己的市场,向世界展示新的中国名片。
人才优势:以逐利和市场为导向的公司,为了占据市场份额,会以较高的薪资招聘大量相关的专业人才,同时相关舆论的影响也导致了其在高考生选专业时起着不可忽视的导向作用。公司就职的培训也会培养大量的相关软件开发人才,这对于中国IT和软件行业的发展无疑有着巨大的推动作用。

(2)我国应该确保哪些IT相关的技术或软件能够拥有完全的自主产权,目前这些技术或软件的现状如何?

硬件设计软件及相关硬件设计: FPGA(Field-Programmable Gate Array)现场可编程门阵列,是在硅片上预先设计实现的具有可编程特性的集成电路,它能够按照设计人员的需求配置为指定的电路结构,让客户不必依赖由芯片制造商设计和制造的 ASIC 芯片,是智能设备制造的核心部件,许多电子的运算部件都需要用到,包括手机的运算核心CPU,也广泛应用在原型验证、通信、汽车电子、工业控制、航空航天、数据中心等领域。然而国内大部分的硬件制造用到的FPGA仍然需要依靠进口提供,以国内的条件,甚至是部分单片机也无法完全保证纯国产,目前占据世界市场主流的依然是像Xilinx, Intel, Microchip, Lattice这样的国外企业。尽管在中端及以下的芯片生产制造方面,中国已经能够做到世界一流水平,然而在高端芯片的研发制造方面仍需进一步努力。目前许多国内的手机生产仍然需要靠进口的FPGA来完成。不仅如此,未来随着人工智能相关技术的大规模落地,势必会掀起一波FPGA热潮,因此为了避免国内在未来面临无芯可用的困境,相关技术的人才培养与研究刻不容缓。之所以会面临以上的困境,是因为国内资料太少,相关学习太高,很少有高校开设相关的系统性课程。当相关的学习环境都无法保证,也就很难培养出相关的人才。
操作系统:在国内互联网的发展的初级阶段,Linux系统的开源和在其基础上进一步开发出来的各类操作系统避免了国内的公司从底层开始造*,让我们能够有机会站在更高的阶梯上开始起跑。因此降低了国内的互联网公司的成本投入,现有的基于开源系统的安卓,物联网等系统已经能够满足基本需求。然而这也是问题的起源,当我们习惯于用着别人的东西而不投入精力在底层的开发上,系统的上限也就是我们软件的上限。很多时候中国人从来不缺从90到100的执着与坚持,而是从0到1的勇气,推翻重来,以现代的需求和眼光去审视现在的操作系统我们就能发现,其中仍然存在很多冗余与可以优化的地方,与其在别人的代码上不断地添添补补,不如自己从头开始。然而,资本的本质就是逐利,而一个操作系统的开发势必需要投入大量的人员与资金,这与其本质是相悖的。由此看来,尽管华为开发的操作系统尚存在一些不足与抄袭,但是其眼光是其他企业所不能比肩的。

数学计算软件与工程应用软件:美国商务部的实体名单禁止国内部分高校使用MATLAB的新闻在前段时间引发热议。有些时候,对我们来说,这不是一件坏事,反而能够吸引公众的注意力,从而让我有机会反思自己:再次被扼住核心技术。 我相信如果举众人之智,像MATLAB这样的软件是决计无法困住我们的,然而,缺乏资本或是国家政策的推动,想要单凭借一人之力完成也绝无可能。因此这次的全民关注给了像是MATLAB这样的数学软件的开发一个机会。首先,盗版的MATLAB是国内资本无法参与的根本原因,当商人们发现无利可图,就会放弃这一块领域。因此,有关部门出台政策支持正版打击盗版是吸引资本参与的有效手段。不仅是MATLAB像是Quartus,SolidWorks,Keil等在工业制造邻域广泛应用的软件开发仍然未见到国内企业的影子。这些软件是能够保证中国工业与制造业更进一步,摆脱落于人后的关键所在,当我们能够在软硬一体上都能够做到全国产化,相信离中华民族的伟大复兴也就在不远了。

上一篇:【FPGA】rapid io的使用


下一篇:(27)FPGA译码器设计(第6天)