【day14】异常处理与Object类深入解析
【day13】回顾
在深入探讨异常处理与Object类之前,让我们回顾一下【day13】中的关键内容:
-
权限修饰符:
public
:最广的访问范围,任何地方都可以访问。protected
:在同包和子类中可以访问。- 默认(无修饰符):仅在同包内可以访问。
private
:仅在定义它的类内部可以访问。
-
final关键字:
- 修饰类:不能被继承。
- 修饰方法:不能被重写。
- 修饰变量:值不可改变。
- 修饰对象:对象引用不可变,但对象内部状态可变。
-
代码块:
- 构造代码块:在对象构造时执行。
- 静态代码块:在类加载时执行。
-
匿名内部类:
- 一种无需显式声明类名的内部类,常用于简化代码和实现接口。
模块十三重点
本模块我们将深入学习异常处理机制和Object类:
- 理解编译时期异常与运行时期异常的区别。
- 掌握两种异常处理方式:
throws
和try...catch
。 - 了解
finally
关键字的使用场景。 - 了解Object类及其中的
toString
和equals
方法。 - 掌握重写
toString
和equals
方法的重要性。
第一章:API文档
API文档是程序员的“字典”,它详细描述了Java中预定义的类和接口,以及它们的方法和属性,方便我们查询和使用。
第二章:异常
1. 异常介绍
异常是程序运行过程中出现的不正常现象。在Java中,异常都是类的实例。
public class Demo01Exception {public static void main(String[] args) throws ParseException {//错误Error -> StackOverflowError//method();//运行时期异常 -> ArrayIndexOutOfBoundsExceptionint[] arr1 = new int[3];//System.out.println(arr1[4]);/*编译时期异常:注意看:编译时期异常是我们代码写错了嘛?不是,当我们调用方法的时候该方法底层给我们抛了一个编译时期异常,所以导致我们一调用此方法一编译,就爆红了当我们一旦触发了这个异常,jvm就会将异常信息打印到控制台上,给程序员们看*/SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = "2000-10-10 10:10:10";Date date = sdf.parse(time);System.out.println(date);}public static void method(){method();}
}
2. 异常处理方式
2.1 throws
关键字
用于在方法签名中声明该方法可能抛出的异常,将异常往上抛
public class Demo04Exception {public static void main(String[] args)throws FileNotFoundException {String s = "a.txt1";add(s);//添加功能delete();//删除功能update();//修改功能find();//查询功能}private static void add(String s)throws FileNotFoundException {if (!s.endsWith(".txt")) {//故意创建异常throw new FileNotFoundException("文件找不到");}System.out.println("我要执行了");}private static void find() {System.out.println("查询功能");}private static void update() {System.out.println("修改功能");}private static void delete() {System.out.println("删除功能");}
}
2.2 try...catch
语句
用于捕获和处理异常。
try{可能出现异常的代码}catch(异常 对象名){处理异常的代码-> 将来开发会将异常信息保存到日志文件中}
public class Demo06Exception {public static void main(String[] args){String s = "a.txt1";try{//int[] arr = null;//System.out.println(arr.length);//NullPointerExceptionadd(s);//添加功能}catch (FileNotFoundException e){System.out.println(e);}delete();//删除功能update();//修改功能find();//查询功能}private static void add(String s)throws FileNotFoundException {if (!s.endsWith(".txt")) {//故意创建异常throw new FileNotFoundException("文件找不到");}System.out.println("我要执行了");}private static void find() {System.out.println("查询功能");}private static void update() {System.out.println("修改功能");}private static void delete() {System.out.println("删除功能");}}
2.3 finally
关键字
无论是否发生异常,finally
块中的代码都会执行。
特殊情况:如果之前执行了System.exit(0)终止当前正在执行的java虚拟机
public class Demo08Exception {public static void main(String[] args){String s = "a.txt";try {add(s);//添加功能} catch (FileNotFoundException e) {e.printStackTrace();}finally {System.out.println("我必须滴执行");}}private static void add(String s)throws FileNotFoundException {if (!s.endsWith(".txt")) {//故意创建异常throw new FileNotFoundException("文件找不到");}System.out.println("我要执行了");}
}
public class Demo09Exception {public static void main(String[] args) {int result = method();System.out.println(result);}public static int method() {try {String s = null;System.out.println(s.length());//空指针异常return 2;} catch (Exception e) {return 1;} finally {System.out.println("我一定要执行");//return 3;}}
}
finally的使用场景: 关闭资源
原因: 对象如果没有用了,GC(垃圾回收器)回收,用来回收堆内存中的垃圾,释放内存,但是有一些对象GC回收不了。比如:连接对象(Connection),IO流对象Socket对象,这些对象GC回收不了,就需要我们自己手动回收,手动关闭
将来不能回收的对象new完之后,后续操作不管是否操作成功,是否有异常,我们都需要手动关闭,此时我们就可以将关闭资源的代码放到finally中
public class Test {public static void main(String[] args) {FileWriter fw = null;try {fw = new FileWriter("day13_exception_object\\1.txt");fw.write("哈哈哈");//假如这里写失败或者写成功了} catch (IOException e) {throw new RuntimeException(e);}finally {if (fw!=null){try {fw.close();} catch (IOException e) {throw new RuntimeException(e);}}}}
}
2.4 try...catch
和throws
的使用时机
- 如果处理异常之后,还想让后续的代码正常执行,我们使用try…catch
- 如果方法之间是递进关系(调用),我们可以先throws,但是到了最后需要用try…catch做一个统一的异常处理
3. 自定义异常
可以通过继承Exception
类来创建自定义异常。
需求:键盘录入一个用户名,实现登录功能,如果登录失败,抛出LoginUserException
public class LoginUserException extends Exception{public LoginUserException() {}public LoginUserException(String message) {super(message);}
}
public class Demo11Exception {public static void main(String[] args) throws LoginUserException {//1.定义一个用户名,代表已经注册的用户String username = "root";//2.创建Scanner对象,录入用户名Scanner sc = new Scanner(System.in);System.out.println("请您输入要登录的用户名:");String name = sc.next();//3.判断用户名是否和已经存在的用户名一致if (name.equals(username)){System.out.println("登录成功了");}else{throw new LoginUserException("登录失败了,用户名或者密码有问题");}}
}
-
定义一个类
-
如果继承Exception 就是编译时期异常
-
如果继承
RuntimeException
,就是运行时期异常
4. 打印异常信息的方法
toString()
:输出异常类型和信息。getMessage()
:输出异常信息。printStackTrace()
:打印异常的详细信息,包括异常类型、信息和堆栈跟踪。
public class Demo11Exception {public static void main(String[] args) {//1.定义一个用户名,代表已经注册的用户String username = "root";//2.创建Scanner对象,录入用户名Scanner sc = new Scanner(System.in);System.out.println("请您输入要登录的用户名:");String name = sc.next();//3.判断用户名是否和已经存在的用户名一致if (name.equals(username)) {System.out.println("登录成功了");} else {try {throw new LoginUserException("登录失败了,用户名或者密码有问题");}catch (Exception e){//System.out.println(e.toString());//System.out.println(e.getMessage());e.printStackTrace();}}}
}
第三章:Object类
Object类是Java中所有类的根类,提供了一些基础方法,如toString
、equals
和hashCode
。
1. toString
方法
- 用于返回对象的字符串表示形式。
- 如果没有重写
toString
方法,直接输出对象会默认调用Object中的toString
方法,输出地址值。 - 如果直接输出对象名不想输出地址值,就重写Object中的toString方法
public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}
}
public class Test01 {public static void main(String[] args) {Person p1 = new Person("金莲", 26);System.out.println(p1);//com.atguigu.b_object.Person@4eec7777System.out.println(p1.toString());//com.atguigu.b_object.Person@4eec7777System.out.println("==============");ArrayList<String> list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");System.out.println(list);//[张三, 李四, 王五]System.out.println(list.toString());//[张三, 李四, 王五]}
}
2. equals
方法
- 用于比较两个对象的地址值是否相等。
- 如果重写了
equals
方法,应该比较对象的内容。
3. clone
方法
用于复制一个属性值相同的新对象。
示例代码
public class Person {private String name;private int age;@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age && Objects.equals(name, person.name);}
}public class TestObject {public static void main(String[] args) {Person p1 = new Person("John", 30);System.out.println(p1.toString());System.out.println(p1.equals(new Person("John", 30)));}
}
第四章.经典接口
1.java.lang.Comparable
我们知道基本数据类型的数据(除boolean类型外)需要比较大小的话,之间使用比较运算符即可,但是引用数据类型是不能直接使用比较运算符来比较大小的。那么,如何解决这个问题呢?
Java给所有引用数据类型的大小比较,指定了一个标准接口,就是java.lang.Comparable接口:
package java.lang;public interface Comparable{int compareTo(Object obj);
}
那么我们想要使得我们某个类的对象可以比较大小,怎么做呢?步骤:
第一步:哪个类的对象要比较大小,哪个类就实现java.lang.Comparable接口,并重写方法
- 方法体就是你要如何比较当前对象和指定的另一个对象的大小
第二步:对象比较大小时,通过对象调用compareTo方法,根据方法的返回值决定谁大谁小。
- this对象(调用compareTo方法的对象)减 指定对象(传入compareTo()的参数对象)大于0,返回正整数
- this对象(调用compareTo方法的对象)减 指定对象(传入compareTo()的参数对象)小于0 返回负整数
- this对象(调用compareTo方法的对象)减 指定对象(传入compareTo()的参数对象)等于0 返回零
代码示例:
public class Student implements Comparable{private String name;private int score;public Student() {}public Student(String name, int score) {this.name = name;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", score=" + score +'}';}/*this:代表students[i]o:代表students[i+1]如果students[i].getScore()-students[i+1].getScore()>0证明数组中的前面一个对象比后面一个对象的分数高*/@Overridepublic int compareTo(Object o) {Student s = (Student) o;return this.getScore()- s.getScore();}
}
测试类
public class Test01 {public static void main(String[] args) {//创建一个数组Student[] students = new Student[3];Student s1 = new Student("张三", 100);Student s2 = new Student("李四", 60);Student s3 = new Student("王五", 80);students[0] = s1;students[1] = s2;students[2] = s3;for (int j = 0; j<students.length-1;j++){for (int i = 0;i<students.length-1-j;i++){//如果students[i]比students[i+1]大,就排序换位置if (students[i].compareTo(students[i+1])>0){Student temp = students[i];students[i] = students[i+1];students[i+1] = temp;}}}//遍历for (int i = 0; i < students.length; i++) {System.out.println(students[i]);}}
}
2.java.util.Comparator
思考:
(1)如果一个类,没有实现Comparable接口,而这个类你又不方便修改(例如:一些第三方的类,你只有.class文件,没有源文件),那么这样类的对象也要比较大小怎么办?
(2)如果一个类,实现了Comparable接口,也指定了两个对象的比较大小的规则,但是此时此刻我不想按照它预定义的方法比较大小,但是我又不能随意修改,因为会影响其他地方的使用,怎么办?
JDK在设计类库之初,也考虑到这种情况了,所以又增加了一个java.util.Comparator接口。
package java.util;public interface Comparator{int compare(Object o1,Object o2);
}
那么我们想要比较某个类的两个对象的大小,怎么做呢?步骤:
第一步:编写一个类,我们称之为比较器类型,实现java.util.Comparator接口,并重写方法
- 方法体就是你要如何指定的两个对象的大小
第二步:比较大小时,通过比较器类型的对象调用compare()方法,将要比较大小的两个对象作为compare方法的实参传入,根据方法的返回值决定谁大谁小。
- o1对象减o2大于0返回正整数
- o1对象减o2小于0返回负整数
- o1对象减o2等于0返回零
public class Student implements Comparator {private String name;private int score;public Student() {}public Student(String name, int score) {this.name = name;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", score=" + score +'}';}/*o1代表students[i]o2代表students[i+1]如果o1的分数大于o2的分数-> compare方法返回正整数如果o1的分数小于o2的分数-> compare方法返回负整数如果o1的分数等于o2的分数-> compare方法返回0*/@Overridepublic int compare(Object o1, Object o2) {Student s1 = (Student) o1;Student s2 = (Student) o2;return s1.getScore()-s2.getScore();}}
public class Test01 {public static void main(String[] args) {//创建一个数组Student[] students = new Student[3];Student s1 = new Student("张三", 100);Student s2 = new Student("李四", 60);Student s3 = new Student("王五", 80);students[0] = s1;students[1] = s2;students[2] = s3;Student student = new Student();for (int j = 0; j<students.length-1;j++){for (int i = 0;i<students.length-1-j;i++){//如果students[i]比students[i+1]大,就排序换位置if (student.compare(students[i],students[i+1])>0){Student temp = students[i];students[i] = students[i+1];students[i+1] = temp;}}}//遍历for (int i = 0; i < students.length; i++) {System.out.println(students[i]);}}
}
相关文章:
【day14】异常处理与Object类深入解析
【day13】回顾 在深入探讨异常处理与Object类之前,让我们回顾一下【day13】中的关键内容: 权限修饰符: public:最广的访问范围,任何地方都可以访问。protected:在同包和子类中可以访问。默认(无…...
云技术基础知识(二):虚拟化与容器技术
内容预览 ≧∀≦ゞ 虚拟化与容器技术虚拟化技术一、虚拟化的核心概念二、虚拟化的主要类型1. 服务器虚拟化2. 操作系统虚拟化(容器化)3. 网络虚拟化4. 存储虚拟化 三、虚拟化的实现方法和工具1. 服务器虚拟化实现2. 操作系统虚拟化(容器化&am…...
【Java基础面试题033】Java泛型的作用是什么?
Java的基础语法可以看尚硅谷的这个PDF:尚硅谷JavaSE基础/《Java从入门到精通(JDK17版)》_尚硅谷电子书.pdf Autism_Btkrsr/Blog_md_to_pdf - 码云 - 开源中国 (gitee.com) 回答重点 Java泛型的作用是通过在编译时检查类型安全,允许程序员编写更通用和…...
Linux 基本使用和程序部署
1. Linux 环境搭建 1.1 环境搭建方式 主要有 4 种: 直接安装在物理机上。但是Linux桌面使用起来非常不友好,所以不建议。[不推荐]。使用虚拟机软件,将Linux搭建在虚拟机上。但是由于当前的虚拟机软件(如VMWare之类的)存在一些bugÿ…...
react中使用ResizeObserver来观察元素的size变化
在 React 中使用 ResizeObserver 来观察元素的大小变化,可以通过创建一个自定义 Hook 来封装 ResizeObserver 的逻辑,并在组件中使用这个 Hook。以下是一个完整的示例,展示了如何在 React 中使用 ResizeObserver 来观察元素的大小变化。 自定…...
常见数据结构
1.数组 vector 2.链表 list 双向链表,不能通过下标找元素 3.栈 stack 4.队列 queue 优先队列priority_queue. 默认队头为最大值,可以用来任务调度,图算法,霍夫曼树 5.双端队列 deque 6.集合 set multiset s.begin() //返回…...
【服务器】linux服务器管理员查看用户使用内存情况
【服务器】linux服务器管理员查看用户使用硬盘内存情况 1、查看所有硬盘内存使用情况 df -h2、查看硬盘挂载目录下所有用户内存使用情况 du -sh /public/*3、查看某个用户所有文件夹占用硬盘内存情况 du -sh /public/zhangsan/*...
Java-冒泡排序、选择排序、二分查找算法
1. 冒泡排序 (1) 冒泡排序:每次从数组中找出最大值放在数值的后面去 public static void main(String[] args) {//冒泡排序int[] arr {5, 6 ,4, 9, 3, 1};for (int i 0; i < arr.length - 1; i) {for (int j 0; j < arr.length - i - 1; j) {if (arr[j] &…...
leetcode之hot100---240搜索二维矩阵II(C++)
思路一:通过遍历主对角线上元素判断查找方向 主对角线遍历: 遍历主对角线上的每个元素(matrix[i][i]),其中 i 的范围是 [0, min(m, n) - 1]。如果目标值小于当前主对角线元素,说明目标值可能在当前元素的左…...
牛客--求小球落地5次后所经历的路程和第5次反弹的高度,称砝码
求小球落地5次后所经历的路程和第5次反弹的高度 描述 假设有一个小球从 hh 米高度自由落下,我们不考虑真实的物理模型,而是简洁的假定,该小球每次落地后会反弹回原高度的一半;再落下,再反弹;……。 求小球…...
EasyPoi 使用$fe:模板语法生成Word动态行
1 Maven 依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.0.0</version> </dependency> 2 application.yml spring:main:allow-bean-definition-over…...
在 PowerShell 中优雅地显示 Python 虚拟环境
在使用 Python 进行开发时,虚拟环境管理是一个非常重要的部分。无论是使用 venv 还是 conda,我们都希望能够清晰地看到当前所处的虚拟环境。本文将介绍如何在 PowerShell 中配置提示符,使其能够优雅地显示不同类型的 Python 虚拟环境。 问题…...
GUI07-学工具栏,懂MVC
MVC模式,是天底下编写GUI程序最为经典、实效的一种软件架构模式。当一个人学完菜单栏、开始学习工具栏时,就是他的一生中,最适合开始认识 MVC 模式的好时机之一。这节将安排您学习: Model-View-Controller 模式如何创建工具栏以及…...
免费线上签字小程序,开启便捷电子签名
虽如今数字化飞速发展的时代,但线上签名小程序的开发制作却并非易事。需要攻克诸多技术难题,例如确保签名的真实性与唯一性,防止签名被伪造或篡改。 要精准地捕捉用户手写签名的笔迹特征,无论是笔画的粗细、轻重,还是…...
计算机的错误计算(一百八十九)
摘要 用大模型计算 tan(12.345) . 自变量取弧度。结果保留10位有效数字。不同于前面两节的大模型,本节调用了新的两个大模型。然而,很遗憾,它们给出的答案似乎仍然是“匹配”出来的,不是计算出来的。当然,均是错误的。…...
HDR视频技术之十一:HEVCH.265 的 HDR 编码方案
前文我们对 HEVC 的 HDR 编码优化技术做了介绍,侧重编码性能的提升。 本章主要阐述 HEVC 中 HDR/WCG 相关的整体编码方案, 包括不同应用场景下的 HEVC 扩展编码技术。 1 背景 HDR 信号一般意味着使用更多比特,一般的 HDR 信号倾向于使用 10…...
使用 AI 辅助开发一个开源 IP 信息查询工具:一
本文将分享如何借助当下流行的 AI 工具,一步步完成一个开源项目的开发。 写在前面 在写代码时,总是会遇到一些有趣的机缘巧合。前几天,我在翻看自己之前的开源项目时,又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程&am…...
『 Linux 』高级IO (一)
文章目录 内容回顾及铺垫五种IO模型不同类型IO的区别非阻塞IOfcntl( ) 多路转接 - select( )select( ) 的基本使用 - SelectServer服务器 内容回顾及铺垫 在博客『 Linux 』基础IO/文件IO (万字)中介绍了对IO的认识; IO实际上为Input/Output,输入输出; 以网络协议栈的视角来看,…...
Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践
导读:Cisco WebEx 早期数据平台采用了多系统架构(包括 Trino、Pinot、Iceberg 、 Kyuubi 等),面临架构复杂、数据冗余存储、运维困难、资源利用率低、数据时效性差等问题。因此,引入 Apache Doris 替换了 Trino、Pinot…...
Java - 日志体系_Apache Commons Logging(JCL)日志接口库
文章目录 官网1. 什么是JCL?2. JCL的主要特点3. JCL的核心组件4. JCL的实现机制5. SimpleLog 简介6. CodeExample 1 : 默认日志实现 (JCL 1.3.2版本)Example 2 : JCL (1.2版本) Log4J 【安全风险高,请勿使用】 7. 使用…...
Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02
在嵌入式开发中,I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,广泛应用于与外设(如 EEPROM、传感器、显示屏等)进行数据交换。AT24C02 是一种常见的 I2C EEPROM 存储器,它提供 2Kbit…...
盒子模型(外边距的设置)
用于页面中元素的合理布局所有的元素都可以有宽高所有元素都是一个矩形所有元素都可以看成一个盒子盒子包括 外边距边框内边距元素内容 外边距设置 外边距的要素:top、bottom、left、right外边距的尺寸:合法的尺寸单位外边距语法:marign-方…...
买卖股票的最佳时机 IV - 困难
************* C topic:188. 买卖股票的最佳时机 IV - 力扣(LeetCode) ************* Stock angin: Still stocks. Intuitively, it feels hard. For once: class Solution { public:int maxProfit(vector<int>& prices) {in…...
ElasticSearch - 深入解析 Elasticsearch Composite Aggregation 的分页与去重机制
文章目录 Pre概述什么是 composite aggregation?基本结构after 参数的作用问题背景:传统分页的重复问题after 的设计理念响应示例 after 如何确保数据不重复核心机制Example步骤 1: 创建测试数据创建索引插入测试数据 步骤 2: 查询第一页结果查询第一页返…...
HTML5 Web IndexedDB 数据库
IndexedDB 是一种基于浏览器的 NoSQL 数据库,用于在客户端持久化存储大量结构化数据。 IndexedDB 允许通过键值对存储复杂的数据对象(如对象、数组、文件等),并支持事务、索引、版本控制和复杂查询操作。 IndexedDB 是异步的&am…...
苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
读书笔记~管理修炼-缄默效应
缄默效应:学会正确批评下属 员工明明犯了错误,却不及时告知你,总是拖到最后一刻无法弥补时才不得不承认出了问题——你遇到过这样的问题吗? 这其实是缄默效应在发挥作用。 在职场中,即使再扁平化的环境&…...
LabVIEW声音信号处理系统
开发了一种基于LabVIEW的声音信号处理系统,通过集成的信号采集与分析一体化解决方案,提升电子信息领域教学与研究的质量。系统利用LabVIEW图形化编程环境和硬件如USB数据采集卡及声音传感器,实现了从声音信号的采集到频谱分析的全过程。 项目…...
2024.12.10——攻防世界Web_php_include
知识点:代码审计 文件包含 伪协议 伪协议知识点补充: 在PHP中,伪协议(Pseudo Protocols)也被称为流包装器,这些伪协议以 php://开头,后面跟着一些参数,用于指定要执行的操作或需要…...
Linux shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件
Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件,”多个图片分开生成多个PDF文件“或者“多个图片合并生成一个PDF文件” 在Linux系统中,使用ImageMagick可以图片格式转换,…...
有没有检测吸烟的软件 ai视频检测分析厂区抽烟报警#Python
在现代厂区管理中,安全与规范是重中之重,而吸烟行为的管控则是其中关键一环。传统的禁烟管理方式往往依赖人工巡逻,效率低且存在监管死角,难以满足当下复杂多变的厂区环境需求。此时,AI视频检测技术应运而生࿰…...
LeetCode 每日一题 2024/12/16-2024/12/22
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 12/16 1847. 最近的房间12/17 3291. 形成目标字符串需要的最少字符串数 I12/18 3292. 形成目标字符串需要的最少字符串数 II12/19 3285. 找到稳定山的下标12/20 3138. 同位…...
gitlab代码推送
点击这个√ 修改的文件全部选上 填好提交的名称 点击commit 选取提交的 gitlab 库 点击Push...
小红书飞书素材库 | AI改写 | 无水印下载 | 多维表格 | 采集同步 | 影刀RPA
小红书飞书素材库 | AI改写 | 无水印下载 | 多维表格 | 采集同步 | 影刀RPA 模板准备 进入【小红书】素材采集库_荷逸模板,点击使用模板 创建文档应用 在开发者后台 - 飞书开放平台创建 企业自建应用 (需要账号有相应的权限, 如果没有权限向管理员申请) 获取 Ap…...
【计算机视觉基础CV-图像分类】02-入门详解图像分类、经典数据集、比赛与冠军图像模型演进史
前言 图像分类(Image Classification)是计算机视觉(Computer Vision)中一项基础且核心的任务。简单来说,就是让计算机从给定的类别集合中,为一张输入图片分配一个正确的类别标签。这个过程听起来直观&…...
【机器学习】探索机器学习与人工智能:驱动未来创新的关键技术
探索机器学习与人工智能:驱动未来创新的关键技术 前言:人工智能的核心技术深度学习:自然语言处理(NLP):计算机视觉: 机器学习与人工智能的驱动创新医疗健康领域金融行业智能制造与工业互联网智慧…...
DS二叉树--基于数组存储的构建
题目描述 任意二叉树可以根据完全二叉树性质保存在一个数组中。已知二叉树的数组存储,用程序构建该二叉树。 提示:用递归方法或非递归都可以 输入 第一行输入一个整数t,表示有t个测试数据 第二行起输入二叉树的数组存储结果,空…...
入侵他人电脑,实现远程控制(待补充)
待补充 在获取他人无线网网络密码后,进一步的操作是实现入侵他人电脑,这一步需要获取对方的IP地址并需要制作自己的代码工具自动化的开启或者打开对方的远程访问权限。 1、获取IP地址(通过伪造的网页、伪造的Windows窗口、hook,信…...
STM32基于标准库如何查看时钟主频,100%简单
基于原有的工程写入两行代码,见下图 RCC_ClocksTypeDef get_rcc_clock; RCC_GetClocksFreq(&get_rcc_clock); 进入我们的仿真加入断点,然后在watch1观察变量值数据,然后在计算器计算就能得出,如上图。 但是这样看的PAB1上…...
HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发
在智能设备的交互中,如何准确理解并及时响应用户需求,成为提升用户体验的关键。HarmonyOS Next 的意图框架服务(Intents Kit)为这一目标提供了强大的技术支持。本文将通过一个项目实现的示例,展示如何使用意图框架服务…...
[原创](Modern C++)现代C++的第三方库的导入方式: 例如Visual Studio 2022导入GSL 4.1.0
[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共23年] 职业生涯: 21年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse…...
【jenkins插件】
1) 2) 3) 4) 5) 6) 参考: 知识库/运维/Jenkins/01-安装/13-插件.md zfoo/java-developer-document - 码云 - 开源中国...
springboot472基于web网上村委会业务办理系统(论文+源码)_kaic
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本网上村委会业务办理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数…...
七层网络笔记
首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解 每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件 物理层由来:上面提到&a…...
PostgreSQL编译安装教程
下载安装 1.在家目录创建一个文件夹放下载安装包 mkdir softwarecd software 2.下载文件压缩包 wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz 3.解压 tar -xzvf postgresql-16.0.tar.gz 4.编译 在software/postgresql-16.0下 cd software…...
音视频学习(二十四):hls协议
基本原理 HLS协议通过将视频文件切分成多个小的媒体段(通常是10秒左右的.ts文件),并通过HTTP传输给客户端。视频播放过程中,客户端按顺序请求这些小段文件来逐步播放整个视频流。HLS还支持多种码率,以便适应不同网络条…...
pytorch MoE(专家混合网络)的简单实现。
专家混合(Mixture of Experts, MoE)是一种深度学习模型架构,通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络(即子模型),然后根据门控网络(gating network)的输出…...
代码随想录day24 | leetcode 93.复原IP地址 90.子集 90.子集II
93.复原IP地址 Java class Solution {List<String> result new ArrayList<String>();StringBuilder stringBuilder new StringBuilder();public List<String> restoreIpAddresses(String s) {backtracking(s, 0, 0);return result;}// number表示stringb…...
Scala项目(图书管理系统)
3、service BookService package org.app package serviceimport org.app.dao.{BookDAO, BorrowRecordDAO} import org.app.models.{BookModel, BorrowRecordModel}import java.time.LocalDateTime import scala.collection.mutable.ListBuffer// 图书业务逻辑层 class BookS…...
Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。
网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是,则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时,Mihomo网卡会消失,所以提示找不到网卡…...