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

Java学习笔记-04

目录

静态成员

mian方法

多态

抽象类

接口

内部类

成员内部类

静态内部类

方法内部类

匿名内部类


静态成员

  • static关键字可以修饰成员方法,成员变量
  • 被static修饰的成员,成员变量就变成了静态变量,成员方法就变成了静态方法
  • static修饰的特点:被类的所有对象共享访问(只要有一个修改,则用到的都会被修改)
  • 访问静态成员,直接  类名.  就可以调用(推荐)。当然也可以通过实例化调用

Cat.class

package Animal;public class Cat {// 定义静态成员变量public static String name;public static int age = 5;// 定义静态成员方法public static void eat() {System.out.println("猫吃鱼");}
}

测试类

import Animal.Cat;public class Main {public static void main(String[] args) {Cat c = new Cat();// 访问静态成员变量,可以实例化调用,也可以直接 类名. 调用c.name = "咪咪";System.out.println(c.name);System.out.println(c.age);System.out.println(Cat.name);// 访问静态成员方法Cat.eat(); // 猫吃鱼c.eat(); // 猫吃鱼}
}

static修饰的静态成员访问特点

  • 静态成员只能访问静态成员。但是不能访问非静态成员
  • 非静态成员,则都可以访问,既可以访问非静态成员,也可以访问静态成员

Cat.class

package Animal;public class Cat {// 静态成员变量public static String name = "咪咪";// 非静态成员变量int age = 5;// 静态成员方法public static void eat() {System.out.println("猫吃鱼");System.out.println("我想访问name,是可以的,name值是" + name);// System.out.println("但是我想访问age,发现是不可以的,因为age是非静态成员属性" + age);}// 非静态成员方法public void catchMouse() {System.out.println("猫会抓老鼠");System.out.println("访问静态成员变量name:" + name);System.out.println("访问非静态成员变量age:" + age);}
}

测试类

import Animal.Cat;public class Main {public static void main(String[] args) {Cat c = new Cat();// 访问静态成员方法(推荐直接 类名. 调用)Cat.eat();// 访问非静态成员方法(只能通过实例化调用)c.catchMouse();}
}

定义一个完整的常量

  • 常量名一般都是大写。常量不允许被修改,而且必须赋值
  • 可以直接通过  类名.  进行调用,也可以实例化调用

public   static   final   数据类型   常量名   =  常量值;

Cat.class

package Animal;public class Cat {// 常量public static final int SUCCESSCODE = 200;
}

测试类

import Animal.Cat;public class Main {public static void main(String[] args) {// 访问静态常量(推荐直接 类名. 调用就行,也可以实例化调用)System.out.println(Cat.SUCCESSCODE); // 200}
}

mian方法

  • 又叫主方法,是Java虚拟机在调用

public static void main(String[] args) { ... }

  • Java虚拟机需要调用类的mian方法,所以改方法,必须使用public修饰(因为Java虚拟机和mian方法不在同一个类中)
  • Java虚拟机执行mian方法的时候不需要创建实例化,所以mian方法也必须是static修饰的静态成员方法
  • mian方法接收String类型的数组参数,该数组中保存执行Java命令时传递给所执行的类的参数

注意:

  1. mian方法可以访问本类的静态成员(变量/方法)
  2. mian方法访问本类中的非静态成员,则需要先创建实例化Mian对象,然后再进行访问

Mian.class

import Animal.Cat;public class Main {// 静态成员变量static int num = 100;// 非静态成员变量int count = 999;public static void main(String[] args) {System.out.println(num); // 100Main main = new Main();System.out.println(main.count); // 999}
}

给mian方法传入参数

 Mian.class

public class Main {public static void main(String[] args) {for(int i = 0;i < args.length;i++) {System.out.println(args[i]); // 1 2 3}}
}

多态

多态的前提与体现

  1. 有继承,实现关系(extends,)
  2. 存在方法重写
  3. 有父类引用指向子类对象(左父右子)

Animal.class

package Animal;public class Animal {private String name;private int age;public String type = "分类";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;}public void eat() {System.out.println("东西都需要吃");}
}

Cat.class

package Animal;
// 1. 首先有继承或者实现关系
public class Cat extends Animal {String skill = "抓老鼠";// 2. 存在方法重写@Overridepublic void eat() {System.out.println("猫吃鱼");}
}

测试类

  • 访问成员变量,规则是编译看左,执行看左
  • 访问成员方法,规则是编译看左,执行看右
import Animal.Animal;
import Animal.Cat;public class Main {public static void main(String[] args) {// 3. 有父类引用指向子类对象(左父右子)Animal c =  new Cat();// 访问成员变量,规则是 编译(就是写代码阶段,编辑器会报错)看左,执行看左// c.skill // 编译阶段就会报错c.setName("动物名");System.out.println(c.getName()); // 动物System.out.println(c.type); // 分类// 访问成员方法,规则是 编译看左,执行看右c.eat(); // 猫吃鱼}
}

多态优缺点

  • 优点:可以提高程序的扩展性。定义方法的时候,使用父类作为参数,在使用的时候,使用具体的类型参与操作
  • 缺点:不能使用子类特有的成员

Animal.class

package Demo;public class Animal {public void eat() {System.out.println("动物都需要吃");}public void UseEat(Animal animal) {animal.eat();}
}

Dog.class

package Demo;public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗狗吃骨头");}
}

Cat.class

package Demo;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}
}

测试类

import Demo.Animal;
import Demo.Cat;
import Demo.Dog;public class Main {public static void main(String[] args) {Animal animal = new Animal();animal.UseEat(new Cat()); // 猫吃鱼animal.UseEat(new Dog()); // 狗狗吃骨头}
}

多态转型

  • 分为向上转型和向下转型
  • 向上转型,就是正常的多态
  • 向下转型,因为多态之后,就不能访问子类特有的成员,所以就需要向下转型成子类,这样就可以调用子类特有的成员了

Animal.class

package Demo;public class Animal {public void eat() {System.out.println("动物都需要吃");}
}

Cat.class

package Demo;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}// 猫类自己特有的成员方法public void catchMouse() {System.out.println("猫咪会抓老鼠");}
}

测试类

import Demo.Animal;
import Demo.Cat;public class Main {public static void main(String[] args) {Animal animal = new Cat(); // 多态animal.eat(); // 可以访问重写的成员方法// animal.catchMouse(); // 但是访问不了子类特有的成员方法。就需要向下转型成Cat,这样才能调用子类特有的成员Cat c = (Cat) animal;c.catchMouse(); // 猫咪会抓老鼠 向下转型后就可以访问了}
}

抽象类

  • 在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类
  • 抽象类和抽象方法用  abstract  关键字来修饰

public  abstract  void  抽象方法名();  // 抽象方法没有方法体,抽象方法只能在抽象类中

abstract  class  抽象类名  {  };  // 抽象类

举例

Animal.class

package Demo;// 抽象类,用 abstract 关键字修饰
public abstract class Animal {// 抽象方法,用 abstract 关键字修饰,且没有方法体。实现类必须重写抽象方法public abstract void eat();
}

Cat.class

package Demo;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}// 猫类自己特有的成员方法public void catchMouse() {System.out.println("猫咪会抓老鼠");}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.eat(); // 猫吃鱼}
}

抽象类的特点

  • 抽象类中不一定有抽象方法,也可以定义非抽象方法。但是抽象方法必须在抽象类中

Animal.class

package Demo;// 抽象类,用 abstract 关键字修饰
public abstract class Animal {// 抽象方法,用 abstract 关键字修饰,且没有方法体。实现类必须重写抽象方法public abstract void eat();// 抽象类中也可以有非抽象方法public void run() {System.out.println("动物都会奔跑");}
}

Cat.class

package Demo;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.eat(); // 猫吃鱼cat.run(); // 动物都会奔跑}
}
  • 抽象类不能实例化
  • 抽象类由具体的子类进行实例化(也就是子类继承抽象类并重写抽象类中的抽象方法,实例化子类既可使用)
  • 子类必须对父类(抽象类)中的所有抽象方法进行重写
  • 子类如果不重写父类(抽象类)中的抽象方法,则该子类也必须是抽象类(会继承父类的抽象方法),子类此时也是抽象类了。但是子类的子类如果想实例化使用,则还是要继承子类并且重写子类的抽象方法,总之就是只要想实例化使用,必须要继承抽象类并且重写抽象方法

Animal.class

package Demo;// 抽象类,用 abstract 关键字修饰
public abstract class Animal {// 抽象方法,用 abstract 关键字修饰,且没有方法体。实现类必须重写抽象方法public abstract void eat();// 抽象类中也可以有非抽象方法public void run() {System.out.println("动物都会奔跑");}
}

Cat.class

package Demo;public abstract class Cat extends Animal {}

LiHuaMao.class

package Demo;public class LiHuaMao extends Cat {@Overridepublic void eat() {System.out.println("小狸花吃老鼠");}
}

测试类

import Demo.LiHuaMao;public class Main {public static void main(String[] args) {LiHuaMao liHuaMao = new LiHuaMao();liHuaMao.eat(); // 小狸花吃老鼠liHuaMao.run(); // 动物都会奔跑}
}
  • 抽象类可以有构造方法,用于子类访问父类时的数据初始化

Animal.class

package Demo;// 抽象类,用 abstract 关键字修饰
public abstract class Animal {private String name;private int 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;}// 抽象方法,用 abstract 关键字修饰,且没有方法体。实现类必须重写抽象方法public abstract void eat();// 抽象类中也可以有非抽象方法public void run() {System.out.println("动物都会奔跑");}// 抽象类也可以有构造方法,用于子类数据初始化public Animal() {}public Animal(String name, int age) {this.name = name;this.age = age;}
}

Cat.class

package Demo;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}public Cat() {}public Cat(String name, int age) {super(name, age);}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat cat = new Cat("咪咪",5);System.out.println(cat.getName()); // 咪咪System.out.println(cat.getAge()); // 5}
}

abstract关键字注意点(记结论就行,原因不用记)

  • abstract 关键字不能与 private 关键字同用,冲突(因为抽象方法必须被子类重写,但是private修饰的方法不能被子类继承)
  • abstract 关键字不能与 final 关键字同用,冲突(final修饰的变量,方法都不能被修改,继承)
  • abstract 关键字不能与 static 关键字同用,无意义(static是静态的,抽象方法中无方法体,无法调用)

接口

  • 接口就是一种公共的规范标准,只要符合规范标准,都可以通用。Java中的接口更多体现在对行为的抽象上
  • 接口,用 interface 修饰 

public  interface  接口名  {  }

  • 类实现接口用  implements  表示

public  class  类名  implements  接口名  {  }

创建接口

 举例:

Animal.class(这个是接口)

package Demo;public interface Animal {// 接口中只能有常量,前面默认添加 public static final。因为加了 static ,所以可以直接 类名. 调用String name = "动物名";public static final int age = 5; // 跟上面写是一样的,可以看出前面的都是灰色的,可写可不写// 接口中JDK8之前只能有抽象方法,但是JDK8之后可以有非抽象方法(但是需要使用default关键字修饰)public abstract void eat(); // 接口中的抽象方法,前面默认会自动添加public abstractvoid drink();public default void run() {System.out.println("动物都会奔跑");}
}

Cat.class

package Demo;public class Cat implements Animal{@Overridepublic void eat() {System.out.println("猫吃鱼");}@Overridepublic void drink() {System.out.println("猫喝水");}
}

实现类

import Demo.Animal;
import Demo.Cat;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.run(); // 动物都会奔跑cat.eat(); // 猫吃鱼cat.drink(); // 猫喝水System.out.println(Animal.name); // 动物名}
}
  • 接口不能实例化,跟抽象类一样。但是接口可以参照多态的方式,通过实现类对象实例化,叫接口多态

举例:

Animal.class(这个是接口)

package Demo;public interface Animal {// 接口中只能有常量,前面默认添加 public static final。因为加了 static ,所以可以直接 类名. 调用String name = "动物名";public static final int age = 5; // 跟上面写是一样的,可以看出前面的都是灰色的,可写可不写// 接口中JDK8之前只能有抽象方法,但是JDK8之后可以有非抽象方法(但是需要使用default关键字修饰)public abstract void eat(); // 接口中的抽象方法,前面默认会自动添加public abstractvoid drink();public default void run() {System.out.println("动物都会奔跑");}
}

Cat.class

package Demo;public class Cat implements Animal{@Overridepublic void eat() {System.out.println("猫吃鱼");}@Overridepublic void drink() {System.out.println("猫喝水");}
}

测试类

import Demo.Animal;
import Demo.Cat;public class Main {public static void main(String[] args) {Animal cat = new Cat(); // 这个就是接口多态cat.eat(); // 猫吃鱼(多态访问成员方法规则:编译看左,执行看右。所以输出的是猫的吃方法)}
}
  • 接口中不能有构造方法
  • 接口的实现类,要不重写接口中所有的抽象方法,要不就是抽象类。但是最终只要使用接口,还是要重写所有的抽象方法。同抽象类
  • 定义了一个类,如果没有继承任何父类,则在默认情况下,就继承了Object父类,任何类的祖宗类,都是Object类

类与接口的小区别

  • 一个类只能单继承一个父类。但是接口可以继承n个不同的接口
  • 一个类可以实现n个接口

内部类

  • 就是在一个类中又定义了一个类

比如:在一个A类的内部定义一个类B,类B就称为内部类,类A相应的称为外部类

public  class  外部类名  {

        public  class  内部类名  {

                ...

        }

}

内部类访问特点

  • 内部类可以直接访问外部类的成员,包裹私有修饰的
  • 外部类要访问内部类的成员,则必须创建实例才能访问

Cat.class

package Demo;// 外部类
public class Cat {private String name = "猫咪";private int age = 5;// 内部类public class LiHuaMao {private String name = "狸猫";public void dis() {System.out.println("我是一只小"+ name + ",在古代我可以换太子。今年我" + age + "岁了");}}// 外部类如果想使用内部类,必须实例化内部类才能使用public void Xxx() {LiHuaMao liHuaMao = new LiHuaMao();liHuaMao.dis();}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.Xxx(); // 我是一只小狸猫,在古代我可以换太子。今年我5岁了}
}

内部类分类

成员内部类

  •  作为类中的一个成员。定义在类中成员方法外,跟成员方法,成员属性(又叫成员变量)同级的

package Demo;// 外部类
public class Cat {// 成员属性private String name = "猫咪";private int age = 5;// 内部类(成员内部类,跟成员方法,成员属性同级)public class LiHuaMao {}// 成员方法public void eat() {System.out.println("猫吃鱼");}
}

 在同一个类中访问成员内部类

Cat.class

package Demo;// 外部类
public class Cat {// 成员属性private String name = "猫咪";private int age = 5;// 内部类(成员内部类,跟成员方法,成员属性同级)public class LiHuaMao {private String skill = "抓老鼠";public void eat() {System.out.println("小狸花吃老鼠");}}// 成员方法public void readInnerClass() {// 在同一个类中访问成员内部类(需要实例化后才能访问)LiHuaMao liHuaMao = new LiHuaMao();liHuaMao.eat(); // 小狸花吃老鼠System.out.println(liHuaMao.skill); // 抓老鼠}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.readInnerClass(); // 小狸花吃老鼠   抓老鼠}
}

外界访问成员内部类

  • 实际开发中,外界是无法访问内部类的。都是通过私有形式让外界无法访问内部类。只能在该类中使用

外界类.成员内部类  xxx  =  new  外界类().new  成员内部类();

Cat.class

package Demo;// 外部类
public class Cat {// 成员属性private String name = "猫咪";private int age = 5;// 内部类(成员内部类,跟成员方法,成员属性同级)public class LiHuaMao {private String skill = "抓老鼠";public void eat() {System.out.println("小狸花吃老鼠");}}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat.LiHuaMao liHuaMao = new Cat().new LiHuaMao();liHuaMao.eat(); // 小狸花吃老鼠}
}

静态内部类

  • 定义在外部类中的成员方法外,并由static修饰的内部类(其实就是用static修饰成员内部类)

同一类中访问

  • 外部类中的静态成员方法,只能访问静态内部类

Cat.class

package Demo;// 外部类
public class Cat {// 成员属性private String name = "猫咪";private int age = 5;// 内部类(静态内部类(我感觉叫静态成员内部类更好理解),跟成员方法,成员属性同级)public static class LiHuaMao {private String skill = "抓老鼠";public void eat() {System.out.println("小狸花吃老鼠");}}// 非静态成员方法(非静态的可以访问静态)public void readInnerClass() {LiHuaMao liHuaMao = new LiHuaMao();liHuaMao.eat();}// 静态成员方法(静态的只能访问静态的)public static void readInnerClass2() {LiHuaMao liHuaMao = new LiHuaMao();liHuaMao.eat();}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.readInnerClass(); // 小狸花吃老鼠cat.readInnerClass2(); // 小狸花吃老鼠}
}

外界进行访问

  • 实际开发中,外界是无法访问内部类的。都是通过私有形式让外界无法访问内部类。只能在该类中使用
  • 注意:静态内部类中,访问外部类,只能访问外部类的静态成员。静态只能访问静态

外界类.静态内部类  xxx  =  new  外界类.静态内部类();

Cat.class

package Demo;// 外部类
public class Cat {// 成员属性private String name = "猫咪";private static int age = 5;// 内部类(静态内部类(我感觉叫静态成员内部类更好理解),跟成员方法,成员属性同级)public static class LiHuaMao {private String skill = "抓老鼠";public void showAge() {// 静态内部类访问外部类,只能访问外部类的静态成员System.out.println("小狸花今年" + age + "岁了");}}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat.LiHuaMao liHuaMao = new Cat.LiHuaMao();liHuaMao.showAge(); // 小狸花今年5岁了}
}

方法内部类

  • 又叫局部内部类,定义在方法中的类
  • 只能在方法内使用,外界用不了

Cat.class

package Demo;// 外部类
public class Cat {// 成员方法public void type() {// 内部类(方法内部类,定义在方法内,只能在方法中使用)class LiHuaMao {String name = "咪咪";int age = 5;void eat() {System.out.println("吃老鼠");}}LiHuaMao liHuaMao = new LiHuaMao();System.out.println(liHuaMao.name); // 咪咪liHuaMao.eat(); // 吃老鼠}
}

测试类

import Demo.Cat;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.type(); // 咪咪  吃老鼠}
}

匿名内部类

  • 是一个继承了某父类或者实现了某接口的匿名实例化对象

new  Animal() {

        // 重写了抽象类Animal的抽象方法

        ...

}.xxx();

或者

new  Animal() {

        // 重写了接口Animal的抽象方法

        ...

}.xxx();

  • 其实就是实现接口或者继承了抽象类后,没有用变量进行接收,直接开始用了

举例:

Animal.class

package Demo;
// 抽象类
public abstract class Animal {// 抽象方法public abstract void eat();
}

测试类

import Demo.Animal;public class Main {public static void main(String[] args) {new Animal(){@Overridepublic void eat() {System.out.println("动物都会吃");}}.eat(); // 动物都会吃}
}
  • 接口同理

思考:正常情况下,接口或者抽象类是无法实例化的,为什么匿名内部类看着却可以实例化抽象类或者接口呢?

其实不是实例化了,而是在编译阶段,内部帮我们实现了子类或者实现类。接口和抽象类是永远不能实例化的!

  • 使用匿名内部类,就不需要创建实现类或者子类了,简化了步骤,底层帮我们创建了子类

相关文章:

Java学习笔记-04

目录 静态成员 mian方法 多态 抽象类 接口 内部类 成员内部类 静态内部类 方法内部类 匿名内部类 静态成员 static关键字可以修饰成员方法&#xff0c;成员变量被static修饰的成员&#xff0c;成员变量就变成了静态变量&#xff0c;成员方法就变成了静态方法static修…...

pubspec.yaml 第三方依赖版本控制

以下是一些常见的版本控制方式&#xff1a; 精确版本号&#xff1a;您可以指定特定的版本号&#xff0c;例如 dependency_name: 1.2.3。这将确保只有指定的版本被安装和使用。 范围约束&#xff1a;您可以使用比较运算符来指定版本范围&#xff0c;例如 dependency_name: ^1.2…...

打印机出现错误0x00000709的原因及解决方法

一般来说&#xff0c;出现错误0x00000709&#xff0c;可能是用户试图设置默认打印机时&#xff0c;系统无法完成操作的错误。这种错误通常发生在Windows 10或Windows 7操作系统上。**驱动人生**分析&#xff0c;其原因可能是以下几种情况&#xff1a; 1、已经设置了另一个打印…...

代码随想录算法训练营第二十九天|491.递增子序列、46.全排列、47.全排列 II

目录 491.递增子序列 46.全排列 47.全排列 II 491.递增子序列 本题和大家刚做过的 90.子集II 非常像&#xff0c;但又很不一样&#xff0c;很容易掉坑里。 代码随想录 视频讲解&#xff1a;回溯算法精讲&#xff0c;树层去重与树枝去重 | LeetCode&#xff1a;491.递增子序…...

【Kafka】Kafka监控工具Kafka-eagle简介

Kafka-eagle是一种基于Web的开源管理工具&#xff0c;可以用来监控、管理多个Kafka集群。 下面是使用Docker部署Kafka-eagle的步骤&#xff1a; 下载并安装Docker和Docker Compose。 创建文件夹&#xff0c;例如kafka-eagle&#xff0c;并在其中创建docker-compose.yml文件&a…...

Java操作MongoDB

上一篇文章: http://blog.csdn.net/gaowenhui2008/article/details/40045719 介绍到了在MongoDB的控制台完成MongoDB的数据操作&#xff0c;通过前一篇文章我们对MongoDB有了全面的认识和理解。现在我们就用Java来操作MongoDB的数据。 开发环境&#xff1a; System&#xff1a…...

Java断言(assert)的介绍和使用

Java断言&#xff08;assert&#xff09;的介绍和使用 在Java编程中&#xff0c;断言&#xff08;assert&#xff09;是一种有用的工具&#xff0c;用于在代码中进行条件检查和调试。通过使用断言&#xff0c;我们可以验证程序的逻辑和假设&#xff0c;确保程序在运行时达到预…...

我的世界Fabric mod开发-快速漏斗

前往我的主页以阅读完整内容&#xff0c;并获取源码 DearXuan的主页 MOD介绍 使用漏斗链进行分类或传递物品时,常常会发现漏斗速度太慢,难以收集全部掉落物.或者漏斗太多,影响性能.而现有的漏斗加速mod则是引入新的快速漏斗,存在各种兼容问题.开服时发现paper服务器可以修改原…...

AI“应用商店”来了!OpenAI首批70个ChatGPT Plugin最全梳理

OpenAI放出大招&#xff0c;本周将向所有ChatGPT Plus用户开放联网功能和众多插件本周将向所有ChatGPT Plus用户开放联网功能和众多插件&#xff0c;允许ChatGPT访问互联网并使用70个第三方插件。 本批第三方插件能够全方位覆盖衣食住行、社交、工作以及学习等日常所需&#x…...

NSS LitCTF部分wp

web 1、PHP是世界上最好的语言&#xff01;&#xff01; 直接cat flag flagNSSCTF{11eaebe0-3764-410d-be83-b23532a24235} 2、这是什么&#xff1f;SQL &#xff01;注一下 &#xff01; 直接查询&#xff0c;发现注入点是id 使用sqlmap列出所以数据库 ​sqlmap -u "h…...

【开发者指南】如何在MyEclipse中编辑HTML或JSP文件?(一)

MyEclipse v2022.1.0正式版下载 如果您有HTML或JSP文件要编辑&#xff0c;这里将介绍如何编辑。查找以下信息&#xff1a; 编辑源代码大纲和属性视图参数页面 该功能在MyEclipse中是可用的。 一、HTML / JSP编辑器 要编辑HTML或JSP文件&#xff0c;请执行以下操作当中的一…...

关于博客停更的原因

进入我的主页浏览一下&#xff0c;就可以发现我写到linux就不写了&#xff0c;c后面页不写了&#xff0c;题解也不更新了&#xff0c;确实&#xff0c;我承认我懒惰了&#xff0c;我选择了向后学习&#xff0c;而不是总结&#xff0c;写博客是一个良好的习惯和面试官看到的能够…...

智能感知编码优化与落地实践

作者 | XHF 导读 基于人眼视觉特性出发的感知编码优化技术&#xff0c;成为互联网短视频、OTT 等 UGC 场景的重点优化手段&#xff0c;可以在降低视频码率的同时&#xff0c;提升视频的观看体验。 今天主要有 4 个方面的内容。首先给大家介绍一下感知编码的技术背景&#xff1b…...

OpenCL编程指南-5.1工作项函数-整数函数-公共函数

工作项函数 应用程序使用clEnqueueNDRangeKernel和 clEnqueueTask API将OpenCL中的数据并行和任务并行内核排队。对于一个数据并行内核&#xff08;使用clEnqueueNDRangeKernel排队等待执行)&#xff0c;应用程序会指定全局工作大小&#xff0c;即可以并行执行这个内核的工作项…...

教你接入Midjourney,不用梯子也能玩

1、效果 话不多说&#xff0c;先上最终出图效果&#xff0c; 我给的关键词是一只白色的猫 2、接入流程 API文档可以来这里查&#xff08;可以白嫖100次midjourney出图和10次gpt4体验&#xff09;&#xff0c;我这里精简一下接入流程&#xff0c;方便大家快速接入 2.1、文字生…...

Mysql中常用到的查询关键字

文章目录 1、join2、like 模糊查询3、or4、distinct5、in 包含6、group by 分组7、order by8、limit 1、join MySQL 的连接主要分为内连接和外连接。 什么是内连接&#xff1a; 取得两张表中满足存在连接匹配关系的记录。 什么是外连接&#xff1a; 不只取得两张表中满足存在…...

【ROS】ROS1工具详解

1、roscore 1.1 说明 运行roscore&#xff0c;将会启动三个功能&#xff1a;ROS Master主节点、ROS参数服务器和记录ROS日志输出节点 1.2 用法 roscore [可选参数]1.3 参数详解 -h, --help&#xff0c;帮助信息 -p PORT, --portPORT&#xff0c;指定端口号&#xff0c;默认…...

论Plant Simulation中的Init的使用及调用顺序

往期内容回顾: 一文搞懂Plant Simulation中的Rotation设置 Plant Simulation与python之Socket通信的数据交互问题 自主移动机器人模型制作 写在开头 在阅读之前,可以先尝试回答一下如下问题,如果都能答得上来,这篇文章就可以忽略不看了。 Q1:对于主模型中包括多…...

nginx实现正向代理

1.下载nginx nginx: download 选择自己需要的版版本下载下来 2.解压文件修改ngixn.conf配置文件 events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout…...

【spark】

实验5 Spark Structured Streaming编程实践 实验内容和要求 0.结构化流练习任务 0.1 讲义文件源-json数据任务。按照讲义中json数据的生成及分析&#xff0c;复现实验&#xff0c;并适当分析。 &#xff08;1&#xff09;创建程序生成JSON格式的File源测试数据 import osimp…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...