Redis

Java面试题——随机题(一),看看哪些你会哪些你不会

瘦欲@ 提交于 2020-10-02 19:57:53
Java面试题——随机题(一),看看哪些你会哪些你不会 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 请说明一下EJB的几种类型分别是什么? 会话(Session)Bean、实体(Entity)Bean 、消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种 实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种。 请说明一下锁机制的作用是什么?并且简述一下Hibernate的悲观锁和乐观锁机制是什么? 锁机制的作用是保证共享资源可以进行排他性的访问 悲观锁 悲观的认为在数据处理过程中极有可能存在修改数据的并发事务(包括本系统的其他事务或来自外部系统的事务),于是将处理的数据设置为锁定状态。 数据库中主要是通过数据库底层的锁机制才能保证真正的数据访问排他性。 缺点:并发量不高,效率低; 乐观锁 对并发事务持乐观态度(认为对数据的并发操作不会经常性的发生),通过更加宽松的锁机制来解决由于悲观锁排他性的数据访问对系统性能造成的严重影响。最常见的乐观锁是通过数据版本标识来实现的 redis为什么是单线程? 多线程不一定比单线程效率高,多线程的本质就是CPU通过轮换时间片执行不同的线程,看似多个线程一起执行

这三年被分布式坑惨了,曝光十大坑

和自甴很熟 提交于 2020-10-02 13:41:35
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者 | 悟空聊架构 来源 | 悟空聊架构(ID:PassJava666) 转载请联系授权(微信ID:PassJava) 本篇主要内容如下: 主要内容 前言 我们都在讨论分布式,特别是面试的时候,不管是招初级软件工程师还是高级,都会要求懂分布式,甚至要求用过。传得沸沸扬扬的分布式到底是什么东东,有什么优势? 借用火影忍术 风遁 ·螺旋手里剑 看过 火影 的同学肯定知道 漩涡鸣人 的招牌忍术: 多重影分身之术 。 这个术有一个特别厉害的地方, 过程和心得 :多个分身的感受和经历都是相通的。比如 A 分身去找卡卡西(鸣人的老师)请教问题,那么其他分身也会知道 A 分身问的什么问题。 漩涡鸣人 有另外一个超级厉害的忍术,需要由几个影分身完成: 风遁·螺旋手里剑。 这个忍术是靠三个鸣人一起协作完成的。 这两个忍术和分布式有什么关系? 分布在不同地方的系统或服务,是彼此相互关联的。 分布式系统是分工合作的。 案例: 比如 Redis 的 哨兵机制 ,可以知道集群环境下哪台 Redis 节点挂了。 Kafka的 Leader 选举机制 ,如果某个节点挂了,会从 follower 中重新选举一个 leader 出来。(leader

Kubernetes-基于helm安装部署高可用的Redis及其形态探索

北慕城南 提交于 2020-10-02 12:50:11
首先是一些关于redis的介绍和其在K8S上的安装过程:https://www.kubernetes.org.cn/3974.html 1.1部署形态 通过上述地址的教程,可以完成redis 的安装和使用。本文主要是要阐述一些社区版的redis-ha的形态探索。 这是我按照上述教程安装的例子,可以看到,默认是安装1主+2从,这是3节点的配置。同时,每个redis-server和一个redis-sentinel安装在一个节点,也就有了三个redis-sentinel。 1.2主从切换 首先,我们通过kubectl get svc -n default的方式来获取redis的网络情况。(n为namespace,请根据自己情况进行更改) 然后,我们通过redis-cli的方式来访问redis的master实例,并获取Replication的状态。 从上图中,我们可以看出,redis master有两个slave,同时,可以看到他们的ip和pod ip是对应的。(注意,这里我们是在宿主机上,通过master的clusterIP访问的,而非redis pod的) 我们进入到redis的master server的pod中,kill掉redis server进程,因为pod存活条件应该是以redis来判断的(有的是ping 6379这个端口,这里暂时还不知道是怎么判断的。)

HashSet扩容机制在时间和空间上的浪费,远大于你的想象

六眼飞鱼酱① 提交于 2020-10-02 12:07:33
一:背景 1. 讲故事 自从这个纯内存项目进了大客户之后,搞得我现在对内存和CPU特别敏感,跑一点数据内存几个G的上下,特别没有安全感,总想用windbg抓几个dump看看到底是哪一块导致的,是我的代码还是同事的代码? 很多看过我博客的老朋友总是留言让我出一套windbg的系列或者视频,我也不会呀,没办法,人在江湖飘,迟早得挨上几刀,逼着也得会几个花架子😄😄😄,废话不多说,这一篇就来看看 HashSet 是如何扩容的。 二:HashSet的扩容机制 1. 如何查看 了解如何扩容,最好的办法就是翻看HashSet底层源码,最粗暴的入口点就是 HashSet.Add 方法。 从图中可以看到最后的初始化是用 Initialize 的,而且里面有这么一句神奇的代码: int prime = HashHelpers.GetPrime(capacity); ,从字面意思看是获取一个质数,哈哈,有点意思,什么叫质数? 简单说就是只能被 1 和 自身 整除的数就叫做质数,那好奇心就来了,一起看看质数是怎么算的吧! 再次截图。 从图中看,HashSet底层为了加速默认定义好了 72 个质数,最大的一个质数是 719w ,换句话就是说当元素个数大于 719w 的时候,就只能使用 IsPrime 方法动态计算质数,如下代码: public static bool IsPrime(int

springcloud开发的电子商务小程序平台

ε祈祈猫儿з 提交于 2020-10-02 11:55:59
核心架构:Spring Cloud、Spring Boot、Mybatis、Redis、Rabbit MQ、微服务、分布式、电子商务 核心思想:产品微服务、模块化、原子化、持续集成、分布式、集群部署 开发模式:代码生成工具、驱动式开发模式、提高开发效率 微信扫码可以体验~ 来源: oschina 链接: https://my.oschina.net/u/3613013/blog/4298239

快速搭建高可用Redis Cluster主从模式集群的填坑之路

橙三吉。 提交于 2020-10-02 11:17:33
Redis Cluster主从模式 原理 redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点 对应一个或多个从节点 , 主节点 提供数据存取 , 从节点则是 从主节点拉取数据。 备份, 当这个主节点挂掉后 ,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。 说明 假如集群有A、B、C三个主节点, 如果这 3个节点都没有加入从节点 ,如果 B挂掉了 ,我们就无法访问整个集群了, A和C的slot也无法访问。 所以 在集群建立的时候 ,一定要为每个主节点都 添加了从节点 ,。比如,像集群包含主节点A、B、C, 以及从节点A1、B1、C1, 那么即使B挂掉, 系统也可以继续正确工作 , B1节点替代了B节点 ,故Redis集群将会选择B1节点,作为新的主节点,集群将会继续正确地提供服务 当B重新开启后,它就会变成B1的从节点。 注意 如果节点B和B1同时挂了,Redis集群就无法继续正确地提供服务了。 故 最小的redis集群需要3个主节点 (即 Redis Cluster集群至少需要3个master节点 ,也就是说 至少需要6个节点才能构建Redis cluster集群 ), 一台机器可运行多个redis实例 ( 一般使用两台机器, 每台启动3个redis实例 ,即三个主节点, 三个从节点 )。 很多案例 使用单台服务器开6个端口 ,操作差不多

超罕见!Alibaba内部流行的“Java突击宝典”,金九银十程序员升职加薪必备!

折月煮酒 提交于 2020-10-02 11:17:21
前言 Alibaba作为一线互联网公司的代表,是大部分程序员梦寐以求的工作场所,确实大厂出来的程序员,其背景也更值钱,含金量也会更高。实际上,Alibaba程序员早已成为行业内学习的榜样和标杆,但实际上光鲜的背后付出的血汗是我们没看到的。那么阿里程序员平常都是怎么学习的呢? 今天就讲讲让我们一众菜鸡惊艳到的“Java突击宝典”,这份宝典在Alibaba内部流行已久,适合各个年限的程序员来学习,它主要将需要学习的技术栈分为了三个阶段: 0-1年开发经验(夯实基础):Java基础+并发编程+JVM基础+设计模式+SQL基础与优化+HTTP/TCP协议+算法与数据结构+学习能力+ 源码+Redis+了解一个消息产品 1-3年开发经验(合格的程序员):JVM基础调优+常见框架源码+MySQL优化+缓存+熟悉消息中间件(至少一个)+熟悉微服务(至少一个)+互联网项目经验+ Netty+分布式技术 4-5年开发经验(提升技术广度与深度):性能调优+分布式技术+微服务+技术选型+分布式场景问题+互联网项目经验+ 项目管理+团队管理 这三个阶段具体的内容如何?见下文揭晓吧。当然,文章有限,不能全部描述出来,有完整的pdf版可免费分享,添加下方小助手VX即可获取 0-1年:夯实基础 1.Java基础(Java异常分类及处理+Java反射+Java注解+Java内部类+Java泛型+Java序列化

Apache 2.4的反向代理和负载均衡

此生再无相见时 提交于 2020-10-02 10:54:04
文章内容参考自官方文档: http://httpd.apache.org/docs/2.4/howto/reverse_proxy.html 像nginx一样, Apache httpd也提供了反向代理(Reverse Proxy)并能实现负载均衡(Load Balance)。 Apache httpd配置中需要开启以下模块: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so # 这个也要开启, 否则httpd启动报错 LoadModule slotmem_shm_module modules/mod_slotmem_shm.so # 以下负载均衡策略按需开启 LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule lbmethod_bytraffic

为什么Redis要比Memcached更火?

♀尐吖头ヾ 提交于 2020-10-02 10:53:23
前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快。但我们在开发过程中,这两个内存数据库,我们到底要如何选择呢?它们的优劣都有哪些? 为什么现在看Redis要比Memcached更火一些? 这篇文章,我们就从各个方面来对比这两个内存数据库的差异,方便你在使用时,做出最符合业务需要的选择。 要分析它们的区别,主要从以下几个方面对比: 线程模型 数据结构 淘汰策略 管道与事务 持久化 高可用 集群化 线程模型 要说性能,必须要分析它们的服务模型。 Memcached处理请求采用多线程模型,并且基于IO多路复用技术,主线程接收到请求后,分发给子线程处理。 这样做好的好处是,当某个请求处理比较耗时,不会影响到其他请求的处理。 当然,缺点是CPU的多线程切换必然存在性能损耗,同时,多线程在访问共享资源时必然要加锁,也会在一定程度上降低性能。 Redis同样采用IO多路复用技术,但它处理请求采用是单线程模型,从接收请求到处理数据都在一个线程中完成。 这意味着使用Redis,一旦某个请求处理耗时比较长,那么整个Redis就会阻塞住,直到这个请求处理完成后返回,才能处理下一个请求,使用Redis时一定要避免复杂的耗时操作。 单线程的好处是,少了CPU的上下文切换损耗,没有了多线程访问资源的锁竞争,但缺点是无法利用CPU多核的性能。 由于Redis是内存数据库