96SEO 2026-02-20 00:20 23
来就是边实习边准备秋招了这半年把技术栈八股文面经算法题项目吃透希望等到秋招可以顺利一点冲吧。

MySQL主从复制是MySQL自带的功能无需借助第三方的工具它是一个异步复制过程底层是基于MySQL数据库自带的二进制日志功能就是多台从库(slave)从一台主库(master)进行日志复制然后进行日志解析并应用到自身最终实现从库的主库的一致性常见的主从同步架构有一主多从、双主多从。
如果做了读写分离的话主库负责写请求从库负责读请求可以提升数据库性能。
一般是主库1负责所有读写请求主库2不对外提供服务只用来容灾恢复。
相比一主多从架构双主多从架构可以减少宕机时间更快恢复数据库可用状态。
二进制日志(BinLog)记录了所有的数据操作语句和数据定义语句该日志对于灾难情况出现后的数据恢复起到至关重要的作用MySQL的主从复制
就是通过该BinLog实现的。
默认MySQL是未开启该日志的。
第二从库slave的IO线程将主库的BinLog拷贝到从库的中继日志(relay
读写分离提升数据库性能。
容灾恢复主服务器不可用时从服务器提供服务提高可用性。
冗余备份主服务器数据损坏丢失从服务器保留备份。
主从同步延迟问题主从同步延迟的原因有哪些主从同步延迟的解决方案
主从同步最常遇到的问题就是主从同步延迟可以通过在从库上执行show
status命令查看延迟时间Seconds_Behind_Master表示延迟的秒数。
4当主库有大的事务当主库有大事务从库进行拷贝BinLog的时候执行时间较长。
4)把大事务分割成小事务执行大事务不但会产生从库延迟还可能产生死锁降低数据库并发性能所以尽量少用大事务。
slave_parallel_workers4代表开启4个复制线程。
2)修改同步模式改为异步如果对数据安全性要求没那么高可以把同步模式改成半同步复制或者异步复制。
当主库执行完一个事务并且所有从库都执行完该事务后才给客户端返回成功。
JVM即Java虚拟机java编译器编译生成字节码文件给JVM。
通过JVM将每一条指令翻译成不同平台机器码通过特定平台运行。
JVM的声明周期诞生-运行-消亡。
JVM的内存结构包括五大区域程序计数器、虚拟机栈、本地方法栈、堆区、方法区。
参考这篇JVM原理-超详细总结_伟呀呀呀呀的博客-CSDN博客_jvm原理
docker常用命令主要包括基础命令镜像命令容器命令运维命令等具体可以参考这篇博文docker
常用命令大全_保护我方胖虎的博客-CSDN博客_docker常用命令
SpringCloud之微服务实用篇3-docker_nuist__NJUPT的博客-CSDN博客
使用springboot自带Async注解创建异步线程为了让Async注解能够生效还需要在Spring
存储区间连续、内存占用严重、空间复杂度大。
存储区间离散、占用内存宽松、空间复杂度小。
结合数组结构和链表结构的优点从而实现了查询和修改效率高插入和删除效率也高的一种数据结构。
HashMap中的put()和get()和rmove()的实现原理
2然后它的底层会调用K的hashCode()方法得出hash值。
3通过哈希表函数/哈希算法将hash值转换成数组的下标下标位置上如果没有任何元素就把Node添加到这个位置上。
如果说下标对应的位置上有链表。
链表上每个节点的k进行equal。
如果所有的equals方法返回都是false那么这个新的节点将被添此时就会拿着k和加到链表的末尾。
如其中有一个equals返回了true那么这个节点的value将会被覆盖。
(1)先调用k的hashCode()方法得出哈希值并通过哈希算法转换成数组的下标。
(2)通过上一步哈希算法转换成数组的下标之后在通过数组下标快速定位到某个位置上。
如果这个位置上什么都没有则返回null。
如果这个位置上有单向链表那么它就会拿着K和单向链表上的每一个节点的K进行equals如果所有equals方法都返回false则get方法返回null。
如果其中一个节点的K和参数K进行equals返回true那么此时该节点的value就是我们要找的value了get方法最终返回这个要找的value。
map.remove(k)实现原理
1先调用k的hashCode()方法得出哈希值并通过哈希算法转换成数组的下标。
2确定了数组下标位置查找到要删除的节点链表的删除比较简单但是红黑树的删除较为麻烦涉及到树的再平衡问题。
而言jdk1.8最重要的就是引入了红黑树的设计当hash表的单一链表长度超过
为什么要这样设计呢好处就是避免在最极端的情况下链表变得很长很长在查询的时候效率会非常慢。
O(logn)链表查询这种情况下需要遍历全部元素才行时间复杂度
红黑树是一种近似平衡的二叉查找树其主要的优点就是“平衡“即左右子树高度几乎一致以此来防止树退化为链表通过这种方式来保障查找的时间复杂度为
JDK1.7和JDK1.8的扩容原理不同参照这篇博客HashMap之扩容原理_hashmap扩容_Mr_yeml的博客-CSDN博客
一对一一对多和多对多的级联查询在mybatis中在XML文件中写SQL语句进行查询查询结果用resultMap进行封装。
在MP中进行级联查询的话主要借助resultMap定义级联查询在实体类上注解属性指定resultMap的id添加级联表映射类的对象属性来完成的。
这样在调用Mybatis公共服务接口、公共映射器接口返回对象时自动完成级联查询体现了MybatisPlus编码高效的优势。
由于微服务单个模块就相当于一个项目开发这个模块我们就只需关心这个模块的逻辑即可代码量和逻辑复杂度都会降低从而易于开发和维护。
这是相对单个微服务来讲的相比于启动单体架构的整个项目启动某个模块的服务速度明显是要快很多的。
在开发中发现了一个问题如果是单体架构的话我们就需要重新发布并启动整个项目非常耗时间但是微服务则不同哪个模块出现了bug我们只需要解决那个模块的bug就可以了解决完bug之后我们只需要重启这个模块的服务即可部署相对简单不必重启整个项目从而大大节约时间。
比如订单微服务和电影微服务原来都是用java写的现在我们想把电影微服务改成nodeJs技术这是完全可以的而且由于所关注的只是电影的逻辑而已因此技术更换的成本也就会少很多。
我们上面说了单体架构在想扩展某个模块的性能时不得不考虑到其它模块的性能会不会受影响对于我们微服务来讲完全不是问题电影模块通过什么方式来提升性能不必考虑其它模块的情况。
Redis中的缓存穿透、雪崩、击穿的原因以及解决方案详解_redis的雪崩和击穿_PeakXYH的博客-CSDN博客
我们先看一下红黑树JDK1.8在hashMap中加入红黑树防止链表太长造成查询性能差的问题。
我们先看一下二叉树排序二叉树和平衡二叉树。
二叉树指的是每个节点最多只能有两个字数的有序树。
通常左边的子树称为左子树
。
这里说的有序树强调的是二叉树的左子树和右子树的次序不能随意颠倒。
所谓排序二叉树顾名思义排序二叉树是有顺序的它是一种特殊结构的二叉树我们可以对树中所有节点进行排序和检索。
若它的左子树不空则左子树上所有节点的值均小于它的根节点的值若她的右子树不空则右子树上所有节点的值均大于它的根节点的值具有递归性排序二叉树的左子树、右子树也是排序二叉树。
排序二叉树的左子树上所有节点的值小于根节点的值右子树上所有节点的值大于根节点的值当我们插入一组元素正好是有序的时候这时会让排序二叉树退化成链表。
为了解决排序二叉树在特殊情况下会退化成链表的问题链表的检索效率是
相对正常二叉树来说要差不少所以有人发明了平衡二叉树和红黑树类似的平衡树。
官方定义它或者是一颗空树或者具有以下性质的排序二叉树它的左子树和右子树的深度之差(平衡因子)的绝对值不超过1且它的左子树和右子树都是一颗平衡二叉树。
平衡二叉树必须是排序二叉树也就是说平衡二叉树他的左子树所有节点的值必须小于根节点的值它的右子树上所有节点的值必须大于它的根节点的值。
左子树和右子树的深度之差的绝对值不超过1。
其实红黑树和上面的平衡二叉树类似本质上都是为了解决排序二叉树在极端情况下退化成链表导致检索效率大大降低的问题红黑树最早是由
红黑树首先肯定是一个排序二叉树它在每个节点上增加了一个存储位来表示节点的颜色可以是
性质1每个节点要么是红色要么是黑色。
性质2根节点永远是黑色的。
性质3所有的叶子节点都是空节点即null并且是黑色的。
性质4每个红色节点的两个子节点都是黑色。
从每个叶子到根的路径上不会有两个连续的红色节点。
性质5从任一节点到其子树中每个叶子节点的路径都包含相同数量的黑色节点。
红黑树在最差情况下最长的路径都不会比最短的路径长出两倍。
其实红黑树并不是真正的平衡二叉树它只能保证大致是平衡的因为红黑树的高度不会无限增高在实际应用用红黑树的统计性能要高于平衡二叉树但极端性能略差。
红黑树参考这篇就可以红黑树与平衡二叉树_百图详解红黑树_小吴先森的博客-CSDN博客
空间复杂度O(n)递归本身占用stack空间或者用户自定义的stack
DFSBFS时间复杂度O(n)空间复杂度O(n)递归本身占用stack空间或者用户自定义的stack
贪心的思路不需要额外开辟数组直接一层循环遍历之前累加的值累加到当前比当前大就即继续累加否则从当前开始继续累加累加过程中找出一个最大值就可以了。
FindGreatestSumOfSubArray(int[]
{//最好保证时间复杂度为O(n),空间复杂度为O(1)int
使用快慢指针的方法定义一个快指针一个慢指针快指针一次走两步慢指针一次走一步两个指针第一次相遇的地方距离出口的位置和从其实节点到出口的位置距离相同。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback