zoukankan      html  css  js  c++  java
  • 20155222 2016-2017-2 《Java程序设计》第10周学习总结

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

    教材学习内容总结

    • 简单JAVA socket

       * 1   搭建服务器端
      
        * 1 创建ServerSocket对象绑定监听端口。
      
        * 2 通过accept()方法监听客户端的请求。
      
        * 3 建立连接后,通过输入输出流读取客户端发送的请求信息。
      
            * 4 通过输出流向客户端发送请求信息。
      
        * 5 关闭相关资源。
      
       * 2 搭建客户器端
      
        * 1 创建Socket对象,指明需要连接的服务器的地址和端口。
      
        * 2 建立连接后,通过输出流向服务器发送请求信息。
      
        * 3 通过输入流获取服务器的响应信息。
      
        * 4 关闭响应资源
      
    • Java与密码学
      Java安全体系结构总共分为4个部分:

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

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

    • 编写密码学程序使用java有什么好处?
      java有众多API,使用方便。

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

    • java socket如何搭建服务器?
    
    package socket;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class SocketService {
        //搭建服务器端
        public static void main(String[] args) throws IOException{
            SocketService socketService = new SocketService();
            //1、a)创建一个服务器端Socket,即SocketService 
            socketService.oneServer();
        }
        public  void oneServer(){
            try{
                ServerSocket server=null;
                try{
                    server=new ServerSocket(5209);
                    //b)指定绑定的端口,并监听此端口。
                    System.out.println("服务器启动成功");
                    //创建一个ServerSocket在端口5209监听客户请求
                }catch(Exception e) {
                        System.out.println("没有启动监听:"+e);
                        //出错,打印出错信息
                }
                Socket socket=null;
                try{
                    socket=server.accept();
                    //2、调用accept()方法开始监听,等待客户端的连接 
                    //使用accept()阻塞等待客户请求,有客户
                    //请求到来则产生一个Socket对象,并继续执行
                }catch(Exception e) {
                    System.out.println("Error."+e);
                    //出错,打印出错信息
                }
                //3、获取输入流,并读取客户端信息 
                String line;
                BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                //由Socket对象得到输入流,并构造相应的BufferedReader对象
                PrintWriter writer=new PrintWriter(socket.getOutputStream());
                //由Socket对象得到输出流,并构造PrintWriter对象
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                //由系统标准输入设备构造BufferedReader对象
                System.out.println("Client:"+in.readLine());
                //在标准输出上打印从客户端读入的字符串
                line=br.readLine();
                //从标准输入读入一字符串
                //4、获取输出流,响应客户端的请求 
                while(!line.equals("end")){
                //如果该字符串为 "bye",则停止循环
                    writer.println(line);
                    //向客户端输出该字符串
                    writer.flush();
                    //刷新输出流,使Client马上收到该字符串
                    System.out.println("Server:"+line);
                    //在系统标准输出上打印读入的字符串
                    System.out.println("Client:"+in.readLine());
                    //从Client读入一字符串,并打印到标准输出上
                    line=br.readLine();
                    //从系统标准输入读入一字符串
                } //继续循环
    
                //5、关闭资源 
                writer.close(); //关闭Socket输出流
                in.close(); //关闭Socket输入流
                socket.close(); //关闭Socket
                server.close(); //关闭ServerSocket
            }catch(Exception e) {//出错,打印出错信息
                System.out.println("Error."+e);
            }
        }
    }
    
    

    代码托管

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 9/9 3/6 10/10
    第二周 40/49 1/7 5/15
    第三周 49/99 1/8 10/25
    第四周 202/301 1/9 15/40
    第五周 170/471 1/10 5/45
    第六周 115/520 1/11 5/50
    第七周 18/538 1/13 5/55
    第八周 28/545 1/14 5/60
    第九周 323/867 2/16 15/75
    第十周 45/912 1/17 5/80

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

    参考资料

  • 相关阅读:
    一则线上MySql连接异常的排查过程
    有一种娱乐叫看别人编程
    程序员DNS知识指南
    中国式开源
    RSS与公众号
    论国人的素质和一个公司的商业道德
    《阿里游戏高可用架构设计实践》阅读笔记
    《淘宝数据魔方技术架构解析》阅读笔记
    软件体系架构_系统质量属性场景描述_结合《淘宝网》实例
    《余额宝技术架构及演进》阅读笔记
  • 原文地址:https://www.cnblogs.com/20155222lzj/p/6790500.html
Copyright © 2011-2022 走看看