20155234第十周《Java学习笔记》学习总结

教材学习内容总结

  • 网络编程
    在两个或两个以上的设备(例如计算机)之间传输数据。程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴。在发送和接收数据时,大部分的程序设计语言都设计了专门的API实现这些功能,程序员只需要调用即可
  • 网络编程技术
    1.客户端网络编程步骤
    客户端(Client)是指网络编程中首先发起连接的程序,客户端一般实现程序界面和基本逻辑实现,客户端的编程主要由三个步骤实现:步骤一是建立网络连接,在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了;步骤二是交换数据,交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应;步骤三是关闭网络连接,在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。其中在实际实现时,步骤二会出现重复。
    2.服务器端网络编程步骤
    服务器端(Server)是指在网络编程中被动等待连接的程序,服务器端一般实现程序的核心逻辑以及数据存储等核心功能。服务器端的编程主要由四个步骤实现:步骤一是监听端口,服务器端属于被动等待连接,所以服务器端启动后只需要监听本地计算机的某个固定端口即可,该端口就是服务器端开放给客户端的端口;步骤二是获得连接,当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,服务器端和客户端也通过该连接进行数据交换;步骤三是交换数据,服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端;步骤四是关闭连接,通过关闭服务器端使得服务器监听的端口以及占用的内存可以释放出来,实现了连接的关闭。
    3.Java网络编程技术
    在Java中和网络编程有关的基本API位于java.net包中,该包中包含了基本的网络编程实现,该包是网络编程的基础。该包中既包含基础的网络编程类,也包含封装后的专门处理WEB相关的处理类。其中一个基础的网络类是InetAddress类,该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。
    4.TCP编程
    TCP方式的网络通讯是指在通讯的过程中保持连接,只需要建立一次网络连接,就可以多次传输数),在实际的网络编程中传输可靠,如果发送的一方发送的数据接收方觉得有问题,则网络底层会自动要求发送方重发,直到接收方收到为止。
    在Java语言中,对于TCP方式的网络编程提供了良好的支持,在实现时,以java.net.Socket类代表客户端连接,以java.net.ServerSocket类代表服务器端连接。在进行网络编程时,底层网络通讯的细节已经实现了比较高的封装,所以在程序员实际编程时,只需要指定IP地址和端口号码就可以建立连接了。下面分别介绍一下在Java语言中客户端和服务器端的实现步骤。
  • 网络协议
    指对于网络中传输的数据格式的规定。网络协议的实质也是客户端程序和服务器端程序对于数据的一种约定。网络协议就是一种格式上的约定,可以根据逻辑的需要约定出各种数据格式,在进行设计时一般遵循“简单、通用、容易解析”的原则进行。
    在网络编程中,对于同一个网络程序来说,一般都会涉及到两个网络协议格式:客户端发送数据格式和服务器端反馈数据格式。客户端程序需要完成的处理为:客户端发送协议格式的生成;服务器端反馈数据格式的解析。服务器端程序需要完成的处理为:服务器端反馈协议格式的生成;客户端发送协议格式的解析。对于程序员来说,在进行网络程序编写时,需要首先根据逻辑的需要设计网络协议格式,然后遵循协议格式约定进行协议生成和解析代码的编写,最后使用网络编程技术实现整个网络编程的功能。而对于常见协议的格式,例如HTTP(Hyper Text Transfer Protocol,超文本传输协议)、FTP(File Transfer Protocol,文件传输协议),SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)等等,都有通用的规定,具体可以查阅相关的RFC文档。
    对于一种网络程序来说,网络协议格式是该程序最核心的技术秘密,所以不能泄露。

Java与密码学

Java安全体系结构总共分为4个部分:

  • JCA( Java Cryptography Architecture, Java加密体系结构):JCA提供基本的加密框架, 如证书、 数字签名、消息摘要和密钥对产生器。
  • JCE( Java Cryptography Extension, Java加密扩展包):JCE在JCA的基础上作了扩展, 提供了各种加密算法、 消息摘要算法和密钥管理等功能。JCE的实现主要在javax.crypto包( 及其子包) 中
  • JSSE( Java Secure Sockets Extension, Java安全套接字扩展包):JSSE提供了基于SSL( Secure Sockets Layer,安全套接字层) 的加密功能。 在网络的传输过程中, 信息会经过多个主机(很有可能其中一台就被窃听) , 最终传送给接收者, 这是不安全的。这种确保网络通信安全的服务就是由JSSE来提供的。
  • JAAS( Java Authentication and Authentication Service, Java鉴别与安全服务):JAAS提供了在Java平台上进行用户身份鉴别的功能。

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

  • 默认会将注释信息存储于.class文档,可被编译程序或位码分析工具读取,但执行时期无法读取注释信息,在执行时期读取注释信息,用什么方式?
    可以使用java.lang.annotation.Retention搭配java.lang.annotation.RetentionPolicy枚举指定

错题

暂时不知道错题情况,数据库仍需要更深入的学习。

代码托管

Consul java 客户端api java客户端是什么_网络编程

结对及互评

结对搭档

  • 20155226基于评分标准,我给本博客打分:(10)。得分情况如下:
  1. 正确使用Markdown语法(加1分)
  2. 模板中的要素齐全(加1分)
  3. 排版精美的加一分
  4. 代码Commit Message规范的加1分
  5. 进度条中记录学习时间与改进情况的加1分
  6. 感想,体会不假大空的加1分
  7. 教材学习中的问题和解决过程。
  8. 动手写新代码的加1分
    9.代码超过300行加2分

学习进度条

代码行数(新增/累积)

博客量(新增/累积)

目标

5000行

30篇

第一周

3/3

1/1

第二周

105/108

1/2

第三周

205/313

1/3

第四周

402/710

1/4

第五周

327/1037

1/5

第六周

900 /1937

1/6

第七周

631/2568

2/8

第八周

780/3348

1/9

第九周

1140/4488

2/11

第十周

507/4995

1/12

参考资料