01-java面试题八股文-----java基础——20题

news2024/9/24 0:46:15

文章目录

  • <font color="red">1、java语言有哪些特点:
  • <font color="red">2、面向对象和面向过程的区别
  • <font color="red">3、标识符的命名规则。
  • <font color="red">4、八种基本数据类型的大小,以及他们的封装类
  • <font color="red">5、instanceof 关键字的作用
  • <font color="red">6、Java自动装箱与拆箱
    • <font color="blue">6.1、面试题1: 以下代码会输出什么?
    • <font color="blue">6.2、面试题2:以下代码输出什么
  • <font color="red">7、 重载和重写的区别
    • <font color="blue">7.1、重写
    • <font color="blue">7.2、重载
  • <font color="red">8、 equals与==的区别
  • <font color="red"> 9、 Hashcode的作用
  • <font color="red">10、为什么重载hashCode方法?
  • <font color="red">11、ArrayList和linkedList的区别
  • <font color="red">12、 HashMap和HashTable的区别
  • <font color="red">13、 Collection包结构,与Collections的区别
  • <font color="red">14、 Java的四种引用,强弱软虚
  • <font color="red">15、 泛型常用特点
  • <font color="red">16、Java创建对象有几种方式?
  • <font color="red">17、有没有可能两个不相等的对象有相同的hashcode
  • <font color="red">18、深拷贝和浅拷贝的区别是什么?
  • <font color="red">19、final有哪些用法?
  • <font color="red"> 20、static都有哪些用法?
  • 再刷20题

1、java语言有哪些特点:

  • 1、简单易学、有丰富的类库
  • 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)
  • 3、与平台无关性(JVM是Java跨平台使用的根本)
  • 4、可靠安全
  • 5、支持多线程
  • 6、垃圾回收:Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的内存,减少了程序员手动管理内存的工作量。

2、面向对象和面向过程的区别

  1. 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发
  2. 面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展。可以设计出低耦合的系统。 但是性能上来说,比面向过程要低。

3、标识符的命名规则。

  1. 标识符的含义: 是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等等,都是标识符。
  2. 命名规则:(硬性要求) 标识符可以包含英文字母,0-9的数字,$以及_ 标识符不能以数字开头 标识符不是关键字
  3. 命名规范:
    • (非硬性要求) 类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)。
    • 变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。
    • 方法名规范:同变量名。

4、八种基本数据类型的大小,以及他们的封装类

在这里插入图片描述

  1. int是基本数据类型,Integer是int的封装类,是引用类型。int默认值是0,而Integer默认值
    是null,所以Integer能区分出0和null的情况。

    • 一旦java看到null,就知道这个引用还没有指向某个对象,再任何引用使用前,必须为其指定一个对象,否则会报错。
  2. 基本数据类型在声明时系统会自动给它分配空间,而引用类型声明时只是分配了引用空间,必须通过实例化开辟数据空间之后才可以赋值。数组对象也是一个引用对象,将一个数组赋值给另一个数组时只是复制了一个引用,所以通过某一个数组所做的修改在另一个数组中也看的见。

    • 虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。使用int的原因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),具有高效存取的特点。

5、instanceof 关键字的作用

  1. instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法
    为:
boolean result = obj instanceof Class
  • 其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。
  • 注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。
 int i = 0;
 System.out.println(i instanceof Integer);//编译不通过  i必须是引用类型,不能是基本类型
System.out.println(i instanceof Object);//编译不通过
Integer integer = new Integer(1);
 System.out.println(integer instanceof  Integer);//true
JavaSE规范 中对 instanceof 运算符的规定就是:如果 obj 为 null,那么将返
回 falseSystem.out.println(null instanceof Object); //false   

6、Java自动装箱与拆箱

在这里插入图片描述

  1. 自动装箱就是自动将基本数据类型转换为包装器类型(int–>Integer)。
    • 调用方法:Integer的valueOf(int) 方法
  2. 拆箱就是自动将包装器类型转换为基本数据类型(Integer–>int)。
    • 调用方法:Integer的intValue方法
  3. 在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:
Integer i = new Integer(10);
  1. 而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:
 Integer i = 10;

6.1、面试题1: 以下代码会输出什么?

 public class Main {
    public static void main(String[] args) {
         
        Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;
         
        System.out.println(i1==i2);//true
        System.out.println(i3==i4);// false
    }
 }
  1. 这里的==符号是判定两个对象的地址是否一样。
    • (如果判断引用类型,判断的是地址是否相等,即判定的是不是同一个对象。)
    • (如果判断基本数据类型,判断值是否相等。)
  2. 为什么会出现这样的结果?
    • 输出结果表明i1和i2指向的是同一个对象,而i3和i4指向的是不同的对象。
  3. 此时只需一看源码便知究竟,下面这段代码是Integer的valueOf方法的具体实现:
public static Integer valueOf(int i) {
        if(i >= -128 && i <= IntegerCache.high)
            return IntegerCache.cache[i + 128];
        else
            return new Integer(i);
    }
  1. 其中IntegerCache类的实现为:
 private static class IntegerCache {
        static final int high;
        static final Integer cache[];
 
        static {
            final int low = -128;
 
            // high value may be configured by property
            int h = 127;
            if (integerCacheHighPropValue != null) {
                // Use Long.decode here to avoid invoking methods that
                // require Integer's autoboxing cache to be initialized
                int i = Long.decode(integerCacheHighPropValue).intValue();
                i = Math.max(i, 127);
                // Maximum array size is Integer.MAX_VALUE
                h = Math.min(i, Integer.MAX_VALUE - -low);
            }
            high = h;
 
            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);
        }
 
        private IntegerCache() {}
    }

  • 从这2段代码可以看出,在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用否则创建一个新的Integer对象。
  • 上面的代码中i1和i2的数值为100,因此会直接从cache中取已经存在的对象,所以i1和i2指向的是同一个对象,而i3和i4则是分别指向不同的对象

6.2、面试题2:以下代码输出什么

public class Main {
    public static void main(String[] args) {
         
        Double i1 = 100.0;
        Double i2 = 100.0;
        Double i3 = 200.0;
        Double i4 = 200.0;
         
        System.out.println(i1==i2);//false
        System.out.println(i3==i4);//false
    }
 }

原因: 在某个范围内的整型数值的个数是有限的,而浮点数却不是。

7、 重载和重写的区别

7.1、重写

  1. **重写(Override):**从字面上看,重写就是重新写一遍的意思。
    • 其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(子类中方法的返回值是父类中方法返回值的子类时也算重写)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于类的
      在这里插入图片描述
 public class Father {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Son s = new Son();
        s.sayHello();
    }
 
    public void sayHello() {
        System.out.println("Hello");
    }
 }
 
class Son extends Father{
	 @Override
	    public void sayHello() {
	        // TODO Auto-generated method stub
	        System.out.println("hello by ");
	    }
 
}
  1. 重写 总结:
    • 1.发生在父类与子类之间
    • 2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
    • 3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
    • 4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

7.2、重载

  1. 重载:在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。
 public class Father {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Father s = new Father();
        s.sayHello();
        s.sayHello("wintershii");
 
    }
 
    public void sayHello() {
        System.out.println("Hello");
    }
 
    public void sayHello(String name) {
        System.out.println("Hello" + " " + name);
    }
 }
  1. 重载 总结
    • 1.重载Overload是一个类中多态性的一种表现
    • 2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
    • 3.重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准

8、 equals与==的区别

  1. ==

    • == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
      • 1、比较的是操作符两端的操作数是否是同一个对象。
      • 2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。
      • 3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如: int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆。
  2. equals

    • equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。
  3. 总结
    所有比较是否相等时,都是用equals 并且在对常量相比较时,把常量写在前面,因为使用object在前面的话,object可能为null ,则发生空指针异常。

    • 在阿里的代码规范中只使用equals ,阿里插件默认会识别,并可以快速修改,推荐安装阿里插件来排查老代码使用“==”,替换成equals

9、 Hashcode的作用

  1. java的集合有两类,一类是List,还有一类是Set。前者有序可重复,后者无序不重复

    • 当我们在set中插入的时候怎么判断是否已经存在该元素呢,可以通过equals方法。但是如果元素太多,用这样的方法效率会比较低。
      • 于是有人发明了哈希算法来提高集合中查找元素的效率。 这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储的那个区域。
  2. hashCode方法可以这样理解:它返回的就是根据对象的内存地址换算出的一个值。这样一来,当集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子能定位到它应该放置的物理位置上。如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如果这个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址。这样一来实际调用equals方法的次数就大大降低了,几乎只需要一两次。

10、为什么重载hashCode方法?

  1. 一般的地方不需要重载hashCode,只有当类需要放在HashTable、HashMap、HashSet等等hash结构的集合时才会重载hashCode,那么为什么要重载hashCode呢?

    • 如果你重写了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。
    • 这样,当你用其中的一个作为键保存到hashMap、hasoTable或hashSet中,再以“相等的”找另一个作为键值去查找他们的时候,则根本找不到。
  2. 重载hashCode方法是为了在使用哈希表等数据结构时能够更好地进行元素的散列和查找。hashCode方法是Object类中定义的一个方法,它返回对象的哈希码值。在默认情况下,hashCode方法会根据对象的内存地址生成一个唯一的哈希码值。

    • 然而,在某些情况下,我们可能需要根据对象的特定属性来生成哈希码值,以便更好地满足我们的需求。例如,如果我们自定义了一个类,并且希望将其作为键存储在HashMap中,那么我们需要重载该类的hashCode方法,以便根据键的特定属性来生成哈希码值。
    • 重载hashCode方法的目的是为了保证相等的对象具有相等的哈希码值。这样,在进行元素查找时,可以首先根据哈希码值进行快速定位,然后再比较对象的实际内容来确定是否相等。
  3. 总结一下,重载hashCode方法可以提高数据结构的性能和效率,使得元素的散列和查找更加准确和高效。

11、ArrayList和linkedList的区别

  1. Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。
    • Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排数组中的所有数据, (因为删除数据以后, 需要把后面所有的数据前移)
    • 缺点: 数组初始化必须指定初始化的长度, 否则报错

例如:

 int[] a = new int[4];//推介使用int[] 这种方式初始化
int c[] = {23,43,56,78};//长度:4,索引范围:[0,3]
  1. List—是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式,它继承Collection。
    • List有两个重要的实现类:ArrayList和LinkedList
    • ArrayList: 可以看作是能够自动增长容量的数组
    • ArrayList的toArray方法返回一个数组
    • ArrayList的asList方法返回一个列表
    • ArrayList底层的实现是Array, 数组扩容实现
  2. LinkList是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList.当然,这些对比都是指数据量很大或者操作很频繁。

12、 HashMap和HashTable的区别

  1. 两者父类不同
    • HashMap是继承自AbstractMap类,而Hashtable是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口。
  2. 对外提供的接口不同:
    • Hashtable比HashMap多提供了elments() 和contains() 两个方法。
      • elments() 方法继承自Hashtable的父类Dictionnary。elements() 方法用于返回此Hashtable中的value的枚举。
      • contains()方法判断该Hashtable是否包含传入的value。它的作用与containsValue()一致。事实上,contansValue() 就只是调用了一下contains() 方法。
  3. 对null的支持不同:
    • Hashtable:key和value都不能为null。
    • HashMap:key可以为null,但是这样的key只能有一个,因为必须保证key的唯一性;可以有多个key值对应的value为null。
  4. 安全性不同:
    • HashMap是线程不安全的,在多线程并发的环境下,可能会产生死锁等问题,因此需要开发人员自己处理多线程的安全问题。
    • Hashtable是线程安全的,它的每个方法上都有synchronized 关键字,因此可直接用于多线程中。
    • 虽然HashMap是线程不安全的,但是它的效率远远高于Hashtable,这样设计是合理的,因为大部分的使用场景都是单线程。当需要多线程操作的时候可以使用线程安全的ConcurrentHashMap。
    • ConcurrentHashMap虽然也是线程安全的,但是它的效率比Hashtable要高好多倍。因为ConcurrentHashMap使用了分段锁,并不对整个数据进行锁定。
  5. 初始容量大小和每次扩充容量大小不同
  6. 计算hash值的方法不同

13、 Collection包结构,与Collections的区别

  1. Collection是集合类的上级接口,子接口有 Set、List、LinkedList、ArrayList、Vector、Stack、Set;
  2. Collections是集合类的一个帮助类, 它包含有各种有关集合操作的静态多态方法,用于实现对各种集合的搜索、排序、线程安全化等操作。此类不能实例化,就像一个工具类,服务于Java的Collection框架。

14、 Java的四种引用,强弱软虚

  1. 强引用:
    • 强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收。

使用方式:

String str = new String("str");
 System.out.println(str);
  1. 软引用:
    • 软引用在程序内存不足时,会被回收,使用方式:
// 注意:wrf这个引用也是强引用,它是指向SoftReference这个对象的,
// 这里的软引用指的是指向new String("str")的引用,也就是SoftReference类中T
 SoftReference<String> wrf = new SoftReference<String>(new String("str"));

可用场景: 创建缓存的时候,创建的对象放进缓存中,当内存不足时,JVM就会回收早先创建的对象。

  1. 弱引用:
    • 弱引用就是只要JVM垃圾回收器发现了它,就会将之回收。
  • 使用方式:
WeakReference<String> wrf = new WeakReference<String>(str);
  • 可用场景: Java源码中的java.util.WeakHashMap 中的key 就是使用弱引用,我的理解就是,一旦我不需要某个引用,JVM会自动帮我处理它,这样我就不需要做其它操作。
  1. 虚引用:
    • 虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入ReferenceQueue 中。注意,其它引用是被JVM回收后才被传入ReferenceQueue 中的。由于这个机制,所以虚引用大多被用于引用销毁前的处理工作。还有就是,虚引用创建的时候,必须带有ReferenceQueue 。
  • 使用例子:
PhantomReference<String> prf = new PhantomReference<String>(new String("str"), 
new ReferenceQueue<>());
  • 可用场景: 对象销毁前的一些操作,比如说资源释放等。Object.finalize() 虽然也可以做这类动作,但是这个方式即不安全又低效
  1. 上述所说的几类引用,都是指对象本身的引用,而不是指Reference的四个子类的引用(SoftReference等)。

15、 泛型常用特点

  1. 泛型是Java SE 1.5之后的特性, 《Java 核心技术》中对泛型的定义是:
    “泛型” 意味着编写的代码可以被不同类型的对象所重用。
  2. “泛型”,顾名思义,“泛指的类型”。我们提供了泛指的概念,但具体执行的时候却可以有具体的规则来约束,比如我们用的非常多的ArrayList就是个泛型类,ArrayList作为集合可以存放各种元素,如Integer, String,自定义的各种类型等,但在我们使用的时候通过具体的规则来约束,如我们可以约束集合中只存放Integer类型的元素,如
List<Integer> iniData = new ArrayList<>();
  1. 使用泛型的好处?
    • 以集合来举例,使用泛型的好处是我们不必因为添加元素类型的不同而定义不同类型的集合,如整型集合类,浮点型集合类,字符串集合类,我们可以定义一个集合来存放整型、浮点型,字符串型数据,而这并不是最重要的,因为我们只要把底层存储设置了Object即可,添加的数据全部都可向上转型为Object。 更重要的是我们可以通过规则按照自己的想法控制存储的数据类型

16、Java创建对象有几种方式?

  1. java中提供了以下四种创建对象的方式:
      1. new关键字创建新对象
      1. 通过反射机制
      1. 采用clone机制(克隆)
      1. 通过序列化机制(通过工厂类创建对象)

17、有没有可能两个不相等的对象有相同的hashcode

  1. 有可能。在产生hash冲突时,两个不相等的对象就会有相同的 hashcode 值.当hash冲突产生时,一般有以下几种方式来处理:
    • 拉链法:每个哈希表节点都有一个next指针,多个哈希表节点可以用next指针构成一个单向链表,被分配到同一个索引上的多个节点可以用这个单向链表进行存储.
    • 开放定址法:一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入
    • 再哈希:又叫双哈希法,有多个不同的Hash函数.当发生冲突时,使用第二个,第三个….等哈希函数计算地址,直到无冲突

18、深拷贝和浅拷贝的区别是什么?

  1. 浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象.
  2. 深拷贝:被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其他对象的变量将指向被复制过的新对象.而不再是原有的那些被引用的对象。换言之.深拷贝把要复制的对象所引用的对象都复制了一遍。

19、final有哪些用法?

  1. final也是很多面试喜欢问的地方,但我觉得这个问题很无聊,通常能回答下以下5点就不错了:
    • 被final修饰的类不可以被继承
    • 被final修饰的方法不可以被重写
    • 被final修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变.
    • 被final修饰的方法,JVM会尝试将其内联,以提高运行效率
    • 被final修饰的常量,在编译阶段会存入常量池中.
  2. 除此之外,编译器对final域要遵守的两个重排序规则更好:
    • 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序
    • 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序

20、static都有哪些用法?

  1. 所有的人都知道static关键字这两个基本的用法:静态变量和静态方法。也就是被static所修饰的变量/方法都属于类的静态资源,类实例所共享
  2. 除了静态变量和静态方法之外,static也用于静态块,多用于初始化操作:
 public calss PreCache{
 static{
 //执行相关操作
    }
 }
  1. 此外static也多用于修饰内部类,此时称之为静态内部类.
  2. 最后一种用法就是静态导包,即import static。import static是在JDK 1.5之后引入的新特性,可以用来指定导入某个类中的静态资源,并且不需要使用类名,可以直接使用资源名,比如:
import static java.lang.Math.*;
 
public class Test{
 
    public static void main(String[] args){
        //System.out.println(Math.sin(20));传统做法
        System.out.println(sin(20));
    }
 }

再刷20题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1539501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elastic 线下 Meetup 将于 2024 年 3 月 30 号在武汉举办

2024 Elastic Meetup 武汉站活动&#xff0c;由 Elastic、腾讯、新智锦绣联合举办&#xff0c;现诚邀广大技术爱好者及开发者参加。 活动时间 2024年3月30日 13:30-18:00 活动地点 中国武汉 武汉市江夏区腾讯大道1号腾讯武汉研发中心一楼多功能厅 13:30-14:00 入场 活动流程…

关于调度算法,小林给出更好的例子(银行办理业务)

看的迷迷糊糊&#xff1f;那我拿去银行办业务的例子&#xff0c;把上面的调度算法串起来&#xff0c;你还不懂&#xff0c;你锤我&#xff01; 办理业务的客户相当于进程&#xff0c;银行窗口工作人员相当于 CPU。 现在&#xff0c;假设这个银行只有一个窗口&#xff08;单核 …

Prometheus Grafana 配置仪表板

#grafana# 其实grafana提供了丰富的Prometheus数据源的仪表板&#xff0c;基本上主流的都有&#xff0c;通过下面官方地址可查阅 Dashboards | Grafana Labs 这里举例说明&#xff0c;配置node_exporter仪表板 首先&#xff0c;在上面的网站搜索 node 可以查到蛮多的仪表板…

使用 Pytorch 和 Rasterio 的自定义地理空间数据加载器

地理空间数据在从遥感和城市规划到环境监测和灾害管理的各个领域发挥着至关重要的作用。在处理机器学习任务的地理空间数据时,准备自定义数据加载器对于有效加载、预处理和增强数据而不丢失其属性至关重要,特别是当输入图像具有超过 3 个波段时。 Rasterio确实是一个专门为有…

FPGA——DDR3的IP核

FPGA——DDR3的ip核 IP核配置基于MIG核代码基于AXI接口的DDR3 IP核配置 1 2 3 4 5 6 基于MIG核代码 控制MIG核的信号进行读写 module MIG_APP_Drive(input i_ui_clk ,input i_ui_rst ,input init_calib_…

SpringCloud Alibaba Nacos 服务注册和配置中心

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十二篇&#xff0c;即介绍 SpringCloud Alibaba Nacos 服务注册和配置中心。 二、Nacos 简介 2.1 为…

【DataWhale】灵境Agent开发——低代码创建AI智能体

灵境Agent开发——低代码创建AI智能体 3 灵境 Agent 低代码开发 ​ 低代码模式支持开发者通过编排工作流的方式快速构建智能体&#xff0c;您可以通过拖拽和组合模型、提示词、代码等模块&#xff0c;实现准确的、复杂的业务流程。 ​ 个人体验下来&#xff0c;目前这个低代…

华为OD机22道试题

华为OD机试题 2.查找小朋友的好朋友位置 在学校中&#xff0c;N 个小朋友站成一队&#xff0c;第 i 个小朋友的身高为 height[i]&#xff0c;第 i 个小朋友可以看到第一个比自己身高更高的小朋友j&#xff0c;那么 j 是 i 的好朋友 (要求&#xff1a;j>i) 。 请重新生成一个…

[运维] 可视化爬虫易采集-EasySpider(笔记)

一、下载 ​下载地址 下滑到Assets页面&#xff0c;选择下载 二、解压运 ​解压压缩包&#xff0c;打开文件夹 在此文件夹下打开Linux Terimal, 并输入以下命令运行软件&#xff1a; ./easy-spider.sh 注意软件运行过程中不要关闭terminal。 三、使用 1.开始 首先点击…

机器学习算法那些事 | 数据算法工程师必须掌握的5个Python库

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;数据算法工程师必须掌握的5个Python库 如果你是一名初学者或中级机器学习工程师或数据科学家&#xff0c;这篇文章非常适合你。你已经选择了自…

【C语言】动态内存分配

1、为什么要有动态内存分配 不管是C还是C中都会大量的使用&#xff0c;使用C/C实现数据结构的时候&#xff0c;也会使用动态内存管理。 我们已经掌握的内存开辟方式有&#xff1a; int val 20; //在栈空间上开辟四个字节 char arr[10] { 0 }; //在栈空间…

[SAP ABAP] SE11查询数据库表中的数据

我们可以通过事务码SE11查询对应数据库表中的详细数据 本次查询使用的数据库表名为MARA&#xff0c;具体操作如下所示: ① 输入事务码SE11进入ABAP字典操作界面&#xff0c;在数据库表搜索框中输入目标表名MARA&#xff0c;并点击【显示】按钮 ② 进入到显示表界面&#xff0…

阿里云服务器租用一年多少钱?2024年最新阿里云租用价格

2024年阿里云服务器租用费用&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核4G服务…

HarmonyOS NEXT应用开发—使用绘制组件实现自定义进度动画

介绍 本示例介绍使用绘制组件中的Circle组件以及Path组件实现实时进度效果。该场景多用于手机电池电量、汽车油量、水位变化等动态变化中。 效果预览图 使用说明 加载完成后初始显示进度为0%&#xff0c;颜色为红色&#xff0c;且有充电、放电两个按钮。点击充电按钮&#x…

C++中的std::for_each并行执行探索

在C标准库中&#xff0c;std::for_each是一个用于遍历容器或可迭代序列并对每个元素执行特定操作的强大工具。传统的std::for_each是顺序执行的&#xff0c;即它会按照元素在序列中的顺序&#xff0c;逐个应用函数对象或lambda表达式。然而&#xff0c;随着多线程编程的普及和硬…

升级 HarmonyOS 4 版本,腕上智慧更进一步

HUAWEI WATCH GT 3 系列升级 HarmonyOS 4 新版本后&#xff0c;手表体验更进一步&#xff0c;快来看看有哪些变化吧~

Vue2(八):TodoList案例

一、整体思路 1.分析结构 我们对大盒子拆分&#xff0c;分成header、list、footer&#xff0c;但是list最好也进行拆分&#xff0c;因为它里面的每个小盒子结构一样就是字不一样&#xff0c;可以用一个组件多次调用完成&#xff0c;所以分成app>header、list、footer>i…

Stability AI发布Stable Video 3D模型:可从单张图像创建多视图3D视频,视频扩散模型史诗级提升!

Stability AI发布了Stable Video 3D (SV3D)&#xff0c;这是一种基于稳定视频扩散的生成模型&#xff0c;推动了3D技术领域的发展&#xff0c;并大大提高了质量和视图一致性。 该版本有两个版本: SV3D_u:该变体基于单图像输入生成轨道视频&#xff0c;无需相机调节。 SV3D_p:扩…

yolov6实现遥感影像目标识别|以DIOR数据集为例

1 目标检测是计算机视觉领域中的一项重要任务&#xff0c;它的目标是在图像或视频中检测出物体的位置和类别。YOLO&#xff08;You Only Look Once&#xff09;是一系列经典的目标检测算法&#xff0c;最初由Joseph Redmon等人于2016年提出。YOLO算法具有快速、简单、端到端的特…

QT学习第一天,创建工程文件,创建按钮,对象树的概念

创建qt 方式一&#xff1a;欢迎》project》new project 方式二&#xff1a;菜单栏》文件》新建文件或项目 打开项目 方式1&#xff1a; 欢迎》project》open project 方式2&#xff1a;打开目录&#xff08;页面上不存在的项目&#xff09; 创建工程时需要注意&#xff1…