当前位置: 首页 > news >正文

甘肃省建设部网站首页直播网站建设目的

甘肃省建设部网站首页,直播网站建设目的,北京建站公司兴田德润信任,沈阳微信网站建设【Java Pro】001-Java基础#xff1a;面向对象 文章目录【Java Pro】001-Java基础#xff1a;面向对象一、面向对象1、什么是对象现实生活中的对象与程序中的对象2、什么是面向对象面向过程面向对象3、面向过程与面向对象的比较思想方面设计方式方面实现方式方面4、面向过程与…【Java Pro】001-Java基础面向对象 文章目录【Java Pro】001-Java基础面向对象一、面向对象1、什么是对象现实生活中的对象与程序中的对象2、什么是面向对象面向过程面向对象3、面向过程与面向对象的比较思想方面设计方式方面实现方式方面4、面向过程与面向对象的优缺点面向过程的优点面向过程的缺点面向对象的优点面向对象的缺点5、面向过程与面向对象的使用场景面向过程的使用场景面向对象的使用场景6、Java 中常用的面向过程的操作7、Java 面向过程与面向对象编程示例面向过程求两个证书的最大公约数面向对象求两个证书的最大公约数二、面向对象封装性1、概述2、Java 封装性的优缺点封装性的优点封装性的缺点3、Java 封装性的使用场景4、Java 不适用封装性的场景5、Java 中封装性的最佳实践是什么三、面向对象继承性1、概述2、Java 继承性的优缺点继承的优点继承的缺点3、Java 继承性的适用场景4、Java 继承性的不适用场景5、学习 Java 的继承性应注意哪些问题6、Java 中继承性的最佳实践是什么四、面向对象多态性1、概述2、Java 多态性的优缺点多态性优点多态性缺点3、Java 多态性的适用场景4、Java 多态性的不适用场景5、学习 Java 的多态性应注意哪些问题6、Java 中多态性的最佳实践是什么一、面向对象 头脑风暴 什么是对象什么是面向对象为什么要面向对象面向对象的优缺点 1、什么是对象 现实生活中的对象与程序中的对象 一切皆对象现实生活中电脑、耳机、水杯、书等等相比现实生活程序中的对象是抽象出来的要么是基于现实中的对象抽象出来只包含了现实中对象的部分信息要么是根本应用程序的需要而抽象出来的如职工对象通常只记录部分与职工相关性较高的信息学生对象通常也只记录与学生相关性较高的信息。职工和学生是一个“角色对象”因为他们也可能同时是儿子、女儿、父亲、母亲、观众、演员……但在特定的场景下仅使用他们对应的属性信息等。程序中也有现实中不存在的对象比如一个数据库、一张数据表、一个服务器的连接这是根据应用程序的需要抽象得到的为了完成业务需求 2、什么是面向对象 面向对象对应的是面向过程。 面向过程 分析解决某个问题所需要的步骤然后根据步骤一步一步通过代码实现。 把大象装进冰箱 打开冰箱门大象进入冰箱关闭冰箱门。 面向过程就是按照我们分析好的步骤按照步骤解决问题。 面向对象 把事务分解成一个一个对象然后对象之间分工与合作。 把大象装进冰箱 冰箱门打开冰箱对象的行为大象进入冰箱大象对象的行为冰箱门关住冰箱对象的行为。 面向对象是以对象功能来划分问题而不是步骤。 3、面向过程与面向对象的比较 一句话面向过程数据和操作数据的函数是分离的按照顺序执行函数完成任务面向对象的数据和操作数据的函数被封装在对象内部是统一的对象之间通过消息传递进行协作以完成任务 面向过程Procedural Programming和面向对象Object-Oriented Programming是两种编程范式它们有着不同的思想、设计方式和实现方法。 思想方面 面向过程思想将程序看作一系列函数或过程的集合这些函数或过程按照顺序执行完成特定的任务。在面向过程的程序设计中数据与行为是分开的数据和操作数据的函数是分离的。 面向对象思想则认为程序应该是由一组相互作用的对象组成的每个对象都有自己的状态和行为。面向对象设计中对象是程序的基本单位数据和操作数据的函数被封装在对象内部数据与行为是紧密联系的。 设计方式方面 在面向过程编程中问题被分解为若干个子问题每个子问题被设计成一个函数再将这些函数组合起来完成整个任务。程序的设计主要关注如何处理数据而不是如何组织数据。 在面向对象编程中问题被抽象成对象每个对象有自己的属性和方法对象之间通过消息传递相互协作。程序的设计主要关注如何组织数据而不是如何处理数据。 实现方式方面 在面向过程编程中数据和函数是分离的数据的改变需要通过调用函数来实现。常见的面向过程编程语言包括 C、Fortran、Pascal 等。 在面向对象编程中数据和方法被封装在对象内部对象之间通过消息传递来实现数据的操作。常见的面向对象编程语言包括 Java、Python、C、C# 等。 总的来说面向过程与面向对象各有优缺点在具体应用中需要根据问题的特点和实际情况选择合适的编程范式。 4、面向过程与面向对象的优缺点 面向过程的优点 简单明了面向过程的编程思想相对简单易于理解和实现。 我觉得面向过程符合人的常规思想逻辑我们为了达成目标做事情也是按步骤进行 效率高面向过程的编程方式更加接近底层实现执行效率高。 易于维护面向过程的程序结构清晰每个函数完成一个特定的任务容易进行维护。 面向过程的缺点 不易扩展面向过程的程序结构比较简单难以应对复杂的系统需求。可读性差面向过程的程序代码往往比较冗长可读性差。数据与行为耦合度高在面向过程的程序设计中数据与操作数据的函数是分离的这会导致数据和行为之间的耦合度较高不易维护和修改。 面向对象的优点 抽象能力强面向对象编程能够将复杂的系统抽象成对象更容易理解和应对系统需求的变化。可重用性高面向对象编程中对象可以被重用提高了程序的可维护性和可扩展性。安全性高面向对象编程中对象的属性和方法被封装起来保护了程序的安全性。 面向对象的缺点 技术门槛高面向对象编程思想较为复杂需要掌握面向对象的相关概念和技术。 执行效率较低面向对象的程序实现需要更多的内存空间和处理时间执行效率相对较低。 我觉得对象里面不是所有的属性和方法都会用到每次使用要加载整个对象那么就浪费了资源、降低了效率 设计复杂度高面向对象编程需要设计对象的属性和方法设计复杂度较高需要花费更多的时间和精力。 主要关注如何组织数据数据组织的合理性需要站在长远、全局的角度考虑。 5、面向过程与面向对象的使用场景 面向过程的使用场景 小型应用程序面向过程编程思想相对简单适用于编写小型应用程序。执行效率要求高的应用程序面向过程编程更接近底层实现执行效率较高适用于执行效率要求高的应用程序。适用于处理简单的算法和数学运算等任务。 面向对象的使用场景 大型软件系统面向对象编程适用于大型软件系统的开发能够更好地应对系统需求的变化。可扩展性要求高的应用程序面向对象编程中的对象可以被重用提高了程序的可维护性和可扩展性。用户交互性较强的应用程序面向对象编程中的对象和方法能够更好地反映出应用程序的实际场景提高了用户的交互体验。 6、Java 中常用的面向过程的操作 控制语句Java中常用的控制语句包括if-else、for、while、do-while等可以实现程序的流程控制。数组数组是 Java 中常用的数据结构之一可以存储多个同类型的数据可以通过下标访问数组中的元素。函数Java 中可以使用函数来实现面向过程的编程函数可以接收参数和返回值通过函数可以将代码分成独立的模块。文件操作Java 中提供了丰富的文件操作函数可以实现文件的创建、读取、写入、删除等操作。字符串操作Java 中可以使用字符串类来实现字符串的连接、截取、比较等操作。输入输出操作Java 中提供了丰富的输入输出函数可以实现控制台输入输出、文件输入输出等操作。排序算法Java 中提供了多种排序算法如冒泡排序、快速排序、归并排序等可以对数组或集合进行排序。 7、Java 面向过程与面向对象编程示例 面向过程求两个证书的最大公约数 在这个例子中主程序使用了 Scanner 类获取用户输入的两个整数然后调用 findGcd 函数计算它们的最大公约数。findGcd 函数使用了 for 循环和 if 语句来计算最大公约数。整个程序使用了面向过程的编程方式将任务分解为一系列的函数每个函数负责完成特定的功能。函数之间通过参数和返回值进行数据传递和处理。 import java.util.Scanner;public class GcdCalculator {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.print(请输入第一个数);int num1 scanner.nextInt();System.out.print(请输入第二个数);int num2 scanner.nextInt();int gcd findGcd(num1, num2);System.out.println(最大公约数是 gcd);}public static int findGcd(int num1, int num2) {int smaller num1 num2 ? num1 : num2;int gcd 1;for (int i 1; i smaller; i) {if (num1 % i 0 num2 % i 0) {gcd i;}}return gcd;}}面向对象求两个证书的最大公约数 在这个例子中我们将计算最大公约数的函数findGcd放到了 GcdCalculator 类中并且在主程序中使用了这个类来创建对象。这个程序使用了面向对象的编程方式将数据和操作封装在一个类中使用对象来调用方法实现了更加直观和灵活的编程方式。这样当我们需要计算多组数据的最大公约数时只需要创建多个 GcdCalculator 对象调用它们的 findGcd 方法即可。 import java.util.Scanner;public class GcdCalculator {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.print(请输入第一个数);int num1 scanner.nextInt();System.out.print(请输入第二个数);int num2 scanner.nextInt();GcdCalculator calculator new GcdCalculator();int gcd calculator.findGcd(num1, num2);System.out.println(最大公约数是 gcd);}public int findGcd(int num1, int num2) {int smaller num1 num2 ? num1 : num2;int gcd 1;for (int i 1; i smaller; i) {if (num1 % i 0 num2 % i 0) {gcd i;}}return gcd;}}二、面向对象封装性 头脑风暴 什么是封装性为什么要封装封装的优缺点封装的使用场景 1、概述 隐藏具体实现 访问控制提高安全性 面向对象的封装性指的是将数据和对数据的操作封装在一个类中通过类的接口来访问和操作数据同时将数据的实现细节隐藏在类的内部不暴露给外部。 封装性是面向对象编程中最基本、最重要的概念之一。它可以有效地保护对象的数据防止外部的直接访问和修改从而保证了数据的安全性和完整性。同时封装性还可以隐藏对象的实现细节使得对象的使用者不必关心对象的内部实现只需要关心对象提供的接口即可。 在 Java 中封装性通常通过访问修饰符public、protected、private来实现。将数据成员设置为私有的private并提供公有的publicgetter 和 setter 方法这样就可以实现对数据的访问控制和保护同时也可以方便地对数据进行操作和修改。这样就实现了类的封装性同时也提高了代码的可维护性和可重用性。 2、Java 封装性的优缺点 封装性的优点 数据的安全性封装性可以将数据成员设置为私有的从而防止外部直接访问和修改数据提高数据的安全性。实现细节的隐藏封装性可以将类的实现细节隐藏起来只对外部提供公共接口使得使用者不需要了解具体的实现细节提高了代码的可维护性。代码重用封装性可以将类的实现细节封装起来提供公共接口使得其他程序员可以使用该类从而提高了代码的重用性。灵活性封装性可以使得程序员可以在不影响类外部的情况下修改类的实现细节从而提高了代码的灵活性。 封装性的缺点 复杂性封装性会增加程序的复杂度需要花费更多的时间和精力来设计和实现类。开销大封装数据会增加运行时的开销因此在某些需要高效的场景中可能需要暴露类的数据成员从而降低代码的开销。访问控制如果访问控制设置不当可能会导致访问限制过于严格或者过于宽松从而影响代码的安全性和可维护性。 3、Java 封装性的使用场景 保护数据安全将类的数据成员设置为私有的通过公共接口提供访问和修改数据的方法可以防止数据被非法访问和修改。隐藏实现细节将类的实现细节封装起来只对外部提供公共接口可以隐藏类的具体实现细节提高代码的可维护性和可重用性。限制访问权限通过控制访问修饰符来限制成员变量或成员方法的访问权限从而达到安全保护和代码封装的目的。简化接口通过封装可以简化外部接口隐藏类的实现细节降低类之间的耦合度提高系统的灵活性。提高可维护性将类的实现细节封装起来可以使得修改实现细节对外部代码的影响最小化从而提高代码的可维护性。提高代码复用性将类的实现细节封装起来可以使得其他程序员可以使用该类从而提高了代码的复用性。 4、Java 不适用封装性的场景 必须公开的数据如果某个数据成员需要被多个类访问或修改而且没有安全性的问题那么将其设置为 public 属性可能更合适因为封装数据会增加代码的复杂性和运行时的开销。共享数据如果多个对象之间需要共享某些数据那么将其设置为 public 属性可能更为合适因为封装数据会导致多个对象之间无法访问共享数据。高效性的要求封装数据会增加代码的复杂性和运行时的开销因此在某些需要高效的场景中可能需要暴露类的数据成员从而降低代码的开销。 5、Java 中封装性的最佳实践是什么 使用 private 修饰符来限制属性的访问。这样可以防止类外部的代码直接访问属性保证了数据的安全性和完整性。提供 public 的 setter 和 getter 方法来访问属性。setter 方法可以用于修改属性的值getter 方法可以用于获取属性的值。通过setter 和 getter 方法可以实现对属性的控制和访问从而确保属性的正确性和可靠性。避免使用 public 属性或方法。直接暴露 public 属性或方法会破坏类的封装性使得类的实现细节暴露在外部容易被不良代码所利用。如果确实需要暴露属性或方法可以考虑使用 protected 或 default 访问修饰符来限制访问。尽量不要使用 protected 访问修饰符。尽管 protected 修饰符可以让子类访问父类的属性和方法但是过多的使用会破坏封装性使得类的实现变得复杂和脆弱。使用 final 修饰符来限制属性和方法的修改。final 修饰符可以防止属性和方法被修改从而保证了代码的稳定性和可靠性。当然使用 final 修饰符需要谨慎因为它可能会限制代码的灵活性和可扩展性。 三、面向对象继承性 头脑风暴 什么是继承性为什么要集成继承的优缺点继承的适用场景和不适用场景 1、概述 代码复用继承其他类的属性和方法增强代码复用 Java 面向对象编程中的继承性是指一个类可以从已有的类中继承属性和方法从而可以扩展已有的类减少重复代码提高代码的复用性和可维护性。 在 Java 中一个类可以通过 extends 关键字继承另一个类的属性和方法。被继承的类称为父类或超类继承它的类称为子类或派生类。子类可以访问父类中的非私有成员即public、protected和默认访问级别的成员并且可以扩展父类中的属性和方法也可以重写父类中的方法。 在继承中子类继承了父类的属性和方法可以使用父类的实例变量和方法从而减少代码的冗余。另外继承还可以实现代码的重用和扩展即子类可以扩展父类的属性和方法并添加新的属性和方法。 2、Java 继承性的优缺点 继承的优点 提高代码的复用性可以重用已有的代码减少代码冗余提高代码的复用性。提高代码的可维护性可以通过继承来实现代码的扩展和修改而不必修改原有的代码。实现多态子类可以重写父类的方法从而实现多态。 继承的缺点 多层继承可能导致代码的复杂性增加出现混乱的继承关系。子类依赖于父类一旦父类发生变化可能会影响到子类的正常运行。破坏封装性继承会继承父类的所有属性和方法包括私有的属性和方法这可能会破坏父类的封装性。 3、Java 继承性的适用场景 代码复用当多个类之间有相同的属性和方法时可以将这些属性和方法定义在一个父类中然后让子类继承这个父类从而减少代码的冗余提高代码的可维护性和可重用性。扩展功能当需要对已有的类进行功能扩展时可以通过继承来实现。子类可以扩展父类的功能而不必修改父类的代码。实现多态通过继承可以实现多态性即不同的子类对象可以调用同一个方法实现不同的功能。 4、Java 继承性的不适用场景 过度使用过度使用继承可能会导致代码的复杂性增加出现混乱的继承关系。父类变化当父类发生变化时可能会影响到子类的正常运行因此需要谨慎使用继承。类的层次过多如果继承的层数太多会导致代码的可读性和可维护性降低。 5、学习 Java 的继承性应注意哪些问题 继承关系的建立需要明确父类和子类的关系以及如何定义父类和子类的属性和方法。方法的覆盖子类可以覆盖父类的方法需要注意方法的返回值、参数类型和名称等信息。访问修饰符子类继承父类后可以访问父类的公有方法和属性但无法访问私有方法和属性。继承层数的问题如果继承的层数太多会影响代码的可读性和可维护性。多态性的应用在使用继承时需要注意多态性的应用即子类对象可以赋值给父类引用从而实现不同的行为。构造方法的调用子类继承父类后需要调用父类的构造方法可以使用super关键字来调用父类的构造方法。父类和子类的实例化在使用继承时需要注意父类和子类的实例化方式即子类对象在实例化时会自动调用父类的构造方法。 6、Java 中继承性的最佳实践是什么 使用继承时需要明确父类和子类之间的关系确保继承关系的正确性和可读性。 父类应该是稳定、可靠的基类子类应该是特定的派生类。因此在定义父类时需要遵循单一职责原则尽量保持类的简洁和高内聚性。 在使用继承时需要考虑代码的可维护性和可扩展性。因此需要注意继承层数的问题以及如何避免过度使用继承。 在子类中覆盖父类的方法时需要遵循里氏替换原则确保子类对象可以替换父类对象而不会影响代码的正确性。 在使用继承时需要注意多态性的应用即子类对象可以赋值给父类引用从而实现不同的行为。 在定义父类和子类的属性和方法时需要考虑访问修饰符的问题以便确保代码的封装性和安全性。 在 Java 中父类的属性和方法一般使用访问修饰符 protected 或 public 。 四、面向对象多态性 1、概述 Java 中的多态性指的是同一种类型的对象在不同的情况下会表现出不同的行为。具体来说多态性可以分为两种类型静态多态性和动态多态性。 静态多态性是指在编译期确定调用哪个方法例如方法重载overloading即一个类中定义了多个方法它们具有相同的名称但是参数列表不同。在调用这些方法时编译器会根据参数列表的不同选择相应的方法。 动态多态性是指在运行期根据实际情况选择调用哪个方法例如方法重写overriding即子类重写了父类的某个方法。在调用这个方法时编译器无法确定具体调用哪个方法需要在运行期根据对象的实际类型来决定。 多态性可以让程序更加灵活可以通过继承和接口实现使代码更加模块化和可扩展。 2、Java 多态性的优缺点 多态性优点 提高代码的可复用性通过多态性可以将同一个接口的不同实现作为不同的模块方便代码复用和维护。提高代码的可扩展性多态性能够很好地支持代码扩展可以在不改变原有代码的情况下通过添加新的实现类或子类扩展代码的功能。提高代码的灵活性多态性让程序在运行时根据实际情况决定调用哪个方法或实现使程序更加灵活。 多态性缺点 可能会降低程序的执行效率由于在运行时需要判断对象的实际类型可能会增加程序的运行时间和内存开销。可能会增加程序的复杂性多态性使得程序变得更加抽象和难以理解需要程序员对代码有更深入的理解和把握。 3、Java 多态性的适用场景 接口和抽象类的使用接口和抽象类定义了一组抽象的方法具体的实现由子类实现从而实现多态性。方法的重载和重写方法重载是指在同一个类中定义了多个同名但不同参数类型和个数的方法方法重写是指在不同的类中定义了同名同参数类型和个数的方法这两种方式都可以实现多态性。泛型编程泛型编程可以使用参数化类型来编写通用的代码提高代码的复用性和扩展性。运行时类型识别通过运行时类型识别可以在运行时根据对象的实际类型动态地选择调用哪个方法或实现实现多态性。 4、Java 多态性的不适用场景 构造函数不具有多态性构造函数是创建对象的方法在对象创建之前就已经确定了对象的类型因此构造函数不具有多态性。静态方法不具有多态性静态方法是类的方法不属于对象在编译时就已经确定了调用的方法因此静态方法不具有多态性。final 方法不具有多态性final 方法在编译时就已经确定了调用的方法不能被子类重写因此不具有多态性。private 方法不具有多态性private 方法只能在本类中调用不能被子类调用因此不具有多态性。 5、学习 Java 的多态性应注意哪些问题 熟悉继承和多态的概念多态性是基于继承实现的因此必须先掌握继承的概念和使用方法。 熟悉抽象类和接口在实现多态性时抽象类和接口是非常重要的工具。因此必须熟悉如何定义和使用抽象类和接口。 理解动态绑定的概念多态性实现的关键是动态绑定即在运行时动态地选择适当的方法。因此必须理解动态绑定的原理和机制。 理解重写方法的概念在多态性中子类可以重写父类的方法。因此必须理解如何在子类中重写方法以及如何在子类中调用父类的方法。 熟悉多态性的应用场景多态性可以应用于很多场景比如实现不同类型的数据结构、实现多种算法、实现插件架构等。因此必须熟悉多态性的应用场景以便在实际编程中灵活应用。 注意多态性的性能问题多态性是基于动态绑定实现的因此会带来一定的性能开销。因此在设计和实现程序时应注意多态性的性能问题避免出现性能瓶颈。 动态绑定Java 中的动态绑定是指在程序运行期间根据对象的实际类型进行方法调用的过程。具体来说Java 中的动态绑定是通过虚拟方法表实现的当程序执行时虚拟机会根据对象的实际类型在虚拟方法表中查找方法以确定调用哪个方法。 Java 中的动态绑定可以实现多态性使得不同类型的对象可以以同样的方式进行方法调用这大大提高了代码的复用性和灵活性。同时动态绑定还可以提高代码的可维护性和可扩展性因为只需要修改方法的实现而不需要修改调用该方法的代码。 需要注意的是动态绑定只适用于实例方法静态方法和 final 方法不会被动态绑定因为它们的调用是在编译期间就被解析的。此外动态绑定也会带来一些性能损失因为每次调用方法时都需要在虚拟方法表中进行查找而这个过程是比较耗时的。 6、Java 中多态性的最佳实践是什么 使用接口或抽象类定义多态类型在程序设计时应当优先考虑定义接口或抽象类作为多态类型这样可以提高代码的可扩展性和可维护性同时还能降低代码的耦合度。遵循里氏替换原则子类必须能够完全替换掉父类并且不影响程序的正确性这就是里氏替换原则。在实际开发中应当遵循里氏替换原则确保程序能够正确地使用多态性。尽量使用抽象类而不是具体类作为多态类型抽象类可以定义一些通用的行为而具体类则会实现这些行为因此使用抽象类作为多态类型可以更好地实现代码复用。尽量使用方法重写而不是方法重载在实现多态性时应当优先考虑使用方法重写而不是方法重载。方法重载只是在同一个类中实现多态性而方法重写可以在不同的类中实现多态性提高了程序的可扩展性。使用向上转型进行参数传递在实际开发中应当使用向上转型进行参数传递这样可以降低代码的耦合度提高程序的可维护性和可扩展性。避免类型检查和类型转换在实现多态性时应当避免使用类型检查和类型转换因为这样会降低程序的可维护性和可扩展性。如果必须要使用类型检查和类型转换应当尽量将它们封装到一个方法中避免在程序中重复使用。
http://www.ho-use.cn/article/10824348.html

相关文章:

  • 精品网站建设教程重庆 手机网站制作
  • 哪个网站做线路攻略做得好seo流量
  • 义乌网站建设推广织带东莞网站建设技术支持
  • 南宁网站怎么制作公司广州网站推广公司
  • 做校园网站代码微商城是怎么做的
  • wordpress登陆重定向seo俱乐部
  • 查公司资质在哪个网站wordpress中文免费主题
  • 姜堰网网站wordpress验证密码错误
  • 医院做网站开发wordpress 三主题公园
  • 政务网站平台建设 招标wordpress模板云端
  • 图片网站怎么做优化wordpress主题移动
  • 个人网站写什么好网页制作需要会哪些
  • 网站做su什么意思wordpress前端找回密码
  • 用花瓣网站上的图片做游戏行吗蚌埠企业网站建设套餐
  • 北京建设局投诉网站首页视频直播网站开发与制作
  • 买过域名之前就可以做网站了吗太原市网站制作
  • 电商网站开发平台实验浏览器主页网址大全
  • 大连小程序哪个开发公司好seo方式包括
  • 企业网站建设总结报告网络营销推广技术
  • 网站运营主要是做什么百度竞价推广价格
  • wordpress注册没有密码企业网站优化平台
  • 广州网站推广多少钱公司做网页要多少钱
  • 做食品网站需要什么资质吗大连甘井子区租房
  • 辽源市建设局网站怎么用flashfxp上传wordpress
  • 珠海市企业网站制作品牌做招聘网站要多久
  • 网站信息抽查评估网站设计理念怎么写
  • 可做推广的网站南平做网站
  • 济南1951年建站干运维为什么会废了
  • C语言网站开发pdf网站改版后百度不收录
  • 做自媒体发视频用哪些网站昆明住房和城乡建设局网站