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

Java面向对象编程--高级

目录

一、static关键字

1.1 静态变量

1.2 静态内存解析

1.3 static的应用与练习

二、单例设计模式

2.1 单例模式

2.2 如何实现单例模式

三、代码块

3.1 详解

3.2 练习,测试

四、final关键字

五、抽象类与抽象方法

5.1 abstract

5.2 练习

六、接口

6.1 接口的理解

6.2 接口的多态性

6.3 抽象类和接口对比

6.4 接口的使用练习

6.4.1 练习1

1. 定义接口

2. 实现接口

3. 使用接口

4. 测试支付系统

5.结果

6.4.2 练习2

1. 接口

2. Developer类

3. 父类Vehicle

4. 三个子类   Bicycle  ElectricVhicle Car

5. VehicleTest测试类

6. 结果


一、static关键字

1.1 静态变量

static(静态的):用来修饰的结构、属性、方法;代码块、内部类

对比静态变量与实例变量:

①个数

  • >静态变量:在内存空间中只有一份, 被类的多个对象所共享。
  • >实例变量:类的每一个实例(或对象)都保存着一份实例变量。

②内存位置

  • >静态变量: jdk6及之前:存放在方法区。jdk7及之后: 存放在堆空间
  • >实例变量:存放在堆空间的对象实体中。

③加载时机

  • >静态变量:随着类的加载而加载,由于类只会加载一次, 所以静态变量也只有一份。
  • >实例变量:随着对象的创建而加载。每个对象拥有一份实例变量。

④调用者

  • >静态变量:可以被类直接调用,也可以使用对象调用。
  • >实例变量:只能使用对象进行调用。

⑤判断是否可以调用---> 从生命周期的角度解释

类变量实例变量
yesno
对象yesyes

⑥消亡时机.

  • 静态变量:随着类的卸载而消亡
  • 实例变量:随着对象的消亡而消亡

1.2 静态内存解析

1.3 static的应用与练习

import java.util.Objects;public class Account {private int id;private String password;//密码private double balance;//金额private static double interestRate;//利率private static double minBalance = 1.0;private static int init = 1001;public Account(){this.id = init;init++;password = "000000";}public Account(String password, double balance) {this.password = password;this.balance = balance;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}public static double getInterestRate() {return interestRate;}public static void setInterestRate(double interestRate) {Account.interestRate = interestRate;}public static double getMinBalance() {return minBalance;}public static void setMinBalance(double minBalance) {Account.minBalance = minBalance;}@Overridepublic String toString() {return "Account{" +"id=" + id +", password='" + password + '\'' +", balance=" + balance +'}';}
}public class Test {public static void main(String[] args) {Account acct1 = new Account();System.out.println(acct1);Account acct2 = new Account("123456",1155);System.out.println(acct2);Account.setInterestRate(0.0123);Account.setMinBalance(10);System.out.println("银行存款的利率:" + Account.getInterestRate());System.out.println("银行最小存款: " + Account.getMinBalance());}
}

二、单例设计模式

2.1 单例模式

何为单例模式?

  • 采取一定的办法保证在整个软件系统中,堆某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

经典设计模式:共23种

2.2 如何实现单例模式

1.饿汉式:

public class boyFirend {private int age;private String name;//1.私有化构造器private boyFirend(){}//2.创建对象私有化private static boyFirend b1 = new boyFirend();//3.public static boyFirend getG1(){return b1;}
}

2.懒汉式:

//懒汉式
public class GirlFirend {private int age;private String name;//1.私有化构造器private GirlFirend(){}//2.创建对象私有化private static GirlFirend g1 = null;//3.public static GirlFirend getG1(){if (g1 == null) {g1 = new GirlFirend();}return g1;}
}

两种模式的对比:

特点:

  • 饿汉式:"立即加载",随着类的加载,当前唯一的实例创建。
  • 懒汉式:"延迟加载",在需要使用时,进行创建

优缺点:

  • 饿汉式:(优点)写法简单,使用更快,线程安全(缺点)内存中占用时间长。
  • 懒汉式:(优点)节省内存空间(缺点)线程不安全

三、代码块

3.1 详解

用来初始化类或对象的信息(即初始化类或对象的成员变量)

代码块修饰:只能使用static进行修饰

代码块分类:

  • 静态代码块;使用static修饰
  • 非静态代码块:不适用static修饰

格式:

{

//内容

}

static{

//内容

}

3.2 练习,测试

class User {private String userName;private String password;private long registrationTime;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public long getRegistrationTime() {return registrationTime;}{System.out.println("新用户注册");registrationTime = System.currentTimeMillis();}public User() {userName = System.currentTimeMillis() +"";password = "123456";}public User(String userName, String password) {this.userName = userName;this.password = password;}public String getInfo() {return"用户名='" + userName  +", 密码='" + password  +", 注册时间=" + registrationTime ;}
}
public class Test {public static void main(String[] args) {User u1 = new User();System.out.println(u1.getInfo());User u2 = new User("张三","654321");System.out.println(u2.getInfo());}
}

注意:运行上,由父及子,静态先行。记住:执行的先后顺序:默认-显式-代码块-构造器-对象

小测试:(请给出运行结果)

public class Test {public static void main(String[] args) {Sub s = new Sub();}
}class Base{Base(){method(100);}{System.out.println("base");}public void method(int i){System.out.println("base :" + i);}
}class Sub extends Base{Sub(){super.method(70);}{System.out.println("Sub");}public void method(int j){System.out.println("sub :" + j);}
}

答案:

四、final关键字

final关键字: 修饰符,用于限制类、方法和变量的行为。

可在哪些位置赋值:

  • 显示
  • 代码块中
  • 构造器中

final作用:

修饰类:表此类不能被继承

final class FinalClass {void display() {System.out.println("This is a final class.");}
}// class SubClass extends FinalClass { // 这行代码会导致编译错误
// }

修饰方法:此方法不能被重写

class Parent {final void show() {System.out.println("This is a final method.");}
}class Child extends Parent {// void show() { // 这行代码会导致编译错误//     System.out.println("Trying to override a final method.");// }
}

修饰变量:成员和局部变量都可修饰,此时“变量”其实变成了“常量”,不可更改。

final int x = 10;
// x = 20; // 这行代码会导致编译错误final StringBuilder a1 = new StringBuilder("Hello");
// a1 = new StringBuilder("World"); // 这行代码会导致编译错误
a1.append(", World!"); // 这行是允许的,因为a1引用的对象内容是可以改变的

final搭配static使用:等于全局常量

class Constants {static final int MAX_USERS = 100;static final String APP_NAME = "MyApp";
}

习题练习:

报错:++x导致x的值改变

五、抽象类与抽象方法

5.1 abstract

abstract:抽象的

abstract修饰类:

  • 此类为抽象类。
  • 抽象类不能实例化。
  • 抽象类中包含构造器,因为子类实例化,直接或间接调用父类的构造器。
  • 抽象类可无抽象方法,有抽象方法一定为抽象类。

abstract修饰方法

  • 此方法为抽象方法。
  • 抽象方法只有方法声明,没有方法体。
  • 抽象方法的功能确定,不知具体实现。
  • 抽象方法必须重写父类中的所有抽象方法,才能实例化,否则,此子类还是抽象类。

abstract不能使用的场景:属性,构造器,代码块

5.2 练习

场景:编写工资系统,不同类型的员工(多态)按月发工资,如果某个月是某个employee对象的生日,则当月的工资增加100

代码:

//Employee类
public abstract class Employee {private String name;private int number;private MyDate birthday;public Employee() {}public Employee(String name, int number, MyDate birthday) {this.name = name;this.number = number;this.birthday = birthday;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public MyDate getBirthday() {return birthday;}public void setBirthday(MyDate birthday) {this.birthday = birthday;}public abstract double earnings();@Overridepublic String toString() {return "Employee{" +"name='" + name + '\'' +", number=" + number +", birthday='" + birthday.toDateString() + '\'' +'}';}
}//HourEmployee类
public class HourEmployee extends Employee{private double wage;private int hour;public HourEmployee() {}public HourEmployee(String name, int number, MyDate birthday, double wage, int hour) {super(name, number, birthday);this.wage = wage;this.hour = hour;}public double getWage() {return wage;}public void setWage(double wage) {this.wage = wage;}public int getHour() {return hour;}public void setHour(int hour) {this.hour = hour;}@Overridepublic double earnings() {return wage * hour;}@Overridepublic String toString() {return "HourEmployee{" +super.toString() +'}';}
}//MyDate类
public class MyDate {private int year;private int month;private int day;public MyDate() {}public MyDate(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}public int getMonth() {return month;}public void setMonth(int month) {this.month = month;}public int getDay() {return day;}public void setDay(int day) {this.day = day;}public String toDateString(){return year + "年" + month + "月" + day +"日";}
}//PayrollSystem类
import java.util.Scanner;public class PayrollSystem {public static void main(String[] args) {Scanner scan = new Scanner(System.in);Employee[] emps = new Employee[2];emps[0] = new SalariedEmployee("张胜男", 1001,new MyDate(1992, 12, 30), 2000);emps[1] = new HourEmployee("李四", 1002,new MyDate(1992, 10, 10),15 ,240);System.out.println("请输入当前的月份: ");int month = scan.nextInt();for (int i = 0; i < emps.length; i++) {System.out.println(emps[i].toString());if (month == emps[i].getBirthday().getMonth()){double a = 100.0;double b =emps[i].earnings() + a;System.out.println("工资为:"+ b);System.out.println("生日快乐,加薪100");}else{System.out.println("工资为:"+emps[i].earnings());}scan.close();}}
}//SalariedEmployee类
public class SalariedEmployee extends Employee{private double monthlySalary;public SalariedEmployee() {}@Overridepublic  double earnings(){return monthlySalary;}public SalariedEmployee(String name, int number, MyDate birthday, double monthlySalary) {super(name, number, birthday);this.monthlySalary = monthlySalary;}public double getMonthlySalary() {return monthlySalary;}public void setMonthlySalary(double monthlySalary) {this.monthlySalary = monthlySalary;}@Overridepublic String toString() {return "SalariedEmployee{" +super.toString() +'}';}
}

六、接口

6.1 接口的理解

1. 接口的本质是契约、标准、规范,就像我们的法律一样。制定好后大家都要遵守。

2.定义接口的关键字: interface

3.接口内部结构的说明:

可以声明:

  • 属性:必须使用public static final修饰
  • 方法: jdk8之前:声明抽象方法,修饰为public abstractjdk8 :声明静态方法、默认方法
  • jdk9 :声明私有方法

不可以声明:构造器

4.接口与类的关系:实现关系

5.格式:

  • class A extends SuperA implements B C{}
  • A相较于SuperA来讲,叫做子类A相较于B, C来讲,叫做实现类。

6.满足此关系之后,说明:

  • 类可以实现多个接口。
  • 类针对于接口的多实现,一定程度上就弥补了类的单继承的局限性。
  • 类必须将实现的接口中的所有的抽象方法都重写(或实现),方可实例化。否则,此实现类必须声明为抽象类。

7.接口与接口的关系:继承关系,且可以多继承

6.2 接口的多态性

接口名  变量名  = new   实现类对象;

以下为举例:Computer是类,transferData()方法,USB是接口,printer打印机

  • 创建接口实现类的对象

Computer computer = new Computer();

Printer printer = new printer();

  • 创建接口实现类的匿名对象

computer.transferData (new Computer);

  • 创建接口匿名实现类的对象

USB usb1 = new USB(){

     //重写接口中方法

}

computer.transferData (usb1);

  • 创建接口匿名实现类的匿名对象

computer.transferData (new USB(){

     //重写接口中方法

});

6.3 抽象类和接口对比

6.4 接口的使用练习

6.4.1 练习1

假设要创建一个,不同的支付方式(如信用卡、支付宝)需要实现相同的接口。

1. 定义接口

定义一个支付接口 Payment,包括方法 pay()refund()

public interface Payment {void pay(double amount);void refund(double amount);
}
2. 实现接口

实现 CreditCardPaymentAliPay 两种支付方式。

public class CreditCardPayment implements Payment {@Overridepublic void pay(double amount) {System.out.println("使用信用卡支付 " + amount + "元");}@Overridepublic void refund(double amount) {System.out.println("退款到信用卡" + amount + "元");}
}public class AliPay implements Payment {@Overridepublic void pay(double amount) {System.out.println("使用支付宝支付 " + amount + "元");}@Overridepublic void refund(double amount) {System.out.println("退款到支付宝 " + amount + "元");}
}
3. 使用接口

创建一个简单的支付处理类,使用接口来处理支付逻辑。

public class PaymentProcessor {private Payment payment;public PaymentProcessor(Payment payment) {this.payment = payment;}public void processPayment(double amount) {payment.pay(amount);}public void processRefund(double amount) {payment.refund(amount);}
}
4. 测试支付系统

在主程序中,创建不同的支付方式并测试。

public class Main {public static void main(String[] args) {// 使用信用卡支付Payment creditCardPayment = new CreditCardPayment();PaymentProcessor creditCardProcessor = new PaymentProcessor(creditCardPayment);creditCardProcessor.processPayment(100.0);creditCardProcessor.processRefund(50.0);// 使用支付宝支付Payment aliPayPayment = new AliPay();PaymentProcessor aliPayProcessor = new PaymentProcessor(aliPayPayment);aliPayProcessor.processPayment(200.0);aliPayProcessor.processRefund(80.0);}
}
5.结果

6.4.2 练习2

模拟场景:

UML类图:(UML类图讲解可跳转: ​​​​​​构造器和UML类图_类图中怎么创建加号-CSDN博客)

代码实现:

1. 接口
interface IPower {public void power();
}
2. Developer类
package test2;public class Developer {private int age;public  String name;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void takingVehicle(Vehicle vehicle){vehicle.run();}
}
3. 父类Vehicle
package test2;public abstract class Vehicle {private String brand;private String color;public Vehicle() {}public Vehicle(String brand, String color) {this.brand = brand;this.color = color;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public abstract void run();
}
4. 三个子类   

Bicycle-ElectricVhicle-Car

package test2;public class Car extends Vehicle implements IPower{private String carName;public Car() {}public Car(String brand, String color, String carName) {super(brand, color);this.carName = carName;}public String getCarName() {return carName;}public void setCarName(String carName) {this.carName = carName;}@Overridepublic void run() {System.out.println("汽车靠内燃机驱动");}@Overridepublic void power() {System.out.println("动力来自汽油");}
}package test2;public class ElectricVhicle extends Vehicle implements IPower{public ElectricVhicle() {}public ElectricVhicle(String brand, String color) {super(brand, color);}@Overridepublic void run() {System.out.println("电动车电机驱动");}@Overridepublic void power() {System.out.println("动力来自电力");}
}package test2;public class Bicycle extends Vehicle{public Bicycle() {}public Bicycle(String brand, String color) {super(brand, color);}@Overridepublic void run() {System.out.println("靠脚蹬骑自行车");}
}
5. VehicleTest测试类
package test2;public class VehicleTest {public static void main(String[] args) {Developer developer = new Developer();Vehicle[] vehicles = new Vehicle[3];vehicles[0] = new Bicycle("凤凰牌","黄色");vehicles[1] = new ElectricVhicle("理想","蓝色");vehicles[2] = new Car("奔驰","黑色","京A88888");for (int i = 0; i < vehicles.length; i++) {developer.takingVehicle(vehicles[i]);if (vehicles[i] instanceof IPower) {((IPower) vehicles[i]).power();}System.out.println();}}
}
6. 结果

相关文章:

Java面向对象编程--高级

目录 一、static关键字 1.1 静态变量 1.2 静态内存解析 1.3 static的应用与练习 二、单例设计模式 2.1 单例模式 2.2 如何实现单例模式 三、代码块 3.1 详解 3.2 练习&#xff0c;测试 四、final关键字 五、抽象类与抽象方法 5.1 abstract 5.2 练习 六、接口 6.…...

Vert.x,Web - 静态资源/模板

静态资源 Vert.x-Web带有开箱即用的处理器(StaticHandler)&#xff0c;用于处理静态Web资源(.html, .css, .js, …)&#xff0c; 因此可以非常轻松地编写静态Web服务器。 默认静态文件目录为类路径下的webroot目录&#xff0c;对于maven的项目&#xff0c;按规范放在src/main/…...

OpenAI今天Open了一下:开源多智能体框架Swarm

来源 | 机器之心 毫无疑问&#xff0c;多智能体肯定是 OpenAI 未来重要的研究方向之一&#xff0c;前些天 OpenAI 著名研究科学家 Noam Brown还在 X 上为 OpenAI 正在组建的一个新的多智能体研究团队招募机器学习工程师。 就在几个小时前&#xff0c;这个或许还没有组建完成的新…...

车辆重识别(2021NIPS无分类器扩散指南)论文阅读2024/10/08

[1] CLASSIFIER-FREE DIFFUSION GUIDANCE&#xff08;无分类器扩散指导&#xff09; (NIPS 2021) 作者&#xff1a;Jonathan Ho & Tim Salimans 单位&#xff1a;Google Research, Brain team&#xff08;谷歌团队&#xff09; 摘要&#xff1a; 分类器指导是最近引入的一…...

JavaSE——认识异常

1.概念 在生活中&#xff0c;人有时会生病&#xff0c;在程序中也是一样&#xff0c;程序猿是一帮办事严谨、追求完美的高科技人才。在日常开发中&#xff0c;绞尽脑汁将代码写的尽善尽美&#xff0c;在程序运行过程中&#xff0c;难免会出现一些奇奇怪怪的问题。有时通过代码很…...

嵌入式数据结构中顺序栈用法

第一:嵌入式C语言中栈特点 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。特点 :后进先出(LIFO)。...

PE结构之绑定导入表

打印绑定导入表 //打印 绑定导入表 BOOL PrintBoundImport(__in char* m_fileName) {char* Filebuffer NULL;if (!GetFileBuffer(m_fileName, &Filebuffer)) return FALSE;PIMAGE_DOS_HEADER LPdosHeader NULL;PIMAGE_NT_HEADERS LPntHeader NULL;LPdosHeader (PIMAGE…...

【python学习】1-2 配置python系统环境变量

1.点击“我的电脑”右键&#xff0c;点击属性&#xff0c;点击“高级系统设置”&#xff0c;再点击环境变量。 2.选择“系统变量”中的Path后&#xff0c;点击编辑。 3.点击新建&#xff0c;添加如图两个路径&#xff0c;即是python安装的路径位置后&#xff0c;点击确定。...

日均千万订单的交易平台设计稿

业务背景 平台主要售卖电子商品和少量特定的实物商品。 经营模式&#xff0c;主要分为平台商家和自营店&#xff0c;自营店的流量占整个平台业务的50%以上&#xff0c;我负责自营店交易履约相关业务。 以前的架构&#xff0c;平台交易和履约中心是所有流量共享&#xff0c;在…...

如何在 iPad 上恢复已删除的历史记录?

iPad 配备了一个名为 Safari 的内置网络浏览器。这是一种在旅途中保持联系和浏览网页的强大且便捷的方式。但如果您不小心删除了浏览历史记录&#xff0c;则尝试恢复它可能会很令人沮丧。 幸运的是&#xff0c;您可以通过多种方法在 iPad 上恢复已删除的 Safari 历史记录。您应…...

Haar cascade训练人脸小模型做人脸辨别

代码讲解 1. 导入必要的库 import cv2 import os from pathlib import Path import shutil import numpy as np import loggingcv2: OpenCV 库&#xff0c;用于图像处理和计算机视觉。os: 提供了一种便携的方式使用操作系统依赖的功能。pathlib.Path: 提供了对象导向的路径处…...

DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中?

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 原文链接&#xff1a;DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中? 如何将 (.mdf) 和 (.ldf) 的SQL Server 数据库文件导入到当前数据库中? Step 1.登录到 Sql Server 服…...

【差分数组】个人练习-Leetcode-3229. Minimum Operations to Make Array Equal to Target

题目链接&#xff1a;https://leetcode.cn/problems/minimum-operations-to-make-array-equal-to-target/description/ 题目大意&#xff1a;给出两个数组nums[]和target[]&#xff0c;可以对nums[]数组进行这样两种操作 给某个区间内的子列全加1给某个区间内的子列全减1 求…...

HTML5--裸体回顾

免责声明&#xff1a;本文仅做分享~ 详情请参考以下&#xff1a; HTML 系列教程 (w3school.com.cn) 菜鸟教程 - 学的不仅是技术&#xff0c;更是梦想&#xff01; --本文是光秃秃的空壳. 标题标签 段落标签 换行和水平线 文本格式化标签 &#xff08;一般用左边的&#xff…...

【网络安全】CVE-2024-46990: Directus环回IP过滤器绕过实现SSRF

未经许可,不得转载。 文章目录 背景漏洞详情受影响版本解决方案背景 Directus 是一款开源 CMS,提供强大的内容管理 API,使开发人员能够轻松创建自定义应用程序,凭借其灵活的数据模型和用户友好的界面备受欢迎。然而,Directus 存在一个漏洞,允许攻击者绕过默认的环回 IP …...

问:JVM的垃圾收集算法你知道哪些,有什么区别?

GC&#xff08;垃圾回收器&#xff09;的概念 GC&#xff0c;即垃圾回收&#xff08;Garbage Collection&#xff09;&#xff0c;是计算机程序中一种自动管理内存的机制。其目的是自动回收不再被使用的对象所占用的内存空间&#xff0c;从而避免内存泄漏和内存溢出&#xff0…...

Python selenium库学习使用实操四

系列文章目录 Python selenium库学习使用实操 Python selenium库学习使用实操二 Python selenium库学习使用实操三 文章目录 系列文章目录[TOC](文章目录) 前言一、元素获取二、选项解析总结 前言 在Python selenium库学习使用实操二中提到了下拉框的操作&#xff0c;一种是标…...

用Go开发跨平台GUI

本篇内容是根据2023年3月份#271 Cross-platform graphical user interfaces音频录制内容的整理与翻译 这一期与 Wails 和 Fyne 的创建者一起深入研究为不同架构和操作系统编写 Go 代码。 译者注: Wails的作者是在澳大利亚悉尼的威尔士人,github头像是威尔士的旗帜,Wails也是Wa…...

云原生开发 - 工具镜像(简约版)

在微服务和云原生环境中&#xff0c;容器化的目标之一是尽可能保持镜像小型化以提高启动速度和减少安全风险。然而&#xff0c;在实际操作中&#xff0c;有时候需要临时引入一些工具来进行调试、监控或问题排查。Kubernetes提供了临时容器&#xff08;ephemeral containers&…...

Mac 电脑pink 后端ip地址进行本地联调

文章目录 0: 使用ping 192.39.192.180查看是否能ping通1:点击访达2:在访达里面 shift commit g 打开前往路径的窗口3:在窗口中输入地址/private/etc/hosts4:打开hosts文件 添加后端地址&#xff08;如&#xff1a;192.39.192.180 localhost:80805:保存 后端ip为192.39.192.180…...

iPhone使用指南:如何在没有备份的情况下从 iPhone 恢复已删除的照片

本指南将向您展示如何在没有备份的情况下从 iPhone 恢复已删除的照片。我们所有人在生活中的某个时刻都一定做过一些愚蠢的事情&#xff0c;例如从手机或电脑中删除一些重要的东西。这是很自然的&#xff0c;没有什么可羞耻的。您可能在辛苦工作一天后回来。当突然想看一些照片…...

黑马程序员 javaWeb基础学习,精细点复习【持续更新】

文章目录 WEB开发一、HTML1.html介绍 二、CSS1.CSS介绍2.CSS导入方式3.CSS选择器4.CSS属性 三、JavaScript1.介绍2.浏览器3.js的三种输出方式4.js定义变量5.js数据类型6.js运算符7.全局函数8.函数定义9.js数组对象10.js正则对象11.字符串对象12.自定义对象13.BOM浏览器对象模型…...

【C++设计模式】行为型模式:中介者模式

行为型模式&#xff1a;中介者模式 中介者模式通过引入一个中介者对象来集中控制对象之间的交互。这样可以解耦多个对象之间的复杂交互关系&#xff0c;使系统更易于维护和扩展。 假设我们有一个简单的聊天室应用&#xff0c;其中有每个用户可以发送群聊消息给其他用户&#…...

关于C语⾔内存函数 memcpy memmove memset memcmp

memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果source和destination有任何的重叠&am…...

华为---Super VLAN简介及示例配置

目录 1. Super VLAN技术产生背景 2. Super VLAN概念 3. Super VLAN应用场景 4. Super VLAN工作原理 5. Super-VLAN主要配置命令 6. Super-VLAN主要配置步骤 7. 示例配置 7.1 示例场景 7.2 网络拓扑 7.3 配置代码 7.4 代码解析 7.5 测试验证 1. Super VLAN技术产生背…...

PHP 中浮点数 array_sum 求和精度丢失问题

首先给定一个数组&#xff1a; // 该数组中&#xff0c;amount 为 float/double 或 string 不影响结果 $arr [[amount > 1493.66],[amount > 1493.66],[amount > 1493.66] ];求和&#xff1a; $amount array_sum(array_column($arr, amount));我们已知晓的结果如下…...

llava1.5论文阅读

Improved Baselines with Visual Instruction Tuning 通过视觉指令微调增强的基线方法 论文摘要&#xff1a; 我们发现&#xff0c;LLaVA中的全连接视觉语言连接器非常强大且数据效率高。 3.3 数据和模型的scaling 受到将线性投影转变为多层感知机&#xff08;MLP&#xff0…...

【学术会议投稿链接】React前端框架:构建现代Web应用的强大工具

【即将截稿】第五届经济管理与大数据应用国际学术会议&#xff08;ICEMBDA 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a;https://ais.cn/u/nuyAF3 目录 引言 一、React简介 二、React的核心概念 1. 组件化 2. 虚拟DOM&#xff08;Virtua…...

Linux: network: tcp: sk_tx_skb_cache;4.18.0-283.el8;多分配内存

最近看一个问题,发现下面这个添加cache的commit,在4.18.0-283.el8版本被拿进来到RHEL8。 commit 472c2e07eef045145bc1493cc94a01c87140780a Author: Eric Dumazet <edumazet@google.com> Date: Fri Mar 22 08:56:39 2019 -0700tcp...

电脑报错msvcp100.dll丢失怎么办?这些方法快速修复

在Windows操作系统中&#xff0c;msvcp100.dll是一个重要的动态链接库文件&#xff0c;属于Microsoft Visual C 2010 Redistributable Package的一部分。这个文件提供了C标准库功能&#xff0c;许多应用程序依赖它来运行。如果msvcp100.dll文件丢失或损坏&#xff0c;可能会导致…...