- 博客(55)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java反射(3万字总结,最后的最后我想要一个赞,您的支持是我的动力)
文章目录前言一、关于反射与注解的那些话(了解)二、编程语言类型1.静态类型语言2.动态类型语言2.1Java与动态性三、反射1.反射的定义2.反射的应用场景3.关于反射学习的进程的科学安排四、类加载器1.类加载器的分类1.1启动类加载器(Bootstrap Classloader)1.2扩展类加载器(Extension ClassLoader)1.3应用程序类加载器(Application Classloader)五、Class类1.在运行时类和接口对应的Class对象2.在运行时枚举和注释(即注解)也存在
2021-03-16 20:33:20
4506
23
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)
文章目录前言一、SQL简述1.SQL的概述2.SQL的优点3.SQL的分类二、数据库的三大范式三、数据库的数据类型1.整数类型2.浮点数类型和定点数类型九、MySQL数据表简单查询1.简单查询概述2.查询所有字段(方法不唯一只是举例)3.查询指定字段(sid、sname)4.常数的查询5.从查询结果中过滤重复数据6.算术运算符(举例加运算符)十、函数1.聚合函数1.1、count()1.2、max()1.3、min()1.4、sum()1.5、avg()2.其他常用函数2.1、时间函数2.2、字符串函数2.
2021-03-03 20:52:12
625791
386
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java网络编程——TCP通信原理(这个是真简单哦!!!点进来看看就知道了)
文章目录前言一、TCP通信概述二、TCP的特点三、TCP通信的实现原理四、TCP通信原理实现(代码演示)总结前言今天继续这几天对于Java网络编程的一个小尾巴——TCP通信原理一、TCP通信概述TCP协议用来控制两个网络设备之间的点对点通信,两端设备按作用分为客服端和服务端。服务端为客户端提供服务,通常等待客服端的请求消息,有客服端请求到达之后,及时提供服务和返回响应消息;客户端向服务端主动发出请求,并接受响应消息。1、首先启动服务端程序,并开始等待网络中的客户请求,然后客服端主动向服务端发出连接
2021-03-01 18:25:04
2234
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java网络编程——UDP通信原理(超详细解析一看就懂哦!!!)
文章目录前言一、TCP和UDP概述二、UDP1.UDP通信概述2.UDP通信特点3.UDP通信传输实现的基石3.1、DatagramPake常用方法3.2、DatagramSocket常用方法4.UDP通信实现原理5.UDP通信原理(代码实现)总结前言继续今天我们的Java网络编程——TCP和UDP通信一、TCP和UDP概述传输层通常以TCP和UDP协议来控制端点与端点的通信TCPUDP协议名称传输控制协议用户数据包协议是否连接面向连接的协议。数据必须要建立连接
2021-02-28 13:51:17
8945
19
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 多线程的线程安全与互斥解决方案——同步代码块/同步函数
文章目录一、线程安全与互斥(案例说明)1.经典案例2.代码实现小结二、解决思路1.解决办法——同步代码块2.同步代码块(SellTicket线程)3.解决办法——同步函数2.同步函数(SellTicket线程)总结一、线程安全与互斥(案例说明)1.经典案例1、有100张电影票2、设置三个窗口同时卖电影票3、观察卖电影票的过程2.代码实现代码如下(SellTicket线程):public class SellTicket implements Runnable { // 定义100张票 p
2021-02-25 19:17:03
2176
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 多线程的创建
文章目录前言一、线程的创建概述二、Thread创建线程1.创建步骤2.代码实现三、Runnable创建线程1.创建步骤2.代码实现四、Callable创建线程1.Callable创建线程的优势2.代码实现总结前言记得好几年前无VIP下载视频的时候感觉有点慢,后来推出了花钱开了个VIP,不光能看很多专享电影,这下载速度也是哐哐的上去了,当时觉得这VIP开得值,现在学了多线程,以及了解了seek,感觉VIP没有那么高 大 上了,就是没VIP的时候,一个工作一个人做,有了VIP之后一个工作多人工作,这效率就
2021-02-23 19:39:34
1153
22
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 二分查找
文章目录前言一、二分查找是什么?二、原理分析三、过程演示四、代码实现总结前言这几天觉得这些基础算法还是很有意思的,所以就继续“玩”了一下,又发现一个有趣的东西,建立排好序的集合基础上进行的算法——二分查找,这不刚刚弄懂了一点排序,就迫不及待的学起来了!!!一、二分查找是什么?二分查找是一种快速检索数据的算法,又称折半查找。使用二分查找是需要前提的,被查找集合是有序的否则无法查找,查找到以后返回被查找数的索引(下标)。二、原理分析二分查找算法其实就是每次都查找中间那个数。如果排序是升序排列,.
2021-01-27 21:08:04
1071
7
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 选择排序(简单)
文章目录一、简单选择排序原理分析二、排序过程演示二、使用步骤1.引入库2.读入数据总结一、简单选择排序原理分析在需要排序的的有序性集合中取出第一个元素依次与其后的每一个元素比较,如果大于后面的某个数,则两个数交换位置,在第一次排序完成后,第一个元素存放的就是该有序集合的最小值。取出第二个元素依次与其后的每一个元素比较,如果大于后面的某个数,则两个数交换位置,在第二次排序完成后,第一个元素存放的就是该有序集合的次小值。取出第三个元素依次与其后的每一个元素比较,如果大于后面的某个数,则两个数交换位置,在
2021-01-27 19:23:52
2883
26
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 冒泡排序
文章目录前言一、冒泡排序概念二、原理分析小结二、原理分析1.排序方式小------->大2.排序方式大------->小总结前言学习Java已经快两个月了,一开始说的是学Java需要的逻辑能力不强,这话没毛病,说的是不强,没说不要,今天我们就简绍下我们即将遇到的需要一点逻辑能力的简单算法,也是面试最爱问的Java基础算法之一——冒泡排序。一、冒泡排序概念冒泡排序是一种对数组中数据元素排序的方法。每一次对数组的遍历都是将较大数交换到后面,重复这个过程,每次遍历都会将最大值换到最后一位,每
2021-01-25 19:27:27
3310
22
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 单例模式(饥汉式、懒汉式)
文章目录一、简单的单例模式要点二、实现步骤(详细)1、创建一个简单的构造函数2、构造函数私有化小结3、通过一个公有的方法提供访问小结4、创建一个成员变量小结5、简单单例函数优化(赖汉式)6、简单单例函数(饥汉式)三、总结一、简单的单例模式要点1、某个只能有一个对象2、必须自行创建这个实例3、必须向整个系统提供这个实例二、实现步骤(详细)1、创建一个简单的构造函数代码如下(创建一个构造函数):public class SingleInstance { public SingleInst
2021-01-18 20:01:49
1842
26
原创 JVM内存结构
JVM内存结构jvm将虚拟机分为5大区域,分别是程序计数器、虚拟机栈、本地方法栈、Java堆、方法区1、方法区:存放已被加载的类的信息、常量、静态变量、就是编译器编译后的代码数据,后来在jdk1.8后编程了元数据区代替,方法区被分成两部分分别是:加载的类信息、运行时常量池,这个运行时常量池包存在堆中2、堆:Java堆是所有线程共享的一块内存,几乎所有对象的实例和数组都要在堆上分配内存,因此该区域经常发生垃圾回收操作3、本地方法栈:线程私有,保存native方法的信息,当一个jvm创建的线程调用nat
2022-04-08 09:10:14
1086
原创 关于Java顶级父类
Java的顶级父类是?objectobject有哪几个自带的方法(最少说5个)1、clone2、equals3、hashCode4、getClass5、wait6、notify7、notiftAll8、toString
2021-07-05 09:22:07
724
原创 SpringCloud-Hystrix-服务熔断
文章目录服务熔断结合现实生活例子解释服务熔断的三种状态(close、half open、open)服务熔断结合现实生活例子解释如果某个服务发生了异常,那么就需要对每个请求都 要等待。就会是整个程序的并发处理能力极具下降。这种情况如何处理?就需要使用到 Hystrix 的熔断服务,直接将此服务断开以保证其他服务的高可用。熔断(circuit breaker),例如保险丝,电路中正确安置保险丝,保险丝就会在电流异常 升高到一定的高度和热度的时候,自身熔断切断电流,保护了电路安全运行。熔断就跟保险 丝一样
2021-06-21 19:51:37
780
原创 数据库引擎MyISAM和InnoDB的区别
文章目录一、MyISAM二、InnoDB小结一、MyISAM1、不支持事物,但每次查询都是原子性2、支持表级锁,即每次操作是对整个表加锁3、采用非聚簇索引,索引文件的数据域储存指向文件的指针,弗索引域主索引一致,但是辅索引不用保证唯一性4、储存表的总行数5、储存表在文件夹中的显示:一个MyISAM表有三个文件:索引文件、表结构文件、数据文件二、InnoDB1、支持ACID事物,支持事物的四种隔离级别2、支持行级锁及外键约束,因此支持并发3、不储存表的总行数4、一个InnoDB引擎储
2021-05-31 11:30:22
462
1
原创 事务四大特性——一致性(Consistency)——MVCC
文章目录一、MVCC简绍二、聚簇索引中两个必要隐藏列三、readview一、MVCC简绍英文全称Multi-Version Concurrency Control,中文全称是多版本并发控制**作用:**读取数据时通过一种类似快照的方式将数据保存下来,这样读锁和写锁就不冲突,不同的事物session会看到自己版本的数据,版本链,而MVCC只在READ COMMITTED和REPEATABLE READ 两个隔离级别下工作,其他两个隔离级别和MVCC不兼容,因为READ UNCOMMITTED总是读取最
2021-05-31 10:36:49
460
1
原创 由mybatis架构引发的工厂模式介绍
文章目录前言一、工厂模式介绍二、使用工厂模式的优缺点1.优点2.缺点三、关于工厂模式理解(实景+代码演示)总结前言接触mybatis框架已近过了好长时间了,但是对于mybatis的架构图(如下Mybatis的架构图)还是不太懂,这个框架的为什么要多做了好多无用功,建各种容器那不太懂,后来发现原来是mybatis引入了,一个设计模式——>工厂模式,这样目标一下就清晰了,干工厂模式一、工厂模式介绍工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模
2021-05-07 20:42:44
514
2
原创 Spring——bean的基本配置、依赖注入
文章目录前言一、bean的基本配置1.基本配置2.spring容器3.从 IOC 容器中获取 Bean二、依赖注入1.属性注入(为了大家理解光文字没意思,加上代码图片)1.1创建一个测试需要用的cat类1.2配置resources 文件夹下 spring-2.xml文件1.3测试1.构造方法注入(用得不多)1.1构造方法注入值1.2按照 index 来匹配构造方法的参数1.3通过参数名称来匹配输入参数总结前言今天我想给大家随便说说的内容在下面一、bean的基本配置1.基本配置看我圈里的东西,主
2021-04-30 15:35:19
899
原创 spring的介绍、引用 spring 的依赖包、resources下xml的配置、简单示例
文章目录前言一、spring 简介二、spring 特点三、IOC概念四、DI概念五、使用spring实现一个简单程序(在jdk,还有maven安装好的前提下)1.引用 spring 的依赖包2.引用 spring context的依赖包3.编写dog类4.在 resources 文件夹中创建 spring-2.xml (名字自己定)的 spring 配置文件5.将 Dog 类配置到spring-2.xml,让其接受 spring 的管理6.测试总结前言由于近期比较忙,偷个闲,今天给大家说说Java
2021-04-29 20:58:27
1167
3
原创 AJAX介绍及原理
文章目录一、AJAX介绍二、AJAX实现原理三、JavaScript实现AJAX示例(开发中不太用,但是有助于理解AJAX的实现过程)2.读入数据总结一、AJAX介绍疑惑:我使用的是微软的浏览器,上面我圈上的红圈的内容为什么明明我没有按确认搜索就出来了呢?解惑:其实这个是动态加载出来得,这里面其实它的页面没有刷新,而这后面的操作者就是ajaxAJAX简介:ajax英文全称:A:Asynchronous(异步) J:javascript A:and X:xml中文名:异步刷新
2021-04-14 19:42:12
316
原创 Servlet——Servlet体系结构、获取Servlet初始化参数
文章目录一、Servlet体系结构介绍二、获取Servlet的初始化参数1.配置web.xml2.编写Servlet获取初始化参数3.启动服务器一、Servlet体系结构介绍在开发中需要继承抽象类HttpServlet1、Servlet主体关系如下:2、Servlet需要初始化,那么就需要有初始化参数。这时就得有配置对象:ServletConfig3、Servlet需要运行,需要运行环境,需要一个上下文对象:ServletContext4、Servlet要获取客户端的请求,就需要一个请求对象
2021-04-06 21:12:38
255
3
原创 Java——泛型
文章目录Java中泛型的概述Java中泛型的语法规则泛型集合泛型方法泛型方法示例(代码演示)小结泛型类泛型类示例(代码演示)小结泛型接口泛型接口示例(代码演示)高级泛型总结Java中泛型的概述泛型广泛的类型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型,其实就是将程序运行时可能发生的问题,转变为编译时的问题,以此提高程序的可读性和稳定性(尤其在大型程序中更为突出)。白话说就是泛型是提供给javac编译器
2021-03-30 19:38:17
413
3
原创 Servlet——Java Web Application及Servlet生命周期
文章目录前言Servelt介绍一、什么是Java Web Application1.Web Application的基本结构什么是Servlet二、Tomcat介绍1.关于Tomcat的目录2.关于Tomcat的安装配置2.关于Tomcat的安装配置三、Servlet生命周期init() 方法service() 方法doGet() 方法doPost() 方法destroy() 方法servlet生命周期图解及步骤说明servlet生命周期代码实例演示前言J3 -本文注重的是:1、什么是Java
2021-03-29 21:49:55
699
8
原创 Servlet——HTTP介绍(帅气、漂亮的都会点赞的哦!!!)
系列文章目录第一章 HTTP协议介绍文章目录系列文章目录前言一、HTTP协议简绍二、HTTP工作原理三、HTTP请求消息结构四、HTTP协议常见状态五、使用程序获取网页内容显示(代码演示)小结前言本文主要简绍的内容是:1、什么是http协议2、http的工作原理3、http请求消息结构4、http协议常见状态一、HTTP协议简绍http 的英文全称是Hyper Text Transfer Protocol(超文本传输协议),是用于万维万维网服务器传输超文本,到本地浏览器的传输
2021-03-29 19:09:07
378
5
原创 前端——html(基础)
双标签<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <h1>
2021-03-29 10:42:25
1266
1
原创 索引的基本原理
索引的基本原理随便说说其实在日常生活中对于所以我们一点都不陌生,比如小时候刚刚学认字是所用的字典的目录,相对于字典本身就是字典的索引,所以索引是需要有对象的,这里我们不谈所以的对象,仅仅对索引的基本原理做一个了解。有点东西**索引用来快速寻找那些具有特定的记录。**如果没有索引,一般来说执行查询时是需要遍历整个表的索引的原理:把无序数据变成有序的查询流程如下:...
2021-03-23 19:06:12
1015
原创 Java中如何实现一个IOC容器(个人理解&&简介版)
如何实现一个IOC容器(个人理解&&简介版)IOC——>控制反转:把原先我们代码里面需要实现的对象的创建、依赖的代码,反转给容器来帮忙实现图解如下:说说一些细节J3 - 白起1、在配置文件中指定需要扫描的路径2、定义一些注解,分别表示访问控制层,数据持久层,依赖注入注解,获取配置文件注解3、从配置文件中获取需要扫描的包路径,获取到当前路径下的文件信息及文件信息及文件夹信息,再将当前路径下所有以.class结尾的文件添加到一个Set集合中进行储存4、遍历这个Se
2021-03-19 16:07:48
954
1
原创 Java类加载器
JDK自带三个类加载器:BootstrapClassLoader、ExtClassLoader、AppClassLoader三者的关系图如下:其中BootstrapClassLoader是ExtClassLoader的父类加载器,默认负责加载%JAVA_HOME%/lib下的jar包和class文件。ExtClassLoader是AppClassLoader的父类加载器,负责加载%JAVA_HOME%/lib/ext文件夹下的jar包和class类AppClassLoader是自定义加载器的父类,
2021-03-11 19:13:27
456
1
原创 Java中字节码及其优势
文章目录一、Java编译器1.利用记事本写一段Java代码2.将记事本命名为 hello.java3.cmd+r命令,弹出DOS窗口输入如下命令 回车小结二、Java解释器三、采用字节码的好处一、Java编译器Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器,。这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码来将虚拟机代码转换为特定的系统机器码执行。在Java中,这种提供虚拟机理解的代码
2021-03-10 21:30:08
748
2
原创 Java中的异常体系(量少 but 质重)
文章目录前言异常分类前言异常,即不正常;在软件开发领域中指的是程序发生了不正常的情况。而在Java语言将程序执行中发生不正常情况称为“异常”,异常是一种对程序运行过程中发生错误时进行通知的机制。这里只说干货,挑重要的说算了异常分类在Java中所有异常都来自顶级父类Throwable,而顶级父类Throwable下面有两个子类Exception和Error,但是Error是程序无法处理的错误,一旦出现这个错误,程序将被迫停止运行。而Throwable另一个子类Exception不会导致程序停止,Ex
2021-03-10 19:41:10
341
1
原创 DbUtils框架(这是一个耗时耗力的差事)
文章目录前言一、DbUtils三大核心体现二、DbUtils工具类三、ResultSetHandler接口实现类四、QueryRunner类1.QueryRunner常用的构造函数2.QueryRunner的常用方法五、使用实例1 添加jar包2 在src下创建c3p0的配置文件c3p0-config.xml3 DbUtils简易封装4 在数据库中建立会员卡表并插入数据5 创建一个MembershipCard类(里面的元素与数据库中的会员卡表字段信息类型相同)6 利用DbUtils实现增删改查总结前言为
2021-03-09 19:54:26
711
2
原创 Java中抽象类与接口的区别
文章目录前言一、关于接口和抽象类的区别(面试初级回答)二、关于接口和抽象类的区别(面试高级回答)1.引入库2.读入数据总结前言学习Java已经近两个月,目前主要学MySQL数据库,感觉很久没有敲Java代码了,就在昨天,老师问了一个问题,什么是接口,接口怎么用,一下我居然回答不上,感觉对于接口的概念模模糊糊,答不上来,所以还得多回头看看,今天就先回顾——接口和抽象类的区别一、关于接口和抽象类的区别(面试初级回答)1、抽象可以存在普通成员函数,而接口中只能纯在public abstract 方法2、
2021-03-09 16:34:59
550
原创 数据库连接池——DBCP、C3P0(走过 路过 莫要错过了!!!)
文章目录前言一、数据库连接池——DBCP1.DBCP简绍2.DBCP的使用步骤2.1 添加jar包2.2 在src下创建DBCP的配置文件dbcpconfig.properties2.3 编写操作DBCP的工具类DBCPUtil2.4 在数据库中建立学生表并插入数据2.5 创建一个学生类(里面的元素与学生表的字段信息类型相同)2.6 使用DBCP测试二、数据库连接池——C3P01.C3P0简绍2.C3P0的使用步骤2.1 添加jar包2.2 在src下创建C3P0的配置文件c3p0-config.xml2.
2021-03-08 19:50:21
1078
4
原创 Python——冒泡排序(原理剖析)
文章目录前言一、冒泡排序概念二、原理分析小结三、代码实现1.排序方式小------->大2.排序方式大------->小总结前言我在大学里面主要学习的语言主要是python,而这一学就是4年,不敢说有多么厉害,但是还是有一点点基础,由于最近都在学Java,对于python就基本不摸了,但是一想不对,最起码还是随便看看,敲敲代码吧,反正工具IDE还在。一、冒泡排序概念冒泡排序是一种对有序集合中数据元素排序的方法。每一次对有序集合的遍历都是将较大数交换到后面,重复这个过程,每次遍历都会将最
2021-03-05 22:13:58
1430
1
原创 Java网络编程——IP、URL编程
文章目录前言一、Java网络编程基础概述二、Java网络API三、IP编程1.InetAddress2.InetAddress示例(代码示例)四、应用层(URL)编程1.URL编程2.构造URL对象3.获取各个参数4.获取URL指向的资源(图片)4.1获取URL指向的资源(图片)思路4.2获取URL指向的资源(图片)代码实现总结前言Java学习真是一环扣一环,学完IO流以后就想着接下来是什么呢,一看Java基础学习计划是——Java网络编程基础,针对这一部分知识点比较多,以免大家出现视觉疲劳,我会写成小
2021-02-26 16:43:14
463
3
原创 线程通信——多线程同步(生产者消费者例子)
文章目录前言一、线程通信概述二、典型例子1.生产者和消费者例子2.通过例子理解与剖析三、常用API四、生产者和消费者例子代码实现总结前言多线程的学习接近尾声了,这次我们的主题是线程通信一、线程通信概述通过加锁的方式保证共享数据访问的完整性,但是并没有规定线程执行的先后顺序。各线程到底谁先执行由操作系统的调度决定在进行多线程的设计时,还会遇到另一类问题:如何控制相互交互的线程之间的运行顺序,及多线程的同步二、典型例子1.生产者和消费者例子生产者和消费者的问题1、生产者:先看是否有数据,如果有
2021-02-24 23:10:06
739
1
原创 多线程——守护线程
文章目录一、守护线程概述二、API三、实例演示(代码)总结一、守护线程概述在Java中有两类线程:用户线程、守护线程后台线程也叫守护线程,通常在后台默默执行。其实用户线程和守护线程几乎内有什么区别,唯一不同就是虚拟机的离开方式不同,如果用户线程已经全部退出去了,只剩下守护线程了,虚拟机也就退出了。因为没有被守护者,守护线程也就没有工作可言了,也就没有继续运行程序的必要了。二、APIsetDaemon(boolean on)设置线程为后台线程(守护线程)。必须在调用stat()方法之前才有
2021-02-24 20:55:55
599
1
原创 线程死锁(文学家与艺术家例子)
文章目录前言一、死锁产生的原因二、死锁示例三、死锁代码演示总结前言多线程的学习还是很有意思的,简绍一下在多线程中比较有名的死锁产生的原因,这也是面试比较爱问的Java基础之一,所以比较重要,特地挑出来简绍一下下一、死锁产生的原因在多线程中使用锁会造成整个程序的效率降低,但是如果出现同步嵌套,就容易产生死锁问题。而死锁就是两个或者两个以上的线程在执行的过程中,因为争夺资源产生的一种互相等待的现象。如果两个或者多个共享对象,分别持有对方所需的共享的锁,在试图获取对方线程所持有本线程的锁的时候,就容易出
2021-02-24 20:22:16
458
1
原创 最简单也最容易理解得线程结束
文章目录前言一、结束线程的常见方式二、结束线程的正确方式(代码演示)总结前言昨天刚刚接触多线程,但是一打开多线的常用的三种常用的创建方式就会发现,它们确实有停止的方式,但是后面有大大的标识——已过时。所以只有找其他的办法解决了,那么就不卖关子了,进入今天的主题——结束线程一、结束线程的常见方式1、自然退出:run()执行完之后自动退出,这种行为是可预测的。当然这也是最好得方式。2、强制退出:传统方式是使用suspend()和resume()来暂停或者恢复线程,或者最后的选择使用stop()来结
2021-02-24 18:42:31
1603
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人