- 博客(46)
- 收藏
- 关注
原创 Android四大组件
用于接收和响应广播事件,比如系统发出的电量变化、网络状态变化,或自定义的应用内广播。:接收系统广播(如开机启动)、App 内部模块通信等。:用于在不同应用之间共享数据,提供统一的数据访问方式。可以在应用退出后继续运行(前提是没有被系统回收)。:打开一个新页面,如登录页、设置页、详情页等。:用于在后台执行长时间运行的操作,不提供界面。通常配合数据库使用(如 SQLite)。可以是前台服务(带通知栏)或后台服务。:用于呈现用户界面,处理用户的交互。:音乐播放、下载、后台定位等。(同步,可被拦截)。
2025-04-15 15:03:56
255
原创 策略模式和工厂模式有啥区别
例如:需要根据配置或条件创建不同类型的数据库连接对象(MySQL、PostgreSQL),但客户端不关心创建细节。定义一组算法(或策略),使它们可以互相替换,且算法的变化独立于使用它的客户端。例如:支付场景中,用户可以选择支付宝、微信支付等不同策略,且策略可以随时切换。将对象的实例化过程封装起来,隐藏创建逻辑,客户端无需关心对象如何创建。:解耦具体算法的实现与调用方,通过组合而非继承来扩展功能。:解耦对象的创建与使用。
2025-04-10 20:35:03
133
原创 腾讯pcg客户端一面
最长重复子序列 面呗的Java环境用不了,先是尝试了一下go,然后共享屏幕用本地idea。基本都能答上来,Java情况比较好,但是操作系统和计网可以加强一下,然后面试不用紧张!Lock和reentrantlock有什么不一样。Reentrantlock要手动释放锁吗。所有类的父类是什么,有哪些常用方法。虚拟内存和物理内存如何映射。Tcp和Udp有什么区别。内核态和用户态怎么切换。常见异常以及怎么处理。七层网络模型是哪七层。
2025-03-26 22:48:21
406
原创 TCP 的 time_wait 有什么作用
为了确认服务端成功收到了最后一个ACK,如果最后一个ACK丢失的话,按照TCP的重传机制,服务端是会重新发送FIN = 1的。原因一:防止历史连接中的数据,被后面相同四元组的连接错误的接收。原因二:确认最后做一个ACK被服务端接受。
2025-03-26 14:36:13
393
原创 JVM常用垃圾回收器
Serial 和Serial Old收集器Serial 系列的垃圾收集器采用了简单高效、资源消耗最少、单线程收集的设计思路。简单高效:由于硬件资源有限,垃圾回收器需要设计得简单高效,以减少系统资源的占用。Serial 系列的垃圾收集器实现简单,适用于小型应用或者简单的测试场景。资源消耗最少:考虑到当时硬件资源有限,Serial 系列的垃圾收集器尽可能地减少了对系统资源的占用。通过使用单线程执行垃圾回收操作,避免了多线程切换的开销,从而最大程度地节约了系统资源。单线程收集:由于早期的硬件环境和应用场景下,并发
2025-03-21 11:16:22
682
原创 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
823
原创 索引下推ICP
条件满足,使用索引中的主键去定位并读取完整的行记录(就是所谓的回表);条件部分能否用索引中的列来做检查,条件不满足,则处理下一行索引记录;索引下推的目的是为了减少回表次数,也就是要减少IO操作。引用了存储函数的条件不能下推,因为存储引擎无法调用存储函数。存储引擎来说,索引下推只适用于二级索引(也叫辅助索引);来说,数据和索引是在一起的,不存在回表这一说。根据索引中的主键值,定位并读取完整的行记录;存储引擎读取索引记录(不是完整的行记录);存储引擎读取索引记录;层去检测该记录是否满足。层检测该记录是否满足。
2025-03-13 15:49:45
226
原创 bean的生命周期(TX面试题)
判断当前bean对象是否实现相关的aware接口(beanNameAware, beanFactoryAware, ApplicationContextAware),如果有的话执行对应的方法。判断当前bean对象是否为单例,是则放到spring对应对象容器中,多例则直接返回bean对象;执行bean对象的前置处理器postprocessbeforinitialztion;执行bean对象的后置处理器postprocessafterinitialztion;关闭容器,调用destroy方法销毁对象;
2025-03-11 11:55:46
317
原创 Redis大key问题的理解
由于大Key占用较多内存,同步过程中需要传输大量数据,这会导致主从之间的网络传输延迟增加,进而影响数据一致性。对于大Key的操作,如读取、写入、删除等,都会消耗更多的CPU时间和内存资源,进一步降低系统性能。Redis大key问题指的是某个key对应的value值所占的内存空间比较大,导致Redis的性能下降、内存不足、数据不均衡以及主从同步延迟等问题。没有固定的判别标准,通常认为字符串类型的key对应的value值占用空间大于1M,或者集合类型的k元素数量超过1万个,就算是大key。对大Key进行清理。
2025-03-10 16:48:04
301
原创 Spring框架中,当同一个bean被多个地方引用时,是否会出现属性冲突的问题?
答案是会的,因为bean中默认使用单例模式,整个应用上下文中只会存在一个实例。这就涉及到线程安不安全了。如果 Bean 没有可变的成员变量(例如只包含方法或常量),或者所有操作都是基于方法参数而非成员变量,那么多处引用不会有问题。@Service// 无成员变量,或者成员变量是 final/不可变对象如果 Bean 包含可变的成员变量,并且多个调用方可能同时修改这些变量,则会导致状态冲突。@Service// 可变的成员变量counter++;如果两个线程同时调用counter。
2025-03-09 22:17:04
1052
原创 Java并发学习笔记(1)
当一个新任务交给线程池,如果此时线程池中有空闲的线程,就会直接执行,如果没有空闲的线程且当前线程池的线程数量小于corePoolSize,就会创建新的线程来执行任务,否则就会将该任务加入到阻塞队列中,如果阻塞队列满了,就会创建一个新线程,从阻塞队列头部取出一个任务来执行,并将新任务加入到阻塞队列末尾。:线程安全的列表,在对列表进行修改操作时,会创建一个新的底层数组,将修改操作应用到新数组上,而读操作仍然可以在旧数组上进行,从而实现了读写分离,提高了并发读的性能,适用于读多写少的场景。
2025-03-03 16:50:43
744
原创 Spring学习记录
开发者通过配置文件(XML)、注解或 Java 配置类定义 Bean。例如:</bean>或者使用注解:@Service@Autowired。
2025-03-02 17:09:11
524
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人