【我想进大厂!】超全面试题总结.Redis篇

Java大厂面试题大全(整理版)1000+面试题附答案详解 进大厂是大部分程序员的梦想,而进大厂的门槛也是比较高的,所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全,其中概括的知识点有Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈共有1000+道面试题。39、你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?... 阅读详情

Redis

说说Redis基本数据类型有哪些吧

1.字符串:redis没有直接使⽤C语⾔传统的字符串表示,⽽是⾃⼰实现的叫做简单动态字符串SDS的抽象类型。C语⾔的字符串不记录⾃身的⻓度信息,⽽SDS则保存了⻓度信息,这样将获取字符串⻓度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串⻓度时所需的内存重分配次数。


2.链表linkedlist:redis链表是⼀个双向⽆环链表结构,很多发布订阅、慢查询、监视器功能都是使⽤到了链表来实现,每个链表的节点由⼀个listNode结构来表示,每个节点都有指向前置节点和后置节点的指针,同时表头节点的前置和后置节点都指向NULL。


3.字典hashtable:⽤于保存键值对的抽象数据结构。redis使⽤hash表作为底层实现,每个字典带有两个hash表,供平时使⽤和rehash时使⽤,hash表使⽤链地址法来解决键冲突,被分配到同⼀个索引位置的多个键值对会形成⼀个单向链表,在对hash表进⾏扩容或者缩容的时候,为了服务的可⽤性,rehash的过程不是⼀次性完成的,⽽是渐进式的。


4.跳跃表skiplist:跳跃表是有序集合的底层实现之⼀,redis中在实现有序集合键和集群节点的内部结构中都是⽤到了跳跃表。redis跳跃表由zskiplist和zskiplistNode组成,zskiplist⽤于保存跳跃表信息(表头、表尾节点、⻓度等),zskiplistNode⽤于表示表跳跃节点,每个跳跃表的层⾼都是1-32的随机数,在同⼀个跳跃表中,多个节点可以包含相同的分值,但是每个节点的成员对象必须是
唯⼀的,节点按照分值⼤⼩排序,如果分值相同,则按照成员对象的⼤⼩排序。


5.整数集合intset:⽤于保存整数值的集合抽象数据结构,不会出现重复元素,底层实现为数组。


6.压缩列表ziplist:压缩列表是为节约内存⽽开发的顺序性数据结构,他可以包含多个节点,每个节点可以保存⼀个字节数组或者整数值。


基于这些基础的数据结构,redis封装了⾃⼰的对象系统,包含字符串对象string、列表对象list、哈希对象hash、集合对象set、有序集合对象zset,每种对象都⽤到了⾄少⼀种基础的数据结构。
redis通过encoding属性设置对象的编码形式来提升灵活性和效率,基于不同的场景redis会⾃动做出优化。不同对象的编码如下:


字符串对象string:int整数、embstr编码的简单动态字符串、raw简单动态字符串
列表对象list:ziplist、linkedlist
哈希对象hash:ziplist、hashtable
集合对象set:intset、hashtable
有序集合对象zset:ziplist、skiplist

Redis为什么快呢?

redis的速度⾮常的快,单机的redis就可以⽀撑每秒10⼏万的并发,相对于mysql来说,性能是mysql的⼏⼗倍。速度快的原因主要有⼏点:
1.完全基于内存操作
2.C语⾔实现,优化过的数据结构,基于⼏种基础的数据结构,redis做了⼤量的优化,性能极⾼
3.使⽤单线程,⽆上下⽂的切换成本
4.基于⾮阻塞的IO多路复⽤机制

那为什么Redis6.0之后⼜改⽤多线程呢?

redis使⽤多线程并⾮是完全摒弃单线程,redis还是使⽤单线程模型来处理客户端的请求,只是使⽤多线程来处理数据的读写和协议解析,执⾏命令还是使⽤单线程。
这样做的⽬的是因为redis的性能瓶颈在于⽹络IO⽽⾮CPU,使⽤多线程能提升IO读写的效率,从⽽整体提⾼redis的性能。
(⻅⽹络篇下单线程Reactor模型)

知道什么是热key吗?热key问题怎么解决?

所谓热key问题就是,突然有⼏⼗万的请求去访问redis上的某个特定key,那么这样会造成流量过于集中,达到物理⽹卡上限,从⽽导致这台redis的服务器宕机引发雪崩。

针对热key的解决⽅案:
提前把热key打散到不同的服务器,降低压⼒
加⼊⼆级缓存,提前加载热key数据到内存中,如果redis宕机,⾛内存查询


什么是缓存击穿、缓存穿透、缓存雪崩?

缓存击穿


缓存击穿的概念就是单个key并发访问过⾼,过期时导致所有请求直接打到db上,这个和热key的问题⽐较类似,只是说的点在于过期导致请求全部打到DB上⽽已。
解决⽅案:
加锁更新,⽐如请求查询A,发现缓存中没有,对A这个key加锁,同时去数据库查询数据,写⼊缓存,再返回给⽤户,这样后⾯的请求就可以从缓存中拿到数据了。
将过期时间组合写在value中,通过异步的⽅式不断的刷新过期时间,防⽌此类现象。


缓存穿透


缓存穿透是指查询不存在缓存中的数据,每次请求都会打到DB,就像缓存不存在⼀样。

针对这个问题,加⼀层布隆过滤器。布隆过滤器的原理是在你存⼊数据的时候,会通过散列函数将它映射为⼀个位数组中的K个点,同时把他们置为1。
这样当⽤户再次来查询A,⽽A在布隆过滤器值为0,直接返回,就不会产⽣击穿请求打到DB了。
显然,使⽤布隆过滤器之后会有⼀个问题就是误判,因为它本身是⼀个数组,可能会有多个值落到同⼀个位置,那么理论上来说只要我们的数组⻓度够⻓,误判的概率就会越低,这种问题就根据实际情况来就好了。

缓存雪崩


当某⼀时刻发⽣⼤规模的缓存失效的情况,⽐如你的缓存服务宕机了,会有⼤量的请求进来直接打到DB上,这样可能导致整个系统的崩溃,称为雪崩。雪崩和击穿、热key的问题不太⼀样的是,他是指⼤规模
的缓存都过期失效了。

针对雪崩⼏个解决⽅案:
针对不同key设置不同的过期时间,避免同时过期
限流,如果redis宕机,可以限流,避免同时刻⼤量请求打崩DB
⼆级缓存,同热key的⽅案。


Redis的过期策略有哪些?

redis主要有2种过期删除策略

惰性删除


惰性删除指的是当我们查询key的时候才对key进⾏检测,如果已经达到过期时间,则删除。显然,他有⼀个缺点就是如果这些过期的key没有被访问,那么他就⼀直⽆法被删除,⽽且⼀直占⽤内存。

定期删除
定期删除指的是redis每隔⼀段时间对数据库做⼀次检查,删除⾥⾯的过期key。由于不可能对所有key去做轮询来删除,所以redis会每次随机取⼀些key去做检查和删除。


那么定期+惰性都没有删除过期的key怎么办?

假设redis每次定期随机查询key的时候没有删掉,这些key也没有做查询的话,就会导致这些key⼀直保存在redis⾥⾯⽆法被删除,这时候就会⾛到redis的内存淘汰机制。
1.volatile-lru:从已设置过期时间的key中,移出最近最少使⽤的key进⾏淘汰
2.volatile-ttl:从已设置过期时间的key中,移出将要过期的key
3.volatile-random:从已设置过期时间的key中随机选择key淘汰
4.allkeys-lru:从key中选择最近最少使⽤的进⾏淘汰
5.allkeys-random:从key中随机选择key进⾏淘汰
6.noeviction:当内存达到阈值的时候,新写⼊操作报错


持久化方式有哪些?有什么区别?

redis持久化⽅案分为RDB和AOF两种。


RDB


RDB持久化可以⼿动执⾏也可以根据配置定期执⾏,它的作⽤是将某个时间点上的数据库状态保存到RDB⽂件中,RDB⽂件是⼀个压缩的⼆进制⽂件,通过它可以还原某个时刻数据库的状态。由于RDB⽂件是保存在硬盘上的,所以即使redis崩溃或者退出,只要RDB⽂件存在,就可以⽤它来恢复还原数据库的状态。
可以通过SAVE或者BGSAVE来⽣成RDB⽂件。
SAVE命令会阻塞redis进程,直到RDB⽂件⽣成完毕,在进程阻塞期间,redis不能处理任何命令请求,这显然是不合适的。BGSAVE则是会fork出⼀个⼦进程,然后由⼦进程去负责⽣成RDB⽂件,⽗进程还可以继续处理命令请求,不会阻塞进程。


AOF


AOF和RDB不同,AOF是通过保存redis服务器所执⾏的写命令来记录数据库状态的。AOF通过追加、写⼊、同步三个步骤来实现持久化机制。
当AOF持久化处于激活状态,服务器执⾏完写命令之后,写命令将会被追加append到aof_buf缓冲区的末尾
在服务器每结束⼀个事件循环之前,将会调⽤flushAppendOnlyFile函数决定是否要将aof_buf的内容保存到AOF⽂件中,可以通过配置appendfsync来决定。

always ##aof_buf内容写⼊并同步到AOF⽂件
everysec ##将aof_buf中内容写⼊到AOF⽂件,如果上次同步AOF⽂件时间距离现在超过1秒,则再次对AOF⽂件进⾏同步
no ##将aof_buf内容写⼊AOF⽂件,但是并不对AOF⽂件进⾏同步,同步时间由操作系统决定

 如果不设置,默认选项将会是everysec,因为always来说虽然最安全(只会丢失⼀次事件循环的写命令),但是性能较差,⽽everysec模式只不过会可能丢失1秒钟的数据,⽽no模式的效率和everysec相仿,但是会丢失上次同步AOF⽂件之后的所有写命令数据。


怎么实现Redis的高可用?

要想实现⾼可⽤,⼀台机器肯定是不够的,⽽redis要保证⾼可⽤,有2个可选⽅案。


主从架构


主从模式是最简单的实现⾼可⽤的⽅案,核⼼就是主从同步。主从同步的原理如下:
slave发送sync命令到master
master收到sync之后,执⾏bgsave,⽣成RDB全量⽂件
master把slave的写命令记录到缓存
bgsave执⾏完毕之后,发送RDB⽂件到slave,slave执⾏
master发送缓存中的写命令到slave,slave执⾏

这⾥我写的这个命令是sync,但是在redis2.8版本之后已经使⽤psync来替代sync了,原因是sync命令⾮常消耗系统资源,⽽psync的效率更⾼。


哨兵


基于主从⽅案的缺点还是很明显的,假设master宕机,那么就不能写⼊数据,那么slave也就失去了作⽤,整个架构就不可⽤了,除⾮你⼿动切换,主要原因就是因为没有⾃动故障转移机制。⽽哨兵
(sentinel)的功能⽐单纯的主从架构全⾯的多了,它具备⾃动故障转移、集群监控、消息通知等功能。

哨兵可以同时监视多个主从服务器,并且在被监视的master下线时,⾃动将某个slave提升为master,然后由新的master继续接收命令。整个过程如下:
初始化sentinel,将普通的redis代码替换成sentinel专⽤代码
初始化masters字典和服务器信息,服务器信息主要保存ip:port,并记录实例的地址和ID
创建和master的两个连接,命令连接和订阅连接,并且订阅sentinel:hello频道
每隔10秒向master发送info命令,获取master和它下⾯所有slave的当前信息
当发现master有新的slave之后,sentinel和新的slave同样建⽴两个连接,同时每个10秒发送info命令,更新master信息
sentinel每隔1秒向所有服务器发送ping命令,如果某台服务器在配置的响应时间内连续返回⽆效回复,将会被标记为下线状态
选举出领头sentinel,领头sentinel需要半数以上的sentinel同意
领头sentinel从已下线的的master所有slave中挑选⼀个,将其转换为master
让所有的slave改为从新的master复制数据
将原来的master设置为新的master的从服务器,当原来master重新回复连接时,就变成了新master的从服务器
sentinel会每隔1秒向所有实例(包括主从服务器和其他sentinel)发送ping命令,并且根据回复判断是否已经下线,这种⽅式叫做主观下线。当判断为主观下线时,就会向其他监视的sentinel询问,如果超过
半数的投票认为已经是下线状态,则会标记为客观下线状态,同时触发故障转移。


能说说redis集群的原理吗?

如果说依靠哨兵可以实现redis的⾼可⽤,如果还想在⽀持⾼并发同时容纳海量的数据,那就需要redis集群。redis集群是redis提供的分布式数据存储⽅案,集群通过数据分⽚sharding来进⾏数据的共享,同
时提供复制和故障转移的功能。
节点
⼀个redis集群由多个节点node组成,⽽多个node之间通过cluster meet命令来进⾏连接,节点的握⼿过程:
1.节点A收到客户端的cluster meet命令
2.A根据收到的IP地址和端⼝号,向B发送⼀条meet消息
3.节点B收到meet消息返回pong
4.A知道B收到了meet消息,返回⼀条ping消息,握⼿成功
5.最后,节点A将会通过gossip协议把节点B的信息传播给集群中的其他节点,其他节点也将和B进⾏握⼿

槽slot


redis通过集群分⽚的形式来保存数据,整个集群数据库被分为16384个slot,集群中的每个节点可以处理0-16384个slot,当数据库16384个slot都有节点在处理时,集群处于上线状态,反之只要有⼀个slot没有得到处理都会处理下线状态。通过cluster addslots命令可以将slot指派给对应节点处理。
slot是⼀个位数组,数组的⻓度是16384/8=2048,⽽数组的每⼀位⽤1表示被节点处理,0表示不处理,如图所示的话表示A节点处理0-7的slot。

当客户端向节点发送命令,如果刚好找到slot属于当前节点,那么节点就执⾏命令,反之,则会返回⼀个MOVED命令到客户端指引客户端转向正确的节点。(MOVED过程是⾃动的)

如果增加或者移出节点,对于slot的重新分配也是⾮常⽅便的,redis提供了⼯具帮助实现slot的迁移,整个过程是完全在线的,不需要停⽌服务。


故障转移


如果节点A向节点B发送ping消息,节点B没有在规定的时间内响应pong,那么节点A会标记节点B为pfail疑似下线状态,同时把B的状态通过消息的形式发送给其他节点,如果超过半数以上的节点都标记B为pfail状态,B就会被标记为fail下线状态,此时将会发⽣故障转移,优先从复制数据较多的从节点选择⼀个成为主节点,并且接管下线节点的slot,整个过程和哨兵⾮常类似,都是基于Raft协议做选举。


了解Redis事务机制吗?

redis通过MULTI、EXEC、WATCH等命令来实现事务机制,事务执⾏过程将⼀系列多个命令按照顺序⼀次性执⾏,并且在执⾏期间,事务不会被中断,也不会去执⾏客户端的其他请求,直到所有命令执⾏完毕。事务的执⾏过程如下:
服务端收到客户端请求,事务以MULTI开始
如果客户端正处于事务状态,则会把事务放⼊队列同时返回给客户端QUEUED,反之则直接执⾏这个命令
当收到客户端EXEC命令时,WATCH命令监视整个事务中的key是否有被修改,如果有则返回空回复到客户端表示失败,否则redis会遍历整个事务队列,执⾏队列中保存的所有命令,最后返回结果
给客户端
WATCH的机制本身是⼀个CAS的机制,被监视的key会被保存到⼀个链表中,如果某个key被修改,那么REDIS_DIRTY_CAS标志将会被打开,这时服务器会拒绝执⾏事务。
 

2023JAVA 面试题全集(超全面!超系统!超实用!)早做准备,早上岸! (含:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式,适配器模式,装饰器模式,代理模式等 23 种设计模式...)(含:mysql 数据库基础知识,数据类型,失误,试图,mysql 索引,mysql 锁,mysql 优化,等...)(含:Java 概述,语法,面向对象,IO 流,API,集合,NIO,HashMap,基础常见面试题....)(含:分布式系统原,数据分布式方式,基本副本协议,Lease 机制,Dubbo,集群,分布式锁,等...)不管最近要不要去面试,建议大家都保存一份! 阅读详情

相关推荐

这些年,为了进大厂背过的Java面试题(基础篇),全在这儿了!

作为一名有着 10 年 Java 开发经验的老鸟,回想起当年为了进大厂疯狂背面试题的日子,真是感慨万千。 如今市面上的面试题分享大多泛泛而谈,对于真正想提升技术、应对大厂面试的小伙伴帮助有限。 今天我就把压箱底的面试题及深入解析分享出来,希望能帮到正在求职路上拼搏的你们。 全文4万多字,耗时一周,吐血整理!原创不易,切勿直接搬运!可转载! 后续会有JVM、多线程、MySQL、Redis、Kafka、SpringCloud、分布式、ES、Docker&K8s、Netty等,敬请关注!

十年Java老兵的实战笔记,带你手搓代码! 565

《我想进大厂》之Redis夺命连环11问

这是面试题系列第三篇–redis专题。 说说Redis基本数据类型有哪些吧 字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串长度时所需的内存重分配次数。 链表linkedlist:redis链表是一个双向无环链表结构,很多发布订阅、慢查询、监视器功能都是使用到了链表来实现,每个链表的节点由一个lis

艾小仙的专栏 5001

Redis解决库存超卖问题,大厂直通车

查询商品信息 (调用商品服务) 计算总价(生成订单详情) 商品服务扣库存(调用商品服务) 订单入库( 生成订单) // 原始的MySQL同步流程 // 判断此代金券是否加入抢购 SeckillVouchers seckillVouchers = seckillVouchersMapper.selectVoucher(voucherId); AssertUtil.isTrue(seckillVouchers == null, “该代金券并未有抢购活动”); // 判断是否有效 Asser...

m0_54865014的博客 902

最全面的Redis面试题,BAT大厂面试必备

前言 又到一年金九银十跳槽季,很多程序员都开始了疯狂刷题之旅,但是这样刷题的效率极其低下,所以小编特意整理了大厂中最常见的**50道大厂Redis面试题(附答案)**答案在文章末尾,帮助大家在最短的时间内复习更多的知识。废话不多说,正文走起! 50道大厂Redis面试题 1、什么是 Redis? 2、Redis 相比 memcached 有哪些优势? 3、Redis 支持哪几种数据类型? 4、Redis 主要消耗什么物理资源? 5、Redis 的全称是什么? 6、Redis 有哪几种数据淘汰策略? 7、R

weixin_44906118的博客 1896

【OpenCV】背景替换(opencv、python),照片、证件照的背景替换(抠图)

目录步骤:导入库1、读入将要抠图的图片2、create一个带颜色域的mask3、通过mask使得原图只显示汽车,即抠出所需要的部分4、将要替换掉的图像resize或裁剪到和上述图片一样的大小5、将该图片预留出将要重叠上的部分,即将mask部分改为(0,0,0)6、通过和运算使得两部分图片mask部分替换7、最后保存图片 步骤: 导入库 import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np imp

weixin_41729258的博客 4362

蓝牙 - 如何在Windows下抓取蓝牙数据

选择Windows Instarller(64-bit),最好不要选择PortableApps版,因为后面需要通过btvs.exe来启动Wireshark,如果是绿色可移植版,会启动失败。在安装完以后,找到btvs.exe文件,位于路径:C:\BTP\v1.14.0\x86下,这个视安装版本不同路径名不同。在第一台机器上启动btvs.exe,第二台机器上手动启动wireshark,并将第一台机器的IP地址作为参数。1,同一机器上,Wireshark安装后,会自动直接启动,如上面使用方式一样。

guoqx的专栏 2万+

最新整理国内知名大厂7篇Java岗面试题,加油啊!

前言: 马上就又到了跳槽的好季节,不知道你是不是已经安于现状,还是蓄势待发呢?最近我呢又在搜罗整理大厂的面试题,来来来!我分你一份!加油! 阿里中间件(四面) Java中间件一面 技术一面考察范围: 重点问了Java线程锁:synchronized 和ReentrantLock相关的底层实现 线程池的底层实现以及常见的参数 数据结构基本都问了一遍:链表、队列等 Java内存模型:常问的JVM分代模型,以及JDK1.8后的区别,最后还问了JVM相关的调优参数 分布式锁的实现比较技术 一面题目: 自我

豆汁 7513

MITRE ATT&CK超详细学习笔记-01(背景,术语,案例)

MITRE是一个向美国政府提供系统工程、研究开发和信息技术支持的非营利性组织,于1958年从麻省理工学院林肯实验室分离出来后参与了许多最高机密的政府项目,开展了大量的网络安全实践。例如,MITRE公司在1999年发起了常见披露漏洞项目(CVE,CommonVulnera-bilitiesandExposures)并维护至今。其后,MITRE公司还维护了常见缺陷列表(CWE,CommonWeaknessEnumeration)这个安全漏洞词典。.........

Zichel77的博客 1万+

面试稳了!BATJ 等大厂 400+ 道面试题全汇总!

整理 | 伍杏玲 出品 | 优快云(ID:优快云news) 2019 年已过半,大家在年初设定的目标进行得怎样了?预计涨的薪、跳的槽都完成了吗? 如果没的话,不妨看看这篇文章。GitHub 上有位程序员总结了 2019 年阿里、腾讯、华为、百度、美团、今日头条、滴滴、京东等大厂 400 多道技术面试题以及答案,涉及 MySQL、Redis、MongDB、Zookeeper、Ngi...

优快云资讯 4543

用Python对CAPM和Fama French Three Factor model的初步学习

用Python对CAPM和Fama French Three Factor model的初步学习概述介绍建模与分析CAPMFama French Three-Factor Model总结 概述 本文主要使用CAPM(资本资产定价模型)和Fama French Three Factor model来评估中国股票市场的股票价格。 使用CAPM来选择投资组合,然后建立Fama法国三因素模型来评估投资组合...

weixin_43168138的博客 5458

STM32+Air724UG基于阿里云物联网平台的OTA远程升级实战指南

本文提供了一套基于STM32微控制器与Air724UG 4G Cat.1通信模组,通过阿里云物联网平台实现OTA远程升级的完整实战指南。文章详细阐述了BootLoader与用户程序的分工、云端配置、固件下载与烧写流程,并分享了关键代码实现与常见问题排查方法,帮助开发者快速为物联网设备部署稳定可靠的无线升级功能。

weixin_28285943的博客 514

15 道超经典大厂 Java 面试题!重中之重

从超高频的后端面试题出发,指明学习方向 大家好,我是鱼皮。 还记得我的老弟小阿巴么?他目前正值大一暑假,在家自学编程(刷短视频)中。 他整个大一期间基本都在学习前端。后来,我带他写了一次后端,结果就崩了,写了一堆 bug! 详情请阅读:前端老弟第一次写后端,崩了! 但没想到,这货踩了坑后,反而爱上了后端开发。这一到周末就缠着我,让我给他讲讲后端开发应该学习哪些知识。 虽然很想给他总结一份后端学习路线,但我也很忙,于是就思考有没有什么更快捷的方式让他了解到后端要学的技术。 我想想:他学编程是为了找好.

努力做最接地气的编程干货分享,感谢关注 2261

RK平台以太网设置中添加代理设置

以太网中配置Configuration的时候可以IpConfiguration的初始化函数来设置代理类型和代理参数。通过添加一个KEY_ETH_PROXY的选项来设置代理的配置,然后再设置以太网静态或者动态的类型时候下发给系统进行设置。

Android系统开发笔记 656

2024大厂Java高级面试题及答案,SpringBoot之Redis篇,程序员Java基础案例教程

PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**小编整理不易,对这份。

2401_84102915的博客 691

第133章 PCL OrientedBoundingBox 有向包围盒

中文叫有向包围盒,是一种旋转过的包围盒。特点:不像AABB那样固定朝向坐标轴能更紧密地包裹物体适用于复杂姿态的物体,比如倾斜、旋转的物体通常通过PCA、惯性矩等算法确定方向。

yumeiguo的博客 264

SerDes学习笔记:均衡技术详解 01

本文系统阐述了高速SerDes链路中均衡技术的应用原理与实现方法。重点介绍了发射端预加重/FIR均衡和接收端CTLE/DFE/FFE等主流均衡方案,详细探讨了各类均衡器的频域特性、时域效果及硬件实现架构。

一只豌豆象的博客 1302

牛客网 最新 1000 道 JAVA 面试题(超全面!超系统!超实用!)

而一些主流的大型互联网公司面试(阿里巴巴、京东、美团、滴滴)更是需要你在面试时展现出自己的能力,从而获得面试官的欣赏和肯定。每年的金九银十都是各大公司招聘程序员的最佳时期,在这段时间内有好多程序员为面试而发愁,不知道如何才能收到好的 offer,拿到理想的薪资,实现自我的人生价值!我想告诉大家的是,其实都不用愁的,好好准备一下就可以了。

csdn1234561231的博客 1576

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java岗大厂面试题——Redis篇

缓存穿透:指缓存和数据库中都没有的数据,导致所有的请求都打到数据库上,然后数据库还查不到(如null),造成数据库短时间线程数被打满而导致其他服务阻塞,最终导致线上服务不可用,这种情况一般来自黑客同学。好了,今天就到这里,同学们学废了吗。缓存击穿:指缓存中没有但数据库中有的数据(一般是热点数据缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去查,引起数据库压力瞬间增大,线上系统卡住。

澎湖Java架构师的博客 633

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

想进阿里的108道Java面试题

很多同学想进大厂,特别是刚毕业的,以及工作年限短的,不要有任何侥幸心理,踏踏实实的把基础弄扎实了,这是你通往高薪之路的唯一正确姿势。 好了,不多说了,直接上正菜。 01 Mysql 1. 数据库三范式及判断、E-R图 2. innodb和myisam存储引擎的区别 3. 索引分类(主键、唯一索引、全文索引、覆盖索引等等),最左前缀原则,哪些条件无法使用索引 4. B树、B+树区别,索引为何使用B+树 5. 聚集索引与非聚集索引(使用非聚集索引的查询过程) 6. 事务的ACID(原子性、一致性

JAVA高级架构 752

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

程序员进BAT大厂必须要搞懂的3道Redis面试题!

前言 在大数据时代,频繁地在应用和数据库之间进行读写操作在性能、速度、体验上已经远远不能满足用户、客户、开发人员的要求了,于是一种基于内存操作的数据库便应运而生。Redis 是一种基于内存的数据库,如何轻松理解并熟练操作 Redis 是一个有责任心、进取心程序员应该了解和掌握的技术。Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行各...

程序员追风的博客 2194

大厂常问Redis面试题,刷到就是赚到

又到一年金九银十跳槽季,很多程序员都开始了疯狂刷题之旅,但是这样刷题的效率极其低下,所以小编特意整理了大厂中最常见的50道大厂Redis面试题(附答案),帮助大家在最短的时间内复习更多的知识。废话不多说,正文走起! 50道大厂常问Redis面试题,提高你的刷题效率 Redis 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每.

weixin_50897781的博客 157

精选!耗时180天整理的Java面试宝典(10w字Java高级开发面试题总结和答案)!轻松斩获大厂offer!99%的大厂面试八股文,都在这里了!

大家好,我是Tom,一名工作了10多年的Java程序员。在10多年的工作生涯中,已在教育板块深耕了5年。在这几年中,我遇到了很多不同困境中的Java开发者,让我有了一个思考,在做教育这件事情上,我的目标是什么?为此,我思考了很久。 在2021年的年底,我开始在全网制作Java面试题相关的讲解与内容输出,保持日更。已经更新了100+期,并会持续制作下去。同时,我会将所有的文档免费送个大家,让每一位Java程序员在面试的不在遇到困难,并通过面试题的方式学会一个技术点。 目前全网累计播放600余万次,

Tom弹架构 1466

大厂必问Redis:肝完这份阿里出品“Redis神技”还说你不会Redis?

内存数据库Redis的相关知识,几乎是大厂的必考题,下面我总结了设计Redis的11道面试题: 说说Redis基本数据类型有哪些吧 Redis为什么快呢? 那为什么Redis6.0之后又改用多线程呢? 知道什么是热key吗?热key问题怎么解决? 什么是缓存击穿、缓存穿透、缓存雪崩? Redis的过期策略有哪些? 那么定期+惰性都没有删除过期的key怎么办? 持久化方式有哪些?有什么区别? 怎么实现Redis的高可用? 能说说redis集群的原理吗? 了解Redis事务机制吗? 我们为

Java圈全能架构师的博客 2036

大厂面试;这些面试题你都不会,还想进大厂?

这份面试题总内容包含了十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM。我们与其羡慕他人的成功,不如从此刻开始,积累足够多的知识和面试经验,为将来进入更好的公司做充分的准备!给准备面试的大家,特别总结了 Java 程序员面试必备的面试题库。

jjc4261的博客 125

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 421
上一篇: 【我想进大厂!】超全面试题总结.MySQL篇
下一篇: 【我想进大厂!】超全面试题总结.消息队列MQ篇
Javaaaaaaaaaaa13
博客等级 码龄2年 381粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值