Java面向对象(三)

    一、封装:

一般意义的封装:把一段重复代码抽取成一个函数,称为代码的封装(包装)面向对象语言的封装:将类的某些信息隐藏在类的内部(通过使用不同的访问权限修饰符),不许外部程序直接访问
而是通过该类提供的方法来实现对隐藏信息的操作和访问封装案例1:将成员变量私有化封装案例2:将成员方法私有化
java固定模式:解决某种问题的固定方式(算法)单例模式:让一个类在一个程序中只能创建一个对象(window_TestWindow)将类的构造方法私有化,外界不可以随便调用,向外界提供一个方法去构建在类中new一个static的自己,保证在类生成时,就生成了唯一的对象补充变量的分类:1、数据类型:基本数据类型、引用数据类型2、按照位置分:成员变量:在定义类中,可以使用权限修饰符修饰;在构造方法中进行自动赋值;生命周期不同:静态(随着类的加载而生成,类的销毁而销毁)非静态(随着对象的创建,销毁而创建销毁)存储位置:静态:方法区非静态:堆局部变量:在定义方法中,不能使用权限修饰符修饰必须自己进行初始化生命周期:随着方法调用而生成,方法调用结束而结束存储位置:栈

例:

package com.wbc.opp.oop.day3.packAge;public class Person {private String name;//私人权限private int age;//私人权限//定义公共的成员方法,可以在此类方法中加入控制语句// 外界通过调用方法来访问成员变量public Person(){}//通过构造方法public Person(String name,int age){this.name=name;this.age=age;}public void setName(String name){if(name.length()>2&&name.length()<6){this.name=name;}}public String getName(){return name;}public void setAge(int age){if(age<150&&age>0){this.age=age;}}public int getAge(){return this.age;}
}

package com.wbc.opp.oop.day3.packAge;public class TestPerson {public static void main(String[] args) {Person p1=new Person();/*String name;在其他类中可以直接对类中的属性进行赋值操作,但没法控制其赋值的内容p1.name="sdadsa";*/p1.setName("abac");String p1Name= p1.getName();System.out.println(p1Name);p1.setAge(2);int p1Age=p1.getAge();System.out.println(p1Age);}
}

二、继承

继承就是将同一类事物中的共性进行抽取,定义在一个类中(基类)
其他类可以继承基类,就能拥有基类中的功能,实现代码的复用类
以及可以在子类中扩展属于子类自己的功能而不影响其他类例:猫狗都是动物,所以可以抽取一个动物类,以继承功能优点:提高了代码的重复率,减少了冗余。子类使用extends关键字继承父类
一个类只能继承一个类,但可以多层继承(继承体系)Object是所有类的父类,是java类体系中最顶尖的类
当一个类没有显示继承,默认继承Objectdog继承Animal,Dog称为子类,派生类;Animal成为父类方法覆盖:可能有些功能比较笼统或者与具体有差距,需要更加细致的功能。所以出现了方法的覆盖当父类中方法的实现不能满足子类需求是,可以在子类中对父类的方法进行覆盖要求:子类重写的方法结构与父类方法结构一致(权限大于等于父类权限;返回值,名字,参数必须一致)父类的私有方法不能重写,挎包的默认权限方法不能重写子类抛出的异常不能大于父类的异常
@Override//注解标签。表示此方法是从父类重写来的,检查重写是不是正确
可以不用添加,只需要重写正确即可,但建议保留(编译器可以进行语法验证;增加可读性)super关键字:当覆写后子类需要调用父类的方法,可以用super关键字调用
例如
@Overridepublic void sleep() {super.sleep();//使用super调用父类方法System.out.println("哮天犬不需要睡觉");}
super不仅可以调用父类,还可以调用父类的父类
super与this相似,this表示当前的对象,super代表父类的内存空间的标识
this在用的时候需要创建本类对象,但super没有创建父类对象,只是将父类的信息存入子类继承中的构造方法:在子类继承父类时不会继承构造方法,只能通过super构造在子类的构造方法首行调用父类的构造方法-> super(无参调无参,有参调有参);不写会默认无参构造(super();)常见错误:默认无参构造时,父类需要有无参构造方法

例:

Animal是父类

package com.wbc.opp.oop.day3.inherit;public class Animal {private String breed;//品种private String name;private int age;private String gender;public String getBreed() {return breed;}public void setBreed(String breed) {this.breed = breed;}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;}public void printInfo(){System.out.println("姓名:"+name);System.out.println("品种:"+breed);System.out.println("性别:"+gender);System.out.println("年龄"+age);}public Animal() {}public Animal(String name, int age, String gender,String breed) {this.name = name;this.age = age;this.gender = gender;this.breed=breed;}public void sleep(){System.out.println(breed+":"+name+"正在睡觉");}public void eat(String food){System.out.println(breed+":"+name+"正在吃"+food);}
}

cat是子类之一  

package com.wbc.opp.oop.day3.inherit;public class Cat extends Animal{public void catchMice(){System.out.println(getName()+":正在抓老鼠");}
}
package com.wbc.opp.oop.day3.inherit;public class TestCat {public static void main(String[] args) {Cat cat=new Cat();cat.setName("Tom");cat.setBreed("抓老鼠的猫");cat.setGender("公");cat.setAge(6);cat.catchMice();cat.printInfo();}
}

dog是另一子类 

package com.wbc.opp.oop.day3.inherit;public class Dog extends Animal {public void lookHouse(){System.out.println(getName()+":正在看家");}@Override//注解标签。表示此方法是从父类重写来的,检查重写是不是正确public void sleep(){System.out.println("狗在睡觉");}
}
package com.wbc.opp.oop.day3.inherit;public class TestDog {public static void main(String[] args) {Dog dog=new Dog();dog.setName("viky");dog.setBreed("泰迪");dog.setGender("母");dog.setAge(6);dog.lookHouse();dog.printInfo();dog.eat("狗粮");}
}

哮天犬又是dog的子类

package com.wbc.opp.oop.day3.inherit;public class Xtd extends Dog{public void fly(){System.out.println("哮天犬可以飞");}//可以左键快速重写@Overridepublic void sleep() {super.sleep();//使用super调用父类方法System.out.println("哮天犬不需要睡觉");}}
package com.wbc.opp.oop.day3.inherit;public class TestXtq {public static void main(String[] args) {Xtd xtd=new Xtd();xtd.setName("哮天犬");}
}

三、抽象类

抽象方法:只有方法声明,没有具体实现的方法
why要有抽象方法:在一些体系结构的顶端类中,有些功能没必要实现因为在不同子类中的实现都不相同,这时候就可以将方法声明为抽线方法public abstract void eat(); //定义为抽象方法,没有具体实现,不完整此时需要将类定义成抽象类public abstract class Animal {//将类使用abstract抽象化使用abstract关键字修饰的类就是抽象类。若一个类中有抽象方法,则其必须是抽象类。但抽象类中也可以有非抽象方法
抽象类:一个类中有不完整的方法,则这个类是抽象类特点:除了其不可构造对象外,其他功能与其他正常的类都相同,可以有变量,方法,构造器其子类必须重写其所有抽象方法,或者也定义为抽象类作用:主要在上层定义功能,让子类继承实现语法:public abstract class Animal {//将类使用abstract抽象化

例:

父类Animal(抽象类)——》子类 cat(抽象类)

                                    ——》另一子类 dog(非抽象)

package com.wbc.opp.oop.day3.Abstract;public abstract class Animal {//将类使用abstract抽象化private String name;private int age;public abstract void eat(String food); //定义为抽象方法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;}public void printINfo(){System.out.println(name+"\t"+age);}
}

 

package com.wbc.opp.oop.day3.Abstract;public abstract class cat extends Animal {//定义为抽象类
}
package com.wbc.opp.oop.day3.Abstract;public class Dog extends Animal{public Dog() {}public Dog(String name, int age) {super(name, age);}@Overridepublic void eat(String food) {//重写实现System.out.println(getName()+"吃"+food);}
}
package com.wbc.opp.oop.day3.Abstract;public class TestDog {public static void main(String[] args) {Dog dog=new Dog();dog.setName("旺财");dog.setAge(10);dog.printINfo();dog.eat("狗粮");}
}

四、练习

1.求学生平均成绩 编写出一个通用的人员类(Person),该类具有姓名(Name)、年龄(Age)、性别(gender)等。 然后对Person类的继承得到一个学生类(Student), 该类能够存放学生的5门课的成绩(语文,数学,英语,物理,地理),并有一个方法能求出平均成绩。 最后在main函数中对Student类的功能进行验证。

//person类
package com.wbc.opp.oop.homework.day3.gradeAverage;public  class Person {private String Name;private int Age;private String gender;public Person(String name, int age, String gender) {Name = name;Age = age;this.gender = gender;}public Person() {}public String getName() {return Name;}public void setName(String name) {Name = name;}public int getAge() {return Age;}public void setAge(int age) {Age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}}
//student类
package com.wbc.opp.oop.homework.day3.gradeAverage;public class Student extends Person {private double gradeAverage;private double chnAverage;private double mathAverage;private double engAverage;private double phyAverage;private double geoAverage;public Student() {super();}private Student(String name, int age, String gender) {super(name, age, gender);}private void setChnAverage(double chnAverage) {this.chnAverage = chnAverage;}private void setMathAverage(double mathAverage) {this.mathAverage = mathAverage;}private void setEngAverage(double engAverage) {this.engAverage = engAverage;}private void setPhyAverage(double phyAverage) {this.phyAverage = phyAverage;}private void setGeoAverage(double geoAverage) {this.geoAverage = geoAverage;}public void setAllAverage(double chnAverage,double mathAverage,double engAverage,double phyAverage,double geoAverage){setChnAverage(chnAverage);setMathAverage(mathAverage);setEngAverage(engAverage);setPhyAverage(phyAverage);setGeoAverage(geoAverage);}public void printInfo(){System.out.println("语文:"+chnAverage);System.out.println("数学:"+mathAverage);System.out.println("英语:"+engAverage);System.out.println("物理:"+phyAverage);System.out.println("地理:"+geoAverage);}public double grade(){return (chnAverage+mathAverage+engAverage+phyAverage+geoAverage)/5;}
}
//测试类
package com.wbc.opp.oop.homework.day3.gradeAverage;public class TestStudent {public static void main(String[] args) {Student stu=new Student();stu.setAllAverage(1,2,3,4,5);stu.printInfo();System.out.println("平均成绩为:"+stu.grade());}
}

 

2.人类设计 定义一个人类,包括属性:姓名、性别、年龄、国籍;包括方法:吃饭、睡觉,工作。 (1)根据人类,派生一个学生类,增加属性:学校、学号;重写工作方法(学生的工作是学习)。 (2)根据人类,派生一个工人类,增加属性:单位、工龄;重写工作方法(工人的工作是……自己想吧)。 (3)根据学生类,派生一个学生干部类,增加属性:职务;增加方法:开会。

//Person类
package com.wbc.opp.oop.homework.day3.human;public abstract class Person {private String name;private String gender;private int age;private String country;public Person() {}public Person(String name, String gender, int age, String country) {this.name = name;this.gender = gender;this.age = age;this.country = country;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getCountry() {return country;}public void setCountry(String country) {this.country = country;}public void setAllInfo(){System.out.println(name);System.out.println(gender);System.out.println(age);System.out.println(country);;}public void eat(){System.out.println(getName()+"吃饭");}public void sleep(){System.out.println(getName()+"睡觉");}public abstract void work();
}
//Student类
package com.wbc.opp.oop.homework.day3.human;public class Student extends Person{private String school;private String stuNums;public Student() {}public Student(String name,String gender,int age,String country,String school,String stuNums) {super(name, gender, age, country);this.school = school;this.stuNums = stuNums;}public String getSchool() {return school;}public void setSchool(String school) {this.school = school;}public String getStuNums() {return stuNums;}public void setStuNums(String stuNums) {this.stuNums = stuNums;}public void getAllInfo(){System.out.println(getName());System.out.println(getGender());System.out.println(getAge());System.out.println(getCountry());System.out.println(school);System.out.println(stuNums);}@Overridepublic void work() {System.out.println(getName()+"学习");}
}
//ITworker类
package com.wbc.opp.oop.homework.day3.human;public class ITworker extends Person{private String unit;private int workAge;public ITworker() {}public ITworker(String name, String gender, int age, String country, String unit, int workAge) {super(name, gender, age, country);this.unit = unit;this.workAge = workAge;}public String getUnit() {return unit;}public void setUnit(String unit) {this.unit = unit;}public int getWorkAge() {return workAge;}public void setWorkAge(int workAge) {this.workAge = workAge;}public void setAllInfo(String unit,int workAge){setUnit(unit);setWorkAge(workAge);}public void getAllInfo(){System.out.println(getName());System.out.println(getGender());System.out.println(getAge());System.out.println(getCountry());System.out.println(unit);System.out.println(workAge);}@Overridepublic void work() {System.out.println(getName()+"正在赛博板砖");}
}
//Stucadre学生干部类
package com.wbc.opp.oop.homework.day3.human;public class StuCadre extends Student{private String post;public StuCadre() {}public StuCadre(String name, String gender, int age, String country, String school, String stuNums, String post) {super(name, gender, age, country, school, stuNums);this.post = post;}public void getAllInfo(){System.out.println(getName());System.out.println(getGender());System.out.println(getAge());System.out.println(getCountry());System.out.println(getSchool());System.out.println(getStuNums());System.out.println(post);}public void meeting(){System.out.println(post+getName()+"正在开会");}
}
//test类
package com.wbc.opp.oop.homework.day3.human;public class Test {public static void main(String[] args) {Student stu =new Student("wang","男",20,"中国","snut","0001");stu.work();stu.eat();stu.sleep();stu.getAllInfo();ITworker worker =new ITworker("wang","男",20,"中国","非凡",1);worker.work();worker.getAllInfo();StuCadre cadre=new StuCadre("wang","男",20,"中国","snut","0001","学生会主席");cadre.work();cadre.getAllInfo();cadre.meeting();}
}

3、定义一个人类 , 包含一个country属性,speak(),eat()方法 派生一个中国人和美国人类, 两种人说话方式语言不同, 两种人吃饭方式不同

//person类
package com.wbc.opp.oop.homework.day3.personCountry;public abstract class Person {private String country;public Person(String country) {this.country = country;}public Person() {}public String getCountry() {return country;}public void setCountry(String country) {this.country = country;}public abstract void speak();public abstract void eat();
}
//Chinese类
package com.wbc.opp.oop.homework.day3.personCountry;public class Chinese extends Person{public Chinese(String country) {super(country);}@Overridepublic void speak() {System.out.println(getCountry()+"人说中文");}@Overridepublic void eat() {System.out.println(getCountry()+"人吃中餐");}
}
//American类
package com.wbc.opp.oop.homework.day3.personCountry;public class American extends Person{public American(String country) {super(country);}@Overridepublic void speak() {System.out.println(getCountry()+"人说鸟语");}@Overridepublic void eat() {System.out.println(getCountry()+"人吃西餐");}
}
//test类
package com.wbc.opp.oop.homework.day3.personCountry;public class Test {public static void main(String[] args) {Chinese chinese=new Chinese("中国");chinese.eat();chinese.speak();American american=new American("美国");american.eat();american.speak();}
}

4.学生信息管理系统 设计一个学生信息管理系统,有添加学生,查询学生,删除学生等功能. 要求:1.设计一个类学生类,学生属性有学号,姓名,性别(属性私有权限) 用来存储学生的信息 要求2:实现对学生信息的增删查操作 要求3:使用一个数组存储学生信息,数组上限定为30即可.

启动程序后输出一个菜单让用户选择操作:1.添加学生,2-删除学生,3.查询学生,4-退出
选择添加学生在控制台依次输入学号,姓名,性别等信息,将学生信息存储到一个学生对象中,
并将学生对象存储到数组中,数组容量定为30.
删除时,必须输入学号,如果学号对应的学生存在,从数组中删除该学生信息
点击查询时,必须输入学号,如果学号对应的学生存在,输出学生信息即可,不存在,输出学号有误

//Student类
package com.wbc.opp.oop.homework.day3.studentInformationManagementSystem;/*学生类,主要作用,存储学生信息*/
public class Student {private int num;private String name;private String gender;public int getNum() {return num;}public void setNum(int num) {this.num = num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}@Overridepublic String toString() {return "Student{" +"num=" + num +", name='" + name + '\'' +", gender='" + gender + '\'' +'}';}
}
//StudentManage类
package com.wbc.opp.oop.homework.day3.studentInformationManagementSystem;import java.util.Scanner;/*学生信息管理类在此类中,可以有添加,删除,查询学生信息等功能*/
public class StudentManage {Student[] students = new Student[30];//[null,null,null]static int count=0;/*管理系统主方法*/public void menu(){loop:while(true){System.out.println("用户选择操作: 1.添加学生,2-删除学生,3.查询学生,4-退出");Scanner s = new Scanner(System.in);int item = s.nextInt();switch (item){case 1: this.add(); break;case 2: this.delete(); break;case 3: this.search(); break;case 4:  break loop;}}}/*添加
*/public void add() {Student stu = new Student();Scanner name = new Scanner(System.in);System.out.println("请输入姓名");String names = name.next();stu.setName(names);Scanner num = new Scanner(System.in);System.out.println("请输入学号");int nums = num.nextInt();stu.setNum(nums);Scanner gender = new Scanner(System.in);System.out.println("请输入性别");String genders = gender.next();stu.setGender(genders);for (int i = 0; i < students.length; i++) {if (students[i] == null) {students[i] = stu;count++;break;}}System.out.println("添加成功");}/*删除*/public void delete() {System.out.println("请输入学生学号");Scanner num = new Scanner(System.in);int nums = num.nextInt();for (int i = 0; i < students.length; i++) {if (students[i] != null && students[i].getNum() == nums) {for (int j = i; j < students.length - 1; j++) {students[j] = students[j + 1];}count--;System.out.println("删除成功");return;}}System.out.println("查无此人");}/*查询*/public void search() {System.out.println("请输入学生学号");Scanner num = new Scanner(System.in);int nums = num.nextInt();for (int i = 0; i < students.length; i++) {if (students[i] != null && students[i].getNum() == nums) {System.out.println(students[i].toString());return;}}System.out.println("查无此人");}}
//RunStudentManage类
package com.wbc.opp.oop.homework.day3.studentInformationManagementSystem;/*启动类*/
public class RunStudentManage {public static void main(String[] args) {/*创建一个学生信息管理系统对象*/StudentManage studentManager = new StudentManage();studentManager.menu();}
}

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

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

相关文章

C++ Primer 笔记(总结,摘要,概括)——第3章 字符串、向量和数组

目录 3.1 命名空间的using声明 3.2 标准库类型string 3.2.1 定义和初始化string对象 3.2.2 string对象上的操作 3.2.3 处理string对象中的字符 3.3 标准库类型vector 3.3.1 定义和初始化vector对象 3.3.2 向vector对象中添加元素 3.3.3 其他vector操作 3.4 迭代器介绍 3.4.…

如何使用rocketmq实现分布式事务?

什么是rocketmq事务消息 事务消息是 Apache RocketMQ 提供的一种高级消息类型&#xff0c;支持在分布式场景下保障消息生产和本地事务的最终一致性。 RocketMQ的分布式事务又称为“半消息事务”。 事务消息处理流程 RocketMQ是靠半消息机制实现分布式事务 事务消息&#x…

Spring之AOP源码解析(上)

Aop相关注解 EnableTransactionManagementEnableAspectJAutoProxyEnableAsync... 从注解切入来看看这些注解都干了什么 Import注解作用简述 注入的类一般继承ImportSelector或者ImportBeanDefinitionRegistrar接口 继承ImportSelector接口&#xff1a;selectImports方法返回…

pandas/geopandas 笔记:判断地点在不在路网上 不在路网的点和路网的距离

0 导入库 import osimport pandas as pd pd.set_option(display.max_rows,5)import osmnx as oximport geopandas as gpd from shapely.geometry import Point 1 读取数据 假设我们有 如下的数据&#xff1a; 1.1 新加坡室外基站位置数据 cell_stationpd.read_csv(outdoor…

TSINGSEE青犀AI智能分析网关V4初始配置与算法相关配置介绍

TSINGSEE青犀AI智能分析网关V4内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。硬件管理平台支持RTSP、GB28181协议、以及厂家私有协议接入&#xff0c;可兼容市面上常见…

通过例子学习golang的Goroutine

Go 语言中的 Goroutine 是一种轻量级的并发执行单位。它可以与其他 Goroutine 并发地执行&#xff0c;而不需要显式地管理线程的创建和销毁。Goroutine 是 Go 语言并发模型的核心组成部分&#xff0c;它使得编写并发程序变得更加简单和高效。 例一 创建两个function&#xff0…

linux下ffmpeg调用GPU硬件解码(VDPAU/VAAPI)保存文件

本文讲解在linux下面&#xff0c;如何通过ffmpeg调用GPU硬件解码&#xff0c;并保存解码完的yuv文件。 其实&#xff0c;ffmpeg自带的例子hw_decode.c这个文件&#xff0c;就已经能满足要求了&#xff0c;因此&#xff0c;本文就尝试讲解以下hw_decode这个例子。hw_decode.c可以…

watchpoint

前言 内存被踩&#xff0c;通过 watchpoint 找到真凶 实例 以 smsc911x 网卡驱动为基体&#xff0c;进行实验&#xff0c;和网卡本身功能无关&#xff0c; 每执行一次 ifconfig eth0 up&#xff0c;就会调用一次 smsc911x_open()&#xff0c;我在这里设计了一段代码&#xf…

数学知识(四)(容斥原理、博弈论)

一、容斥原理 容斥原理公式 一共加或者减的式子个数 &#xff08;一&#xff09;利用容斥原理解决求能被质数整除的数的个数 890计算能被整除的数的个数 因为一共有2^n-1种选法&#xff0c;可以用位运算的方式枚举&#xff0c;对于得到的每一种选法&#xff0c;根据存在的数…

六、回归与聚类算法 - 逻辑回归与二分类

线性回归欠拟合与过拟合线性回归的改进 - 岭回归分类算法&#xff1a;逻辑回归模型保存与加载无监督学习&#xff1a;K-means算法 1、应用场景 2、原理 2.1 输入 2.2 激活函数 3、损失以及优化 3.1 损失 3.2 优化 4、逻辑回归API 5、分类的评估方法 5.1 精确率和召回率 5.2…

找出作弊的人

文章目录 题目描述输入描述输出描述样例1解释:样例2代码 题目描述 公司组织了一次考试,现在考试结果出来了&#xff0c;想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。 过滤的规则为:找到分差最小的员工ID对(p1,p2)列表…

【Spring】IoC容器 控制反转 与 DI依赖注入 配置类实现版本 第四期

文章目录 基于 配置类 方式管理 Bean一、 配置类和扫描注解二、Bean定义组件三、高级特性&#xff1a;Bean注解细节四、高级特性&#xff1a;Import扩展五、基于注解配置类方式整合三层架构组件总结 基于 配置类 方式管理 Bean Spring 完全注解配置&#xff08;Fully Annotatio…

Kotlin学习 6

1.接口 interface Movable {var maxSpeed: Intvar wheels: Intfun move(movable: Movable): String}class Car(var name: String, override var wheels: Int 4, _maxSpeed: Int) : Movable {override var maxSpeed: Int _maxSpeedget() fieldset(value) {field value}overr…

C语言读取 ini 配置文件,修改/添加键值对

C语言读取 ini 配置文件&#xff0c;修改/添加键值对 C语言读取 ini 配置文件&#xff0c;对section中的键值对进行修改/添加&#xff0c;如果section不存在&#xff0c;则在末尾将新的section/key/value 添加进去。 一、了解什么是INI文件&#xff1f; ini 文件是Initializ…

【大数据】Flink 之部署篇

Flink 之部署篇 1.概述和参考架构2.可重复的资源清理3.部署模式3.1 Application 模式3.2 Per-Job 模式&#xff08;已废弃&#xff09;3.3 Session 模式 Flink 是一个多用途框架&#xff0c;支持多种不同的混合部署方案。下面&#xff0c;我们将简要介绍 Flink 集群的构建模块、…

流动资金贷款管理办法

流动资金贷款管理办法 (2024年1月30日国家金融监督管理总局令2024年第2号公布 自2024年7月1日起施行) 第一章 总 则 第一条 为规范银行业金融机构流动资金贷款业务经营行为&#xff0c;加强流动资金贷款审慎经营管理&#xff0c;促进流动资金贷款业务健康发展&#xff0c;依…

【html学习笔记】3.表单元素

1.文本框 1.1 语法 <input type "text">表示文本框。且只能写一行 1.2 属性 使用属性size 设置文本框大小 <input type"text" size"10">2. 使用属性value 来设置文本框的默认文字 <input type"text" size"…

Vue状态管理库-Pinia

一、Pinia是什么&#xff1f; Pinia 是 Vue 的专属状态管理库&#xff0c;它允许支持跨组件或页面共享状态&#xff0c;即共享数据&#xff0c;他的初始设计目的是设计一个支持组合式API的 Vue 状态管理库&#xff08;因为vue3一个很大的改变就是组合式API&#xff09;,当然这…

PFA三角烧瓶实验室PFA锥形瓶本底纯净耐腐蚀性强

PFA三角烧瓶外观呈平底圆锥状&#xff0c;下阔上狭&#xff0c;有一圆柱形颈部&#xff0c;上方有一较颈部阔的开口&#xff0c;可用塞子封闭。PFA三角烧瓶也称PFA锥形瓶&#xff0c;PFA反应瓶&#xff0c;PFA三角烧瓶、PFA依氏烧瓶、PFA锥形烧瓶&#xff0c;PFA鄂伦麦尔瓶等。…

普中51单片机学习(串口通信)

串口通信 原理 计算机通信是将计算机技术和通信技术的相结合&#xff0c;完成计算机与外部设备或计算机与计算机之间的信息交换 。可以分为两大类&#xff1a;并行通信与串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送 。控制简单、传输速度快&#xff1…