- 博客(161)
- 收藏
- 关注
原创 SpringMVC面试专题及答案【二】
name=method4" 在。答:返回值可以有很多类型,有 String, ModelAndView,当一般用 String 比较好。答:通过 ModelMap 对象,可以在这个对象里面用 put 方法,把对象加到里面,前台就可以通。答:有两种写法,一种是实现接口,另外一种是继承适配器类,然后在 SpringMvc 的配置文件中。14、如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?答:直接在方法中声明这个对象,SpringMvc 就自动会把属性赋值到这个对象里面。
2023-02-13 15:25:53
467
1
原创 SpringMVC面试专题及答案【一】
1)springmvc 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器。答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整合。2)springmvc 是基于方法开发(一个 url 对应一个方法),请求参数传递到方法的形参,可以。1)它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java。设计为单例或多例(建议单例),struts2 是基于类开发,传递参数是通过类的属性,只能设。
2023-02-13 15:23:57
406
原创 redis面试题及答案(下)【三】
3、选择性读主库,添加一个缓存,用来记录必须读主库的数据,将哪个库,哪个表,哪个主键,作为缓存的 key,设置缓存失效的时间为主从库同步的时间,如果缓存当中有这个数据,直接读取主库,如果缓存当中没有这个主键,就到对应的从库中读取。如果一个线程 A 先删除缓存数据,然后将数据写入到主库当中,这个时候,主库和从库同步没有完成,线程 B 从缓存当中读取数据失败,从从库当中读取到旧数据,然后更新至缓存,这个时候,缓存当中的就是旧的数据。1、忽略这个数据不一致,在数据一致性要求不高的业务下,未必需要时时一致性。
2023-02-03 15:26:40
502
原创 redis 面试题及答案(下)【二】
模型,但是 redis 还提供了一些非 KV 存储之外的排序,聚合功能,复杂的 CPU 计算,会阻。3、高可用,redis 支持集群,可以实现主动复制,读写分离,而对于 memcache 如果想。2、需要进行数据的持久化功能,但是注意,不要把 redis 当成数据库使用,如果 redis。d) 线程模型,memcache 使用多线程,主线程监听,worker 子线程接受请求,执行。1、复杂数据结构,value 的数据是哈希,列表,集合,有序集合等这种情况下,会选择。要实现高可用,需要进行二次开发。
2023-02-03 15:25:38
396
原创 redis面试题及答案(下)【一】
RDB(Redis DataBase:在不同的时间点将 redis 的数据生成的快照同步到磁盘等介质上):内存到硬盘的快照,定期更新。AOF(Append Only File:将 redis 所执行过的所有指令都记录下来,在下次 redis 重启时,只需要执行指令就可以了):写日志。用 aof 来恢复内存的状态,如果没有 aof 日志,就会使用 rdb 文件来恢复。redis 的 key 是如何寻址的?每个 Master 节点都会负责一部分的槽,当有某个 key 被映射到某个 Master 负责的槽,那。
2023-02-03 15:22:09
212
原创 redis面试题及答案(上)【三】
接着第二个 if 判断,判断一下,myLock 锁 key 的 hash 数据结构中,是否包含客户端 2 的 ID,但是明显不是的,因为那里包含的是客户端 1 的 ID。只要客户端 1 一旦加锁成功,就会启动一个 watch dog 看门狗,他是一个后台线程,会每隔 10 秒检查一下,如果客户端 1 还持有锁 key,那么就会不断的延长锁 key 的生存时间。比如你的 web 系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的 key,而是应该把这个用户的所有信息存储到一张散列表里面。
2023-01-30 16:22:26
172
原创 redis面试题及答案(上)【四】
此时就会执行可重入加锁的逻辑,他会用:incrby myLock 8743c9c0-0795-4907-87fd-6c71a6b4586:1 1 ,通过这个命令,对客户端 1的加锁次数,累加 1。所以这个就是 redis cluster,或者是 redis master-slave 架构的主从异步复制导致的 redis 分布式锁的最大缺陷:在 redis master 实例宕机的时候,可能导致多个客户端同时完成加锁。在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如 rabbitmq 等。
2023-01-30 16:19:42
420
原创 redis面试题及答案(上)【一】
Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。这种方式对 hash 层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的数据,因此 Redis 可以用来实现很多有用的功能。
2023-01-17 16:28:02
322
原创 Kafka面试专题及答案【一】
消息系统都致力于让 consumer 以最大的速率最快速的消费消息,但不幸的是,push 模式下,当 broker 推送的速率远大于 consumer 消费的速率时,consumer 恐怕就要崩溃了。Kafa consumer 消费消息时,向 broker 发出"fetch"请求去消费特定分区的消息,consumer指定消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息,customer 拥有了 offset 的控制权,可以向后回滚去重新消费之前的消息,这是很有意义的。
2023-01-15 16:11:03
324
原创 MyBatis面试专题及答案【四】
TypeHandler 有两个作用,一是完成从 javaType 至 jdbcType 的转换,二是完成 jdbcType 至 javaType 的转换,体现为 setParameter()和 getResult()两个方法,分别代表设置 sql 问号占位符参数和获取列查询结果。答:在 Mybatis 配置文件中,可以指定默认的 ExecutorType 执行器类型,也可以手动给DefaultSqlSessionFactory 的创建 SqlSession 的方法传递 ExecutorType 类型参数。
2023-01-15 16:09:02
316
原创 MyBatis面试专题及答案【三】
原理是,Mybatis 解析 A 标签,发现 A 标签引用了 B 标签,但是 B 标签尚未解析到,尚不存在,此时,Mybatis 会将 A 标签标记为未解析状态,然后继续解析余下的标签,包含 B 标签,待所有标签解析完毕,Mybatis 会重新解析那些被标记为未解析的标签,此时再解析 A 标签时,B 标签已经存在,A 标签也就可以正常解析完成了。有了列名与属性名的映射关系后,Mybatis 通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的。
2023-01-15 16:00:46
381
原创 MyBatis面试专题及答案【二】
1)Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句,不过 mybatis 可以通过 XML 或注解方式灵活配置要运行的 sql 语句,并将java 对象和 sql 语句映射生成最终执行的 sql,最后将 sql 执行的结果再映射生成 java 对象。关联对象查询,有两种实现方式,一种是单独发送一个 sql 去查询关联对象,赋给主对象,然后返回主对象。12、什么是 MyBatis 的接口绑定,有什么好处?
2023-01-12 17:26:33
694
原创 MyBatis面试专题及答案【一】
答:Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。3)其执行原理为,使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此来完成动态 sql 的功能。独发送事先保存好的查询关联 B 对象的 sql,把 B 查询上来,然后调用 a.setB(b),于是 a 的。2)分页插件的原理:实现 Mybatis 提供的接口,实现自定义插件,在插件的拦截方法内拦。
2023-01-11 13:58:44
515
原创 MongoDB面试专题及答案【三】
从非集群分片升级到集群分片(sharding)是无缝的,所以在你的数据集还不是很大的时候没必要考虑集群分片(sharding)。没问题,这些文件是在分片(shard)进行均衡操作(balancing)的时候产生的临时文件。当完成后,数据只会出现在新的分片里(shard)。如果一个分片(shard)停止了,除非查询设置了“Partial”选项,否则查询会返回一个错误。更新操作会立即发生在旧的分片(shard)上,然后更改才会在所有权转移(ownership transfers)前复制到新的分片上。
2023-01-11 13:44:15
368
原创 MongoDB面试专题及答案【二】
这期间在主数据库上的操作将会失败--包括写入和强一致性读取(strong consistent read)操作。MongoDB 没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。通过精简对事务的支持,性能得到了提升,特别是在一个可能会穿过多个服务器的系统里。当然,你经常想得到确认,但是写操作的安全性和是否生效不是由这个决定的。在一个备份集群中,当失效备援(failover)事件发生时,一个另外的成员会变成 primary。15. 为什么我的数据文件如此庞大?
2023-01-10 15:09:13
368
原创 MongoDB面试专题及答案【一】
不会,磁盘写操作默认是延迟执行的。MySQL 和 MongoDB 有许多基本差别包括数据的表示(data representation),查询,关系,事务,schema 的设计和定义,标准化(normalization),速度和性能。通过比较 MySQL 和 MongoDB,实际上我们是在比较关系型和非关系型数据库,即数据存储结构不同。每个 journal (group)的写操作都是一致的,除非它是完整的否则在恢复过程中它不会回放。关系型数据库采用的结构化的数据,NoSQL 采用的是键值对的方式存储数据。
2023-01-10 15:07:58
460
原创 memcached面试专题及答案【三】
相等 chunks,不同 slab 的 chunk 大小是不相等的)。需要注意的是,250 是 memcached 服务器端内部的限制,slab 中 chunk 越大,它和前面的 slab 之间的间隙就越大。如果您使用的客户端支持”key 的前缀”或类似特性,那么 key(前缀+原始 key)的最大长度。拥有较多内存的节点上可以运行多个 memcached 实例,每个实例使用的内存跟其他节点上。我们推荐使用使用较短的 key,因为可以节省内存和带宽。因此,您可以在不同的节点上使用大小不等的缓存。
2023-01-10 14:54:37
437
原创 memcached面试专题及答案【二】
由于您不需要当心”hot”的 item 被 memcached LRU 算法突然淘汰,用户再也不用花几分钟来等待重新生成缓存数据(当缓存数据突然从内存中消失时),因此上面的方法可以全面提高性能。未来对多线程模式的改进,将移除大量的全局锁,提高 memcached 在负载极高的场景下的性能。如果您有大量的从不变化的数据,并且希望缓存很快热(warm)起来,批量导入缓存数据是很有帮助的。如果您需要批量导出导入,最可能的原因一般是重新生成缓存数据需要消耗很长的时间,或者数据库坏了让您饱受痛苦。
2023-01-08 15:17:16
201
原创 Linux 面试专题及答案【二】
alloc_pages(gfp_mask, order),_ _get_free_pages(gfp_mask, order)等。的进程先被调度,为防止多个高优先级的进程占用 CPU 资源,导致其他进程不能占有 CPU,Liunx 调度程序是根据根据进程的动态优先级来调度进程的,但是动态优先级又是根据静态。11) Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?执行文件,普通文件,目录文件,链接文件和设备文件,管道文件。
2023-01-06 09:53:28
277
原创 Linux 面试专题及答案【三】
字符设备描述符 struct cdev,cdev_alloc()用于动态的分配 cdev 描述符,cdev_add()用于注。表示设备编号,一般它是 32 位长度,其中 12 位用于表示主设备号,20 位用于表示次设备号,Linux 使用一个设备编号来唯一的标示一个设备,设备编号分为:主设备号和次设备号,一般主。设备号标示设备对应的驱动程序,次设备号对应设备文件指向的设备,在内核中使用 dev_t 来。应用程序实现,Linux 中的浮点运算是利用数学库函数实现的,库函数能够被应用程序链接后。
2023-01-06 09:50:34
338
原创 memcached面试专题及答案【一】
您应该特别注意,您的应用应该可以容忍节点的失效。比如您可以增加更多的节点(来减少丢失一个节点的影响),热备节点(在其他节点 down 了的时候接管 IP),等等。当客户端存取数据时,如果发现一个节点 down 了,就再做一次哈希(哈希算法与前一次不同),重新选择另一个节点(需要注意的时,客户端并没有把down 的节点从节点列表中移除,下次还是有可能先哈希到它)。但是,有了 memcached,只要您有空闲的内存,都可以用来增加 memcached 集群的规模,然后您就可以缓存更多的数据。
2023-01-06 09:41:25
303
原创 Linux 面试专题及答案【一】
在 Linux 内核环境下,申请大块内存的成功率随着系统运行时间的增加而减少,虽然可以通过vmalloc 系列调用申请物理不连续但虚拟地址连续的内存,但毕竟其使用效率不高且在 32 位系统上 vmalloc 的内存地址空间有限。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。Linux 内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的 API,另外一些同步机制,包括大内核锁、读写锁、大读者锁、RCU (Read-Copy Update,顾名思义就是读-拷贝修改),和顺序锁。
2022-12-28 15:44:14
553
原创 Dubbo 面试题及答案【六】
Thrift 是 Facebook 捐给 Apache 的一个 RPC 框架,当前 dubbo 支持的 thrift协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信息,比如 service name,magic number 等。适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或 URL 传入参数,暂不支持传文件。想要了解更多Java基础知识,可以点击评论区链接和小编一起学习java吧,此视频教程为初学者而著,零基础入门篇!
2022-12-27 15:57:35
51
原创 Dubbo 面试题及答案【五】
因为服务的现状大都是服务提供者少,通常只有几台机器,而服务的消费者多,可能整个网站都在访问该服务,比如 Morgan 的提供者只有 6 台提供者,却有上百台消费者,每天有 1.5 亿次调用,如果采用常规的 hessian 服务,服务提供者很容易就被压跨,通过单一连接,保证单一消费者不会压死提供者,长连接,减少连接握手验证等,并使用异步 IO,复用线程池,防止 C10K 问题。适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。因 dubbo 协议采用单一长连接,
2022-12-26 09:20:30
120
原创 Dubbo 面试题及答案【四】
注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外,注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表注册中心和监控中心都是可选的,服务消费者可以直连服务提供者。但重试会带来更长延迟。
2022-12-25 17:44:55
229
原创 Dubbo 面试题及答案【三】
而 Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了 Spirng、Spirng Boot 的优势之上,两个框架在开始目标就不一致,Dubbo定位服务治理、Spirng Cloud 是一个生态。 ConstantHash LoadBalance: 一致性 Hash 策略,使相同参数请求总是发到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其他提供者,避免引起提供者的剧烈变动; 广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于消息通知操作。
2022-12-23 17:40:44
319
原创 Dubbo 面试题及答案【二】
想要了解更多Java基础知识,可以点击评论区链接和小编一起学习java吧,此视频教程为初学者而著,零基础入门篇!服务名和类型,Map 中 key 存储服务 URL,value 服务过期时间。多个短连接,基于 HTTP 传输,多个短连接,传输协议 HTTP,传入参数大小混。多个短连接,同步 HTTP 传输,Hessian 序列化,传入参。传输协议 TCP,异步,Hessian 序。Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信。多个短连接,TCP 协议传输,同步传输,适用常规的。
2022-12-23 17:34:45
412
原创 Dubbo 面试题及答案【一】
采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,传输协议 TCP。多个短连接,同步 HTTP 传输,Hessian 序列化,传入参数较大,提供者大于消费者,提供者压力较大,可传文件;传输协议 TCP,异步,Hessian 序列化;,提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
2022-12-23 17:16:10
582
原创 MySQL 55题及答案【八】
9.mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵。3. int(20)中 20 的涵义: int(M)中的 M indicates the maximum。1. varchar 与 char 的区别: char 是一种固定长度的类型,varchar 则是。myisam 表时,select,update,delete,insert 语句都会给表自动。Mysql 内建的复制功能是构建大型,高性能应用程序的基础。3. 从服务器重做中继日志中的时间,
2022-12-20 14:46:19
687
原创 MySQL 性能优化的 21 个最佳实践【一】
多的 SQL 语句的优化,而只是针对 MySQL 这一 Web 应用最多的数据库。使用 EXPLAIN 关键字可以让你知道 MySQL 是如何处理你的 SQL 语句的。是查表时的 SQL 语句),我们都需要注意数据操作的性能。一,而且这是被 MySQL 的数据库引擎处理的。挑一个你的 SELECT 语句(推荐挑选那个最复杂的,有多表联接的),把关键。关于数据库的性能,这并不只是 DBA 才需要担心的事,而这更是我们。EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表。
2022-12-20 14:40:12
115
原创 MySQL 面试题及答案【九】
当 mysql 接收到一条 select 类型的 query时,mysql 会对这条 query 进行 hash 计算而得到一个 hash 值,然后通过该 hash 值到 query cache 中去匹配,如果没有匹配中,则将这个hash 值存放在一个 hash 链表中,同时将 query 的结果集存放进cache 中,存放 hash 值的链表的每一个 hash 节点存放了相应 query结果集在 cache 中的地址,以及该 query 所涉及到的一些 table 的相关信息;
2022-12-20 14:31:05
525
原创 MySQL55题及答案【二】
16、TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?当 CHAR 值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255。REGEXP 是模式匹配,其中匹配模式在搜索值的任何位置。11、CHAR 和 VARCHAR 的区别?13、如何获取当前的 Mysql 版本?14、Mysql 中使用什么存储引擎?15、Mysql 驱动程序是什么?12、列的字符串类型可以是什么?
2022-12-18 17:56:00
92
原创 MySQL 55题及答案【七】
这些权限表分别 user,db,table_priv,columns_priv 和。因此,在这种情况下,能被存储在 salary 列中的值的范围是从-9999999.99 到 9999999.99。MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY() - 从日期值中提取给定数据。在这个例子中,9(precision)代表将被用于存储值的总的小数位数,而 2(scale)代表将被用于。-在缺省模式下,MYSQL 是 autocommit 模式的,所有的数据库更新操作都会即时提交,所。
2022-12-18 17:54:48
379
原创 MySQL 55题及答案【六】
想要了解更多Java基础知识,可以点击评论区链接和小编一起学习java吧,此视频教程为初学者而著,零基础入门篇!如果想输入字符为十六进制数字,可以输入带有单引号的十六进制数字和前缀(45、NOW()和 CURRENT_DATE()有什么区别?NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。CURRENT_DATE()仅显示当前年份,月份和日期。46、什么样的对象可以使用 CREATE 语句创建?X),或者只用(Ox)前缀输入十六进制数字。44、可以使用多少列创建索引?
2022-12-18 17:48:55
363
原创 MySQL 55题及答案【五】
BLOB 和 TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小写,对 TEXT。35、mysql_fetch_array 和 mysql_fetch_object 的区别是什么?mysql_fetch_array() - 将结果行作为关联数组或来自数据库的常规数组返回。它是由 IBM 开发的,用于在磁带等辅助存储系统上存储和。有四种类型的 BLOB -mysql_fetch_object - 从数据库返回结果行作为对象。BLOB 类型,并具有相同的最大长度和存储要求。
2022-12-15 10:21:03
355
原创 MySQL 55题及答案【四】
在 SELECT 语句的列比较中使用=,,,,,AND,OR 或 LIKE 运算符。LAST_INSERT_ID 将返回由 Auto_increment 分配的最后一个值,并且不需要指定表名称。25、列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况?UNIX_TIMESTAMP 是从 Mysql 时间戳转换为 Unix 时间戳的命令。FROM_UNIXTIME 是从 Unix 时间戳转换为 Mysql 时间戳的命令。
2022-12-15 10:06:20
122
原创 MySQL55题及答案【三】
在 MyISAM Static 上的所有字段有固定宽度。Heal 表的大小可通过称为 max_heap_table_size 的 Mysql 配置变量来控制。22、MyISAM Static 和 MyISAM Dynamic 有什么区别?按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。federated 表,允许访问位于其他服务器数据库上的表。它用来压缩 MyISAM 表,这减少了磁盘或内存使用。表格的每一行都由主键唯一标识,一个表只有一个主键。17、主键和候选键有什么区别?
2022-12-12 14:48:07
95
原创 MySQL55题及答案【一】
1、一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录, 再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15?(2)如果表的类型是 InnoDB,那么是 15 InnoDB 表只是把自增主键的最大 ID 记录到内存中,所以重启数据库或者是对表进行 OPTIMIZE 操作,都会导致最大 ID 丢失。Latin 字符的这两个数据是相同的,但是对 于 Unicode 和其他编码,它们是不同的。
2022-12-09 16:03:03
776
原创 Java基础面试题【6】
这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。如果子类没有覆盖该方法,则该方法返回的信息与 getMessage()返回的结果相同public void printStackTrace():在控制台上打印 Throwable 对象封装的。在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable。Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态。try 块:用于捕获异常。
2022-12-08 16:34:35
402
原创 Java基础面试题【5】
25. 在调用子类构造方法之前会先调用父类没有参数 的构造方法,其目的是? 帮助子类做初始化工作。26. == 与 equals(重要) == : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同 一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址) equals() 享学课堂 : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:情况 1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个 对象时,等价于通过“==”比较这两个对象。
2022-12-07 16:41:14
459
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人