八股文
文章平均质量分 85
秃狼
三无程序猿
展开
-
在线教育实习经验总结
主要就是服务于福建专升本及考研学生培训的微服务C端项目,主要分前台和后台,其中的黄金链路就是从用户登录到购买课程再到课程观看的流程。课程模块我印象最深的就是用户购买课程加入课表的业务,课表表只要就是关联用户和课程的关系,并且是个一对多的关系。原创 2024-05-16 18:25:59 · 894 阅读 · 0 评论 -
物流项目实习话术(家政,二手回收项目通用)
我的实习项目呢,他是基于微服务框架体系的物流项目中,主要负责人,货,车三者之间的调度关系。主要的黄金链路就是用户下单 -> 快递员揽收->通过一系列的调度完成商品运单的运输->再到快递员派送商品->用户签收的整个流程。主要的模块主要就是调度模块,通过调度模块来异步的调度其他模块,包括运单模块,订单模块,路线规划模块等等。这个模块是物流微服务中最重要的就是调度微服务。其中主要就是包含订单转运单,运单合并,计算运力,司机出入库,快递员派件等流程。那我就按执行流程给您介绍一下调度微服务模块,您看行吗?订单转运单。原创 2024-05-01 17:39:19 · 902 阅读 · 0 评论 -
在线教育项目话术(1W字精选)
我们考虑到此模块可能会存在高并发的场景,所以在原先涉及大量的DB操作旧方案上通过redis的数据结构和定时任务来优化。(面试官感兴趣就介绍优化方案)原创 2024-03-20 15:32:52 · 798 阅读 · 0 评论 -
Leetcode 热门百题斩(第三天)
针对leetcode的热门一百题,解决大多数实习生面试的基本算法题。通过我自己的思路和多种方法,供大家参考。原创 2024-02-01 16:24:32 · 416 阅读 · 1 评论 -
mysql高级使用教程
页分裂:主键底层是存到数据页上,一遍主键是自增的,所以会进行顺序存储。但是当数据不按顺序的时候会,数据在找到对应的位置会会将后百分之五十的数据存储到新的页上,如何将新的看数据存储到对应的位置上,最终在调整页的位置。页合并:但主键进行删除的时候,会先将要删除的数据进行标记,当达到阈值(MERGE_THRESHOLD)时就会进行删除,并判断前后侧的页是否能合并,能就进行合并,最终出现页合并。因为二级索引中的数据就会主键,当二级索引多的情况就会占用大量的空间,并在数据的读取的时候需要大量的io操作。原创 2024-01-15 20:35:40 · 956 阅读 · 0 评论 -
SpringSecurity深度学习
spring Security是什么?是一个强大且高度可定制的身份验证和访问控制框架,用于保护基于Spring的应用程序。它是Spring项目的一部分,旨在为企业级系统提供全面的安全性解决方案。一个简单的授权和校验流程检验流程总流程1.自定义授权异常处理器和校验异常处理器。校验异常处理器//校验失败异常处理器@Component@Override//创建统一的返回对象,设置到response中。原创 2024-01-06 16:45:39 · 578 阅读 · 0 评论 -
网盘项目话术(0.5w字精选)
该项目主要就是对文件的操作,file表,file_share表。file表主要字段:id,用户id,父级目录id,文件的地址,文件的封面图片地址,创建和修改时间。file_share表主要字段:id,文件id,用户id,有效类型,创建和失效时间(用于定时任务)。基于RDAB的五张表:用户信息表,角色表,权限表,用户角色关联表(多对多关系),角色权限关联表(多对多关系)。基础设置表:id,邮箱标题,邮箱内容前缀,默认初始化空间大小。单点登录->双token三认证(迭代方案)原创 2023-12-28 21:59:28 · 1097 阅读 · 0 评论 -
物流项目话术(1.5w字精选)
用户在【用户端】下单后,生成订单系统会根据订单生成【取件任务】,快递员上门取件后成功后生成【运单】用户对订单进行支付,会产生【交易单】快件开始运输,会经历起始营业部、分拣中心、转运中心、分拣中心、终点营业部之间的转运运输,在此期间会有多个【运输任务】到达终点网点后,系统会生成【派件任务】,快递员进行派件作业最后,用户将进行签收或拒收操作原创 2023-12-19 22:42:57 · 1627 阅读 · 0 评论 -
线程池基础参数和执行流程
3.如果阻塞队列满了,就判断线程的总数是否大于核心线程的总数,如果大于,创建救急线程去执行任务。(当救急线程和核心线程处于空闲的时候就会去执行堵塞队列中的方法)DiscardOldestPolicy:丢掉在堵塞队列中存储最久的任务,将新的任务存储到队列中。1.在新的任务进来后,先判断核心线程是否已满,如果没满,直接创建个核心线程去执行任务。2.如果核心线程满了,就判断阻塞队列是否已满,如果没有满,直接存储到阻塞队列中。5.BlockingQueue:阻塞线程,存储哪些没有被核心线程执行的任务。原创 2023-12-07 11:29:07 · 472 阅读 · 0 评论 -
Synchronized关键字的底层原理
类是轻量级锁,但是在做锁的重入的时候不会使用CAS指令,而是直接判断thread的id是否相同,相同就表示没有竞争。2.如果锁记录中的MarkWord的值为null,说明这是一次锁重入操作,直接将锁记录中的指向对象的地址设置为null。3.如果锁记录中的MarkWord的值不为null,我们就通过CAS指令将锁对象中的MarkWord恢复成无锁状态。重量级锁主要使用在线程竞争的时候,且重量级锁涉及进程的上下文切换,效率比较低下,实现的,在对象的对象头中存储了MarkWord存储的就是Monitor的地址。原创 2023-12-04 12:02:14 · 519 阅读 · 1 评论 -
MVCC详解(小白也看得懂)
MVCC:多版本并发控制。原创 2023-12-02 16:38:18 · 429 阅读 · 0 评论 -
HashMap源码解析
4.在链表的插入中,我们通过循环找到链表的尾部,并创建一个节点,如果个数大于等于8则直接将链表转换为红黑树,插入值的链表中存在key相同的值则直接进行覆盖。3.如果存在的key的值和传入的key的值相同的话就直接进行覆盖。如果不相同并且节点是红黑树的时候就做红黑树的插入。反之则做链表的插入。1.判断判断HashMap中数组的长度是否为0,如果为0就使用resize方法进行扩容,且第一次扩容的大小为16。put方法需要返回对一个的hash值和key和value。默认的容量就是16,装载因子为0.75。原创 2023-11-29 15:11:06 · 435 阅读 · 0 评论 -
ArrayList的源码解析
3.参数构造 (传入一个集合): 将集合转为数组类型并判断其长度,如果长度小于0则直接报错,反之,判断集合的类型是否为ArryList类型,如果是则直接赋值,反之,调用Array.copyof方法得到对应的ArrayList进行赋值。2.参数构造(初始化长度):如果长度大于0直接创建一个对应长度的Object数组,如果长度为0则直接返回{}。当第一次添加数据的时候,此时ArrayList中的值为为{},扩容的长度就是10。如果新的容量大于当前的容量就进行扩容,反之则不扩容。1.无参构造:直接返回一个{}。原创 2023-11-27 21:14:51 · 485 阅读 · 0 评论 -
2024最新Java八股文(完整版)
单个redis节点的并发能力是有限的,所以为了提高并发能力,我们需要搭建redis集群,就比如:主从复制。主从复制的流程主从复制主要分为:全量同步和增量同步。全量同步:在salve请求数据同步的时候会携带application Id和offset,如果master判断出applid和自己的不一样,就认为slave是第一次进行同步,所以会进行全量同步。原创 2023-11-10 15:39:09 · 1659 阅读 · 0 评论