java常用API(2)

1:String

1.1 String(构造方法)

首先,我们先来学习String类,它涉及到两个案例:用户登录和聊天室。

先来看用户登录案例:需要输入用户名和密码,和已知的用户名和密码进行比较,涉及到比较的方法,

一般来说,用户名和密码的长度可能会有一定限制,涉及到获取字符串长度的方法,

再来看聊天室案例,这里输入聊天的内容,然后把聊天内容显示到上面的文本域。

在聊天的时候,可能不小心打了空格,我们不需要的,需要去掉前后空格,

下面,我们就来学习一下字符串类String,最后完成用户登录案例和聊天室案例。

通过文档了解了String类之后,总结一下:

String:

  • String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例

构造方法:

  • String():初始化新创建的 String对象,使其表示空字符序列

  • String(String original):初始化新创建的String对象,使其表示与参数相同的字符序列

知道了String的构造方法后,我们到IDEA中去使用一下:

/*String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例构造方法:String():初始化新创建的 String对象,使其表示空字符序列String(String original):初始化新创建的String对象,使其表示与参数相同的字符序列*/
public class StringDemo01 {public static void main(String[] args) {//String():初始化新创建的 String对象,使其表示空字符序列String s1 = new String();System.out.println(s1);//int length() 返回此字符串的长度System.out.println(s1.length());System.out.println("------------");//String(String original):初始化新创建的String对象,使其表示与参数相同的字符序列String s2 = new String("itheima");System.out.println(s2);System.out.println(s2.length());System.out.println("------------");//Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例String s3 = "itheima";System.out.println(s3);System.out.println(s3.length());}
}

1.2 String(成员方法)

String类中常用的成员方法:

  • int length():返回此字符串的长度

  • boolean equals(Object anObject):将此字符串与指定的对象进行比较

  • boolean equalsIgnoreCase(String anotherString):将此 String与另一个 String比较,忽略了大小写

  • String trim():返回一个字符串,其值为此字符串,删除了所有前导和尾随空格

/*int length():返回此字符串的长度boolean equals(Object anObject):将此字符串与指定的对象进行比较boolean equalsIgnoreCase(String anotherString):将此 String与另一个 String比较,忽略了大小写String trim():返回一个字符串,其值为此字符串,删除了所有前导和尾随空格*/
public class StringDemo02 {public static void main(String[] args) {String s1 = "itheima";String s2 = "itheima";String s3 = "Itheima";//boolean equals(Object anObject):将此字符串与指定的对象进行比较System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));//boolean equalsIgnoreCase(String anotherString):将此 String与另一个 String比较,忽略了大小写System.out.println(s1.equalsIgnoreCase(s2));System.out.println(s1.equalsIgnoreCase(s3));System.out.println("-------------------");String s4 = " itheima ";//String trim():返回一个字符串,其值为此字符串,删除了所有前导和尾随空格System.out.println(s4);System.out.println(s4.trim());String s5 = "it heima";System.out.println(s5.trim());}
}

1.3 GUI案例1(用户登录实现)

需求:根据下列要求,完成用户登录的逻辑,并给出相应的提示

要求:

① 已知的用户名和密码

用户名:itheima

密码:123456

② 用户名和密码的长度都是6-12位

③ 点击登录按钮

先判断输入的用户名和密码是否符合要求

再判断用户登录是否成功

知道了用户登录案例的需求和要求后,下面我们到IDEA中去实现一下:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*1:已知的用户名和密码用户名:itheima密码:1234562:用户名和密码的长度都是6-12位3:点击登录按钮先判断输入的用户名和密码是否符合要求再判断用户登录是否成功*/
public class UserLogin {public static void main(String[] args) {//创建窗体对象JFrame jf = new JFrame();jf.setTitle("用户登录");jf.setSize(400, 300);jf.setDefaultCloseOperation(3);jf.setLocationRelativeTo(null);jf.setAlwaysOnTop(true);jf.setLayout(null);//显示用户名文本JLabel usernameLable = new JLabel("用户名");usernameLable.setBounds(50, 50, 50, 20);jf.add(usernameLable);//用户名输入框JTextField usernameField = new JTextField();usernameField.setBounds(150, 50, 180, 20);jf.add(usernameField);//显示密码文本JLabel passwordLable = new JLabel("密码");passwordLable.setBounds(50, 100, 50, 20);jf.add(passwordLable);//密码输入框JPasswordField passwordField = new JPasswordField();passwordField.setBounds(150, 100, 180, 20);jf.add(passwordField);//登录按钮JButton loginButton = new JButton("登录");loginButton.setBounds(50, 200, 280, 20);jf.add(loginButton);//已知的用户名和密码String name = "itheima";String pwd = "123456";loginButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//获取用户输入的用户名和密码String username = usernameField.getText();String password = passwordField.getText();//先判断输入的用户名和密码是否符合要求//用户名和密码的长度都是6-12位if(username.length()<6 || username.length()>12) {
//                    System.out.println("用户名的长度是6-12位,请重新输入");//静态的成员方法和成员变量是可以通过类名访问的JOptionPane.showMessageDialog(jf,"用户名的长度是6-12位,请重新输入");usernameField.setText("");return;}//再判断用户登录是否成功if(username.equals(name) && password.equals(pwd)) {
//                    System.out.println("登录成功");JOptionPane.showMessageDialog(jf,"登录成功");usernameField.setText("");passwordField.setText("");} else {
//                    System.out.println("用户名或者密码有误");JOptionPane.showMessageDialog(jf,"用户名或者密码有误");}}});jf.setVisible(true);}
}

1.4 GUI案例2(聊天室实现)

需求:根据下列要求,完成聊天室的逻辑

要求:

① 把文本框的内容发送到文本域中

② 每次发送的文本内容不带前后空格

③ 多次发送的内容在文本域以追加的方式呈现

④ 清空聊天就是把文本域的内容设置为空

知道了聊天室案例的需求和要求后,下面我们到IDEA中去实现一下:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*1:把文本框的内容发送到文本域中2:每次发送的文本内容不带前后空格3:多次发送的内容在文本域以追加的方式呈现4:清空聊天就是把文本域的内容设置为空*/
public class ChatRoom {public static void main(String[] args) {//创建窗体对象JFrame jf = new JFrame();jf.setTitle("聊天室");jf.setSize(400, 300);jf.setDefaultCloseOperation(3);jf.setLocationRelativeTo(null);jf.setAlwaysOnTop(true);jf.setLayout(null);//显示聊天信息的文本域JTextArea messageArea = new JTextArea();messageArea.setBounds(10, 10, 360, 200);jf.add(messageArea);//输入聊天信息的文本框JTextField messageField = new JTextField();messageField.setBounds(10, 230, 180, 20);jf.add(messageField);//发送按钮JButton sendButton = new JButton("发送");sendButton.setBounds(200, 230, 70, 20);jf.add(sendButton);//清空聊天按钮JButton clearButton = new JButton("清空聊天");clearButton.setBounds(280, 230, 100, 20);jf.add(clearButton);sendButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//获取文本框的内容
//                String message = messageField.getText();
//                messageField.setText("");//每次发送的文本内容不带前后空格
//                String message = messageField.getText();
//                message = message.trim();String message = messageField.getText().trim(); //链式调用messageField.setText("");//把文本框的内容发送到文本域中
//                messageArea.setText(message);//多次发送的内容在文本域以追加的方式呈现messageArea.append(message+"\n");}});clearButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//清空聊天就是把文本域的内容设置为空messageArea.setText("");}});jf.setVisible(true);}
}

2:Integer

2.1 Integer(构造方法)

案例:猜数字。

来,我们一起看一下,在这个输入框里,我们要输入一个猜的数据,然后点击我猜这个按钮,和已经产生的数据进行比对,给出相应的提示即可。

而且呢,猜数字案例的基本逻辑,我们前面是讲解过的,只不过当时使用的是键盘录入数据,而这里我们采用的是在输入框里输入数据而已。

那我们为什么要学习基本类型包装类呢?

因为,在输入框里输入的数据,我们得到的是一个字符串数据,而实际比较的时候我们需要的是一个int类型的数据,所以,我们得想办法把字符串数据转换为int类型的数据。

为了实现这个效果,Java就提供了基本类型包装类供我们使用。所以,我们说,将基本数据类型封装成对象的好处就是可以通过对象调用方法操作数据。

而我们常用的操作之一呢:就是用于基本数据类型与字符串之间的转换。

在这里呢,我们一起来看一下,八种基本数据类型和其对应的包装类类型

从名字上看,包装类类型就是把基本类型的第一个单词改为大写即可。

当然,这里也有两个比较特殊的,一个是int类型的包装类,一个是字符类型的包装类,它们的包装类名称是这个样子的。

总结:

Integer:

  • Integer类在对象中包装基本类型int的值

构造方法:

  • Integer(int value):根据 int 值创建 Integer 对象(过时)

  • Integer(String s):根据 String 值创建 Integer 对象(过时)

成员方法:

  • static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例

  • static Integer valueOf(String s):返回一个保存指定值的 Integer 对象 String

知道了Integer的构造方法后,我们到IDEA中去使用一下:

/*构造方法Integer(int value):根据 int 值创建 Integer 对象(过时)Integer(String s):根据 String 值创建 Integer 对象(过时)成员方法static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例static Integer valueOf(String s):返回一个保存指定值的 Integer 对象 String*/
public class IntegerDemo01 {public static void main(String[] args) {
//        //Integer(int value):根据 int 值创建 Integer 对象(过时)
//        Integer i1 = new Integer(100);
//        System.out.println(i1);
//
//        //Integer(String s):根据 String 值创建 Integer 对象(过时)
//        Integer i2 = new Integer("100");
//        System.out.println(i2);//        static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例
//        static Integer valueOf(String s):返回一个保存指定值的 Integer 对象 StringInteger i1 = Integer.valueOf(100);Integer i2 = Integer.valueOf("100");System.out.println(i1);System.out.println(i2);}
}

2.2 Integer(int和String的相互转换)

int类型数据和String类型数据的相互转换

/*int和String的相互转换*/
public class IntegerDemo02 {public static void main(String[] args) {//int --- Stringint number = 100;//方式1String s1 = number + "";System.out.println(s1);//方式2//static String valueOf(int i)String s2 = String.valueOf(number);System.out.println(s2);System.out.println("---------------");//String --- intString s = "100";//方式1:String --- Integer --- intInteger i = Integer.valueOf(s);//int intValue() 返回此值 Integer为 intint x = i.intValue();System.out.println(x);//方式2//static int parseInt(String s)int y = Integer.parseInt(s);System.out.println(y);}
}

总结:

  • int 转换为 String

    • static String valueOf(int i):返回 int 参数的字符串表示形式。该方法是 String 类中的方法

  • String 转换为 int

    • static int parseInt(String s):将字符串解析为 int 类型。该方法是 Integer 类中的方法

2.3 GUI案例3(猜数字实现)

需求:根据下列要求,完成猜数字的逻辑

要求:

① 系统产生一个1-100之间的随机数

② 猜的内容不能为空

③ 每次根据猜的数字给出相应的提示

知道了猜数字案例的需求和要求后,下面我们到IDEA中去实现一下:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;/*1:系统产生一个1-100之间的随机数2:猜的内容不能为空3:每次根据猜的数字给出相应的提示
*/
public class GuessNumber {public static void main(String[] args) {//创建窗体对象JFrame jf = new JFrame();jf.setTitle("猜数字");jf.setSize(400, 300);jf.setDefaultCloseOperation(3);jf.setLocationRelativeTo(null);jf.setAlwaysOnTop(true);jf.setLayout(null);//系统产生一个1-100之间的随机数Random r = new Random();int number = r.nextInt(100) + 1;//提示信息JLabel messageLable = new JLabel("系统产生了一个1-100之间的数据,请猜一猜");messageLable.setBounds(70, 50, 350, 20);jf.add(messageLable);//输入要猜的数字JTextField numberField = new JTextField();numberField.setBounds(120, 100, 150, 20);jf.add(numberField);//猜数字的按钮JButton guessButton = new JButton("我猜");guessButton.setBounds(150, 150, 100, 20);jf.add(guessButton);guessButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//猜的内容不能为空String stringNumber = numberField.getText().trim();if(stringNumber.equals("")) {JOptionPane.showMessageDialog(jf,"猜的数字不能为空");return;}//每次根据猜的数字给出相应的提示int guessNumber = Integer.parseInt(stringNumber);if(guessNumber > number) {JOptionPane.showMessageDialog(jf,"你猜的数字"+guessNumber+"大了");numberField.setText("");} else if(guessNumber < number) {JOptionPane.showMessageDialog(jf,"你猜的数字"+guessNumber+"小了");numberField.setText("");} else  {JOptionPane.showMessageDialog(jf,"恭喜你猜中了");}}});jf.setVisible(true);}
}

2.4 Integer(自动装箱和拆箱)

首先,我们来说一下什么是装箱和拆箱:

  • 装箱:把基本数据类型转换为对应的包装类类型

  • 拆箱:把包装类类型转换为对应的基本数据类型

了解了装箱和拆箱后,下面我们到IDEA中去演示一下:

/*装箱:把基本数据类型转换为对应的包装类类型拆箱:把包装类类型转换为对应的基本数据类型*/
public class IntegerDemo03 {public static void main(String[] args) {//装箱:把基本数据类型转换为对应的包装类类型
//        Integer i = Integer.valueOf(100);Integer ii = 100; //Integer.valueOf(100);//拆箱:把包装类类型转换为对应的基本数据类型ii += 200;/*ii = ii + 200;ii = ii.intValue() + 200;   //自动拆箱ii = 300; //Integer.valueOf(300);*/System.out.println(ii);}
}

3:Date和SimpleDateFormat

3.1 Date(构造方法)

案例:手机日期和时间显示和考勤查询

先来看手机日期和时间显示案例:获取当前时间,按照指定的格式显示在窗体上。

也就是在这里我们要进行把一个Date类型的数据,按照指定的格式,变成一个字符串数据显示出来。

再来看考勤查询案例,我们要通过输入的指定格式的日期字符串数据,得到Date类型的数据。

所以,我们学习Date类和SimpleDateFormat类的重点就是为了把Date类型数据和String类型数据之间进行按照指定格式进行转换。

总结:

Date:

  • Date类表示特定的时刻,精度为毫秒

构造方法:

  • Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒

  • Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00

知道了(的构造方法后,我们到IDEA中去使用一下:

import java.util.Date;/*构造方法:Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00*/
public class DateDemo {public static void main(String[] args) {//Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒Date d1 = new Date();System.out.println(d1);//Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00Date d2 = new Date(1000 * 60 * 60);System.out.println(d2);}
}

3.2 SimpleDateFormat(Date和String的相互转换)

总结:

SimpleDateFormat:

  • SimpleDateFormat 是一个用于以区域设置敏感的方式格式化和解析日期的具体类。我们重点学习日期格式化和解析

  • 日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z’以及从‘a’到‘z’引号的字母被解释为表示日期或时间字符串的组成部分的模式字母

常用的模式字母及对应关系如下:

  • 举例:2021年10月27日 11:11:11

  • 模式:yyyy年MM月dd日 HH:mm:ss

构造方法:

  • SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式

  • SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式

格式化(从 Date 到 String ):

  • String format(Date date):将日期格式化成日期/时间字符串

解析(从 String 到 Date ):

  • Date parse(String source):从给定字符串的开始解析文本以生成日期

了解了SimpleDateFormat类,以及Date和String相互转换的方法后,我们到IDEA中去体验一下:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*构造方法SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式格式化(从 Date 到 String )String format(Date date):将日期格式化成日期/时间字符串解析(从 String 到 Date )Date parse(String source):从给定字符串的开始解析文本以生成日期*/
public class SimpleDateFormatDemo {public static void main(String[] args) throws ParseException {//格式化(从 Date 到 String )Date d = new Date();//SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
//        SimpleDateFormat sdf = new SimpleDateFormat();//SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String s = sdf.format(d);System.out.println(s);System.out.println("-----------------");//解析(从 String 到 Date )String ss = "2021-10-27 11:11:11";
//        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date dd = sdf2.parse(ss);System.out.println(dd);}
}

3.3 GUI案例4(手机日期和时间显示实现)

需求:根据下列要求,完成手机日期和时间显示

要求:以当前时间根据格式分别获取日期和时间显示

知道了手机日期和时间显示案例的需求和要求后,下面我们到IDEA中去实现一下:

import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;/*手机日期和时间显示*/
public class ShowDateTime {public static void main(String[] args) {//创建窗体对象JFrame jf = new JFrame();jf.setTitle("手机日期和时间显示");jf.setSize(400, 300);jf.setDefaultCloseOperation(3);jf.setLocationRelativeTo(null);jf.setAlwaysOnTop(true);jf.setLayout(null);//提示日期JLabel dateLable = new JLabel("日期");dateLable.setBounds(50, 50, 100, 20);jf.add(dateLable);Date d = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");String dateString = sdf.format(d);//按照格式显示日期的字符串JLabel showDateLable = new JLabel(dateString);showDateLable.setBounds(50, 80, 200, 20);jf.add(showDateLable);//提示时间JLabel timeLable = new JLabel("时间");timeLable.setBounds(50, 150, 100, 20);jf.add(timeLable);SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm");String timeString = sdf2.format(d);//按照格式显示时间的字符串JLabel showTimeLable = new JLabel(timeString);showTimeLable.setBounds(50, 180, 200, 20);jf.add(showTimeLable);jf.setVisible(true);}
}

3.4 GUI案例5(考勤查询实现)

需求:根据下列要求,完成考勤查询的逻辑

要求:根据开始时间和结束时间的字符串解析为日期提示出来

知道了考勤查询案例的需求和要求后,下面我们到IDEA中去实现一下:

这里用到了日历控件类,需要大家把DateChooser.java类准备好

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*考勤查询*/
public class AttendanceQuery {public static void main(String[] args) {//创建窗体对象JFrame jf = new JFrame();jf.setTitle("考勤查询");jf.setSize(400, 300);jf.setDefaultCloseOperation(3);jf.setLocationRelativeTo(null);jf.setAlwaysOnTop(true);jf.setLayout(null);//显示考勤日期的文本JLabel dateLable = new JLabel("考勤日期");dateLable.setBounds(50, 20, 100, 20);jf.add(dateLable);//显示开始时间文本JLabel startDateLable = new JLabel("开始时间");startDateLable.setBounds(50, 70, 100, 20);jf.add(startDateLable);DateChooser dateChooser1 = DateChooser.getInstance("yyyy/MM/dd");DateChooser dateChooser2 = DateChooser.getInstance("yyyy/MM/dd");//开始时间输入框JTextField startDateField = new JTextField();startDateField.setBounds(50, 100, 100, 20);dateChooser1.register(startDateField);jf.add(startDateField);//显示结束时间文本JLabel endDateLable = new JLabel("结束时间");endDateLable.setBounds(250, 70, 100, 20);jf.add(endDateLable);//结束时间输入框JTextField endDateField = new JTextField();endDateField.setBounds(250, 100, 100, 20);dateChooser2.register(endDateField);jf.add(endDateField);//确定按钮JButton confirmButton = new JButton("确定");confirmButton.setBounds(250, 180, 60, 20);jf.add(confirmButton);confirmButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");//获取开始时间和结束时间的字符串String startDateString = startDateField.getText();String endDateString = endDateField.getText();try {Date startDate = sdf.parse(startDateString);Date endDate = sdf.parse(endDateString);JOptionPane.showMessageDialog(jf,startDate+"\n"+endDate);} catch (ParseException ex) {ex.printStackTrace();}}});jf.setVisible(true);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音小店如何选品?新手怎么选有潜力的产品?常用选品玩法分享

大家好&#xff0c;我是电商花花。 选品是我们店铺出单的关键&#xff0c;也是我们做电商行业的小伙伴非常关心的一个点。 我们想要选好商品&#xff0c;我们就要先搞清楚&#xff0c;什么样的产品才算是有潜力的产品&#xff0c;什么样的产品才能出单&#xff0c;什么样的产…

【HTML5】 canvas 绘制图形

文章目录 一、基本用法二、用法详见2.0、方法属性2.1、绘制线条2.2、绘制矩形2.3、绘制圆形2.4、绘制文本2.5、填充图像 一、基本用法 canvas 标签&#xff1a;可用于在网页上绘制图形&#xff08;使用 JavaScript 在网页上绘制图像&#xff09;画布是一个矩形区域&#xff0c…

MATLAB R2023b for Mac 中文

MATLAB R2023b 是 MathWorks 发布的最新版本的 MATLAB&#xff0c;适用于进行算法开发、数据可视化、数据分析以及数值计算等任务的工程师和科学家。它包含了一系列新增功能和改进&#xff0c;如改进了数据导入工具&#xff0c;增加了对数据帧和表格对象的支持&#xff0c;增强…

手机上最危险的3个操作,千万小心!

普通人千万不要在手机上做这3个操作&#xff0c;否则你的手机早晚会被黑客入侵了。 第一种&#xff0c;苹果越狱 越狱虽然可以绕过限制给你的苹果安装上一些特殊软件&#xff0c;但只要是越狱之后的苹果手机&#xff0c;都将留下漏洞&#xff0c;黑客最喜欢寻找做过越狱的手机…

nginx离线安装

安装包准备&#xff1a; 上传安装包到linux系统 一、进入gcc目录&#xff0c;执行以下命令 rpm -Uvh *.rpm --nodeps --force gcc -v查看版本 二、 进入gcc-c目录&#xff0c;执行命令 rpm -Uvh *.rpm --nodeps --force g -v查看版本 三、安装PCRE 解压&#xff1a; t…

众和策略:券商又念“紧箍咒” 绕标套现的头疼了

又有券商对两融事务念“紧箍咒”。 近来&#xff0c;记者从广发证券获悉&#xff0c;该公司已发布《关于调整融资融券负债归还规矩的告诉》&#xff0c;自2024年1月15日起&#xff0c;决议禁止融资买入证券用于归还融券负债。 相关业内人士以为&#xff0c;自上一年10月融资融…

华为交换机配置NQA DNS检测IP网络DNS解析速度

华为HCIA视频教程&#xff1a;超级实用&#xff0c;华为VRP系统文件详解 华为HCIA视频教程&#xff1a;不会传输层协议&#xff0c;HCIA都考不过 华为HCIA视频教程&#xff1a;网络工程师的基本功&#xff1a;网络地址转换NAT 华为HCIP视频教程&#xff1a;DHCP协议原理与配…

安防视频云平台/可视化监控云平台ARM版EasyCVR无法下载录像文件,如何解决?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。GB28181视频监控/AI智能大数据视频分析EasyCVR平台已经广泛应用在工地…

如何使用Docker本地搭建Traefik服务并实现公网访问管理界面

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…

感知器学习算法和Adaline规则

一.感知器的发展过程 感知器的发展可以追溯到20世纪50年代。它是一种简单的人工神经网络模型&#xff0c;最早由美国心理学家和计算机科学家弗兰克罗森布拉特&#xff08;Frank Rosenblatt&#xff09;于1957年提出。感知器的设计灵感来源于生物神经元的工作原理&#xff0c;旨…

7.3 数据库的基本查询

数据库的基本查询 1. 提要2. 简单查询3. 高级查询3.1 数据分页_limit3.2 排序_order by3.3 查询去重_distinct 4. 条件查询 1. 提要 2. 简单查询 3. 高级查询 3.1 数据分页_limit 3.2 排序_order by 3.3 查询去重_distinct 4. 条件查询

街机模拟游戏逆向工程(HACKROM)教程:[3]街机的ROM与RAM

简介 在街机模拟器中运行一个街机游戏&#xff0c;我们除了需要一个模拟器工具 &#xff0c;也需要有一个街机的ROM文件。街机的ROM文件&#xff0c;称之为Read-Only Memory&#xff0c;可以理解为只读存储器。在 ROM文件中&#xff0c;包括了游戏运行所需要的指令代码&#x…

Fiddler工具 — 15.Filters(过滤器)界面

1、Filters介绍 Filters&#xff1a;过滤器&#xff0c;帮助我们过滤请求。 如果需要过滤掉与测试项目无关的抓包请求&#xff0c;更加精准的展现抓到的请求&#xff0c;而不是杂乱的一堆&#xff0c;那功能强大的 Filters 过滤器能帮到你。 总结&#xff1a;Filters过滤器的…

gitlab 命令执行漏洞(CVE-2022-2992)

1.漏洞影响版本 GitLab CE/EE 中的一个漏洞影响从 11.10 开始到 15.1.6 之前的所有版本、从 15.2 开始到 15.2.4 之前的所有版本、从 15.3 开始到 15.3.2 之前的所有版本。允许经过身份验证的用户通过从 GitHub API 端点导入实现远程代码执行。 查看 gitlab 版本。(登录后才能…

全国博物馆数据, shp+excel数据,数据来源可靠,基于国家文物局发布的《2021年度全国博物馆名录》

数据名称: 全国博物馆数据 数据格式: shpexcel 数据几何类型: 点 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据&#xff0c;数据名录来源于国家文物局发布的《2021年度全国博物馆名录》 数据字段&#xff1a; 序号字段名称字段说明1province省份名称2city城市名…

不管你打开什么App,命运都会让我们相聚在购物软件

「不管打开什么 App &#xff0c;命运都会让我们相聚在购物平台。」 「现在谁还亲自打开淘宝和京东&#xff1f;随便打开一个 App 摇一摇&#xff0c;速度更快。」 最近&#xff0c;差评君在很多社交媒体平台都刷到了这样的段子。 如果你没get到啥意思&#xff0c;咱也不卖关…

一个完整的流程表单流转

1.写在前面 一个完整的流程表单审批&#xff08;起表单-->各环节审批-->回退-->重新审批-->完成&#xff09;&#xff0c;前端由Vue2jsElement UI升级为Vue3tsElement Plus&#xff0c;后端流程框架使用Flowable&#xff0c;项目参考了ruoyi-vue-pro(https://gite…

Java学习(十八)--网络编程

介绍 需求 如何准确地定位网络上一台或多台主机&#xff1b; 定位主机上的特定的应用 找到主机后如何可靠高效地进行数据传输 目的 直接或间接地通过网络协议与其它计算机实现数据交换&#xff0c;进行通讯&#xff1b; 网络通信 网络&#xff1a;两台或多台设备通过一…

怎样利用MATLAB制作图中图(局部放大图片)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…

Quick taxi route assignment via real-time intersection state prediction

Quick taxi route assignment via real-time intersection state prediction with a spatial-temporal graph neural network(通过时空图神经网络实时交叉口状态预测快速分配出租车路线) PAPER LINK 简单说一下: 本文采用了一种新的方法,通过使用空间-时间图神经网络(ST…