疯狂java讲义 琐碎知识点

车辆动力学仿真模型可信度评估:从量化对标到工程落地 在车辆底盘调校、智能驾驶控制策略开发以及操稳性分析中,仿真模型的准确性直接关系到工程决策的安全性与有效性。然而,仅仅依靠“曲线看起来吻合”来判断模型是否可信,远不足以支撑严苛的工程需求。一套完整的模型可信度评估体系,应当涵盖数值求解、物理规律验证与试验对标三个维度,并结合时域误差指标与频域响应分析进行综合评判。通过设计系统化的试验工况矩阵、引入定量化误差指标以及自动化对标流程,能够为仿真模型划定明确的使用边界。在PMSM simulink FOC仿真、整车主模型验证等多域联合仿真场景中,区分模型各子系统的验 阅读详情
  1. Java的子类不能获得父类的构造器,但在子类构造器中可以调用父类构造器的初始化代码。
  2. 严格讲,Java类只能有一个父类,这种说法是错误的,应该换成如下说法:Java类只能有一个直接父类。实际上,Java可以有无限多个间接父类。
  3. 如果在构造器中使用super,则super用于限定该构造器初始化的是该对象从父类继承得到的实例变量,而不是该类自己定义的实例变量。
  4. 在继承中,实例变量也会发生类似于函数覆盖的情况,即若子类中定义了和匪类中同名的实例变量,则会默认访问子类中的实例变量
  5. 在子类中访问父类中定义的被隐藏的实例变量和父类中定义的被覆盖的方法,可以通过super.作为限定来调用父类中的这些实例变量和实例方法。
  6. 父类构造器总会在子类构造器之前执行。所以,创建任何Java对象,一层一层向上,最先执行的总是java.lang.Object类的构造器。
  7. 对象的实例变量不具备多态性,只有方法才具备多态性
  8. 引用变量在编译时只能调用其编译时类型所具有的方法,但运行时则执行它运行时类型所具有的方法。
  9. 尽量不要在父类构造器中调用将要被子类重写的方法。因为:当系统试图创建子类对象时,会先执行其父类构造器,如果父类构造器调用了被其子类重写的方法,则变成调用被子类重写后的方法。
  10. a instanceof B 中 a必须为B类的实例 或 B的子类的实例。
  11. final修饰的方法不能被重写,但是可以被重载。
  12. final修饰的成员变量只能被赋值一次,
    静态变量,可以在声明变量时赋值或者在静态代码块里赋值。
    非静态变量,可以在声明变量时赋值或者在代码块里赋值或者在构造函数中赋值。
    final修饰的变量如果在初始化的时候就被赋值,而且=右边的值是常数或者常数的表达式,那就可以执行宏替换,也就是把代码里所有出现该final变量的地方都替换成常量。例如:

            final String s1 = "45";
            final String s2 = "6";
            String s3 = s1 + s2;
            final String s4 = "456";
            System.out.println(s3 == s4);

    将输出 true

  13. 要保证两个用equals()方法判断为相等的对象的hashCode()也相等。

  14. 所有的局部成员都不能用static修饰,也不能使用访问控制符修饰
  15. 匿名内部类不能重复使用
  16. 匿名内部类不能使用抽象类,因为系统在创建匿名内部类时,会立即创建匿名内部类对象。因此不允许将匿名内部类定义成抽象类。
  17. 匿名内部类不能定义构造器。因为匿名内部类没有类名。但是可以通过定义初始化块来完成构造器应该做的初始化工作。
  18. 当通过父类来创建匿名内部类时,匿名内部类将拥有和父类相似的构造器,此处的相似是指拥有相同的形参列表。
  19. 当通过实现接口来创建匿名内部类对象时,匿名内部类只有一个隐式的无参构造器,所以new 接口名() –>这个后面的括号里不能传入参数。
  20. 当创建匿名内部类时,必须实现接口或抽象父类中的所有方法。因为创建匿名内部类就意味着创建了匿名内部类对象,所以不能再有抽象方法存在。 如果有需要,也可以重写父类的普通方法。
  21. Java8之前,Java要求被局部内部类(不常见),匿名内部类访问的局部变量a必须使用final修饰。java8开始没有这个限制,自动给你加上final了。也就是说这个变量a只能被赋值一次。
  22. 在某些情况下,一个类的对象是有限的,如季节类,只有春夏秋冬四个类。这样的类被称为枚举类。
  23. 使用枚举类可以使程序更加健壮,避免创造对象的随意性。Java从JDK1.5后就增加了对枚举类的支持。同时,switch也支持枚举类型。
  24. 枚举类的enum关键字和class interface的地位相同。把枚举类当成类就好。它是一种特殊的类,类的规则基本适用于枚举类。
  25. 枚举类的构造器只能(也是默认)用private修饰,加或不加都是private。 非抽象的枚举类默认会使用final修饰。
  26. 垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(数据库连接,网络IO等资源)。
  27. 根据对象在堆内存中被引用变量所引用的状态,对象所处的状态可分为以下三种:1.可达状态2.可恢复状态3.不可达状态。只有当对象处于不可达状态时,系统才会真正回收该对象所占的资源。
  28. 一个对象可以被:1.一个方法的局部变量引用2.其他类的类变量引用3.其他对象的实例变量引用。(对于情况2:只有当该类销毁时,对于情况3:只有当对象销毁时),该对象才会进入可恢复状态。
  29. 程序只能控制一个对象何时不能再被任何引用变量引用,决不能控制它何时被回收。
  30. 程序虽然无法精确控制垃圾回收的时机,但依然可以通知系统进行垃圾回收,但是系统何时进行垃圾回收是不确定的,但是大部分时候,通知总会有些效果。通知有以下两种方式:
    System.gc();
    Runtime.getRuntime.gc();
  31. 只有当系统进行垃圾回收时,才会调用finalize()方法。
  32. 软引用,系统内存充足时是不会回收软引用对象的,只有当系统内存不足是,会回收软引用对象,所以软引用时候用在对内存敏感的程序里。
  33. 弱引用和软引用类似,但弱引用的引用级别更低,对于只有弱引用的对象,当jvm运行时,不管内存是否充足,都将回收弱引用对象。
  34. 虚引用,完全类似于没有引用,对象甚至感觉不到它的存在,如果一个对象只有一个虚引用,那么它和没有引用的效果大致相同。虚引用主要用于跟踪对象被垃圾回收的状态,徐引用不能单独使用,虚引用必须和引用队列联合使用。
  35. 要使用这些特殊的引用类,就不能保留对对象的强引用。如果保留了对对象的强引用,就会浪费这些引用类所提供的任何好处。
  36. 虚引用无法直接获得所引用的对象。
  37. AA aa = new AA();
    ReferenceQueue referenceQueue = new ReferenceQueue();
    PhantomReference a = new PhantomReference(aa, referenceQueue);
    aa = null;//必须要把强引用赋为空
    System.out.println(referenceQueue.poll());//输出null
    //通知系统进行gc
    System.gc();
    System.runFinalization();
    //执行上面两行代码后,系统会把虚引用加到引用队列中。
    System.out.println(referenceQueue.poll() == a);//输出true
    System.out.println(referenceQueue.poll());//输出null,引用队列刚刚已经弹出,所以已经没有引用存在了
  38. 理解弱引用和虚引用,可以通过下面代码来理解:
        AA aa = new AA();
        WeakReference weakReference = new WeakReference(aa);
        System.out.println("弱引用: " + weakReference.get());//弱引用: AA@677327b6
        ReferenceQueue referenceQueue = new ReferenceQueue();
        PhantomReference a = new PhantomReference(aa, referenceQueue);
        aa = null;//必须要把强引用赋为空
        System.out.println(referenceQueue.poll());//null
        //通知系统进行gc
        System.gc();
        System.runFinalization();
        //执行上面两行代码后,系统会把虚引用加到引用队列中。
        Reference poll = referenceQueue.poll();
        System.out.println(poll == a);//true
        System.out.println(referenceQueue.poll());//null
        System.out.println("弱引用: " + weakReference.get());//弱引用: null

39.软引用:只要jvm开始工作,软引用指向的对象就会被回收。
40. 虚引用:只要jvm开始工作,虚引用指向的对象就会被回收。系统还会被虚引用放入引用队列 ReferenceQueue
41. 当某个方法需要访问系统硬件,可以用native修饰该方法,再把该方法交给C实现。一旦Java程序包含了native方法,这个程序将失去跨平台的功能。
42. Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能。Java提供了System类和Runtime类来与程序的运行平台进行交换。
43. System类代表当前Java程序的运行平台。程序不能创建System类的对象。
44. System类提供了System.identityHashCode()方法,该方法返回指定对象的精确hashCode()值,也就是根据对象在内存中的地址所生成的hashCode值。当某个类的hashCode()被重写后,该类实例的hashCode()方法就不能唯一标识该对象,但是可以通过System.identityHashCode()方法的返回值来判断。结论:如果两个对象的identityHashCode值相等,那么他俩一定是同一个对象。
45. Runtime类的介绍参照《疯狂Java讲义》
46. 用utf-8使用中文就会占用3个字节,英文的话只有一个字节 如果是unicode则都是2个字节, gbk,一个汉字字符也是2个字节
47. Math的构造器是private,所以无法创建Math类的对象,Math中的所有方法都是类方法。
48. 数组中可以保存基本数据类型或对象,集合中只能保存对象。
49. null可以被强制类型转换成任意类型的对象
50. 方法的重写(override)两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
51. 本题主要考察String对象的不可变性。
toUpperCase()会对当前对象进行检查 如果不需要转换直接返回当前对象,否则new一个新对象返回;
参见如下代码:

String x="wmn";
        String s = x.toLowerCase();
        System.out.println(s==x);//true
        String y=x.replace('f','F');
        System.out.println(x==y);//true
  1. catch到异常后先执行finally块在执行catch中的return语句
  2. Integer n3 = Integer.valueOf(47)
    Integer n4 = Integer.valueOf(47);
    这里的n3==n4才是true。
    如果直接使用new一个对象,从构造函数来看:
    public Integer(int value) {
    this.value = value;
    }
    就是完全不同的两个对象,没有使用所谓的缓存。

    以下是Java中的源码
public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
  1. i=i++
    等效于
    int temp = j;
    j = j + 1;
    j = temp;
  2. int j = 0;
    System.out.println(j++);
    这个表达式的输出是0 !!!

  3. i= i ++;
    i++这个表达式的值为0,然后将i+1得到i=1
    然后将上面i++这个值为0的表达式赋值给i
    所以结果i=0
  4. 1.finally{}代码块比return先执行。
    2.多个return是按顺序执行的的,多个return执行了一个后,后面的return就不会执行了。
    3.记住一点,不管有不有异常抛出, finally都会在return返回前执行。
    以上结论是自己在eclipse中编译测试过的,不正确之处请多多指教
  5. 程序先执行try块中return之前的代码(包括return语句中的表达式运算此时也要执行); 再执行finally块,最后执行try块中的return; 而 finally块之后的return语句,因为程序在try块中已经return了,所以不再执行。
  6. 记住:无论如何finally语句都要执行就会这个题了
    finally语句在try或catch中的return语句执行之后返回之前执行且finally里的修改语句不能影响try或catch中 return已经确定的返回值,若finally里也有return语句则覆盖try或catch中的return语句直接返回。
  7. 快速失败(Fail-Fast)机制:对于线程不安全的集合对象的迭代器,如果在使用迭代器的过程中有其他线程修改了集合对象结构或者元素数量,那么将抛出ConcurrentModificationException,这就是所谓fail-fast策略。
    迭代 HashMap 采用快速失败机制,而 HashTable 不是,因为 HashTable 是线程安全的。
  8. A:HashMap和Hashtable两个类都实现了Map接口,二者保存K-V对(key-value对)
    B:HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
    C:Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
    D:由所有HashMap类的“collection 视图方法”所返回的迭代器都是快速失败的:在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器本身的 remove 方法,其他任何时间任何方式的修改,迭代器都将抛出ConcurrentModificationException。Hashtable和HashMap的区别主要是前者是同步的,后者是快速失败机制保证
  9. `interface A{

    }
    class B implements A{
    
    }
    class C extends B{
    
    }`    
    
  10. `
    public class Iinstanceof {

    public static void main(String[] args) {
    A ab=new B();
    A ac=new C();
    B bc=new C();
    B bb=new B();
    C cc=new C();
    //对象实现一个接口,用这个对象和这个接口进行instanceof判断,都为true。
    System.out.println(“ab instanceof A=”+(ab instanceof A));
    System.out.println(“ac instanceof A=”+(ac instanceof A));
    System.out.println(“bc instanceof A=”+(bc instanceof A));
    System.out.println(“bb instanceof A=”+(bb instanceof A));
    System.out.println(“cc instanceof A=”+(cc instanceof A));
    //对象和父类进行instanceof判断,都为true
    System.out.println(“ab instanceof B=”+(ab instanceof B));
    System.out.println(“ac instanceof B=”+(ac instanceof B));
    System.out.println(“bc instanceof B=”+(bc instanceof B));
    System.out.println(“bb instanceof B=”+(bb instanceof B));
    System.out.println(“cc instanceof B=”+(cc instanceof B));
    //对象和他的子类进行instanceof判断为false
    System.out.println(“ab instanceof C=”+(ab instanceof C));
    System.out.println(“ac instanceof C=”+(ac instanceof C));
    System.out.println(“bc instanceof C=”+(bc instanceof C));
    System.out.println(“bb instanceof C=”+(bb instanceof C));
    System.out.println(“cc instanceof C=”+(cc instanceof C));
    }
    }`
    程序输出:
    ab instanceof A=true
    ac instanceof A=true
    bc instanceof A=true
    bb instanceof A=true
    cc instanceof A=true
    ab instanceof B=true
    ac instanceof B=true
    bc instanceof B=true
    bb instanceof B=true
    cc instanceof B=true
    ab instanceof C=false
    ac instanceof C=true
    bc instanceof C=true
    bb instanceof C=false
    cc instanceof C=true
    对于多态的情况,instanceof 看的是=右边的对象的继承关系,而不是左边。

  11. 静态块:用static申明,JVM加载类时执行,仅执行一次,且按声明顺序执行
    构造块:类中直接用{}定义,每一次创建对象时执行
    执行顺序优先级:静态块>main()>构造块>构造方法
  12. 1) 首先初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化
    2) 然后初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化
    3) 其次初始化父类的普通成员变量和代码块,再执行父类的构造方法
    4) 最后初始化子类的普通成员变量和代码块,再执行子类的构造方法
    对象初始化时,先给对象的属性赋默认值,然后调用构造方法
  13. ceil:天花板,即向上取整。
    floor:地板,即向下取整。
    值得一提的是:二者返回的都是浮点型。
    至于为什么是-0.0,而不是0.0,因为源码注释:“If the argument value is less than zero but greater than -1.0, then the result is negative zero ”,翻译过来就是:如果参数是-1.0到0.0之间的数,结果是-0.0。
  14. java常量池不在堆中也不在栈中,是独立的内存空间管理。
     1. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
     2. 堆:存放所有new出来的对象。
     3. 常量池:存放字符串常量和基本类型常量(public static final)。
    对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。
  15. public static int methodB() {
    int aa=3;
    try {
    return aa++;
    } catch (Exception e) {

    } finally {
        return aa;
    }
    

    }
    输出结果是4

  16. 一般不要使用finalize,最主要的用途是回收特殊渠道申请的内存。Java程序有垃圾回收器,所以一般情况下内存问题不用程序员操心。但有一种JNI(Java Native Interface)调用non-Java程序(C或C++),finalize()的工作就是回收这部分的内存。
  17. linkedList、ArrayList都不是线程安全的,Vector是线程安全的,但是效率很低,现在很少用
    Hashtable和Hasnmap功能差不多,但Hashtables是线程安全的
  18. 集合中线程安全的类有:vector,stack,hashtable,enumeration,除此之外均是非线程安全的类与接口
  19. java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
    java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
  20. Java反射中,getDeclaredMethods()可以拿到当前类的所有方法和直接的继承类、接口的public方法。
  21. getMethods()可以拿到当前类的public方法和继承类、接口的public方法。(只能拿到public方法!!)
  22. Vector支持线程同步,其实现原理是在方法中加入关键字synchronized从而在线程A访问A方法时线程B等待,但在并发下影响效率所以引入ArrayList,其方法中不加锁,牺牲安全性换来效率。
  23. Vector & ArrayList 的主要区别
    1) 同步性:Vector是线程安全的,也就是说是同步的 ,而ArrayList 是线程序不安全的,不是同步的 数2。
    2)数据增长:当需要增长时,Vector默认增长为原来一倍 ,而ArrayList却是原来的50% ,这样,ArrayList就有利于节约内存空间。
    如果涉及到堆栈,队列等操作,应该考虑用Vector,如果需要快速随机访问元素,应该使用ArrayList 。

扩展知识:
1. Hashtable & HashMap
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
83. 在java语言中虚函数指代的就是抽象方法,抽象方法中不能用private,static, synchronized,native等修饰词修饰。
84. 其实 普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。
85. 当实例化子类对象时,首先要加载父类的class文件进内存,静态代码块是随着类的创建而执行,所以父类静态代码块最先被执行,子类class文件再被加载,同理静态代码块被先执行;实例化子类对象要先调用父类的构造方法,而调用父类构造方法前会先执行父类的非静态代码块
86. 1.this 和 super 只能放在第一行
2.this()和super()不可以同时出现在一个构造函数中
3.在方法中定义使用的this关键字,它的值是 当前对象 的引用.也就是说你只能用它来调用属于当前对象的方法或者使用this处理方法中成员变量和局部变量重名的情况.
this和super都无法出现在static 修饰的方法中,static 修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象.如果使用的是类来调用而不是对象,则 this就无法指向合适的对象.所以static 修饰的方法中不能使用this.
87. JAVA没有指针的概念,被封装起来了,而C++有;JAVA不支持类的多继承,但支持接口多继承,C++支持类的多继承;C++支持操作符重载,JAVA不支持;JAVA的内存管理比C++方便,而且错误处理也比较好;C++的速度比JAVA快。
C++更适用于有运行效率要求的情况,JAVA适用于效率要求不高,但维护性要好的情况。
88. JAVA不使用指针,不支持头文件,不支持宏定义,JAVA可以动态分配内存
C++比较适合一些底层处理,JAVA比较适合开发应用,可以是WEB,也可以是手机端的Android。
89. finally块的语句在try或catch中的return语句 执行之后 返回之前 执行且finally里的修改语句可能影响也可能不影响try或catch中 return已经确定的返回值,若finally里也有return语句则覆盖try或catch中的return语句直接返回。
90. 有关hashMap跟hashTable的区别 http://www.nowcoder.com/test/question/done?tid=3894394&qid=14454#summary
91. 综上所述,接口和抽象类各有优缺点,在接口和抽象类的选择上,必须遵守这样一个原则:
行为模型应该总是通过接口而不是抽象类定义。所以通常是:优先选用接口,尽量少用抽象类。
选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供共性的功能。
92. 面向对象的五大基本原则
s( Single-Resposibility Principle ): 单一职责原则
o( Open-Closed principle ): 开放封闭原则
l( Liskov-Substituion Principle ): 里氏原则
i( Interface-Segregation Principle ): 接口隔离原则
d( Dependecy-Inversion Principle ): 依赖倒置原则
一个单词:立方体(solid),很好记!!!
93. 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:
vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。
statck:堆栈类,先进后出
hashtable:就比hashmap多了个线程安全
enumeration:枚举,相当于迭代器
除了这些之外,其他的都是非线程安全的类和接口。
94. class A {}
class B extends A {}
class C extends A {}
class D extends B {}

耐心看完,保证能懂这道题!
1. 只看尖括号里边的!!明确点和范围两个概念
2. 如果尖括号里的是一个类,那么尖括号里的就是一个点,比如List《A》,List《B》,List《Object》
3. 如果尖括号里面带有问号,那么代表一个范围,《? extends A>》代表小于等于A的范围,《? super A》代表大于等于A的范围,《?》代表全部范围
4. 尖括号里的所有点之间互相赋值都是错,除非是俩相同的点
5. 尖括号小范围赋值给大范围,对!大范围赋值给小范围,错!如果某点包含在某个范围里,那么可以赋值,否则,不能赋值
6. List《?》和List 是相等的,都代表最大范围

public static void main(String[] args) {
        List<A> a;
        List list;
        list = a;   //A对,因为List就是List<?>,代表最大的范围,A只是其中的一个点,肯定被包含在内
        List<B> b;
        a = b;      //B错,点之间不能相互赋值
        List<?> qm;
        List<Object> o;
        qm = o;     //C对,List<?>代表最大的范围,List<Object>只是一个点,肯定被包含在内
        List<D> d;
        List<? extends B> downB;
        downB = d;  //D对,List<? extends B>代表小于等于B的范围,List<D>是一个点,在其中
        List<?extends A> downA;
        a = downA;  //E错,范围不能赋值给点
        a = o;      //F错,List<Object>只是一个点
        downA = downB;  //G对,小于等于A的范围包含小于等于B的范围,因为B本来就比A小,B时A的子类嘛
    }
  1. static方法,是属于这个类的,不是属于对象的。
    没有继承不继承的说法。覆盖和重写也是说的对象的方法而不是static方法。
  2. http://www.nowcoder.com/test/question/done?tid=3896795&qid=36455#summary Java异常的讨论。
  3. 如果不需要内部类对象与其外部类对象之间有联系,那么可以将内部类声明为static,对于这种说法,我尝试着在A包下面建了一个类X,并在其内部声明了一个静态内部类Y(也叫嵌套类),然后同样是在A包下面,我新建了一个类B,然后在这个类中引用前面那个类Y,发现可以直接引用,说明X与Y的确没有联系(虽然引用的时候需要用X.Y的方式引用,不过貌似好像就这点联系了。)如果Y没有声明为static,那么是无法在B中引用Y的。其实说了这么多,总结来讲,就是static的作用是相当于建立了2个类,而不是你所讲的,这个有static修饰的类先加载。我们也可以看到,在工作目录下的确也是生成了2个class文件,既然是2个类,那么这两个类的关系就是单纯的继承关系了
  4. 父类构造器调用重写的方法的典型例题http://www.nowcoder.com/test/question/done?tid=3897868&qid=3212#summary
  5. `
    public class Enclosingone {
    //非静态内部类
    public class InsideOne {}
    //静态内部类
    public static class InsideTwo{}
    }

class Mytest02{
public static void main(String args []){
Enclosingone.InsideOne obj1 = new Enclosingone().new InsideOne();//非静态内部类对象
Enclosingone.InsideTwo obj2 = new Enclosingone.InsideTwo();//静态内部类对象
}
}`
100. C,java不完全算是编译型语言,他编译的字节码文件运行时是解释执行的,其次,java和C++的类也不都完全是静态绑定的,比如C+++的虚函数,java的父类引用子类对象等情况。
D,java也可以数组溢出,溢出是会抛出异常,也就是ArrayIndexOutOfBoundsException
101. “ 接口中可以包含静态方法 ”,jdk1.8中可以有,而jdk1.7编译错误

vue-vben-admin 打包编译报错Failed to resolve entry for package “@vben-core/design“ 的解决方法 如果你在你是不是在 apps/子目录下执行了 build?# 项目根目录 pnpm build而不是在下面单独打包。这个问题本身不复杂,但非常容易被误导去“怀疑依赖、怀疑配置、怀疑人生”。实际上,只要理解vue-vben-admin 是 monorepo 架构,很多类似问题都会迎刃而解。如果你后面还遇到 vben-admin 的构建、部署、权限或性能相关问题,这一套思路都很有用。希望这篇记录,能帮你节省至少半小时的排坑时间。 阅读详情

相关推荐

芯片良率提升:从设计到制造的系统性工程实践

在半导体制造领域,良率是衡量生产效率和成本控制的核心指标,直接关系到芯片的经济效益与市场竞争力。其本质是合格芯片占总产出芯片的百分比,提升良率需要从设计源头到制造末端的全流程协同优化。从技术原理看,它涉及可制造性设计、工艺过程控制、缺陷检测与根因分析等多个复杂环节,尤其在先进制程下,随机缺陷和参数变异成为主要挑战。其技术价值不仅在于降低单颗芯片成本,更能加速产品上市、保障可靠性,并成为企业技术实力的关键体现。应用场景贯穿智能手机、数据中心、自动驾驶和人工智能等所有高端芯片领域。本文将结合【芯片制造】与【良率

weixin_42526068的博客 634

idea使用java8新特性,报红提示不支持方法引用

环境背景 我的java版本是1.8 并且项目的SDK版本也选择了1.8,语言级别也选择了8 编译环境也用了8版本的 问题 遍历的时候想使用java8的新特性,却提示图下图 想了一会,发现因为我的是maven的父子工程,所以模块还需要配置java的版本 模块的语言级别还需要配置为java8版本的 不报错了,解决问题了 ...

林高禄 9791

【TouchDesigner】三维渲染

Cmera COMP Uniform Scale(按比例缩放):沿x,y,z三个轴等比例缩放相机(通常不建议改变相机大小)。 Constrain To(约束到):让相机附属到某个指定元件上,跟随指定元件运动。 Look At(朝向):让相机在移动过程中始终面对指定的元件。 Pah SOP(相机的路径):输入SOP元件名字,为相机指定移动路径。 Geometry Comp Geometry COMP中的参数与Camera COMP中的参数用法大部分都相似。特殊的是它的instacne页面的

wangpuqing1997的博客 5459

Java8 新特性 学习笔记

java 8 新特性:lambda表达式、方法引用、默认方法、stream api、optional

lihaogn的博客 516

Axure RP 9在Windows 11环境下的高效安装与配置指南

本文提供Axure RP 9在Windows 11系统下的详细安装步骤与配置指南。针对Win11安全特性,从获取官方安装资源、调整系统权限,到定制化安装路径、精准汉化及性能优化,系统性地解决了安装闪退、汉化失败、运行卡顿等常见问题,确保用户获得稳定流畅的原型设计体验。

mango的博客 480

19、多项式基算术:原理与运算详解

本文深入探讨了有限域 $GF(2^m)$ 中的多项式基算术,详细介绍了加法、减法、乘法和平方运算的原理与实现方法。重点分析了多项式基表示形式、模约简技术以及乘法优化策略,如高基数乘法、并行与顺序乘法器设计,并提到了Karatsuba-Ofman算法在减少乘法次数方面的优势。此外,文章还讨论了多项式基算术在密码学、编码理论等领域的应用前景,并展望了未来在高效算法设计与硬件加速方面的研究方向。

yellow的专栏 150

IDEA报错Error : java 不支持发行版本5

环境:java11+maven3.8+spring5 报错原因:创建的maven工程默认用的JDK版本为1.5;并不是因为java11不支持spring5 解决方法:找到maven安装目录—>conf–>setting.xml修改默认jdk版本与你的电脑一致 完成后重启idea 然后检查项目1.项目设置 2.模块资源和依赖是否生效 重新运行代码OK ...

asdfaf__900的博客 603

数据分析案例-2024 年全电动汽车数据集可视化分析

本数据集来源于Kaggle,原始数据集共有177866条数据,17个变量。该数据集显示了目前通过华盛顿州许可部 (DOL) 注册的电池电动汽车 (BEV) 和插电式混合动力电动汽车 (PHEV)。电池电动汽车 (BEV) 是一种全电动汽车,使用一个或多个电池来存储电能,为电机提供动力,并通过将车辆插入电源进行充电。插电式混合动力汽车 (PHEV) 是一种使用一个或多个电池为电动机提供动力的车辆;使用另一种燃料,例如汽油或柴油,为内燃机或其他推进源提供动力;并通过将车辆插入电源来充电。

m0_64336780的博客 1万+

IDEA中,报错1.5中不支持

1.Ctrl+Alt+S搜索Java Compiler,看是不是1.5,是的话就改成你需要的版本

路在路上的博客 1485

✨在Windows11上安装虚拟机(VMware17.6.0)保姆级教程(附安装包)

VMware Workstation Pro 是一款功能强大的虚拟机软件,它允许你在单一的物理机上运行多个操作系统。性能卓越:VMware以其出色的性能和稳定性而闻名,适合运行资源密集型的虚拟机。用户友好:直观的用户界面使得即使是初学者也能快速上手。功能全面:支持多种操作系统,包括Windows、Linux、macOS等,满足不同用户的需求。企业级支持:VMware提供全面的技术支持,适合企业级用户。恭喜你成功安装了VMware Workstation Pro 17.6.0!

Python老吕的博客 1万+

运维系列【仅供参考】: Windos10和Windos11 配置intel网卡vlan的方法

Windos10和Windos11 配置intel网卡vlan的方法

weixin_54626591的博客 477

Java方法引用的详细讲解

使用Lambda的时,我们拿参数做操作方法引用,是通过方法引用来使用已经存在的方案 </hr> <img src='https://img-blog.csdnimg.cn/20210524092553361.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDk2Njcw,size_16,color_FFFFFF,t_70'>

派拉斯兔子的博客 5585

1分钟吃透一篇文献,借助AI辅助各部分精读,效率提升10倍(附AI提示词)

你现在是一名【研究领域】的资深博士,非常擅长阅读与分析长篇论文,那么接下来我会给你上传一篇论文,请你按照我的要求辅助我阅读。

qq_64378896的博客 641

《疯狂Java讲义》--琐碎知识点

Java最初是由Sun公司开发的,原名Oak,后Oracle收购了Sun公司 Java严格区分大小写 Java独立于任何平台,跨平台(C#只能局限于Windows平台) 编辑Java源代码可以使用任何无格式的文本编辑器(记事本、NotePad、EditPlus等),但写字板、Word等是有格式的编辑器,不能用于写Java源程序 Java程序必须以类的形式存在,类是Java程序的最小程序单位...

Eileen___的博客 285

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java基本语法知识点整理

文章参考Java疯狂讲义(第3版),是对其三、四章琐碎且麻烦的知识点的整理。1.一行可以书写多条语句,一个语句可以跨多行,但字符串和变量名不能跨行。2.标识符由字母数字下划线和美元符组成,数字不能打头。3.Java关键字小写。4.支持的语言类型分为基本类型和引用类型。基本类型分为boolean类型和数值类型,数值类型包括byte,short,int,long,char,float,double.5...

xiaohouzi1992的博客 493

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【大牛疯狂教学】java语言编程好学吗

为什么要公开这些面试题? 原因一:身边从事 Java 开发的人员越来越多,我的表弟表妹们,朋友的表弟表妹们,朋友的朋友的表弟表妹们,每次问我要相同的面试复习材料,已经让我疲于应付,索性整理出来,直接发链接给他们。 原因二:节省招聘双方彼此的时间,有些来公司面试人,无论是有几年工作经验的还是刚毕业的,就连这些最基础的面试题都搞不定,这确实让人很遗憾。常言道“一屋不扫何以扫天下”,也是同样的道理,如果连基础的概念都搞不明白,又怎么让面试官相信你能写出高质量的程序呢?与其浪费彼此的时间,还不如花点时间把自己的基础

m0_56710876的博客 250

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

琐碎日记

    敲了一下午的代码,然后吃饭,然后去西电转了一圈,玩了不到二十分钟篮球,然后回来在网上找东西看,无非是一些应聘技巧之类的,因为要去的那家公司的美女说明天经理要见我,至于是人力资源部的经理还是别的什么经理我没有细问,或者她说了,因为打电话的时候有点吵,没听清,反正既然是经理,自然要好好的准备一下,以便明天从容应对。然后不知不觉转到了中国西部文化网,发现它竟然是用JSP做的,

旺旺老师的空间 1544

【大牛疯狂教学】字节跳动8年老Java面试官经验谈

一、一面 1小时40几分钟,基本会的被问完了 1.介绍项目,考虑没考虑过服务器挂了怎么办 这里应该是考查系统架构 2.面向对象特性 3.怎么理解多态 4.接口和抽象类的区别 5.说说并发是怎么回事,有什么问题,单核能并发吗? 6.JMM 7.说说volatile 8.说说synchronized,发生异常会释放锁吗 9.Lock 10.JVM内存结构,详细说栈、方法区和堆 11.String A = new String(“abc”) 创建了几个对象 12.public class A{String na

m0_57286518的博客 183

32岁的我裸辞了,八年 Java 老鸟,只因薪水被应届生倒挂,在闭关三个月后拿到阿里 Offer,定级 P7!

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。BAT面试经验实战系列:Spring全家桶+Redis等其他相关的电子书:源码+调优面试真题:《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

2401_84048554的博客 750

[疯狂Java笔记]AWT:Dialog对话框类、FileDialog文件对话框

1. 创建对话框:    1) Dialog是Window的子类,属于特殊容器,用于和用户交互,必定要实现事件监听和处理的接口;    2) Dialog是一种可以独立存在的顶级窗口,当然通常都是具有父窗口的(即依赖于其他窗口产生),但Dialog的父窗口必须是Frame,这是规定好的;    3) 构造器:Dialog(Frame owner, String title, boolean

Lirx_Tech的专栏 8280

33岁跳槽无路,濒临绝望之际受贵人指点,成功上岸阿里(Java岗)

写在前面 马上过34岁生日了,和大家聊聊最近的情况 半年前还在迷茫该学什么,怎样才能走出现在的困境,半年后已经成功上岸阿里,感谢在这期间帮助我的每一个人 伊始 30多岁工作的时候总是有种力不从心的感觉,正值壮年却活得像个五六十岁的人 在北京工作,却没能在北京买房,最后还是在慢慢地还着房贷车贷、考虑着孩子的学费、培训班的费用、以及琐碎的日常生活费 工资勉强高过支出,但我还能再工作几年呢? 头发稀疏、啤酒肚……,这是大多数同事对我的印象吧…… 陷入迷茫 工资比不过年轻人,还要被年轻人管着,心里很不

sion127的博客 428

Java的窗口通常是的子类_[疯狂Java笔记]AWT:Dialog对话框类、FileDialog文件对话框...

1. 创建对话框:1) Dialog是Window的子类,属于特殊容器,用于和用户交互,必定要实现事件监听和处理的接口;2) Dialog是一种可以独立存在的顶级窗口,当然通常都是具有父窗口的(即依赖于其他窗口产生),但Dialog的父窗口必须是Frame,这是规定好的;3) 构造器:Dialog(Frame owner, String title, boolean modal);i. owner...

weixin_42310572的博客 553

96年/离职8个月/拒绝华为offer/目前自由职业-记这大半年来的挣扎与迷茫

仅以此文,记录自己这大半年来的挣扎与迷茫。 2019 年 11 月 在公司工作七个月之后,我被裁员了。 回忆自己这七个月的经历,不管是遇到的人和事,更多感到的是收获和感恩,于是我写下了:「应届毕业生工作7个月小结」,当做对于这七个月的小小总结。 本想好好休息几天,不料第二天还在睡梦中,就有 HR 和猎头找上门来了… 既然来了,就好好准备复习面试吧… 2019 年 12 月 疯狂面试ing… 然后 12 月开始了疯狂面试,包括华为 (口头 Offer)、字节跳动 (一面挂,面试官说很久没问过应届生了…) .

我没有三颗心脏的博客 1万+

安卓学习心得,学习步骤 入门书籍推荐

俗话说:工欲善其事必先利其器,如何少走弯路,学好安卓,下面谈谈我的心得。 本人从事java web开发四年,5个月前从原公司辞职,进入一家公司从事安卓开发,刚开始也是不知道如何下手,感觉自己从事web开发学习安卓肯定不会很难,想着在一个月之内搞定安卓,成为安卓高手,但是却是事与愿违,安卓知识很琐碎,UI控件很多,属性也很多,四大组件搞懂也不是一天两天,一个月之后仍然不能自己独立开发一个项目,于是...

buyadong1985的博客 227

Java程序员与架构师的面试,码农相逢秃者胜!

每年的年初和年末,都是各家企业比拼年终,各大厂员工炫耀福利的“高光”时刻。 每年这个时候,无数平时很努力的程序员,看着自己年终奖,心里呐喊:明年我要进大厂,我要拿 10 个月年终。 如果,真的要拿到大厂 Offer,除了运气,扎实的基本功才是根本。如果,真想要丰厚的年终,除了努力,你还要把程序写的更好。 一句话,你想进大厂,想拿高薪,想要高额年终奖,别每天沉浸在 CRUD 中,多关注技术底层的逻...

架构师精进之路 325
上一篇: 用java语言实现事件委托模式
下一篇: Leetcode题解 371. Sum of Two Integers
Xd_Yu
博客等级 码龄12年 5粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值