Java细节基础题(一)

从CLIP到AnomalyCLIP:零样本异常检测的跨领域进化之路 本文探讨了从CLIP到AnomalyCLIP的技术演进,重点介绍了零样本异常检测在跨领域应用中的突破。AnomalyCLIP通过对象无关提示学习和多尺度特征提取,显著提升了工业质检、医疗影像等领域的检测精度,实现了高达96.4%的金属螺母划痕检测精度和85.7%的皮肤癌敏感度。这一技术为多模态模型在异常检测中的应用开辟了新路径。 阅读详情

1、Java中的修饰符

Java的修饰符根据修饰的对象不同,分为类修饰符、方法修饰符、变量修饰符。

其中每种修饰符又分为访问控制修饰符和非访问控制修饰符。

1.1 类修饰符

1.1.1 普通类修饰符

访问控制符:公共类修饰符public

非访问控制符:抽象类修饰符:abstract、最终类修饰符:final

 (1)公共类修饰符 public : Java 语言中类的访问控制符只有 public 即公共的。每个 Java 程序的有且只有一个类是 public,它被称为主类 ,其他外部类无访问控制修饰符,具有包访问性。注意:一个类的内部类可以被其他访问控制修饰符protected、default、private修饰,相当于类的成员。

(2)抽象类修饰符 abstract :用 abstract 修饰符修饰的类,被称为抽象类。

(3)最终类修饰符 final :当一个类不能被继承时可用修饰符final修饰为最终类。被定义为 final 的类通常是一些有固定作用、用来完成某种标准功能的类。

(4)类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时,这个类只能被同一个包中的类访问或引用。这一访问特性又称为包访问性。

1.1.2 内部类修饰符

定义:将一个类的定义放在里另一个类的内部,这就是内部类

分类:成员内部类、静态内部类、局部(方法)内部类、匿名内部类。

成员内部类:

访问控制符:可以被public、protected、default、private修饰,相当于类的成员

非访问控制符:抽象类修饰符:abstract、最终类修饰符:final

静态内部类:

访问控制符:可以被public、protected、default、private修饰,相当于类的成员

非访问控制符:静态修饰符:static

局部(方法)内部类:

访问控制符:类前不能有访问控制符

匿名内部类:

访问控制符:类前不能有访问控制符

1.2 方法修饰符

访问控制修饰符:公共访问控制符public、保护访问控制符protected、缺省默认default、私有访问控制符private

非访问控制符:抽象方法控制符abstract 、静态方法控制符static 、最终方法控制符final 、本地方法控制符native 、同步方法控制符synchronized

(1)抽象方法控制符 abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法仅有方法头,没有方法体和操作实体。

(2)静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用static 修饰、限定的方法是属于某个具体类对象的方法。由于 static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即static方法只能处理static的域。

(3)最终方法控制符 final :用修饰符 final修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重写覆盖。final固定了方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被private修饰符限定为私有的方法,以及所有包含在final 类 ( 最终类) 中的方法,都被认为是最终方法。

(4)本地方法控制符 native :用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,需要用其它的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰。

(5)同步方法控制符 synchronized :该修饰符主要用于多线程程序中的协调和同步。
 

1.3 变量修饰符

访问控制符:公共访问控制符public 、保护访问控制符protected 、缺省默认访问控制符default、私有访问控制符private 

非访问控制符:静态域修饰符static 、最终域修饰符 final 、易失 ( 共享 ) 域修饰符volatile 、暂时性域修饰符transient

(1)公共访问控制符public:用public修饰的域称为公共域。由于public修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用。

(2)私有访问控制符private:用private修饰的成员变量( 域 ) 只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用。

(3)保护访问控制符 protected :用protected修饰的成员变量可以被三种类所引用:①该类自身;②同一个包中的其它类;③其它包中的子类。使用修饰符 protected 的主要作用是允许其它包中的子类来访问父类的特定属性。

(4) 缺省默认修饰符 :没有访问控制修饰符或用修饰符 default修饰的成员变量可以被该类本身或同一包中的其他类访问。

(5)静态域修饰符 static :用 static修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间。该类的任一对象访问它时取到的都是相同的数据;该类的任一对象修改它时 , 也都是对同一个内存单元进行操作。

(6)最终域修饰符 final :最终域修饰符 final 是用来定义常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序的整个执行过程中都是不变的。

(7)易失 ( 共享 ) 域修饰符 volatile :易失 ( 共享 ) 域修饰符volatile是用来说明这个成员变量可能被几个线程所控制和修改。也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。通常 volatile 用来修饰接受外部输入的域。

(8)暂时性域修饰符 transient :暂时性域修饰符 transient 用来定义一个暂时性变量。其特点是:用修饰符transient 限定的暂时性变量,将指定 Java虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量都是对象的永久状态的一部分,存储对象时必须同时保存这些变量。

1.4 访问控制修饰符总结

private:只能被同一个类中的对象访问。

default:可以被同一个类的对象,同一个包中的类访问。

protected:可以被同一个包中的所有类访问,可以所有的子类访问,子类没有在同一个包中也可以访问。

public:同包,不同包都可以访问。

2、Java类的加载机制(类加载和初始化顺序)

2.1 类初始化顺序

package cn.wyu.java;


public class CodeBlockForJava extends BaseCodeBlock {

    static {
        System.out.println("2.这里是子类的静态代码块");//2
    }
    {
        System.out.println("6.这里是子类的普通代码块");//6
    }
    Other o = new Other();
    public CodeBlockForJava() {
        System.out.println("8.这里是子类的构造方法");//8
    }

    public static void msg2() {
        System.out.println("这里是子类的静态方法");
    }

    @Override
    public void msg() {
        System.out.println("9.这里是子类的普通方法");//9
    }

    public static void main(String[] args) {
        BaseCodeBlock bcb = new CodeBlockForJava();
        bcb.msg();
    }

}

class BaseCodeBlock {

    Other2 o2 = new Other2();

    static {
        System.out.println("1.这里是父类的静态代码块");//1
    }

    {
        System.out.println("4.这里是父类的普通代码块");//4
    }


    public BaseCodeBlock() {
        System.out.println("5.这里是父类的构造方法");//5
    }

    public void msg() {
        System.out.println("这里是父类的普通方法");
    }

    public static void msg2() {
        System.out.println("这里是父类的静态方法");
    }


}

class Other {
    Other() {
        System.out.println("7.初始化子类的属性值");//7
    }
}

class Other2 {
    Other2() {
        System.out.println("3.初始化父类的属性值");//3
    }
}

运行结果:

1.这里是父类的静态代码块
2.这里是子类的静态代码块
3.初始化父类的属性值
4.这里是父类的普通代码块
5.这里是父类的构造方法
6.这里是子类的普通代码块
7.初始化子类的属性值
8.这里是子类的构造方法
9.这里是子类的普通方法
假设:
将Other o = new Other();变为static Other o = new Other();
将Other2 o2 = new Other2();变为static Other2 o2 = new Other2();

结果?

3.初始化父类的属性值
1.这里是父类的静态代码块
2.这里是子类的静态代码块
7.初始化子类的属性值
4.这里是父类的普通代码块
5.这里是父类的构造方法
6.这里是子类的普通代码块
8.这里是子类的构造方法
9.这里是子类的普通方法

注意:

类的静态属性与静态代码块的执行级别是一样的,谁先执行取决于书写的先后顺序。

类的非静态属性与普通代码块的执行级别是一样的,谁先执行取决于书写的先后顺序。

结论1:初始化父类的静态属性值/父类的静态代码块(自上而下的顺序执行) -> 初始化子类的静态属性值/子类的静态代码块(自上而下的顺序执行) -> 初始化父类的非静态属性值/父类的普通代码块(自上而下的顺序执行) -> 父类的构造方法 -> 初始化子类的非静态属性值/子类的普通代码块(自上而下的顺序执行) -> 子类的构造方法。

注:构造函数最后执行。

2.2 JAVA类的加载机制

2.2.1 下列代码的执行结果是什么?

package cn.wyu.java;

/**
 * @author linwillen
 * @create 2020-05-01-21:10
 */
public class ClassloadSort1 {

    public static void main(String[] args) {
        Singleton.getInstance();
        System.out.println("Singleton value1:" + Singleton.value1);
        System.out.println("Singleton value2:" + Singleton.value2);

        Singleton2.getInstance2();
        System.out.println("Singleton2 value1:" + Singleton2.value1);
        System.out.println("Singleton2 value2:" + Singleton2.value2);
    }
}

class Singleton {
    static {
        System.out.println(Singleton.value1 + "\t" + Singleton.value2 + "\t" + Singleton.singleton);
        //System.out.println(Singleton.value1 + "\t" + Singleton.value2);
    }
    private static Singleton singleton = new Singleton();
    public static int value1 = 5;
    public static int value2 = 3;

    private Singleton() {
        value1++;
        value2++;
    }

    public static Singleton getInstance() {
        return singleton;
    }

    int count = 10;

    {
        System.out.println("count = " + count);
    }
}

class Singleton2 {
    static {
        System.out.println(Singleton2.value1 + "\t" + Singleton2.value2 + "\t" + Singleton2.singleton2);
    }

    public static int value1 = 5;
    public static int value2 = 3;
    private static Singleton2 singleton2 = new Singleton2();
    private String sign;

    int count = 20;
    {
        System.out.println("count = " + count);
    }

    private Singleton2() {
        value1++;
        value2++;
    }

    public static Singleton2 getInstance2() {
        return singleton2;
    }
}

运行结果:为什么两次value的值不一样?

0	0	null
count = 10
Singleton value1:5
Singleton value2:3
0	0	null
count = 20
Singleton2 value1:6
Singleton2 value2:4

2.2.2 为什么有上面的结果?

Java类加载分为5个过程,分别为:加载,连接(验证,准备,解析),初始化,使用,卸载。(加链初使卸)

(1)加载

1)通过classloader在classpath中获取XXX.class文件,将其以二进制流的形式读入内存。

2)将字节流所代表的静态存储结构转化为方法区的运行时数据结构;

3)在内存中生成一个该类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。

(2)链接 

① 验证:主要确保加载进来的字节流符合JVM规范。验证阶段会完成以下4个阶段的检验动作:

1)文件格式验证

2)元数据验证(是否符合Java语言规范)

3)字节码验证(确定程序语义合法,符合逻辑)

5)符号引用验证(确保下一步的解析能正常执行)

② 准备:主要为静态变量在方法区分配内存,并设置默认初始值。

③ 解析:主要是虚拟机将常量池内的符号引用替换为直接引用的过程。

(3)初始化:初始化阶段是类加载过程的最后一步,主要是根据程序中的赋值语句主动为类变量赋值(赋值顺序参考上面2.1)。

(4)使用:程序之间的相互调用。

(5)卸载:即销毁一个对象,一般情况下中有JVM垃圾回收器完成。代码层面的销毁只是将引用置为null。

 

è¿éåå¾çæè¿°

通过上面的整体介绍后,再来看Singleton2.getInstance()的执行分析:
1)类的加载。运行Singleton2.getInstance(),JVM在首次并没有发现Singleton类的相关信息。所以通过classloader将Singleton.class文件加载到内存中。
2)类的验证。略
3)类的准备。将Singleton2中的静态资源转化到方法区。value1,value2,singleton在方法区被声明分别初始为0,0,null。
4)类的解析。略(将常量池内的符号引用替换为直接引用的过程)
5)类的初始化。执行静态属性的赋值操作。按照顺序先是value1 = 5,value2 = 3,接下来是private static Singleton2 singleton2 = new Singleton2();
这是个创建对象操作,根据 结论1 在执行Singleton2的构造方法之前,先去执行static资源和非static资源。但由于value1,value2已经被初始化过,所以接下来执行的是非static的资源,最后是Singleton2的构造方法:value1++;value2++。
所以Singleton2结果是6和4。

结论2:静态资源在类的初始化中只会执行一次。不要与第3个步骤混淆。

有了以上的这个结论,再来看Singleton.getInstance()的执行分析:
1)类的加载。将Singleton类加载到内存中。
2)类的验证。略
3)类的准备。将Singleton2的静态资源转化到方法区。
4)类的解析。略(将常量池内的符号引用替换为直接引用的过程)
5)类的初始化。执行静态属性的赋值操作。按照顺序先是private static Singleton singleton = new Singleton(),根据 结论1 和结论2,value1和value2不会在此层执行赋值操作。所以singleton对象中的value1,value2只是在0的基础上进行了++操作。此时singleton对象中的value1=1,value2=1。
然后, public static int value1 = 5; public static int value2 = 3; 这两行代码才是真的执行了赋值操作。所以最后的结果:5和3。
如果执行的是public static int value1; public static int value2;结果又会是多少?结果: 1和1。要理解初始化和赋值区别

注:为什么 Singleton singleton = new Singleton()不会对value1,value2进行赋值操作?因为static变量的赋值在类的初始化中只会做一次。
程序在执行private static Singleton singleton = new Singleton()时,已经是对Singleton类的static变量进行赋值操作了。这里new Singleton()是一个特殊的赋值

结论3:非静态资源会随对象的创建而执行初始化。每创建一个对象,执行一次初始化。

3、try-catch-finally块执行顺序

3.1 try/catch/finally 中没有return

package cn.wyu.java;

/**
 * @author linwillen
 * @create 2020-05-01-23:41
 */
public class TryCatchFinally {
    public static void main(String[] args) {
        System.out.println("method:x = "+method());//step:1     //step:8  x = 10
    }

    public static int method(){
        int x = 0;//step:2  x = 0
        try {
            x = 1;//step:3  x = 1
            System.out.println("try:x = "+x);//step:4  x = 1
        } catch (Exception e) {
            x = 2;
            System.out.println("catch:x = "+x);
        } finally {
            x = 10;//step:5  x = 10
            System.out.println("finally:x = "+x);//step:6  x = 10
        }
        return x;//step:7  x = 10
    }
}

运行结果:

try:x = 1
finally:x = 10
method:x = 10

总结:按顺序执行,先执行try块,在没有异常的情况下,接下来执行finally块,随后return

3.2 try/catch 中有return

package cn.wyu.java;

/**
 * @author linwillen
 * @create 2020-05-01-23:41
 */
public class TryCatchFinally {
    public static void main(String[] args) {
        System.out.println("method:x = "+method());//step:1     //step:9  x = 1
    }

    public static int method(){
        int x = 0;//step:2  x = 0
        try {
            x = 1;//step:3  x = 1
            System.out.println("try:x = "+x);//step:4  x = 1
            return x;//step:5  x = 1    //step:8  x = 1
        } catch (Exception e) {
            x = 2;
            System.out.println("catch:x = "+x);
            return x;
        } finally {
            x = 10;//step:6  x = 10
            System.out.println("finally:x = "+x);//step:7  x = 10
        }

    }
}

运行结果:

try:x = 1
finally:x = 10
method:x = 1

总结:代码先执行try块,再执行finally块。finally块总会执行。try语句中的return返回的引用变量并不是try语句外定义的引用变量x,而是系统重新定义了一个局部引用x1,这个引用指向了引用x对应的值,也就是1,即使在finally语句中把引用x指向了值10,但是return已经不是x,而是x1,所以引用x的值和try语句中的返回值无关了

3.3 try/catch/finally 中有return

package cn.wyu.java;

/**
 * @author linwillen
 * @create 2020-05-01-23:41
 */
public class TryCatchFinally {
    public static void main(String[] args) {
        System.out.println("method:x = "+method());//step:1     //step:9  x = 10
    }

    public static int method(){
        int x = 0;//step:2  x = 0
        try {
            x = 1;//step:3  x = 1
            System.out.println("try:x = "+x);//step:4  x = 1
            return x;//step:5  x = 1    
        } catch (Exception e) {
            x = 2;
            System.out.println("catch:x = "+x);
            return x;
        } finally {
            x = 10;//step:6  x = 10
            System.out.println("finally:x = "+x);//step:7  x = 10
            return x;//step:8  x = 10
        }

    }
}

运行结果:

try:x = 1
finally:x = 10
method:x = 10

总结:执行finally块中的return语句,JVM忽略了try块中的return语句。

3.4 try块有异常

package cn.wyu.java;

/**
 * @author linwillen
 * @create 2020-05-01-23:41
 */
public class TryCatchFinally {
    public static void main(String[] args) {
        System.out.println("method:x = "+method());//step:1     //step:12  x = 10
    }

    public static int method(){
        int x = 0;//step:2  x = 0
        try {
            x = 1;//step:3  x = 1
            Integer.parseInt(null);//step:4
            System.out.println("try:x = "+x);
            return x;//step:5  x = 1
        } catch (Exception e) {
            x = 2;//step:6  x = 2
            System.out.println("catch:x = "+x);//step:7  x = 2
            return x;//step:8  x = 2
        } finally {
            x = 10;//step:9  x = 10
            System.out.println("finally:x = "+x);//step:10  x = 10
            return x;//step:11  x = 10
        }

    }
}

运行结果:

catch:x = 2
finally:x = 10
method:x = 10

总结:执行finally块中的return语句。finally中含return语句,导致try/catch中的异常信息被忽略,而我们最初使用try/catch就是为了捕获异常信息,所以这种情况与之产生矛盾,因此编译器会有警告提示

3.5 try/catch/finally 均有异常

package cn.wyu.java;

/**
 * @author linwillen
 * @create 2020-05-01-23:41
 */
public class TryCatchFinally {
    public static void main(String[] args) {
        System.out.println("method:x = "+method());//step:1     //step:12  x = 10
    }

    public static int method(){
        int x = 0;//step:2  x = 0
        try {
            x = 1;//step:3  x = 1
            Integer.parseInt(null);//step:4
            System.out.println("try:x = "+x);
            return x;
        } catch (Exception e) {
            x = 2;//step:5  x = 2
            String.valueOf(null);  //step 6
            System.out.println("catch:x = "+x);//step:7  x = 2
            return x;
        } finally {
            x = 10;//step:7  x = 10
            int y = x / 0;//step:8
            System.out.println("finally:x = "+x);
        }

    }
}

运行结果:

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at cn.wyu.java.TryCatchFinally.method(TryCatchFinally.java:26)
	at cn.wyu.java.TryCatchFinally.main(TryCatchFinally.java:9)

总结:如果finally发生异常,那么try/catch中的异常信息就会被忽略,达不到异常信息处理的目的

综上所述:

  1. finally语句总会执行。
  2. 如果try/catch中有return语句,finally中没有return语句,那么finally中修改数据(除集合类、静态变量、全局变量)对try/catch中返回的变量没有任何影响,返回的是try/catch中的变量的值。
  3. 在finally中使用return,会忽略try/catch中的返回语句,也会忽略try/catch中的异常,返回的是finally中的变量的值。
  4. finally中如果发生异常,代码执行将会抛出finally中的异常信息。
ADG同步性能优化:如何正确配置standby redolog避免WAIT_FOR_LOG状态 本文深入剖析了Oracle ADG(Active Data Guard)同步中常见的WAIT_FOR_LOG状态,指出其根源在于Standby Redo Log(SRL)配置不当。文章提供了从诊断到优化的完整实践指南,重点阐述了SRL大小匹配、组数充足等黄金配置法则,帮助架构师从根本上避免同步延迟,实现稳定高效的实时数据同步。 阅读详情

相关推荐

ADS SerDes仿真实战:深入解析Tx_Diff均衡器(EQ)参数对眼图质量的影响

本文以ADS仿真平台为基础,深入解析了SerDes设计中Tx_Diff均衡器(EQ)参数对信号完整性的核心影响。通过实战演示,详细对比了去加重(De-emphasis)与FIR抽头系数两种调节模式,揭示了它们如何有效对抗信道损耗与码间干扰,从而显著改善眼图的高度、宽度与抖动性能,为高速串行链路设计提供关键调优思路。

weixin_29230901的博客 227

Java第五章小结

1. Java的访问控制修饰符有哪些?各有什么访问权限? Java的访问控制修饰符有: public private protected private:用 private 修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用。 public:当一个类被声明为 public 时,它就具有了被其他包中的类访问的可能性,只要包中的其他类在程序中使用 import 语句引入 public 类,就可以访问和引用这个类。 protected:用 protected

weixin_52867343的博客 387

Qt QChart实战:从零打造一个实时温度监控仪表盘(附完整源码)

本文详细介绍了如何使用Qt QChart模块从零构建一个工业级实时温度监控仪表盘。通过实战案例,展示了波形图的绘制、坐标轴配置、数据流模拟等关键技术,并提供了完整的源码实现,帮助开发者快速掌握Qt在数据可视化领域的应用。

weixin_42537919的博客 243

修饰符

权限修饰符 特征修饰符

qq_44346427的博客 479

TOPSIS与熵权法实战:从数学建模到Python实现(附国赛案例分析)

本文详细解析了TOPSIS(逼近理想解排序法)与熵权法在数学建模中的协同应用,并通过Python代码实现完整流程。文章以国赛案例为背景,从指标正向化、数据标准化、熵权法计算客观权重,到TOPSIS综合排序,手把手指导如何解决多指标决策问题,为数据分析与建模提供了一套可复用的实战工具箱。

weixin_29079643的博客 245

基于PSIM仿真的单相全桥逆变电路

根据单极性SPWM调制电路、双极性SPWM调制电路和逆变器拓扑可以得到完整的逆变器仿真电路模型。

weixin_59329579的博客 1万+

java 暂时性变量_Java学习(八):Java修饰符(类、变量、方法)

java中的修饰符分为类修饰符,变量修饰符,方法修饰符。类修饰符:1、public : public 即公共类。2、package : 默认缺省为包修饰符,本包可见。3、abstract :凡是用 abstract 修饰符修饰的类,被称为抽象类。含有一个或者多个抽象方法的类必须声明为抽象类,抽象类无法实例化。4、final :当一个类不可能有子类时可用修饰符 final 把它说明为最终类。变量修饰...

weixin_39996234的博客 1365

CSP-J 入门级第一轮认证 2025 详细解析

2025年CSP-J入门级第一轮认证模拟赛提供10套免费试题,含选择题与解析。选择题涉及计算机科学基础,如32位无符号整数最大值计算(约42.9亿,选A)、C++位运算(255&254=254,选B)、递归函数分析(calc(5)=6,选B)、哈夫曼树构造(带权路径长度186,选B)等。其他题目涵盖图论(有向图边数等于入度/出度和,选B)、组合数学(120种选法,选C)、布尔逻辑(选项C不恒等)、模运算周期性(f[2025]=6,选D)、C++字符串特性(支持string+char,选B)及引用传参

lan_in的博客 2944

PTAjava判断题

在一个编辑器中编写好的Java应用程序,是扩展名为.class的文件。F java语言中不用区分字母的大写小写。F Java语言中,变量名可以用汉字表示。T 字节码文件是与平台无关的二进制码,执行时由解释器解释成本地机器码。T 一个Java源文件中可以有多个类,但只能有一个类是public的。T 如果Java源文件中包含了多个类,那么用编译器javac编译完源文件后将生成多个扩展名为.class的文件。T 语句 System.out.println(4+8+"Hello,world!"); 的输出结果是12

weixin_56710260的博客 2450

七天征服AutoSAR/SomeIP_01速成配置并代码生成

本文为AutoSAR中SomeIP配置开发的实操指南摘要,重点介绍通过通信矩阵快速构建SomeIP工程的方法。核心内容包括:1)基于Excel通信矩阵生成系统描述文件(arxml);2)在AutoSAR工具中导入文件自动生成协议栈配置,涵盖ETHIF、SoAd等模块;3)关键报错处理(COM/PDUR/SOAD/SD模块的配置修正);4)SomeIPXF的数据编解码配置;5)SWC组件与RTE任务映射。教程强调"先完成再完美"的实践原则,指导开发者快速生成基础代码框架,为后续协议调试奠定

大叔带刺的博客 306

lammps教程:非晶sio2建模方法

大家好,我是小马老师。 本文介绍非晶sio2的建模方法。 sio2的建模方法有很多,可以下载cif文件使用atomsk转为data文件,也可以直接在ms中导入sio2结构,这些方法建的sio2都是标准的sio2晶体。 如果要建立非晶状态的sio2,就是把排列规则的sio2变成无序排列的sio2。 非晶建模方法有很多,在lammps中,可以通过高温高压的方法打乱sio2的排列实现非晶建模。 代码中的温度和步数可根据需要自己调整。 下面给出in文件案例代码。 units metal atom

lammps_jiayou的博客 5269

JAVA中修饰符protected

1. 类成员的访问控制修饰符protected表示该类所属包内的类或该类的派生类可以访问protected成员。 1.2 针对protected成员,有一个容易误解的地方,请看下面的代码 {优快云:CODE:1618853} 1.3 通过以上代码,可以得出结论:在生成派生类时,派生类可以继承基类的protected成员,这个继承的protected成员在派生类内部是可以访问的,但是在派

海之凌云的博客 687

【报错】(pycharm运行程序)OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。 Error loading

1 报错 OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。 Error loading 2 分析原因 通过 activate Distance 进行自己创建的 Distance 虚拟环境中,输入python会显示环境中python的版本信息,再依次import,显然不会报错。 这是因为在Anaconda的环境下有支持 import torch 的 dll,而在PyCharm中使用的是自己创建的新环境,还缺少相应支持的dll,仅需在PyCharm中配置环境变量。.

静谧、淡雅 8623

java细节知识(leetcode刷题(一))

1.leetcode344 ​ str2 = new StringBuffer(str2).reverse().toString(); StringBuilder rev = new StringBuilder();rev.toString(); String orig;char[] s = orig.toCharArray(); char[] s;String st=new String(s...

qq_33605294的博客 408

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

训练日志 2019.1.24

今天上午补了两道题,然后转接线到了,就弄了一下扩展显示器,下午打比赛果真爽得很,感觉实验室越来越舒服了。。。下一步就该搬到实验室住了。。。 第一道签到题出的比较快,第二道贪心因为没注意数组范围,直接 Runtime,第三道公式题跟学长推了半天,最后用 Java 成功写出来了,Java 大数确实比 C++ 徒手撸模拟高精强得多。。。没白学 最后还剩 1 个小时左右,做了一道积性函数的推导题,可惜...

Alex_McAvoy的博客 329

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java基础知识点总结--从细节再看Java(一)

大二时,第一次接触Java,学完也没有再回头重新梳理Java,而是每次写代码,做项目时,凭印象去敲代码,写不出来再去查,基本属于现学现卖的模式。放个假,隔一段时间不写,现学现卖的也忘了,再去写的时候又是现学现卖。 周而复始,如此往复的过程中大学渐渐接近尾声。时间很快,弹指一挥间,临近毕业面临考研与就业的选择,在做选择的过程中,大学的小伙伴陆续离开,送走他人也要去送自己离开那陪伴我度过三年的大学时...

七宝.博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java基础巩固刷题

java刷题

STATICHIT静砸的博客 539

java基础细节

java基础有很多的细节,如果不清楚其底层是如何运行的,很多我们一贯以来的想法都会致使我们做出错误的判断,话不多说,一起来颠覆三观吧。 1. 猜猜他们分别会输出啥? System.out.println(1+2+"a"); System.out.println("a"+1+2); 第一行输出3a,第二行输出a12 因为执行的时候是从左到右的,遇到字符串就会强转为字符串。 所以第一行执行...

小男孩 8511

Java基础(一)——基础语法冷知识

概述 在编程之前 为什么需要配置环境变量? exe和路径的爱恨情仇 环境变量path的作用 自己定义环境变量并引用 基础语法 基本数据类型中的冷知识(基于64位系统) 基本数据类型与内存的纠缠 整数变量的赋值问题 强转,不强转? 1.0和1.1的爱恨情仇 ==?equals? boolean类型有多大? 自动类型转换的小转大原则 强制类型转换的精度问题 变量初始值 运算符中的冷知识 除以一个0.0试试 赋值运算本身也会返回一个值 算数运算结果的数据类型是什么? 如何高效(装逼)地运算i*4? 流程控制中的冷

荆州拉人去编程 6445

java基础小细节

Java基础面试题 首先,在这里说明一下,这篇文章是我结合自身目前所学到的知识点,从网上摘录总结的一些java面试基础题。 面向对象的三大特征 这个应该是大家都知道的:封装、继承、多态嘛。 封装:也叫信息隐藏或数据访问保护。 意义: 1.保护数据不被随意修改,提高代码可维护性 2.仅暴露有限的必要接口,提高类的易用性。 3.封装方法可以有效减少耦合 耦合:模块与模块之间,代码与代码之间的关联程度,对属性封装后,和调用相关的代码就会变得相对简单,可以降低耦合 继承: 是面向对象程序设计使代码可以复用的最重要的

weixin_48514539的博客 784

Java基础细节梳理

Java基础知识梳理

weixin_44446626的博客 1901

Java基础细节

关于Java基础中的注意细节: 一、关于JDK 和 JRE JDK:Java Development Kit 的缩写,即Java开发工具包 JRE:Java Routime Environment 的缩写,即Java运行环境; JDK = JRE + 其他工具包; 二、命令行基本操作 dir:directory缩写,即读取当前目录中的文件; md:make directory缩...

morsunlight的博客 222

java基础细节题

String 被声明为 final,因此它不可被继承。它的底层是通过final数组实现的,因此初始化后就不可以更改,有一下好处 声明数据 对于基本类型,final 使数值不变; 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。 声明方法不能被子类重写。 private 方法隐式地被指定为 final,如果在子类中定...

在杯子里放零食的博客 254

java基础注意细节

1.编写java代码时:文件名需要和类名一致,没一句java语句体以分号结束,新手不要漏写;2.编译java程序时:应该切换到保存源代码的文件路径下,进行编译,javac 类名.java(注意不要把后缀.java);这部操作是在源代码文件下,生成.class文件。一次编译到处运行。3.运行程序:是指把.class文件加载到jvm中(java 类名)

weixin_64018571的博客 555

Java 易错细节题

1 下列代码描述正确的是 A: 代码可以编译运行,输出“AB.AB”。 B: 代码可以编译运行,输出“A.A”。 C: 代码可以编译运行,输出“AB.B”。 D: 代码可以编译运行,输出“A.B”。 答案:C ...

闫兆昌的博客 2218
上一篇: LeetCode每日一题:括号生成(回溯法)
下一篇: Shiro
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值