- 博客(38)
- 收藏
- 关注
原创 腾讯pcg客户端一面
最长重复子序列 面呗的Java环境用不了,先是尝试了一下go,然后共享屏幕用本地idea。基本都能答上来,Java情况比较好,但是操作系统和计网可以加强一下,然后面试不用紧张!Lock和reentrantlock有什么不一样。Reentrantlock要手动释放锁吗。所有类的父类是什么,有哪些常用方法。虚拟内存和物理内存如何映射。Tcp和Udp有什么区别。内核态和用户态怎么切换。常见异常以及怎么处理。七层网络模型是哪七层。
2025-03-26 22:48:21
388
原创 TCP 的 time_wait 有什么作用
为了确认服务端成功收到了最后一个ACK,如果最后一个ACK丢失的话,按照TCP的重传机制,服务端是会重新发送FIN = 1的。原因一:防止历史连接中的数据,被后面相同四元组的连接错误的接收。原因二:确认最后做一个ACK被服务端接受。
2025-03-26 14:36:13
372
原创 JVM常用垃圾回收器
Serial 和Serial Old收集器Serial 系列的垃圾收集器采用了简单高效、资源消耗最少、单线程收集的设计思路。简单高效:由于硬件资源有限,垃圾回收器需要设计得简单高效,以减少系统资源的占用。Serial 系列的垃圾收集器实现简单,适用于小型应用或者简单的测试场景。资源消耗最少:考虑到当时硬件资源有限,Serial 系列的垃圾收集器尽可能地减少了对系统资源的占用。通过使用单线程执行垃圾回收操作,避免了多线程切换的开销,从而最大程度地节约了系统资源。单线程收集:由于早期的硬件环境和应用场景下,并发
2025-03-21 11:16:22
663
原创 leetcode top100矩阵题73.54.48.240
i < line;i++) {j < col;j++) {i < line;i++) {j++) {return;int i = 0;int j = -1;k < col;k++) {line = tmp;return ans;i < lines;i++) {j < cols;j++) {i < lines;i++) {j < cols;j++) {return;i < m;i++) {continue;
2025-03-13 21:49:45
786
原创 索引下推ICP
条件满足,使用索引中的主键去定位并读取完整的行记录(就是所谓的回表);条件部分能否用索引中的列来做检查,条件不满足,则处理下一行索引记录;索引下推的目的是为了减少回表次数,也就是要减少IO操作。引用了存储函数的条件不能下推,因为存储引擎无法调用存储函数。存储引擎来说,索引下推只适用于二级索引(也叫辅助索引);来说,数据和索引是在一起的,不存在回表这一说。根据索引中的主键值,定位并读取完整的行记录;存储引擎读取索引记录(不是完整的行记录);存储引擎读取索引记录;层去检测该记录是否满足。层检测该记录是否满足。
2025-03-13 15:49:45
221
原创 bean的生命周期(TX面试题)
判断当前bean对象是否实现相关的aware接口(beanNameAware, beanFactoryAware, ApplicationContextAware),如果有的话执行对应的方法。判断当前bean对象是否为单例,是则放到spring对应对象容器中,多例则直接返回bean对象;执行bean对象的前置处理器postprocessbeforinitialztion;执行bean对象的后置处理器postprocessafterinitialztion;关闭容器,调用destroy方法销毁对象;
2025-03-11 11:55:46
307
原创 Redis大key问题的理解
由于大Key占用较多内存,同步过程中需要传输大量数据,这会导致主从之间的网络传输延迟增加,进而影响数据一致性。对于大Key的操作,如读取、写入、删除等,都会消耗更多的CPU时间和内存资源,进一步降低系统性能。Redis大key问题指的是某个key对应的value值所占的内存空间比较大,导致Redis的性能下降、内存不足、数据不均衡以及主从同步延迟等问题。没有固定的判别标准,通常认为字符串类型的key对应的value值占用空间大于1M,或者集合类型的k元素数量超过1万个,就算是大key。对大Key进行清理。
2025-03-10 16:48:04
274
原创 Spring框架中,当同一个bean被多个地方引用时,是否会出现属性冲突的问题?
答案是会的,因为bean中默认使用单例模式,整个应用上下文中只会存在一个实例。这就涉及到线程安不安全了。如果 Bean 没有可变的成员变量(例如只包含方法或常量),或者所有操作都是基于方法参数而非成员变量,那么多处引用不会有问题。@Service// 无成员变量,或者成员变量是 final/不可变对象如果 Bean 包含可变的成员变量,并且多个调用方可能同时修改这些变量,则会导致状态冲突。@Service// 可变的成员变量counter++;如果两个线程同时调用counter。
2025-03-09 22:17:04
1019
原创 Java并发学习笔记(1)
当一个新任务交给线程池,如果此时线程池中有空闲的线程,就会直接执行,如果没有空闲的线程且当前线程池的线程数量小于corePoolSize,就会创建新的线程来执行任务,否则就会将该任务加入到阻塞队列中,如果阻塞队列满了,就会创建一个新线程,从阻塞队列头部取出一个任务来执行,并将新任务加入到阻塞队列末尾。:线程安全的列表,在对列表进行修改操作时,会创建一个新的底层数组,将修改操作应用到新数组上,而读操作仍然可以在旧数组上进行,从而实现了读写分离,提高了并发读的性能,适用于读多写少的场景。
2025-03-03 16:50:43
731
原创 Spring学习记录
开发者通过配置文件(XML)、注解或 Java 配置类定义 Bean。例如:</bean>或者使用注解:@Service@Autowired。
2025-03-02 17:09:11
453
原创 JVM学习记录
| | 程序计数器 | | | | Java 堆 | | || | | Java 虚拟机栈 | | | | 方法区 | | || | 线程私有区域 | | 线程共享区域 | || | | 本地方法栈 | | | | 运行时常量池 | | || | 直接内存(堆外内存) | |可以动态扩展,但无法申请到足够内存时,会抛出。
2025-03-02 17:04:08
764
原创 Java基础学习记录
当一个新任务交给线程池,如果此时线程池中有空闲的线程,就会直接执行,如果没有空闲的线程且当前线程池的线程数量小于corePoolSize,就会创建新的线程来执行任务,否则就会将该任务加入到阻塞队列中,如果阻塞队列满了,就会创建一个新线程,从阻塞队列头部取出一个任务来执行,并将新任务加入到阻塞队列末尾。如果多个键映射到同一个槽位,它们会以链表的形式存储在同一个槽位上,因为链表的查询时间是O(n),所以冲突很严重,一个索引上的链表非常长,效率就很低了。// 输出 "Hello World"
2025-03-02 17:03:24
421
原创 操作系统学习记录
它使得应用程序认为它拥有连续的可用的内存,而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。中断是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程。系统中既有操作系统的程序,也有普通用户程序。为了安全性和稳定性,操作系统的程序不能随便访问,这就是内核态。不能直接使用系统资源,也不能改变 CPU 的工作状态,并且只能访问这个用户程序自己的存储空间!
2025-03-02 17:01:51
215
原创 计网学习笔记记录
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它确保数据包按顺序且无误地传送到接收方。连接建立:TCP是面向连接的协议,这意味着在发送数据之前,通信双方需要先建立一个连接。这通常通过“三次握手”机制完成。第一次握手:客户端向服务器发送一个SYN(同步序列号)包,请求建立连接。第二次握手:服务器收到SYN包后,回复一个SYN-ACK包,确认收到请求,并向客户端发送自己的SYN请求。第三次握手。
2025-03-02 17:00:02
413
原创 redis理论八股的学习记录
Redis是开源的内存数据存储系统,支持多种数据结构,可以用作缓存、实时队列和消息中间件,在性能、可扩展性和灵活性方面表现出色。
2025-03-02 16:57:42
975
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人