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

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

    教材学习内容总结

    1. 一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。
    2. 在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。
    3. P2P程序是一种特殊的程序,应该一个P2P程序中既包含客户端程序,也包含服务器端程序,例如BT,使用客户端程序部分连接其它的种子(服务器端),而使用服务器端向其它的BT客户端传输数据。
    4. 监听端口:服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。
    5. 个基础的网络类——InetAddress类。该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。
    6. 接收数据在Java语言中的实现是这样的:首先构造一个数据缓冲数组,该数组用于存储接收的服务器端反馈数据,该数组的长度必须大于或等于服务器端反馈的实际有效数据的长度。然后以该缓冲数组为基础构造一个DatagramPacket数据包对象,最后调用连接对象的receive方法接收数据即可。接收到的服务器端反馈数据存储在DatagramPacket类型的对象内部。

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

    • 问题1:自己编写凯撒密码:
    • 问题1解决方案:
    import java.util.Scanner;
    /**
     * 密码:凯撒密码
     * */
    public class Caeser {
        public static void main(String[] args) {
            System.out.println("[A 加密][J 解密],Please Choose One");
            Scanner c=new Scanner(System.in);//创建Scanner键盘输入对象
            String  s1=c.nextLine();//获取本行的字符串
            if(s1.equalsIgnoreCase("A")){
                System.out.println("请输入明文:");
                Scanner sc=new Scanner(System.in);
                String s=sc.nextLine();
                System.out.println("请输入密钥:");
                Scanner sc1=new Scanner(System.in);
                int key=sc1.nextInt();//将下一个输入项转换成int类型
                Encryption(s, key);
            }else if(s1.equalsIgnoreCase("J")){
    
                System.out.println("请输入密文:");
                Scanner sc=new Scanner(System.in);
                String s=sc.nextLine();
                System.out.println("请输入密钥:");
                Scanner sc1=new Scanner(System.in);
                int key=sc1.nextInt();//将下一个输入项转换成int类型
                Decrypt(s, key);//調用解密方法
            }
        }
        public static void Encryption(String str,int k){//加密
            String string="";
            for (int i = 0; i < str.length(); i++) {
                char c=str.charAt(i);
                if(c>='a'&&c<='z'){//如果字符串中的某个字符是小写字母
                    c+=k%26;//移动key%26;
                    if(c<'a')
                        c+=26;
                    if(c>'z')
                        c-=26;
    
                }else if(c>='A'&&c<='Z'){//如果字符串中的某个字符是大写字母
                    c+=k%26;//移动key%26;
                    if(c<'A')
                        c+=26;
                    if(c>'Z')
                        c-=26;
                }
                string+=c;//将加密后的字符串连成字符串
            }
            System.out.println(str+" 加密后为: "+string);
        }
        public static void Decrypt(String str,int n){//解密
            int k=Integer.parseInt("-"+n);
            String string="";
            for (int i = 0; i < str.length(); i++) {
                char c=str.charAt(i);
                if(c>='a'&&c<='z'){//如果字符串中的某个字符是小写字母
                    c+=k%26;//移动key%26;
                    if(c<'a')
                        c+=26;
                    if(c>'z')
                        c-=26;
    
                }else if(c>='A'&&c<='Z'){//如果字符串中的某个字符是大写字母
                    c+=k%26;//移动key%26;
                    if(c<'A')
                        c+=26;
                    if(c>'Z')
                        c-=26;
                }
                string+=c;//将解密后的字符串连成字符串
            }
            System.out.println(str+" 加密后为: "+string);
        }
    
    }
    
    • 问题2: 在java中如何接受数据:
    • 问题2解决方案:
      首先构造一个数据缓冲数组,该数组用于存储接收的服务器端反馈数据,该数组的长度必须大于或等于服务器端反馈的实际有效数据的长度。然后以该缓冲数组为基础构造一个DatagramPacket数据包对象,最后调用连接对象的receive方法接收数据即可。接收到的服务器端反馈数据存储在DatagramPacket类型的对象内部。

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

    • 问题1:对文件的操作感觉有好多地方都不太懂。
    • 问题1解决方案:复习了一下这部分的内容,然后还看了视频,感觉还是得多看书。

    代码托管

    上周考试错题总结

    上周的考试在画图的那个题感觉不太会,提醒我该认真看基础知识。

    结对及互评

    评分标准

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

      • 不使用Markdown不加分
      • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
      • 排版混乱的不加分
    2. 模板中的要素齐全(加1分)

      • 缺少“教材学习中的问题和解决过程”的不加分
      • 缺少“代码调试中的问题和解决过程”的不加分
      • 代码托管不能打开的不加分
      • 缺少“结对及互评”的不能打开的不加分
      • 缺少“上周考试错题总结”的不能加分
      • 缺少“进度条”的不能加分
      • 缺少“参考资料”的不能加分
    3. 教材学习中的问题和解决过程, 一个问题加1分

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

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

      • 一周提交次数少于20次的不加分
    6. 其他加分:

      • 周五前发博客的加1分
      • 感想,体会不假大空的加1分
      • 排版精美的加一分
      • 进度条中记录学习时间与改进情况的加1分
      • 有动手写新代码的加1分
      • 课后选择题有验证的加1分
      • 代码Commit Message规范的加1分
      • 错题学习深入的加1分
      • 点评认真,能指出博客和代码中的问题的加1分
      • 结对学习情况真实可信的加1分
    7. 扣分:

      • 有抄袭的扣至0分
      • 代码作弊的扣至0分
      • 迟交作业的扣至0分

    点评模板:

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

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

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

    • 参考示例

    点评过的同学博客和代码

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

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 15/15 1/4 12/12
    第二周 140/155 1/5 18/30
    第三周 677/817 1/ 6 20/50
    第四周 583/1400 1/7 20/70
    第五周 540/1940 1/8 22/92
    第六周 362/2302 1/9 13/105
    第七周 851/3152 2/10 13/120
    第八周 851/3458 1/11 10/130
    第九周 257/3715 1/12 10/140
    第十周 433/4148 1/13 12/142
    • 计划学习时间:10小时

    • 实际学习时间:12小时

    • 改进情况:

    参考资料

  • 相关阅读:
    2017ecjtu-summer training # 9 HDU 4544
    2017ecjtu-summer training #6 Gym 100952D
    HDU 1241 DFS
    集训队选拔赛 day4
    Educational Codeforces Round 67 (Rated for Div. 2)
    Codeforces Round #566 (Div. 2)
    Codeforces Round #567 (Div. 2)
    Codeforces Round #568 (Div. 2)
    Codeforces Round #569 (Div. 2)
    牛客练习赛48
  • 原文地址:https://www.cnblogs.com/xzh1996/p/6790594.html
Copyright © 2011-2022 走看看