Java
文章平均质量分 73
聪明不喝牛奶
这个作者很懒,什么都没留下…
展开
-
关于电商项目的总结
首先近段时间自己做了一个电商的项目练练手,现在得闲把他的项目架构和一些知识点总结一下。项目的Gitee地址我先放在这,有需要可以自取:电商系统:https://gitee.com/phil0326/mall支付系统:https://gitee.com/phil0326/pay架构总结包的存放格式及命名一般以 com.cjhstdy.mall (com.公司名字.项目名称)其中:config: 配置文件的存放位置 XxxxConfig需要用 @Configuration 注明才能原创 2022-05-21 16:43:27 · 905 阅读 · 1 评论 -
【数据库】ACID底层实现原理
前言我们在学MySQL的时候事务是必须要知道的部分,也就是原子性(Atomic)、一致性(Consistency)、隔离性(isolation)和持久性(Persistence)。知道他的概念其实是远远不够的,现在越来越卷,那么就必须知道的他的原理什么?怎么是实现的。原理原子性:概念是指事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生。最经典的就是转账案例,我们把转入和转出当做一个事物的话,就需要在SQL中显式指定开启事务。实现原理:undo logundo log 是 回滚原创 2022-04-23 15:58:33 · 2167 阅读 · 0 评论 -
【LRU算法】最近最久未使用算法
前言LRU算法其实就是叫做最近最久未使用算法,经常出现在面试的笔试题目中,更有可能是在面试的过程中让你手撕一下LRU算法。没明白其中的道理的那真的是干熬啊,没办法。所以今天就来总结一下很久之前学的LRU算法。首先首先我们要知道我们写这个LRU算法的时候需要用到什么样的数据类型。这里我采用的是双向链表的形式来存储。但是呢,我们知道链表的查找时O(n)的时间复杂度,而删除和插入是O(1)的时间复杂度,这对于我们查找时很不友好的。所以我们得想想能不能将查找元素的时间复杂度降低一些把他也变成O(1)的形式。当原创 2022-04-20 16:43:22 · 4686 阅读 · 0 评论 -
MVCC底层实现原理
首先MVCC(Multi-Viewsion Concurrency Control) 又叫多版本协议控制,主要是提高数据库的并发性能。这里注意一下MVCC的落地实现是快照读。MVCC是用来解决读-写冲突的无锁并发控制,就是为事务分配单向增长的时间戳。实现原理判断规则当执行查询sql时会生成一致性视图read-view,它由执行查询时所有未提交事务id数组(数组里面最小的id为min_id)和已创建的最大事务id(max_id)组成,查询的数据结果需要read-view做对比从而获得快照结果。版本链原创 2022-03-29 22:04:32 · 1165 阅读 · 0 评论 -
AQS(AbstractQueuedSynchronizer)抽象队列同步器
前言AQS 绝对是JUC的重要基石,也是面试中经常被问到的,所以我们要搞清楚这个AQS到底是什么?骑工作原理是什么?AQS是什么?是用来构建锁或者其他同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO对列来完成资源获取线程的排队工作,并通过一个int类型变量表示持有锁的状态。CLH队列:CLH(Craig, Landin, and Hagersten)队列是一个虚拟的双向队列(虚拟的双向队列即不存在队列实例,仅存在结点之间的关联关系)。AQS 是将每条请求共享资源的线程封装成一个原创 2022-03-24 19:51:11 · 368 阅读 · 0 评论 -
红黑树【自平衡的二叉搜索树】
首先红黑树虽然本质上是一棵二叉查找树,但它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为O(log n)。加快检索速率。AVL 数的平衡是指左右节点的高度的绝对值不能超过1,而红黑树的平衡界定是指左右节点的深度不超过1倍。红黑树的5个性质:节点的颜色只能是红色或者黑色;根节点是黑色的;(根性质)NIL 节点的颜色是黑色;如果节点的颜色是红色,则其子节点均为黑色;(红性质)从任一节点到其后代任一叶子节点的路径上的黑色节点的数原创 2022-03-14 20:43:10 · 573 阅读 · 0 评论 -
常用排序算法总结
排序算法首先排序算法虽然说是很基础的算法但是在找实习的时候经常被问,让你当场就要写出来。虽然简单但是还是很容易忘掉,现在就把这个常用到的排序算法做一个总结。冒泡排序思路小结:1、一共要进行 (nums.length - 1) 次2、每一趟排序的次数在逐渐减少3、如果我们发现在某趟排序中,没有发生一次交换那么就直接提前结束冒泡排序,这就是优化算法代码实现 public class Main{ public static void main(String[] args){ int原创 2022-03-14 20:24:35 · 1112 阅读 · 0 评论 -
Java8新特性
Lambda一、Lambda 表达式的基础语法:Java8中引入了一个新的操作符 “->” 该操作符称为箭头操作符或 Lambda 操作符,箭头操作符将 Lambda 表达式拆成两部分:左侧:Lambda 表达式的参数列表右侧:Lambda 表达式中多虚执行的功能,即 Lambda 体语法格式一:无参数,无返回值() -> System.out.println("Hello Lambda!");语法格式二:有一个参数,并且无返回值(x) -> System.ou原创 2022-01-18 12:12:20 · 461 阅读 · 0 评论 -
Java 中 List 转 Array数组
首先说实话这个List 转数组,数组转List 看上去很简单其实在我开发过程中总是忘记该怎么做,所以今天做一个总结!List 转 Array数组基本方法 //首先构造一个List集合 List<Integer> list = new ArrayList<>(); list.add(1); list.add(4); list.add(7); //初始化一个需要的数组nums int[] nums = new int[list.size()]; for(int原创 2022-01-18 12:07:56 · 5210 阅读 · 0 评论