- 博客(158)
- 收藏
- 关注
原创 每日十题八股-2025年2月25日-补充材料
线程的创建和销毁是一个相对昂贵的操作,因为它涉及到内存分配、上下文切换、系统调用等步骤。如果每个任务都创建一个新线程,那么系统的性能将受到严重影响。线程池通过预先创建并维护一组线程,避免了频繁创建和销毁线程的开销,提高了系统响应速度和资源利用率,简化了线程管理,提高了并发处理能力,并提供了更好的错误处理和恢复机制以及性能调优和监控功能。1.降低线程创建和销毁的成本:线程的创建和销毁是一个相对昂贵的操作,因为它涉及到内存分配、上下文切换、系统调用等步骤。
2025-02-25 13:43:19
1088
原创 每日十题八股-2025年2月24日-补充材料
来自1.lock 是一个接口,而 synchronized 是 Java 的一个关键字,synchronized 是内置的语言实现。2. 异常是否释放锁:synchronized 在发生异常时候会自动释放占有的锁,因此不会出现死锁;而 lock 发生异常时候,不会主动释放占有的锁,必须手动 unlock 来释放锁,可能引起死锁的发生。(所以最好将同步代码块用 try catch 包起来,finally 中写入 unlock,避免死锁的发生。
2025-02-24 13:05:39
741
原创 每日十题八股-2025年2月23日-补充材料
顶层接口不同,HashSet是实现Collection接口的下的Set接口只存储对象,而HashMap实现Map接口,用于存储键值对。HashSet 底层是用 HashMap 存储的,HashSet 封装了一系列 HashMap 的方法,HashSet 将(自己的)值保存到 HashMap 的 Key 里面了。
2025-02-23 15:18:16
430
原创 每日十题八股-2025年2月22日-补充材料
本来想直接网络上找现成的材料的,后面发现怎么连ThreadLocalMap是声明在Thread还是ThreadLocal的静态内部类都说法不一。于是还是自己去看源码。首先明确!ThreadLocalMap是ThreadLocal的静态内部类。而Thread直接使用ThreadLocal里面的静态类ThreadLocalMap创建属于自己的对象。
2025-02-22 14:12:45
404
原创 每日十题八股-2025年2月21日-补充材料
final关键字可以用来修饰局部变量,成员变量,方法和类。特点:凡是引用final关键字的地方皆不可修改!(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。当final修饰的是一个基本数据类型数据时, 这个数据的值在初始化后将不能被改变;当final修饰的是一个引用类型数据时, 也就是修饰一个对象时, 引用在初始化后将永远指向一个内存地址, 不可修改. 但是该内存地址中保存的对象信息, 是可以进行修改的.
2025-02-21 11:07:18
844
原创 每日十题八股-2025年2月20日-补充材料
混合持久化结合了RDB持久化和AOF持久化的优点,可以在保证数据安全性的同时,提供较快的数据加载速度。BGSAVE是异步命令,主进程会forks一个子进程,进行异步持久化,持久化过程中主进程仍然可以处理其他请求。Redis提供了两种主要的持久化机制:RDB持久化和AOF持久化。此外,还可以采用混合持久化(RDB + AOF)的方式,将这两种持久化方式结合在一起。3.主从同步时触发:当从节点连接到主节点时,主节点会触发一次RDB持久化,并将生成的RDB文件发送给从节点进行同步。900s内至少有一次写操作。
2025-02-20 12:55:40
333
原创 每日十题八股-2025年2月19日-补充材料
慢查询是指在数据库中执行时间超过预设阈值的数据库查询。通常,数据库管理员会设置一个阈值(比如1秒或0.5秒),当查询执行时间超过这个阈值时,就会被记录为慢查询。每日十题八股-2024年12月31日-5解决方案:1.找出慢查询的原因;开启慢查询日志;使用 show processlist 实时监控分析;slow_query_log 文件;使用 mysqldumpslow 工具分析日志,分析查询语句:使用EXPLAIN命令分析SQL执行计划;
2025-02-19 14:20:15
1000
原创 每日十题八股-2025年2月17日-补充材料
程序执行期间,若程序所要访问的页面未在内存时,便发出缺页中断,中断处理程序首先保留CPU环境,转入缺页中断处理程序。查找页表,得到该页在外存的物理块后,如果内存未满,则将缺页调入内存并修改页表。如果内存已满,则按照某种置换算法从内存中选出一页换出;如果该页未被修改过,可不必将该页写回磁盘;但如果此页已被修改,则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应表项,置其存在位为“1”,并将此页表项写入快表中。
2025-02-17 14:15:25
815
1
原创 每日十题八股-2025年2月16日-补充材料
死锁(Deadlock)是指在一个多进程或多线程的环境中,两个或更多的进程(或线程)在执行过程中,因争夺资源而造成一种互相等待的局面,导致它们无法继续执行,系统陷入“僵局”状态。互斥:至少有一个资源是独占的。占有且等待:进程持有资源的同时等待其他资源。不剥夺:资源不能被强制剥夺循环等待:形成等待循环链条为了防止死锁的发生,操作系统和程序可以采取以下策略:1.破坏互斥条件:在某些情况下,允许多个进程共享资源,例如共享内存等。但是对于大部分资源(如打印机、硬盘等),很难完全避免互斥条件。
2025-02-16 18:25:43
487
原创 每日十题八股-补充材料-2025年2月15日
首先肯定是三次握手和四次挥手保证里通讯双方建立了正确有效的连接。其次是校验和、序列号,ACK消息应答机制还有重传机制,保证了消息顺序和可靠。同时配合拥塞机制和流量控制机制,来保证通讯对当前网络的敏感程度。
2025-02-15 23:24:41
887
原创 每日十题八股-补充材料-2025年2月14日
1、缓存处理,在1.0中主要使用header里的if-Modified-Since,Expires来作为缓存判断的标准,1.1则引入了更多的缓存控制策略如Etag,if-Unmodified-Since,if-Match,if-None-Match等2、带宽优化及网络连接使用,1.0中存在一些浪费带宽的现象,例如客户端只需要某对象的一部分,而服务器却将整个对象送了过来,并且不支持断点续传功能。
2025-02-14 15:30:13
1103
原创 每日十题八股-补充材料-2025年2月13日
是应用层层面协议。在请求报文中,分别具有,请求行,请求头部,空行,请求体。请求行包含请求的方法是get,post等等,URL,HTTP协议。请求头部更多的是自己设置,例如用户登录设置的Token放在请求头部。请求实就是具体的请求内容,通常用于POST请求等需要传输数据的情况。在响应报文中,响应行,相应头部,空行,响应体。响应行有HTTP版本协议,URL,状态码,状态信息。响应头部就是对响应内容的附加信息,例如内容的格式,长度等等。响应体通常是服务器返回的HTML、JSON等内容。
2025-02-13 17:06:17
627
原创 每日十题八股-2025年1月24日
1.面试官:Kafka 百万消息积压如何处理?2.面试官:最多一次、至少一次和正好一次有什么区别?3.面试官:你项目是怎么存密码的?4.面试官:如何设计一个分布式ID?5.面试官:单点登录是怎么工作的?6.面试官:如何设计安全的对外 API?7.面试官:如果你的项目要支持百万用户,你会如何设计?8.面试官:如果你的项目用户规模放大了 100 倍,怎么应对?9.面试官:你的项目如何做到高可用、高吞吐、高扩展性?10.面试官:CPU 100% 问题怎么排查?
2025-01-24 23:34:56
1210
原创 每日十题八股-2025年1月23日
顺序写入Kafka 将消息以日志的形式存储在磁盘中,每条消息都附带一个偏移量,Kafka 是通过顺序写入磁盘来实现高吞吐量的。这种顺序写入比随机写入要快得多,因为磁盘顺序写入比随机写入更高效,尤其是对于大数据量的处理。分区和并行处理:Kafka 的每个主题(Topic)可以划分成多个分区(Partition)。每个分区可以分布在不同的机器上,意味着多个生产者和消费者可以并行工作,提高了系统的吞吐量。分区是实现水平扩展的关键,通过分区 Kafka 能够分散负载,避免单点瓶颈。
2025-01-23 23:11:21
819
原创 每日十题八股-2025年1月20日
排序算法的稳定性是指在排序过程中,当有多个具有相同关键字的元素时,这些元素在排序后的序列中保持它们原有的相对顺序。
2025-01-20 18:12:50
553
原创 每日十题八股-2025年1月19日
红黑树的特性和类别前面都介绍了,这里补充一下如何在插入和删除的时候保持红黑树的平衡要求。参考看参考的第一句话,我突然感觉到编程的魅力,红黑树真的很强大!然后参考的图画得很好,一定要参考图看处理过程。所以旋转操作是局部的。另外可以看出旋转能保持红黑树平衡的一些端详了:当一边子树的结点少了,那么向另外一边子树“借”一些结点;当一边子树的结点多了,那么向另外一边子树“租”一些结点。插入位置已经找到,把插入结点放到正确的位置就可以啦,但插入结点是应该是什么颜色呢?答案是红色。
2025-01-20 16:31:15
995
原创 每日十题八股-2025年1月18日
1.服务器处理并发请求有哪几种方式?2.讲一下io多路复用3.select、poll、epoll 的区别是什么?4.epoll 的 边缘触发和水平触发有什么区别?5.redis,nginx,netty 是依赖什么做的这么高性能?6.零拷贝是什么?7.了解哪些数据结构?8.数组和链表区别是什么?9.为什么数组查询的复杂度为O(1)?10.说一下队列和栈的区别。
2025-01-18 23:14:16
725
原创 每日十题八股-2025年1月17日
其基本思想是在多个进程或操作中共享资源时,推迟资源的复制,直到有必要进行修改时才进行实际的复制操作。来减少不必要的资源浪费、提高内存利用率、优化性能以及简化系统管理。这种技术可以大幅度提升系统的并发能力、内存利用率和存储效率,尤其在高负载、大规模应用环境中表现尤为突出。例如,发生在fork时,子进程创建新的虚拟地址(与父进程不同),但都指向父进程的物理地址。只有子进程发生写操作的时候才会对物理地址进行复制。这么做的原因是子进程在创建时就复制物理地址,耗时太长,也会造成不必要的内存占用。
2025-01-17 22:29:19
942
原创 每日十题八股-2025年1月16日
说句废话,内存管理就是管理内存,主要的作用有为进程分配与释放内存,虚拟地址和物理地址的转换,内存扩充,内存映射(把文件映射到进程空间中),内存优化,内存安全。其中一个主要的特点就是虚拟内存的设计,操作系统为每一个进程构建一个虚拟空间,使得进程能够使用自己的虚拟内存指针方便操作,且隔离各个进程。物理内存通常就是指RAM,随机存取存储器。对于用户使用来说,目前计算机装配的物理内存是不足以满足全部的进程使用的,虚拟内存的本质是通过空间置换等操作让系统能够处理超出物理内存容量的任务。
2025-01-16 20:47:25
853
原创 每日十题八股-2025年1月15日
1.进程间通讯有哪些方式?2.管道有几种方式?3.信号和信号量有什么区别?4.共享内存怎么实现的?5.线程间通讯有什么方式?6.除了互斥锁你还知道什么锁?分别应用于什么场景?7.进程调度算法有哪些?8.为什么并发执行线程要加锁?9.自旋锁是什么?应用在哪些场景?10.死锁发生条件是什么?
2025-01-15 17:15:48
456
3
原创 每日十题八股-2025年1月14日
1.为什么进程崩溃不会对其他进程产生很大影响2.你说到进程是分配资源的基本单位,那么这个资源指的是什么?3.讲下为什么进程之下还要设计线程?4.多线程比单线程的优势,劣势?5.多线程是不是越多越好,太多会有什么问题?6.进程切换和线程切换的区别?7.线程切换为什么比进程切换快,节省了什么资源?8.线程切换详细过程是怎么样的?上下文保存在哪里?9.进程的状态(五种状态),如何切换?10.进程上下文有哪些?
2025-01-14 12:59:22
960
原创 每日十题八股-2025年1月13日
DDoS(分布式拒绝服务)攻击是一种通过大量分布在不同地方的计算机或设备(通常是受感染的僵尸网络)向目标服务器、网站或网络发送大量请求,造成目标资源耗尽或系统崩溃,从而使其无法正常提供服务。
2025-01-13 11:39:12
924
原创 每日十题八股-2025年1月12日
拥塞控制,控制的目的就是避免「发送方」的数据填满整个网络。拥塞窗口 cwnd是发送方维护的一个的状态变量,它会根据网络的拥塞程度动态变化的。发送窗口 swnd 和接收窗口 rwnd 是约等于的关系,那么由于加入了拥塞窗口的概念后,,此时发送窗口的值是swnd = min(cwnd, rwnd),也就是拥塞窗口和接收窗口中的最小值。具体的算法流程。
2025-01-12 23:27:28
688
原创 每日十题八股-2025年1月11日
RTT:round trip time,= 接收响应包的时间戳 - 发送请求包的时间戳。RTO:retransmission timeout,= 依靠设定,一包需要根据RTT进行动态调整,以减少不必要的重传和重传不及时等问题。
2025-01-11 20:37:04
1120
原创 每日十题八股-2025年1月10日
1.HTTP长连接与WebSocket有什么区别?2.Nginx有哪些负载均衡算法?3.Nginx位于七层网络结构中的哪一层?4.说一下tcp的头部5.TCP三次握手过程说一下?6.tcp为什么需要三次握手建立连接?7.TCP 三次握手,客户端第三次发送的确认包丢失了发生什么?8.服务端发送第二个报文后连接的状态进入什么状态?9.三次握手和 accept 是什么关系?accept 做了哪些事情?10.客户端发送的第一个 SYN 报文,服务器没有收到怎么办?
2025-01-10 10:52:33
528
原创 每日十题八股-2025年1月9日
由于JWT令牌是自包含的(包含所有必要的身份验证和会话信息),服务器可以独立地对令牌进行验证,而不需要依赖其他服务器或共享存储。这使得集群中的每个服务器都可以独立处理请求,提高了系统的可伸缩性和容错性。集群部署是指将多个计算机或服务器通过网络连接起来,形成一个统一的系统,用于提高应用的可用性、扩展性和容错能力。通过集群部署,多个节点共同工作,处理请求和任务。这样,即使某个节点发生故障,其他节点仍然可以继续工作,保证系统的稳定运行。集群部署通常用于负载均衡和高可用性场景,比如 Web 服务、数据库等。
2025-01-09 13:06:22
958
原创 每日十题八股-2025年1月8日
1.HTTP进行TCP连接之后,在什么情况下会中断2.HTTP、SOCKET和TCP的区别3.DNS的全称了解么?4.DNS 域名解析的工作流程?5.DNS的端口是多少?6.DNS的底层使用TCP还是UDP?7.HTTP到底是不是无状态的?8.携带Cookie的HTTP请求是有状态还是无状态的?Cookie是HTTP协议簇的一部分,那为什么还说HTTP是无状态的?9.cookie和session有什么区别?10.token,session,cookie的区别?
2025-01-08 15:00:38
1051
原创 每日十题八股-2025年1月7日
1.HTTP层请求的类型有哪些?2.GET和POST的使用场景,有哪些区别?3.HTTP的长连接是什么?4.HTTP默认的端口是什么?5.HTTP1.1怎么对请求做拆包,具体来说怎么拆的?6.HTTP为什么不安全?7.HTTP和HTTPS 的区别?8.HTTPS握手过程说一下9.HTTPS是如何防范中间人的攻击?10.Http1.1和2.0的区别是什么?
2025-01-07 11:47:48
802
原创 每日十题八股-2025年1月6日
不存在就一定不存在。我们可以在写入数据库数据时,使用布隆过滤器做个标记,然后在用户请求到来时,业务线程确认缓存失效后,可以通过查询布隆过滤器快速判断数据是否存在,如果不存在,就不用通过查询数据库来判断数据是否存在。即使发生了缓存穿透,大量请求只会查询 Redis 和布隆过滤器,而不会查询数据库,保证了数据库能正常运行,Redis 自身也是支持布隆过滤器的。如何标记布隆过滤器?N个哈希函数,和位图。数据通过N个哈希数组,得到N个值,再分别取模位图长度,得到N个结果,分别把位图对应为置1。
2025-01-06 12:33:33
681
原创 每日十题八股-2025年1月4日
要明确sentinel,即哨兵可能不止一个,也会成为集群,共同监控。参与客观下线的投票。第3步是sentinel集群中选择哨兵leader,选举过程是第4步是该leader结合所有存活从节点的优先级等等,选择出从节点作为新的主节点。
2025-01-04 15:31:28
1006
原创 每日十题八股-2025年1月3日
不淘汰,禁止写入。淘汰过期最久,淘汰最少使用,淘汰最近最少使用之类的方法。惰性删除和定时删除。惰性删除是用到这个数据的时候判断是否过期,过期的话就依照lazyfree_lazy_expire参数的配置决定是同步删除或者异步删除。定时删除是定时抽取一批20个key,检查过期,如果超过5个key过期,继续抽取检查是否过期。
2025-01-03 15:20:33
774
原创 每日十题八股-2025年1月2日
通过控制每个链表节点中的压缩列表的大小或者元素个数,来规避连锁更新的问题。因为压缩列表元素越少或越小,连锁更新带来的影响就越小,从而提供了更好的访问性能。listpack 没有压缩列表中记录前一个节点长度的字段了,listpack 只记录当前节点的长度,当我们向 listpack 加入一个新元素的时候,不会影响其他节点的长度字段的变化,从而避免了压缩列表的连锁更新问题。
2025-01-02 15:49:09
972
原创 每日十题八股-2024年12月31日
1.能不能只用binlog不用relo log?2.binlog 两阶段提交过程是怎么样的?3.update语句的具体执行过程是怎样的?4.mysql的explain有什么作用?5.给你张表,发现查询速度很慢,你有那些解决方案6.如果Explain用到的索引不正确的话,有什么办法干预吗?7.MySQL主从复制了解吗8.主从延迟都有什么处理方法?9.分表和分库是什么?有什么区别?10.讲一下Redis底层的数据结构。
2024-12-31 13:35:39
692
原创 每日十题八股-2024年12月30日
1.讲一下mysql里有哪些锁?2.数据库的表锁和行锁有什么作用?3.MySQL两个线程的update语句同时处理一条数据,会不会有阻塞?4.两条update语句处理一张表的不同的主键范围的记录,一个<10,一个>15,会不会遇到阻塞?底层是为什么的?5.如果2个范围不是主键或索引?还会阻塞吗?6.日志文件是分成了哪几种?7.讲一下binlog8.UndoLog日志的作用是什么?9.有了undolog为啥还需要redolog呢?10.redo log怎么保证持久性的?
2024-12-30 14:40:46
937
原创 每日十题八股-2024年12月29日
Undo Log 链:Undo Log 链是指在每个数据对象上维护的 Undo Log 记录链表。每张表都会有与之相对应的 Undo Log 链,用于记录修改前的数据信息(以方便数据进行回滚)。
2024-12-29 15:44:29
850
原创 每日十题八股-2024年12月28日
1.索引已经建好了,那我再插入一条数据,索引会有哪些变化?2.索引字段是不是建的越多越好?3.如果有一个字段是status值为0或者1,适合建索引吗?4.索引的优缺点?5.怎么决定建立哪些索引?6.索引优化详细讲讲?7.了解过前缀索引吗?8.事务的特性是什么?如何实现的?9.mysql可能出现什么和并发相关问题?10.哪些场景不适合脏读,举个例子?
2024-12-28 15:14:35
875
原创 每日十题八股-2024年12月27日
索引即是查询所需。不需要回表查询更多的数据。比较准确的说法:覆盖索引是指一个索引包含了查询所需的所有列,因此不需要访问表中的数据行就能完成查询。从而减少查询次数,减少IO操作。
2024-12-27 14:56:32
909
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅