day10:抽象方法、抽象类、接口、类与接口、接口与接口、内部类
一 回顾
1.继承中访问成员方法的特点:重名:优先访问子类 不重名:优先方法子类 没有则向上查找方法重载: 同一一个类 方法名相同 参数不同 与返回值类型无关方法重写: 在继承中 方法名相同 参数相同 与返回值与访问修饰符有关 2.继承好处:高扩展性 高可复用性 避免大量的冗余的代码耦合度比较高 低耦合 高内聚 3.多态概念:一个事物或者一个对象 多种形态访问成员变量特点: 编译看左边 运行看左边访问成员方法特点:编译看左边 运行看右边多态向上转型:语法:父类的类名 对象名 = new 子类的类名()问题:不能调用子类独有方法多态向下转型:语法:子类的类名 对象名 =(需要转换的数据类型)父类对象的引用问题:强制类型转换错误 多态两种体现: 以父类作为方法参数 以父类作为方法的返回值多态好处:与继承类似4.包:作用:用于管理与分类源文件 文件夹组成:A.域名+公司的名称+项目的名称+包的含义B.全部小写字母C.不同的包名使用.分割声明包: package 声明包 idea 自动声明导包 import 包名+类名 A.使用不同包下的类就需要进行导包B.使用同包下的类不需要进行导包 使用java.lang 包下的类都不需要进行导包5.final 最终 最后修饰成员变量:修饰变量是常量 只能赋值一次方法:不能被重写类:不能被继承6.访问修饰符: 需要对外提供访问使用public 不需要提供对外方法使用private如果不想其它类实例化对象 使用私有的构造7.代码块:局部代码 构造代码块 静态代码块(重点)
二 作业1
step01 需求
step02 分析
step03 -父类
package com.qf.work01; public class Animal { public void eat(){ } public void sleep(){ } }
step04 子类
package com.qf.work01; public class Rabbit extends Animal {@Overridepublic void eat() {System.out.println("吃草");} }
step05 子类
package com.qf.work01; public class Tiger extends Animal {@Overridepublic void eat() {System.out.println("吃肉");} }
step06 测试类
package com.qf.work01; /*父类: Animal 类 eat sleep子类: Tiger Rabbit 重写这个方法测试类进行测试*/ public class Test { public static void main(String[] args) {//使用多态实例化对象Animal a = new Rabbit();a.eat();Animal a1 = new Tiger();a1.eat();} }
三 作业2
step01 需求
step02 分析
step03 父类-代码
package com.qf.work02; public class Pet {private String name;private int love;private int health; public Pet() {} public Pet(String name, int love, int health) {this.name = name;this.love = love;this.health = health;} public String getName() {return name;} public void setName(String name) {this.name = name;} public int getLove() {return love;} public void setLove(int love) {this.love = love;} public int getHealth() {return health;} public void setHealth(int health) {this.health = health;} public void print(){System.out.println(name+"\t"+love +"\t"+health);} }
step04 子类
package com.qf.work02; public class Dog extends Pet {private String kind; public Dog() {} public Dog(String name, int love, int health, String kind) {super(name, love, health);//给父类的成员变量进行赋值this.kind = kind;} public String getKind() {return kind;} public void setKind(String kind) {this.kind = kind;} @Overridepublic void print() {super.print(); //调用父类的方法System.out.println(kind);} }
step05 子类
package com.qf.work02; public class Penguin extends Pet {private String sex; public Penguin() {} public Penguin(String name, int love, int health, String sex) {super(name, love, health);this.sex = sex;} public String getSex() {return sex;} public void setSex(String sex) {this.sex = sex;} @Overridepublic void print() {super.print();System.out.println(sex);} }
step06 测试类
package com.qf.work02;public class Test {public static void main(String[] args) {//实例化狗类Pet p = new Dog("欧欧",100,80,"泰迪");p.print();//实例化企鹅类Pet p1 = new Penguin("qq",100,70,"q妹");p1.print();} }
四 作业3
step01 需求
step02 分析
step03 父类-代码
package com.qf.work03;public class Poultry {private String name;private String symptom;private int age;private String illness;public Poultry() {}public Poultry(String name, String symptom, int age, String illness) {this.name = name;this.symptom = symptom;this.age = age;this.illness = illness;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSymptom() {return symptom;}public void setSymptom(String symptom) {this.symptom = symptom;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getIllness() {return illness;}public void setIllness(String illness) {this.illness = illness;}public void showSymptom(){}}
step04 子类
package com.qf.work03;public class Duck extends Poultry{public Duck() {}public Duck(String name, String symptom, int age, String illness) {super(name, symptom, age, illness);}@Overridepublic void showSymptom() {System.out.println("压力大"+super.getName() +"\t"+super.getSymptom()+"\t"+super.getAge()+"\t"+super.getIllness());} }
step05 测试类
package com.qf.work03;public class Test {public static void main(String[] args) {//使用多态实例化对象Poultry p = new Duck("小黄鸭","肾虚",1,"六味地黄丸");p.showSymptom();} }
五 作业4
step01 需求
step02 分析
step03 代码
package com.qf.work04;public class Auto {private String brand;private double length;private double price;public Auto() {}public Auto(String brand, double length, double price) {this.brand = brand;this.length = length;this.price = price;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public double getLength() {return length;}public void setLength(double length) {this.length = length;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String pay(){return "";} }
step04 代码
package com.qf.work04;public class SUV extends Auto {public SUV() {}public SUV(String brand, double length, double price) {super(brand, length, price);}public String pay(){double length = super.getLength();if (length >4295 && length <=5070){return "SUV中型车";}return "";} }
step05 代码
package com.qf.work04;public class Test {public static void main(String[] args) {Auto [] autos = new Auto[3];autos[0]=new SUV("宝马",3,20000);autos[1]=new SUV("奔驰",5000,20000);autos[2]=new SUV("奥迪",4040,20000);for (int i=0;i<autos.length;i++){System.out.println(autos[i].pay());}} }
六 抽象方法
1.概念:只有方法的声明 没有方法的实现 使用abstract来修饰 2.语法:访问修饰符 abstract 返回类型 方法的名称(参数列表);例子: public abstract void showInfo(); 3.作用: 简化方法的编写 不用编写方法体 4.注意点:抽象方法必须在抽象类中
七 抽象类
1.概念: 抽象类也是一个普通类 使用abstract来修饰 2.语法:访问修饰符 abstract class 类名 {}例子:public abstract class Student{} 3.成员:A.成员变量B.构造方法C.方法: 成员方法 抽象方法 4.抽象类与抽象方法关系:抽象方法必须在抽象类 但是抽象类可以有抽象方法 也可以有普通的成员方法 5.注意点:A.抽象类是不能实例化对象B.抽象类的构造方法一般用给子类进行调用C.子类必须实现抽象类中所有的抽象方法 除非子类也是抽象类 6.使用场景:一般抽闲类作为父类 需要约束子类的一些规范的时候
八案例
step01 需求
step02 代码
package com.qf.demo02;public abstract class Girl {public void goShopping(){System.out.println("买神仙水..........");}public abstract void findBoy(); }
step03 代码
package com.qf.demo02;public class WuGirl extends Girl {@Overridepublic void findBoy() {System.out.println("发际线高的男朋友");} }
step04 代码
package com.qf.demo02;public class ShenGirl extends Girl {@Overridepublic void findBoy() {System.out.println("找有钱的人");} }
step05测试类
package com.qf.demo02;public class Test {public static void main(String[] args) {Girl g = new ShenGirl();g.goShopping();g.findBoy();Girl g1 = new WuGirl();g1.goShopping();g1.findBoy();} }
九 案例
step01 需求
step02 分析
step03 代码
package com.qf.demo03;public abstract class Emp {private int eid;private String name;private double sal;public Emp() {}public Emp(int eid, String name, double sal) {this.eid = eid;this.name = name;this.sal = sal;}public int getEid() {return eid;}public void setEid(int eid) {this.eid = eid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getSal() {return sal;}public void setSal(double sal) {this.sal = sal;}public abstract void work(); }
step04 代码
package com.qf.demo03;public class Programmer extends Emp {private double meoney;public Programmer() {}public Programmer(int eid, String name, double sal, double meoney) {super(eid, name, sal);this.meoney = meoney;}public double getMeoney() {return meoney;}public void setMeoney(double meoney) {this.meoney = meoney;}@Overridepublic void work() {System.out.println("撸代码......");} }
step05 代码
package com.qf.demo03;public class Manager extends Emp {private double money;public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}public Manager() {}public Manager(int eid, String name, double sal, double money) {super(eid, name, sal);this.money = money;}@Overridepublic void work() {System.out.println("怼程序员......");} }
step06 代码
package com.qf.demo03;public class Tester extends Emp {public Tester() {}public Tester(int eid, String name, double sal) {super(eid, name, sal);}@Overridepublic void work() {System.out.println("怼项目经理..........");} }
step07代码
package com.qf.demo03;public class Test {public static void main(String[] args) {//实例化对象Emp e = new Manager(1001,"圣源",20000,2000);e.work();System.out.println(e.getEid()+"\t"+e.getName()+"\t"+e.getSal());//向下转型Manager m = (Manager) e;System.out.println(m.getMoney());Emp e1 = new Programmer(1002,"叶总",18000,2000);e1.work();Emp e2 = new Tester(1003,"启龙",20000);e2.work();} }
十 接口
1.概念:生活中接口 usb 水龙头接口 花洒 .....开发中的接口:提供了一些规范以及约束 规范:就是定义了一些抽象方法 2.接口使用的关键字:interface 3.定义的语法:访问修饰符 interface 接口名称{}例子:public interface inner{}注意点: A.将类的关键字换成interface B.接口编译之后也是字节码文件 4.成员:变量:接口的变量都是静态的常量 默认都使用 public static final来进行修饰构造方法:没有构造方法方法: 在jdk1.8之前 只能由抽象方法 方法默认都会加上 public abstract 在jdk1.8之后 可以有私有的方法 以及静态方法 默认的方法 5.注意点:A.接口不能实例化对象B.接口中的实现类必须实现接口中所有的抽象方法C.接口可以有多个实现类6.接口的实现类:概念:实现接口的普通的java类关键字: implements 分类:单实现 多实现7.单实现:概念:实现类实现一个接口语法: 访问修饰符 class 类名 implements 接口 {}例子:public class Impl implements inner{}原则:实现接口中所有的抽象方法8.多实现: 概念:实现类实现多个接口 解决java单继承的问题语法:访问修饰符 class 类名 implements 接口1,接口2 {}例子:public class Impl implements inner,Inner{}原则:实现接口中所有的抽象方法注意点:实现多个接口 多个接口有相同名抽象方法 实现类只需要实现一个抽象类方法啊
代码-接口
package com.qf.demo04;public interface Inner {int num =100;void showInfo();}
代码-实现类
package com.qf.demo04;public class Impl implements Inner {@Overridepublic void showInfo() {} }
代码-测试类
package com.qf.demo04;public class Test {public static void main(String[] args) { // Inner in = new Inner();} }
多实现的代码
package com.qf.demo05;public interface Inner {void show();void pay(); }
package com.qf.demo05;public interface Inner01 {void showInfo();void pay(); }
package com.qf.demo05;public class Impl implements Inner,Inner01 {@Overridepublic void show() {System.out.println("show");}@Overridepublic void pay() {System.out.println("支付");}@Overridepublic void showInfo() {System.out.println("showInfo");} }
十一案例
step01 组装一台打印机
step02 分析
step03 代码
package com.qf.demo06;public interface Pager {String getPager(); }
step04 代码
package com.qf.demo06;public class A3Pager implements Pager {@Overridepublic String getPager() {return "A3纸张";} }
step05 代码
package com.qf.demo06;public class A4Pager implements Pager {@Overridepublic String getPager() {return "A4纸张";} }
step06 代码
package com.qf.demo06;public interface Link {String getLink(); }
step07代码
package com.qf.demo06;public class BlackLink implements Link{@Overridepublic String getLink() {return "黑色墨盒";} }
step08 代码
package com.qf.demo06;public class ColorLink implements Link {@Overridepublic String getLink() {return "彩色墨盒";} }
step09代码
package com.qf.demo06;public class Printer {private Pager pager;private Link link;public void setPager(Pager pager) {this.pager = pager;}public void setLink(Link link) {this.link = link;}public void print(){System.out.println(pager.getPager()+"\t"+link.getLink());}}
step10代码
package com.qf.demo06;public class Test {public static void main(String[] args) {//实例化打印机Pager pa = new A3Pager();Link l = new BlackLink();Printer p = new Printer();p.setPager(pa);p.setLink(l);p.print();} }
十二 类与接口 接口与接口之间的关系
1.类与类:只能单继承 多层继承 不支持多继承 2.类与接口:类可以实现单接口 也可以实现多接口 3.接口与接口:接口与接口可以单继承 也可以多继承例子:public interface Inner02 extends Inner,Inner01 {}
十三案例
step01 需求
step02 分析
接口 USB 接口 开启 工作 关闭 实现类: 鼠标类 键盘类 笔记本:开机 使用usb功能 关机
step03 -定义接口
package com.qf.demo08;public interface USBInterface {void open();void work();void close(); }
step04-键盘
package com.qf.demo08;public class KeyBoard implements USBInterface {@Overridepublic void open() {System.out.println("打开键盘......");}@Overridepublic void work() {System.out.println("正在撸键盘.....");}@Overridepublic void close() {System.out.println("正在关闭键盘......");} }
step05-鼠标
package com.qf.demo08;public class Mouse implements USBInterface {@Overridepublic void open() {System.out.println("正在开启.......");}@Overridepublic void work() {System.out.println("正在瞎点......");}@Overridepublic void close() {System.out.println("正在关闭........");} }
step06-笔记本
package com.qf.demo08;public class NoteBook {public void open(){System.out.println("笔记本开启.....");}public void useUsb(USBInterface usb){usb.open();usb.work();usb.close();}public void close(){System.out.println("关机.......");} }
step07-测试类
package com.qf.demo08;public class Test {public static void main(String[] args) {//实例化笔记本对象NoteBook note = new NoteBook();note.open();//实例化键盘的对象USBInterface usb = new KeyBoard();note.useUsb(usb);//使用鼠标USBInterface usb1= new Mouse();note.useUsb(usb1);note.close();} }
十四 内部类
1.概念:定义在类中的类 或者是定义在方法的类 就是内部类 2.分类:成员内部类:普通成员内部类 私有内部类 静态内部类局部内部类:定义在方法中的类匿名内部类 没有名称的内部类3.普通的成员内部类位置:定义在类中 方法外语法: 访问修饰符 class 外部类名 {访问修饰符 class 内部类名{}}说明:A.内部类是可以访问外部类的私有的属性以及方法B.外部类访问内部类的私有 必须实例化内部类对象才能访问C.外部类以外的类访问内部类的资源 需要同外部类来实例化内部类对象语法: 外部类的类名.内部类 对象名 = new 外部类的类名().new 内部类();4.私有内部类位置:定义在类中 方法外语法: 访问修饰符 class 外部类名 {private class 内部类名{}}说明:A.内部类是可以访问外部类的私有的属性以及方法B.外部类访问内部类的私有 必须实例化内部类对象才能访问C.外部类以外的类不能直接实例化内部类对象 但是可以通过外部类来调用其方法获取属性5.静态内部类:位置:定义在类中 方法外语法:访问修饰符 class 外部类名 { static class 内部类类名{}}说明:A.静态内部类中方法只能获取外部类的静态资源B.外部类访问静态内部类的资源 只能通过实例化对象来获取C.外部类以外的类访问静态内部类的语法:外部类.内部类 对象名 = new 外部类.内部类()例子: OutClass.IntClass in = new OutClass.IntClass();6.局部内部类位置:定义在方法中语法:访问修饰符 返回值类型 方法名(){class 类名 {}}说明:A.局部内部类只能间接进行调用内部类的资源7.匿名内部类位置:一般是定义在方法在方法的参数中注意点:一般是与接口或者抽象类搭配的使用
代码-成员内部类
package com.qf.demo09;public class OutClass {private int num=20;public void showInfo(){System.out.println("哈哈哈!我是外部类");InClass in = new InClass();in.show();System.out.println(in.inNum);}public class InClass{private int inNum=400;public void show(){System.out.println(num);showInfo();}} }
package com.qf.demo09;public class Test {public static void main(String[] args) { // OutClass.InClass in = new OutClass().new InClass(); // in.show();/* OutClass outClass = new OutClass();*/} }
代码-私有内部类
package com.qf.demo10;public class OutClass {private int numOut=10;public void showInfo(){IntClass in = new IntClass();in.showInfo();}private class IntClass{public int numInt =20;public void showInfo(){System.out.println(numOut);}} }
package com.qf.demo10;public class Test {public static void main(String[] args) {OutClass out = new OutClass();out.showInfo();} }
代码- 局部内部类
package com.qf.demo12;public class OutClass {public void showInfo(){class InnerClass{private int num=20;public void show(){System.out.println("哈哈");}/* public void show(){InnerClass in = new InnerClass();in.showInfo();} */}InnerClass in = new InnerClass();in.show();} }
package com.qf.demo12;public class Test {public static void main(String[] args) {OutClass outClass = new OutClass();outClass.showInfo();}}
代码-匿名内部类
package com.qf.demo13;public class Test {public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {}});showInfo(new Inner() {@Overridepublic void show() {}});show(new Inner01() {@Overridepublic void showInfoInner01() {System.out.println("dddd");}});}public static void showInfo(Inner inner){inner.show();}public static void show(Inner01 inner01){inner01.showInfoInner01();} }
十五 综合的案例
step01 需求
step02 分析
step03 代码
package com.qf.demo14;/*** 车类*/ public abstract class Vehicles {private String brand;private String noId;private double rent;public Vehicles() {}public Vehicles(String brand, String noId, double rent) {this.brand = brand;this.noId = noId;this.rent = rent;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getNoId() {return noId;}public void setNoId(String noId) {this.noId = noId;}public double getRent() {return rent;}public void setRent(double rent) {this.rent = rent;}public abstract double pay(int days);}
step04 代码
package com.qf.demo14;/*** 客车类*/ public class Bus extends Vehicles{private int seatCount;public Bus() {}public Bus(String brand, String noId, double rent, int seatCount) {super(brand, noId, rent);this.seatCount = seatCount;}public int getSeatCount() {return seatCount;}public void setSeatCount(int seatCount) {this.seatCount = seatCount;}@Overridepublic double pay(int days) {if (days >=150){return days*0.6;}else if(days >= 30){return days *0.7;}else if(days >=7){return days *0.8;}else if(days >=3){return days*0.9;}return days;} }
step05 代码
package com.qf.demo14;/*** 轿车类*/ public class Car extends Vehicles{private String type;public Car() {}public Car(String brand, String noId, double rent, String type) {super(brand, noId, rent);this.type = type;}public String getType() {return type;}public void setType(String type) {this.type = type;}@Overridepublic double pay(int days) {if (days >=150){return days*0.7;}else if(days >30){return days*0.8;}else if(days >7){return days*0.9;}return days;} }
step06 代码
package com.qf.demo14;public class Player {private Vehicles [] vehicles = new Vehicles[8];//定义方法存储车public void init(){ // String brand, String noId, double rent, String typevehicles[0]= new Car("宝马","京88888",800,"X6");vehicles[1]= new Car("宝马","京99999",600,"550i");vehicles[2]= new Car("别克","京77777",300,"林荫大道");vehicles[3]= new Car("别克","京66666",600,"GL8");//String brand, String noId, double rent, int seatCountvehicles[4] = new Bus("京杯","55555",800,16);vehicles[5] = new Bus("京杯","44444",1500,34);vehicles[6] = new Bus("京龙","33333",800,16);vehicles[7] = new Bus("京龙","22222",1500,34);}//定义方法找车public Vehicles findVehicles(String brand,String type,int seatCount){if (vehicles !=null && vehicles.length >0) {for (int i=0;i<vehicles.length;i++) {Vehicles v = vehicles[i];if( v instanceof Car){Car c = (Car) v;if (brand.equals(c.getBrand()) && type.equals(c.getType())) {return c;}}else if(v instanceof Bus){Bus b = (Bus) v;if (brand.equals(b.getBrand()) && seatCount ==b.getSeatCount()) {return b;}}}}return null;}}
step07 代码
package com.qf.demo14;import java.util.Scanner;public class Test {public static void main(String[] args) {//实例化操作类的对象Player p = new Player();p.init();Scanner input = new Scanner(System.in);System.out.println("欢迎来到********租车系统*******");System.out.println("1.轿车\t2.客车");System.out.println("请输入租车的类型");String brand="";String type="";int seatCount=0;int id =input.nextInt();if (id ==1){System.out.println("请输入品牌:1.别克\t2.宝马");int brandId = input.nextInt();if (brandId ==1){brand="别克";System.out.println("请输入型号1.林荫大道\t2.GL8");int typeId =input.nextInt();if (typeId ==1){type="林荫大道";}}}Vehicles ve = p.findVehicles(brand,type,seatCount);System.out.println("请输入租赁天数");int days =input.nextInt();System.out.println("车牌号:"+ve.getNoId());System.out.println("需要支付金额:"+ve.getRent() * ve.pay(days));} }
day10:抽象方法、抽象类、接口、类与接口、接口与接口、内部类相关推荐
- 创建一个抽象类动物类以及以下几个接口:进食的接口、睡觉的接口、思考的接口、说话的接口。分别定义猫类、人类、鸟类继承动物类并选择实现上述的接口,并创建实例验证。
创建一个抽象类动物类以及以下几个接口:进食的接口.睡觉的接口.思考的接口.说话的接口.分别定义猫类.人类.鸟类继承动物类并选择实现上述的接口,并创建实例验证. 上代码 package ThirdDay ...
- php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别
/** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...
- JAVA类定义,成员类,抽象类及接口类
对于class定义,格式如下: [public|protected|private] [abstract|final] class 类名 { //类的内容 .... } 前面是modifier. 需要 ...
- 面向对象 抽象类与接口类
############ 复习 ############### - 先抽象再继承 ########## 接口类与抽象类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码 ...
- Python学习日记(二十五) 接口类、抽象类、多态
接口类 继承有两种用途:继承基类的方法,并且做出自己的改变或扩展(代码重用)和声明某个子类兼容于某基类,定义一个接口类interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子 ...
- 023_接口类,抽象类,多态,鸭子类型,封装
1,接口类 1 class Wechat(): 2 def pay(self,money): 3 print('已经用微信支付了%s元'%money) 4 class Alipay(): 5 def ...
- day24-抽象类与接口类
接口类 1.继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类 ...
- python接口测试-项目实践(八) 完成的接口类和执行脚本
脱敏后脚本 projectapi.py: 项目接口类 # -*- coding:utf-8 -*- """ xx项目接口类 2018-11 dinghanhua &quo ...
- python 接口是什么_python3中的接口类是什么?怎么用?
本篇文章要说的类很有意思,叫接口类,这个名字相信小伙伴们还是比较容易记住的.小编想通过接口类给大家带来有趣的操作,毕竟一直学函数和代码,确实是一件需要记忆让人疲惫的事情.希望下面小编带来的例子,能让大 ...
最新文章
- c语言的变量,常量及作用域等
- 好事多磨:Ogre1.7 编译记
- Oracle中通过存储过程,Function,触发器实现解析时间类型的字段并插入的对应的数据表中...
- comparing ORB and AKAZE
- python运维案例开发_python运维开发之第六天
- delphi7 增加管理员权限_EHR系统的权限设计
- yuicompressor java_使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件
- 用c语言编程解决数学实际问题,运用C语言解决爱因斯坦的数学题
- librdkafka自动源码编译
- python 字典类型 get 参数_python如何利用urllib解析url参数成字典
- 苏州真不能成为一线城市?
- [单片机] KeilC51单块数码管演示与原理
- ECS云服务器详细配置
- 安装darknet报libQt5Core.so.5: undefined reference
- 【工具使用】Word 排版
- 内部专家亲自揭秘!滴滴对象存储系统的演进之路
- 删除字符串某一指定子字符串
- 雷军-我十年的程序员生涯
- 一个完整的软件项目开发流程是怎样的呢
- Spark(火花)快速、通用的大数据处理引擎框架