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

java面向对象从入门到入土

面向对象进阶

(写程序的套路)

面向:拿,找

对象:能干活的东西

面向对象编程:拿东西过来做对应的事情

(写程序的套路)

面向:拿,找

对象:能干活的东西

面向对象编程:拿东西过来做对应的事情

请添加图片描述

重点学习:学习已有对象并使用,学习如何自己设计对象并使用

设计对象并使用

类和对象:

类(设计图):是对象共同特征的描述

对象:是真实存在的具体的东西

在java中,必须先设计类,才能获得对象

在这里插入图片描述

如何定义类:

在这里插入图片描述

使用对象:

访问属性:对象名.成员变量

访问行为:对象名.方法名()

类的补充注意事项

用来描述一类事物的类,专业叫做:javabean类,在javabean类中,是 不写main方法的

在以前,编写main方法的类,叫做测试类。我们可以在测试类中创建javabean类的对象并进行赋值调用

在这里插入图片描述

一般一开始成员变量不给值,而是创建变量后给值

在这里插入图片描述

注意:

类名首字母建议大写,英文,有意义,满足驼峰模式,不能用关键字,满足标识符规定

一个java文件中可以定义多个类,但是只能一个类是public修饰的

public修饰的类名必须是java代码的文件名称

成员变量的完整定义格式是:修饰符 数据类型 变量名称 =初始化值;

一般无需指定初始化值

开发中类的设计

封装

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

封装:如何正确的设计对象的属性和代码

原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

例子:人画圆,人关门

封装的好处

private关键字

权限修饰符

可以修饰成员(成员变量和成员方法)

被private修饰的成员只能在本类中才能访问

过滤通道

在这里插入图片描述

this关键字

主要是解决同一单词的变量并加以区分:区分成员变量和局部变量

成员变量和局部变量,就近原则:谁离我近,我就用谁

局部变量,表示测试类中调用方法传递过来的数据

在这里插入图片描述

this.age用的是成员变量

构造方法(构造器,构造函数)

创建对象的时候,由虚拟机自动调用,给成员变量进行初始化的

作用:在创建对象的时候给成员变量进行赋值

Studet s =new Studet();

创建对象,调用的空参构造

如果我们没有写任何的构造方法

那么虚拟机会给我们加一个空参构造方法

在这里插入图片描述

构造方法注意事项:

如果没有定义构造方法,系统将给出一个默认的无参数构造方法

如果定义了构造方法,系统将不再提供默认的构造方法

构造方法的重载:

带参构造方法,和无参数构造方法,两者办法名相同,但是参数不同,这叫做构造方法的重载

无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法

种类:

无参数构造方法:初始化对象时,成员变量的数据均采用默认值

有参数构造方法:在初始化对象时,同时可以为对象进行赋值

标准的javabean类

类名需要见名知意

成员变量使用private修饰

提供至少两个构造方法

无参数构造方法

带全部参数的构造方法

成员方法

提供每一个成员变量对应的setXxx()/getXxx()

如果还有其他行为,也需要加上

快捷键:alt +insert

插件PTG 1秒生成标准javabean

对象内存图

在这里插入图片描述

在这里插入图片描述

加载字节码文件归属元空间

在这里插入图片描述

一个对象的内存图

Student s =new Student();

1.加载class文件

2.申明局部变量

3.在堆内存中开辟一个空间

4.默认初始化

5.显式初始化;成员变量一开始在类中给他赋值

6.构造方法初始化

7.将堆内存中的地址值赋值给左边的局部变量

在这里插入图片描述

main方法结束,堆内存也消失

在这里插入图片描述

只要出现了new,就在堆内存开辟了一个空间
在这里插入图片描述

null赋值给stu1,说明stu1没有指向任何空间

要是栈内存中没有任何变量指向堆内存中的一个空间,那么这个堆内存的空间就报废了

基本数据类型和引用数据类型

基本数据类型:记录的时真实的数据值

在这里插入图片描述

引用数据类型:使用其他空间的数据

在这里插入图片描述

在这里插入图片描述

从内存的角度去解释

基本数据类型:数据值是存储在自己的空间中

特点:赋值给其他变量,也是赋的真实的值

引用数据类型:数据值是村塾在其他空间中,自己空间中存储的是地址值

特点:赋值给其他变量,赋的地址值

Student 是=new Student();

Student s2= s1;

this的内存原理

this作用:区分局部变量和成员变量

this本质:所在方法调用者的地址值

在这里插入图片描述

在这里插入图片描述

成员变量和局部变量的区别

成员变量:类中方法外的变量, 有默认初始化值,堆内存的对象,对象创建而存在,随着对象的消失而消失,在整个类中有效

局部变量:方法中的变量,没有默认初始化值,使用之前需要赋值,栈内存的方法。随着方法的调用二存在,随着方法的运行而消失,当前方法中有效

在这里插入图片描述

static-静态变量

ctrl+d向下复制一行

shift+alt+下键,向下移动一行

构造:选中代码,alt+ins。

鼠标滚轮按着不动竖着选或者alt不松加鼠标左键

如果在一个类里的属性假如加上static,就只能被赋值一次
public static String *teachername*;

static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量

被static修饰的成员变量,叫做静态变量被static修饰的成员方法,叫做静态方法
特点:1.被该类所有对象共享 2.不属于对象,属于类3.随着类的加载而加载,优先于对象存在特点:1.多在测试类和工具类使用 2.javabean类很少会使用
调用方式:1.类名调用(推荐)2.对象名调用调用方式:1.类名调用(推荐)2.对象名调用

不加public和加了有什么区别?

static内存图:静态变量是随着类的加载而加载的,优先于对象出现的

在这里插入图片描述

在这里插入图片描述

工具类

帮助我们做一些事情,但是不描述任何事物的方法

javabean类:用来描述 一类事物的类。比如,Student,Teacher,Dog,Cat等

测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的主入口

工具类:不是用来描述一类事物的,而是帮我们做一些事情的类

类名见名知意;

私有化构造方法:不要在外部创建对象

方法定义为静态的:方便调用

static的注意事项

  • 静态方法只能访问静态变量进和静态方法
  • 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
  • 静态方法中是没有this关键字

总结:

静态方法中,只能访问静态。非静态成员变量和成员方法

非静态方法可以访问所有

静态方法中没有this关键字

代码方面理解

//this:表示当前方法调用者的地址值
//这个this:是虚拟机赋值的
this:分辨每个实例的属性
public  void show(Student this){System.out.println(this.name+","+age+","+gender);//可以在里面假如this}
s1.show();
s2.show();

静态方法没有this关键字

内存方面解释

静态随着类的加载而加载,非静态跟对象有关的

静态方法只能访问静态:

静态方法不能调用实例变量,对象还没有

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

重新认识main方法

public static void main(String[] args) {

  • public:被jvm调用,访问权限足够大
  • static:被jvm调用,不是创建对象,直接类名访问,因为main方法是静态的,所以测试类中其他方法也需要是静态的
  • void:被JVM调用,不需要给JVM返回值
  • main:一个通用的名称,虽然不是关键字,但是被JVM识别
  • String[] args:以前用于接受键盘录入数据,现在没用(edit confuguration)

继承

**封装:**对象代表什么,就得封装什么样的数据,并提供数据对应的行为

继承:

  • java中提供一个extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系
    • public class Student extends Person{}
  • Student称为子类(派生类),person称为父类(基类或超类)

使用继承的好处:

  • 可以把多个子类中重复的代码抽取到父类中,提高代码的复用性
  • 子类可以在父类的基础上,增加其他的功能,使子类更强大

需要学习的点;

  • 自己设计
    • 什么时候用继承
      • 当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码
  • 用别人写的

继承的特点

java只支持单继承,不支持多继承,但支持多层继承

  • 单继承:一个子类只能继承一个父类
  • 不支持多继承:子类不能同时继承多个父类(C++可以)
    • 如果两个父类方法冲突就矛盾了
  • 多层继承:子类A继承父类B,父类B可以继承父类C
    • 间接父类和直接父类
    • 每一个类都直接或者间接的继承与object

继承体系

在这里插入图片描述

画图法设计:从下往上画,提取共性到父类

写代码从上往下

在这里插入图片描述

注意:子类只能访问父类中的非私有成员

子类到底能继承父类中的哪些内容

内存图

父类中有的东西:

构造方法非私有 不能private 不能
成员变量非私有 能private 能(私有不能直接使用)
成员方法非私有 能private 不能

继承和调用不是一个东西,有的时候虽然子类把父类的东西拿过来了,但是调用不了

构造方法是否可以被继承

在这里插入图片描述

public类类名要和文件名保持一致

成员变量是否可以被继承

方法区加载 class字节码文件先加载子类然后加载父类,然后继承成员变量

其实还有一个object加载出来,但没什么关系

成员变量赋值,先找右边子类然后找左边父类

在这里插入图片描述

栈里的方法运行完出栈,堆内存的相关的对象就被清理

在这里插入图片描述

由private修饰时,给父类private修饰的成员变量赋值时,先在右边的子类找,没找到,再到左边的父类找,但这时是找不到的

成员方法是否可以被继承

子类可以继承父类的虚方法,找c的虚方法,直接在虚方法表里面找,如果不是虚方法,就逐级向上去找方法

在这里插入图片描述


在这里插入图片描述

  • 运行到main时,方法区加载TestStudent字节码文件和main()方法
  • 在运行到Zi z时,在方法区加载Zi.class字节码文件和其所有的成员方法,然后看到extends fu就在方法区加载Fu.class字节码文件和其所有的成员方法,然后默认加载其父类object.class的字节码文件和其所有的成员方法,然后object将其虚方法放入虚方法表传入子类,一直到叶子子类
  • 在运行到new时,在堆内存加载出一个地址,放入其成员变量(因为没有就没放),左边父类,右边子类
  • 调用方法时,先看其是不是虚方法,如果是就直接在虚方法表里面找,然后将方法进栈,执行。如果不是虚方法,就在叶子子类找,如果找到就执行。没有找到,向父类找,找到后报错

内存分析工具验证

ctrl+n查看方法

ctrl+f12查看方法具体

继承中:成员变量的访问特点

**就近原则:**谁离我近,我就用谁

  • 先局部,再本类的成员位置,再父类的成员位置
  • 重名用this和super
    在这里插入图片描述

**注意:**上图最多调用一个super到父类,没有两个super。

继承中:成员方法的访问特点

直接调用满足就近原则:谁离我近,我就用谁

super调用,直接访问父类

不带引用对象的方法调用隐含了this

方法的重写:

当父类的方法不能满足子类现在的需求,需要进行方法重写

**书写格式:**在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法

**@Override重写注解:(**注解是给虚拟机和程序员看的)

  • @Override是放在重写后的方法上,校验子类重写时语法是否正确
  • 加上注解后如果由红色波浪线,表示语法错误
  • 建议重写方法都加上@Override注解,代码安全,优雅!

方法重写的本质:

本质覆盖虚方法表中的方法

在这里插入图片描述

方法重写注意事项和要求:

  • 重写方法的名称,形参列表必须与父类中的一致
  • 子类重写父类方法时,访问权限子类必须大于父类(空着不写<protected<public)
  • 子类重写父类方法时,返回值类型子类必须小于等于父类
  • 建议:重写的方法尽量和父类保持一致
  • 私有方法不能被重写**(只有被添加到虚方法表中的方法才能被重写)**
  • 子类不能重写父类的静态方法,如果重写会报错的**(只有被添加到虚方法表中的方法才能被重写)**

继承中:构造方法的访问特点

  • 父类中的构造方法不会被子类继承
  • 子类中所有的构造方法默认先访问父类中的无参构造,再执行自己
    • 原因:
    • 子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据
    • 子类初始化之前,一定要调用父类构造方法先完成父类数据空间的初始化

怎么调用父类构造方法的?

  • 子类构造方法的第一行语句默认都是:super()表示调用父类的无参构造,不写也存在,且必须在第一行
  • 如果想调用父类有参构造,必须手动写super进行调用

在这里插入图片描述

this,super使用总结

  • this:理解为一个变量,表示当前方法调用者的地址值
    • this就是一个局部变量,在方法调用的时候有值
  • super:代表父类存储空间
关键字访问成员变量访问成员方法访问构造方法
thisthis.成员变量 访问本类成员变量this.成员方法(…) 访问本类成员方法this(….) 访问本类构造方法
supersuper.成员变量 访问父类成员变量super.成员方法(…) 访问父类成员方法super(….) 访问父类构造方法

在这里插入图片描述

多态

封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为

在这里插入图片描述

继承:提高代码复用性 ,解决代码重复问题(多态的前提条件)

在这里插入图片描述

多态:

在这里插入图片描述

在这里插入图片描述

上面这种方法肯定不行

在这里插入图片描述

相关文章:

java面向对象从入门到入土

面向对象进阶 (写程序的套路) 面向:拿,找 对象:能干活的东西 面向对象编程:拿东西过来做对应的事情 (写程序的套路) 面向:拿,找 对象:能干活的东西 面向对象编程:拿东西过来做对应的事情 重点学习:学习已有对象并使用,学习如何自己设计对象并使用 设计对…...

Redis设计与实现-哨兵

哨兵模式 1、启动并初始化sentinel1.1 初始化服务器1.2 使用Sentinel代码1.3 初始化sentinel状态1.4 初始化sentinel状态的master属性1.5 创建连向主服务器的网络连接 2、获取主服务器信息3、获取从服务器的信息4、向主从服务器发送信息5、接受主从服务器的频道信息6、检测主观…...

vscode 打开工程 看不到文件目录

vscode 打开工程 看不到文件目录 View->Explorer 快捷键&#xff1a;CtrlShiftE...

[c++项目]基于微服务的聊天室服务端测试

项目概述 本测试报告针对基于C实现的微服务架构聊天室服务端进行全面测试。系统主要包含以下微服务&#xff1a; 用户认证服务&#xff08;Auth Service&#xff09;消息处理服务&#xff08;Message Service&#xff09;在线状态服务&#xff08;Presence Service&#xff0…...

Java面试黄金宝典16

1. 各种排序算法的时间复杂度和空间复杂度 冒泡排序 定义&#xff1a; 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;…...

pytorch中dataloader自定义数据集

前言 在深度学习中我们需要使用自己的数据集做训练&#xff0c;因此需要将自定义的数据和标签加载到pytorch里面的dataloader里&#xff0c;也就是自实现一个dataloader。 数据集处理 以花卉识别项目为例&#xff0c;我们分别做出图片的训练集和测试集&#xff0c;训练集的标…...

LabVIEW 燃气轮机气路故障诊断

在船用燃气轮机气路故障诊断领域&#xff0c;LabVIEW 软件以其独特的功能和优势&#xff0c;成为构建高效、精准诊断系统的关键技术支撑。它全面覆盖硬件在环仿真平台的各个环节&#xff0c;从硬件连接、数据交互到系统功能实现&#xff0c;都发挥着不可替代的作用&#xff0c;…...

[项目]基于FreeRTOS的STM32四轴飞行器: 十六.激光测距定高功能

基于FreeRTOS的STM32四轴飞行器: 十六.激光测距定高功能 一.芯片介绍二.配置CubeMX三.激光测距芯片驱动编写四.定高PID的计算五.定高PID作用到电机上 一.芯片介绍 激光测高芯片在飞控板下侧&#xff1a; 原理图如下&#xff1a; 型号为&#xff1a;VL53LX1&#xff0c;为国产…...

HTML跑酷

先看效果 再上代码 <!DOCTYPE html> <html> <head><title>火柴人跑酷</title><style>body {margin: 0;overflow: hidden;background: #87CEEB;}#gameCanvas {background: linear-gradient(to bottom, #87CEEB 0%, #87CEEB 50%, #228B22 …...

C++Primer学习(14.1 基本概念)

当运算符作用于类类型的运算对象时&#xff0c;可以通过运算符重载重新定义该运算符的含义。明智地使用运算符重载能令我们的程序更易于编写和阅读。举个例子&#xff0c;因为在Sales_item类中定义了输入、输出和加法运算符&#xff0c;所以可以通过下述形式输出两个Sales_item…...

【Goalng】第九弹-----文件操作、JSON处理

&#x1f381;个人主页&#xff1a;星云爱编程 &#x1f50d;所属专栏&#xff1a;【Go】 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 长风破浪会有时&#xff0c;直挂云帆济沧海 目录 1.文件操作 1.1文件介绍 1.2.文件流 1.3.打开和关闭文件 1…...

锐评|希捷NVMe闪存+磁盘混合存储阵列

近日&#xff0c;希捷在英伟达GTC 2025会议上展示了NVMe混合闪存/磁盘阵列技术。这个混合存储阵列确实在当前AI数据存储困境中撕开了一道新口子&#xff0c;但远称不上完美&#xff0c;优缺点都极为鲜明。 从优点来看&#xff0c;希捷切中了大多数企业的痛点。AI领域数据量呈爆…...

如何缩短研发周期,降低研发成本?全星APQP软件为您提供解决方案

如何缩短研发周期&#xff0c;降低研发成本&#xff1f;全星APQP软件为您提供解决方案 一、 系统概述 全星研发管理APQP软件系统是一款专为产品研发和质量管控打造的智能化平台&#xff0c;旨在帮助企业高效推进APQP&#xff08;先期产品质量策划&#xff09;流程&#xff0c…...

Centos7安装cat美化工具lolcat

Centos7安装cat美化工具lolcat Centos7安装lolcat使用ruby安装lolcat配置cat系统别名 结果验证 Centos7安装lolcat lolcat &#xff1a;一个在Linux 终端中输出彩虹特效的命令行工具 使用ruby安装lolcat # 安装ruby和zip yum install -y ruby# 查看ruby版本 ruby --version# …...

bluecode-20240913_1_数据解码

时间限制&#xff1a;C/C 1000MS&#xff0c;其他语言 2000MS 内存限制&#xff1a;C/C 256MB&#xff0c;其他语言 512MB 难度&#xff1a;困难 数据解码 指定有一段经过编码的二进制数据&#xff0c;数据由0个或多个"编码单元"组成。"编码单元"的编码方式…...

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的缓存技术:使用 Redis 提升性能

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…...

典范硬币系统(Canonical Coin System)→ 贪心算法

【典范硬币系统】 ● 典范硬币系统&#xff08;Canonical Coin System&#xff09;是指使用贪心算法总能得到最少硬币数量解‌的货币面值组合‌。 ● 给定一个硬币系统 &#xff0c;若使其为典范硬币系统&#xff0c;则要求其各相邻面值比例 &#xff0c;及各开区间 内各金额…...

hbuilderx打包iOS上传苹果商店的最简流程

无需Mac电脑&#xff0c;无需安装xcode和transporter&#xff0c;其实使用hbuilderx开发的ios软件&#xff0c;也可以上架到苹果的app store商店的。 只需要有苹果开发者中心的苹果开发者账号就行了。 假如你还在了解上架阶段&#xff0c;还没打包&#xff0c;也还没有创建任…...

DeepSeek详解:探索下一代语言模型

文章目录 前言一、什么是DeepSeek二、DeepSeek核心技术2.1 Transformer架构2.1.1 自注意力机制 (Self-Attention Mechanism)(a) 核心思想(b) 计算过程(c) 代码实现 2.1.2 多头注意力 (Multi-Head Attention)(a) 核心思想(b) 工作原理(c) 数学描述(d) 代码实现 2.1.3 位置编码 (…...

python的内存管理

目录 1. 引用计数 2. 垃圾收集&#xff08;GC&#xff09; python的内存管理主要是引用计数和垃圾回收器来进行内存管理 1. 引用计数 每个 Python 对象都有一个引用计数&#xff0c;当引用计数为零时&#xff0c;对象的内存会被释放。 import sysa [] # 创建一个空列表对…...

【STL】list

l i s t list list 是 C C C 标准模板库&#xff08; S T L STL STL&#xff09;中的一个序列容器&#xff08; S e q u e n c e C o n t a i n e r Sequence\ Container Sequence Container&#xff09;&#xff0c;它允许在容器的任意位置快速插入和删除元素&#xff0c;是一…...

证券公司主要业务分析及当前佣金最低免五情况探讨

我是StockMasterX&#xff0c;今日想分析证券公司主要业务&#xff0c;并探讨当前佣金最低且免五的证券公司情况&#xff0c;此议题具有一定研究价值&#xff0c;我从事股票交易多年&#xff0c;与证券公司互动频繁&#xff0c;前日晚间饮茶之际&#xff0c;浏览手机时对此深思…...

C++ 变量的声明与定义分离式编译与静态类型(十六)

1. 声明与定义的区别 声明&#xff08;declaration&#xff09;&#xff1a;向编译器表明某个变量&#xff08;或其他实体&#xff09;的类型与名字&#xff0c;使它在后续的编译过程中可见或可用。定义&#xff08;definition&#xff09;&#xff1a;除了声明变量的名字和类…...

黑盒测试的等价类划分法(输入数据划分为有效的等价类和无效的等价类)

重点: 有效等价和单个无效等价各取1个即可 1、正向用例:一条尽可能覆盖多条2、逆向用例:每一条数据&#xff0c;都是一条单独用例。 步骤: 1、明确需求 2、确定有效和无效等价 3、根据有效和无效造数据编写用例 3、适用场景 针对:需要有大量数据测试输入&#xff0c; …...

通过Appium理解MCP架构

MCP即Model Context Protocol&#xff08;模型上下文协议&#xff09;&#xff0c;是由Anthropic公司于2024年11月26日推出的开放标准框架&#xff0c;旨在为大型语言模型与外部数据源、工具及系统建立标准化交互协议&#xff0c;以打破AI与数据之间的连接壁垒。 MCP架构与Appi…...

uWebSockets开发入门

一、常用C++ WebSocket开源库 一些常用的 C++ WebSocket 开源库,它们支持 WebSocket 协议的实现,适用于客户端或服务器端开发。 1. Boost.Beast (推荐) 特点:基于 Boost.Asio 的高性能库,支持 HTTP/WebSocket,属于 Boost 官方库的一部分,稳定且跨平台。 适用场景:需要高…...

Python自动化模块:开启高效编程新时代

一、写在前面 在数字化时代&#xff0c;自动化技术已成为提高效率、降低成本的关键手段。Python 作为一种简洁、高效且功能强大的编程语言&#xff0c;凭借其丰富的库和框架&#xff0c;在自动化领域占据了举足轻重的地位&#xff0c;成为众多开发者的首选工具之一。从简单的文…...

Android7 Input(二)Linux 驱动层输入事件管理

概述 在Linux系统中&#xff0c;将键盘&#xff0c;鼠标&#xff0c;触摸屏等这类交互设备交由Linux Input子系统进行管理&#xff0c;Linux Input驱动子系统由于具有良好的和用户空间交互的接口。因此Linux Input驱动子系统&#xff0c;不止于只管理输入类型的设备。也可以将其…...

前端给后端发送数据时都需要包含哪些内容?(HTTP请求的基本组成部分)

1 [TOC](1)一、**必须传递的内容**1. **URL&#xff08;请求地址&#xff09;** 二、**可选内容**1. **请求方法&#xff08;HTTP Method&#xff09;**2. **请求头&#xff08;Headers&#xff09;**3. **请求体&#xff08;Body&#xff09;**4. **其他配置** 技术无关 一、必…...

记录vite引入sass预编译报错error during build: [vite:css] [sass] Undefined variable.问题

vite.config.ts resolve: {alias: {: path.resolve(__dirname, src),},},css: {// css预处理器preprocessorOptions: {scss: {additionalData: use "/assets/styles/block.scss" as *;,}}},block.scss $colorGreen: #00ff00;index.vue :v-deep .font-size-14{colo…...

智慧运维平台:赋能未来,开启高效运维新时代

在当今数字化浪潮下&#xff0c;企业IT基础设施、工业设备及智慧城市系统的复杂度与日俱增&#xff0c;传统人工运维方式已难以满足高效、精准、智能的管理需求。停机故障、低效响应、数据孤岛等问题直接影响企业运营效率和成本控制。大型智慧运维平台&#xff08;AIOps, Smart…...

【log4j】配置Slf4j

配置Slf4j 引入lombok包 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.36</version><scope>provided</scope> </dependency>引入log4j相关api <dependency…...

静态网页应用开发环境搭建实战教程

1. 前言 静态网页开发是前端工程师的基础技能之一&#xff0c;无论是个人博客、企业官网还是简单的Web应用&#xff0c;都离不开HTML、CSS和JavaScript。搭建一个高效的开发环境&#xff0c;能够极大提升开发效率&#xff0c;减少重复工作&#xff0c;并优化调试体验。 本教程…...

AP 场景架构设计(一) :OceanBase 读写分离策略解析

说明&#xff1a;本文内容对应的是 OceanBase 社区版&#xff0c;架构部分不涉及企业版的仲裁副本功能。OceanBase社区版和企业版的能力区别详见&#xff1a; 官网链接。 概述​ 当两种类型的业务共同运行在同一个数据库集群上时&#xff0c;这对数据库的配置等条件提出了较高…...

未来村庄智慧灯杆:点亮乡村智慧生活​

在乡村振兴与数字乡村建设的时代进程中&#xff0c;未来村庄智慧灯杆凭借其多功能集成与智能化特性&#xff0c;已成为乡村基础设施建设领域的崭新焦点&#xff0c;为乡村生活带来了前所未有的便利&#xff0c;推动着乡村生活模式的深刻变革。​ 多功能集成&#xff1a;一杆多能…...

MySQL基础语法DDLDML

目录 #1.创建和删除数据库 ​#2.如果有lyt就删除,没有则创建一个新的lyt #3.切换到lyt数据库下 #4.创建数据表并设置列及其属性,name是关键词要用name包围 ​编辑 #5.删除数据表 #5.查看创建的student表 #6.向student表中添加数据,数据要与列名一一对应 #7.查询studen…...

利用 VSCode 配置提升 vibe coding 开发效率

利用 VSCode 配置提升 vibe coding 开发效率 Vibe Coding&#xff08;氛围编程&#xff09;是一种基于AI的编程方法&#xff0c;其核心在于通过自然语言描述软件需求&#xff0c;再由大规模语言模型&#xff08;LLM&#xff09;自动生成代码&#xff0c;从而实现对传统手写编程…...

使用 Chromedp 监听网页请求和响应

使用 Chromedp 监听网页请求和响应 在进行网络爬虫的时候&#xff0c;有很多网站都有反爬机制&#xff0c;比如你想抓点数据&#xff0c;结果发现每次请求都带一堆奇奇怪怪的参数 —— 什么 timestamp 签名、AES 加密的字段&#xff0c;还有各种 Token 令牌&#xff0c;跟密码…...

AB包介绍及导出工具实现+AB包资源简单加载

Resource原理 项目中建立Resources目录&#xff0c;资源导入内部 生成项目包 资源文件存储路径 结论&#xff1a;存储在Resources下的资源&#xff0c;最终会存储在游戏的主体包中&#xff0c;发送给用户&#xff0c;手机系统上&#xff0c;如果需要做资源的更新&#xff0c;是…...

TCP/IP协议簇

文章目录 应用层http/httpsDNS补充 传输层TCP1. 序列号与确认机制2. 超时重传3. 流量控制&#xff08;滑动窗口机制&#xff09;4. 拥塞控制5. 错误检测与校验6. 连接管理总结 网络层ARP**ARP 的核心功能**ARP 的工作流程1. ARP 请求&#xff08;Broadcast&#xff09;2. ARP 缓…...

vector的模拟实现01

文章目录 vector的模拟实现构造函数析构函数迭代器容量sizecapacityreverse 遍历下标[] 修改push_backpop_backinsert 结语 我们大家有又见面了&#xff0c;给生活加点</font color red>impetus&#xff01;&#xff01;开启今天的编程之路 今天我们来学习vector。了解一…...

信息学奥赛一本通 1609:【例 4】Cats Transport | 洛谷 CF311B Cats Transport

【题目链接】 ybt 1609&#xff1a;【例 4】Cats Transport 洛谷 CF311B Cats Transport 【题目考点】 1. 动态规划&#xff1a;斜率优化动规 【解题思路】 解法1&#xff1a;设a点的前缀和 输入的 d d d序列是从 d 2 d_2 d2​到 d n d_n dn​&#xff0c;共n-1个数字。人…...

shared_ptr和 weak_ptr的详细介绍

关于 shared_ptr 和 weak_ptr 的详细介绍及使用示例&#xff1a; 1. shared_ptr&#xff08;共享所有权智能指针&#xff09; 核心特性 引用计数&#xff1a;记录当前有多少个 shared_ptr 共享同一个对象。自动释放&#xff1a;当引用计数归零时&#xff0c;自动释放对象内存…...

electron打包vue2项目流程

1&#xff0c;安装一个node vue2 的项目 2&#xff0c;安装electron&#xff1a; npm install electron -g//如果安装还是 特比慢 或 不想安装cnpn 淘宝镜像查看是否安装成功&#xff1a;electron -v 3&#xff0c;进入到项目目录&#xff1a;cd electron-demo 进入项目目录…...

Baklib驱动企业知识管理数字化转型

Baklib驱动知识资产激活 在信息碎片化与数据爆炸的产业环境下&#xff0c;企业知识中台正成为重构组织智慧的核心枢纽。Baklib通过构建全生命周期知识管理模型&#xff0c;将分散于邮件、文档及协作系统的非结构化数据转化为可检索、可分析的标准化资产。其内置的智能分类引擎…...

Elasticsearch 高级

Elasticsearch 高级 建议阅读顺序&#xff1a; Elasticsearch 入门Elasticsearch 搜索Elasticsearch 搜索高级Elasticsearch高级&#xff08;本文&#xff09; 1. nested 类型 1.1 介绍 Elasticsearch 中的 nested 类型允许你在文档内存储复杂的数据结构&#xff0c;比如一个…...

1--当「穷举」成为艺术:CTF暴力破解漏洞技术从入门到入刑指南(知识点讲解版)

当「穷举」成为艺术&#xff1a;CTF暴力破解漏洞技术从入门到入刑指南 引言&#xff1a;论暴力破解的哲学意义 “世界上本没有漏洞&#xff0c;密码设得简单了&#xff0c;便成了漏洞。” —— 鲁迅&#xff08;并没有说过&#xff09; 想象你是个不会撬锁的小偷&#xff0c;面…...

jdk 支持路线图

https://www.oracle.com/java/technologies/java-se-support-roadmap.html 按照路线图得知&#xff0c;在2025.09 发布openjdk 25&#xff0c;是一个LTS版本。...

VsCode启用右括号自动跳过(自动重写) - 自录制gif演示

VsCode启用右括号自动跳过(自动重写) - 自录制gif演示 前言 不知道大家在编程时候的按键习惯是怎样的。输入完左括号后编辑器一般会自动补全右括号&#xff0c;输入完左括号的内容后&#xff0c;是按→跳过右括号还是按)跳过右括号呢&#xff1f; for (int i 0; i < a.s…...

Android设计模式之模板方法模式

一、定义&#xff1a; 定义一个操作中的算法的框架&#xff0c;而将一些步骤延迟到子类中&#xff0c;使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二、结构&#xff1a; AbstractClass抽象类&#xff1a;定义算法的骨架&#xff0c;包含模板方法和若干…...