达拉草201771010105《面向对象程序设计(java)》第九周学习总结
达拉草201771010105《面向对象程序设计(java)》第九周学习总结
实验九异常、断言与日志
实验时间 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(); } } |
代码运行结果如下:
Demo1:
Demo2:
调试以后结果如下:
Demo1:
Demo2:
总结:
已检查异常:编译器不要求强制处置的异常,虽然你有可能出现错误,但是我不会在编译的时候检查。
检查异常:就是编译器要求你必须处置的异常。也就是说,你代码还没运行呢,编译器就会检查你的代码,会不会出现异常,要求你对可能出现的异常必须做出相应的处理。
实验2: 导入以下示例程序,测试程序并进行代码注释。
测试程序1:
l 在elipse IDE中编辑、编译、调试运行教材281页7-1,结合程序运行结果理解程序;
l 在程序中相关代码处添加新知识的注释;
l 掌握Throwable类的堆栈跟踪方法;
代码运行结果如下:
总结:
1.Java中的所有异常都是由Throwable类的子类生成的对象,所有的异常类都是Throwable类的子类或子类的子类。Throwable类是Object类的直接子类,Error类和Exception类是Throwable类的两个直接子类。
测试程序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"); } } |
- //积极处理方式
- import java.io.*;
- import java.io.BufferedReader;
- import java.io.FileReader;
- class ExceptionTest {
- public static void main (String args[])
- {
- File fis=new File("身份证号.txt");
- try {
- FileReader fr = new FileReader(fis);
- BufferedReader br = new BufferedReader(fr);
- try {
- String s, s2 = new String();
- while ((s = br.readLine()) != null) {
- s2 += s + "\n ";
- }
- br.close();
- System.out.println(s2);
- }catch (IOException e) {
- e.printStackTrace();
- }
- }catch(FileNotFoundExcption e)
- {
- e.printStackTrace();
- }
- }
- }
- //消极处理方式
- import java.io.*;
- class ExceptionTest1 {
- public static void main (String args[]) throws IOException
- {
- File fis=new File("身份证号.txt");
- FileReader fr = new FileReader(fis);
- BufferedReader br = new BufferedReader(fr);
- String s, s2 = new String();
- while ((s = br.readLine()) != null)
- {
- s2 += s + "\n ";
- }
- br.close();
- System.out.println(s2);
- }
- }
结果如下:
实验3: 编程练习
练习1:
l 编制一个程序,将身份证号.txt 中的信息读入到内存中;
l 按姓名字典序输出人员信息;
l 查询最大年龄的人员信息;
l 查询最小年龄人员信息;
l 输入你的年龄,查询身份证号.txt中年龄与你最近人的姓名、身份证号、年龄、性别和出生地;
l 查询人员中是否有你的同乡;
l 在以上程序适当位置加入异常捕获代码。
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Scanner;
- public class Moom{
- private static ArrayList<Mest> studentlist;
- public static void main(String[] args) {
- studentlist = new ArrayList<>();
- Scanner scanner = new Scanner(System.in);
- File file = new File("D:\\身份证号.txt");
- try {
- FileInputStream fis = new FileInputStream(file);
- BufferedReader in = new BufferedReader(new InputStreamReader(fis));
- String temp = null;
- while ((temp = in.readLine()) != null) {
- Scanner linescanner = new Scanner(temp);
- linescanner.useDelimiter(" ");
- String name = linescanner.next();
- String number = linescanner.next();
- String sex = linescanner.next();
- String age = linescanner.next();
- String province =linescanner.nextLine();
- Mest student = new Mest();
- student.setName(name);
- student.setnumber(number);
- student.setsex(sex);
- int a = Integer.parseInt(age);
- student.setage(a);
- student.setprovince(province);
- studentlist.add(student);
- }
- } catch (FileNotFoundException e) {
- System.out.println("学生信息文件找不到");
- e.printStackTrace();
- } catch (IOException e) {
- System.out.println("学生信息文件读取错误");
- e.printStackTrace();
- }
- boolean isTrue = true;
- while (isTrue) {
- System.out.println("1:字典排序");
- System.out.println("2:输出年龄最大和年龄最小的人");
- System.out.println("3:寻找老乡");
- System.out.println("4:寻找年龄相近的人");
- System.out.println("5:退出");
- String m = scanner.next();
- switch (m) {
- case "1":
- Collections.sort(studentlist);
- System.out.println(studentlist.toString());
- break;
- case "2":
- int max=0,min=100;
- int j,k1 = 0,k2=0;
- for(int i=1;i<studentlist.size();i++)
- {
- j=studentlist.get(i).getage();
- if(j>max)
- {
- max=j;
- k1=i;
- }
- if(j<min)
- {
- min=j;
- k2=i;
- }
- }
- System.out.println("年龄最大:"+studentlist.get(k1));
- System.out.println("年龄最小:"+studentlist.get(k2));
- break;
- case "3":
- System.out.println("家庭住址:");
- String find = scanner.next();
- String place=find.substring(0,3);
- for (int i = 0; i <studentlist.size(); i++)
- {
- if(studentlist.get(i).getprovince().substring(1,4).equals(place))
- System.out.println("province"+studentlist.get(i));
- }
- break;
- case "4":
- System.out.println("年龄:");
- int yourage = scanner.nextInt();
- int near=agematched(yourage);
- int value=yourage-studentlist.get(near).getage();
- System.out.println(""+studentlist.get(near));
- break;
- case "5":
- isTrue = false;
- System.out.println("退出程序!");
- break;
- default:
- System.out.println("输入错误");
- }
- }
- }
- public static int agematched(int age) {
- int j=0,min=53,value=0,k=0;
- for (int i = 0; i < studentlist.size(); i++)
- {
- value=studentlist.get(i).getage()-age;
- if(value<0) value=-value;
- if (value<min)
- {
- min=value;
- k=i;
- }
- }
- return k;
- }
- }
- public class Mest implements Comparable<Mest> {
- private String name;
- private String number ;
- private String sex ;
- private int age;
- private String province;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getnumber() {
- return number;
- }
- public void setnumber(String number) {
- this.number = number;
- }
- public String getsex() {
- return sex ;
- }
- public void setsex(String sex ) {
- this.sex =sex ;
- }
- public int getage() {
- return age;
- }
- public void setage(int age) {
- this.age= age;
- }
- public String getprovince() {
- return province;
- }
- public void setprovince(String province) {
- this.province=province ;
- }
- public int compareTo(Mest o) {
- return this.name.compareTo(o.getName());
- }
- public String toString() {
- return name+"\t"+sex+"\t"+age+"\t"+number+"\t"+province+"\n";
- }
- }
结果如下:
注:以下实验课后完成
练习2:
l 编写一个计算器类,可以完成加、减、乘、除的操作;
l 利用计算机类,设计一个小学生100以内数的四则运算练习程序,由计算机随机产生10道加减乘除练习题,学生输入答案,由程序检查答案是否正确,每道题正确计10分,错误不计分,10道题测试结束后给出测试总分;
l 将程序中测试练习题及学生答题结果输出到文件,文件名为test.txt;
l 在以上程序适当位置加入异常捕获代码。
- package MM;
- import java.util.Random;
- import java.util.Scanner;
- import java.io.FileNotFoundException;
- import java.io.PrintWriter;
- public class Demo{
- public static void main(String[] args)
- {
- MNM counter=new MNM();//与其它类建立联系
- PrintWriter out=null;
- try {
- out=new PrintWriter("D:/text.txt");
- }catch(FileNotFoundException e) {
- e.printStackTrace();
- }
- int sum=0;
- for(int i=0;i<10;i++)
- {
- int a=new Random().nextInt(100);
- int b=new Random().nextInt(100);
- Scanner in=new Scanner(System.in);
- //in.close();
- switch((int)(Math.random()*4))
- {
- case 0:
- System.out.println( ""+a+"+"+b+"=");
- int M = in.nextInt();
- out.println(a+"+"+b+"="+M);
- if (M == counter.add(a, b)) {
- sum += 10;
- System.out.println("答案正确");
- }
- else {
- System.out.println("答案错误");
- }
- break ;
- case 1:
- if(a<b)
- {
- int temp=a;
- a=b;
- b=temp;
- }//为避免减数比被减数大的情况
- System.out.println(""+a+"-"+b+"=");
- /*while((a-b)<0)
- {
- b = (int) Math.round(Math.random() * 100);
- }*/
- int N= in.nextInt();
- out.println(a+"-"+b+"="+N);
- if (N == counter.reduce(a, b)) {
- sum += 10;
- System.out.println("答案正确");
- }
- else {
- System.out.println("答案错误");
- }
- break ;
- case 2:
- System.out.println(""+a+"*"+b+"=");
- int c = in.nextInt();
- out.println(a+"*"+b+"="+c);
- if (c == counter.multiply(a, b)) {
- sum += 10;
- System.out.println("答案正确");
- }
- else {
- System.out.println("答案错误");
- }
- break;
- case 3:
- System.out.println(""+a+"/"+b+"=");
- while(b==0)
- { b = (int) Math.round(Math.random() * 100);
- }
- int c0= in.nextInt();
- out.println(a+"/"+b+"="+c0);
- if (c0 == counter.devision(a, b)) {
- sum += 10;
- System.out.println("答案正确");
- }
- else {
- System.out.println("答案错误");
- }
- break;
- }
- }
- System.out.println("totlescore:"+sum);
- out.println(sum);
- out.close();
- }
- }
- package MM;
- public class MNM{
- public int add(int a,int b)
- {
- return a+b;
- }
- public int reduce(int a,int b)
- {
- if((a-b)>0)
- return a-b;
- else return 0;
- }
- public int multiply(int a,int b)
- {
- return a*b;
- }
- public int devision(int a,int b)
- {
- if(b!=0)
- return a/b;
- else return 0;
- }
- }
运行结果如下:
实验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 掌握断言的使用特点及用法。
程序运行结果如下:
注释语句test1(-5);后重新运行程序,结果如下:
总结:
java中使用assert关键字实现断言,java中断言是在运行时候开启。
实验程序2:
l 用JDK命令调试运行教材298页-300页程序7-2,结合程序运行结果理解程序;
l 并掌握Java日志系统的用途及用法。
- package logging;
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- import java.util.logging.*;
- import javax.swing.*;
- /**
- * A modification of the image viewer program that logs various events.
- * @version 1.03 2015-08-20
- * @author Cay Horstmann
- */
- public class LoggingImageViewer
- {
- public static void main(String[] args)
- {
- if (System.getProperty("java.util.logging.config.class") == null
- && System.getProperty("java.util.logging.config.file") == null)
- {
- try
- {
- Logger.getLogger("com.horstmann.corejava").setLevel(Level.ALL);
- final int LOG_ROTATION_COUNT = 10;
- Handler handler = new FileHandler("%h/LoggingImageViewer.log", 0, LOG_ROTATION_COUNT);
- Logger.getLogger("com.horstmann.corejava").addHandler(handler);
- }
- catch (IOException e)
- {
- Logger.getLogger("com.horstmann.corejava").log(Level.SEVERE,
- "Can't create log file handler", e);
- }
- }
- EventQueue.invokeLater(() ->
- {
- Handler windowHandler = new WindowHandler();
- windowHandler.setLevel(Level.ALL);
- Logger.getLogger("com.horstmann.corejava").addHandler(windowHandler);
- JFrame frame = new ImageViewerFrame();
- frame.setTitle("LoggingImageViewer");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- Logger.getLogger("com.horstmann.corejava").fine("Showing frame");
- frame.setVisible(true);
- });
- }
- }
- /**
- * The frame that shows the image.
- */
- class ImageViewerFrame extends JFrame
- {
- private static final int DEFAULT_WIDTH = 300;
- private static final int DEFAULT_HEIGHT = 400;
- private JLabel label;
- private static Logger logger = Logger.getLogger("com.horstmann.corejava");
- public ImageViewerFrame()
- {
- logger.entering("ImageViewerFrame", "<init>");
- setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
- // set up menu bar
- JMenuBar menuBar = new JMenuBar();
- setJMenuBar(menuBar);
- JMenu menu = new JMenu("File");
- menuBar.add(menu);
- JMenuItem openItem = new JMenuItem("Open");
- menu.add(openItem);
- openItem.addActionListener(new FileOpenListener());
- JMenuItem exitItem = new JMenuItem("Exit");
- menu.add(exitItem);
- exitItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event)
- {
- logger.fine("Exiting.");
- System.exit(0);
- }
- });
- // use a label to display the images
- label = new JLabel();
- add(label);
- logger.exiting("ImageViewerFrame", "<init>");
- }
- private class FileOpenListener implements ActionListener
- {
- public void actionPerformed(ActionEvent event)
- {
- logger.entering("ImageViewerFrame.FileOpenListener", "actionPerformed", event);
- // set up file chooser
- JFileChooser chooser = new JFileChooser();
- chooser.setCurrentDirectory(new File("."));
- // accept all files ending with .gif
- chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
- {
- public boolean accept(File f)
- {
- return f.getName().toLowerCase().endsWith(".gif") || f.isDirectory();
- }
- public String getDescription()
- {
- return "GIF Images";
- }
- });
- // show file chooser dialog
- int r = chooser.showOpenDialog(ImageViewerFrame.this);
- // if image file accepted, set it as icon of the label
- if (r == JFileChooser.APPROVE_OPTION)
- {
- String name = chooser.getSelectedFile().getPath();
- logger.log(Level.FINE, "Reading file {0}", name);
- label.setIcon(new ImageIcon(name));
- }
- else logger.fine("File open dialog canceled.");
- logger.exiting("ImageViewerFrame.FileOpenListener", "actionPerformed");
- }
- }
- }
- /**
- * A handler for displaying log records in a window.
- */
- class WindowHandler extends StreamHandler
- {
- private JFrame frame;
- public WindowHandler()
- {
- frame = new JFrame();
- final JTextArea output = new JTextArea();
- output.setEditable(false);
- frame.setSize(200, 200);
- frame.add(new JScrollPane(output));
- frame.setFocusableWindowState(false);
- frame.setVisible(true);
- setOutputStream(new OutputStream()
- {
- public void write(int b)
- {
- } // not called
- public void write(byte[] b, int off, int len)
- {
- output.append(new String(b, off, len));
- }
- });
- }
- public void publish(LogRecord record)
- {
- if (!frame.isVisible()) return;
- super.publish(record);
- flush();
- }
- }
程序运行结果如下:
实验程序3:
用JDK命令调试运行教材298页-300页程序7-2,结合程序运行结果理解程序;
按课件66-77内容练习并掌握Elipse的常用调试技术。
- package logging;
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- import java.util.logging.*;
- import javax.swing.*;
- /**
- * A modification of the image viewer program that logs various events.
- * @version 1.03 2015-08-20
- * @author Cay Horstmann
- */
- public class LoggingImageViewer
- {
- public static void main(String[] args)
- {
- if (System.getProperty("java.util.logging.config.class") == null
- && System.getProperty("java.util.logging.config.file") == null)
- {
- try
- {
- Logger.getLogger("com.horstmann.corejava").setLevel(Level.ALL);
- final int LOG_ROTATION_COUNT = 10;
- Handler handler = new FileHandler("%h/LoggingImageViewer.log", 0, LOG_ROTATION_COUNT);
- Logger.getLogger("com.horstmann.corejava").addHandler(handler);
- }
- catch (IOException e)
- {
- Logger.getLogger("com.horstmann.corejava").log(Level.SEVERE,
- "Can't create log file handler", e);
- }
- }
- EventQueue.invokeLater(() ->
- {
- Handler windowHandler = new WindowHandler();
- windowHandler.setLevel(Level.ALL);
- Logger.getLogger("com.horstmann.corejava").addHandler(windowHandler);
- JFrame frame = new ImageViewerFrame();
- frame.setTitle("LoggingImageViewer");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- Logger.getLogger("com.horstmann.corejava").fine("Showing frame");
- frame.setVisible(true);
- });
- }
- }
- /**
- * The frame that shows the image.
- */
- class ImageViewerFrame extends JFrame
- {
- private static final int DEFAULT_WIDTH = 300;
- private static final int DEFAULT_HEIGHT = 400;
- private JLabel label;
- private static Logger logger = Logger.getLogger("com.horstmann.corejava");
- public ImageViewerFrame()
- {
- logger.entering("ImageViewerFrame", "<init>");
- setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
- // set up menu bar
- JMenuBar menuBar = new JMenuBar();
- setJMenuBar(menuBar);
- JMenu menu = new JMenu("File");
- menuBar.add(menu);
- JMenuItem openItem = new JMenuItem("Open");
- menu.add(openItem);
- openItem.addActionListener(new FileOpenListener());
- JMenuItem exitItem = new JMenuItem("Exit");
- menu.add(exitItem);
- exitItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event)
- {
- logger.fine("Exiting.");
- System.exit(0);
- }
- });
- // use a label to display the images
- label = new JLabel();
- add(label);
- logger.exiting("ImageViewerFrame", "<init>");
- }
- private class FileOpenListener implements ActionListener
- {
- public void actionPerformed(ActionEvent event)
- {
- logger.entering("ImageViewerFrame.FileOpenListener", "actionPerformed", event);
- // set up file chooser
- JFileChooser chooser = new JFileChooser();
- chooser.setCurrentDirectory(new File("."));
- // accept all files ending with .gif
- chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
- {
- public boolean accept(File f)
- {
- return f.getName().toLowerCase().endsWith(".gif") || f.isDirectory();
- }
- public String getDescription()
- {
- return "GIF Images";
- }
- });
- // show file chooser dialog
- int r = chooser.showOpenDialog(ImageViewerFrame.this);
- // if image file accepted, set it as icon of the label
- if (r == JFileChooser.APPROVE_OPTION)
- {
- String name = chooser.getSelectedFile().getPath();
- logger.log(Level.FINE, "Reading file {0}", name);
- label.setIcon(new ImageIcon(name));
- }
- else logger.fine("File open dialog canceled.");
- logger.exiting("ImageViewerFrame.FileOpenListener", "actionPerformed");
- }
- }
- }
- /**
- * A handler for displaying log records in a window.
- */
- class WindowHandler extends StreamHandler
- {
- private JFrame frame;
- public WindowHandler()
- {
- frame = new JFrame();
- final JTextArea output = new JTextArea();
- output.setEditable(false);
- frame.setSize(200, 200);
- frame.add(new JScrollPane(output));
- frame.setFocusableWindowState(false);
- frame.setVisible(true);
- setOutputStream(new OutputStream()
- {
- public void write(int b)
- {
- } // not called
- public void write(byte[] b, int off, int len)
- {
- output.append(new String(b, off, len));
- }
- });
- }
- public void publish(LogRecord record)
- {
- if (!frame.isVisible()) return;
- super.publish(record);
- flush();
- }
- }
MM
实验总结:
这周我们做的是关于异常,断言与日志的实验,通过这次的实验我知道了已检查异常与检查异常的区别。已检查异常是指编译器不要求强制处置的异常,虽然你有可能出现错误,但是我不会在编译的时候检查。而检查异常就是编译器要求你必须处置的异常。也就是说,你代码还没运行呢,编译器就会检查你的代码,会不会出现异常,要求你对可能出现的异常必须做出相应的处理。
达拉草201771010105《面向对象程序设计(java)》第九周学习总结的更多相关文章
- 达拉草201771010105《面向对象程序设计(java)》第三周学习总结
达拉草201771010105«面向对象程序设计(java)»第三周学习总结 第一部分:实验部分 1.实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟 ...
- 达拉草201771010105《面向对象程序设计(java)》第十八周学习总结
达拉草201771010105<面向对象程序设计(java)>第十八周学习总结 实验十八 总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构 ...
- 达拉草201771010105《面向对象程序设计(java)》第十七周学习总结
达拉草201771010105<面向对象程序设计(java)>第十七周学习总结 第一部分:理论知识 1.多线程的概念: (1)多线程是进程执行过程中产生的多条执行线索. (2)多线程意味着 ...
- 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结
达拉草201771010105<面向对象程序设计(java)>第十六周学习总结 第一部分:理论知识 1.程序与进程的概念: (1)程序是一段静态的代码,它是应用程序执行的蓝 本. (2)进 ...
- 达拉草201771010105《面向对象程序设计(java)》第十五周学习总结
达拉草201771010105<面向对象程序设计(java)>第十四周学习总结 第一部分:理论知识 JAR文件: 1.Java程序的打包:程序编译完成后,程序员 将.class文件压缩打包 ...
- 达拉草201771010105《面向对象程序设计(java)》第十四周学习总结
达拉草201771010105<面向对象程序设计(java)>第十四周学习总结 第一部分:理论知识 布局管理器: 布局管理器是一组类. 实现java.awt.LayoutManager接口 ...
- 达拉草201771010105《面向对象程序设计(java)》第十三周学习总结
达拉草201771010105<面向对象程序设计(java)>第十三周学习总结 第一部分:理论知识 事件处理基础: 事件源:能够产生事件的对象都可 以成为事件源,如文本框.按钮等.一个事件 ...
- 达拉草201771010105《面向对象程序设计(java)》第十二周学习总结
达拉草201771010105<面向对象程序设计(java)>第十二周学习总结 第一部分:理论知识 Java的抽象窗口工具箱(AbstractWindow Toolkit,AWT)包含在j ...
- 达拉草201771010105《面向对象程序设计(java)》第十一周学习总结
达拉草201771010105<面向对象程序设计(java)>第十一周学习总结 实验十一 集合 实验时间 2018-11-8 第一部分:理论知识 1.集合(Collection或称为容 ...
随机推荐
- NAIPC2018
NAIPC2018 参考:http://www.cnblogs.com/LQLlulu/p/9513669.html?tdsourcetag=s_pctim_aiomsg https://www.cn ...
- centos 7 安装及配置zabbix agent
一.在被监控主机上设置防火墙,允许zabbix-agent的10050端口通过 二.执行yum list |grep zabbix,找到zabbix的agent安装包并安装 三.在 /etc/zabb ...
- mysql 查询a表在b表中不存在的记录
select * from tbl_user a where(select count(1) as cnt from tbl_order b where a.phone=b.phone)=0
- Ubuntu16.04中Mysql 5.7 安装配置
记录在Ubuntu 16.04安装Mysql 5.7时遇到的一些问题. Mysql安装 使用如下命令进行安装: 1 sudo apt-get install mysql-server mysql-cl ...
- 55)PHP,在html嵌套PHP写法
样例代码:
- macbook安装LightGBM
一开始直接用pip install lightgbm 报错: OSError: dlopen(/opt/anaconda3/lib/python3.7/site-packages/lightgbm/l ...
- yum源本地部署完后网络部署报错
错误信息 已加载插件:fastestmirror Determining fastest mirrors * base: mirrors.aliyun.com * extras: mirrors.al ...
- winform显示word、ppt和pdf,用一个控件显示
思路:都以pdf的格式展示,防止文件拷贝,所以要把word和ppt转换为pdf:展示用第三方组件O2S.Components.PDFView4NET.dll,破解版的下载链接:https://pan. ...
- 透过微软研究院在“数据中心网络”的重大进展看SIGCOMM 2013
2013" title="透过微软研究院在"数据中心网络"的重大进展看SIGCOMM 2013"> 编者按:于8月12日至16日在香港举行的SI ...
- Ribbon XML Editor 2019.01.23-Setup.zip(支持64位)
RibbonXMLEditor是一款用于书写和测试customUI XML代码的国产工具,具有XML验证.Office文档压入.回调函数查询等多种功能. 可作为定制Office自定义界面有关程序开发的 ...