- 博客(131)
- 资源 (52)
- 收藏
- 关注
原创 【Git】报错处理:fatal: detected dubious ownership in repository at .....Set the environment variable GIT_T
fatal: detected dubious ownership in repository atSet the environment variable GIT_TEST_DEBUG_UNSAFE_DIRECTORIES=true and runagain for more information.
2022-11-14 10:03:19 669 1
原创 面试-Java【之】(revers)递归实现字符串倒序排列(详解)
面试-Java【之】(revers)递归实现字符串倒序排列(详解))# revers实现源码详解
2022-07-14 17:51:42 1374
原创 面试-Java【之】HashMap原理,源码逐行分析,理论总结(变量、常量、数据结构、Node、TreeNode、初始化、添加、查询、更新、删除)
面试-Java【之】HashMap原理,源码逐行分析,理论总结(变量、常量、数据结构、Node、TreeNode、初始化、添加、查询、更新、删除)1.源码分析1.HashMap属性与变量(扩容因子、扩容阈值、结构转换阈值...)2.Node(链表节点)3.TreeNode(红黑树节点)4.初始化(new)5.插入(put、putVal)6.删除(remove、removeNode)7.读取(get、getNode)2.理论总结1.核心:数组+ 链表或者红黑树2.put 操作:首次插入:
2022-06-29 21:12:57 558
原创 Java工具类【之】包扫描工具类(通过BasePackage,获取包下全部类信息)
Java工具类【之】包扫描工具类(传入BasePackage路径,获取包下全部类信息)1.源码截图2.测试情况3.源码下载
2022-05-12 18:41:09 1063
原创 Spring5-完全注解开发【之】第一步,先实现功能(增删改查),再讲解陌生代码
Spring5-完全注解开发【之】第一步,先实现功能(增删改查),再讲解代码1.导入依赖2.创建配置类 AppConfig(添加配置注解、扫描注解)3.添加业务逻辑(增删改查)3.1.Controller3.2.Service3.3.数据Bean4.创建启动类,运行程序4.1.启动类4.2.执行结果(添加后查询、随机更换用户后,查询)5.陌生代码讲解标题:2(@Configuration、@ComponentScan)标题:3.1(@Controller、 @Autowired)标题:3.2(@Servic
2022-05-11 16:33:28 528
原创 Java-JDBC【之】数据库连接池技术、常规操作与Durid对比、测试(20-200)不同连接数下,10万记录,1万并发,CPU磁盘占用情况
Java-JDBC【之】数据库连接池技术、常规操作与Durid对比、测试(20-200)不同连接数下,10万记录,1万并发,CPU磁盘占用情况1.数据库连接池2.Durid介绍(官方文档)3.编码,问题,常规并发操作3.1.JDBCUtil.class3.2.多线程模拟并发3.3.测试类3.4.结果(并发 1千、2千、3千、5千),报错信息4.编码,解决,使用Durid连接池4.1.JDBCUtil.class4.2.多线程模拟并发4.3.测试类4.4.结果((20-200)不同连接
2022-05-05 13:08:40 1385
原创 Java-JBDC【之】目录(内含:JDBC、SQL注入与解决、CRUD、DAO层封装、事务操作(传播方式、隔离级别)、ORM、数据库连接池)
Java-JBDC【之】目录(内含:JDBC、SQL注入与解决、CRUD、DAO层封装、事务操作(传播方式、隔离级别)、ORM、数据库连接池)1.JDBC概述、获取连接、操作流程、SQL注入问题与解决、查询解析ResultSet2.数据类型、封装JDBCUtil、封装通用增删改、查询结果集映射Map与ListMap3.批量插入操作、优化取消自动提交(提速40+倍)4.事务介绍、事务特性、操作事务(事务提交、异常回滚)5.实现ORM,结果集映射实体类(ResultSet、注解、反射)6.数据库连接
2022-05-04 11:54:07 1097
原创 Java-JDBC【之】实现ORM,结果集映射实体类(ResultSet、注解、反射)
Java-JDBC【之】实现ORM,结果集映射实体类(ResultSet、注解、反射)1.ORM实现思路2.@Table、@Column、标识实体类2.1.创建注解 @Table、@Column2.2.标识实体类2.3.数据库表3.结果集解析,注解加反射填充实体类3.1.结果集解析3.2.注解加反射填充实体类3.3.测试4.完整源码《目录:Java-JDBC学习(编写中...)》《幕》1.ORM实现思路ORM(Object Relational Mapping)ORM 是通过标
2022-05-04 11:43:56 1880
原创 Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚)
Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚)1.数据库事务1.1.介绍1.2.事务特性(ACID)1.3.隔离性(Isolation),带来的问题与处理1.4.JDBC事务处理2.事务提交(代码实现)3.异常回滚(代码实现)4.完整源码《目录:Java-JDBC学习(编写中...)》《幕》
2022-05-03 13:18:18 889
原创 Java-JDBC【之】批量插入操作、优化取消自动提交(提速40+倍)
Java-JDBC【之】批量插入操作、优化取消自动提交(提速40+倍)1.JDBC批量操作2.两种实现方式3.优化,取消自动提交4.完整源码《目录:Java-JDBC学习(编写中...)》《幕》1.JDBC批量操作允许多条语句一次性提交给数据库批量处理,提升处理效率。JDBC的批量处理语句,由 PreparedStatement 处理,包括下面三个方法:addBatch(String):添加需要批量处理的SQL语句或是参数;executeBatch():执行批量处理语句;clearB
2022-05-02 11:38:35 2161
原创 Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap
Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap1.数据类型2.封装通用增删改2.1.封装JDBCUtil2.2.封装Dao通用增删改2.3.测试3.ResultSet与ResultSetMetaData4.查询对象映射Map4.1.封装queryMap()4.2.测试5.查询结果集映射ListMap5.1.封装queryListMap()5.2.测试6.完整源码《
2022-05-01 11:42:42 1205
原创 Java-JDBC【之】JDBC概述、获取连接、操作流程、SQL注入问题与解决、查询解析ResultSet
Java-JDBC【之】JDBC概述、获取连接、操作流程、SQL注入问题与解决、查询解析ResultSet1.JDBC概述2.操作流程1.初始化项目,导入`驱动jar包`2.加载驱动类3.创建数据库连接对象`Connection`4.创建`Statement` (此处存在SQL注入问题)5.执行SQL6.解析查询对象`ResultSet`7.关闭连接 `ResultSet 、Statement 、Connection`3.SQL注入问题与解决(Statement 、PreparedSta
2022-04-30 19:54:32 815
原创 Spring5-完全注解开发【之】Spring5介绍、实现IOC、单元测试
Spring5-完全注解开发【之】Spring5介绍、实初始化项目、实现IOC1.Spring5框架概述2.IOC实现(将类交由Spring管理)2.1.引入依赖(spring-context)2.2.声明注解(@Service、@Component、@Repository、@Controller)2.3.依赖注入(@Autowired、@Qualifier)2.4.声明 Bean 实例(@Bean、@Configuration)2.5.包扫描,注解生效(@ComponentScan)3.单
2022-04-22 18:38:42 1077
原创 Spring5-完全注解开发【之】目录
Spring5-完全注解开发【之】目录1.Spring5介绍、初始化项目、实现IOC、Junit5单元测试1.1.Spring5框架概述1.2.IOC注解实现1.3.Junit5单元测试1.4.源码下载2.IOC实现原理(未开始)3.Spring中Bean的生命周期(未开始).实现AOP实现(未开始).AOP原理(未开始).实现数据库增删改查(未开始).数据库事务配置(未开始).添加日志(未开始).函数式注册对象(未开始).webfluxe(未开始)《目录:从零手写Tomcat
2022-04-21 20:45:31 859
原创 JDK1.8新特性【之】接口默认方法、静态方法
JDK1.8新特性【之】接口默认方法、静态方法1.接口默认方法、静态方法2.代码示例(注意 类优先、冲突解决)《目录:Java基础》《目录:JDK1.8新特性》《幕》1.接口默认方法、静态方法接口默认方法、静态方法类比抽象类的默认实现,实现类可以不进行覆盖默认方法使用关键字 default 标识静态方法由 static关键字标识原则1:类优先如果,实现类继承了其他父类,并且父类中存在同名同参的方法,那么优先调用父类中的方法原则2:冲突指定当实现多个接口时,如果存在同名同参的方法,
2022-04-19 13:13:34 2259
原创 JDK1.8新特性【之】串行流、并行流、工作窃取模式(Fork/Join)
JDK1.8新特性【之】串行流、并行流、工作窃取模式(Fork/Join)1.串行流、并行流2.工作窃取模式( Fork/Join)3.测试4.完整源码《目录:Java基础》《目录:JDK1.8新特性》《幕》1.串行流、并行流串行流:为单线程执行并行流:工作时会将任务,拆分为多个子任务,最终汇总数据得到结果并行流 启动多线程数 默认为(CPU核数-1)2.工作窃取模式( Fork/Join)工作窃取模式 Fork/Join并行流采取的是工作窃取模式,线程自身任务执行完毕后会去其他
2022-04-19 12:28:56 903
原创 JDK1.8新特性【之】方法引用(定义、解析、使用)
JDK1.8新特性【之】方法引用(定义、解析、使用)1.方法引用2.定义接口函数与测试类3.三种引用形式与简写4.完整源码《目录:Java基础》《目录:JDK1.8新特性》《幕》1.方法引用方法引用是lambda表达式的进一步简写,存在三种形式1.类名::静态方法 ,满足 lambda表达式右侧只有一行,参数与返回值可以对应。2.实例名::方法,满足 lambda表达式右侧只有一行,参数与返回值可以对应。3.类名::实例方法,满足 lambda表达式右侧只有一行,参数与返回值可以对
2022-04-19 12:18:21 517
原创 JDK1.8新特性【之】函数式接口(内置、自定义、参数传递)
JDK1.8新特性【之】函数式接口(内置、自定义、参数传递)1.函数式接口2.形式1:只存在一个抽象方法3.形式2:只存在一个必须实现的抽象方法4.形式3:参数任意定制5.应用示例5.1.内置的四种类型应用(消费、函数、提供、断言)5.2.自定义接口函数、静态方法(参数类型为 接口函数)5.3.使用自定义接口函数(1.传递函数式接口对象、2.形参上直接写表达式)6.完整源码下载《目录:Java基础》《目录:JDK1.8新特性》《幕》
2022-04-19 12:04:58 2268
原创 从零手写Tomcat【之】服务器人员:添加服务功能接口(Servlet、Request、Response)
从零手写Tomcat【之】(服务器开发人员角度)创建Servlet接口,项目启动扫描web.xml,动态处理请求,反射创建Servlet1.web.xml内容修改,添加servlet标签2.接口与实现 Servlet、Request、Response2.1.添加Servlet2.2. 添加 ServletRequest、Request2.3.添加 ServletResponse、Response3.创建Mapper类,解析web.xml4.修改启动时逻辑,扫描全部servlet5.动态处理请
2022-04-13 13:16:55 1406
原创 从零手写Tomcat【之】继续完善,添加多线程,通过HandlerRequest处理请求
从零手写Tomcat【之】添加多线程,处理请求1.创建处理请求线程类,将客户端对象传进来,其余内容不变2.修改入口类,通过线程池执行请求任务3.本章节源码《目录:从零手写Tomcat》《目录:Java设计模式》《幕》
2022-04-11 15:00:49 705
原创 从零手写Tomcat【之】基础完善-处理动态资源请求
从零手写Tomcat【之】处理动态资源请求1.表单页面2.后台,解析URI,执行对应功能3.浏览器测试4.本章节源码《目录:从零手写Tomcat》《目录:Java设计模式》《幕》
2022-04-11 12:50:06 434
原创 从零手写Tomcat【之】处理本地静态资源请求
从零手写Tomcat【之】处理本地静态资源请求1.资源目录添加静态文件2.读取本地静态资源3.处理4044.本章节源码《目录:从零手写Tomcat》《目录:Java设计模式》《幕》
2022-04-07 12:24:03 647
原创 网络协议【之】分析一个HTTP请求的组成部分
网络协议【之】分析一个HTTP请求的组成部分1.启动一个Socket服务端(非Java人员可以跳过)源码2.浏览器访问情况浏览器F12内容服务端输出内容3.分析请求内容请求行请求头请求体4.分析响应内容响应行响应头响应体《目录:从零手写Tomcat》《目录:Java设计模式》《幕》
2022-04-07 11:04:13 1229
原创 从零手写Tomcat【之】基础完善,接收与返回信息
从零手写Tomcat【之】基础完善,接收与处理信息1.启动服务,查看浏览器请求信息2.获取客户端输出流,返回字符串信息给浏览器(失败与原因)3.问题解决(响应行、响应头)4.模拟返回 json 与 html5.本章节源码《目录:从零手写Tomcat》《目录:Java设计模式》《幕》
2022-04-05 13:10:13 388
原创 从零手写Tomcat【之】准备步骤,基础Socket通信环境搭建
从零手写Tomcat【之】准备步骤,基础Socket通信环境搭建1.整体包结构图2.配置和工具类3.编写服务端入口类4.编写客户端测试5.本章节源码《幕》
2022-04-04 17:44:27 1409
原创 从零手写Web服务器【之】目录(重新调整中...)
从零手写Tomcat【之】目录(章节内含源码)(包含:Socket、Servlet、Request、Response、Session、Filter、IOC、AOP)1.准备步骤,基础Socket通信环境搭建1.1.创建空白项目1.2.配置文件1.3.创建程序入口类1.4.启动服务器、开启循环监听1.5.编写客户端发起请求2.基础完善,接收与处理信息2.1.查看浏览器请求信息2.2.获取客户端输出流,返回字符串信息给浏览器(失败与原因)2.3.问题解决(响应行、响应头)2.4.模拟返回
2022-04-04 10:32:16 1257
原创 Java设计模式【之】抽象工厂模式【场景:生产咖啡】
Java设计模式【之】抽象工厂模式【场景:生产咖啡】1.抽象工厂模式2.场景代码实现2.1.场景2.2.咖啡抽象2.3.咖啡的两种品牌实现2.4.抽象工厂2.5.抽象工厂的不同地域实现2.6.测试3.源码下载《七大设计原则》《目录:Java设计模式》《幕》抽象工厂模式创建对象实例时,不要直接 new 类, 而是把这个new 类的动作放在一个工厂的方法中,并返回。在工厂方法的基础上,进一步抽象工厂类,将工厂抽象成两层,AbsFactory(抽象工厂) 和具体实现工厂子类。调用者
2022-04-03 13:42:30 690
原创 Java设计模式【之】原型模式-深拷贝【场景:克隆羊】
Java设计模式【之】原型模式-深拷贝【场景:克隆羊】1.原型模式(Prototype)浅拷贝深拷贝2.深拷贝(clone实现)2.1.羊.class2.2.测试类.class2.3.输出内容3.序列化实现3.1.羊.class3.2.测试类.class3.3.输出内容4.源码下载《七大设计原则》《目录:Java设计模式》《幕》
2022-03-31 16:21:37 239
原创 Java设计模式【之】目录
Java设计模式【之】目录1.看图说话(UML类图)(OK)2.有道有术(设计原则,代码示例)(OK)3.【创建型】之【单例模式】【场景:单例工具类】(OK)4.【创建型】之【工厂方法模式】【场景:制作咖啡】(OK)5.【创建型】之【抽象工厂】【场景:制作咖啡】(OK)6.【创建型】之【原型模式、深、浅拷贝】【场景:克隆羊】(OK)7.【创建型】之【建造者模式】【场景:汽车零件组装】(OK)其余正在编写中....《幕》1.看图说话(UML类图)(OK)点击跳转2.有道有术(设计原则,
2022-03-31 16:01:58 743
原创 Java设计模式【之】建造者模式【场景:汽车零件组装】
Java设计模式【之】建造者模式【场景:汽车零件组装】1.建造者模式(简述与场景)2.场景代码实现2.1.汽车(产品)2.2.构造者抽象类(建造者)2.3.构造者实现(建造者)2.4.客户端调用3.源码下载《七大设计原则》《目录:Java设计模式》《幕》
2022-03-31 16:00:36 1415
原创 Java设计模式【之】原型模式-浅拷贝【场景:克隆羊】
Java设计模式【之】原型模式-浅拷贝【场景:克隆羊】1.原型模式(Prototype)浅拷贝深拷贝2.代码实现(浅拷贝)2.1.羊.class2.2.测试类.class2.3.输出内容3.源码下载《七大设计原则》《目录:Java设计模式》《幕》
2022-03-19 20:24:58 517
原创 Java设计模式【之】工厂方法模式【场景:制作咖啡】
Java设计模式【之】 不劳而获(工厂方法模式)《源码下载》1.简单工厂1.1.简单工厂模式1.2.具体需求(生产多种咖啡)2.代码实现2.1.代码结构2.2.咖啡抽象类2.3.一种咖啡2.4.另一种咖啡2.5.简单工厂类2.6.测试《上一篇:单例模式》《七大设计原则》《目录:Java渐进式学习》《幕》
2022-03-17 11:14:32 762
原创 MySQL渐进式学习-从基础到高级-目录(安装、DCL、DDL、DML、约束、事务、函数、存储过程、调优、高可用、分库分表)
MySQL渐进式学习-从基础到高级-目录(安装、DCL、DDL、DML、约束、事务、函数、存储过程、调优、高可用、分库分表)1.安装(OK)Centos7安装MySQL5.7Windows10安装MySQL5.7Windows10-安装MySQL8.0Centos7离线安装Mysql8.xDocker 安装MySQL8.x2.DCL(库)(数据控制)(未开始)语法CREATE:建库GRANT:授权REVOKE:取消授权COMMIT:提交事务ROLLBACK:回滚事务SAVEPOI
2022-03-17 08:38:44 683
原创 Java基础【之】==和equals 的区别,经典问题。
Java基础【之】==和equals 的区别,常识问题。1.储备知识2.歧义的原因(重写)3.总结《目录:Java渐进式学习》《幕》1.储备知识所有类都继承了Object。可以重写 hashCode方法、equals方法、toString方法。== 比较基本数据类型:比较值。== 比较引用数据类型:比较对象的引用地址。equals:内部默认实现代码为 return (this == obj);
2022-03-16 17:19:22 350
原创 Java基础【之】面向对象编程(封装、继承(extends、方法重写、super)、多态(动态绑定、重载/重写)、代码实现)
Java基础-面向对象编程(封装、继承、多态、代码实现)1.封装2.继承extends方法重写super3.多态3.1.对象的多态、方法的多态3.2.动态绑定3.3.向上转型(upcasting)3.4.instanceof3.5.数据类型转换4.代码实现类实现接口实现《上一篇:??》《下一篇:??》《目录:Java渐进式学习》《幕》
2022-03-16 11:21:25 564
原创 Java基础【之】面向对象编程(类、面向过程、面向对象、对象、属性、行为)(大象进冰箱)
Java基础-面向对象编程(类、面向过程、面向对象、对象、属性、行为)(大象进冰箱)1.面向对象与面向过程(大象门事件!!!)1.1.面向过程(POP)1.2.面向对象(OOP)1.3.注意2.类的组成类、对象、构造器匿名对象方法属性访问与权限关键字(this、package、import)thispackageimport4.大象进冰箱(代码实现)《上一篇:运算、位运算、比较、循环与控制》《 UML类图》《目录:Java渐进式学习》《幕》
2022-03-15 19:37:13 1138 1
原创 Java基础【之】逻辑运算、比较、位运算(对于二进制计算,理解要到位)
Java基础-逻辑运算1.数学运算(加、减、乘、除、取模、拼接)3.比较运算(大、小、相等、实例类型)4.逻辑运算(与、或、非、异或)5. 三元表达式6. 位运算(二进制计算)(注意理解)7.源码、反码、补码《下一篇:流程控制》《目录:Java基础》《幕》
2022-03-14 14:08:34 1374
原创 Java基础【之】循环、流程控制 (if else、whitch case、while、do while、for...i、foreach、多层循环与退出)
Java基础-流程控制 (if else、whitch case、while、do while、for...i、foreach、多层循环与退出)1.默认顺序执行2.分支控制if elseswitch case3.循环whiledo whilefor iforeach4.多层循环与主动退出(return、break、contuinue)循环代码使用 continue使用 break使用 return《逻辑运算》《目录:Java基础》《幕》
2022-03-14 14:08:05 780
原创 Java设计模式【之】唯一的路就是正确的路 (单例模式)
Java设计模式【之】唯一的路就是正确的路 (单例模式)准备知识1.静态变量(new、静态代码块)2.双重检查锁3.静态内部类4.枚举实现(不推荐)《下一篇:简单工厂模式》《目录:Java渐进式学习》《幕》准备知识解决问题的方法才是好方法有三种网上流传的懒汉式(线程安全问题、锁方法、锁代码块),太傻了,没法解释就不写了。其中4.枚举实现,语义不清晰,不推荐使用JVM类加载机制保证,类的静态属性,只会在第一次加载类的时候初始化单例模式就是保证在整个的软件系统中,对某个类只能存在一
2022-03-13 16:43:01 603
原创 Java设计模式【之】 七大设计原则(有道有术,代码示例)
Java-设计模式【之】 有道有术(设计原则,代码示例,看完必会)名词解析1.单一职责2.接口隔离3.依赖倒置(面向接口编程)4.里氏替换5.开闭原则6.迪米特(好朋友原则)7.合成复用8.精华:代码示例解析《上一篇:Java-UML类图》《目录:Java基础》《幕》
2022-03-12 12:08:29 424
Java工具类【源码】包扫描工具类(通过BasePackage,获取包下全部类信息)
2022-05-12
Spring5-完全注解开发【源码】第一步,先实现功能(增删改查),再讲解陌生代码
2022-05-11
Java-JDBC【源码】数据库连接池技术、常规操作与Durid对比、测试(20-200)不同连接数下,10万记录,1万并发
2022-05-05
Java-JDBC【源码】实现ORM,结果集映射实体类(ResultSet、注解、反射)
2022-05-04
Java-JDBC【源码】事务介绍、事务特性、操作事务(事务提交、异常回滚)
2022-05-03
Java-JDBC【源码】批量插入操作、优化取消自动提交(提速40+倍)
2022-05-02
Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData
2022-05-01
Java-JDBC【源码】JDBC概述、获取连接、SQL注入问题与解决、查询解析
2022-04-30
Spring5-完全注解开发【之】Spring5介绍、实初始化项目、实现IOC【源码】
2022-04-22
JDK1.8【函数式接口】【定义与使用】【源码】
2022-04-19
从零手写Tomcat【源码】【abl-tomcat-006】【服务器人员:添加服务功能接口(Servlet、Request
2022-04-13
从零手写Tomcat【源码】【abl-tomcat-005】【添加多线程,处理请求】
2022-04-11
从零手写Tomcat【源码】【abl-tomcat-004】【基础完善-处理动态资源请求】
2022-04-11
从零手写Tomcat【源码】【abl-tomcat-003】【处理静态资源与404】
2022-04-07
从零手写Tomcat【源码】【abl-tomcat-002】【基础完善,接收与处理信息】
2022-04-05
从零手写Tomcat【源码】【abl-tomcat-001】【准备步骤,基础Socket通信环境搭建】
2022-04-04
java设计模式【之】抽象工厂模式【源码】【场景:制作咖啡】
2022-04-03
java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】
2022-03-31
java设计模式【之】模板方法【源码】【场景:制作咖啡】
2022-03-31
java设计模式【之】JDK动态代理【源码】【场景:帮爸爸买菜】.rar
2022-03-31
java设计模式【之】静态代理【源码】【场景:帮爸爸买菜】.rar
2022-03-31
java设计模式【之】Cglib动态代理【源码】【场景:帮爸爸买菜】
2022-03-31
java设计模式【之】组合模式【源码】【场景:遍历目录树】
2022-03-29
java设计模式【之】桥接模式【源码】【场景:老师上课】
2022-03-28
java设计模式【之】享元模式【源码】【场景:多缓存可选模式】
2022-03-27
java设计模式【之】适配器模式【源码】【场景:水和容器】
2022-03-25
java设计模式【之】装饰者模式【源码】【场景:煎饼果子+肠+蛋】
2022-03-25
java设计模式【之】建造者模式【源码】【场景:车辆组装】
2022-03-24
java设计模式【之】外观模式【源码】【场景:积分兑换图书】
2022-03-24
Java设计模式【之】 工厂方法模式(源码)
2022-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人