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

JAVA面向对象2(三大特征)

面向对象的三大特征:封装、继承、多态

封装:

封装,英文单词Encapsulation。

广义的角度来说,将一块经常要使用的代码片段,定义到方法中,是封装。将多个方法和多个状态数据定义到类体中,也是一种封装。

狭义的角度来说,java的封装,就是把类的属性私有化(private修饰),再通过公有方法(public)进行访问和修改

属性封装:

只需要使用访问权限修饰词private来修饰即可

public class Person {
   String name;
   private int age;        // 将属性私有化起来,不让外界直接访问

1:  为什么要封装成员变量(属性)
      因为外界直接访问成员变量,可能会进行修改,也就会可能发生修改的值不合理。比如调用者将人的年龄这个属性可以设置10000。


2: 但是外界可能还是需要修改或者访问成员变量的。 一旦私有化成员变量,外界不能做到访问和修改。 那么如何处理呢?
       为成员变量提供public修饰的get/set方法。 为了防止外界设置的值可能不合理,可以在这些方法中进行限定。

  get方法:  用于获取成员变量的值
            public 返回值类型  getName(){        //get+属性的大驼峰命名法(-Bean)
                return this.成员变量
            }
            -  方法名get后是成员变量的大驼峰命名规则


  set方法:  用来修改成员变量的值
           public  void  setName(String name){
               this.name = name;
           }
           - 方法名set后是成员变量的大驼峰命名规则

  // 给要访问的属性,设置对应的  setter/getter 方法
   public void setAge(int age) {

        if (age >= 0 && age <= 120) {
              this.age = age;
           }

   }

   public int getAge() {
      return this.age;
   }
}

 单例设计模式:

设计模式 是一套被反复使用、多数人知晓的、经过分类编目的代码设计的经验的总结。

使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

单例模式是一种常用的软件设计模式,属于创建型模式之一。它的目的是确保一个类只有一个实例,并提供一个全局访问点。

即:整个应用程序中,该类型的对象只有一个。

使用场景:

  • 频繁创建和销毁的对象:如果对象创建和销毁的成本较高,且在程序运行期间需要频繁访问,使用单例模式可以提高效率。
  • 控制资源访问:例如,数据库连接、日志对象、配置管理器等,这些资源通常希望在整个应用中只有一份实例。
  • 工具类:对于一些工具类,如缓存、对话框、注册表设置等,使用单例模式可以简化代码,避免重复实例化。

单例模式有两种设计方式: 饿汉模式和懒汉模式

单例饿汉模式:

简单理解:着急创建那个唯一的对象(*.java文件被加载到方法区是就创建该对象)

过程:

1.提供一个private权限的静态当前类属性,并在静态代码段中进行实例化。

2.构造方法私有化,杜绝从外界通过new的方式实例化对象的可能性。(保证这个对象只有一个,外界不能创建新的对象)

3.提供一个public权限的静态方法,获取唯一一个当前类的对象


public class Boss {
   // 1、设计一个私有的、静态的、当前类的对象
   private static Boss instance;
   static {
      // 对instance静态对象进行实例化   静态代码区 加载到方法区是就创建对象 只运行一次
      instance = new Boss();
   }
   
   // 2、将单例类的构造方法私有化,杜绝从外界通过new的方式实例化对象的可能性。
   private Boss() {
      System.out.println("一个Boss对象出现了 "); 
   }

   // 3、需要提供一个public权限的静态方法,可以获取一个当前类的对象。
   public static Boss getCurrentBoss() {
      return instance;
   }
}

主函数里:
    //使用==来判断引用变量里的地址是否时同一个地址(同一个对象)
    Boss i1=Boss.getCurrentBoss();
    Boss i2=Boss.getCurrentBoss();
    System.out.println(i1==i2);    //地址相同,即对象只创建了一个

单例懒汉模式:

简单理解:不着急创建唯一对象 ,不需要在加载期间就创建对象,第一次访问时才创建对象。

过程:

1.提供一个private权限的静态当前类属性。

2.构造方法私有化,杜绝从外界通过new的方式实例化对象的可能性。(保证这个对象只有一个,外界不能创建新的对象)

3.提供一个public权限的静态方法,负责创建单例对象:

        第一次调用时会初始化单例,后续调用则直接返回以及存在的单例。


public class Master {

//1.提供一个private权限的静态当前类属性。

   private static Master instance;
 // 2.构造方法私有化 
   private Master() {
      System.out.println("一个Chairman对象被实例化了 "); 
   }
   
   public static Master getMaster() {
       //3.访问时才初始化
      // 使用到instance对象的时候,判断是不是null,instance里面存储地址
      if (instance == null) {
         // 实例化
         instance = new Master();
      }
      return instance;//第一次调用时会初始化单例,后续调用则直接返回以及存在的单例。
   }
}
主函数里:
    使用==来判断引用变量里的地址是否时同一个地址(同一个对象)
    Master m1=Master.getMaster();
    Master m2=Master.getMaster();
    System.out.println(m1==m2);    

两者比较:

基本都是一样的,都可以获取到一个类的唯一的对象。

1 、在没有使用获取当前类对象之前,懒汉式单例比饿汉式单例在内存上有较少的资源占用。

2 、懒汉式单例在多线程的环境下有问题。需要考虑线程安全

 继承:

是面向对象最显著的一个特征。

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

为什么引用继承这个概念:
           可以重复使用父类的中代码,派生出来的子类少写了很多代码,同时还可以进行扩展其他的成员。 提高代码的开发效率。

 已有的类:父类,基类,超类

派生出来的新类:子类,派生类


使用关键字extends来表示子类继承了父类,

语法:

修饰词 class  子类名  extends 父类名{
     //子类的类体
}


class A{}  //父类
class B extends A{}  //B是A的子类
class C extends B{}  //C是B的子类

 继承的特点

  • Java只支持单继承,即:一个类只有一个父类,但是一个类可以有多个子类
  • Java支持多重继承,即:一个类在继承一个父类的同时,还可以被其他类继承,继承具有传递性
  • 父类中的所有成员(成员变量,成员方法,静态变量,静态方法,及其私有的)都被子类继承,但私有的不能被子类访问,没有权限
  • 子类不能继承父类的构造器,只能调用父类的构造器,而且子类中至少有一个构造器一定调用了父类中的某一个构造器(super ())
  • 子类在继承的时候,可以有自己独有的成员变量和成员方法

单继承: 

多重继承:

不同类继承同一个类:

多继承(Java不支持):

 这个创建一个父类:Human

public class Human {String name;private int age;//封装agechar gender;public static int count = 0;//静态属性public Human() {}//无参构造public Human(String name, int age, char gender) {//全参构造this.name = name;this.age = age;this.gender = gender;}public String getName() {//get方法return name;}public void setName(String name) {//set方法this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String toString(){return name+","+age+","+gender;}public static double getPI(){System.out.println(count);return Math.PI;}private double sum(){//私有方法return 1+2;}
}

 继承中的构造器

一个对象在实例化的时候,需要在堆上开辟空间:

堆中的空间分为两部分:

分别是:从父类继承到的属性    和    子类特有的属性

而实例化父类部分的时候,需要调用父类中的构造方法。

强调:子类在创建对象时,从父类中继承过来的属性,是由调用父类中的构造器开辟内存空间的。


默认调用的是父类中的无参构造器。如果父类中没有无参构造器,那么子类需要显式调用父类中的某一个有参构造器。


在子类的构造方法中,使用super(有参传参)调用父类中存在的构造方法,

而且super(有参传参)必须放在首行首句的位置上。

因此,super(有参传参)和this(有参传参)不能在一个构造器中共存(两个都首行首句会冲突)


这里创建个Employee类继承Human类:

public class Employee extends Human{private String name;//子类新定义的属性可以和父类同名private double salary;//子类新增salary属性public Employee(){//无参构造super("xiaohong",23,'女');//传参调用父类中的构造方法}public Employee(String id, double salary, String name,int age,char gender){//全参构造this.name = id;//id赋给子类namesuper.name = name;//name赋给父类中的namethis.salary = salary;//salary赋给salary//this.name = "aaaa";  //父类的私有的成员不能直接访问//setName(name);   //  因为直接调用没有报错,说明继承过来了,前面隐藏了this.setAge(age);//封装属性需要set方法传值this.gender = gender;}public void work(){//验证的静态变量Human.count++;int count1 = Employee.count;System.out.println(count1);// 结果:1  证明子类调用的count值同父类静态count值一样double pi = Human.getPI();// 调用父类的方法访问PI和count值 count=1double pi1 = Employee.getPI();//调用子类继承的父类方法访问 count=1//this.sum(); // 私有的方法没有访问权限, 但是子类已经继承过来了}public String toString(){return name+","+salary+","+getName()+","+getAge()+","+gender;}public static void main(String[] args) {Employee e  = new Employee("1001",2000.0,"小红",23,'女');System.out.println(e.toString());e.work();}
}

 继承中的方法重写

重写,叫做override。

在子类中,对从父类继承到的方法进行重新的实现。

这个过程中,子类重写该方法,会覆盖掉继承自父类中的实现方法,因此,重写又叫做覆写。

为什么重写呢?

        为父类的方法逻辑不能满足子类的需求了,因此子类需要修改逻辑(重写)


重写的特点:

-- 子类只能重写父类中存在的方法。
-- 重写时,子类中的方法名和参数要与父类保持一致。(区别于重载overload)
-- 返回值类型:必须和父类方法的返回值类型相同,或者是其子类型。
-- 访问权限:子类重写方法的访问权限必须大于等于父类方法的访问权限。


注解@Override

用在重写的方法之前,表示验证这个方法是否是一个重写的方法

如果是,程序没有问题。如果不是,程序会报错。

因为我们在进行方法重写的时候,没有什么提示的,因此,在进行重写之前,最好加上去这个注解。

误区:加了@Override就是重写,没有加@Override就不是重写。 这种说法是错误的! @Override只是进行的一个语法校验,与是不是重写无关。

简述 Override 和 Overload 的区别

Override: 是重写,是子类对父类的方法进行重新实现。

Overload: 是重载,是对同一个类中的同名、不同参数方法的描述。


public class Person extends Object {public void sum(int a, int b) {System.out.println(a + b);}protected String getName(){return "小红";}public Animal getAge(){return null;}private Dog getOther(){return null;}
}
//重写
class Student extends Person{@Overridepublic void sum(int a, int b){System.out.println( a * b);}public void sum(int a,int b,int c){}@Overridepublic String getName(){return "小红";}@Overridepublic Dog getAge(){return null;}//@Override    不是重写。protected Dog getOther(){return null;}
}class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}

 Object类型

是所有引用类型的顶级父类(根类)

Object中提供了常用的共有的方法,比如toString,hashCode(),equals等方法

所有的引用类型,包括自定义的类型,都会默认直接或者间接的继承Object.

 toString()方法:

 用来返回对象的属性信息的。
      默认源码如下:   返回的是对象的类全名@hashCode的16进制
       public String toString() {
          return getClass().getName() + "@" + Integer.toHexString(hashCode());
       }
 
      源码的提供的逻辑并不是我们程序要想要的信息(一般不看变量的地址信息)
      因此:需要重写。
      而且该方法不需要手动调用,当对象的变量直接书写在输出语句中,会默认调用toString().


 @Override
    public String toString(){
        return "["+ tid +" "+name +" "+age + "]";
    }

hashCode()方法:

该方法返回的是一个int类型的值。表示对象在内存堆中的一个算法值。
    在自定义类型时,一般都需要重写,减少哈希冲突
    重写原因:
    1.返回的是int类型,值最多是42亿左右。 每个对象都有一个hash值,如果不是自定义,碰撞概率不可控
    2.尽量让对象的所有成员参与运算
    3.尽量自己控制hash值 减少碰撞概率


@Override
    public int hashCode() {
        int hash = 7;
        hash = hash+tid.hashCode();
        hash = hash+name.hashCode();
        hash = hash+age;
        return hash;
    }

equals(Object obj)方法:

用来比较两个对象的属性是否完全相同

源码的逻辑:是比较两个是不是同一个对象,该意义并不大。

 public boolean equals(Object obj) {
              return (this == obj);
         }

重写规则:
         1.  如果 obj == null , 直接返回false
         2.  如果 obj的类型和this的类型不是同一个,直接返回false
         3.  如果传入obj == this. 直接返回true
         4.  然后再比较两个对象的各个属性。

注意:

==   用来比较两边的变量里存储的是否为同一个地址
equals  一般用于比较两个对象的属性。


 @Override
    public boolean equals(Object obj) {
        if(obj == null){
            return false;
        }
       if(obj.getClass() !=this.getClass()){
           return false;
       }
        if(obj == this){
            return true;
        }
       Teacher t = (Teacher) obj;
       return this.tid.equals(t.getTid()) && this.name.equals(t.getName()) && this.age == t.getAge();
    }

相关文章:

JAVA面向对象2(三大特征)

面向对象的三大特征&#xff1a;封装、继承、多态 封装&#xff1a; 封装&#xff0c;英文单词Encapsulation。 从广义的角度来说&#xff0c;将一块经常要使用的代码片段&#xff0c;定义到方法中&#xff0c;是封装。将多个方法和多个状态数据定义到类体中&#xff0c;也是一…...

Spring Cloud工程完善

目录 完善订单服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 完成商品服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 远程调用 需求 实现 1.定义RestTemplate 2.修改order-service中的OrderService 测试运行 Rest…...

AI大模型随机初始化权重并打印网络结构方法(以Deepseekv3为例,单机可跑)

背景 当前大模型的权重加载和调用&#xff0c;主要是通过在HuggingFace官网下载并使用transformer的库来加以实现&#xff1b;其中大模型的权重文件较大&#xff08;部分>100GB&#xff09;&#xff0c;若只是快速研究网络结构和数据流变化&#xff0c;则无需下载权重。本文…...

介绍下SpringBoot常用的依赖项

Spring Boot 是一个用于快速开发 Spring 应用程序的框架&#xff0c;它通过自动配置和依赖管理简化了开发过程。以下是一些 Spring Boot 项目中常用的依赖项&#xff1a; 1. Spring Boot Starter Web 作用: 用于构建 Web 应用程序&#xff0c;包括 RESTful 服务。依赖项: spr…...

第四节 docker基础之---dockerfile部署JDK

本地宿主机配置jdk 创建test目录&#xff1a; [rootdocker ~]# mkdir test 压缩包tomcat和jdk上传到root/test目录下&#xff1a; 本机部署Jdk 解压jdk&#xff1a; [rootdocker test]# tar -xf jdk-8u211-linux-x64.tar.gz [rootdocker test]# tar -xf apache-tomcat-8.5.…...

Vue基础:index.html、App.vue、main.js三个文件的联系

index.html、App.vue、main.js三个文件的联系 当vue项目npm run dev启动成功后&#xff0c; 浏览器就可以通过路径访问页面&#xff0c;那么这个页面到底展示的是哪个文件里的内容呢&#xff1f; 如果对前端vue有一定的基础知识&#xff0c;这篇文章可忽略。 在vue项目的目录结…...

数据库 绪论

目录 数据库基本概念 一.基本概念 1.信息 2.数据 3.数据库&#xff08;DB&#xff09; 4.数据库管理系统&#xff08;DBMS&#xff09; 5.数据库系统&#xff08;DBS&#xff09; 二.数据管理技术的发展 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 4.数据库管…...

26~31.ppt

目录 26.北京主要的景点 题目 解析 27.创新产品展示及说明会 题目​ 解析 28.《小企业会计准则》 题目​ 解析 29.学习型社会的学习理念 题目​ 解析 30.小王-产品展示信息 题目​ 解析 31.小王-办公理念-信息工作者的每一天 题目​ 解析 26.北京主要的景点…...

AutoMQ 如何实现没有写性能劣化的极致冷读效率

前言 追赶读&#xff08;Catch-up Read&#xff0c;冷读&#xff09;是消息和流系统常见和重要的场景。 削峰填谷&#xff1a;对于消息来说&#xff0c;消息通常用作业务间的解耦和削峰填谷。削峰填谷要求消息队列能将上游发送的数据堆积住&#xff0c;让下游在容量范围内消费…...

启动gateway时Failed to configure a DataSource

问题 在启动网关时候启动失败,报错: 原因很明显,就是没有配制数据库连接信息 实际上是因为在网关模块中导入的某个依赖里面引入了MyBatis的依赖,导致启动的时候自动配置数据库源 但是在这个网关模块中是不需要数据数据库的 解决...

node 程序占用处理方法与后台运行方法

程序占用 如果你在关闭终端后重新运行 node server.js&#xff0c;但提示端口 3000 被占用&#xff0c;说明之前的服务器进程仍然在后台运行。以下是解决方法&#xff1a; 1. 检查后台运行的 Node.js 进程 首先&#xff0c;检查是否有 Node.js 进程正在占用端口 3000。 在 L…...

C# OpenCV机器视觉:对位贴合

在热闹非凡的手机维修街上&#xff0c;阿强开了一家小小的手机贴膜店。每天看着顾客们自己贴膜贴得歪歪扭扭&#xff0c;不是膜的边缘贴不整齐&#xff0c;就是里面充满了气泡&#xff0c;阿强心里就想&#xff1a;“要是我能有个自动贴膜的神器&#xff0c;那该多好啊&#xf…...

【计算机网络】TCP/IP 网络模型有哪几层?

目录 应用层 传输层 网络层 网络接口层 总结 为什么要有 TCP/IP 网络模型&#xff1f; 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;而对于不同设备上的进程间通信&#xff0c;就需要网络通…...

本地部署Deepseek R1

使用Ollama open-webui部署Deepseek R1 一、安装Ollama 官网地址&#xff1a;https://ollama.com/&#xff0c;点击下载按钮选择windows版本。并安装 打开命令提示符输入ollama&#xff0c;出现一下提示命令表示ollama安装完成 二、使用Ollama下载deepseek R1不同模型 打开o…...

PHP盲盒商城系统源码 晒图+免签+短信验证+在线回收 thinkphp框架

源码介绍 PHP盲盒商城系统源码 晒图免签短信验证在线回收 thinkphp框架 源码前端uniapp开发&#xff0c;可以打包成APP&#xff08;非H5封壳&#xff09;H5&#xff0c;接其他平台支付通道&#xff0c;前后端全开源 H5盲盒首页可以直接开盒新UI 修复优化BUG&#xff0c;修复无…...

[Do374]ansible-nagivator考前整理

[Do374]ansible-nagivator考前整理 1. Ansible-Navigator 升级后的变化1.1 主要变化1.2 重大改变 2. ansible主要配置文件2.1 .ansible-navigator.yml2.2 ansible.cnf 3. 常用模块3.1 file模块3.2 copy模块3.3 user模块和lookup模块3.4 yum和yum_repository模块3.5 systemd和se…...

deepseek+kimi自动生成ppt

打开deepseek官网&#xff0c;输入详细的需求&#xff0c;让他生成个ppt 接着deepseek开始思考生成了 接着复制生成了的内容 打开kimi粘贴刚才deepseek生成的内容 可以一键生成啦&#xff0c;下载编辑使用吧...

循环神经网络学习01——transformer:输入部分-嵌入层位置编码

一、介绍 1、核心思想 利用自注意力机制来捕获输入序列中各元素之间的全局依赖关系&#xff0c;无论这些元素之间的实际距离有多远。 自注意力机制&#xff1a;允许模型在处理序列的每个元素时&#xff0c;考虑到序列中的所有其他元素&#xff0c;从而捕捉它们之间的关系和依…...

centos系统清理docker日志文件

在CentOS系统中&#xff0c;Docker日志文件的不断增长可能会占用大量磁盘空间&#xff0c;影响系统性能和正常运行。为了保持系统的健康状态&#xff0c;需要定期清理Docker日志文件。本文将详细介绍如何在CentOS系统上清理Docker日志文件的具体步骤和方法。 Docker日志文件位…...

低成本+高性能+超灵活!Deepseek 671B+Milvus重新定义知识库搭建

“老板说&#xff0c;这个项目得上Deepseek,还得再做个知识库...” 还有哪个开发者&#xff0c;最近没听到这样的抱怨&#xff1f; Deepseek爆火&#xff0c;推理端的智能提速&#xff0c;算力成本急剧下降&#xff0c;让不少原本不想用大模型&#xff0c;用不起大模型的企业&a…...

Windows 本地部署大模型 OpenWebUI+Ollama

安装Ollama Ollama官方网址&#xff1a;https://ollama.com 下载运行大模型 在Ollama官网中查看需要下载的大模型 https://ollama.com/library 复制图片中的链接 打开cmd&#xff0c;运行此命令&#xff08;此过程会时间会很久&#xff09; 下载Miniconda Miniconda作用是…...

【iOS自动化】Xcode配置WebDriverAgent

WebDriverAgent 是 iOS 端自动化测试的工具&#xff0c;这里记录下 MacOS 环境 Xcode 如何配置 WebDriverAgent。 【重要】环境准备 ‼️ 注意&#xff1a;Xcode 版本需要支持对应的 iOS 版本&#xff0c;而 Xcode 版本又依赖 MacOS 版本&#xff1b;在开始部署前&#xff0c…...

RabbitMQ 延迟队列

1.延迟队列插件安装(版本号要对其&#xff09; Releases rabbitmq/rabbitmq-delayed-message-exchange GitHub 下载的文件: rabbitmq_delayed_message_exchange-3.13.0.ez 直接复制到以下文件夹&#xff1a; \RabbitMQ Server\rabbitmq_server-3.13.7\plugins\ 执行命令…...

JVM-Java虚拟机

基础知识 JVM的定义与作用 定义&#xff1a;JVM是Java语言的一部分&#xff0c;它是一个虚拟的计算机&#xff0c;通过它可以执行Java程序。 作用&#xff1a; 跨平台支持&#xff1a;实现了“编译一次&#xff0c;到处运行”的目标。 自动内存管理&#xff1a;通过垃圾回收…...

Unity底层C#处理机制深度解析

一、Unity脚本执行架构 Unity采用分层架构处理C#脚本&#xff0c;核心由以下组件构成&#xff1a; 脚本引擎层 Mono Runtime&#xff08;旧版本&#xff09; IL2CPP&#xff08;2015版本&#xff09; Burst Compiler&#xff08;DOTS体系&#xff09; 原生交互层 Runtime …...

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到&#xff0c;别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中&#xff0c;实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构&#xff0c;还是监…...

MFC 应用最小化到系统托盘

本指南将实现 MFC 应用程序在关闭时最小化系统托盘的功能&#xff0c;并左键和右键系统托盘图标进行交互。 目标&#xff1a; 左键点击托盘图标&#xff1a;恢复对话框窗口。右键点击托盘图标&#xff1a;弹出右键菜单&#xff0c;提供 恢复窗口 和 退出程序 两个选项。退出时…...

C++ ——从C到C++

1、C的学习方法 &#xff08;1&#xff09;C知识点概念内容比较多&#xff0c;需要反复复习 &#xff08;2&#xff09;偏理论&#xff0c;有的内容不理解&#xff0c;可以先背下来&#xff0c;后续可能会理解更深 &#xff08;3&#xff09;学好编程要多练习&#xff0c;简…...

【OCPP】ocpp1.6J协议框架说明

目录 1.简介 1.1.本文件的目的 1.2.目标受众 1.3. OCPP-S and OCPP-J 1.4. 约定 1.5.定义和缩写 1.6.参考 2.优点和问题 3.连接 3.1.客户要求 3.1.1.连接URL 3.1.2.OCPP版本 3.1.3.打开HTTP请求的示例 3.2.服务器响应 3.3.更多信息 4.RPC框架 4.1.介绍 4.1.1…...

Swipe横滑与SwipeItem自定义横滑相互影响

背景 vue项目&#xff0c;H5页面&#xff0c;使用vant的组件库轮播组件<Swipe>&#xff0c;UI交互要求&#xff0c;在每个SwipeItem中有内容&#xff0c;可自横滑&#xff0c;查看列表内容 核心代码 <template><Swipeclass"my_swipe":autoplay&quo…...

渗透利器工具:Burp Suite 联动 XRAY 图形化工具.(主动扫描+被动扫描)

Burp Suite 联动 XRAY 图形化工具.&#xff08;主动扫描被动扫描&#xff09; Burp Suite 和 Xray 联合使用&#xff0c;能够将 Burp 的强大流量拦截与修改功能&#xff0c;与 Xray 的高效漏洞检测能力相结合&#xff0c;实现更全面、高效的网络安全测试&#xff0c;同时提升漏…...

C# 学习目录

以下内容仅供参考 基础概念 数据类型(使用与定义)-CSDN博客 var使用-CSDN博客 运算符&#xff08;new、sizeof、is、as)_new 运算符-CSDN博客 数据结构 数组定义与使用-CSDN博客 动态数组和泛型集合-CSDN博客 字典&#xff08;Dictonary)-CSDN博客 集合类型&#xff0…...

react native学习【9】——动态路由

react native学习【9】——动态路由 1、进入终端2、动态路由dynamic router3、编写app/_layout.jsx布局文件4、创建动态路由5、完善index.jsx文件6、完善[id].jsx文件扩展运算符...7、完整的index.jsx文件1、进入终端 2、动态路由dynamic router 官方网站 视频中的举例:当我们…...

[AI]Mac本地部署Deepseek R1模型 — — 保姆级教程

[AI]Mac本地部署DeepSeek R1模型 — — 保姆级教程 DeepSeek R1是中国AI初创公司深度求索&#xff08;DeepSeek&#xff09;推出大模型DeepSeek-R1。 作为一款开源模型&#xff0c;R1在数学、代码、自然语言推理等任务上的性能能够比肩OpenAI o1模型正式版&#xff0c;并采用MI…...

LeetCodehot 力扣热题100 验证二叉搜索树

class Solution {vector<int> nums; // 用来存储二叉树节点值的数组 public:bool isValidBST(TreeNode* root) {inorder(root); // 中序遍历二叉树&#xff0c;填充 nums 数组// 遍历 nums 数组&#xff0c;检查是否为严格递增序列for(int i0; i<nums.size()-1; i){…...

使用Kickstart配置文件封装操作系统实现Linux的自动化安装

使用Kickstart配置文件封装操作系统实现Linux的自动化安装 创建ks.cfg配置文件 可以使用已经安装完成的Linux操作系统中的/root目录下的anaconda.cfg配置文件 注意&#xff0c;配置文件会因为kickstart的版本兼容性的问题导致无法安装报错需要在实际使用过程中删除某些参数 …...

前端开发架构师Prompt指令的最佳实践

前端开发架构师Prompt 提示词可作为系统提示词使用&#xff0c;可基于用户的需求输出对应的编码方案。 本次提示词偏向前端开发的使用&#xff0c;如有需要可适当修改关键词和示例。 推荐使用 Cursor 中作为自定义指令使用Cline 插件中作为自定义指令使用在力所能及的范围内使…...

flink判断两个事件之间有没有超时(不使用CEP)

1.为啥不使用cep呢&#xff0c;cep的超时时间设置不好配置化&#xff0c;无法满足扩展要求 2.超时怎么界定。A事件发生后&#xff0c;过了N时间&#xff0c;还没有收到B事件&#xff0c;算超时。 代码如下&#xff1a; import com.alibaba.fastjson.JSONObject; import lombo…...

vue3+ts+vite+element plus设置日期时间禁止选择小于当前时间精确到时分秒

ts组件 // timeUtils.ts/*** 生成一个数组* param start* param end*/ export const makeRange (start: number, end: number): number[] > {const result: number[] [];for (let i start; i < end; i) {result.push(i);}return result; };/*** 限制今天之前的时间不…...

2025web寒假作业二

一、整体功能概述 该代码构建了一个简单的后台管理系统界面&#xff0c;主要包含左侧导航栏和右侧内容区域。左侧导航栏有 logo、管理员头像、导航菜单和安全退出按钮&#xff1b;右侧内容区域包括页头、用户信息管理内容&#xff08;含搜索框和用户数据表格&#xff09;以及页…...

2025.2.8——二、Confusion1 SSTI模板注入|Jinja2模板

题目来源&#xff1a;攻防世界 Confusion1 目录 一、打开靶机&#xff0c;整理信息 二、解题思路 step 1&#xff1a;查看网页源码信息 step 2&#xff1a;模板注入 step 3&#xff1a;构造payload&#xff0c;验证漏洞 step 4&#xff1a;已确认为SSTI漏洞中的Jinjia2…...

Mysql 函数解析

文章目录 一、模糊匹配【like】二、CASE函数1、简单case2、搜索case3、搜索case 聚合函数 一、模糊匹配【like】 一般形式为&#xff1a;列名 [NOT] LIKE ‘%关键字%’&#xff0c;示例如下&#xff1a; like %北京%列名包括北京的字样like ‘北京%’ 列名北京开头like ‘%北…...

Docker 部署 MongoDB | 国内阿里镜像

一、简易单机版 1、镜像拉取 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mongo:8.0.5-rc1 2、运行镜像 docker run -it --name mongodb \ -e MONGO_INITDB_ROOT_USERNAMEmongoroot \ -e MONGO_INITDB_ROOT_PASSWORDmongoroot \ -v /wwwroot/opt/docker/mong…...

加速度计信号处理

【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究&#xff08;Matlab代码实现&#xff09;_加速度计滤波器-CSDN博客 https://wenku.baidu.com/view/622d38b90f22590102020740be1e650e52eacff9.html?_wkts_1738906719916&bdQ…...

Baumer工业相机堡盟相机的相机传感器芯片清洁指南

Baumer工业相机堡盟相机的相机传感器芯片清洁指南 Baumer工业相机1.Baumer工业相机传感器芯片清洁工具和清洁剂2.Baumer工业相机传感器芯片清洁步骤2.1、准备步骤2.2、清洁过程1.定位清洁工具2.清洁传感器3&#xff0e;使用吹风装置 Baumer工业相机传感器芯片清洁的优势设计与结…...

20240824 美团 笔试

文章目录 1、单选题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、编程题2.12.2岗位:硬件开发工程师(嵌入式系统软件开发方向) 题型:20 道单选题,2 道编程题题 1、单选题 1.1 C 语言中,如果输入整数 v 是 2 的幂,下面表达式中哪个会返…...

【扫描件PDF】如何批量识别扫描件PDF多个区域内容保存到Excel表格,基于WPF和腾讯OCR的详细解决方案

在很多实际业务场景中&#xff0c;需要对大量扫描件 PDF 中的特定区域内容进行识别并整理到 Excel 表格里&#xff0c;以下是一些常见的应用场景&#xff1a;物流运单扫描件 PDF 中包含发货人信息、收货人信息、货物信息等。批量识别这些区域内容到 Excel 表格&#xff0c;有助…...

Django开发入门 – 3.用Django创建一个Web项目

Django开发入门 – 3.用Django创建一个Web项目 Build A Web Based Project With Django By JacksonML 本文简要介绍如何利用最新版Python 3.13.2来搭建Django环境&#xff0c;以及创建第一个Django Web应用项目&#xff0c;并能够运行Django Web服务器。 创建该Django项目需…...

C# OpenCV机器视觉:OSTU算法实现背景差分的自适应分割

在一个热闹的科技公司里&#xff0c;阿强是一个负责图像分析的员工。他的日常工作就是从各种复杂的图像中提取出有用的信息&#xff0c;可这可不是一件轻松的事情哦 最近&#xff0c;阿强接到了一个艰巨的任务&#xff1a;要从一堆嘈杂的监控图像中分离出运动的物体&#xff0c…...

SIPp的参数及命令示例

以下是SIPp参数的分类表格整理&#xff0c;方便快速查阅和使用&#xff1a; SIPp 参数分类表格 分类参数描述默认值示例基本参数-sc指定XML场景文件&#xff08;客户端模式&#xff09;无-sc uac.xml-sd指定XML场景文件&#xff08;服务器端模式&#xff09;无-sd uas.xml-i本…...