趣解面向对象

2023-11-01

【小白自述】

  • 过去就听说,到面向对象的时候即使没有女朋友,都可以new好多个,啥时候我也能想new多少new多少?
  • 面向对象听了很多老师的课,感觉好绕啊!!!这个类套那个类,怎么套的也是一头雾水!!!怎么才能学好了面向对象嘛???!!!
  • 好多人都说面向对象是java的核心,都说工作几年的都不能真正领悟面向对象思想,像我们刚开始学能够掌握吗?要不要放弃?

        ······

面向对象,我来了

目录

【小白自述】

初识面向对象

(OOP即object-oriented programming)

对象的创建分析

类与对象的关系:

构造器

面向对象三大特征

封装

继承

格式:

注意:

super关键字:

this关键字:

方法重写:

继承中成员变量的用法

多态

抽象类和接口

抽象类:单继承

表现形式:

接口

内部类及面向对象实战

内部类概念

内部类分类

致歉:



作为一个资深的小白翻身专家,今天就给大家倒倒我的面向对象学习史以及一些有趣的学习认知。

初识面向对象

(OOP即object-oriented programming)

与面向对象相对的就是面向过程,接下来我们区分一下面向对象和面向过程。

面向过程特点:

  • 步骤清晰简单,第一步、第二步、第三步···只要按照步骤做就能完成
  • 面向过程适合处理一些较为简单的问题。如我们想用电脑听歌需要先打开电脑,找到酷狗音乐,选择相应歌曲,点击播放,即完成了电脑听歌的需求。

面向对象特点:

  • 物以类聚,分类的思维模式,思考问题的方法是首先解决该问题需要做哪些分类,然后对这些分类进行单独思考。最后才对某个分类下的细节进行面向过程的思索
  • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题。
  • 炒一盘菜,我们考虑食材选择、佐料准备、厨具准备、菜谱等,有这些就能做出来,这是面向对象编程;而具体如何去做,划分到每个细节里是面向过程编程了。

总结:

        对于描述复杂事物,为了从宏观上把握,我们要运用面向对象的思想从整体上合理分析整个系统;但具体到微观操作,仍需要用面向过程的思路去处理。

面向对象本质以类的方式组织代码,以对象的方式封装数据

从认识角度考虑先有对象后有类。对象是具体的,类时抽象的,类是对象的抽象

从代码运行角度考虑是仙有泪后有对象。类是对象的模板

对象的创建分析

类与对象的关系:

  • 类时一种抽象的数据类型,它是对某一类事物整体描述/定义,但并不能代表某一个具体的事物。如:水果、蔬菜、动物

  • 对象是抽象概念的具体实例。能够体现出特点,展现出功能的具体实例,而非一个概念。

        土豆就是蔬菜类的一个具体实例,狗也是动物类的一个具体实例,苹果也是水果类的具体实例

温馨提示:

        如果在观看代码的过程中不懂方法为何如此调用,可以详见:java中方法详解

/**
使用new关键字创建对象
使用new关键字创建是,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及类中构造器的调用

构造器又名构造方法,创建对象时必须调用。
构造器特点:
    1、必须和类的名字相同;
    2、必须没有返回类型,也不能写void
*/
public class Application{
    public static void main(String[] args){

        Person p = new Person();
        System.out.println("姓名:"+p.name+"证件号:"+p.personID+"性别:"+p.sex+"身高为"+heigt);
        p.name = "小李子";
        p.personID=101214192830144143L;
        p.sex = '男';
        p.heigt = 172;
        System.out.println("姓名:"+p.name+"证件号:"+p.personID+"性别:"+p.sex+"身高为"+heigt);

        p.saySomething();
    }
}
/*
类中含属性和功能两部分,可以单独存在。
属性: 字段Field 即成员变量
功能: 成员方法
但记住事物的存在肯定是有它的形态和存在价值的!!!

*/
class Person{

    String name;
    Long personID;
    char sex;
    int heigt;

    public static void saySomething(){

        System.out.print("啊~~~");
    }
}

构造器

构造器又名构造方法,创建对象时必须调用。

/*
格式:
    修饰符 类名(参数列表){}

*/
public class Student{

    //与类名相同,无返回值类型,不写时,系统会默认给出构造器

    public Student(){

    }
}


特点:

  1. 必须和类的名字相同;
  2. 必须没有返回类型,连void也没有

注意:

  1. 当构造方法未定义时,系统会默认提供无参构造方法
  2. 一旦定义了有参构造,无参构造必须显示定义
  3. 构造方法是可以重载的
    /*
    以下程序报错原因:
    使用new关键字,本质实在调用构造器
    一旦定义了有参构造,系统就不会自动提供无参构造
    如果想使用无参构造,需要重新显示定义无参构造
    */

public class Application{
    public static void main(String[] args){
        
        Student st = new Student();//  此时程序会报错 

    }

}

class Student{
    String name;

/*
  //如果想要不报错,自己在定义一个无参的构造方法
    public Student(){

    }
*/

    //下面定义一个有参构造
    public Student(String name){
        this.name = name;
    }


  

}

Alt+insert-->自动生成构造方法

作用:

  1. 使用new关键字,必须要有构造器
  2. 实例化初始值

面向对象三大特征

封装

将非直接用的内容存放在盒子里,同时打开一个出口能够获取直接用的内容。即(该露的露,该藏的藏)

程序设计追求“高内聚,低耦合”,

高内聚,指类的内部数据操作细节自己完成,不允许外部干涉;

低耦合,指仅暴露少量的方法给外部使用。

通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏

将属性私有,使用get/set方法

  1. 提高程序到 安全性,保护数据
  2. 隐藏代码的实现细节
  3. 统一接口
  4. 系统可维护性增加
public class Application{
    public static void main(String[] args){

        Person p = new Person();
        System.out.println("姓名:"+p.name+"证件号:"+p.personID+"性别:"+p.sex+"身高为"+heigt);

        /*new出的对象不能直接调用私有的Person属性,会报错如:‘name’has private access in 'Person'
        如果想要调用Person属性,需要提供get、set方法      

         p.name = "小李子";
        p.personID=101214192830144143L;
        p.sex = '男';
        p.heigt = 172;  
*/
/*
        p.setName("小李子");
        p.setPersonID(101214192830144143L);
        p.setSex('男');
        p.setHeight(172);
*/
       
        System.out.println("姓名:"+p.getName()+"证件号:"+p.getPersonID()+"性别:"+p.getSex()+"身高为"+ p.getHeight());

        p.saySomething();
    }
}

class Person{

   //属性私有
   private String name;
   private  Long personID;
   private  char sex;
   private  int heigt;

    //提供一些可以操作私有属性的方法
    //提供一些public的get、set方法

    //get获得私有属性的数据
    public String getName(){

        return this.name;
    }

    //set给这个数据设置值
    public void setName(String name){

    this.name = name;
    }


     public String getPersonID(){

        return this.personID;
    }

     public void setPersonID(Long personID){

        this.personID = personID;
    }

     public String getSex(){

        return this.Sex;
    }

     public void setSex(char sex){

        this.sex = sex;
    }

     public String getHeight(){

        return this.height;
    }

     public void setHeight(int height){

        this.height = height;
    }
    public static void saySomething(){

        System.out.print("啊~~~");
    }
}

继承

继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模

extends:扩展。即自子类是父类的扩展,子类 is one of the 父类

格式

class 子类 extends 父类{

}

继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends表示

java中类只有单继承,没有多继承,可以多层继承

class Person{
    String name;
    int age;
    char sex;
    int height;
    
    public static void say(){

    }
}

class Student extends Person{
    int learningID;
    double score;
    public static void learning(){

    }

}

//父类可以由多个子类继承

class Teacher extends Person{
    int teachID;
    double salary;
    public static void teaching(){

    }

}

/*
多层继承演示:
Teenager既具备Student的属性和特征,
也具备Person的属性和特征,
同时还具备object的属性和特征
*/
class Teenager extends Student{

    private int age;

    public static void setAge(int age){
        if(age>19||age<11){
            System.out.println("非法青少年");
        }else{
            this.age = age;
        }

    }
}

继承是类与类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合

注意:

  • 用private修饰的变量和方法是不能被继承的。
  • 子类不能继承父类的构造方法,但是可以通过super关键字访问父类构造方法
  • 不要为了部分功能而去继承

super关键字:

  • super调用父类的构造方法,必须在构造方法的第一行
  • super必须只能出现在子类的方法或者构造方法中
  • super和this不能同时调用构造方法

this关键字:

  • this为了区分类中的成员变量和局部变量
  • 当子类中继承的父类中的成员变量和成员方法,实际调用时,既可以用this关键字,也可以用super关键字;
/*
this.name指成员变量
赋值的name是局部变量

*/


public class Student{

    private String name;

    public static void getName(String name){

        this.name = name;

    }

}

this VS super:

  • 代表的对象不同:

                  this:代表本类对象的应用 

                  super:代表父类对象的应用

  • 前提:

                   this:   无继承关系(本类中)即可使用

                   super:只能在继承前提下方(即子类中)可使用

  • 构造方法

                   this() : 本类的构造

                   super():父类的构造

                   注意必须要放在构造方法中的第一行

/*
    子类中的构造方法会默认调用父类中无参的构造方法
    虽然没有直接写super(),但默认有super()
    如果父类中没有无参的构造方法,子类的构造方法必须要直接或者间接调用到父类中的构造方法
    简而言之,子类中的构造方法必须要用到父类中的构造方法

*/
public class Application{

    public static void main(String[] args){
        
       // Person p = new Person();// 打印:我是父类人类的构造方法

       // 先打印我是父类人类的构造方法,然后打印我是子类学生类构造方法

         Student st = new Student();
    }
}

class Person{
    
  /*  public Person(){

         System.out.println("我是父类人类的构造方法");

    }
    */

    public Person(String p){

         System.out.println("我是父类人类的构造方法");

    }
}

class Student extends Person{
   
    public Student(){
       super("调用有参构造方法");

       System.out.println("我是子类学生类的构造方法");

    }

}

思考:为什么子类构造方法必须调用父类构造方法

子类构造方法调用父类构造方法目的是为了完成父类中数据的初始化。

方法重写:

需要有继承关系,子类重写父类的方法

/*
方法的重写一定是仅针对方法,跟属性无关

方法的调用仅和左侧定义的数据类型有关,会根据引用数据类型中的方法决定调用结果

静态方法和非静态方法区别很大

方法的重写只与非静态方法有关系

*/
public class application{
    public static void main(String[] args){


        Student st = new Student();
        st.say();//打印:我是学生类中的静态方法

        Person st1 = new Student();//父类的引用指向子类
        st1.say();//打印:我是人类中的静态方法

     
        st.cry();//打印:啊~~,我是学生类中的非静态方法

        st1.cry();  //打印:啊~~,我是学生类中的非静态方法

        st.smile();//哈哈哈,我是人类中的非静态方法

        st1.smile();//哈哈哈,我是人类中的非静态方法     哈哈哈,我是学生类中的非静态方法

    }

}


class Student extends Person{

     public static void say(){

           System.out.println("我是学生类中的静态方法");
    }

   

    public void cry(){

        System.out.println("啊~~,我是学生类中的非静态方法");
    }

    @Override
	public void smile() {
		// TODO Auto-generated method stub
		super.smile();
		System.out.println("哈哈哈,我是学生类中非静态方法");
	}

}

class Person{

     public static void say(){

        System.out.println("我是人类中的静态方法");
    }
   

    public void cry(){

        System.out.println("我是人类中的非静态方法");
    }

     public void smile() {
	    	
	    	System.out.println("哈哈哈,我是人类中的非静态方法");
	 }
}
  • 方法名必须相同,方法体不同
  • 参数列表必须相同>
  • 修饰符:范围可以扩大但不能缩小; public>protected>default>private
  • 抛出异常:范围可以被缩小但不能扩大:ClassNotFoundException-->Exception(大)

思考:为什么要重写?

父类的功能,子类不一定需要,活着不一定满足

继承中成员变量的用法

继承中的成员变量的关系:

  • 先在子类中找,子类中如果没有就去父类中找,父类中如果没有就报错
public Application{
    public static void main(String[] args){
        Student st = new Student();
        
        System.out.println(st.country);//打印结果为 USA,如果Student类中没有,则为China

        st.show("India");//打印结果依次为India、USA、China
    }
}

class Person{
    String name;
    int age;
    double weight;
    String country = "China";

    public void say(){


    }
}

class Student extends Person{
    String name;
    int grade;
    int score;
    String country = "USA";

    public void test(){

    }
    public void show(String country){
        System.out.println(country);//就近原则
        System.out.println(this.country);//this关键字的应用指向成员变量
        System.out.println(super.country);//super关键字的应用指向父类中的成员变量
       
    }
}
  • 父类对象无法调用子类中的成员变量

多态

public class application{
    public static void main(String[] args){


        Student st = new Student();
        Student.say();//打印:我是学生类中的静态方法

        Person st1 = new Student();//父类的引用指向子类
        Person.say();//打印:我是人类中的静态方法

     
        st.cry();//打印:啊~~,我是学生类中的非静态方法
/*
        父类不可以调子类中独有的方法,如果想要调用需要强制转换((Student)st1).cry()

        st1.cry();  //报错:ClassCastException    

*/

        st.smile();//哈哈哈,我是人类中的非静态方法

        st1.smile();//哈哈哈,我是人类中的非静态方法     哈哈哈,我是学生类中的非静态方法

    }

}


class Student extends Person{
    //含static的方法是静态的方法,类名直接调用,尽量不适用对象调用

     public static void say(){

           System.out.println("我是学生类中的静态方法");
    }

   

    public void cry(){

        System.out.println("啊~~,我是学生类中的非静态方法");
    }

    @Override
	public void smile() {
		// TODO Auto-generated method stub
		super.smile();
		System.out.println("哈哈哈,我是学生类中非静态方法");
	}

}

class Person{
    //含static的方法是静态的方法,类名直接调用,尽量不适用对象调用
     public static void say(){

        System.out.println("我是人类中的静态方法");
    }
   

   

     public void smile() {
	    	
	    	System.out.println("哈哈哈,我是人类中的非静态方法");
	 }
}

多态是方法的多态,属性没有多态

父类和子类有继承关系,如果想让父类的对象调用子类的方法,需要进行强制转换

容易出现类型转换异常  ClassCastException

存在条件:继承关系,方法需要重写@Override

父类引用指向子类对象 Person p= new Student();         

instanceof  (类型转换)引用类型 ,判断一个对象是什么类型

//如果A与B存在继承关系,那么结果为true,否则为false。

System.out.println(A instanceof B);

          子类继承父类,向上转型直接转,向下转型需要用强转,过程中可能会损失精度。                    

public class Student{
    public static void main(String[] args){
        Student st = new Student();
        /* 执行结果依次为:

            我是静态代码块
            我是匿名代码块
            我是构造代码块

        通过打印结果我们能够得出执行速度:静态代码块>匿名代码块>构造代码块
        */

        Student st1 = new Student();
          /* 执行结果依次为:

            我是匿名代码块
            我是构造代码块

       静态代码块只执行1次
        */
}

    //代码块(匿名代码块)可以赋初始值
    {
    
    System.out.println("我是匿名代码块");
    }
     //静态代码块
    static{
   
    System.out.println("我是静态代码块");
    }
    //构造方法
    public Student(){
        System.out.prinln("我是构造方法");

    }

}

执行速度:静态代码块>匿名代码块>构造代码块 

抽象类和接口

抽象类:单继承

表现形式:

/*
抽象类也是单继承
格式:public abstract class 类名{}
抽象类不能new只能靠子类去实现它:约束
抽象方法必须在抽象类中
抽象类中可以写普通的方法

*/

public abstract class Description{

    /*
    抽象方法须有关键字abstract
    抽象方法只有方法名没有方法实现,需要被实现,因此引入继承

    */
    
    public abstract void sayStory();
}

思考: 抽象类中有构造器吗?

             无法创建对象,那是没有构造器的。

             抽象类存在的意义是什么?

             抽象出来,提高开发效率

接口

约束和实现分离:面向接口编程

接口就是规范,定义的是一组规则,体现了现实世界中“如果你是~~则必须能做~~”

接口的本质是契约,就想法律一样,一旦制定,在大环境下都需要遵守

面向对象(OO)的精髓,是对对象的抽象,最能体现这一点的是接口。

  • 只有规范方法,自己无法写方法~专业的约束!
  • 类可以实现接口,
  • 表现形式:class A implements interface B
  • 只要实现了接口的类就需要重写接口中的方法
  • 接口是可以实现多继承的
/*
类可以实现接口,表现形式:A implements B
只要实现了接口的类就需要重写接口中的方法

接口是可以实现多继承的

*/
public class UserImpl implements UserService,TimeService{
    public void add(String name) {
		// TODO Auto-generated method stub
		
	}

	public void delete(String name) {
		// TODO Auto-generated method stub
		
	}

	public void update(String name) {
		// TODO Auto-generated method stub
		
	}

	public void quary(String name) {
		// TODO Auto-generated method stub
		
	}

	public void timer() {
		// TODO Auto-generated method stub
		
	}
    


}
//接口都需要有实现类,定义的关键字是interface
public interface UserService{
    
    //静态常量 public static final可以不写
    public static final int AGE = 15;

    //接口中所有定义其实都是抽象的 public abstract

    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);

}

public interface TimeService{

    void timer();

}

内部类及面向对象实战

内部类概念

在一个类的内部再定义一个类,如A类中定义一个B类,那么B类相对A类来说就成为内部类

class OutClass{

    System.out.println("我是外部类");

    class InnerClass{

        System.out.println("我是内部类");

    }


}

内部类分类

  • 成员内部类

/**
成员内部类的演示效果
可以获得外部类的私有属性和私有方法
调用前要先通过外部类实例化内部类
*/

class ApplicationTest{

    public static void main(String[] args){
        //测试是否可以new内部类和外部类,如何保障正常调用
        OuterDemo od = new OuterDemo();
        //通过这个外部类来实例化内部类~
        OuterDemo.InnerDemo id = od.new InnerDemo();
        id.getID();//得到的打印结果为1012;

    }

}


public class OuterDemo{
    private int id = 1012;
    public void out(){
        System.out.println("这是外部类的方法");
    }

    public class InnerDemo{

        public void in(){
            System.out.println("这是内部类的方法");
        }
        //获得外部类的私有属性

        public void getID(){

            System.out.println(id);
        }

    }

}
  • 静态内部类
/**
静态内部类的演示效果
不可以获得外部类的私有属性和私有方法,因为static为内存分配,在没有创建对象前已经存在
*/

class ApplicationTest{

    public static void main(String[] args){
        //测试是否可以new内部类和外部类,如何保障正常调用
        OuterDemo od = new OuterDemo();
        //通过这个外部类来实例化内部类~
        OuterDemo.InnerDemo id = od.new InnerDemo();
        // id.getID();//报错,static内存直接分配;

    }

}


public class OuterDemo{
    private int id = 1012;
    public void out(){
        System.out.println("这是外部类的方法");
    }

   public static class InnerDemo{

        public void in(){
            System.out.println("这是内部类的方法");
        }
        /*不能获得外部类的私有属性

        public void getID(){

            System.out.println(id);
        }
        */

    }

}
  • 局部内部类
/**
    局部内部类的演示效果
*/

public class ApplicationTest{
    public static void main(String[] args){
    OuterDemo od = new OuterDemo();
    


    }
}


public class OuterDemo{

    //局部内部类
    public void method(){
        class InnerDemo{
            public void in(){

            }

        }

    }


}
  • 匿名内部类
/**
    匿名内部类的展示效果

    
*/

public class Test{
    public static void main(String[] args){
        //没有名字初始化类,不用将实例保存到变量中

        new NameClass().myName();
    }

}

class NameClass{

    public void myName(){

        System.out.println("我的名字叫测试匿名内部类");
    }


}

致歉:

因工作比较忙,更新的不够及时,望小伙伴们海涵。

作品会及时更新,更多内容也可以观看www.51doit.cn

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

趣解面向对象 的相关文章

  • Mockito 在调用参数数量可变的方法时使用参数匹配器

    我试图在对具有可变数量参数的方法的调用中使用参数匹配器 Java 中的东西 没有成功 我的代码如下 我还将列出我尝试用来完成此工作的所有行 import static org mockito Mockito public class Met
  • JPA 中的复合键

    我想创建一个具有自动生成的主键的实体 而且还有一个由其他两个字段组成的唯一复合键 我如何在 JPA 中执行此操作 我想这样做是因为主键应该用作另一个表中的外键 并且使其复合并不好 在下面的代码片段中 我需要命令和模型是唯一的 pk当然是主键
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 是否可以使用 Flying Saucer (XHTML-Renderer) 将 css 解析为类路径资源?

    我正在尝试将资源打包到 jar 中 但我无法让 Flying Saucer 在类路径上找到 css 我无法轻松构建 URL 来无缝解决此问题 https stackoverflow com questions 861500 url to l
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复

随机推荐

  • 来自美团资深技术专家亲笔的400页的高并发系统设计,近50个核心难点,让你面试直接起飞!

    前言 在现今IT界特别是程序员 如果你对于高并发都没有接触和了解过未免也有些太孤陋寡闻 而作为一个优秀的程序员 高并发系统架构设计师必须要掌握的 很简单 现在大多数互联网公司都会用到高并发系统架构设计 像常见的 秒杀活动 抢红包 微博热搜
  • 【JAVAWEB开发】基于Java+Servlet+Ajax+jsp网上购物系统设计实现

    哈喽 大家好呀 这篇给的大家带来的是网上购物系统设计 在传统电商时代 用户是先有需求再购买 用户对平台较为依赖 商家对消费者很难有直接的影响力 而如今社交 电商解决了产品质量的信息不对称问题 电商已经成为当今经济发展的一个重要领域 而网上购
  • 一张图看明白GPU原理

    GPU直通实现方式 通过虚拟化平台的直通技术可以将显卡直接给虚拟机使用 与物理机接入显卡效果基本一致 在询价上只要安装了对应显卡的显示驱动 显卡就可以为这个虚拟机提供高性能的图形能力 GPU虚拟化 共享能够将一个物理存在的显卡分享给多个虚拟
  • QPainterPath全功能解锁

    QPainterPath可以自动计算bounding和shap 前者决定了重绘区域 后者决定了碰撞边界 可以说 QPainterPath是绘制的最优解之一 但QPainterPath内并未直接提供缩放 旋转等功能 很多人借助QPainter
  • Qt QList和QLinkedList使用

    文章目录 1 QList 1 1 链表基础使用 添加 修改 查找 删除 1 2 迭代器使用 STL风格 Java风格 2 QLinkedList 1 QList 1 1 链表基础使用 添加 修改 查找 删除 链表初始化 添加元素 QList
  • 2022第三届全国大学生网络安全精英赛练习题(6)

    全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题 6 文章目录 全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题 6 总结 501 下列有关代理服务器说法错误的是 A 代理服务器访问模式是浏览器不
  • sort函数与结构体

    include
  • Java高级编程实验_java高级编程项目实践.ppt

    java高级编程项目实践 ppt 由会员分享 可在线阅读 更多相关 java高级编程项目实践 ppt 32页珍藏版 请在人人文库网上搜索 1 Java高级编程项目实践 徐铭 课程目录 第一部分 需求定义 第二部分 用户界面设计 第三部分 数
  • 停止开发GPT-4?我更加关注数据版权、信息安全和数字鸿沟问题

    近日 随着ChatGPT和GPT 4的迅猛发展 人工智能对于人类社会以及文明的影响将是我们需要重视的问题 有人认为ChatGPT的表现引人入胜 但同时也让人感到毛骨悚然 因此 AI是否可靠 是否会导致灾难 机器智能超过人类的 奇点 是否真正
  • 公共IPV6 dns大全

    dns是什么和公共ipv4可阅读本篇文章 dns大全 一 阿里ipv6 dns 阿里的dns好在于自家的服务器遍布全球 加上自家研究的CDN技术快稳定 强大的阿里云团队技术坚持也是国内首家支持IPv4和IPv6 双端加持 安全快速 2400
  • js数组常见操作方法总结

    0 将数组中所有name改成ChName Name改成EnName var arr1 name aa Name ss children name ww Name nn name ff Name ee let arr2 JSON parse
  • 过滤器 和 拦截器 的区别

    1 过滤器 Filter 过滤器配置比较简单 直接实现Filter 接口即可 也可以通过 WebFilter注解实现对特定URL拦截 看到Filter 接口中定义了三个方法 init 该方法在容器启动初始化过滤器时被调用 它在 Filter
  • matplotlib图表多曲线多纵轴绘制工具方法

    matplotlib是常用的可视化库 画折线图只要把列表plot进去就可以轻松展示 这里只弄折线图 其它图暂时不管 同一图上不同曲线数值大小差太多就能绘制成地板和天花板还不能给人家量纲去了 所以不同曲线需要不同纵轴才能清晰看出细小波动 要是
  • vscode代码上传到gitlab

    1 打开终端 1 1输入一下内容提交到本地仓库 PS D VueProject2 mall admin web gt git add PS D VueProject2 mall admin web gt git commit m 商品优化
  • PCB翘曲度

    为了正确放置 SMT 组件 PCB 必须保持完全平整 为了准确放置 贴片机必须将 SMT 组件释放到所有组件的电路板上方相同高度 如果 PCB 有翘曲 也就是说不平整 则机器在将元件放置在电路板上时 在释放元件时无法保持恒定的高度 这会影响
  • 德隆现象给中国企业的反思

    德隆现象给中国企业的反思 刘亚军 萨尼威投资管理顾问公司董事长兼首席咨询顾问 一 德隆 一个资本扩张神话的终结 最近 德隆继创造了自1992年进入快速成长以来 十二年形成了220亿的资产规模 在国内股市长期低迷的情况下 旗下的 老三股 屹立
  • Matlab数字图像处理--分别采用 5×5,9×9,15×15 和 25×25 大小的拉普拉斯算子对图像进行锐化滤波,并完成图像的锐化增强

    题目 代码 初始化 B为灰度图 B rgb2gary img i表示生成尺寸为i i的拉普拉斯算子 function init B i lap genlaplacian i img lap imfilter B lap replicate
  • 计算机协会管理,计算机爱好者协会内部管理制度

    计算机爱好者协会内部管理制度 由会员分享 可在线阅读 更多相关 计算机爱好者协会内部管理制度 5页珍藏版 请在人人文库网上搜索 1 计算机爱好者协会内部管理制度 1内部管理考核制度目录第一章总章 3 第二章组织工作制度 4 第三章普通会员权
  • Injection of autowired dependencies failed; 的解决办法!

    错误信息 严重 Exception sending context initialized event to listener instance of class org springframework web context Contex
  • 趣解面向对象

    小白自述 过去就听说 到面向对象的时候即使没有女朋友 都可以new好多个 啥时候我也能想new多少new多少 面向对象听了很多老师的课 感觉好绕啊 这个类套那个类 怎么套的也是一头雾水 怎么才能学好了面向对象嘛 好多人都说面向对象是java