- 博客(10)
- 收藏
- 关注
原创 java面试题(恶补跳槽必看)
Collection和Map是Java集合框架的两大类,分别用于存储单列和双列数据。List和Set是Collection的两个主要子接口,分别代表有序和无序的集合。Map接口的实现类提供了键值对的存储和管理功能。类提供了操作集合的工具方法,增强了集合的功能。在实际开发中,根据具体需求选择合适的集合类型和实现类,可以有效地提高程序的性能和可维护性。并行和并发都是提高程序处理能力的重要概念。并行侧重于物理上的同时执行,而并发侧重于逻辑上的同时执行。
2024-06-07 14:34:03
1036
原创 乐观锁和悲观锁
悲观锁适用于冲突频繁的场景,它通过立即加锁来避免冲突,但可能会降低并发性能。乐观锁适用于冲突较少的场景,它通过事后检查来处理冲突,可以提供更高的并发性能,但需要处理回滚的情况。在实际应用中,选择哪种锁策略取决于具体的业务需求和数据访问模式。有时候,系统可能会结合使用乐观锁和悲观锁,以适应不同的业务场景。
2024-06-03 21:00:00
1474
原创 数据库的事务隔离?
想象一下,你和你的朋友们在玩一个叫做“银行大盗”的游戏。在这个游戏中,你们每个人都有一个银行账户,而游戏的目标是通过一系列的交易来增加自己的财富。但是,你们需要遵守一些规则来确保游戏的公平性,这些规则就像数据库的事务隔离级别一样。
2024-06-03 15:00:00
751
原创 explain是什么?为什么使用explain?explain的使用方法? explain如何优化查询性能?
当我们对数据库的查询执行计划感到困惑时,Explain就会跳出来,告诉我们数据库是如何执行我们的查询的。Explain就像是数据库的“监控录像”,它记录了数据库执行查询时的每一步,帮助我们理解查询的执行过程。:这是案件的类型,比如是简单的查询(SIMPLE)、主查询(PRIMARY)、子查询(SUBQUERY)、联合查询(UNION)还是衍生表查询(DERIVED)。通过这个档案,我们可以看到,我们的查询是高效的,因为它使用了索引来快速定位数据,而不是全表扫描。这就像你调查时的证据来源,比如目击者的证词。
2024-06-03 10:02:09
1032
原创 设计模式-单列模式
单列模式(Singleton Pattern)是一种确保一个类只有一个实例,并提供一个全局访问点的设计模式。这种模式在Java中非常常见,尤其是在需要控制资源使用或确保数据一致性的情况下。
2024-06-03 07:54:07
1290
原创 怎么确保一个集合不能被修改?
使用 Collections.unmodifiableList() 方法:使用 Collections.unmodifiableSet() 或 Collections.unmodifiableMap() 方法:使用 Collections.emptySet(), Collections.emptyMap(), Collections.emptyList() 方法:使用 Collections.singleton() 方法:使用 Collections.nCopies() 方法:自定义不可变集合:
2024-06-02 04:47:34
578
原创 == 和 equals 的区别是什么?
想象一下,你和你的朋友分别买了一台一模一样的手机,这两台手机的外观、功能、甚至序列号都完全相同。但是,它们是两个独立的实体,分别放在你们各自的口袋里。比较的是手机的“内在属性”(内容)。即使手机的内在属性完全相同,它们在不同的口袋里,都是用来比较两个对象是否相等的,但它们在比较的对象类型和比较的规则上有所不同。在编程中,当你比较对象时,通常需要根据对象的类型和上下文来决定使用。对于对象,如果你想要比较它们的内容,通常需要使用。比较的是手机的“口袋位置”(内存地址),而。的区别,并且用一个诙谐的例子来说明。
2024-06-01 11:47:58
341
原创 什么是锁池?什么是等待池?以及sleep,和wait的区别是什么?
继续上面的例子,如果电影院的售票窗口关闭了,正在排队的人(持有锁的线程)会告诉其他人“请等待,我需要休息一下”。其他想要买票的人(其他线程)可以继续排队,但不能买票,直到这个人(持有锁的线程)从休息区回来。假设你正在做家务,你决定休息一下,于是你告诉你的家人“我要休息10分钟”。假设你正在和你的家人玩一个游戏,你告诉他们“我需要等待,直到轮到我”。当一个线程获得了锁(比如进入了一个同步方法或代码块),其他线程就必须等待,直到这个线程释放锁。方法时,它会释放对象的锁,并进入对象的等待池。
2024-06-01 08:51:07
638
1
原创 什么是哈希冲突 以及如何避免哈希冲突
哈希冲突(Hash Collision)是指在使用哈希函数时,两个不同的输入值(称为键或关键字)产生了相同的输出值(哈希码或哈希值)。虽然完全避免哈希冲突是不可能的,因为哈希函数的输出范围通常小于可能的键的数量,但可以采取一些策略来减少冲突的发生。例如,可以使用一个好的哈希函数,并在哈希表负载因子较高时进行扩容,同时使用链地址法来处理冲突。使用链地址法来解决哈希冲突,所以当两个键具有相同的哈希值时,它们会被存储在同一个桶的链表中。在上面的代码中,由于我们使用了相同的键,所以。,这将导致哈希冲突,因为。
2024-06-01 08:16:16
1789
原创 两个对象的HashCode相同,那它们就一定相等吗?
这是因为哈希函数通常将一个大的输入空间映射到一个较小的输出空间(例如,从任意对象映射到一个整数),因此不同的输入可能会映射到相同的输出。如果两个对象在这些属性上具有相同的值,它们可能会产生相同的。类的默认实现,该实现通常返回对象的内存地址的哈希值。方法则用于确定对象在哈希表中的存储位置,它返回一个整数,这个整数通常用于快速定位和访问对象。:即使两个对象在所有属性上都相同,由于哈希函数的局限性,它们也可能产生相同的。:在概率上,即使两个对象是不同的,它们也可能产生相同的。方法用于确定对象是否应该被视为相等。
2024-06-01 08:02:22
866
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅