
Java重修之巅峰之路
文章平均质量分 82
java学习
轩鸢无敌
每一行代码都要有灵魂,才是合理的
展开
-
Linux基本指令
Linux内核:只提供操作系统的基本功能和特性,如内存管理,进程调度,文件管理等等。Linux内核: https://www.kernel.org/发行版:基于linus维护的linux内核,是由一些厂商集成了漂亮易用的桌面和常用的软件而发布的商品。Linux与Windows的不同Linux严格区分大小写Linux中所有内容都以文件形式保存,包括硬件Linux不靠拓展名区分文件类型:>压缩包:".gz",".bz2",".tar.bz2","*.tgz"等>二进制软原创 2021-06-16 10:07:58 · 1116 阅读 · 0 评论 -
初入-MongoDB入门
MongoDB简介什么是MongoDB?一个以JSON为数据模型的文档非关系型数据库为什么叫文档数据库?文档来自与"JSON Document",并不是我们理解的PFD,WORD文档MongoDB应用场景游戏场景、物流、社交、视频直播、日志处理:存海量数据,不重要的数据,一定的查询性能安装https://www.mongodb.com/download-center/community文档:https://spring.io/projects/spring-data-mong原创 2021-06-05 15:11:18 · 283 阅读 · 1 评论 -
Redis入门-开启了解使用redis的大门
Redis入门 1.了解数据库分类2.Redis简介 2.1 什么是redis? 2.2 Redis优缺点 2.3 redis-memcache与redis有什么区别?3.Redis数量类型指令 3.1 String类型 3.2 hash类型 3.2 list类型 3.3 set类型 3.4 zset类型4.redis进阶-高级命令5.redis持久化机制6.redis内存淘汰机制以及过去key处理7.Java redis应用 7.1jedis原创 2021-05-27 22:15:07 · 253 阅读 · 0 评论 -
Vue-Vue入门简介与操作
Vue入门 1.什么是Vue? 1.1 案例起步2.vue常见指令3.事件研究4.vue属性5.vue生命周期6.使用vue+Springboot前后端分离进行员工CRUD操作 6.1 跨域请求 6.2 后端代码 6.3 前端代码什么是vue?Vue是一套用于构建用户界面的渐进式框架, vue核心库只关心视图层案例起步下载vue.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js新建静态项目导入引入vue.原创 2021-05-25 00:29:34 · 214 阅读 · 0 评论 -
前后端分离-跨域请求问题
跨域请求了解路径的意义hhtp://localhost:8080/view/hello/index.html这是启动Tomcat服务器后,访问页面的对应路径由 http +url组成, 即协议://ip端口/路径1.ip :指向服务 (电脑)2.端口 : 指定 处理请求程序 (Tomcat) localhost:8080 ---相当于当前电脑去找到服务器Tomcat,对应端口就是80803.路径 :指定文件的所在位置,要访问到哪个页面 8080/ :后面这个原创 2021-05-23 16:07:21 · 341 阅读 · 0 评论 -
MyBatis-Plus详解
MyBatis-Plus 1.简介 1.1 操作步骤 1.2 mybatis-plus mapper编写规则2.注解介绍 2.1 常用注解 2.2 mybatis-plus通用Mapper接口3.条件构造器4.高级查询 4.1 列投影 select 4.2 排序 4.3 分组 4.4 条件查询5.mybatis-plus业务层定义 5.1 实现分页逻辑简介mybatis-plus :为简化开发而生MyBatis-plus 是在Mybatis的原创 2021-05-23 14:25:32 · 2093 阅读 · 0 评论 -
Git-Git版本控制与使用详解
Git 1.团队开发中问题2.版本控制概述3.Git 3.1 git演示操作 3.2 Git其他操作4.git远程仓库 4.1 码云远程仓库的操作步骤 4.2 开发中使用git团队开发中问题备份代码还原协同修改多版本项目文件管理(备份变动的数据)追溯问题代码的编写人和编写时间权限控制版本控制概述版本控制:版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。即一个项目从立项开始到作废为止,生命周期原创 2021-05-21 00:35:49 · 596 阅读 · 4 评论 -
SpringBoot自动配置原理详解
Springboot的自动配置原理@SpringbootApplication@SpringbootApplication 贴了这个注解的类叫做启动类,一般放在根包,一般Springboot项目只有唯一一个启动类 (配置类)@ComponentScan包路径扫描 :默认扫描当前包及其子包@SpringbootConfiguration包含了@Configuration ,成为配置类@EnableAutoConfiguration包含了@Import(AutoConfiguratio原创 2021-05-18 21:19:08 · 457 阅读 · 2 评论 -
RESTful风格-走进RESTful
RESTful什么是API**API (应用程序编程接口)**两种用法类似jar的使用:A软件将功能打包成组件(功能块:比如java中的jar),让B软件导入直接使用http请求方式:A项目(系统)提供一个映射方法路径,B项目(系统)发起http请求得到对应功能 (应用请求方式)应用接口:很多情况下,需要把系统的部分功能(组件)作为服务暴露给外部的其他应用使用,所以就需要把系统中的服务作为API接口暴露出去,一般分为公共接口和私用接口(公司内部)了解Web技术的发展阶段静态内容阶段:W原创 2021-05-18 20:13:38 · 4133 阅读 · 22 评论 -
Shiro框架-史上详解
Shiro 1.权限管理概述2.Shiro权限框架 2.1 概念 2.2 Apache Shiro 与Spring Security区别3.Shiro认证 3.1 基于ini认证 3.2 自定义Realm --认证4.Shiro授权 4.1 基于ini授权 4.2 自定义realm – 授权5.项目集成shiro 认证-授权注意点 5.1 认证 5.2 授权 5.3 注解@RequiresPermissions() 5.4 标签式权限验证6.S原创 2021-05-12 20:19:37 · 47751 阅读 · 26 评论 -
(四十四)数据字典-树状treeview树的实现
数据字典-treeview树的实现什么是数据字典?顾名思义数据字典=数据+字典 ,字典是用来查询东西的,所以数据字典就是描述数据信息的集合.数据字典是一种通用的程序设计方法,程序中有很多主体,每个主体的都有很多属性,每种属性都有很多取值并且不断变化.使用数据字典的优点: 1.简化了主体类的业务逻辑 2.高了系统的灵活性、通用性,减少了主体和属性的耦合度 3.使数据库表结构和程序结构条理上更清楚,更容易理解数据字典表设计1.二级数据字典设计方案 ,第一级:数据字典目录 第二级:数据字典明细2原创 2021-04-29 20:45:54 · 1989 阅读 · 1 评论 -
(四十三)权限管理(分析、实现权限加载过程)
权限管理分析项目为什么需要做权限功能?把系统的资源保护起来,给合理的人访问和使用权限控制表应该如何设计?首先需要根据需求分析,以员工为例员工 —>员工表员工角色表—>员工是什么角色(身份职位)角色表 ---->存员工职位角色权限表 ---->该角色有什么权限权限表 ----->管理分配权限权限限制要做资源的权限限制,就是要对系统中动态资源(控制器)的处理方法做出限制,包含了CRUD等操作. 即控制器中的处理方法就是一个个权限,所以数据库中的权限表的数原创 2021-04-26 15:55:08 · 662 阅读 · 2 评论 -
(四十二)模态框的使用
模态框使用模态框使用流程参考 Bootstrap 官方文档拷贝模态框的元素,点击JavaScript插件,选择模态框,里面有许多样式,以其中的样式为例 放在页面的body元素中,然后再加入input表单,修改添加或者编辑按钮,可以通过点击事件,给按钮绑定点击事件,点击后弹出模态框也可以参考官方给出的代码,$('#模态框的id').modal('show'); //官方文档中表示通过该方法即可弹出模态框 接下来以项目部门添加与编辑为例,因为添加按钮与编辑按钮,共用一个模态框与表单,所以原创 2021-04-26 11:46:30 · 1292 阅读 · 5 评论 -
(四十一)使用FreeMarker页面引擎、前端 twbs-pagination 分页插件、后端 PageHelper 分页插件概括
FreeMarker页面引擎什么是Freemarker?FreeMarker 是一款免费的模板引擎:即一种基于模板和数据,用来生成输出文本(HTML 网页,电子邮件,配置文件,源代码等)的通用工具.FreeMarker比JSP渲染性能更好,不跟web环境耦合,模板文件写不了java代码,责任更分离。FreeMarker解析优先于JSFreeMarker原理模板+数据=输出。模板只负责数据在页面中的表现,不涉及逻辑代码。逻辑由数据模型处理使用Freemarker添加依赖<!-- FreeMa原创 2021-04-21 22:05:57 · 560 阅读 · 6 评论 -
(四十)jQuery二(JSON与AJAX)
JSON与AJAXJSONJSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,有限提升网络传输效率数据交换格式有很多种,除了html以外,还有xml,还有JSONJSON格式除了数据,标点符号以外,其他都没有(轻量级),响应快HTML格式除了数据以外,还有标签,JS等格式JSON就是一种有格式的字符串,规则:映射用冒号(“:”)表示。”名称” : 值并列的数据之间用逗号(“,”)分隔。”名称1” : 值1, ”名称2” : 值2;映射的集合(原创 2021-04-20 21:17:29 · 250 阅读 · 2 评论 -
(三十九)jQuery基础(一)
jQuery简介jQuery是一个优秀的JavaScript框架jQuery是开源免费的jQuery是轻量级的JS库,兼容各种浏览器JQuery能干什么?jQuery 使用户能更方便地处理 HTML,events、实现动画效果, 并且方便地为网站提供 AJAX 交互.jQuery语法设计让开发者更简便,可以用于事件处理,处理AJAX等DOM对象与jQuery对象理解DOM与jQuery对象表现形式不一样,可以互转<button id="btn">切换</button&原创 2021-04-18 21:04:41 · 184 阅读 · 9 评论 -
(三十八)Spring框架详细概述大家庭第四集(Spring MVC详解、Controller、拦截器)
Spring(四)一.Spring MVC Spring MVC概述 MVC注解二.前端控制器 Spring MVC中的前端控制器 使用注解方式简单编写HelloWorld控制器 前端控制器映射路径 1.配置映射路径详解 2.Servlet与Controller的选择三.Controller控制器使用 处理响应 返回ModelAndView 返回String(常用) 请求转发和重定向 处理简单类型请求参数 处理原创 2021-04-14 21:37:35 · 248 阅读 · 1 评论 -
(三十七)Spring框架详细概述大家庭第三集(AOP、Spring事务、实现转账功能Mybatis与Spring业务集成)
Spring(三)一.AOP AOP思想 AOP术语 AspectJ AOP实现 1.使用XML配置 2.使用AOP注解配置二.Spring对事务支持 1.使用XMl配置事务 2.使用注解配置事务三.集成 需求,模拟转账功能,配合事务 1.使用XML配置 2.使用注解配置四.原理解读 批量配置Mapper对象模板方法设计模式:把一些相同操作定义父类中,把不同操作定义子类中,一般可以覆盖的方法都以do开头AOPAOP思想在开原创 2021-04-13 22:28:49 · 286 阅读 · 2 评论 -
(三十六)Spring框架详细概述大家庭第二集(DI注解、IoC注解、动态静态代理)
Spring(二)1.DI注解 @Autowired注解细节 @Resource注解细节 2.IoC注解 Scope 和 PostConstruct 以及 PreDestroy 注解 3.使用DI注解与IoC注解简化模拟实例 Spring容器可以自己存自己,为什么这样设计? 4.代理模式 静态代理 动态代理 JDK动态代理 CGLIB 动态代理DI注解@Value:注入常量值,贴字段或者setter方法@原创 2021-04-11 22:23:33 · 168 阅读 · 1 评论 -
(三十五)Spring框架详细概述大家庭第一集(IoC、DI、bean)
Spring(一)1.Spring定义 1.1 Spring FrameWork体系 1.2 IoC和DI思想 2.Spring配置 2.1 创建 2.2 ApplicationContext与bean 2.3 使用注解的方式 Spring测试 3.bean 3.1 bean实例方式 3.2 bean作用域 3.3 bean初始化和摧毁Spring定义Spring是一个轻量级的IoC/DI和AOP容器的开源框架,spring是一个容器(装对象原创 2021-04-10 21:56:30 · 222 阅读 · 6 评论 -
(三十四)mybatis关联关系(单向多对一、单向一对多、单向多对多)
mybatis关系关系应用需要解决的问题:怎么使用数据库表设计表示数据之间的关系怎么使用java类设计来表示对象之间的关系怎么通过mybatis来映射上面两者关联关系分类导航性:通过A对象的某一个属性可以访问到B,就说A可以导航到B单向:通过A属性导航到B,B不能导航到B双向:A,B可以互相导航多重性:一多一一对多多对一多对多实现1.明确需求2.表设计3.实体类设计一般看需求,决定关联书记邢定义睡那边,什么类型4.Mapper接口和Mapper.xml原创 2021-04-09 18:05:23 · 325 阅读 · 1 评论 -
(三十三)mybatis加强
mybatis加强使用Mapper接口相当于DAO,在接口汇总定义CRUD等方法 Mapper组件=Mapper接口+Mapper XMl文件规范:接口的命名为XxxMapper(Xxx为实体类名),一般与对应的XML文件放在一起(编译后的字节码文件和XML放在一起就行)XML命名空间nameSpace对应接口的全限定类名定义Mapper接口: UserMapperpublic interface UserMapper {void save(User user);}定义XMl: Use原创 2021-04-09 15:15:54 · 877 阅读 · 1 评论 -
(三十二)过滤器&监听器
过滤器&监听器过滤器Filter使用场景1.可以在过滤器中设置编码,不用在servlet中设置,减少Servlet里面的重复代码2.登录校验3.论坛敏感字过滤等 filter生命周期对象创建:启动服务器时创建init()执行 :初始化doFilter()执行:每次请求都会执行destroy()执行:正常关闭时销毁过滤路径配置过滤器路径/* : 当前Filter会对所有资源访问都会被拦截/check/* :说明filter只会以/check/作为前缀的资源路径进原创 2021-04-06 22:23:11 · 151 阅读 · 1 评论 -
(三十一)分页过滤查询
分页、过滤为什么做分页查询?避免数据过多时,查询出现内存溢出的情况,用户查询体验不好页面需要传递什么参数?当前页currentPage、每页条数pageSize页面需要展示什么数据页面需要展示数据(首页、上一页、当前页、下一页、尾页,跳转到第几页、每页条数等)怎么来的?查询数据库得到: 总数据totalCount用户传递过来 :当前页currentPage通过计算1.总页数 : 总数据%每页条数 ==0 ?总数据/每页条数 :总数据/每页条数+12.上一页 :原创 2021-04-06 21:20:37 · 725 阅读 · 1 评论 -
(三十)文件上传、下载,登录实现
文件上传,下载,登录大纲文件上传简单处理头像上传,身份证上传,商品图片等等获取文件(记得在对应Servlet头上贴上注解) @MultipartConfig,保存到磁盘中获取文件()文件下载简单处理下载各种协议,下载各种资源找到对应用户下载文件,使用响应对象的输出流把文件内容响应回浏览器//避免写死路径,这样项目可以随意迁移部署ServletContext对象.getRealPath("Web目录文件路径") //根据项目所在路径返回这个路径的绝对路径为什么要有三层架构的思想做到原创 2021-03-31 08:49:26 · 352 阅读 · 1 评论 -
(二十九)会话跟踪技术总结(Cookie、Session)
会话跟踪技术WHY WHAT HOW大纲什么需要会话跟踪技术?因为http是无状态的,不能区分用户是谁,实际上很多需求需要区分请求用户是谁HTTP无状态:服务器不清楚哪个请求是哪个用户发送的CookieCookie是客户会话跟踪端技术Cookie如何使用?1.在服务端怎么创建Cookie , Cookie cookie new Cookie("名称","值")2.响应,把cookie数据写回浏览器响应对象.addCookie(cookie);3.如何在JSP和Servlet中获原创 2021-03-28 13:17:30 · 231 阅读 · 3 评论 -
(二十八)请求转发与重定向
请求转发和重定向作用: 用于web组件的跳转,从A组件调到另一个组件请求转发forward由服务器端进行页面跳转,称为转发 .服务器只发出了一次请求方法request.getRequestDispatcher("/需要跳转的地址").forward(req,resp);1.在请求转发中,地址栏中的参数可以共享2.请求转发中,最后显示在浏览器上的内容为最后一个资源的内容3.在请求转发中,不能访问站外(跨域)资源. 跨域:ip,端口,协议 任意一个改变都叫跨域4.在请求转发中,地址栏不发生改变原创 2021-03-26 08:46:59 · 223 阅读 · 1 评论 -
(二十七)Servlet
Servlet概述Servlet是用java编写的服务器端程序 ,能够生成动态web内容 ,即Servlet是运行在Web服务器(如Tomcat),使用java编写的小应用程序广义Servlet:实现了这个Servlet接口的类 (一般指广义)狭义:java语言实现的一个接口作用渲染的是浏览器 ,通过浏览器客户端去访问Servlet .接收浏览器请求并响应数据给浏览器Servlet开发步骤创建一个类去实现javax.servlet.Servlet接口实现接口中的所有方法在servic原创 2021-03-23 16:14:21 · 281 阅读 · 1 评论 -
(二十六)通信协议(TCP ),HTTP协议
通信协议与Tomcat服务器CS/BSC/S结构 :全称为 Client/Server 结构,是指客户端和服务器结构。安全性更高B/S结构 :全称为 Browser/Server 结构,是指浏览器和服务器结构。网络通信三要素IP地址:IP是用来给一个网络中的计算机设备做唯一的编号端口号:用两个字节表示的整数,它的取值范围是0~65535通信协议:计算机必须遵循的规则通信协议UDP无连接通信协议,面向无连接的协议,消耗资源小,通信效率高,通常用于音频,视频等数据传输,但是不能保证数原创 2021-03-19 19:35:08 · 306 阅读 · 1 评论 -
(二十五)JavaScript基础
JavaScriptJS是一门脚本语言JavaScript三部分ECMAScript :javascript语言基础(规定了javascript脚本的核心语法)DOM:文档对象模型,规定了访问HTMl和XML的接口BOM:浏览器对象模型:提供了独立内容在浏览器窗口之间进行交互的对象和方法特点解释性脚本语言(代码不进行预编译)主要用来向HTML页面添加交互行为可以直接嵌入HTML页面,可以写成单独的js文件(有利于结构和行为的分离)JS的语法基本跟java一致严格区分大小写原创 2021-03-17 10:55:27 · 203 阅读 · 1 评论 -
(二十四)HTML基础
HTMLHTML:超文本标记语言,是静态网页,用于在浏览器上显示数据id:表示唯一的,不允许重复 class:样式,允许重复常用的标签<!-- 注释内容 --> :注释标签<html> :HTML根标签<head> :HTML头部标签<title> :页面标题<body> :HTML主体部分<style> :样式<script> :用于写JavaScript或引入JavaScript 文件<原创 2021-03-13 22:19:25 · 108 阅读 · 1 评论 -
(二十三)MyBatis框架基础
MyBatis框架基础什么是框架框架就是骨架,跟建房子的架构一样其实就是对基础代码的一种封装,并且提供相应的API框架是一种经过校验(就是经过前人的采坑,已经测试过了),具有一定功能的半成品软件MybatisMyBatis是一款优秀的持久层框架,支持定制SQL,存储过程.高级映射,**避免了几乎所有的JDBC代码和手动设置参数以及获取结果集 **功能架构API接口层:开发人员通过本地API操纵数据库 ,接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理 ,思考:对象怎么获取才能去原创 2021-03-11 19:38:06 · 137 阅读 · 2 评论 -
(二十二)JDBC,连接池,重构思想
JDBCjdbc是一个组件,能都被多种数据库访问,由java语言编写的类和接口组成为什么要学习JDBC规范JDBC是java连接数据库的一个标准,由数据库各个厂商来完成接口的实现JDBC执行规范注册驱动,加载JDBC驱动获取连接对象获取预编译语句对象preparedStatement执行SQL语句释放资源1.Class.forName(com.mysql.jdbc.Driver);2.Connection connection =DriverManager.getConnectio原创 2021-03-10 10:08:17 · 359 阅读 · 3 评论 -
(二十一)Mysql基础
Mysql基础概述数据库(DB):存储和管理数据的仓库数据库管理系统(DBMS):专门用于管理数据库的计算机系统软件数据库分类关系型数据库DBMS , Oracle ,DB2,MySQL ,SQL Server非关系型数据库ORDBMS ,NoSQL not only sqlSQL数据查询语言(DQL)数据操作语言(DML)事务处理语言(TPL)数据控制语言(DCL)数据定义语言(DDL)指针控制语言(CCL)表与对象间的关系ORM思想(对象关系映射原创 2021-03-07 20:23:39 · 127 阅读 · 2 评论 -
(二十)注解基本理解
注解Annotation什么是注解注解是用来修饰类中的成员信息的,例如 @Test ,@override就是注解的一种,注解就像学校的盖章一样,当盖章盖在了毕业证书上,那么你才能表示毕业,但是当你不毕业的时候压根就不需要他(没有赋予盖章的意义)所以反应到程序中,注解贴在程序元素上,想要拥有一些功能,必须要有对应的角色参与注解本身被贴的程序元素第三方程序(使用反射给注释赋予功能)元注解注解要想拥有功能,首先需要被元注解所赋予元注解:在定义注解的时候用来贴在注解上的注解,用来限定注解的用法原创 2021-03-05 20:03:29 · 203 阅读 · 4 评论 -
(十九)反射、内省机制
反射什么是反射在程序运行过程中,通过字节码对象,去获取类的信息(构造器,方法,字段)为什么使用反射?当我们知道要使用哪个类时,我们直接调用该类创建对象,调用方法即可,但是当我们不知道使用哪个类时,我们可以通过反射去获取类的信息,使用反射获取到类的对象的真实类型以及调用其方法什么是字节码对象?把类想象成一个一个独立的个体,那么他们所共有的特性就是一个大Class来概括,把类抽象成一个一个对象,而字节码就是可以抽象成一个类,通过类去创建真实对象.正常类创建对象:Person p =new原创 2021-03-04 14:11:18 · 272 阅读 · 5 评论 -
(十八)JUnit与XML概括
Junit与XML软件的生命周期和设计原则生命周期软件生命周期可以分为6个阶段项目开始规划,定义:确定软件开发的目标与可行性需求分析:对软件需要实现的功能进行需求分析软件设计:设计每一个模块的结构,搭建整体框架代码编写:代码编写实现部分软件测试:对代码进行软件测试(白盒,黑盒)运行维护:软件生命周期最长的一部分,对开发的软件进行定期维护设计原则可重用性 :遵循**DRY(Don’t Repeat Yourself)**原则可拓展性可维护性模块要求结构稳定可拓展性可原创 2021-03-02 22:32:21 · 841 阅读 · 4 评论 -
(十七)多线程
多线程程序和进程的概念程序:硬盘上存储的,静止的代码进程:程序的一次执行的产生进程,每个进程对应一定的内存空间,并且 只能使用自己的内存空间,各个进程之间互不干扰进程称为操作系统资源分配的基本单位并发和并行并发:在一段时间内多个进程轮流使用同一个CPU,多个进程形成并发并行:在同一时刻多个进程使用各自的CPU,多个进程形成并行,并行需要多个CPU支持并发是能够让操作系统从宏观看起来同一时间段执行多个任务,操作系统一般通过CPU时间片轮转实现并发线程线程的出现为了解决实时性问题线程:原创 2021-02-25 10:16:00 · 168 阅读 · 1 评论 -
(十六)异常总结
异常概念异常(Exception)是指程序在运行过程中所发生的不正常事件,它会中断正在运行的程序异常不是错误,更不是程序的逻辑错误异常处理机制异常会导致程序中断运行异常处理可以保证程序出现异常后,往正确方向运行异常处理异常对象异常对象时出现异常时的那条语句产生的(jvm自动创建)Exception是所有异常类的子类方法toString返回异常类型和异常信息getMessage返回异常信息printStackTrace打印堆栈信息,位置不固定tr原创 2021-02-03 14:12:17 · 232 阅读 · 1 评论 -
(十五)集合框架(哈希表,二叉树,Set接口,Map集合)
集合框架(二)非线性结构线性数据结构:数组,栈,队列,链表非线性结构:树,哈希表哈希表集合中存储的元素都是引用类型,每个元素都有对应的哈希值(hashCode),元素对象的hashCode值决定了在哈希表中的存储位置当往集合中添加元素对象时,先判断该对象和集合中的对象hashCode是否相等相等:再继续判断新对象和集合对象equals比较equals相等(true),则判断为同一对象,不进行保存equals不相等(false),则存储在之间对象同位置的链表上不相等:直接把新原创 2021-02-02 15:20:21 · 303 阅读 · 6 评论