java入门基础

article/2025/9/23 15:09:40

语法基础

变量和常量

字符串

tring 类型是引用类型

字符串拼接可以直接用加号连接

自动类型转换

向上类型转换,是小类型到大类型的转换。

和C语音一样

int类型可以自动转换为double

但是double需要强制转换才能转换为int

强制类型转换

向下类型转换,是大类型强制转换到小类型的转换。

语法:( 数据类型 ) 数值

int b = (int)a;

double的值转换为int会直接从小数点处截断

常量

final String STR = "常量";

注释

分为文档注释、多行注释、单行注释

package com.imooc;
/*** 这是文档注释* @author wwb* @version v1.0*/
public class Demo01 {/* * 这是多行注释* 多行注释*/public static void main(String[] args) {// 单行注释System.out.println("Hello JAVA!");}
}

PS:使用文档注释时还可以使用 javadoc 标记,生成更详细的文档信息:

@author 标明开发该类模块的作者
@version 标明该类模块的版本
@see 参考转向,也就是相关主题
@param 对方法中某参数的说明
@return 对方法返回值的说明
@exception 对方法可能抛出的异常进行说明

根据注释自动生成API帮助文档

可以使用javadoc命令从文档注释中提取内容,生成程序的 API 帮助文档。

javadoc -d doc Demo01.java

image

常用运算符

运算符是一种“功能”符号,用以通知 Java 进行相关的运算。

Java 语言中常用的运算符可分为如下几种:

  • 算术运算符

  • 赋值运算符

  • 比较运算符

  • 逻辑运算符

  • 条件运算符

算术运算符

image

赋值运算符

image

比较运算符

image

逻辑运算符

image

条件运算符

条件运算符( ? : )也称为 “三元运算符”。

语法形式:布尔表达式 ? 表达式1 : 表达式2

运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值

例如:
image

运算符的优先级

级别为 1 的优先级最高,级别 11 的优先级最低。

image

流程控制语句

与C/C++一致

数组

基础语法

语法:

int[] scores = {1,2,3,4,5};     // 声明并分配空间&赋值
// 等价于
int[] scores = new int[]{1,2,3,4,5};    // 后面[]中不能指定大小// 声明
int[] scores;       // 或者下面这种
double height[];
String[] names;

分配空间:

scores = new int[5];        // 长度为5的整数数组
height = new double[5];
names = new String[5];int[] scores = new int[5];  // 声明并分配空间

赋值或操作数组:

scores[1] = 80;                 // 赋值
System.out.println(scores[1]);  // 输出

使用Arrays类操作数组

Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序、搜索等。

需要导入Arrays类

import java.util.Arrays;

Arrays 中常用的方法:

  1. 排序

    Arrays.sort(数组名); //升序

  2. 将数组转换为字符串

    Arrays.toString(数组名);

    可以使用 toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开。

用foreach操作数组

foreach 并不是 Java 中的关键字,是 for 语句的特殊简化版本,在遍历数组、集合时, foreach 更简单便捷。从英文字面意思理解 foreach 也就是“ for 每一个”的意思。

语法:

for (元素类型 元素变量:遍历对象) {// 执行代码
}
// 例如
int[] scores = { 89, 72, 64, 58, 93 };
for (int score : scores) {System.out.println(score);
}

二维数组

声明数组并分配空间

语法:

数据类型[][] 数组名 = new 数据类型[行的个数][列的个数];
// 或者
数据类型[][] 数组名;
数组名 = new 数据类型[行的个数][列的个数];// 声明的同时赋值
数据类型[][] 数组名 = {{1,2,3},{4,5,6}};   // 两行三列
int[][] arr = {{1,2,3},{4,5,6}}
arr.length      // 行数
arr[0].length   // 第一个元素的数组长度(列数)

方法

基本语法

所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

语法:

访问修饰符 返回值类型 方法名(参数列表) {// 方法体
}

其中:

  1. 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用,其他几种修饰符的使用在后面章节中会详细讲解滴

  2. 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void ;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值

  3. 方法名:定义的方法的名字,必须使用合法的标识符

  4. 参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开

根据方法是否带参、是否带返回值,可将方法分为四类:

  • 无参无返回值方法
  • 无参带返回值方法
  • 带参无返回值方法
  • 带参带返回值方法
public class HelloWorld {public static void main(String[] args) {// 创建对象,对象名为helloHelloWorld hello = new HelloWorld();    // 调用方法hello.say();}/** 定义无参无返回值的方法*/public void say() {System.out.println("hello!");}
}

方法的重载

如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。

当调用被重载的方法时, Java 会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。

(与C++的重载一致)

判断方法重载的依据:

1、 必须是在同一个类中

2、 方法名相同

3、 方法参数的个数、顺序或类型不同

4、 与方法的修饰符或返回值没有关系

例子:

public class HelloWorld {public static void main(String[] args) {// 创建对象HelloWorld hello = new HelloWorld();// 调用无参的方法hello.print();// 调用带有一个字符串参数的方法hello.print("tom");// 调用带有一个整型参数的方法hello.print(18);}public void print() {System.out.println("无参的print方法");}public void print(String name) {System.out.println("带有一个字符串参数的print方法,参数值为:" + name);}public void print(int age) {System.out.println("带有一个整型参数的print方法,参数值为:" + age);}
}

类和对象

类的定义

public class Telephone {// 属性float screen;float cpu;float mem;// 方法void call() {System.out.println("calling...");}
}

类可以实例化为对象

// 类名 对象名 = new 类名();   // 构造方法
Telephone phone = new Telephone();

成员变量和局部变量

成员变量在类中定义(不一定要赋初值)。可以被同一个类的方法访问到。

局部变量在方法中定义(需要赋初值)。只能在本方法内访问。

构造方法

  1. 使用new 构造方法();来创建一个新的对象。
  2. 构造方法是定义在Java类中的一个用来初始化对象的方法。
  3. 构造方法与类名相同且没有返回值。
  4. 语法:
public 构造方法名 (参数) {     // 构造方法名与类名相同// 初始化代码
}
  1. 当没有指定构造方法时,系统会自动填加无参的构造方法。若有指定则不会添加。
  2. 构造方法也可以重载

static

我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享同一个成员。此时可以用static修饰。

Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。推荐使用类名访问。

静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收。

与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。

注意:

  1. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
  2. 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
  3. 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
  4. 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

静态初始化块

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象时并未执行静态初始化块。

封装

概念

将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法(set、get)来实现对隐藏信息的操作和访问

用包管理Java中的类

作用

  • 管理Java文件;
  • 解决同名文件冲突;

定义包

必须放在Java源程序的第一行,包名间可以用‘.’隔开。

比如:com.imooc.MyClass代表最底层是com,然后是imooc,按层次结构命名比较好。

包的使用

  • 可以通过import关键字,在某个文件中使用其他文件中的类。

  • Java中,包的命名规范是全小写字母

  • 加载某个包下面所有的文件可以这么写

    import com.imooc.*

访问修饰符

可以修饰属性和方法的访问范围

访问修饰符本类同包子类其他
private
默认
protected
public

this关键字

this关键字代表当前对象

封装对象的属性的时候,经常会用this关键字

内部类

内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。

作用:

  • 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
  • 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
  • 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

内部类可以分为:

  • 成员内部类
  • 静态内部类
  • 方法内部类
  • 匿名内部类
//外部类HelloWorld
public class HelloWorld {// 内部类Inner,类Inner在类HelloWorld的内部public class Inner {// 内部类的方法public void show() {System.out.println("welcome to imooc!");}}public static void main(String[] args) {// 创建外部类对象HelloWorld hello = new HelloWorld();// 创建内部类对象Inner i = hello.new Inner();// 调用内部类对象的方法i.show();}
}

成员内部类

内部类中最常见的就是成员内部类,也称为普通内部类。

  • 内部类可以使用任意访问控制符

  • 内部类中定义的方法可以直接访问外部类中的任意数据,不受访问控制符影响

  • 使用内部类必须先创建一个外部类的对象,然后通过外部类来new一个内部类对象,不能直接new一个内部类对象

  • 编译后会产生两个class

  • 外部类不能直接使用内部类的方法,可以先创建内部类对象,然后通过内部类的对象访问其成员变量和方法

  • 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:Outer.this.var

静态内部类

静态内部类是 static 修饰的内部类,这种内部类的特点是:

  • 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
  • 如果外部类的静态成员与内部类的成员名称相同,可通过类名.静态成员访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
  • 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
//外部类
public class HelloWorld {// 外部类中的静态变量scoreprivate static int score = 84;// 创建静态内部类public static class SInner {// 内部类中的变量scoreint score = 91;public void show() {System.out.println("访问外部类中的score:" +     HelloWorld.score  );System.out.println("访问内部类中的score:" + score);}}// 测试静态内部类public static void main(String[] args) {// 直接创建内部类的对象SInner si = new SInner();     // 调用show方法si.show();}
}

方法内部类

方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

继承

概念

继承是一种类与类的关系,Java中的继承是单继承。

子类拥有父类的所有属性和方法,实现代码复用。

语法:

class Dog extends Animal {// 代码...
}

方法的重写

子类继承父类时,可以对父类的方法进行重写,当调用方法时会优先调用子类的方法。

语法规则:

方法的返回类型,方法名,参数类型及个数都要与父类继承的方法相同,才叫方法的重写。

继承的初始化顺序

  1. 初始化父类再初始化子类
  2. 先执行初始化对象中的属性,再执行构造方法中的初始化

final关键字

final修饰的东西不可以被修改

final可以修饰类、方法、属性和变量

  • 修饰类,则该类不允许被继承
  • 修饰方法,则该方法不允许被重写
  • 修饰属性,则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
  • 修饰变量,则该变量只能赋一次值,即为常量

super关键字

在对象内部使用,可以代表父类对象。

子类的构造过程当中必须调用其父类的构造方法。

如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参的构造方法。

如果显式地调用构造方法,必须在子类构造方法的第一行。

如果子类构造方法中没有显式地调用父类的构造方法,而父类中又没有无参的构造方法,此时编译器会报错。

Object类

Object类是所有类的父类,Object类中的所有方法都可以在所有子类中调用。

toString()

返回对象的哈希code码(对象地址字符串)

可以重写toString()方法来输出对象的属性。

equals()

比较的是对象的引用是否指向同一块内存地址。

同一个类生成的两个对象,就算值是一摸一样的,但是通过equals()方法判断出来的结果也是false,也可以用==,结果和调用equals()方法是一样的。只有两者是同一个对象的时候才返回true

如果需要判断两个对象值是否相等,需要重写equals方法。

多态

对象的多种形态

引用的多态

父类的引用可以指向本类的对象。

父类的引用可以指向子类的对象。

Animal obj1 = new Animal();         // 父类的引用可以指向本类的对象
Animal obj2 = new Dog();            // 父类的引用可以指向子类的对象,这种形式称为多态
// Dog obj3 = new Animal();         // 错误的 

方法的多态

创建本类对象时,调用的方法为本类方法。

创建子类对象时,调用的方法为子类重写的方法或者继承的方法,但是父类不能调用子类中独有的方法。

instanceof关键字

进行多态中的引用类型转换时,可以用instanceof来判断是否能进行转换。

抽象类

语法:

抽象类前使用abstract关键字修饰。

作用:

限定子类必须实现某些方法,但不关注实现细节。

应用场景:

  1. 在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。
  2. 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

使用规则:

  1. abstract定义抽象类
  2. abstract定义抽象方法,只有声明,不需要实现
  3. 包含抽象方法的类是抽象类
  4. 抽象类中可以包含普通的方法,也可以没有抽象方法
  5. 抽象类不能直接创建,可以定义引用变量
public abstract class Telephone {public abstract void call();public abstract void message();
}// 然后创建子类继承他,重写方法就好了

接口

概念:

接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成。

类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。

语法:

[修饰符] interface 接口名 [extends 父接口1,父接口2...] 
{// 常量的定义public static final int var;  // 即使不写前面的修饰,编译器也会自动加上// 抽象方法的定义public abstract void func();  // 即使不写前面的修饰,编译器也会自动加上
}
// 接口是用来被继承、实现的,所以修饰符一般建议用public

使用:

一个类可以实现一个或多个接口,实现接口使用implements关键字。Java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。

                // 如果要继承父类,extends要在implements前
[修饰符] class 类名 extends 父类 implements 接口1,接口2... 
{// 如果继承了抽象类,需要实现继承的抽象方法;要实现接口中的抽象方法。
}

异常

try-catch 和 try-catch-finally

try{// 执行代码
} catch (InputMismatchException e) {// 处理错误e.printStackTrace();
} catch (ArithmeticException e) {// ...
} finally {// 最终要执行的代码 
}

异常的抛出

public void divide(int a,int b) throws Exception {  // 声明会抛出什么类型的异常if (b == 0) throw new Exception("除数为0");            // 抛给上一层,交由上层处理else System.out.println("结果为:" + a/b);
}

自定义异常

public class myException extends Exception {public myException(String message) {super(message);        }
}

包装类

为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。

自动装箱/拆箱

public class HelloWorld {public static void main(String[] args) {// 定义double类型变量double a = 91.5;// 手动装箱Double b = new Double(a);       // 自动装箱Double c = a;       System.out.println("装箱后的结果为:" + b + "和" + c);// 定义一个Double包装类对象,值为8Double d = new Double(87.0);// 手动拆箱double e = d.doubleValue();// 自动拆箱double f = d;System.out.println("拆箱后的结果为:" + e + "和" + f);}
}

日期相关

Date和SimpleDateFormat

在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类。这个类最主要的作用就是获取当前时间。

Date d = new Date();
System.out.println(d);  // Tue Jul 17 17:17:57 CST 2018

可以使用 SimpleDateFormat 来对日期时间进行格式化,可以将日期转换为指定格式的文本,也可将文本转换为日期。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String timeNow = sdf.format(d);
System.out.println(timeNow);            // 2018-07-17 17:22:47

使用 parse() 方法将文本转换为日期

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = "2014-6-1 21:05:36";
Date date1 = null;
try {date1 = sdf1.parse(str);            // 需要用try-catch包围,因为可能会抛出错误
} catch (ParseException e) {e.printStackTrace();
}
System.out.println(date1);

Calendar

Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理。

java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

public static void main(String[] args) {// 创建Calendar对象Calendar c = new Calendar.getInstance();// 将Calendar对象转换为Date对象Date date = c.getTime()// 创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 将日期转换为指定格式的字符串String now = sdf.format(date);System.out.println("当前时间:" + now);
}

集合框架

作用

  • 在类的内部,对数据进行组织;
  • 简单而快速地搜索大数量的条目;
  • 有的集合接口,提供了一些列排列有序的元素,并且可以在序列中间快速地插入或者删除有关元素;
  • 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。

与数组的区别

  • 数组的长度固定,集合长度可变;
  • 数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象;
  • *

collection

是List、Set和Queue接口的父接口

定义了可用于操作List、Set和Queue的方法(增删改查)

List接口

List是元素有序并且可以重复的集合,被成为序列

List可以精确地控制每个元素的插入位置,或删除某个位置元素

动态加载类

静态加载

静态加载是在编译的时候就加载的,用new的都是静态加载

动态加载

运行时加载

try {Class c = Class.forName(args[0])  // args[0]运行时带入的第一个参数,这里填需要加载的类名
}
catch (Exception e) {e.printStackTrace();
}

http://chatgpt.dhexx.cn/article/7sp6PnWi.shtml

相关文章

JAVA基础入门学习

书籍推荐和视频推荐 Java核心卷I java核心卷II可以买也可以不买。java核心卷I只看前9章,其他不用看。身边同学都认为这本书不适合初学者,但是如果你之前看过java学习视频,那么这本书很适合你。这本书主要让你对java知识有个系统的学习&…

JAVA入门及基础

随着技术的不断发展,编程语言的种类也在越来越多,由全国知名TIOBE编程语言社区发布的编程语言排行榜来看,我们的JAVA在近两年来仍然占据榜二榜三,那么能一直稳居前排必然是有他的原因的:我们的JAVA具有使用广泛&#x…

《Java基础入门》第三版--黑马程序员课后习题(编程部分)

第 1 章 Java 开发入门 第 2 章 Java 编程基础 1. 编写程序,计算13…99的值,要求如下: (1)使用循环语句实现1~99的遍历 (2)在遍历过程中,通过条件判断当前的数是否为奇数,如果是就累加,否则不加。 public class getSum { 2 public static void main(String[] ar…

《Java基础入门》笔记——01 Java初步

1 关于Java 1.1 Java的发展简史 Java之父——Gosling(高司令)98年,Java2企业平台J2EE发布99年发布J2SE(标准版)、J2EE(企业版)、J2ME(微型版)04年,发布JavaSE5.009年,Oracle收购Sun14年,发布JavaSE8 1.2 Java语言的特点 简单。…

java基础入门(完整详细版)

前言: 这篇教程对没学过java的完全适用这篇教程是一个学习方向的引导,且只针对基础入门。 一.入门篇 1.安装JDK的运行环境 1.1 下载JDK 直接官网下载:http://www.oracle.com/;链接:网盘安装JDK点击就可以下载(推荐…

Linux udev规则编写

编写本文的目的: 看完本章,朋友们可以进行随心所欲的运用udev,编写udev规则,更好的管理Linux设备。例如,把硬盘sda根据盘的SN码生成一个软连接,使得SN码当做sda一样使用。 在文章结束后,既可以有方案可以实现。 udev是什么? udev 是 Linux2.6 内核里的一个功能,它替代…

udev的rules编写

1.综述 本文简单介绍udev机制,并编写udev规则,实现手机即U盘自动挂载 2.udev介绍 udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过帧听内…

[Linux 基础] -- udev 和 rules 使用规则

前言: 本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例。本文会使那些需要高效地、方便地管理 Linux 设备的用户受益匪浅,这些用…

linux udev

了解udev (Linux dynamic device management) 1.概述 Udev is the device manager for the Linux kernel. Udev dynamically creates or removes device node files at boot time in the /dev directory for all types of devices. udev is a replacement for the Device File…

udev(六):udev

原创文章&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; 作者&#xff1a;清林&#xff0c;博客名&#xff1a; 飞 空静渡 <!-- page { margin: 2cm } P { margin-bottom: 0.21cm } --> 基于上面提到的问题&#xff0c;便开始了 udev 的项目。 …

udev(八):实战:使用udevadm修改usb优盘在/dev下的名字

原创文章&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; 作者&#xff1a;清林&#xff0c;博客名&#xff1a; 飞 空静渡 udev的规则的编写&#xff0c;我这里就不说了&#xff0c;大家可以在udev的文档中可以了解&#xff0c;有时间的话我在安排一…

Linux下udev规则详解

如何运用udev&#xff1f;编写udev规则&#xff1f;通过udev更好的管理Linux设备? udev是什么&#xff1f; udev 是 Linux2.6 内核里的一个功能&#xff0c;它替代了原来的 devfs&#xff0c;成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行&#xff0c;通过侦…

Udev设备管理器

udev 引入 在2.4内核中 引入了 devfs&#xff0c;他支持设备节点的动态创建。devfs提供了在内存中的文件系统中创建设备节点的能力。设备驱动程序能够自主的管理自己的设备文件。而命名节点的任务还是落到了设备驱动程序头上。但是&#xff0c;设备命名策略是可管理的&#xf…

linux下udev详解

一.udev简介 udev是一个设备管理工具&#xff0c;udev以守护进程的形式运行&#xff0c;通过侦听内核发出来的uevent来管理/dev目录下的设备文件。udev在用户空间运行&#xff0c;而不在内核空间 运行。它能够根据系统中的硬件设备的状态动态更新设备文件&#xff0c;包括设备…

[2020.1.14][udev] udev介绍

1 什么是udev udev是一种工具&#xff0c;它能够根据系统中的硬件设备的状态动态更新设备文件&#xff0c;包括设备文件的创建&#xff0c;删除等。 设备文件通常放在/dev目录下。使用udev后&#xff0c;在/dev目录下就只包含系统中真正存在的设备。 设备访问控制udev:user …

LINUX下 Udev详解

如果你使用Linux比较长时间了&#xff0c;那你就知道&#xff0c;在对待设备文件这块&#xff0c;Linux改变了几次策略。在Linux早期&#xff0c;设备文件仅仅是是一些带有适当的属性集的普通文件&#xff0c;它由mknod命令创建&#xff0c;文件存放在/dev目录下。后来&#xf…

wmic bug

今天尝试用wmic进行横向移动&#xff0c;老是出现 , - Alias not found&#xff0c;再三确认不是命令的问题&#xff0c;尝试修改域控用户的密码后成功解决&#xff0c;难道这时wmic的bug&#xff1f;&#xff1f;&#xff1f; 猜测是因为密码种含有 , . 这样的符号导致命令产生…

wmic命令学习

我目前知道wmic可以查询进程&#xff0c;还可以查询服务。查询进程使用wmic process,如果想知道进程的名字、进程号、执行文件路径可以通过get来获取&#xff0c;还可以根据where筛选进程进行查询。 wmic process get name, processid,executablepath 查询主机进程信息&#xf…

Windows 命令 WMIC 使用详解

WMIC扩展WMI&#xff08;Windows Management Instrumentation&#xff0c;Windows管理工具&#xff09; &#xff0c;提供了从命令行接口和批命令脚本执行系统管理的支持。在WMIC出现之前&#xff0c;如果要管理WMI系统&#xff0c;必须使用一些专门的WMI应用&#xff0c;例如S…

wmic java_Java执行wmic命令获取系统环境变量

1.首先编写文件setenv.bat设置系统环境变量&#xff1a; echo %cd% set framework_home%cd% echo %framework_home% wmic ENVIRONMENT create name"framework_home",username"",VariableValue"%framework_home%" Note: 此处假设framework_home为…