- 博客(53)
- 资源 (2)
- 收藏
- 关注
原创 第五十天:SpringMVC02 异步调用+跨域访问+拦截器+异常处理器+文件上传+RestFul风格开发
今日内容SpringMVC异步请求响应(Json)跨域问题及解决方式SpringMVC中的拦截器SpringMVC的异常处理SpringMVC实现文件上传Restful风格1. 异步调用1.1 发送请求接收参数原则:后台在Handler方法形参上添加一个注解@RequestBody读取异步请求,请求正文的内容请求的json格式字符串的层级结构和形参层级结构一致,即可完成自动封装。页面异步发送请求//为id="testAjax1"的组件绑定点击事件$("#testAjax1
2021-01-13 13:46:26
352
原创 第四十九天:SpringMVC01 基本配置+参数自动装配+响应+视图解析
0. 前置知识复习0.1 ServletUserServlet.java/** * Servlet的作用 * 1. 获取请求的参数,封装成POJO * 2. 调用业务方法 * 3. 页面跳转响应数据 * * request功能 * 1. 获取请求参数 * 2. 域对象存取数据 * 3. 页面跳转:请求转发实现 * * respone功能 * 1. 回写数据到响应体(页面之前的内容会被覆盖掉) * 2. 页面跳转:请求重定向 * <p> * <p>
2021-01-13 13:37:41
315
原创 第四十八天:Spring04 Spring整合事务及Spring模板模式
1. 事务相关概念回顾1.1 相关概念回顾概念:一组对数据库的操作,要么同时成功,要么同时失败。作用:保证一组对数据库的操作是一个原子操作,同时保证多个同时对数据库的操作尽量不受影响。四大特性:ACID;原子性、移植性,隔离性,持久性。事务并发访问的问题及隔离级别脏读 。解决方案,隔离级别调整为Read Committed(表级读锁)不可重复读。提高隔离级别到 RepeatableRead (行级写锁)幻读。提高隔离毕节到Serializable(表级写锁)1.2 事务控制位置事务
2021-01-13 13:23:27
532
原创 第四十七天:Spring03 AOP快速入门+xml配置+注解配置+原理
1. 引入案例(计算器记录日志)(理解)系统辅助功能:记录日志系统核心业务功能:加减乘除四则运算1.1 实现方式1:直接耦合直接在系统核心功能代码中编写系统辅助功能代码缺点:系统辅助功能代码严重入侵了系统核心业务功能代码记录日志代码重复冗余,复用性差1.2 实现方式2:工具类把日志抽取到日志工具类中,在系统核心功能代码中调用工具类中方法记录日志解决的问题:提高了复用性缺点:系统辅助功能代码严重入侵了系统核心业务功能代码1.3 实现方式3:动态代理使用动态代理完成记录
2021-01-13 13:19:08
221
原创 第四十五天:Spring01 配置bean标签+依赖注入+spring整合Mybaits
1. 概念相关框架的学习思路了解框架的作用会用框架有哪些配置(重点、难点)少量API懂:学习其中原理咬牙坚持配的多了;自然就会了,记不住(live template)(笔记)学习安排SSMS - Spring - 每一层S - SpringMVC - WEBM - Mybatis - DAOSpringIoC AOP 两大核心思想2天 IoC2天AOP源码分析SpringMVC3天融合了所有web核心的技术点Spring
2021-01-06 20:14:44
591
1
原创 求助帖!球球大佬帮忙! spring-mvc @ResponseBody注解 转实体类为Json失败!
图一是需要转Json的实体类,setget方法lombok和自己写我都试过了,但是不行,@ResponseBody需要的包在图一也可以看到,也导入了。图二是请求的servlet,用的组合注解@ResuController里面包含了@ResponseBody图三是模拟请求,以及报错,控制台不报错的,只有图二最下面的一小段woring...
2021-01-05 13:48:53
173
原创 第四十四天:maven安装+集成到Ideal+创建项目+坐标仓库+pom配置
1. Maven概述1.1 概念Maven是一个项目管理工具,有两个核心功能:依赖管理(jar包管理)、项目构建(操作维护项目);上述两个功能的实现是通过一个POM模型对象来实现,该对象对应的是一个pom.xml文件;pom.xml是整个Maven中最核心最重要的文件。1.2 目录结构// java项目结构/*Java项目(模块)根目录├── pom.xml└── src ├── main │ ├── java │ └── resources └─
2020-12-23 13:44:58
371
2
原创 第四十三天:Redis安装+基础语法+jedis工具类+redis的持久化
1. Redis入门1.1 背景电商等高并发网站现状用户比较多、海量用户特定时刻高并发关系型数据库数据存储的问题性能瓶颈:磁盘IO性能低下扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群随着数据量增长,查询速度显著降低解决思路降低磁盘IO次数,越少越好。去除数据间关系,越简单越好。把这两个特征一合并一起,就有了一个新的概念:NoSQL。1.2 NoSQL概念NoSQL:即 Not-Only SQL( 非关系型的数据库/不仅仅是数据存储),基于内存的数据存储,数据间没
2020-12-23 13:37:08
230
原创 第四十二天:Vue高级(自定义组件+axios异步请求)+学生信息管理案例
1. Vue高级1.1 Vue自定义组件(了解)<div id="div"> <!-- 从vue对象中获取值,并通过自定义组件中props的某个元素值传递给自定义组件解析渲染 --> <my-ul :listdata="listdataUser"></my-ul></div></body><script> Vue.component( // 自定义组件名称 "
2020-12-23 13:11:22
391
原创 第四十一天:Vue+Vue指令+Element(饿了么开源前端样式)
1. Vue简介1.1 相关概念Vue:构建用户界面的渐进式框架,实现视图和数据的分离。前端使用Vue开发之后,我们就不需要再去获取各种元素对象并且进行增删改查了,而是把页面(中某部分内容)托管给一个Vue对象,通过操作Vue对象的data属性的值(Vue里面的数据模型),这些修改会自动同步到页面上,就可以完成对页面的增删改查。特点:易用灵活性能好1.2 与原生js/jQuery的区别数据和视图的组织方式不同js/jq一般都是视图和数据写在一起Vue的视图和数据是分离的
2020-12-23 13:06:48
945
原创 第四十天:Ajax(js和jquery实现Ajax+java中json转换)
1. 概述(了解)1.1同步与异步概念相关知识复习 (对于今天来说,不重要):阻塞:在能开始做某件事件之前一直等着什么都不做,直到轮到你了就开始做要做的这件事情。**同步:**自己亲自出马做这个事情**异步:**让小弟帮你去做事情,做完了给反馈。同步不一定阻塞。同步阻塞(BIO)。排队等吃饭,在轮到我之前,我什么都不做,一直盯着门口直到有位子可以坐下来吃饭。同步非阻塞(NIO)。排队等吃饭,不想干等着,就去逛街,但是每个1分钟回来看下有没有轮到自己。(轮询)只要是同步,必须是自己亲自
2020-12-23 13:02:44
330
原创 第三十九天:JQuery框架(基础语法+事件+遍历+DOM操作)
0. JS框架JS框架其实就是把已经定义好的js代码放到一个js文件中,我们只需要引入这个外部的js文件,就可以使用里面已经定义好的函数。学习jQuery,学习的是其对原生js事件和DOM操作的封装。JS = ECMAScript(基础语法 + 内置对象)+ DOM + BOM1. JQuery早期的JS框架。formObject.onsubmit(function())1.1 快速入门<body> <div id="xxx">我是div</div>
2020-12-11 18:57:45
166
原创 第三十八天:JavaScript高级(类+ECMAScript内置对象+BOM模型)
1. 类ES6新特性1.1 方式1:类java注意:构造方法统一使用constructor关键字声明成员变量不需要定义,直接使用即可类中的方法定义的时候不要使用function关键字,否则表示定义出来的是一个函数对象,会报错。<script> //定义Person类 class Person{ // 不需要声明成员变量 //构造方法,使用固定关键字constructor constructor(na
2020-12-11 12:43:18
179
原创 第三十七天:JavaScript(基础语法+函数+ECMAScript DOM+事件)
1. JavaScript概念1.1 概述1.1.1 前端三剑客HTML负责网页的骨架和基本内容填充CSS负责页面的美化JavaScript增强页面与用户的交互,添加动态效果1.2 概念JavaScript 是一种客户端脚本语言。运行在客户端浏览器中,每一个浏览器都具备解析 JavaScript 的引擎。脚本语言:不需要编译,就可以被浏览器直接解析执行了。1.3 发展史JavaScript在1995年由NetScape(网景)公司的Brendan Erich(布兰奇.艾奇)
2020-12-10 13:35:51
206
1
原创 第三十六天:Mybatis高级(mybatis注解开发+SQL构建+逆向工程工具)
1. 注解开发(理解)对于简单的SQL,建议使用注解;对于复杂SQL,建议使用xml配置映射配置文件。1.1 常用注解@Insert:实现新增 相当于标签@Update:实现更新 相当于标签@Delete:实现删除 相当于标签@Select:实现查询 相当于标签1.3查询-单表interface StudentMapper{ // 标注在方法是,可以通过注解获取到方法的返回值类型、参数类型、该方法属于哪个类 @Select("select * fr
2020-12-08 12:54:54
121
原创 第三十五天:Mybatis进阶(动态SQL+分页插件+多表关系+延迟加载)
/*请使用user.sql初始化Mybatis数据库需求1:查询所有Student根据ID查询需求2:添加一个Student需求3:修改一个Student需求4:删除一个Student需求5:查询Student,数据库字段名和实体类属性名不一致// 需求6:根据现有student对象属性的值查找学生// 学生对象如果只设置了id属性的值,就通过id查询,// 如果id和name属性都有值,那就根据id和name两个条件查询// 如果id和name、age属性都有值,那就根据i
2020-12-07 12:59:13
307
1
原创 第三十四天:Mybatis框架基础+快速入门配置文件
0. 相关概念0.1 框架和工具类工具类对程序中一小段代码的封装。项目中大多数代码还是需要我们写。框架通俗理解框架可以看做一个半成品的软件/项目。使用框架开发项目,项目中半数以上代码就不需要 我们编写了。我们一般需要配置(大多数框架都是重配置轻编码的)+少量编码,就可完成项目中的需求。框架的目的 就是为了简化编码:eg:Mybatis。我们在学习完Mybatis之后,dao层会更简单。你只需要写一个dao接口,然后写一个SQL语句,dao层就已经写完了。学习步骤这个框架
2020-12-05 00:15:45
329
4
原创 第三十三天:JDBC高级 DataSource连接池(引入设计者模式,静态代理,动态代理)
1. 数据源1.1 概念初始化并维护多个连接对象,当其他地方需要时,从连接池获取;用完之后,归还到连接池。以此实现连接的复用,提高效率。1.2 池化思想(重要)以空间换时间的做法。游戏背包、新闻客户端。提供更好的使用体验对资源的消耗会更少。不会频繁的创建和销毁对象。1.3 自定义数据源思路自定义一个连接池的整体思路准备一个保存多个连接的容器ArrayList一开始就创建多个连接,并存入上述容器自己写一个类,封装上述的容器ArrayList对象,对外提供获取连接、归还
2020-12-05 00:10:45
499
3
原创 第三十二天:JDBC基础 Connection,Statement,PreparedStatement,ResultSet
1. jdbc入门1.1 概述JDBC (Java DataBase Connectivity java数据库连接)Java和数据库厂商共同制定的一套连接并操作数据库的统一规范(接口),需要数据库厂商来实现,我们使用的时候只需要导入数据库厂商已经实现好的jar包即可。1.2 快速入门public class JDBCDemo01 { public static void main(String[] args) throws Exception{ //1.导入jar包
2020-12-05 00:07:00
1014
原创 第三十一天:MySQL高级(数据库引擎,索引原理)
1. 存储引擎1.1 概念相关(理解)MySQL 数据库使用不同的机制存取表文件, 包括存储方式、索引技巧、锁定水平等不同的功能。这些不同的技术以及配套的功能称为存储引擎。Oracle、SqlServer 等数据库只有一种存储引擎。而 MySQL 针对不同的需求, 配置不同的存储引擎, 就会让数据库采取不同处理数据的方式和扩展功能。MySQL中,存储引擎是表级别的。MySQL 支持的存储引擎常见的有三种:InnoDB、MyISAM、MEMORY。特性对比InnoDB
2020-12-05 00:04:51
2289
5
原创 第三十天:存储过程+存储函数+触发器+事务
1. 存储过程(函数)(>理解)1.1 概念存储过程优势:简单:可以重复使用,类似于java中方法可以多次调用高性能:存储过程经编译后,会比一条一条SQL语句执行快。安全:存储过程和函数位于数据库服务器上,调用的时候只需要传递名称和参数即可 减少数据在数据库和应用服务器之间的传输,可以提高数据处理的效率 将一些业务逻辑在数据库层面来实现,可以减少代码层面的业务处理存储过程不足维护、迭代成本高:过程化编程,业务逻辑放在数据库上,复杂业务的书写难度高不方便调试:S
2020-11-29 21:26:31
221
1
原创 第二十九天:数据约束+多表关系+多表联合查询+视图+数据库备份和恢复
0.注意不要使用SQL里面的保留字、关键字作为类名或者字段名 user、name、order1. 约束(重点)限制,在数据库中是对某一列(多列)进行限制。对表中的数据进行限定,保证正确性、有效性、完整性。分为单表约束和多表约束约束分类约束类型作用单表约束PRIMARY KEY主键约束PRIMARY KEY AUTO_INCREMENT主键自增约束UNIQUE唯一约束NOT NULL非空约束多表约束FOREIGN KEY外键约束
2020-11-29 21:24:42
259
原创 第二十八天:Linux安装mysql+Mysql基础(增删改+单表查询)+主键约束
MySQL基础-01-授课笔记一、数据库的基本概念1.为什么要学数据库?之前我们如果想将一些数据实现永久化存储,可以怎么做呢?没错。使用IO流的技术将数据保存到本地文件中但是接下来我有这样一个需求:将下面的user.txt文件中的王五年龄修改为35张三 23 男李四 24 男王五 25 女赵六 26 女周七 27 男我们要如何实现呢?可以采用字符缓冲流,将每一行数据读取出来,封装为User对象。将多个User对象保存到集合中然后遍历集合,将王五对象的年龄修改为35,再重新将
2020-11-27 00:07:59
107
1
原创 第二十七天:jsp进阶+EL表达式+JSTL+Filter过滤器+监听器Listener
1 EL表达式和JSTL1.1 EL表达式1.1.1 EL表达式概述基本概念EL表达式,全称是Expression Language。意为表达式语言。它是Servlet规范中的一部分,是JSP2.0规范加入的内容。其作用是用于在JSP页面中获取数据,从而让我们的JSP脱离java代码块和JSP表达式。基本语法EL表达式的语法格式非常简单,写为 ${表达式内容}例如:在浏览器中输出请求域中名称为message的内容。假定,我们在请求域中存入了一个名称为message的数据(request.se
2020-11-27 00:02:30
356
原创 第二十六天:cookie+session+jsp入门
1. 会话(Session)1.1 相关概念1.1.1 会话从打开浏览器访问服务器开始,到访问服务器结束(关闭浏览器、到了过期时间)期间,产生的多次请求和响应加在一起就称之为两者之间的一次会话。会话默认的超时时间是30分钟。会话管理技术存在的意义是什么?分析过程:一个会话过程中肯定会产生多次请求响应多次请求响应产生的数据需要共享,eg:登录状态/页面右上角显示的登录好的用户名。问题在于:请求域的有效范围是当前这次请求,不易在多次请求之间共享。所以就有了会话技术来:实现在一个会话中的多
2020-11-26 23:48:42
182
2
原创 第二十五天:Servlet中的Request和Response+请求转发,请求重定向,请求包含
Request&Response1 响应对象1.1 响应对象概述1.1.1 关于响应响应,它表示了服务器端收到请求,同时也已经处理完成,把处理的结果告知用户。简单来说,指的就是服务器把请求的处理结果告知客户端。在B/S架构中,响应就是把结果带回浏览器。响应对象,顾名思义就是用于在JavaWeb工程中实现上述功能的对象。1.1.2 常用响应对象响应对象也是是Servlet规范中定义的,它包括了协议无关的和协议相关的。协议无关的对象标准是:ServletResponse接口协议相关的对
2020-11-22 21:06:28
226
1
原创 第二十四天:Servlet
Servlet1 Servlet1.1 Servlet概述Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一。我们可以像学习Java基础一样,通过API来学习Servlet。这里需要注意的是,在我们之前JDK的API中是没有Servlet规范的相关内容,需要使用JavaEE的API。目前在Oracle官网中的最新版本是JavaEE8,该网址中介绍了JavaEE8的一些新特性。当然,我们可以通过访问官方API,学习和查阅里面的内容。打开官方API网址,在左
2020-11-20 23:17:58
102
原创 第二十三天:JavaEE规范+Tomcat+Http协议
Tomcat&Http协议-授课1 企业开发简介1.1 JavaEE规范JavaEE规范是J2EE规范的新名称,早期被称为J2EE规范,其全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定并得到广泛认可的工业标准(JCP组织成员)。之所以改名为JavaEE,目的还是让大家清楚J2EE只是Java企业应用。在2004年底中国软件技术大会Ioc微容器(也就是Jdon框架的实现原理)演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容
2020-11-20 22:59:46
1432
1
原创 第二十二天:css概念及相关语法+table标签相关样式+开发者工机具
1. CSS相关概念1.1 定义HTML组成页面的基本骨架,相当于“素颜”CSS美化页面,相当于“美颜”CSS (层叠样式表——Cascading Style Sheets),用于样式设置和网页布局的计算机语言。eg:调整内容的字体,颜色,大小等样式,设置边框的样式,调整模块的间距等。层叠:是指样式表允许以多次出现,并相互影响最终共同决定显示效果。样式:是指丰富的样式外观。拿边框距离来说,允许任何设置边框,允许外边距,也允许内边距。CSS目前流行的版本是CSS3,也就是最新最强大的版本。1
2020-11-16 12:35:59
195
1
原创 第二十一天:Html基础语法+样式&布局
1. 基本概念1.1 网页 上图中我们是通过浏览器访问网站的,一个网站可以有N多个网页,每个网页可以由Html、CSS、JS这些技术组成。1.2 HTML概念HTML(HyperText Markup Language):超文本标记语言超文本:比普通文本更强大标记:就是标签。HTML中基本上所有的内容呈现都是通过标签来实现的。2014年10月,万维网联盟宣布,经过8年时间的艰苦努力,HTML5 的规范终于制作完成。HTML4是之前比较主流的HTML版本;目前比较火的版本是HTML5,功能
2020-11-14 21:04:08
821
1
原创 第二十天: Linux文件管理+Linux备份压缩+网络与磁盘管理+shell与安装
Linux第二天1 Linux文件管理1.1 touch命令在Windows系统中,我们如果想创建一个文本文档或者word文件的时候,通常的做法是鼠标右键---新建---文本文档,这样的话,我们就成功的创建了一个文件,而在Linux中,我们可以通过字符命令的形式进行创建touch命令用于创建文件、修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。ls -l 可以显示档案的时间记录使用者权限:所有权限用户语法touch [-acfm][-d<日
2020-11-14 13:45:44
1352
原创 第十九天:初识Linux+系统与设置命令+目录管理
Linux1 初识Linux在前面的课程中,我们无论是开发、测试。部署、存储都在Windwos操作系统的环境中,从今天开始我们一起学习下Linux,Linux系统和Windows系统最大的区别就是图形化界面操作和用途上有所差异,除了这两点,两者有异曲同工之妙,在国内, Linux 系统更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows,也就是说Linux与Windows一样,同样也是操作系统只是在使用以及应用上有所差异,其他都是一样的;因为Linux也是操作系统所以在正式进入Linu
2020-11-13 14:47:22
2502
3
原创 第十八天:JUnit测试+Log4J日志
1.单元测试1.1概述JUnit是一个 Java 编程语言的单元测试工具。JUnit 是一个非常重要的测试工具1.2特点JUnit是一个开放源代码的测试工具。提供注解来识别测试方法。JUnit测试可以让你编写代码更快,并能提高质量。JUnit优雅简洁。没那么复杂,花费时间较少。JUnit在一个条中显示进度。如果运行良好则是绿色;如果运行失败,则变成红色。1.3使用步骤使用步骤将junit的jar包导入到工程中 junit-4.9.jar编写测试方法该测试方法必须是公共的无参
2020-11-13 13:38:19
286
2
原创 实现四舍五入 String split中含有小数点 str.split(“\\.“)
(如何自己实现和API一样的功能)public static String round(String str,int digit)参数1:数字和小数点组成的字符串。如"12.568"参数2:四舍五入的小数位数。如:2返回值:根据条件四舍五入后的字符串值。“12.57”注意:自行编写针对字符串操作的算法,不能使用Java现成的用于四舍五入的API方法题目已经提示对字符串操作public static String round(String str, int digit) { //
2020-11-09 16:59:38
466
原创 第十七天:配置文件xml+DTD、schema约束文件+枚举+注解
1.xml1.1概述万维网联盟(W3C)万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。建立者: Tim Berners-Lee (蒂姆·伯纳斯·李)。是Web技术领域最具权威和影响力的国际中立性技术标准机构。到目前为止,W3C已发布了200多项影响深远的Web技术标准及实施指南,如广为业界采用的超文本标记语言HTML(标准通用标记语言下的一个应用)、可扩展标记语言XML(标准通用标记语言下的一个子集)以及帮助残障
2020-11-08 20:46:30
324
原创 牛客刷题一:将字符串数字中为偶数位的数字进行翻转,将翻转后的结果进行输出
题目看上去很简单但是刚开始想了挺久没动键盘…最初的想法,要记录索引,又要记录索引上的值,多以想到了Map集合,但是Map集合没有索引,也没有办法根据索引排序,也不好给值倒序后来想到一个办法:public static String change(String number) { char[] chars = number.toCharArray(); int[] flag = new int[chars.length]; loop:for (int i
2020-11-07 23:57:43
749
原创 第十六天:类加载器+反射
1.类加载器1.1类加载器作用负责将.class文件(存储的物理文件)加载在到内存中1.2类加载的过程类加载时机创建类的实例(对象)调用类的类方法访问类或者接口的类变量,或者为该类变量赋值使用反射方式来强制创建某个类或接口对应的java.lang.Class对象初始化某个类的子类直接使用java.exe命令来运行某个主类类加载过程加载通过包名 + 类名,获取这个类,准备用流进行传输在这个类加载到内存中加载完毕创建一个class对象链接
2020-11-07 19:43:13
119
原创 第十五天:Java网络编程(UDP+TCP代买及案例)
1.网络编程入门1.1 网络编程概述计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程在网络通信协议下,不同计算机上运行的程序,可以进行数据传输1.2 网络编程三要素IP地址要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。也就是设备的标识
2020-11-06 14:51:28
107
原创 第十四天:线程池+线程工具类
1.线程池1.1 线程状态介绍当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程状态被定义在了java.lang.Thread.State枚举类中,State枚举类的源码如下:public class Thread { public enum State { /* 新建 */ NEW , /* 可运行状态
2020-11-06 14:41:44
3499
9
原创 第十三天:通过继承或实现接口创建多线程+线程安全(同步代码块和Lock锁)
1.实现多线程1.1简单了解多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RG03vgOm-1604643420749)(.\img\01_简单了解多线程.png)]1.2并发和并行并行:在同一时刻,有多个指令在多个CPU上同时执行。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JKcxCBRU-16
2020-11-06 14:22:25
185
JDK_API_1_6_zh_CN.CHM
2020-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人