您的位置:首页 > 编程语言 > Java开发

20155216 2016-2017-2 《Java程序设计》第十周学习总结

2017-04-30 19:32 267 查看

20155216 2016-2017-2 《Java程序设计》第十周学习总结

教材学习内容总结

了解计算机网络基础

概念

计算机网络基础,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

计算机功能

1、资源共享

(1)硬件资源:包括各种类型的计算机、大容量存储设备、计算机外部设备,如彩色打印机、静电绘图仪等。

(2)软件资源:包括各种应用软件、工具软件、系统开发所用的支撑软件、语言处理程序、数据库管理系统等。

(3)数据资源:包括数据库文件、数据库、办公文档资料、企业生产报表等。

(4)信道资源:通信信道可以理解为电信号的传输介质。通信信道的共享是计算机网络中最重要的共享资源之一。

2、网络通信

通信通道可以传输各种类型的信息,包括数据信息和图形、图像、声音、视频流等各种多媒体信息。

3、分布处理

把要处理的任务分散到各个计算机上运行,而不是集中在一台大型计算机上。这样,不仅可以降低软件设计的复杂性,而且还可以大大提高工作效率和降低成本。

4、集中管理

计算机在没有联网的条件下,每台计算机都是一个“信息孤岛”。在管理这些计算机时,必须分别管理。而计算机联网后,可以在某个中心位置实现对整个网络的管理。如数据库情报检索系统、交通运输部门的定票系统、军事指挥系统等。

5、均衡负荷

当网络中某台计算机的任务负荷太重时,通过网络和应用程序的控制和管理,将作业分散到网络中的其它计算机中,由多台计算机共同完成。

掌握Java Socket编程

服务器端(非多线程)   

1、用指定的端口实例化一个SeverSocket对象。服务器就可以用这个端口监听从客户端发来的连接请求。

2、调用ServerSocket的accept()方法,以在等待连接期间造成阻塞,监听连接从端口上发来的连接请求。

3、利用accept方法返回的客户端的Socket对象,进行读写IO的操作

4、关闭打开的流和Socket对象

用服务器的IP地址和端口号实例化Socket对象。

1、调用connect方法,连接到服务器上。

2、获得Socket上的流,把流封装进BufferedReader/PrintWriter的实例,以进行读写

3、利用Socket提供的getInputStream和getOutputStream方法,通过IO流对象,向服务器发送数据流

4、关闭打开的流和Socket。

服务器端 (多线程)

1、服务器端创建ServerSocket,循环调用accept()等待客户端连接

2、客户端创建一个socket并请求和服务器端连接

3、服务器端接受客户端请求,创建socket与该客户建立专线连接

4、建立连接的两个socket在一个单独的线程上对话

5、服务器端继续等待新的连接

理解混合密码系统

基于AES和ECC算法的混合密码系统

在混合密码系统中,在采用对称算法AES进行保密通信之前,先采用公钥算法进行会话密钥分发,其过程一般如下[1][5]:

(0)A和B选用一个公钥系统;

(1)B将他的公钥传给A,或者A从数据库中获得B的公钥;

(2)A产生随机会话密钥K,用B的公钥加密K,把加密密钥EB(K)传给B;

(3)B用他的私钥解密,恢复出会话密钥K:DB[EB(K)]=K。

混合密码系统本身未定义主体间的身份认证问题;而互联网的密钥交换(IKE)和认证协议较复杂。实际上,X.509协议可同时实现认证和密钥协商,认证完毕后先把Ya和Yb等信息混合(例如串联在一起),通信双方再选用一个压缩函数(例如MD5算法)来处理混合信息,其结果即可作为AES算法的对称密钥。由于Ya和Yb是保密的,因此该密钥协商方法是安全的。

掌握Java 密码技术相关API的使用

import  java.security.Key;


import  javax.crypto.Cipher;


import  org.apache.commons.logging.Log;


import  org.apache.commons.logging.LogFactory;


教材学习中的问题和解决过程

问题1:

对于此段代码的作用不理解



问题1解决方案:

程序用于对密码的分析和密码程序的检验。

代码调试中的问题和解决过程

问题1:

教程中凯撒密码的代码无法运行。

问题1解决方案:

将代码进行适当的增添和修改



问题2:

代码无法正常运行



问题2解决方案:

建立相应的文件夹,用于输入、输出和打印明文和密文。

代码托管



上周考试错题总结

错题1及原因,理解情况

错题2及原因,理解情况

...

结对及互评

评分标准

正确使用Markdown语法(加1分):

不使用Markdown不加分

有语法错误的不加分(链接打不开,表格不对,列表不正确...)

排版混乱的不加分

模板中的要素齐全(加1分)

缺少“教材学习中的问题和解决过程”的不加分

缺少“代码调试中的问题和解决过程”的不加分

代码托管不能打开的不加分

缺少“结对及互评”的不能打开的不加分

缺少“上周考试错题总结”的不能加分

缺少“进度条”的不能加分

缺少“参考资料”的不能加分

教材学习中的问题和解决过程, 一个问题加1分

代码调试中的问题和解决过程, 一个问题加1分

本周有效代码超过300分行的(加2分)

一周提交次数少于20次的不加分

其他加分:

周五前发博客的加1分

感想,体会不假大空的加1分

排版精美的加一分

进度条中记录学习时间与改进情况的加1分

有动手写新代码的加1分

课后选择题有验证的加1分

代码Commit Message规范的加1分

错题学习深入的加1分

点评认真,能指出博客和代码中的问题的加1分

结对学习情况真实可信的加1分

扣分:

有抄袭的扣至0分

代码作弊的扣至0分

迟交作业的扣至0分

点评模板:

博客中值得学习的或问题:

xxx

xxx

...

代码中值得学习的或问题:

xxx

xxx

...

基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

参考示例

点评过的同学博客和代码

本周结对学习情况

20155238

结对照片

结对学习内容

计算机网络基础

java实现密码学加解密

上周博客互评情况

20155117

20145209

20155230

20145207

其他(感悟、思考等,可选)

1、java的密码学编程实现比C语言的更为简洁。

2、java密码的API避免了对于普通密码加解密模式的繁琐编写。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周6/61/420/20
第二周334/3401/518/38
第三周570/9001/622/60
第四周544/13581/730/90
第五周731/20891/830/90了解了java中的架构,排序,以及异常处理
第七周541/35582/1030/90了解了JDK8新的时间日期API
第八周430/38771/1130/90学习了NIO、NIO2与通用API
第九周653/45302/1330/90了解了自定义泛型和枚举
第十周385/49141/1430/90学习了java的密码技术
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

计划学习时间:25小时

实际学习时间:20小时

改进情况:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: