当前位置: 首页 > news >正文

13.继承、重载、重写、多态、抽象类、接口、final、Static的学习

一、继承

继承:你继承谁你就是谁,继承是一种严格的父子关系 (在父类里面抽取的属性和方法一定是所有子类所共有)
(Student继承Person,那么Student就是人)
UML: 类图(描述类和类之间的关系)
UML所用箭头的含义:
uml图六种箭头的含义(泛化、实现、依赖、关联、聚合、组合)-CSDN博客
Java是单继承,就是一个类只能继承extends(inherit)一个类,而java这种面向对象的语言就是对现实世界的描述,现实世界中是存在很多多继承,但是java里面是支持实现多个接口。
Object是所有类的父类(这个父类不一定是直接父类)
//一个类不继承任何一个类,默认继承Object
public class Person/* extends Object*/{//如果希望子类继承 protectedprotected int id;protected String name;protected int age;public Person() {//Java里面new子类对象时候首先new父类对象super();//new Object();}public Person(int id, String name, int age) {super();this.id = id;this.name = name;this.age = age;}public void show() {System.out.println("Person.show");}
}//实体类:和数据库表一一对应
public class Student extends Person{
//    private int id;
//    private String name;
//    private int age;private String className;public Student() {super();//new Person();}public Student(int id, String name, int age, String className) {super(id, name, age);//new Person(id,name,age)this.className = className;}//    public void show() {
//        System.out.println("Student.show");
//    }public void study() {System.out.println(className + "班的"+name+"正在学习");}
}

private:只在当前类里面可以访问(子类也不能访问)
public:任何地方都可以访问
protected:子类可以访问
import:
Java里面用到类需要import进来,本包的类不需要import,外部包需要import
特例:java.lang包放很多Java常用类像System、String,这个包下面是不需要导包
不写,java默认加上:
1、无参构造方法
2、一个类不继承任何一个类默认继承extends Object
3、在类的构造方法第一句默认会加上super()
this、super总结:
  1. this:代表当前类的对象 this.id=id
  2. super:代表父类对象
  3. this():调用当前类的构造方法
  4. super():调用父类构造方法
public class Rectangle {private int width;private int height;public Rectangle() {this(1, 1);//new Rectangle(1, 1)
//        this.width = 1;
//        this.height = 1;}public Rectangle(int width, int height) {this.width = width;this.height = height;}
}

二、重载

重载(Overload)是指在同一个类中可以有多个方法拥有相同的名称,但是它们的参数列表不同。
Java通过方法的 参数类型、个数或顺序 来区分不同的重载方法。
最典型的重载:构造方法重载(无参构造方法、有参构造方法)
方法重载特点: 与返回值无关,只看参数列表。
void show(int a, char b, double c){}
1、void show(int x, char y, double z){} 不是重载,是同一个方法
2、int show(int a, double c, char b){} 是重载,参数顺序不一样,和返回值无关
3、void show(int a, double c, char b){} 是重载,参数顺序不一样
4、boolean show(int c, char b){} 是重载
5、void show(double c){ } 是重载
6、double show(int x, char y, double z){} 不是重载

三、重写

重写(覆盖)@Override
父类中定义的方法子类不满意,子类重新定义这个方法,最典型的重写就是toString()
1、子类覆盖父类,必须保证子类权限大于父类权限才可以覆盖,否则会编译失败。
2、如果父类是private的方法,子类是默认方法,那么子类是不知道这个方法的,不是覆盖。
public class Object {public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}
}public class Student {@Overridepublic String toString() {return "Student{" +"className='" + className + '\'' +", id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}
重载(Overload): 同一个类中 方法名一样参数列表不一样(构造方法重载)
重写(Override): 父子类 中方法(父类中定义的方法子类不满意,子类重新定义这个方法)

四、多态

Java 多态(Polymorphism)是面向对象编程的一项核心概念,它允许对象以多种形式出现。
多态性在Java中有两个主要的表现形式:
  1. 编译时多态(也称为静态多态)
  2. 运行时多态(也称为动态多态)
编译时多态是通过方法重载(Method Overloading)实现的。这意味着在同一个类中可以定义多个方法,这些方法具有相同的名字但参数列表不同。编译器在编译时根据参数列表来决定调用哪个具体的方法。
这里大家只要知道多态还有编译时多态这种形式就可以,重点还是运行时多态。
多态存在的三个必要条件:
  1. 继承
  2. 重写
  3. 父类引用指向子类对象 Cal cal = new Add();
面向接口编程:声明成父类类型,那么所有的子类对象都可以传递过来

//Cal cal = new Add();
public void jiSuan(Cal cal) {cal.getResult();
}public void jiSuan(Add add) {add.getResult();
}public void jiSuan(Sub sub) {sub.getResult();
}public void jiSuan(Mul mul) {mul.getResult();
}

五、抽象类、抽象方法

1、抽象方法是没有方法体,如果这个类里面有抽象方法,这个类必须变成抽象类。
2、如果这个类是抽象类,并不要求这个类一定要有抽象方法
3、抽象类里面可以有普通方法,也可以有抽象方法。
4、如果一个类是抽象类,那么这个类就不能被new实例化,只能被其他类继承。
5、抽象方法可以理解为父类(抽象类) 定义的一个模板或者规范(自己本身不实现),子类必须实现这个抽象方法 如果子类不想实现这个方法,那么这个子类也必须要变成抽象类。
public abstract class Cal {protected int num1;protected int num2;//抽象方法是没有方法体,如果这个类里面有抽象方法,这个类必须变成抽象类。public abstract int getResult();//方法签名/*public int getResult() {//大括号:方法体//为了不让他报错return 0;}*/}

六、接口interface

接口是一个纯粹的抽象类(接口里面所有的方法都是抽象方法)
接口就是一个规范(标准),他没有提供任何是实现,具体的功能由实现接口的子类去实现。
接口就是一个规范, 可插拔(可以被替换,首先定义一个标准(接口),大家都遵守这个标准,就可以实现互相之间替换)
白炽灯的接口
计算机主板上CPU、内存
面向接口编程这个接口有广义和狭义:
狭义:就是Java里面接口这个技术
广义:声明成父类类型,指向不同的子类对象。这里的父类可以是:接口、抽象类、普通父类
接口也是父类的一种
//接口就是一个纯粹的抽象类,接口就是一个标准
public interface IFly {//public static final double PI = 3.14;double PI = 3.14;//public abstract void fly();void fly();}

如何选择接口还是抽象类
  1. 继承是严格的父子关系,你继承什么你就是什么:鸽子就是鸟。
父类是抽取了所有子类的 共同特征,父类里面的属性和方法是所有子类所共有的属性和方法。
  1. 接口是一个标准,一般用在能不能具有某个功能。
把能不能飞定义称为一个接口IFly, 实现了这个接口的类就具有了这个功能。
public void test1() {DaYan daYan = new DaYan();daYan.egg();daYan.fly();daYan.print();// bird是站在AbstractBird这个类角度去看new出来的DaYan这个对象,// 所以只能看到egg()这个方法AbstractBird bird = new DaYan();bird.egg();// bird.fly();// bird.show();// 站在能不能飞IFly的角度去看DaYan,只能看到fly()这个方法IFly fly = new DaYan();fly.fly();//fly.egg();//fly.show();fly = new GeZi();fly.fly();
}public void flay(IFly fly) {fly.fly();
}

接口的特点:
1、接口是一个纯粹的抽象类,接口里面的方法都是抽象方法:public abstract
2、接口里面所有的属性:public static final double PI = 3.14;
final总结:修饰变量、类、方法
final:最终的意思
  1. final变量:这个变量就不能被修改,就是常量 public static final double PI = 3.1415;
  2. final类:这个类就不能被继承
  3. final方法:这个方法就不能被重写

七、静态属性、静态方法

如何理解静态属性、静态方法
小区里面业主的房子可以看成一个一个的对象,这些都是属于特定的业主所独有。但是小区里面也有一些公共设施(健身器材、绿地),这些公共设施是属于这个小区的。但是是可以被所有的业主对象所使用的。
非静态的属性和方法(实例属性和方法)必须通过new对象访问,而静态的属性和方法是属于类的,在类加载到内存中就可以访问,不需要new对象就可以使用,但是可以被所有对象所共享。
使用时候注意点:
1、静态的方法只能访问静态的方法和静态的属性(因为当前对象的实例可以没有创建,所以静态的方法是没办法调用非静态的方法和属性的)
2、静态的方法中不能写this、super关键字(因为当前的对象实例可能还没有创建,代表当前类对象的this还有代表父类对象的super可能都还没有创建)
public class Student {//属性、成员变量、实例变量public int id;private String name;//静态变量public static String country = "中国";//成员方法、实例方法、非静态方法public void show() {System.out.println("Student.show");print();}//静态方法public static void print() {System.out.println("Student.print");//Non-static method 'show()' cannot be referenced from a static context//show();//this.name = "lisi";country = "zhongguo";//this.name = "ss";}public static void test() {test();}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

八、工具类

Math、Arrays
  1. 工具类里面的方法都是静态方法,方法之间没有关联。
  2. 工具类的构造方法私有,禁止外界new对象,只能通过类名.方法方式访问
//工具类
int max1 = Math.max(3, 2);
System.out.println(max1);
double max2 = Math.max(3.0, 5.2);
System.out.println(max2);
//'Math()' has private access in 'java.lang.Math'
//Math math = new Math();//Arrays数组操作的工具类
int[] array = {34, 45, 7, 89};
System.out.println(array);//[I@d7b1517
System.out.println(Arrays.toString(array));
Arrays.sort(array);
System.out.println(Arrays.toString(array));
//先Arrays.sort排好序,再进行二分查找
int index = Arrays.binarySearch(array, 7);
System.out.println(index);public class ArraysUtil {private ArraysUtil() {}public static int sum(int[] array) {int sum = 0;for (int i : array) {sum += i;}return sum;}public static int max(int[] array) {int max = array[0];for (int i : array) {if (i > max) {max = i;}}return max;}public static void bubbleSort(int[] array) {}
}

相关文章:

13.继承、重载、重写、多态、抽象类、接口、final、Static的学习

一、继承 继承:你继承谁你就是谁,继承是一种严格的父子关系 (在父类里面抽取的属性和方法一定是所有子类所共有) (Student继承Person,那么Student就是人) UML: 类图(描述类和类之间的…...

SpringBoot Actuator未授权访问漏洞的全面解析与解决方案

引言 SpringBoot Actuator 作为应用监控与管理的核心组件,为开发者提供了丰富的系统自省和运维能力。然而,其默认配置中可能存在的未授权访问漏洞,已成为企业安全防护的潜在风险。本文将从漏洞原理、影响范围、检测方法到解决方案,系统性地剖析该问题,并提供覆盖开发、运维…...

使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(1)

背景 用户在WEB页面上点击按钮,服务端需要执行一系列操作,该操作系列步骤较多且耗时长,为了更好的给用户浏览体验,需要在每进行一个步骤由服务端推送消息给客户端(浏览器),避免一个长时间的操作…...

一网统管建设组织保障分工常见表

在 “一网统管” 建设进程中,强有力的组织保障体系与各业务部门间的紧密分工协作是确保建设成效的关键。 从组织保障层面来看,需建立专门的 “一网统管” 建设领导小组,由政府高层领导担任组长,各关键业务部门负责人作为组员,以此强化对整体建设工作的统筹规划与组…...

JVM | CMS垃圾收集器详解

目录 CMS垃圾回收器简介 为什么CMS图中初始标记的阶段是单线程?为啥不多线程?当然现在默认多线程了。 CMS的两种模式与一种特殊策略 Backgroud CMS 记忆集 卡表 ForeGroud CMS CMS的标记压缩算法 三色标记 (便于理解而被后人提出&am…...

android开发中的多线程、数据存储同步功能实现方案和应用场景

在Android开发中,多线程、数据存储与同步功能有多种实现方案,以下是详细介绍及其应用场景: 多线程 实现方案: Thread类与Runnable接口:通过继承Thread类并重写run方法,或实现Runnable接口并将其传入Threa…...

【C++初阶】--- 模板进阶

1.非类型模板参数 • 模板参数分类类型形参与非类型形参。 • 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 • 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参…...

数据库所有知识

# 第一章 数据库-理论基础 ## 1.1 什么是数据库 数据: 描述事物的符号记录, 可以是数字、 文字、图形、图像、声音、语言等,数据有多种形式,它们都可以经过数字化后存入计算机。 数据库: 存储数据的仓库&#xff0c…...

docker部署的Nextcloud,处于维护模式,如何解决

Nextcloud 在升级后卡在维护模式,以下是针对 Docker 部署的解决方案: 1. 通过 OCC 命令强制关闭维护模式 进入 Nextcloud 容器内部执行命令: # 替换 nextcloud 为你的容器名称 docker exec -it --user www-data nextcloud php occ maintena…...

mongoose插入文档,字段类型, 字段验证, 删除文档,更新文档,读取文档,查询文档的条件控制 ,字段筛选,数据排序,数据截取

、Mongoose 中与 文档操作(插入、查询、更新、删除)及其相关功能(字段类型、验证、条件筛选、排序、分页等)相关示例: 📋 一、字段类型定义(Schema Types) const mongoose require…...

源码编译安装LAMP

一:LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP…...

C++每日训练 Day 18:构建响应式表单与数据验证(初学者友好)

📘 本篇目标:在前几日协程与事件驱动机制基础上,构建一个响应式表单系统,实现用户输入的异步验证与反馈。通过协程挂起/恢复机制,简化异步逻辑,提升代码可读性。 🔁 回顾 Day 17:响应…...

Linux环境变量以及进程虚拟地址原理

目录 一、介绍进程优先级 1.什么是优先级 2.为什么会有优先级 3.Linux中的优先级是怎么确定的 1)查看Linux中的优先级 2)计算优先级和更改优先级 二、环境变量 1.什么是环境变量 2.环境变量有什么作用 3.环境变量怎么做到的 1)查看系统已有的…...

基于非递归求解的汉诺塔超级计算机堆栈与数据区设计方案

基于非递归求解的汉诺塔超级计算机堆栈与数据区设计方案 一、设计背景与目标 汉诺塔问题存在非递归直接求解方法,相较于递归法具有明确移动规律和潜在性能优势。本设计旨在利用非递归求解规律,优化汉诺塔超级计算机的堆栈与数据区结构,降低…...

【Linux应用】在PC的Linux环境下通过chroot运行ARM虚拟机镜像img文件(需要依赖qemu-aarch64、不需要重新安装iso)

【Linux应用】在PC的Linux环境下通过chroot运行ARM虚拟机镜像img文件(需要依赖qemu-aarch64、不需要重新安装iso) qemu提供了运行ARM虚拟机的方法 具体的操作方式就是建立一个硬盘img 然后通过iso安装到img 最后再运行img即可 这种方式教程很多 很简单 …...

CISC与RISC详解:定义、区别及典型处理器

一、CISC(复杂指令集计算机) Complex Instruction Set Computer 核心思想:通过设计复杂的指令,减少程序指令数量,以硬件复杂度换取编程便利性。 主要特点: 指令复杂度高: 单条指令可完成多步操…...

数据库中DDL、DML、DCL的区别是什么?

数据库中DDL、DML、DCL的区别是什么? 在数据库的使用过程中,SQL(结构化查询语言)常常被用来执行不同的操作,主要分为三类:DDL(数据定义语言)、DML(数据操纵语言&#xf…...

【东枫电子】AI-RAN:人工智能 - 无线接入网络

太原市东枫电子科技有限公司,翻译 文章目录 1.概述1.1 什么是AI-RAN?1.2 为什么是AI-RAN?1.3 AI-RAN有哪些好处?1.4 为什么 AI-RAN 会给通信服务提供商 (CoSP) 带来变革?1.5 AIRAN 的构建模块是什么? 2. 参…...

实习技能记录【5】-----项目中消息传递到ui层的方法

代码 while (1){osEvent evt;evt osMailGet(ui_msg_mailbox, 0);if (evt.status osEventMail){UI_MSG_APP_T *msg (UI_MSG_APP_T *)evt.value.p;if (msg->cmd_type CMD_TYPE_INNER){if (msg->cmd_code CMD_CODE_INNER_REFRESH_NOW){lv_obj_invalidate(lv_scr_act()…...

4.29【Q】paraCompute

还是同样的要求,我要写实验报告,如何组织描述运行时间,加速比,效率等随数据规模,进程数,线程数变化的语言和逻辑,从而显得不冗余和精简?为我生成合理排版,布局的文字&…...

什么是布林带?

什么是布林带? 布林带是约翰布林格在20世纪80年代开发的一种广泛使用的技术分析工具。布林带由价格图表上的三条线组成:中轨、上轨和下轨。中轨通常是20天简单移动平均线(SMA),代表资产在此期间的平均价格。上轨和下轨…...

爬虫学习笔记(四)---request入门

例1 例1:写一个爬取百度搜索页面的程序,以搜索一个喜欢的明星为例(如在搜索框中输入周杰伦) 正常搜索 页面 爬虫思路: 1.用一个query变量,在控制台输入的方式更加灵活的输入想爬取的明星的百度搜索页面 …...

JSON配置文件格式全解析与多语言实战指南

JSON配置文件格式全解析与多语言实战指南 摘要 本文全面解析JSON配置文件的核心语法规范,深入探讨数据类型、转义机制及JSON5扩展特性,提供JavaScript/Python/Java等多语言解析方案。通过典型应用场景案例演示JSON的最佳实践,帮助开发者高效…...

JavaScript 中的类型转换机制?

一、类型转换的两种模式 1. 显式转换(手动翻译) 你主动告诉 JavaScript 如何转换类型,比如: let num Number("123"); // 字符串 → 数字:123 let str String(123); // 数字 → 字符串:&qu…...

【分享】音频音乐剪辑[特殊字符]人声分离伴奏提取[特殊字符]拼接合并

音频音乐剪辑是一款专业的剪辑软件。在剪辑过程中,它可以对音频进行拼接合成、音乐裁剪、变调变速、格式转换,同时音频音乐剪辑还是一款支持高清录音、音频降噪等众多功能于一体的音频制作软件。 【应用名称】:音频剪辑 【应用版本】&#xf…...

关于 const a 定义的数据 与 其渲染 的问题。即通过const定义的常量,会不会导致渲染不及时。

情况1 (同2、4结论一致) 定义:使用子hook,将数据 const a 【对stateX的一系列操作】 封存到子hook里。并return出去。结果:此种情况不影响实时渲染。缺点:只要stateX变更,一定展示c的最新数据…...

开源Kotlin从零单排0基础完美入门教程

🚀 Kotlin 从零单排 一个让你欲罢不能的 Kotlin 入门教程! 教程仓库地址 👋 Hey,你好啊! 如果你: 🤔 听说 Kotlin 很香,但不知道香在哪?😅 Java 写得头大&a…...

主流微前端框架比较

主流微前端框架比较 以下表格列出了当前主流微前端框架的核心对比信息,包括基本介绍、核心特性、适用场景、技术栈兼容性、优缺点、社区维护情况和典型应用案例等: 框架基本介绍核心特性与机制适用场景技术栈兼容性优缺点社区维护情况典型应用案例qiankun蚂蚁金服推出的生产…...

DOM 事件的处理通常分为三个阶段:捕获、目标、冒泡【前端示例】

如果神明还不帮你,说明他相信你。 目录 引言:捕获阶段:目标阶段:冒泡阶段:事件传播示意图:示例:代码:解读:输出: 引言: DOM 事件的处理通常分为三…...

C#实现对达索(Dassault)SolidWorks中3D图纸转化为手机可直接查看预览图纸格式

转化环境无需安装SolidWorks。 代码更新:暂不公开。 实现效果:...

Twitter 工作原理|架构解析|社交APP逻辑

这是对Twitter 工作原理|架构解析|社交APP逻辑_哔哩哔哩_bilibili的学习,感谢up小凡生一 在两年半前,埃隆马斯克收购了Twitter,并且进行了一系列重大改革。今天我们来解析一下这个全球知名社交平台的架构。首先&#x…...

模拟集成电路设计与仿真 : Feedback System

前情提要 此為作者針對迴授系統,進行資料統整,以便日後查詢 原理 1. The Whole System 更正 : V - V feedback 是 並 - 串 迴授 2. Feedback Block Beta 更正 : ,所以 the whole systemfeedback block左 2右 1 feedback block feed…...

Linux权限管理进阶:文件归属、特殊权限与ACL详解

一、文件归属管理:chown命令 1. 基础语法与作用 chown 命令用于修改文件或目录的 属主(Owner) 和 属组(Group),是Linux权限管理中调整资源归属的核心工具。 chown [选项] 新属主:新属组 文件/目录 常用…...

MyBatis、MyBatis-Plus、Hibernate、Spring Data JPA 等 Java 持久层技术的理解和对比

一、基本概念 1. MyBatis 是一个 半自动的 ORM 框架(Object-Relational Mapping),用于简化 JDBC 开发。它允许你通过 XML 或注解配置 SQL 语句,将 Java 对象与 SQL 查询结果进行映射。 2. MyBatis-Plus(MP&#xff…...

如何用vivado导出pin delay

目录 简介: Vivado工具导出pin delay步骤: 简介: 通过在一些等长要求比较严格的场合,会考虑到FPGA内部的走线,这时候就需要用到方法去导出fpga的pin delay。本文以xinlinx 的UltraScale系列的XCKU060-2FFVA1156I为例…...

【图片识别改名】批量读取图片区域文字识别后批量改名,基于Python和腾讯云的实现方案

项目场景 ​​办公文档管理​​:将扫描的发票、合同等文档按编号、日期自动重命名。例如,识别“编号:2023001 日期:20230403”生成“2023001_20230403.jpg”。​​产品图片整理​​:电商产品图片按产品编号、名称自动命名。例如,…...

数字中国浪潮下:Coremail AI赋能邮件办公,筑牢安全防线引领转型

4月28日,在第八届数字中国建设峰会新产品新技术发布会上,Coremail分享了AI在邮件产品领域的最新应用成果和实践经验。 作为互联网之后的又一波技术浪潮,人工智能(AI)已成为推动各行业变革的核心力量,为企业…...

软件设计师-软考知识复习(1)

写在前面 复习软考,把一些忘记了的知识整理一下,方便后续查看。 设码长为8,补码为11111111,其真值是多少( ) A.1 B.-1 C.127 D.128 参考答案:B 解题步骤 1. 理解补码表示法 在计算机中&…...

快速安装Arduino IED的STM32 MCU开发包

从github安装STM32 MCU开发包非常慢,很难安装成功。因此我将Arduino IED的TM32 MCU开发包上传到国内网站,亲测安装成功。 1.打开Arduino IED,文件--首选项--其它开发板管理地址,添加http://www.aluoyun.cn/BoardManagerFiles-mai…...

Html 2

一&#xff0c;表单 1.概念&#xff1a;在一个区域中&#xff0c;拥有许多输入和最终组件&#xff0c;可以让用户输入、选择信息&#xff0c;最终将信息传入服务器端 2.常用组件&#xff1a; &#xff08;1&#xff09;<form action " " methon "get&qu…...

业务层在事务中高频创建动态表然后删除或者回滚导致 pg_dump 概率出现备份失败问题分析

文章目录 测试环境&#xff0c;业务层在事务中高频创建动态表然后删除或者回滚导致 pg_dump 概率出现备份失败职责划分​​应用层对 DDL 事务的滥用​​ 导致的目录污染怎么理解&#xff1f;应用层在事务中大量高频新建动态表&#xff0c; 然后删除表, 有啥隐患​​目录版本风暴…...

图漾官网Sample_V1版本C++语言完整参考例子---单相机版本

文章目录 1.参考例子 主要梳理了图漾官网Sample_V1版本的例子 1.参考例子 主要增加了从storage区域读取相机参数的设置&#xff0c;使用图漾PercipioViewer软件&#xff0c;如何将相机参数保存到srorage区&#xff0c;可参考链接&#xff1a;保存相机参数操作 保存参数设置 注…...

SSM书籍管理(业务编写)

查询书籍功能 编写Controller类 Controller RequestMapping("/book") public class BookController {//controller调用service层AutowiredQualifier("BookServiceImpl")private BookService bookService;//查询全部的书籍&#xff0c;并且返回到书籍展示…...

kafka消息的顺序性如何保持一致的

目录 背景&#xff1a; 原理&#xff1a; 情况一&#xff1a;如果只有一个分区 情况二&#xff1a;如果有多个分区 总结 背景&#xff1a; 最近面试总是被问这个问题&#xff0c;然后总感觉答得不好就写博客总结一下&#xff0c;可以先看总结 原理&#xff1a; Kafka 中&#…...

在Java中基于Geotools对PostGIS数据库的空间查询实践

目录 前言 一、相关技术背景介绍 1、评价对象AOI 2、数据处理流程 二、对AOI空间范围查询实践 1、空间查询构建 2、空间样式创建 3、成果出图 三、总结 前言 在当今数字化浪潮下&#xff0c;空间数据的应用价值日益凸显&#xff0c;从城市规划到环境监测&#xff0c;从…...

生活需要一些思考

总分总 写文章、做事情、写邮件、写信&#xff0c;都是要【总分总】。 先总【因为没人有耐心一上来就看细节&#xff0c;先总结&#xff0c;别人感兴趣才会看分】 然后分【分中包括多个子部分&#xff0c;或子章节、子目标&#xff0c;他们之间层层递进&#xff0c;最终引出最…...

Scrapy框架之CrawlSpider爬虫 实战 详解

CrawlSpider 是 Scrapy 框架中一个非常实用的爬虫基类&#xff0c;它继承自 Spider 类&#xff0c;主要用于实现基于规则的网页爬取。相较于普通的 Spider 类&#xff0c;CrawlSpider 可以根据预定义的规则自动跟进页面中的链接&#xff0c;从而实现更高效、更灵活的爬取。 Scr…...

DeepSeek主动学习系统:低质量数据炼金术的工程化实践

文章目录 一、技术体系架构升级1.1 四层协同系统架构1.2 关键技术组件解析(1) 跨模态特征对齐引擎(2) 动态采样策略库 二、低质量数据治理全流程2.1 数据清洗与增强流水线2.2 主动学习迭代流程 三、工业级部署方案3.1 分布式计算架构3.2 动态环境应对策略(1) 概念漂移检测(2) 持…...

学习记录:DAY20

技术探索之旅&#xff1a;YAML配置&#xff0c;依赖注入、控制反转与Java注解 前言 最近有点懒了&#xff0c;太松懈可不行。为了让自己保持学习的动力&#xff0c;我决定将最近的学习内容整理成博客&#xff0c;目标是让未来的自己也能轻松理解。我会尽量以整体记录的方式呈…...

[AI]browser-use + web-ui 大模型实现自动操作浏览器

[AI]browser-use web-ui 大模型实现自动操作浏览器 介绍 官方地址&#xff1a;https://github.com/browser-use/web-ui browser-use主要作用是将 AI Agent 与浏览器链接起来从而实现由 AI 驱动的浏览器自动化。今天会给大家介绍如何通过browser-use web-ui来搭建并操作browse…...