Redis

Redis 6.0 多线程重磅发布!!!

邮差的信 提交于 2020-10-02 08:57:26
Redis 6.0 多线程重磅发布!!! Redis 6.0在5.2号这个美好的日子里悄无声息的发布了,这次发布在IT圈犹如一颗惊雷一般,因为这是redis最大的一次改版,首次加入了多线程。 作者Antirez在RC1版本发布时在他的博客写下: the most “enterprise” Redis version to date // 最”企业级”的 the largest release of Redis ever as far as I can tell // 最大的 the one where the biggest amount of people participated // 参与人数最多的 这次改变,性能有个飞速的提升~ 先po出新版和旧版性能图 从上面可以看到 GET/SET 命令在 4 线程 IO 时性能相比单线程是几乎是翻倍了。另外,这些数据只是为了简单验证多线程 IO 是否真正带来性能优化,并没有针对严谨的延时控制和不同并发的场景进行压测。数据仅供验证参考而不能作为线上指标,且只是目前的 unstble分支的性能,不排除后续发布的正式版本的性能会更好。 Redis 6.0 之前的版本真的是单线程吗? Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器

应聘Java程序员职位需要什么技能?

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-02 08:47:25
  目前java语言已经是名副其实的第一编程语言,就业的岗位就目前的绝对数量来讲也应该是最多的。当然经过这些年的发展,入门的门槛也提升了许多,目前java就业大环境是初级刚毕业的学生数量非常巨大,高级java软件工程师在行业内却仍是奇缺的。   所以很多人觉得软件行业饱和了,这是因为只看到了初级层面的竞争非常激烈,没有看到高级的严重缺失。小编就先给大讲讲要找到Java的工作应该具备哪些技能吧~   1.java编程基础   既然是要找一份编程语言的工作,编程基础就必须是要拿下的。无论是干什么,基础都是非常重要的!   java基础需要掌握常见的基本数据类型,标识符和关键字,运算符和表达式,数组和流程控制语句,对象和类,以及常见的一些类,String,Date,Stream,Number,Math,StringBuffer,Scanner等等,以及Java里面的异常处理,正则表达式,这些都属于基础必须要掌握的。   2.MySQL,多线程,集合等   高级编程主要在多线程,反射机制,面向对象的深层次理解,java集合框架,泛型编程,网络编程,文档注释,java序列化,java mysql连接等这些都是为了后续接触框架做准备,做java框架必须要掌握的。   3.开源框架   java的框架有很多,开始学习阶段不要期望能掌握的很多,但起码要掌握一种,然后在工作中慢慢展开

首面余额宝团队,4面以为没戏了,没想到最终收到录取通知

こ雲淡風輕ζ 提交于 2020-10-02 08:32:46
进入主题之前,开篇先闲谈几句,我是直接投的简历,以为没戏了,这次的面试来得意外,所以心里上是没有准备的,这次肺炎对我们的学习、工作和生活都造成了非常大的影响,很多学校延期开学,企业也延期返工,实际上在闭关的这段时间里,我们正好可以好好利用这段时间,为自己之后想要做得事情充分做好准备,也希望肺炎赶快过去,我们的生活恢复正常。 余额宝一面: 自我介绍一下 JVM 内存分哪几个区,每个区的作用是什么?JVM有哪些回收算法,对应的收集器有哪些? GC 的两种判定方法 ?CMS 收集器与 G1 收集器的特点。 hashmap源码问题 HashMap、HashMap如何保证线程安全、ConcurrentHashMap HashMap底层结构 put操作讲一下 GC 的两种判定方法 ?CMS 收集器与 G1 收集器的特点。 java线程同步都有哪几种方式,在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别? cas的原理,变量要用哪个关键字修饰,volatile实现的原理。 你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的? MYSQL 数据库服务器性能分析的方法命令有哪些? 什么是通用 SQL 函数? 手撕代码:按层次遍历二叉树? Java 配置的方式配置 Spring spring中用到了什么, 简述 AOP 和 IOC 概念,aop是怎么实现的

2020java面试总结

…衆ロ難τιáo~ 提交于 2020-10-02 08:02:08
博主背景:92年生,渣本毕业,java岗,经验接近6年,base上海 本文宗旨:本文旨在将博主最近的面试经历分享给大家,并作些总结,尽量为在准备面试的同学缩小面试准备的范围,或者至少让同学们知道现在企业都问些啥,以及一些面试的注意事项,希望对你有参考作用 本次面试情况:2020年7月中开始,持续3周多时间,面了13家,2家没过,1家意外,10家通过,如下: 1) 拍拍贷 ,业务岗资深技术专家+基础架构部资深技术专家,技术五面(这家经历比较特殊,两个岗位都通过了,所以技术面了5轮) 2) 平安普惠金融 ,职级C2,技术三面(通过) 3) 微众银行 ,技术两面(通过),博主现在的东家. 4) 北京什么值得买 ,架构师岗(一面没过) 5) soul ,高级java,技术三面(通过) 6) 多点small ,技术三面(通过) 7) 萨摩耶数科 ,技术三面(通过) 8) 中国电信 ,云计算部门,技术三面(挂在技术三面) 9) 哈罗单车 ,技术两面(通过) 10) 蚂蚁金服 ,国际事业群(就是出了意外的那家.....技术一面+做题,当场面试官反馈通过,第二天出了幺蛾子,说是我们公司算他们资方,不能招,我当然认为是扯淡,后续跟猎头了解到,蚂蚁对资方企业的员工简历有几个月的冷冻期,非常遗憾,没见识到蚂蚁面试官的厉害...) 11) 饿了么 ,风控部门,职级P7(饿了么P7只能对标阿里P6,P6+)

Redis入门(6)

不想你离开。 提交于 2020-10-02 08:00:19
Lua基本语法 表类型 函数 Redis执行脚本 KEYS与ARGV 沙盒与随机数 脚本相关命令 原子性和执行时间 Lua是一种高效的轻量级脚本语言,能够方便地嵌入到其他语言中使用。在Redis中,借助Lua脚本可以自定义扩展命令。 Lua基本语法 数据类型 空(nil),没有赋值的变量或表的字段值都是nil 布尔(boolean) 数字(number),整数或浮点数 字符串(string),字符串可以用单引号或双引号表示,可以包含转义字符如\n \r等 表(table),表类型是Lua语言中唯一的数据结构,既可以当数组又可以当字典,十分灵活 函数(function),函数在Lua中是一等值(first-class-value),可以存储在变量中、作为函数的参数或返回结果。 变量 Lua的变量分为全局变量和局部变量,全局变量无需声明就可以直接使用,默认值是nil。 全局变量: a=1 -- 为全局变量a赋值 print(b) -- 无需声明即可使用,默认值是nil 局部变量: local c -- 声明一个局部变量c,默认值是nil local d=1 -- 声明一个局部变量d并赋值为1 local e,f -- 可以同时声明多个局部变量 但在Redis中,为了防止脚本之间相互影响,只允许使用局部变量。 赋值 Lua支持多重赋值,如: local a,b=1,2 --a的值是1

Spark原理详解

£可爱£侵袭症+ 提交于 2020-10-02 07:24:03
Hadoop存在缺陷: 基于磁盘,无论是MapReduce还是YARN都是将数据从磁盘中加载出来,经过DAG,然后重新写回到磁盘中 计算过程的中间数据又需要写入到HDFS的临时文件 这些都使得Hadoop在大数据运算上表现太“慢”,Spark应运而生。 Spark的架构设计: ClusterManager负责分配资源,有点像YARN中ResourceManager那个角色,大管家握有所有的干活的资源,属于乙方的总包。 WorkerNode是可以干活的节点,听大管家ClusterManager差遣,是真正有资源干活的主。 Executor是在WorkerNode上起的一个进程,相当于一个包工头,负责准备Task环境和执行Task,负责内存和磁盘的使用。 Task是施工项目里的每一个具体的任务。 Driver是统管Task的产生与发送给Executor的,是甲方的司令员。 SparkContext是与ClusterManager打交道的,负责给钱申请资源的,是甲方的接口人。 整个互动流程是这样的: 1 甲方来了个项目,创建了SparkContext,SparkContext去找ClusterManager申请资源同时给出报价,需要多少CPU和内存等资源。ClusterManager去找WorkerNode并启动Excutor,并介绍Excutor给Driver认识。 2

太刺激了,面试官让我手写跳表,而我用两种实现方式吊打了TA!

隐身守侯 提交于 2020-10-02 07:22:57
前言 本文收录于专辑: http://dwz.win/HjK ,点击解锁更多数据结构与算法的知识。 你好,我是彤哥。 上一节,我们一起学习了关于跳表的理论知识,相信通过上一节的学习,你一定可以给面试官完完整整地讲清楚跳表的来龙去脉,甚至能够边讲边画图。 然而,面试官说,既然你这么精通跳表,不如实现一个呗^^ 我,我,实现就实现,谁怕谁,哼~~ 本节,我将通过两种方式手写跳表,并结合画图,彻底搞定跳表实现的细节。 第一种方式为跳表的通用实现,第二种方式为彤哥自己发明的实现,并运用到HashMap的改写中。 好了,开始今天的学习吧,Let's Go! 文末有跳表和红黑树实现的HashMap的对比,不想看代码的同学也可以直达底部。 通用实现 通用实现主要参考JDK中的ConcurrentSkipListMap,在其基础上,简化,并优化一些东西,学好通用实现也有助于理解JDK中的ConcurrentSkipListMap的源码。 数据结构 首先,我们要定义好实现跳表的数据结构,在通用实现中,将跳表的数据结构分成三种: 普通节点,处于0层的节点,存储数据,典型的单链表结构,包括h0 索引节点,包含着对普通节点的引用,同时增加向右、向下的指针 头索引节点,继承自索引节点,同时,增加所在的层级 类图大概是这样: OK,给出代码如下: /** * 头节点:标记层 * @param <T> */

授人以鱼不如授人以渔!阿里面试官整理的Redis原理实践小册

白昼怎懂夜的黑 提交于 2020-10-02 06:17:22
还原一个真实的面试场景 在面试后端工程师Redis技能的时候,面试官通常问的第一个问题就是“Redis能用来做什么?”,第一个回答往往都会是「缓存」。缓存确实是Redis 使用最多的领域,它相比Memcache而言更加易于理解、使用和控制。 可是如果再进一步问“还有呢?”,大多数同学就会开始皱眉头,只有一小部分人会回答「分布式锁」。如果你就分布式锁再深入问下去,他们基本就会开始摇头:我们项目里面Redis的锁方法都是别人(应该是架构师)封装好的,拿过来直接使用,内部细节没有去了解过,也没有必要了解。 对类似的场景,我深有体会。因为关于Redis 的面试题,之前准备了很多,但是真正能用上的却很少。当面试的同学频繁地回复「不知道、没用过」的时候,再继续深入追问已经毫无意义,这时候就需要切换话题了。偶尔遇上几个能持续很多回合的同学,他们总能使人眼前一亮。如果再拓展一下周边知识点,就会发现这些人往往也会有所涉猎,这时我在心中已经暗暗地对这位同学伸出了大拇指。 其实很多业务场景,如果仅仅是会使用某项技术、框架,那是再简单不过了。但随着业务发展,系统的用户量、并发量涨上来之后,现有系统的问题就会层出不穷地暴露出来。如果不能深入地了解系统、技术和框架背后的深层原理,很多问题根本无法理解到本质,更谈不上解决,临时抱佛脚也于事无补。 所谓「授人以鱼不如授人以渔」

【Redis】面试常问问题(二)

一世执手 提交于 2020-10-02 06:00:04
一、最基本问题 1、如何保证Redis的高并发和高可用?Redis的主从复制原理能介绍一下嘛?Redis的哨兵原理能介绍一下嘛?。面试官心理:其实问这个问题,主要是考考你,Redis单机能承载多高并发?如果单机扛不住如何扩容来抗更多的并发?Redis会不会挂?既然Redis会挂,那怎么保证Redis是高可用的? 2、Redis的持久化方式有哪几种?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 二、Redis高并发跟整个系统高并发之间的关系 1、Redis:你要搞高并发的话,不可避免,要把底层的缓存搞的很好。 2、MySQL:高并发也是通过一系列复杂的分库分表来实现的。订单系统,业务要求的,QPS到几万,比较高了。 要做一些电商的商品详情页,真正的超高并发,QPS上十万,甚至是百万。一秒钟几百万的请求量光靠Redis是不够的,但是Redis是整个大型的缓存架构中非常重要的一个环节。 三、如果Redis要支撑10万+的并发,应该如何做 单机的Redis几乎不可能达到10万的QPS。除非一些特殊的情况,比如你的机器性能特别好,配置特别高,物理机维护做的特别好,而且你整体的操作不是很复杂。单机一般是几万。 读写分离,一般来说都是用来支撑读高并发的。写的请求时比较少的。可能写请求也就每秒几千。 四、Redis

大数据中台

点点圈 提交于 2020-10-02 04:18:10
数据中台的由来 数据中台最早是阿里提出的,但真正火起来是2018 年,我们能感受到行业文章谈论数据中台的越来越多。大量的互联网、非互联网公司都开始建设数据中台。为什么很多公司开始建设数据中台?尽管数据中台的文章很多,但是一千人眼里有一千个数据中台,到底什么是数据中台?数据中台包含什么? 当企业需要数据化转型、精细化运营,进而产生大规模数据应用需求的时候,就需要建设数据中台。数据中台是高质量、高效赋能数据前台的一系列数据系统和数据服务的组合。数据中台包含数仓体系、数据服务集和BI 平台。 1、是阿里拜访芬兰的一家公司—SupperCell,只有不到10个人,每个员工创造估值3.74亿 ​ 2、淘宝遇到的问题:淘宝和天猫是两套完全独立的两套系统,但是却都包含了商品、交易、评价、支付、物流 ​ 3、中台之前类似的思想 SOA(方法):面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。 电商系统的四个发展阶段 1、单一系统 2、分布式系统 3、平台化(服务业务,支撑作用) 4、中台化(驱动业务,中枢作用) 第一阶段:数据库节点:单一业务系统阶段 第二阶段