java面向对之象类的继承与多态

news2024/10/9 5:04:41

目录

1.类的继承

图解

案例:创建一个动物类和一个猫类

1.代码

1)动物类

2)猫类

3.测试类

2.效果

2.父类方法的重写

案例:如何重写父类的方法        

1.代码

1)Animal类

2)Dog类

3)测试类

2.效果

3.super关键字

案例:如何在子类中调用父类的方法,或属性

1.代码

1)Animal类

2)bird类

3)测试类

2.效果

4.final关键字

5.抽象类

案例:定义一个抽象类

1.代码

2.效果

6.接口

案例:定义一个接口

1)代码

1.接口

2.接口实现类

3.测试类

2)效果

7.多态

案例:游戏接口实现类

1.代码

1)Game接口

2)Ball

3)Div类

4)测试类

2.效果

8.对象类型的转换

案例:子类转换成父类

1.代码

2.效果

案例:父类转化成子类

注:

1.代码

2.效果

9.instanceof关键字

案例:使用instanceof判断类

1.代码

2.效果

10.Object类

案例:测试一个类是否含toString和hashCode

1.代码

2.效果

11.成员内部类

案例:内部外部类相互访问

1.代码

2.效果

注:外部类创建内部类

12.局部内部类

案例:局部内部类

1.代码

2.效果

13.静态内部类

案例:静态内部类

1.代码

2.效果

14.匿名内部类

案例:匿名内部类

注:本质

1.代码

2.效果

15.try..catch和finally

案例:处理0/1异常

1.代码

2.效果

16.throws关键字

案例:1/0异常抛出

1.代码

2.效果

17.自定义异常类

案例:自定义1/0异常处理

1.代码

2.效果


1.类的继承

  • 定义:类的继承是指一个类(子类)可以继承另一个类(父类)的属性和方法。
  • 语法class SubClass extends SuperClass { ... }
  • 特点
    • 子类可以重写或添加新的方法和字段。
    • 继承是单继承,即一个子类只能有一个直接父类。
    • Java中的所有类都默认继承自Object类。

图解

案例:创建一个动物类和一个猫类

1.代码

1)动物类
package org.xiji.myextends;

/**
 * 这是一个动物类
 */
public class Animal {
    private String name;
    private int age;

    //动物叫
    public void call(){
        System.out.println("动物叫");
    }
    public void eat(){
        System.out.println("吃东西");
    }

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

2)猫类
/**
 * 动物类
 */
public class Cat extends Animal{

}
3.测试类
package org.xiji.myextends;



public class MyExtendsTest {


    public static void main(String[] args) {
        Cat cat = new Cat();

        System.out.println("猫吃-----------");
        cat.eat();
        System.out.println("猫叫-----------");
        cat.call();
    }

}



2.效果

可以看到Cat类中并没有写任何的方法,但是继承了Animal类,便拥有了父类中所有的方法和属性

2.父类方法的重写

  • 定义:当子类需要提供特定实现时,可以重写从父类继承的方法。
  • 语法:在子类中使用相同的方法签名,并加上@Override注解(可选但推荐)。
  • 特点
    • 方法签名必须与父类中被重写的方法一致。
    • 访问权限不能比父类更严格。
    • 使用super.methodName()可以在子类中调用父类的方法。

案例:如何重写父类的方法        

注:类还是使用上面的那个类

1.代码
1)Animal类
package org.xiji.myextends;

/**
 * 这是一个动物类
 */
public class Animal {
    private String name;
    private int age;

    //动物叫
    public void call(){
        System.out.println("动物叫");
    }
    public void eat(){
        System.out.println("吃东西");
    }

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

2)Dog类
package org.xiji.myextends;

public class Dog extends Animal{

    /**
     * 这只动物是条狗,我们对叫声不满意,需要改为汪汪汪
     * 
     * ctrl+o 键  ======》  在新的界面中选中call()方法进行重写
     */

    @Override
    public void call() {
        System.out.println("汪汪汪");
    }
}




3)测试类
package org.xiji.myextends;

public class MyOverride {
    public static void main(String[] args) {
        Dog dog = new Dog();

        System.out.println("狗狗叫");
        dog.call();
    }
}
2.效果

3.super关键字

  • 用途引用当前对象的直接父类对象
  • 常见用法
    • 调用父类的构造方法:super(); 或 super(param1, param2);
    • 调用父类的方法:super.methodName();
    • 访问父类的变量:super.variable;

案例:如何在子类中调用父类的方法,或属性

1.代码
1)Animal类
package org.xiji.myextends;

/**
 * 这是一个动物类
 */
public class Animal {
    private String name;
    private int age;
    

    //动物叫
    public void call(){
        System.out.println("动物叫");
    }
    public void eat(){
        System.out.println("吃东西");
    }

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

2)bird类
package org.xiji.myextends;

/**
 * 这是鸟类
 */
public class Bird extends Animal
{
    /**
     * supper  调用父类的方法  或属性
     */

    public void birdCall(){
        //调用父类的call方法
        super.call();
        //调用父类的属性,因为这里是父类私有的我们无法访问
        System.out.println("我是鸟,我的名字叫"+super.getName()+"叽叽喳喳");


    }

    public void birdName(String name){
        //调用父类的setName方法  设置动物名字
        super.setName(name);
    }
}

3)测试类
package org.xiji.myextends;

public class MyBridTest {
    public static void main(String[] args)
    {
        Bird bird = new Bird();
        bird.birdName("小黄");

        System.out.println("鸟叫");
        bird.birdCall();
    }
}

2.效果

4.final关键字

  • 用途
    • 声明常量(不可变的变量):final int MAX = 100;
    • 防止类被继承final class MyClass { ... }
    • 防止方法被重写final void myMethod() { ... }
    • 防止局部变量被修改final int x = 10;

5.抽象类

  • 定义:抽象类是不能实例化的类,通常包含一个或多个抽象方法。
  • 语法abstract class MyAbstractClass { ... }
  • 特点
    • 可以有抽象方法(没有方法体的方法)。
    • 可以有具体的方法实现。
    • 子类必须实现所有的抽象方法才能被实例化,除非子类也是抽象类。

案例:定义一个抽象类

1.代码

        

package org.xiji.myextends;

public abstract class Food {


    /**
     * 菜名
     */
    private String name;

    /**
     * 使用abstract关键字修饰可以不在本类中实现
     * 默认为抽象方法
     * 食物的类型
     */
    public abstract void foodEatStyle();

    /**
     * 菜的吃法  也是可以实现的
     */
    public  void foodEat(){
        System.out.println("正在吃食物:"+ this.name + "...");
    };
}

2.效果

6.接口

  • 定义:接口是一种完全抽象的类,它只包含方法签名,不包含方法体。
  • 语法interface MyInterface { ... }
  • 特点
    • 所有方法默认是publicabstract
    • 从Java 8开始,可以有默认方法和静态方法。
    • 一个类可以实现多个接口class MyClass implements Interface1, Interface2 { ... }

案例:定义一个接口

1)代码

1.接口
package org.xiji.myextends;

public interface MyInterface {
    /**
     * 定义抽象方法eat()
     */
    public void eat();

    /**
     * 定义抽象方法call()
     */
    public void call();

    /**
     * 接口通过  implements 关键字实现
     */
}

当我们需要实现接口是需要使用implements关键字,否则会报错,如下图

2.接口实现类
package org.xiji.myextends;

public class MyInterfaceImpl implements MyInterface{
    @Override
    public void eat() {
        System.out.println("我是鸟,吃虫子");
    }

    @Override
    public void call() {

        System.out.println("我是鸟,叽叽喳喳");
    }
}
3.测试类
package org.xiji.myextends;

public class MyIntefaceTest {
    public static void main(String[] args) {
        MyInterfaceImpl myInterface = new MyInterfaceImpl();

        myInterface.call();

        myInterface.eat();
    }
}

2)效果

7.多态

  • 定义:多态性允许你使用统一的接口来表示不同的类型。
  • 形式
    • 编译时多态(方法重载)
    • 运行时多态(方法重写)
  • 特点
    • 提供了代码的灵活性和扩展性。
    • 通过向上转型(将子类转换为父类类型)来实现。

案例:游戏接口实现类

1.代码
1)Game接口
package org.xiji.myextends.game;

/**
 * 定义游戏接口
 */
public interface Game {

    /**
     * 游戏启动
     */
    void start();


}

2)Ball
package org.xiji.myextends.game;

public class Ball implements Game{
    @Override
    public void start() {
        System.out.println("球类游戏启动");
    }
}

3)Div类
package org.xiji.myextends.game;

public class Div implements Game{
    @Override
    public void start() {
        System.out.println("自定义游戏启动");
    }
}

4)测试类
package org.xiji.myextends.game;

public class GameTest {
    public static void main(String[] args) {
        Ball ball = new Ball();

        Div div = new Div();

        div.start();

        ball.start();
    }
}

2.效果

8.对象类型的转换

  • 向上转型:自动进行,例如Parent p = new Child();
  • 向下转型:需要显式转换,例如Child c = (Child) p;
  • 安全检查:使用instanceof关键字确保转换安全。

案例:子类转换成父类

注:  

1.父类类型  名称 = new 子类类型()|| 父类类型  名称 = 子类实例
2.子类转化为父类之后,调用的方法是重写之后的方法
1.代码
package org.xiji.myextends;

public class MyTestOne {
    public static void main(String[] args) {
        //子转父类
        Cat1 cat1 = new Cat1();

        cat1.call();

        System.out.println("父类类型  名称 = new 子类类型()|| 父类类型  名称 = 子类实例");
        System.out.println("子类转换成父类");
        Animal1 animal1 = cat1;
        animal1.call();
        System.out.println("子类转化为父类之后,调用的方法是重写之后的方法");
    }

}
class  Animal1{
    public void call(){
        System.out.println("Animal call");
    }
}

class Cat1 extends Animal1{
    public void call(){
        System.out.println("猫:喵喵喵。。。。。。。");
    }
}

2.效果

案例:父类转化成子类

注:

1)父类转换成子类的实质就是  父类类型在内存中指向的子类实例对象,虽然是父类对象,但是对象引用是子类实例化对象

2) 如果是父类对象实例,则无法向下实例化

1.代码
package org.xiji.myextends;

public class MyTestTwo {
    public static void main(String[] args)
    {
        System.out.println("父类转化成子类");
        System.out.println("父类类型 名称 = 子类实例  ====> 子类类型  名称2  =  (子类类型) 父类对象");
        Animal2 animal2 = new Dog3();
        animal2.call();
        Dog3 dog3 = (Dog3) animal2;
        dog3.call();
        System.out.println("====================================================");
        System.out.println("父类转换成子类的实质就是  父类类型在内存中指向的子类实例对象,虽然是父类对象,但是对象引用是子类实例化对象");
        System.out.println("如果是父类对象实例,则无法向下实例化");
        Animal2 animal21 = new Animal2();
        Dog3  dog5 = (Dog3) animal21;
        dog5.call();
    }

}

class Animal2{
    public void call()
    {
        System.out.println("Animal call");
    }
}

class Dog3 extends Animal2{
    public void call()
    {
        System.out.println("狗的叫声:汪汪汪汪...........");
    }
}

2.效果

9.instanceof关键字

  • 用途:检查对象是否是某个类或其子类的实例。
  • 语法if (obj instanceof ClassName) { ... }
  • 对象实例化  instanceof 类(接口)

案例:使用instanceof判断类

1.代码
package org.xiji.myextends;

public class MyTestThree {
    public static void main(String[] args) {
        System.out.println("多态性");
        Ball ball = new Ball();
        ball.start();

        Cats cats = new Cats();
        cats.call();
        //使用instanceof关键字判断是否为同一类型

        if (cats instanceof Cats) {
            System.out.println("是猫");
        } else {
            System.out.println("不是猫");
        }
        if (ball instanceof Ball) {
            System.out.println("是球类游戏");
        }



    }
}


interface Game {
    void start();
}

class Ball implements Game {

    @Override
    public void start() {
        System.out.println("球类游戏开始");
    }
}

/**
 * 动物类
 */
abstract class Animals {
    public abstract void call();
}

class Cats extends Animals {

    @Override
    public void call() {
        System.out.println("猫:喵喵喵喵喵..........");
    }
}

2.效果

10.Object类

  • 定义:所有类的根类,每个类都隐式地继承自Object类。
  • 常用方法
    • toString()
    • equals(Object obj)
    • hashCode()
    • getClass()
    • clone()
    • finalize()

案例:测试一个类是否含toString和hashCode

1.代码
package org.xiji.myextends;

public class ObjectTest {
    public static void main(String[] args) {
        Cat cat = new Cat();
        System.out.println(cat.toString());
        /**
         * 判断是否属于 Object
         */
        System.out.println("判断是否属于 Object");
        System.out.println(cat instanceof Object);

        System.out.println("Object的hashCode");
        System.out.println(cat.hashCode());
        System.out.println("Object的toString");
        System.out.println(cat.toString());


    }
}

2.效果

11.成员内部类

  • 定义:定义在另一个类内部的类,可以访问外部类的所有成员
  • 语法public class OuterClass { public class InnerClass { ... } }
  • 特点
    • 拥有外部类的引用。
    • 可以访问外部类的私有成员。

案例:内部外部类相互访问

1.代码
package org.xiji.myextends;

public class MyOutAnInner {
    public static void main(String[] args) {
        Outer outer = new Outer();
        //外部类调用内部类的方法
        outer.showOutUseInner();
        //创建内部类实例 调用外部方法
        System.out.println("==================");
        Outer.Inner inner  =  outer.new Inner();

        inner.showIn();
    }
}
class Outer {
    private int m = 10;

    public void showOut()
    {
        System.out.println("外部类方法被调用");
    }

    class Inner {
        private int a = 20;

        public void showIn()
        {
            System.out.println("内部类方法被调用");
            System.out.println("内部类变量a = " + a);
            System.out.println("外部类变量a = " + m);
            showOut();
        }
    }

    public void showOutUseInner(){
        System.out.println("外部类调用内部类方法");
        Inner inner = new Inner();
        inner.showIn();
    }
}

2.效果

注:外部类创建内部类

外部类名.内部类名   名字 = new 外部类类型().new 内部类类名();

12.局部内部类

局部内部类

  • 定义:定义在方法、构造器或初始化块内的类
  • 语法void someMethod() { class LocalInnerClass { ... } }
  • 特点
    • 只能在定义它的方法或块内使用
    • 可以访问最终局部变量。

案例:局部内部类

1.代码
package org.xiji.myextends;

public class MyOutFunctionClass {
    public static void main(String[] args) {
        MyOutClass myOutClass = new MyOutClass();
        myOutClass.out();
        System.out.println("局部内部类也成为方法内部类,只能在方法中使用");
    }

}
class MyOutClass {

    public void out()
    {
        //定义方法内部类
        class MyInnerClass {

            public void inner()
            {
                System.out.println("这是内部类");
            }
        }

        MyInnerClass myInnerClass = new MyInnerClass();
        //调用方法
        myInnerClass.inner();
    }
}

2.效果

13.静态内部类

  • 定义:使用static修饰符的内部类,不依赖于外部类的实例。
  • 语法public class OuterClass { public static class StaticNestedClass { ... } }
  • 特点
    • 可以直接通过外部类名访问。
    • 不能访问外部类的非静态成员
    • 静态内部类访问外部静态成员  可以是方法或属性

案例:静态内部类

1.代码
package org.xiji.myextends;

public class MyInnerStaticClass {
    public static void main(String[] args) {
        MyOuter.MyInner inner = new MyOuter.MyInner();
        inner.print();
    }
}
class MyOuter{
    static String name = "Outer";

    //静态内部类
    static class MyInner{
        /**
         * 通过内部静态类访问外部静态属性
         */
        public void print(){
            System.out.println("MyOuter.name = " + name);
        }
    }
}

2.效果

14.匿名内部类

  • 定义:没有名字的内部类,通常用于创建一次性使用的类实例。
  • 语法new SomeInterface() { ... }
  • 特点
    • 只能继承一个父类或实现一个接口。
    • 不能有构造方法。

案例:匿名内部类

注:本质

        方法中传递的参数是接口类型,必要要实现接口,才能完成调用

1.代码
package org.xiji.myextends;

public class MyUnNameClass {
    public static void main(String[] args) {
        test(new Catss() {
            @Override
            public void call() {
                System.out.println("我是匿名内部类");
                System.out.println("喵喵喵");
            }
        });
    }

    public static void test(Catss catss) {

        catss.call();
    }
}

interface Catss{
    void call();
}

2.效果

15.try..catch和finally

  • 用途:处理程序运行过程中可能出现的异常。
  • 语法
    • try {
          // 可能抛出异常的代码
      } catch (ExceptionType1 e1) {
          // 处理ExceptionType1
      } catch (ExceptionType2 e2) {
          // 处理ExceptionType2
      } finally {
          // 无论是否发生异常都会执行的代码
      }

    案例:处理0/1异常

  • 1.代码
    • package org.xiji.myextends;
      
      public class MyZero {
          public static void main(String[] args) {
      
              try {
                  System.out.println(1/0);
                  System.out.println("我被执行了");
              } catch (Exception e) {
                  System.out.println("catch被执行了");
                  System.out.println(e);
              }
              finally {
                  System.out.println("finally被执行了");
              }
          }
      }
      

2.效果

16.throws关键字

  • 用途:声明方法可能抛出的异常。
  • 语法public void someMethod() throws ExceptionType { ... }

public static void test () throws Exception

案例:1/0异常抛出

1.代码
package org.xiji.myextends;

public class MyZeroByThrow {
    public static void main (String[] args) throws Exception {
        test();

    }
    public static void test () throws Exception
    {
        System.out.println(1/0);
    }
}

2.效果

17.自定义异常类

  • 定义:继承自Exception或其子类,用于创建特定业务逻辑的异常。
  • 语法
    • public class MyCustomException extends Exception {
          public MyCustomException(String message) {
              super(message);
          }
      }

  • 特点
    • 可以携带额外的信息。
    • 可以有特定的处理逻辑。

注:通过throw关键子抛出自定义异常

案例:自定义1/0异常处理

1.代码
package org.xiji.myextends.ex;

public class Test {
    public static void main(String[] args) throws MyZeroEx {

        try {
            System.out.println(1 / 0);
        } catch (Exception e) {
            throw new MyZeroEx("这是我的自定义的异常");
        }
        finally {
            System.out.println("finally被执行了");
        }

    }
}

2.效果

在途中可以看到自定义的异常被执行了

.

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

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

相关文章

如何使用 Puppeteer 和 Browserless 运行自动化测试?

Puppeteer:什么是 Puppeteer 及其功能 Puppeteer 是一个 Node.js 库。使用 Puppeteer,您可以在所有基于 Chromium 的浏览器上测试您的网站,包括 Chrome、Microsoft Edge Chrome 和 Chromium。此外,Puppeteer 可用于网页抓取、自动…

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器

您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件,而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档,无论相关方…

电脑端视频通过PCIE到FPGA端转UDP网络视频输出,基于XDMA+PHY芯片架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我这里已有的以太网方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存UDP视频组包发送UDP协议栈MAC数据缓冲FIFO组Tri Mode E…

基于php+uniapp微信小程序的电子书阅读系统snxr5

目录 项目介绍技术栈和环境说明具体实现截图php技术介绍文件解析微信开发者工具HBuilderXuniapp开发技术简介解决的思路性能/安全/负载方面数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 项目介绍 (1)用户在安卓APP页面…

微信小程序启动不起来,报错凡是以~/包名/*.js路径的文件,都找不到,试过网上一切方法,最终居然这么解决的,【避坑】命运的齿轮开始转动

app.json "resolveAlias": {"~/*": "/*"},文件代码也没有问题,网上的方法试过来了,大模型AI也问过遍,熬夜到凌晨2点半,最不可思议的是居然是因为微信开发者工具版本的问题,我真的是笑死…

深入了解Oracle OCP认证,开启数据库专业之旅

使用Oracle数据库的公司内部,经常有员工们在讨论OCP认证(Oracle Certified Professional,Oracle认证专家),这是甲骨文Oracle公司提供的一种专业认证,认证用于使用者在Oracle技术领域的专业知识和技能。 在这里,有一点…

Qt小bug — LINK : fatal error LNK1158: 无法运行“rc.exe“

Qt小bug —— LINK :fatal error LNK1158:无法运行"rc.exe" 环境 Qt 5.14.2 MSVC 2015 x64 现象 解决 在电脑上找到rc.exe 和rcdll.dll (一般在C:\Program Files(x86)\Windows Kits*\bin\x64下面)拷贝到 C:\Qt\Qt5…

高并发 - 1.进程和线程

1.进程 1.基本概念 1.进程(Process):程序的一次启动执行(程序在执行过程中分配和管理资源的基本单位,操作系统资源分配的最小单位)2.程序:存放在硬盘中的可执行文件,主要包括代码指令和数据3.一个进程是一个…

常见的负载均衡

1.常见的负载均衡服务 负载均衡服务是分布式系统中用于分配网络流量和请求的关键组件,它可以帮助提高应用程序的可用性、可扩展性和响应速度。以下是一些常用的负载均衡服务: Nginx:一个高性能的Web服务器和反向代理,广泛用于实现…

【基于YOLOv5的反光衣检测预警系统】可检测图片、视频、摄像头,支持GPU加速检测以及语音播报预警

文章目录 演示视频系统界面项目环境系统界面功能项目框架介绍项目代码获取 ➷点击跳转至文末完整项目代码下载处☇ 演示视频 【基于YOLOv5的反光衣检测预警系统】可检测图片、视频、摄像头,支持GPU加速检测以及语音播报预警 系统界面 项目环境 项目运行所需环境为…

机器学习可视化教程——混淆矩阵与回归图

机器学习可视化教程——混淆矩阵与回归图 关于作者 作者:小白熊 作者简介:精通python、matlab、c#语言,擅长机器学习,深度学习,机器视觉,目标检测,图像分类,姿态识别,语…

大模型从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs):基础知识!

LangChain系列文章: 基础知识快速入门 安装与环境配置链(Chains)、代理(Agent:)和记忆(Memory)快速开发聊天模型 模型(Models) 基础知识大型语言模型(LLMs&a…

MATLAB APPdesigner中的日期选择器怎样实时显示时间

文章目录 1.问题描述2.代码设置代码示例解释 1.问题描述 我们在做MATLAB的时候,一般需要在APP界面中加上时间显示,像下图中的右上角,在组件中有日期选择器,但是这个并不是实时显示的,我们还需要自己进行设置。 2.代码…

python pyinstaller打包exe遇到报错:RuntimeError: input(): lost sys.stdin

在使用python中的pyinstaller命令打包exe遇到报错:RuntimeError: input(): lost sys.stdin 一、问题复现 import datetimedef record_log():project_name = input("请输入项目名称:")l

毕设分享 基于python的搜索引擎设计与实现

文章目录 0 简介1 课题简介2 系统设计实现2.1 总体设计2.2 搜索关键流程2.3 推荐算法2.4 数据流的实现 3 实现细节3.1 系统架构3.2 爬取大量网页数据3.3 中文分词3.4 相关度排序第1个排名算法:根据单词位置进行评分的函数第2个排名算法:根据单词频度进行…

硬件开发笔记(三十一):TPS54331电源设计(四):PCB布板12V转5V电路、12V转3.0V和12V转4V电路

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/142757509 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿&…

Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式

单机模式 单机模式是Hadoop最简单的运行模式。在单机模式下,所有Hadoop组件都运行在单个机器上,包括HDFS、MapReduce等。由于只有一个节点参与计算,单机模式适用于开发和测试阶段,不适合用于处理大规模数据。在单机模式下&#xf…

IDE启动失败

报错:Cannot connect to already running IDE instance. Exception: Process 24,264 is still running 翻译:无法连接到已运行的IDE实例。异常:进程24,264仍在运行 打开任务管理器,找到PID为24264的CPU线程,强行结束即可。 【Ct…

国内知名人工智能AI大模型专家培训讲师唐兴通讲授AI办公应用人工智能在营销与销售过程中如何应用数字化赋能

AI如火如荼,对商业与社会影响很大。 目前企业广泛应用主要是在营销、销售方向,提升办公效率等方向。 从喧嚣的AI导入营销与销售初步阶段,那么当下,领先的组织与个人现在正在做什么呢? 如何让人性注入冷冰冰的AI&…