摘要:
3、数组 对于很多语言,都会有数组(array)这种基本的数据结构 还是先来看看定义 数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 数据里面的每个变量叫做元素 里面有几个关键点,分别是线性表和连续的内存空间 先来看看线性表 什么叫线性表呢?顾名思义,线性表就是数据 阅读全文
摘要:
首先来看看数据结构和算法解决的是什么问题? 他解决的是 让代码运行更快以及如何让代码更省内存 那怎么去看你的程序是否快以及省内存呢? 这里有两个概念 时间复杂度以及空间复杂度 我们一般使用大O复杂度表示法来表示程序的运行速度 (当然可能有同学会说,我直接把代码跑一遍,在开始,结束的时候记录时间,不也 阅读全文
摘要:
首先先来说说为啥要学习数据结构和算法 1、大公司要考察算法 很多大公司,比如 BAT、Google、Facebook,面试的时候都喜欢考算法、有些还会让人现场写代码(可能是白板,也可能是纸上)。 为什么这些大公司都喜欢考算法呢? 校招的时候,参加面试的学生通常没有实际项目经验,公司只能考察你的基础知 阅读全文
摘要:
Redis中使用跳表作为有序集合键(zset)的底层实现之一。当有序集合元素较多时,或有序集合中元素为较长字符串时,都会使用跳表作为底层结构。 Redis在两个地方用到了跳表,一种是有序集合键中,另一种是集群节点中做内部数据结构。 跳表 下面的结构是就是跳表: 其中 -1 表示 INT_MIN, 链 阅读全文
摘要:
上篇博客主要介绍了dubbo的使用,这篇文章主要深入rpc的核心原理 准备知识: 1 java 网络编程(这里使用的bio) 2 java动态代理 3 反射 通俗来说rpc就是 客户端持有的是接口(但是没有持有实现), 服务端放的是接口的具体实现以及接口。 客户端把方法和方法的参数 以及其他参数 通 阅读全文
摘要:
先来看我们的程序入口DispatcherServlet 主要核心处理流程如下: 1 扫描基础包下的带有controller 以及 service注解的class,并保存到list中 2 对第一步扫描到的class进行实例化操作 3 对第一步扫描到的class中带有AutoWired注解的属性值进入自 阅读全文
摘要:
什么是缓存击穿? 我们先来看一段经典的代码,关于缓存使用的 查询先从缓存里面获取,缓存如果没有,那么再从数据库查询,并且写入缓存。 注意:在实际开发中,我们一般在缓存中,存储的数据结构是JSON字符串。 那么 就会有一个问题,假如从数据查询需要1秒时间 那么这1秒内请求都会直接到db,缓存被击穿,如 阅读全文
摘要:
Java多线程系列1 线程创建以及状态切换 Java多线程系列2 线程常见方法介绍 Java多线程系列3 synchronized 关键词 Java多线程系列1 线程创建以及状态切换 Java多线程系列2 线程常见方法介绍 Java多线程系列3 synchronized 关键词 Java多线程系列1 阅读全文
摘要:
需要的准备知识 1最左前缀匹配 mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配, 对于where条件 a = 1 and b> 2 and c = 3 如果我们建立(a,b,c)顺序的索引, 那么c 是用不到索引的,如果建立(a,c,b)的索引则都可以用到,a 阅读全文
摘要:
InnoDB实现了两种类型的行锁。 共享锁(S):允许一个事务去读一行,阻止其他事务获得相同的数据集的排他锁。 排他锁(X):允许获得排他锁的事务更新数据,但是组织其他事务获得相同数据集的共享锁和排他锁。 简单来说 共享锁就是我读的时候,你可以读,但是不能写。 排他锁就是我写的时候,你即不能读也不能 阅读全文