实验九 异常、断言与日志

实验时间 2018-10-25

1、实验目的与要求

(1) 掌握java异常处理技术;

(2) 了解断言的用法;

(3) 了解日志的用途;

(4) 掌握程序基础调试技巧;

2、实验内容和步骤

实验1:用命令行与IDE两种环境下编辑调试运行源程序ExceptionDemo1、ExceptionDemo2,结合程序运行结果理解程序,掌握未检查异常和已检查异常的区别。

//异常示例1

public class ExceptionDemo1 {

public static void main(String args[]) {

int a = 0;

System.out.println(5 / a);

}

}

//异常示例2

import java.io.*;

public class ExceptionDemo2 {

public static void main(String args[])

{

FileInputStream fis=new FileInputStream("text.txt");//JVM自动生成异常对象

int b;

while((b=fis.read())!=-1)

{

System.out.print(b);

}

fis.close();

}

}

 示例的更改思路与相应代码:

异常示例1:

增加判断分母是否为零的语句:

异常示例2:

更改思路

1. throws IOException :使用该语句抛出异常

2.try/catch语句块:捕获异常

3.将字节流改为字符流,读取文件内容

更改后代码:

  1. package shiyan9;
  2.  
  3. import java.io.*;
  4. import java.io.BufferedReader;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.IOException;
  8. import java.io.InputStreamReader;
  9.  
  10. public class ExceptionDemo2 {
  11. public static void main(String args[]) throws IOException
  12. {
  13. try {
  14.  
  15. File file = new File("text.txt");
  16. FileInputStream fis = new FileInputStream(file);
  17. BufferedReader in = new BufferedReader(new InputStreamReader(fis));
  18. String b;
  19. while((b=in.readLine())!=null)
  20. {
  21. System.out.print(b);
  22. }
  23. fis.close();
  24. }catch (Exception e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }

ExceptionDemo2

实验2 导入以下示例程序,测试程序并进行代码注释。

测试程序1:

l 在elipse IDE中编辑、编译、调试运行教材281页7-1,结合程序运行结果理解程序;

l 在程序中相关代码处添加新知识的注释;

l 掌握Throwable类的堆栈跟踪方法;

  1. package stackTrace;
  2.  
  3. import java.util.*;
  4.  
  5. /**
  6. * A program that displays a trace feature of a recursive method call.
  7. * @version 1.01 2004-05-10
  8. * @author Cay Horstmann
  9. */
  10. public class StackTraceTest
  11. {
  12. /**
  13. * Computes the factorial of a number
  14. * @param n a non-negative integer
  15. * @return n! = 1 * 2 * . . . * n
  16. */
  17. public static int factorial(int n)
  18. {
  19. System.out.println("factorial(" + n + "):");
  20. Throwable t = new Throwable();
  21. StackTraceElement[] frames = t.getStackTrace();
  22. for (StackTraceElement f : frames)
  23. System.out.println(f);
  24. int r;
  25. if (n <= 1) r = 1;
  26. else r = n * factorial(n - 1);
  27. System.out.println("return " + r);
  28. return r;
  29. }
  30.  
  31. public static void main(String[] args)
  32. {
  33. Scanner in = new Scanner(System.in);
  34. System.out.print("Enter n: ");
  35. int n = in.nextInt();
  36. factorial(n);
  37. }
  38. }

StackTraceTest

运行结果:

测试程序2:

l Java语言的异常处理有积极处理方法和消极处理两种方式;

l 下列两个简答程序范例给出了两种异常处理的代码格式。在elipse IDE中编辑、调试运行源程序ExceptionalTest.java,将程序中的text文件更换为身份证号.txt,要求将文件内容读入内容,并在控制台显示;

l 掌握两种异常处理技术的特点。

//积极处理方式  

import java.io.*;

class ExceptionTest {

public static void main (string args[])

{

try{

FileInputStream fis=new FileInputStream("text.txt");

}

catch(FileNotFoundExcption e)

{   ……  }

……

}

}

//消极处理方式

import java.io.*;

class ExceptionTest {

public static void main (string args[]) throws  FileNotFoundExcption

{

FileInputStream fis=new FileInputStream("text.txt");

}

}

积极的:

  1. package demo;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8.  
  9. public class ExceptionTest {
  10. public static void main(String[] args) throws IOException {
  11. try {
  12. FileInputStream fis = new FileInputStream("身份证号.txt");
  13. BufferedReader in = new BufferedReader(new InputStreamReader(fis));
  14. String m, n = new String();
  15. while ((m = in.readLine()) != null) {
  16. n += m + "\n ";
  17. }
  18. in.close();
  19. System.out.println(n);
  20.  
  21. } catch (FileNotFoundException e) {
  22. System.out.println("学生信息文件找不到");
  23. e.printStackTrace();
  24. } catch (IOException e) {
  25. System.out.println("学生信息文件读取错误");
  26. e.printStackTrace();
  27. }
  28. }
  29. }

ExceptionTest

消极的:

  1. package demo;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7.  
  8. public class ExceptionTest {
  9. public static void main(String[] args) throws IOException {
  10. FileInputStream fis = new FileInputStream("身份证号.txt");
  11. BufferedReader in = new BufferedReader(new InputStreamReader(fis));
  12. String m, n = new String();
  13. while ((m = in.readLine()) != null) {
  14. n += m + "\n ";
  15. }
  16. in.close();
  17. System.out.println(n);
  18. }
  19. }

ExceptionTest

运行结果:

实验3: 编程练习

练习1:

l 编制一个程序,将身份证号.txt 中的信息读入到内存中;

l 按姓名字典序输出人员信息;

l 查询最大年龄的人员信息;

l 查询最小年龄人员信息;

l 输入你的年龄,查询身份证号.txt中年龄与你最近人的姓名、身份证号、年龄、性别和出生地;

l 查询人员中是否有你的同乡;

l 在以上程序适当位置加入异常捕获代码。

代码:

  1. package shen;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.IOException;
  8. import java.io.InputStreamReader;
  9. import java.util.ArrayList;
  10. import java.util.Arrays;
  11. import java.util.Collections;
  12. import java.util.Scanner;
  13.  
  14. public class Main {
  15. private static ArrayList<Student> studentlist;
  16.  
  17. public static void main(String[] args) {
  18. studentlist = new ArrayList<>();
  19. Scanner scanner = new Scanner(System.in);
  20. File file = new File("C:\\Users\\ASUS\\Desktop\\新建文件夹\\身份证号.txt");
  21. try {
  22. FileInputStream fis = new FileInputStream(file);
  23. BufferedReader in = new BufferedReader(new InputStreamReader(fis));
  24. String temp = null;
  25. while ((temp = in.readLine()) != null) {
  26.  
  27. Scanner linescanner = new Scanner(temp);
  28.  
  29. linescanner.useDelimiter(" ");
  30. String name = linescanner.next();
  31. String number = linescanner.next();
  32. String sex = linescanner.next();
  33. String age = linescanner.next();
  34. String province = linescanner.nextLine();
  35. Student student = new Student();
  36. student.setName(name);
  37. student.setnumber(number);
  38. student.setsex(sex);
  39. int a = Integer.parseInt(age);
  40. student.setage(a);
  41. student.setprovince(province);
  42. studentlist.add(student);
  43.  
  44. }
  45. } catch (FileNotFoundException e) {
  46. System.out.println("学生信息文件找不到");
  47. e.printStackTrace();
  48. //加入的捕获异常代码
  49. } catch (IOException e) {
  50. System.out.println("学生信息文件读取错误");
  51. e.printStackTrace();
  52. //加入的捕获异常代码
  53. }
  54. boolean isTrue = true;
  55. while (isTrue) {
  56. System.out.println("选择你的操作,输入正确格式的选项");
  57. System.out.println("A.字典排序");
  58. System.out.println("B.输出年龄最大和年龄最小的人");
  59. System.out.println("C.寻找老乡");
  60. System.out.println("D.寻找年龄相近的人");
  61. System.out.println("F.退出");
  62. String m = scanner.next();
  63. switch (m) {
  64. case "A":
  65. Collections.sort(studentlist);
  66. System.out.println(studentlist.toString());
  67. break;
  68. case "B":
  69. int max = 0, min = 100;
  70. int j, k1 = 0, k2 = 0;
  71. for (int i = 1; i < studentlist.size(); i++) {
  72. j = studentlist.get(i).getage();
  73. if (j > max) {
  74. max = j;
  75. k1 = i;
  76. }
  77. if (j < min) {
  78. min = j;
  79. k2 = i;
  80. }
  81.  
  82. }
  83. System.out.println("年龄最大:" + studentlist.get(k1));
  84. System.out.println("年龄最小:" + studentlist.get(k2));
  85. break;
  86. case "C":
  87. System.out.println("老家?");
  88. String find = scanner.next();
  89. String place = find.substring(0, 3);
  90. for (int i = 0; i < studentlist.size(); i++) {
  91. if (studentlist.get(i).getprovince().substring(1, 4).equals(place))
  92. System.out.println("老乡" + studentlist.get(i));
  93. }
  94. break;
  95.  
  96. case "D":
  97. System.out.println("年龄:");
  98. int yourage = scanner.nextInt();
  99. int near = agenear(yourage);
  100. int value = yourage - studentlist.get(near).getage();
  101. System.out.println("" + studentlist.get(near));
  102. break;
  103. case "F":
  104. isTrue = false;
  105. System.out.println("退出程序!");
  106. break;
  107. default:
  108. System.out.println("输入有误");
  109.  
  110. }
  111. }
  112. }
  113.  
  114. public static int agenear(int age) {
  115. int j = 0, min = 53, value = 0, k = 0;
  116. for (int i = 0; i < studentlist.size(); i++) {
  117. value = studentlist.get(i).getage() - age;
  118. if (value < 0)
  119. value = -value;
  120. if (value < min) {
  121. min = value;
  122. k = i;
  123. }
  124. }
  125. return k;
  126. }
  127.  
  128. }

Main

  1. ackage shen;
  2.  
  3. public class Student implements Comparable<Student> {
  4.  
  5. private String name;
  6. private String number ;
  7. private String sex ;
  8. private int age;
  9. private String province;
  10.  
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public String getnumber() {
  18. return number;
  19. }
  20. public void setnumber(String number) {
  21. this.number = number;
  22. }
  23. public String getsex() {
  24. return sex ;
  25. }
  26. public void setsex(String sex ) {
  27. this.sex =sex ;
  28. }
  29. public int getage() {
  30.  
  31. return age;
  32. }
  33. public void setage(int age) {
  34. // int a = Integer.parseInt(age);
  35. this.age= age;
  36. }
  37.  
  38. public String getprovince() {
  39. return province;
  40. }
  41. public void setprovince(String province) {
  42. this.province=province ;
  43. }
  44.  
  45. public int compareTo(Student o) {
  46. return this.name.compareTo(o.getName());
  47. }
  48.  
  49. public String toString() {
  50. return name+"\t"+sex+"\t"+age+"\t"+number+"\t"+province+"\n";
  51. }
  52. }

Student

注:以下实验课后完成

练习2:

l 编写一个计算器类,可以完成加、减、乘、除的操作;

l 利用计算机类,设计一个小学生100以内数的四则运算练习程序,由计算机随机产生10道加减乘除练习题,学生输入答案,由程序检查答案是否正确,每道题正确计10分,错误不计分,10道题测试结束后给出测试总分;

l 将程序中测试练习题及学生答题结果输出到文件,文件名为test.txt;

l 在以上程序适当位置加入异常捕获代码。

代码:

  1. package demo;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.PrintWriter;
  5. import java.util.Random;
  6. import java.util.Scanner;
  7.  
  8. public class demo {
  9. public static void main(String[] args) {
  10.  
  11. Scanner in = new Scanner(System.in);
  12. yunsuan counter = new yunsuan();
  13. PrintWriter out = null;
  14. try {
  15. out = new PrintWriter("text.txt");
  16. } catch (FileNotFoundException e) {
  17. // TODO Auto-generated catch block
  18. e.printStackTrace();
  19. }
  20. int sum = 0;
  21. System.out.println("随机生成的四则运算类型");
  22. System.out.println("类型1:除法");
  23. System.out.println("类型2:乘法");
  24. System.out.println("类型3:加法");
  25. System.out.println("类型4:减法");
  26.  
  27. for (int i = 1; i <= 10; i++) {
  28. int a = (int) Math.round(Math.random() * 100);
  29. int b = (int) Math.round(Math.random() * 100);
  30. int m;
  31. Random rand = new Random();
  32. m = (int) rand.nextInt(4) + 1;
  33. System.out.println("随机生成的四则运算类型:"+m);
  34.  
  35. switch (m) {
  36. case 1:
  37. System.out.println(i + ": " + a + "/" + b + "=");
  38.  
  39. while (b == 0) {
  40. b = (int) Math.round(Math.random() * 100);
  41. }
  42.  
  43. double c0 = in.nextDouble();
  44. out.println(a + "/" + b + "=" + c0);
  45. if (c0 == counter.division(a, b)) {
  46. sum += 10;
  47. System.out.println("right!");
  48. } else {
  49. System.out.println("error!");
  50. }
  51.  
  52. break;
  53.  
  54. case 2:
  55. System.out.println(i + ": " + a + "*" + b + "=");
  56. int c = in.nextInt();
  57. out.println(a + "*" + b + "=" + c);
  58. if (c == counter.multiplication(a, b)) {
  59. sum += 10;
  60. System.out.println("right!");
  61. } else {
  62. System.out.println("error!");
  63. }
  64. break;
  65. case 3:
  66. System.out.println(i + ": " + a + "+" + b + "=");
  67. int c1 = in.nextInt();
  68. out.println(a + "+" + b + "=" + c1);
  69. if (c1 == counter.add(a, b)) {
  70. sum += 10;
  71. System.out.println("right!");
  72. } else {
  73. System.out.println("error!");
  74. }
  75. break;
  76. case 4:
  77. System.out.println(i + ": " + a + "-" + b + "=");
  78. int c2 = in.nextInt();
  79. out.println(a + "-" + b + "=" + c2);
  80. if (c2 == counter.reduce(a, b)) {
  81. sum += 10;
  82. System.out.println("right!");
  83. } else {
  84. System.out.println("error!");
  85. }
  86. break;
  87. }
  88. }
  89. System.out.println("成绩" + sum);
  90. out.println("成绩:" + sum);
  91. out.close();
  92. }
  93. }

demo

  1. packagedemo;publicclassyunsuan{privateinta;privateintb;publicintadd(inta,intb){returna+b;}publicintreduce(inta,intb){returna-b;}publicintmultiplication(inta,intb){returna*b;}publicintdivision(inta,intb){if(b!=0)returna/b;elsereturn0;}}

yunsuan

运行结果:

实验4:断言、日志、程序调试技巧验证实验。

实验程序1:

//断言程序示例

public class AssertDemo {

    public static void main(String[] args) {        

        test1(-5);

        test2(-3);

    }

    

    private static void test1(int a){

        assert a > 0;

        System.out.println(a);

    }

    private static void test2(int a){

       assert a > 0 : "something goes wrong here, a cannot be less than 0";

        System.out.println(a);

    }

}

l 在elipse下调试程序AssertDemo,结合程序运行结果理解程序;

l 注释语句test1(-5);后重新运行程序,结合程序运行结果理解程序;

l 掌握断言的使用特点及用法。

实验程序2:

l 用JDK命令调试运行教材298页-300页程序7-2,结合程序运行结果理解程序;

l 并掌握Java日志系统的用途及用法。

  1. package logging;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import java.io.*;
  6. import java.util.logging.*;
  7. import javax.swing.*;
  8.  
  9. /**
  10. * A modification of the image viewer program that logs various events.
  11. * @version 1.03 2015-08-20
  12. * @author Cay Horstmann
  13. */
  14. public class LoggingImageViewer
  15. {
  16. public static void main(String[] args)
  17. {
  18. if (System.getProperty("java.util.logging.config.class") == null
  19. && System.getProperty("java.util.logging.config.file") == null)
  20. {
  21. try
  22. {
  23. Logger.getLogger("com.horstmann.corejava").setLevel(Level.ALL);
  24. final int LOG_ROTATION_COUNT = 10;
  25. Handler handler = new FileHandler("%h/LoggingImageViewer.log", 0, LOG_ROTATION_COUNT);
  26. Logger.getLogger("com.horstmann.corejava").addHandler(handler);
  27. }
  28. catch (IOException e)
  29. {
  30. Logger.getLogger("com.horstmann.corejava").log(Level.SEVERE,
  31. "Can't create log file handler", e);
  32. }
  33. }
  34.  
  35. EventQueue.invokeLater(() ->
  36. {
  37. Handler windowHandler = new WindowHandler();
  38. windowHandler.setLevel(Level.ALL);
  39. Logger.getLogger("com.horstmann.corejava").addHandler(windowHandler);
  40.  
  41. JFrame frame = new ImageViewerFrame();
  42. frame.setTitle("LoggingImageViewer");
  43. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  44.  
  45. Logger.getLogger("com.horstmann.corejava").fine("Showing frame");
  46. frame.setVisible(true);
  47. });
  48. }
  49. }
  50.  
  51. /**
  52. * The frame that shows the image.
  53. */
  54. class ImageViewerFrame extends JFrame
  55. {
  56. private static final int DEFAULT_WIDTH = 300;
  57. private static final int DEFAULT_HEIGHT = 400;
  58.  
  59. private JLabel label;
  60. private static Logger logger = Logger.getLogger("com.horstmann.corejava");
  61.  
  62. public ImageViewerFrame()
  63. {
  64. logger.entering("ImageViewerFrame", "<init>");
  65. setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
  66.  
  67. // set up menu bar
  68. JMenuBar menuBar = new JMenuBar();
  69. setJMenuBar(menuBar);
  70.  
  71. JMenu menu = new JMenu("File");
  72. menuBar.add(menu);
  73.  
  74. JMenuItem openItem = new JMenuItem("Open");
  75. menu.add(openItem);
  76. openItem.addActionListener(new FileOpenListener());
  77.  
  78. JMenuItem exitItem = new JMenuItem("Exit");
  79. menu.add(exitItem);
  80. exitItem.addActionListener(new ActionListener()
  81. {
  82. public void actionPerformed(ActionEvent event)
  83. {
  84. logger.fine("Exiting.");
  85. System.exit(0);
  86. }
  87. });
  88.  
  89. // use a label to display the images
  90. label = new JLabel();
  91. add(label);
  92. logger.exiting("ImageViewerFrame", "<init>");
  93. }
  94.  
  95. private class FileOpenListener implements ActionListener
  96. {
  97. public void actionPerformed(ActionEvent event)
  98. {
  99. logger.entering("ImageViewerFrame.FileOpenListener", "actionPerformed", event);
  100.  
  101. // set up file chooser
  102. JFileChooser chooser = new JFileChooser();
  103. chooser.setCurrentDirectory(new File("."));
  104.  
  105. // accept all files ending with .gif
  106. chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
  107. {
  108. public boolean accept(File f)
  109. {
  110. return f.getName().toLowerCase().endsWith(".gif") || f.isDirectory();
  111. }
  112.  
  113. public String getDescription()
  114. {
  115. return "GIF Images";
  116. }
  117. });
  118.  
  119. // show file chooser dialog
  120. int r = chooser.showOpenDialog(ImageViewerFrame.this);
  121.  
  122. // if image file accepted, set it as icon of the label
  123. if (r == JFileChooser.APPROVE_OPTION)
  124. {
  125. String name = chooser.getSelectedFile().getPath();
  126. logger.log(Level.FINE, "Reading file {0}", name);
  127. label.setIcon(new ImageIcon(name));
  128. }
  129. else logger.fine("File open dialog canceled.");
  130. logger.exiting("ImageViewerFrame.FileOpenListener", "actionPerformed");
  131. }
  132. }
  133. }
  134.  
  135. /**
  136. * A handler for displaying log records in a window.
  137. */
  138. class WindowHandler extends StreamHandler
  139. {
  140. private JFrame frame;
  141.  
  142. public WindowHandler()
  143. {
  144. frame = new JFrame();
  145. final JTextArea output = new JTextArea();
  146. output.setEditable(false);
  147. frame.setSize(200, 200);
  148. frame.add(new JScrollPane(output));
  149. frame.setFocusableWindowState(false);
  150. frame.setVisible(true);
  151. setOutputStream(new OutputStream()
  152. {
  153. public void write(int b)
  154. {
  155. } // not called
  156.  
  157. public void write(byte[] b, int off, int len)
  158. {
  159. output.append(new String(b, off, len));
  160. }
  161. });
  162. }
  163.  
  164. public void publish(LogRecord record)
  165. {
  166. if (!frame.isVisible()) return;
  167. super.publish(record);
  168. flush();
  169. }
  170. }

LoggingImageViewer

运行结果:

按课件66-77内容练习并掌握Elipse的常用调试技术

1)条件断点

2)变量断点

3)方法断点

4)异常断点

5)重新调试

6)单步执行程序

7)检查变量

8)改变变量值

学习总结:

1. 处理错误

程序中常见的几类错误:

(1)用户输入错误

(2)设备错误

(3)物理限制

(4)代码错误

异常:

在程序执行的过程中所发生的异常事件,它中断指令的正常执行。

异常分类:

(1)非致命异常和致命异常

(2)在java中,异常对象都派生于Throwable类的一个实例。

(3)所有的异常类由Throwable继承而来,分为Error类和Exception类(重点学习)

(4)Exception类中的RuntimeException为运行时异常类,一般由程序错误产生。派生于Error类或RuntimeException类的所有异常被称为未检查异常,编译器允许不对这些异常进行处理

(5)声明抛出异常:throws语句

(6)捕获异常:try、catch、finally块

Try语句:括住可能抛出异常的代码段

Catch语句:指明要捕获的异常及相应的处理代码

Finally语句:必须执行的程序块

断言:是程序的开发和测试阶段用于插入一些代码错误检测语句的工具。

断言(assert)语法如下:

1、assert 条件

或者

2、assert 条件:表达式

这两个形式都会对布尔“条件”进行判断,如果判断结果为假(false),说明程序已经处于不正确的状态下,系统则抛出AssertionError,给出警告并且退出。在第二种形式中,“表达式”会传入AssertionError的构造函数中并转成一个消息字符

日志和调试

调试技术:

按课件66-77内容练习并掌握Elipse的常用调试技术。

感受:

通过这个周的学习,我了解了异常的概念,以及异常的分类,掌握了异常的捕获和处理办法等。在课下的学习中,我初步学习了断言和java调试技术,但还是有很多不懂的地方,希望老师能仔细讲解。

王颖奇 20171010129《面向对象程序设计(java)》第九周学习总结的更多相关文章

  1. 20155312 2016-2017-2 《Java程序设计》第九周学习总结

    20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...

  2. 20155321 2016-2017-2 《Java程序设计》第九周学习总结

    20155321 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 厂商在实现JDBC驱动程序时,依方式可将驱动程序分为四种类型: JDBC-OD ...

  3. 20145302张薇《Java程序设计》第九周学习总结

    20145302 <Java程序设计>第九周学习总结 教材学习内容总结 第十六周 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC目的:让Jav ...

  4. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  8. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  9. 201521123061 《Java程序设计》第九周学习总结

    201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...

  10. 201521123038 《Java程序设计》 第九周学习总结

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

随机推荐

  1. Simple Chat Application for Python

    一.知识点介绍: asyncore .asynchat模块使用 由于 Python 是一门带 GIL 的语言,所以在 Python 中使用多线程处理IO操作过多的任务并不是很好的选择.同时聊天服务器将 ...

  2. Python 开发工具推荐

    对于开发工具,仁者见仁智者见智,关键是自己喜欢,用着顺手就好,不用刻意去追求别人用的是什么工具. 这里给大家主要推荐三款工具,分别是PyCharm.Sublime Text 3.VS Code,因为这 ...

  3. mysql中show status介绍一

    公司产品运用到mysql集群,集群遇到问题时,需要查看集群状态,使用到命令show status,今天趁机将show status中的各个变量的含义研究一下. 状态名 作用域 详细解释 Aborted ...

  4. Windows安装Tesseract-OCR 4.00并配置环境变量

    一.前言 Tesseract-OCR 是一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎.与Microsoft O ...

  5. NCTF2019 小部分题解

    前言 礼拜五领航杯打的比较累,做不出WEB,D3CTF没用,做了NJCTF的一些题目(懒,睡觉到12点起) Misc 第一次比赛先去做misc,以前一直做WEB,以后要WEB+MISC做.礼拜六下午做 ...

  6. SpringMVC转发及重定向

    基础环境搭建请参考SringMVC入门程序 1:springmvc-servlet.xml <?xml version="1.0" encoding="UTF-8& ...

  7. s3fs-fuse 把 s3-like 对象存储挂载到本地

    s3fs-fuse 是一个采用 c++

  8. django基础(一) - 安装和配置文件

    django介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C. <div style='color: red'> ...

  9. pytorch GPU训练好的模型使用CPU加载

    torch.load('tensors.pt') # 把所有的张量加载到CPU中 torch.load('tensors.pt', map_location=lambda storage, loc: ...

  10. TensorFlow keras卷积神经网络 添加L2正则化

    model = keras.models.Sequential([ #卷积层1 keras.layers.Conv2D(32,kernel_size=5,strides=1,padding=" ...