
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
set底层存储 redis的集合对象set的底层存储结构特别神奇,我估计一般人想象不到,底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表(key为set的值,value为null)。是不是觉得用hashtable存储set是一件很神奇的事情。 set的底层存储intset和hashtable是存在编码转换的,使用int
物化视图:不同于一般视图,它会将视图内容物理保存在数据库中,是关系型数据库中很重要的一个功能。

redis数据存储结构 redis的内部整体的存储结构就是一个大的hashmap,内部实现是数组实现hash,冲突通过挂链去实现,然后每个dictEntry就是一个key/value对象。dictEntry的key指向set key value命令中的key对应的对象,dictEntry的v指向set key value命令中的value对应的对象。dictEntry 内部包含数据存储的key和v

管道模式(Pipeline Pattern) 是 责任链模式(Chain of Responsibility Pattern)的常用变体之一。在管道模式中,管道扮演着流水线的角色,将数据传递到一个加工处理序列中,数据在每个步骤中被加工处理后,传递到下一个步骤进行加工处理,直到全部步骤处理完毕。PS:纯的责任链模式在链上只会有一个处理器用于处理数据,而管道模式上多个处理器都会处理数据。何时使用管道模

1、pipeline简介pipeline又称为管道,是一种在计算机普遍使用的技术。举个最普遍的例子,如下图所示cpu流水线,一个流水线分为4部分,每个部分可以独立工作,于是可以处理多个数据流。linux 管道也是一个常用的管道技术,其字符处理功能十分强大,在面试过程中常会被问到。在分布式处理领域,由于管道模式是数据驱动,而目前流行的Spark分布式处理平台也是数据驱动的,两者非常合拍,于是在spa
本文将介绍如何使用Java的方式启动tomcat,并整合Spring MVC,做到就像Springboot使用main方法启动,就可以访问controller资源的效果;/*** @createDate: 2021年12月01日 22:02**///添加包扫描路径创建 MyWebApplicationInitializer 类实现 WebApplicationInitializer接口,重写ons

Google成立于1998年是全球最大的搜索引擎公司,主要业务为搜索、云计算、广告技术等,主要利润来自于广告等服务。在21世纪初互联网刚刚兴起,每个企业保存和生产的数据量并不大,已有的技术对数据的保存和处理完全满足业务上的需求。作为搜索引擎公司,google需要保存爬虫所获取的大量网页数据,还要对海量的数据进行快速的搜索、计算、排名等处理。

分布式锁想必大家都不陌生,可以用来解决在分布式环境下,多个用户在同一时间读取/更新相同的资源带来的问题。比如秒杀场景下的库存问题、redis key失效情况下请求直接打到MySQL中造成MySQL负载过大的问题,这些问题都可以通过分布式锁来解决。关于如何实现分布式锁,大家可能对基于Redis实现比较熟悉,但是往往很多情况是一些并发量不大的项目用不上RedisRedis往往适用于并发量比较大的场景。

前言前面已经写了Redisson大多的内容,我们再看看Redisson官网共有哪些组件:剩下还有Semaphore和CountDownLatch两块,我们就趁热打铁,赶紧看看Redisson是如何实现的吧。我们在JDK中都知道Semaphore和CountDownLatch两兄弟,这里就不多赘述,不了解的可以再回头看看。Semaphore使用示例先看下Semaphore原理图如下:接着我们看下Re

前言前面分析了Redisson可重入锁的原理,主要是通过lua脚本加锁及设置过期时间来保证锁执行的原子性,然后每个线程获取锁会将获取锁的次数+1,释放锁会将当前锁次数-1,如果为0则表示释放锁成功。可重入原理和JDK中的可重入锁都是一致的。Redisson公平锁原理JDK中也有公平锁和非公平锁,所谓公平锁,就是保证客户端获取锁的顺序,跟他们请求获取锁的顺序,是一样的。公平锁需要排队,谁先申请获取这