(day7) 自学Java——面向对象进阶

news2024/10/6 6:50:24

目录

1.static静态变量

​编辑

2.继承

​编辑

3.多态

4.包、final、权限修饰符、代码块

5.抽象类

6.接口

7.内部类


非原创,为方便自己后期复习

1.static静态变量

5dc8d4580b2249e868d0796231cfaac8.png

静态存储位置的数据是共享的

948c641f9516e4111510c41f16b3da8f.png

b17e30daec65b12a6c22c7e1c1ed6c25.png

0c8bc5fe5ece8d7388088e4420505128.png

练习:定义数组工具类

需求:在实际开发中,经常会遇到一些数组使用的工具类。

请按照如下要求编写一个数组的工具类:ArrayUtil

·提供一个工具类方法printArr,用于返回整数数组的内容。

返回的字符串格式如:[10,20,50,34,100](只考虑整数数组,且只考虑一维数组)

·提供这样一个工具方法getAerage,用于返回平均分。(只考虑浮点型数组,且只考虑一维数组)

·定义一个测试类TestDemo,调用该工具类的工具方法,并返回结果。

public class ArrayUtil {
    private ArrayUtil(){}
    public static String printArr(int[]arr) {
        StringBuilder sb=new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i==arr.length-1){
                sb.append(arr[i]);
            }
            else {
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String result=sb.toString();
        return result;
    }

    public static double getAerage(double[]arr) {
        double result=0;
        for (int i = 0; i < arr.length; i++) {
            result=result+arr[i];
        }
        double result1=result/arr.length;
        return result1;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        int[]arr={1,2,3,4,5,6,7};
        double[]arr1={1.1,2.3,3.4,6.5,7.5};
        String result=ArrayUtil.printArr(arr);
        double result1=ArrayUtil.getAerage(arr1);
        System.out.println(result);
        System.out.println(result1);
    }
}

练习:定义学生工具类

需求:定义一个集合,用于存储3个学生对象。学生类的属性为:name、age、gender。

定义一个工具类,用于获取集合中最大学生的年龄。

//学生类
public class Student {
   private String name;
   private int age;
   private String gender;

    public Student() {
    }

    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    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;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
}
//工具类
import java.util.ArrayList;

public class StudentUtil {
    private  StudentUtil(){}

    public static int getMaxAge(ArrayList<Student> list) {
        int max=list.get(0).getAge();
        for (int i = 1; i < list.size(); i++) {
            int age=list.get(i).getAge();
            if (max<age){
                max=age;
            }
        }
        return max;
    }
}
//测试类
import java.util.ArrayList;

public class TestDemo {
    public static void main(String[] args) {
        ArrayList<Student> list=new ArrayList<>();
        Student s1=new Student("张三",20,"男");
        Student s2=new Student("李四",21,"男");
        Student s3=new Student("王五",22,"男");
        list.add(s1);
        list.add(s2);
        list.add(s3);
        int result=StudentUtil.getMaxAge(list);
        System.out.println(result);
    }
}

static注意事项:

2.继承

0966b7c1b98377f9f220e65e0d3c81d2.pngb1cfd56e81ba1078eb25502b5b32e8f0.png

练习:继承的练习(自己设计一个继承体系)

现在有四种动物:布偶猫、中国狸花猫、哈士奇、泰迪。

暂时不考虑属性,只要考虑行为。请按照继承的思想特点进行继承体系的设计。

四种动物分别有以下的行为:

·布偶猫:吃饭、喝水、抓老鼠

·中国狸花猫:吃饭、喝水、抓老鼠

·哈士奇:吃饭、喝水、看家、拆家

·泰迪:吃饭、喝水、看家、蹭一蹭

 678acedfc9cc5bbe912ad30d347e6718.png

public class Animal {
    public  void eat() {
        System.out.println("吃饭");
    }
    public  void drinkWater() {
        System.out.println("喝水");
    }
}

public class Cat extends Animal{
    public void catchMouse(){
        System.out.println("猫在抓老鼠");
    }
}

public class Dog extends Animal{
    public void protectHome(){
        System.out.println("狗在看家");
    }
}

public class Ragdoll extends Cat{

}
public class LiHua extends Cat{
}

public class Husky extends Dog{
    public void breakHome(){
        System.out.println("哈士奇在拆家");
    }
}
public class Teddy extends Dog{
    public void touch(){
        System.out.println("泰迪蹭一蹭");
    }
}

成员变量无论是否私有,都可以继承父类,但是不能被调用(不能使用)。

如果想使用,需要用相应的get,set方法。

练习:利用方法的重写设计继承结构

现在有三种动物:哈士奇、沙皮狗、中华田园犬暂时不考虑属性,只要考虑行为。

请按照继承的思想特点进行继承体系的设计。三种动物分别有以下的行为:

哈士奇:吃饭(吃狗粮)、喝水、 看家、拆家

沙皮狗:吃饭(吃狗粮、吃骨头)、喝水、看家

中华田园犬:吃饭(吃剩饭)、喝水、 看家

public class Dog {
    public void protectHome(){
        System.out.println("看家");
    }
    public void eat(){
        System.out.println("吃狗粮");
    }
    public void drinkWater(){
        System.out.println("喝水");
    }
}

public class Husky extends Dog{
    public void breakHome(){
        System.out.println("哈士奇在拆家");
    }
}

public class SharPei extends Dog{
   //父类中的方法已经不满足需求了,所以方法重写
    @Override
    public void eat() {
        super.eat();
        System.out.println("沙皮狗吃骨头");
    }
}

public class ChineseDog extends Dog{
    //父类中的方法已经不满足需求了,所以方法重写
    @Override
    public void eat() {
        System.out.println("中华田园犬吃剩饭");
    }
}

//测试类
public class Test {
    public static void main(String[] args) {
        //创建对象并调用方法
        ChineseDog cd=new ChineseDog();
        cd.eat();
        Husky hs=new Husky();
        hs.eat();
        hs.breakHome();
        SharPei sp=new SharPei();
        sp.eat();
        sp.protectHome();
    }
}

 

 访问本类构造方法的使用场景:需要设置默认值的时候。

 练习:带有继承结构的标准Javabean类

1.经理:成员变量:工号、姓名、工资、管理资金;成员方法:工作(管理其他人)、吃饭(吃白米饭)

2.厨师:成员变量:工号、姓名、工资;成员方法:工作(炒菜)、吃饭(吃米饭)

//员工类
public class Employe {
    private int workId;
    private String name;
    private double salary;

    public Employe() {
    }

    public Employe(int workId, String name, double salary) {
        this.workId = workId;
        this.name = name;
        this.salary = salary;
    }

    public int getWorkId() {
        return workId;
    }

    public void setWorkId(int workId) {
        this.workId = workId;
    }

    public String getName() {
        return name;
    }

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

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    //工作
    public void work(){
        System.out.println("正在工作");
    }
    //吃饭
    public void eat(){
        System.out.println("正在吃饭");
    }
}
//经理类
public class Managers extends Employe{
    private double bonus;

    public Managers() {
    }

    public Managers(int workId, String name, double salary) {
        super(workId, name, salary);
    }

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }
    //方法重写

    @Override
    public void work() {
        System.out.println("经理在管理其他人");
    }
}
//厨师类
public class Cook extends Employe{
    public Cook() {
    }

    public Cook(int workId, String name, double salary) {
        super(workId, name, salary);
    }

    //方法重写

    @Override
    public void work() {
        System.out.println("厨师在炒菜");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        //创建对象并调用方法
        Managers m=new Managers(1,"张三",8000);
        m.setBonus(10000000);
        System.out.println(m.getWorkId()+"\t"+m.getName()+"\t"+m.getSalary()+"\t"+m.getBonus());
        m.eat();

        Cook c=new Cook(2,"李四",4000);
        System.out.println(c.getWorkId()+"\t"+c.getName()+"\t"+c.getSalary());
        c.work();
        c.eat();

    }
}

3.多态

 

方法区,会先加载父类Animal,再加载子类Dog

多态的弊端: 不能使用子类的特有功能。如果要用,需要转换类型。

解决方法:进行类型转换

练习:根据需求完成代码

1.定义狗类

属性:年龄,颜色

行为:eat(String something)(something表示吃的东西) 看家lookHome方法(无参数)

2.定义猫类

属性:年龄,颜色

行为:eat(String something)方法(something表示吃的东西) 逮老鼠catchMouse方法(无参数)

3.定义Person类//饲养员

属性:姓名,年龄

行为:keepPet(Dog dog,String something)方法

功能:喂养宠物狗,something表示喂养的东西行为:

keepPet(Cat cat,String something)方法

功能:喂养宠物猫,something表示喂养的东西。

生成空参有参构造,set和get方法

4.定义测试类(完成以下打印效果):

keepPet(Dog dog,String somethind)方法打印内容如下:

年龄为30岁的老王养了一只黑颜色的2岁的狗

2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃

keepPet(Cat cat,String somethind)方法打印内容如下:

年龄为25岁的老李养了一只灰颜色的3岁的猫

3岁的灰颜色的猫眯着眼睛侧着头吃鱼

5.思考:

1.Dog和Cat都是Animal的子类,以上案例中针对不同的动物,定义了不同的keepPet方法,过于繁琐,能否简化,并体会简化后的好处?

2.Dog和Cat虽然都是Animal的子类,但是都有其特有方法,能否想办法在keepPet中调用特有方法?

//动物类
public class Animal {
    private int age;
    private String colour;

    public Animal() {
    }

    public int getAge() {
        return age;
    }

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

    public String getColour() {
        return colour;
    }

    public void setColour(String colour) {
        this.colour = colour;
    }

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

    public void eat(String something){
        System.out.println("动物在吃");
    }
}
//狗类
public class Dog extends Animal{
    public void lookHome(){
        System.out.println("看家");
    }

    public Dog() {
    }

    public Dog(int age, String colour) {
        super(age, colour);
    }

    @Override
    public void eat(String something) {
        System.out.println(getAge()+"岁的"+getColour()+"颜色的狗两只前腿死死的抱住"+something+"猛吃");
    }
}
//猫类
public class Cat extends Animal{
    public Cat() {
    }
    public Cat(int age, String colour) {
        super(age, colour);
    }

    public void catchMouse(){
        System.out.println("抓老鼠");
    }

    @Override
    public void eat(String something) {
        System.out.println(getAge()+"岁的"+getColour()+"颜色的猫眯着眼睛侧着头吃"+something);
    }
}
//饲养员类
public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(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;
    }

//    public void keepPet(Dog dog, String something){
//        System.out.println("年龄为"+getAge()+"岁的"+getName()+"养了一只"+dog.getColour()+"颜色的"+dog.getAge()+"岁的狗");
//        dog.eat(something);
//    }
//    public void keepPet(Cat cat,String something){
//        System.out.println("年龄为"+getAge()+"岁的"+getName()+"养了一只"+cat.getColour()+"颜色的"+cat.getAge()+"岁的猫");
//        cat.eat(something);
//    }
    //用多态实现以上代码
    public void keepPet(Animal a, String something) {
        if (a instanceof Dog) {
            Dog d = ((Dog) a);
            System.out.println("年龄为" + getAge() + "岁的" + getName() + "养了一只" + d.getColour() + "颜色的" + d.getAge() + "岁的狗");
            d.eat(something);
        }else if (a instanceof Cat){
            Cat c=((Cat)a);
            System.out.println("年龄为"+getAge()+"岁的"+getName()+"养了一只"+c.getColour()+"颜色的"+c.getAge()+"岁的猫");
            c.eat(something);
        }
    }
    }
//测试类
public class Test {
    public static void main(String[] args) {
        //创建对象并调用方法
//        Dog ad=new Dog(2,"黑");
//        Person p1=new Person("老王",30);
//        p1.keepPet(ad,"骨头");
//
//        Cat ac=new Cat(3,"灰");
//        Person p2=new Person("老李",25);
//        p2.keepPet(ac,"鱼");

        Animal ad=new Dog(2,"黑");
        Person p1=new Person("老王",30);
        p1.keepPet(ad,"骨头");

        Animal ac=new Cat(3,"灰");
        Person p2=new Person("老李",25);
        p2.keepPet(ac,"鱼");

    }
}

4.包、final、权限修饰符、代码块

 

5.抽象类

一个方法抽取到父类中,不确定方法体,用abstract关键字修饰(抽象方法),子类会被强制重写,否则就直接报错。抽象方法所在的类,就是抽象类。

练习:编写带有抽象类的标准Javabean类

青蛙frog                属性:名字、年龄        行为:吃虫子、喝水

狗Dog                   属性:名字、年龄        行为:吃骨头、喝水

山羊Sheep           属性:名字、年龄        行为:吃草、喝水

//动物类(父类)
public abstract class Animal {
    private int age;
    private String name;

    public Animal() {
    }

    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

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

    public abstract void eat();
    public void drinkWater(){
        System.out.println("动物在喝水");
    };
}
//青蛙类
public  class Frog extends Animal{
    public Frog() {
    }

    public Frog(int age, String name) {
        super(age, name);
    }

    @Override
    public void eat() {
        System.out.println("青蛙吃虫子");
    }
}
//狗类
public class Dog extends Animal{
    public Dog() {
    }
    public Dog(int age, String name) {
        super(age, name);
    }

    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}
//山羊类
public class Sheep extends Animal{
    public Sheep() {
    }

    public Sheep(int age, String name) {
        super(age, name);
    }

    @Override
    public void eat() {
        System.out.println("山羊吃草");
    }
}

6.接口

接口是对行为的抽取

练习:编写带有接口和抽象类的标准Javabean类

我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。

请用所有知识分析,在这个案例中,哪些是具体类,哪些是抽象类,哪些是接口?

乒乓球运动员:姓名,年龄,学打乒乓球,说英语

篮球运动员:姓名,年龄,学打篮球

乒乓球教练:姓名,年龄,教打乒乓球,说英语

篮球教练:姓名,年龄,教打篮球

思路一:

 思路二:

//people类
package Test1;
//把people类写成抽象类。
// 因为直接创建把顶层父类的对象此时没有意义,所以写成抽象的
public abstract class People {
    private String name;
    private int age;

    public People() {
    }
    public People(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;
    }
}
//运动员类
public abstract class Athlete extends People{
    public abstract void study();
}
//乒乓球运动员类
public class PingPongAthlete extends Athlete implements SpeakEnglish{
    @Override
    public void study() {
        System.out.println("学打乒乓球");
    }

    @Override
    public void speak() {
        System.out.println("乒乓球运动员说英语");
    }
}
//篮球运动员类
public class BasketballAthlete extends Athlete{
    @Override
    public void study() {
        System.out.println("学打蓝球");
    }
}
//教练类
public abstract class Coach extends People{
    public abstract void teach();
}
//乒乓球教练类
public class PingPongCoach extends Coach implements SpeakEnglish{
    @Override
    public void teach() {
        System.out.println("教打乒乓球");
    }

    @Override
    public void speak() {
        System.out.println("乒乓球教练说英语");
    }
}
//蓝球教练类
public class BasketballCoach extends Coach{
    @Override
    public void teach() {
        System.out.println("教打蓝球");
    }
}
//说英语的接口
public interface SpeakEnglish {
    public abstract void speak();
}
//测试类
public class Test {
    public static void main(String[] args) {
        PingPongAthlete pp=new PingPongAthlete();
        pp.setAge(15);
        pp.setName("kinkin");
        System.out.println(pp.getAge()+","+pp.getName());
        pp.study();
        pp.speak();
        BasketballCoach bc=new BasketballCoach();
        bc.setAge(40);
        bc.setName("krit");
        System.out.println(bc.getAge()+","+bc.getName());
        bc.teach();
    }
}

7.内部类

 

 

在堆内存中,先创建外部类的空间,再创建内部类空间

outer.this获取了外部类对象的地址值

 new Outer.Inner()

new 的是Outer里的inner对象

局部内部类,跟局部变量相似

紫色框内是一个没有名字的类,Swim接口跟这个类是实现关系,new的是紫色框内的对象,()说明是空参构造

紫色框内是一个没有名字的类,Animal跟这个类是继承关系,Animal是这个类的父类,new的是紫色框内的对象,()说明是空参构造  

 method里面new Animal......的内容,可以看成是Animal的一个子类对象。

应用场景:使用某个类,只使用一次,单独定义一个类太麻烦,用匿名内部类的方法,可以简化代码。

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

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

相关文章

深度卷积对抗神经网络 基础 第二部分 DC-GANs

深度卷积对抗神经网络 基础 第二部分 DC-GANs DC-GANs &#xff08;DC-GANs Deep convolutional GAN&#xff09;是基于GANs的一种专门对图片生成的一种模型&#xff0c;其通过卷积操作来进行图片的一些基本操作来实现模型的功能。 激活函数 Activations 激活函数是任何输入…

代码随想录--哈希表章节总结

代码随想录–哈希表章节总结 1. LeetCode242 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 示例 1: 输入: s &quo…

高德地图红绿灯读秒是怎么实现的?(二)

通过上一篇高德官方回复&#xff0c;以及一些科技大佬们的脑回路&#xff0c;做了一些简单的回复&#xff1b; 这次好好的从个人研究观点来阐述一下这个论题 目前有两种说法&#xff0c;一种说是靠大数据分析&#xff0c;一种说是靠交管部门数据。 从个人的研究来看&#xff0…

socket 2---TCP编程

目录 一、TCP编程流程 二、函数接口 2.1、监听接口 2.2、发起连接 connect 2.3、接收新连接 accept 2.4、收发接口 三、代码实现 问题&#xff1a; 要是创建多个客户端的话会怎么样呢&#xff1f; 那么怎么去真正解决这个问题呢&#xff1f; 一、TCP编程流程 这里…

数据结构与算法基础(王卓)(9):线性表的应用(有序表合并)(有序,可重复)

PPT&#xff1a;第二章P176&#xff1b; 合并为一个新的整体&#xff1a;有序表的合并&#xff08;有序&#xff0c;可重复&#xff09; 线性表&#xff1a; 对于该操作的具体实现的流程设计&#xff1a;&#xff08;各模块&#xff09; 创建一个空表C 依次从A或B(中&#…

移动云国产商用密码规模化应用

前言 为深入贯彻落实《密码法》&#xff0c;推动商用密码技术在工业和信息化行业领域的融合应用&#xff0c;工业和信息化部密码应用研究中心组织开展了“首届全国商用密码应用优秀案例征集”工作&#xff0c;并评审选出15项优秀案例。 同时&#xff0c;为持久发挥本次活动的…

CSAPP笔记

目录 第一章 一个典型的硬件组成 从键盘上读取hello指令​编辑 存储器结构示例 相对性能公式 计算机系统抽象 第二章--信息的表示和处理 按位 & | ^ ~ 与逻辑运算 && || 逻辑右移和算术右移 左移 定义计算机如何编码和操作整数的数学定义 补码编码的定义 补码…

【JavaWeb】前端开发三剑客之CSS(上)

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:CSS从零开始学习&#xff01; &#x1f680;&#x1f680;代码托管平台github&#xff1a;JavaWeb代码存放仓库&#xff01; ⛵⛵作…

擎创动态 | 官宣!与深智城集团正式签约

近日&#xff0c;上海擎创信息技术有限公司与深圳市智慧城市科技发展集团有限公司&#xff08;以下简称“深智城集团”&#xff09;就“一体化协同办公平台项目”达成战略合作&#xff0c;签约仪式已圆满完成。 ​深智城集团副总经理罗介平、智城软件公司常务副总经理韩小宇、智…

android 读取assets配置文件

方法1-getAssets().open(“re.properties”) try {Properties props new Properties();props.load(getAssets().open("re.properties"));Log.e(TAG, "className:" props.getProperty("className"));} catch (IOException e) {e.printStackTrace…

支持加密的日记应用程序DailyTxT

本文完成于 12 月下旬&#xff0c;对应的版本为 1.0.10(2022_11_02)&#xff1b; 什么是 DailyTxT &#xff1f; DailyTxT 是一个加密的 Web 日记应用程序&#xff0c;用于写下您当天的故事并轻松地再次找到它们。它是用 Python Flask&#xff08;后端&#xff09;和 Vue.JS&am…

23种设计模式(十二)——外观模式【接口隔离】

外观模式 文章目录 外观模式意图什么时候使用外观真实世界类比外观模式的实现外观模式的优缺点亦称:Facade 意图 外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容…

一直以来,人们都在探索互联网赋能实体的正确的途径和逻辑

一直以来&#xff0c;人们都在寻找互联网回归实体的正确的方式和方法&#xff1b;一直以来&#xff0c;人们都在探索互联网赋能实体的正确的途径和逻辑。然而&#xff0c;互联网似乎始终都游离于产业之外&#xff0c;似乎始终都超脱于产业之上。尽管经历了PC时代和移动互联网时…

分支预测详解

分支预测用于在微处理器中以流水线效率为目标来预测程序流。有许多方法来实现分支预测&#xff0c;通常在更好的预测结果和增加硬件做预测之间需要进行权衡。 目录 分支预测简介 静态分支预测 动态分支预测 启动分支预测 分支预测简介 要了解分支预测器&#xff0c;就不得…

QT当类有多个不同类型的同名信号时如何处理QOverload?

我们在设计类的信号时也许也会像设计类方法一样&#xff0c;给予多种不同参数类型的重载版本&#xff0c;这样一来我们就可以应对不同类型的参数输入或者输出。 但我们在使用有重载的信号版本时就不那么方便了&#xff0c;QT系统没有那么智能&#xff0c;不会自动匹配&#xff…

【实操案例三】进制转换、异常捕获、输出颜色设置、格式化字符串的设置等实例代码及运行效果图!

任务一&#xff1a;将指定的十进制数转换成二进制、八进制、十六进制 # 任务一&#xff1a;将指定的十进制数转换成二进制、八进制、十六进制 def fun():numint(input(请输入一个十进制整数&#xff1a;))print(num,的二进制数为&#xff1a;,bin(num)) # 第一种写法&#xff…

网线交叉、直连区别

欢迎来到东用知识小课堂&#xff01;一.网线常识网线常用的有&#xff1a;双绞线、同轴电缆、光纤等。双绞线可按其是否外加金属网丝套的屏蔽层而区分为屏蔽双绞线&#xff08;STP&#xff09;和非屏蔽双绞线&#xff08;UTP&#xff09;。从性价比和可维护性出发&#xff0c;大…

golang语言websocket百万长链接

是简单demo测试 前端 <html> <head><title>Simple client</title><script type"text/javascript">var ws;function init() {// Connect to Web Socketws new WebSocket("ws://localhost:8866/ws");// Set event handlers…

联合证券|再创纪录,外资狂买超1000亿!券商、期货板块持续活跃

A股今天全线上扬&#xff0c;沪指小幅走高&#xff0c;创业板、科创50指数体现强势&#xff1b;港股走势疲弱&#xff0c;恒生科技指数一度跌超2%。 详细来看&#xff0c;两市股指盘中震动上扬&#xff0c;午后全线走高&#xff0c;创业板指、科创50指数涨超1%&#xff1b;到收…

PCB板缺陷检测识别系统 YOLOv7

PCB板缺陷检测识别系统通过YOLOv7网络深度学习技术&#xff0c;对现场PCB是否存在缺陷部分进行实时分析检测&#xff0c;当检测到PCB本身存在缺陷的时候&#xff0c;立即抓拍存档告警方便后期针对性的进行调整改。YOLO系列算法是一类典型的one-stage目标检测算法&#xff0c;其…