自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(143)
  • 资源 (1)
  • 问答 (8)
  • 收藏
  • 关注

原创 【Java】获取手机文件名称补充

本地的 ADB 工具路径指的是你电脑上安装的 Android Debug Bridge(ADB)工具的路径。ADB 是 Android SDK 中的一个工具,用于与连接到计算机上的 Android 设备进行通信。你需要确保 ADB 已正确安装,并知道其在你计算机上的位置。请查看你的 Android SDK 安装位置,找到 platform-tools 文件夹,然后找到其中的 adb 或 adb.exe 文件。将这个路径设置为你的 Java 代码中的 adbPath。

2024-03-11 01:55:26 420

原创 【Java】读取手机文件名称

首先,确保你已经连接了你的手机并已启用 USB 调试模式。然后,你需要使用 Android Debug Bridge(ADB)工具来获取手机文件列表。此代码片段调用 ADB 命令 adb shell ls,并将输出的文件列表读取到 fileList 中。请确保你的手机已连接,并且 ADB 工具的路径正确。deviceID 为你设备的 ID(可以通过 adb devices 查看),androidPath 为你想要列出文件的 Android 设备路径。替换 adbPath 为你本地的 ADB 工具的路径,

2024-03-11 01:51:56 754

原创 【JAVA】java项目提交到gitee哪些文件可以不提交

在Java项目中,有一些文件是不需要提交到版本控制系统的,比如Gitee。文件,并在其中配置需要忽略的文件模式。这样,在提交代码时,Git就会自动忽略这些配置的文件,避免将它们提交到版本库中。为了忽略这些不需要提交的文件,可以在项目的根目录下创建一个。

2024-02-27 20:29:04 392

原创 字符串与数组的异同

Java 中的字符串(String)和数组(Array)是两种不同类型的数据结构,它们有一些相似之处,同时也有一些显著的区别。

2024-01-16 08:34:21 716

原创 PLC之偏移量

通常,地址由字(Word)和位(Bit)组成,如“W3.2”表示第3个字的第2个位。具体的PLC制造商和型号可能有不同的寻址和偏移量规则,应该参考PLC的文档和规范以了解如何正确计算和使用偏移量来访问内存中的位。在PLC编程中,正确计算偏移量非常重要,是以确保对特定位的读取和写入操作是准确的。如果要访问或操作一个特定字节内的位,你可以使用字节偏移量。例如,一个偏移量为3的位表示字节内的第4位。在这种情况下,偏移量通常从0开始,表示一个字内的第一个位。例如,一个偏移量为7的位表示一个字内的第8位。

2023-10-31 17:47:12 1684

原创 C#编程学习

C#提供了许多用于读取和写入文件的类,如FileStream、StreamReader、StreamWriter等。学习C#需要时间和实践,继续学习和不断练习,逐渐深入理解这些概念,你将能够开发出强大的C#应用程序。- 它是.NET框架的一部分,用于开发Windows应用程序、Web应用程序和服务等。- 最终的学习目标是能够应用你的知识来开发实际的项目,以提高你的编程技能。- 利用在线教程、书籍、视频课程和C#社区来不断提高你的编程技能。- C#是一种面向对象的语言,支持类、对象、继承和多态。

2023-10-24 17:58:44 277

原创 C#编程学习

C#提供了许多用于读取和写入文件的类,如FileStream、StreamReader、StreamWriter等。学习C#需要时间和实践,继续学习和不断练习,逐渐深入理解这些概念,你将能够开发出强大的C#应用程序。- 它是.NET框架的一部分,用于开发Windows应用程序、Web应用程序和服务等。- 最终的学习目标是能够应用你的知识来开发实际的项目,以提高你的编程技能。- 利用在线教程、书籍、视频课程和C#社区来不断提高你的编程技能。- C#是一种面向对象的语言,支持类、对象、继承和多态。

2023-10-24 17:57:19 258

原创 【0927】记录

1.文件流File以前的过期了,只能使用绝对路径才能递归出文件夹中所有文件。2.创建文件 new File的文件不存在,不会新建文件,而是直接抛出异常。3.输入流读取文件乱码,已解决。在记事本打开写入再保存,又可以了。方法,其他的读取路径。

2023-09-27 10:50:29 52

原创 【Java配置文件】properties文件乱码解决

在 Java 中,字符通常以 Unicode 编码表示,而 Properties 类默认采用 ISO-8859-1 编码来处理字符。因此,当我们在 Properties 文件中存储中文字符时,就可能导致乱码问题的出现。2. 转换编码:如果无法修改Properties文件的编码格式,我们可以在读取和写入Properties文件时,进行编码转换。1. 使用UTF-8编码:将Properties文件的编码格式设置为UTF-8,可以避免中文乱码问题。根据具体情况选择合适的方法,以确保正确处理中文字符。

2023-09-26 15:11:02 5452

原创 异常记录-VS

未理会这个提示,可以打开运行项目,只是会跳出这个弹窗。无法关闭这个异常的窗口。

2023-09-23 11:59:20 69

原创 JFrame的使用与注意事项

3. 组件的绘制和更新:在需要更新窗口界面时,要使用repaint()方法来触发窗口的重绘,并在需要动态更新组件内容时,使用repaint()和revalidate()方法来实现组件的重绘和重新布局。2. 布局管理器:JFrame支持多种布局管理器,如FlowLayout、BorderLayout、GridLayout等,可以根据需要选择适合的布局管理器来组织窗口中的组件。5. 窗口事件:JFrame提供了一系列的窗口事件,如窗口打开、关闭、最小化、最大化等,可以通过注册窗口监听器来处理这些事件。

2023-06-21 14:10:59 1820

原创 【Java】JSplitPane

JSplitPane是Java Swing库中的一个组件,用于创建可拖动的分割面板,将一个容器分割为两个可调整大小的子面板。它提供了用户界面中显示和控制两个组件的分割线,可以让用户根据需要调整两个子面板的大小。通过使用JSplitPane,您可以轻松地在Java Swing应用程序中创建可调整大小的分割面板,为用户提供更灵活的界面布局和交互体验。在这个示例中,我们创建了一个包含两个空白面板的水平分割面板,并设置了初始的分割线位置为面板的中间位置。线的样式,并根据用户操作对子面板进行动态调整。

2023-06-12 20:03:30 1059

原创 【log】逃避现实

需要注意的是,适度的现实逃避可以作为一种缓解压力和放松心情的方式,但过度的逃避和长期避开现实问题可能会带来负面影响。重要的是,人们应该学会有效地应对现实生活中的挑战和困难,寻找积极的解决办法,同时保持与现实的联系和积极的心态。消遣和娱乐:现实生活中的日常琐事和例行工作可能会令人感到乏味和厌倦,人们希望通过逃避现实来寻找娱乐和刺激感。通过沉浸在幻想和虚拟世界中,人们可以暂时远离痛苦和困扰,获得情感上的安慰和满足。面对不确定的情况和困难的决策,人们可能会感到不安和恐惧,寻找逃避的方式来减轻这种心理压力。

2023-06-11 06:00:00 66

原创 【log】为什么沉迷网络小说

这些作品在广告宣传、推荐等方面投入了大量资源,吸引了大量的读者。2. 人际关系受影响:长时间的网络小说阅读可能导致与现实世界中的亲友、同学和同事的交流减少,影响人际关系的建立和维护。1. 自我管理和控制:设定合理的阅读时间,合理安排学习、工作和娱乐的时间,避免沉迷于网络小说而忽视其他重要事务。3. 依赖和逃避现实:沉迷于虚拟的网络小说世界可能成为一种逃避现实和应对问题的方式,影响个人的心理健康和成长。2. 多元化兴趣和爱好:拓宽兴趣爱好的范围,尝试参与其他形式的娱乐和文化活动,保持多样化的生活体验。

2023-06-10 04:00:00 422

原创 Java代码抽取成方法

2. 长方法:如果一个方法过长,可读性差,或者完成了多个功能,可以将其拆分为多个较小的方法,每个方法负责单个功能,提高代码的可读性和可维护性。这些只是一些常见的情况,实际上,在编写代码时,你可以根据需要自由地进行方法的抽取和封装,以提高代码的可读性、可维护性和重用性。3. 复杂的逻辑:如果某个方法中包含复杂的逻辑判断、循环或算法,可以将其提取为一个独立的方法,以提高代码的可读性和可维护性。1. 重复的代码块:如果你在多个地方有相同或类似的代码块,可以将其提取为一个独立的方法,以便在需要时进行重用。

2023-06-09 10:43:35 680

原创 以太网的来历

以太网使用了一种称为CSMA/CD(Carrier Sense Multiple Access with Collision Detection,带有碰撞检测的载波侦听多路访问)的协议来协调多个设备之间的数据传输。同时,以太网也不断演进和发展,提供了更高的传输速率、更低的延迟和更强的可靠性,以满足不断增长的网络需求。它的设计目标是提供一种高速、可靠和灵活的局域网技术,能够适应不断增长的数据传输需求。数据被分成小块,每个小块被封装在一个帧中,并包含了目标设备的地址、源设备的地址和其他控制信息。

2023-06-03 04:00:00 96

原创 {swing}练习:按钮加入标签

B类里面有一个窗口和面板,A类里面有两个按钮和JTabbedPane,将A类里面的两个按钮和JTabbedPane放入B类的面板中,并显示出来。B类创建了一个窗口和面板,在面板中放置了A类的按钮和JTabbedPane组件。你可以运行main方法来查看窗口的显示效果。

2023-06-02 17:12:15 114

原创 ApplicationContextException

添加正确的依赖:确保您的项目的构建文件(例如 Maven 的 pom.xml 或 Gradle 的 build.gradle)中包含正确的 Web 服务器相关依赖项。是一个 Spring Boot 应用程序启动时的异常消息,它指示无法启动 Web 服务器,因为缺少了 ServletWebServerFactory bean。检查配置:检查您的应用程序的配置文件,确保没有任何配置错误。如果您使用的是 Spring Boot,通常情况下,添加正确的依赖并检查配置就可以解决该异常。确保您的项目中包含了。

2023-05-30 00:15:00 1166

原创 【swing】图片路径

与您的类位于相同的目录中。如果图片资源文件位于子目录中,您可以使用相对路径指定子目录路径,例如。如果图片资源文件位于类路径中或在 JAR 文件中,您可以使用类加载器来加载图片。如果图片资源文件与您的类位于相同的目录或子目录下,可以使用相对路径来加载图片。无论使用哪种方法,请确保指定的图片资源路径和文件名正确,并与实际文件的位置相匹配。如果您知道图片资源文件的绝对路径,可以直接使用绝对路径来加载图片。这种方法适用于从类路径或 JAR 文件中加载资源。替换为您图片资源文件的实际绝对路径。方法三:使用类加载器。

2023-05-28 00:30:00 226

原创 【MySQL】驱动警告

过去,`com.mysql.jdbc.Driver'类用于为Java应用程序注册MySQL Connector/J驱动程序。然而,使用较新版本的MySQL Connector/J驱动程序时,驱动程序类通过服务提供程序接口(SPI)机制自动注册。另外,请确保在类路径中有最新版本的MySQL Connector/J驱动程序。驱动程序通过SPI自动注册,通常不需要手动加载驱动程序类。

2023-05-27 00:15:00 2021

原创 【swing】SplitPanel

作为容器,并在左边的面板中放置三个按钮,以及在右边的面板中显示图片。当使用Java的Swing库来实现一个左右风格的SplitPanel时,可以使用。在构造函数中,首先设置窗口的标题、关闭操作和首选大小。添加到窗口中,并设置窗口的位置居中。方法创建按钮,并将其添加到左边面板。用于显示图片,默认显示盖伦的图片。作为主要容器,并设置分割条的位置。布局管理器,垂直排列三个按钮。在事件调度线程中创建并显示窗口。方法将左边面板和右边面板添加到。在这个示例中,创建了一个。,当按钮被点击时,调用。方法来显示对应的图片。

2023-05-26 00:15:00 640

原创 【swing】显示一个包下所有的java文件

类获取指定包路径下的所有Java文件,并遍历每个文件。对于每个文件,创建一个。在构造函数中,首先设置窗口的标题、关闭操作和首选大小。在示例中,假设要显示的Java文件位于。添加到窗口中,并设置窗口的位置居中。方法将每个Java文件的内容添加到。中,并使用文件名作为选项卡的标题。在事件调度线程中创建并显示窗口。来显示文件内容,并将其放置在。变量设置为您实际的包路径。在这个示例中,创建了一个。

2023-05-26 00:15:00 136

原创 练习-在上次关闭位置启动窗口

保存窗口位置:在窗口关闭时,获取窗口的位置信息(x和y坐标)并将其保存到持久存储中,例如配置文件或数据库。比如这次使用这个窗口,导致窗口被移动到了右下角。关闭这个窗口,下一次再启动的时候,就会自动出现在右下角。加载窗口位置:在窗口启动时,从持久存储中加载上次保存的窗口位置信息。设置窗口位置:在窗口启动后,使用加载的位置信息通过。方法将窗口放置在正确的位置。方法获取窗口的位置信息。

2023-05-24 00:30:00 400

原创 【swing】关闭,最大化按钮禁用

请注意,此示例仅演示了如何在菜单栏中实现关闭功能并禁用窗口的最大化和关闭按钮。然后,我们为该菜单项添加了一个事件监听器,当用户选择"Exit"菜单项时,会执行监听器中的代码。,并将其设置为窗口的菜单栏。我们创建了一个名为"File"的菜单。方法中,我们设置了窗口的标题和大小,并禁用了默认的关闭操作。方法来确保窗口在事件分派线程中创建和显示。在这个示例中,我们创建了一个名为。方法来关闭窗口并释放资源,并使用。在菜单中,我们创建了一个菜单项。,并将其添加到菜单栏中。在事件监听器中,我们调用。

2023-05-23 14:04:42 853 1

原创 SQL Server 数据转换为 MySQL 数据

需要注意的是,由于 SQL Server 和 MySQL 存在一些语法差异,因此可能需要修改 SQL 语句以确保其在 MySQL 中的正确执行。首先,需要将 SQL Server 数据导出为一个可以被 MySQL 导入的格式,例如 CSV 格式或 SQL 语句。SQL Server 和 MySQL 使用不同的数据类型,因此在导入数据之前需要将数据类型进行转换。在 MySQL 中创建与 SQL Server 数据库和表相同的结构,包括表名、列名和数据类型等。1.导出 SQL Server 数据。

2023-05-08 06:59:14 4989

原创 【Java】字符串

首先,它使得字符串在多线程环境中是线程安全的,不需要额外的同步措施。其次,不可变性提供了字符串池(string pool)的机制,可以节省内存和提高性能。字符串池是一个存储字符串常量的缓存区域,当创建字符串时,会首先检查池中是否已经存在相同值的字符串,如果存在则直接返回引用,避免创建重复的字符串对象。每次对字符串进行修改时,实际上都会创建一个新的字符串对象。了解字符串的不可变性有助于我们更好地理解字符串操作的特性和原理。操作符将两个字符串拼接在一起时,实际上会创建一个新的字符串对象。字符串对象不会被修改。

2023-05-04 23:50:28 55

原创 【无标题】

然后,我们介绍了如何使用Java编写串口通信程序,包括使用gnu.io、JSSC和RXTX等库进行串口通信的示例代码。在实际开发中,还需要考虑如何处理和显示传感器数据,如何与下位机进行通信和控制,以及如何设计和实现上位机的用户界面等问题。在进行通信时,应考虑通信协议、数据格式、通信速率等因素,并根据需要进行数据的校验和加密。在进行控制时,应考虑控制命令的类型、格式、精度等因素,并根据需要进行数据的转换和计算。在处理数据时,应考虑数据的类型、格式、精度等因素,并根据需要进行转换和计算。二、Java图形界面。

2023-04-26 21:34:00 1394

原创 【Java】内部类

内部类可以访问外部类的所有成员变量和方法,包括私有成员,而外部类不能访问内部类的成员。成员内部类是定义在一个类内部的类,并且不是静态的。包括成员内部类、局部内部类、匿名内部类和静态内部类。Java中有四种类型的内部类:成员内部类、局部内部类、匿名内部类和静态内部类。匿名内部类是没有名字的内部类,通常用于创建一个实现某个接口或继承某个类的对象。内部类可以访问外部类的所有成员变量和方法,包括私有成员,但外部类不能访问内部类的成员。成员内部类和静态内部类可以拥有静态成员,局部内部类和匿名内部类不能拥有静态成员。

2023-04-24 21:15:09 389

原创 【Java】try-catch

如果文件不存在,则会抛出 FileNotFoundException 异常,程序将跳转到 catch 块,输出错误消息并打印堆栈跟踪。在上面的代码中,我们使用了一个 Exception 类型的变量 e 来捕获异常。在 Java 中,使用 try-catch 块可以处理可能会抛出异常的代码。try 块包含可能会抛出异常的代码,而 catch 块用于捕获并处理异常。当异常被抛出时,程序将跳转到 catch 块,其中的代码将处理异常。您可以根据需要编写多个 catch 块来处理不同类型的异常。

2023-04-22 22:59:48 109

原创 【Java】数组

如果您需要动态地添加或删除元素,则应该使用 Java 中的集合类,如 ArrayList 或 LinkedList。这些集合类可以根据需要自动调整大小,并提供了一组实用的方法来操作它们。使用集合类可以使代码更加灵活和易于维护。Java 中的数组是固定长度的,一旦创建后无法更改其大小。

2023-04-21 23:03:12 427

原创 【Java小知识】 String

Java 中的 String 类是一个不可变类。这意味着一旦创建了一个字符串对象,就无法更改该对象的值。例如,如果您创建了一个字符串变量,并将其设置为 "Hello",则无法更改该变量的值为 "World"。相反,如果要更改该值,则必须创建一个新的字符串对象并将其分配给该变量。这种不可变性提供了安全性和可靠性,因为它确保在多个线程和并发操作中不会更改字符串的值,从而避免了一些常见的错误和异常。

2023-04-20 22:26:36 51

原创 【Java】小知识:变量

强制类型转换是指当数据类型范围大的变量赋给数据类型范围小的变量时,需要通过强制类型转换来完成。需要注意的是,当数据类型范围大的变量赋给数据类型范围小的变量时,可能会发生数据丢失或精度降低的情况,因此需要谨慎使用强制类型转换。类作用域是指在类中定义的变量,它的作用域从定义变量的位置开始,直到类的结束位置。方法作用域是指在方法中定义的变量,它的作用域从定义变量的位置开始,直到方法的结束位置。自动类型转换是指当数据类型范围小的变量赋给数据类型范围大的变量时,会自动将小范围的数据类型转换为大范围的数据类型。

2023-04-19 23:02:59 394

原创 【Java】标识符

同时,为了代码的可读性和可维护性,建议在使用标识符时遵循一定的命名约定,例如使用驼峰命名法(camel case)或下划线命名法(underscore case)等。Java中的标识符(identifier)是指程序中用来命名变量、方法、类、包等元素的名称。不能使用Java关键字作为标识符,例如“class”、“public”、“static”等。标识符是大小写敏感的,例如“name”和“Name”是两个不同的标识符。标识符的其他部分可以是字母、数字、下划线或美元符号。标识符的长度没有限制。

2023-04-18 23:02:53 625

原创 【Java】 “new“ 关键字

需要注意的是,"new" 关键字可能会分配内存,因此如果你在一个循环中频繁地创建新的对象,可能会对系统资源造成负担。在这种情况下,你可以考虑重用对象或使用对象池等技术来提高性能和效率。在这个例子中,我们使用了 "new" 关键字来创建一个新的字符串对象,然后将其分配给名为 "myString" 的变量。你可以用类似的方式创建其他类型的对象,如数组、集合等等。在Java中,如果你想要创建一个新的对象,你可以使用 "new" 关键字。

2023-04-17 23:00:35 380

原创 【Java】遍历集合中的元素

使用 forEach() 方法不仅简单,而且还可以让代码更加清晰易读。此外,这种方法也支持并行遍历,可以更快地处理大量数据。Java 8 中提供了一种简便的遍历集合的方法,使用 forEach() 方法可以很容易地遍历集合中的元素。上面的代码使用 forEach() 方法和 Lambda 表达式来遍历集合,将其中的每个元素打印到控制台上。这是一个简单的 Java 技巧,希望对您有所帮助。

2023-04-16 21:07:03 194

原创 【Idea】分屏显示

当您在编写代码时,可能会发现自己需要查看或编辑某个文件中的某一部分,但是不想打开整个文件。在这种情况下,您可以使用 IDEA 的“分屏”功能,将同一文件分成两个窗口,以便同时查看和编辑文件的不同部分。在弹出的上下文菜单中,选择“Split Vertically”或“Split Horizontally”(分别表示垂直分屏和水平分屏)。这样,您就可以在同一编辑器窗口中同时查看和编辑文件的两个不同部分了。单击标签栏中文件标签的标题,将文件标签分成两个。在编辑器窗口中打开要分屏的文件。

2023-04-16 21:05:35 5688

原创 【Idea】Refactor

功能包括很多常用的代码重构方式,例如重命名变量、提取方法、内联方法、抽象类、接口和继承等。使用这些重构方式可以让你的代码更加清晰和易于维护,避免一些常见的代码问题。另外,如果你想要提取一个方法来减少重复代码,可以选中需要提取的代码块,然后右键点击选择。这个操作会自动修改所有相关的代码,确保代码的一致性和正确性。在弹出的对话框中,你可以输入新方法的名称和参数,然后点击确定即可。这个小技巧可以帮助你快速重构代码,并提高代码质量和可维护性。例如,如果你想要重命名一个变量,在变量名上右键点击,选择。

2023-04-15 23:35:59 803

原创 try-with-resources

接口的资源,比如文件、数据库连接、网络连接等。这个语句可以在代码块结束时自动关闭资源,而不需要显式调用。这个小技巧可以帮助你更方便地管理资源,并避免资源泄漏和错误处理中的常见问题。对象将自动被关闭,无需手动调用。在Java中,可以使用。语句来自动关闭实现了。

2023-04-15 23:34:06 98

原创 Idea小技巧 #1:使用Live Templates快速输入代码

要查看和修改Live Templates,可以打开Idea的Settings窗口,然后选择“Editor” > “Live Templates”选项卡。在这里,你可以查看现有的Live Templates,并创建新的模板来满足你的需要。Idea提供了Live Templates功能,可以让你快速输入常用代码片段。通过简单的键入几个字符,就可以生成一个完整的代码块。Live Templates还可以使用变量,使你可以更快速地编写代码。是一个变量,用于表示你要遍历的数组。变量,然后输入要遍历的数组名。

2023-04-14 23:22:06 171

原创 Java小技巧 #1:使用StringBuilder代替String拼接

当我们需要拼接多个字符串时,使用String的"+"运算符会导致性能问题,因为每次拼接都会创建一个新的String对象。而使用StringBuilder则可以避免这个问题,因为它可以在同一个对象上进行操作,避免了创建多个对象的开销。使用StringBuilder比直接使用String拼接字符串更加高效,特别是在需要拼接大量字符串时。

2023-04-14 23:19:24 193

Java+单例+多例+工厂+枚举+动态代理===》演示

单例设计模式案例演示 单例模式,是一种常用的软件设计模式。通过单例模式可以保证系统中,**应用该模式的这个类只有一个实例**。即一个类只有一个对象实例。 #### 单例设计模式实现步骤 1. 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 2. 在该类内部创建一个唯一的对象 3. 定义一个静态方法返回这个唯一对象。 #### 例设计模式的类型 根据实例化对象的时机单例设计模式又分为以下两种: 1. 饿汉单例设计模式 2. 懒汉单例设计模式 多例设计模式案例演示 #### 多例设计模式的作用 多例模式,是一种常用的软件设计模式。通过多例模式可以保证系统中,应用该模式设计的类有**固定数量**的对象产生。 **说白了,多例设计模式就是保证使用该模式的类会有固定数量的该类对象产生** #### 实现步骤 ​ 1.创建一个类, 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 ​ 2.在该类内部产生固定数量的对象 ​ 3.提供一个静态方法来随机获取一个该类的对象 枚举的定义和使用 工厂设计模式案例演示 动态代理案例演示

2022-03-25

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除