1、面试场景与面试技巧 金三银四招聘季,一位粉丝朋友最近在蚂蚁金服第二轮面试时遇到这样一个问题:如果MQ消费遇到瓶颈时该如何处理?。 横向扩容,相比很多读者与我这位朋友一样会脱口而出,面试官显然不会满意这样的回答,然后追问道:横向扩容是堆机器,还有没有其他办法呢? 在面试过程中,个人建议大家在听到问题后稍作思考,不要立马给出太直接的答案,而是应该与面试官进行探讨,一方面可更深刻的理解面试官的出题初衷,同时可以给自己梳理一下思路。 消费端遇到瓶颈,这是一个结果,但引起这个结果的原因是什么呢?在没有弄清楚原因之前谈优化…

2021年3月19日 0条评论 656点热度 0人点赞 李锋镝 阅读全文

今天开始我们将继续深入 ZK 选举相关的知识 一、选举的基本规则 ZKr~这次我决定一反常态,先不讲故事了~先得聊聊在 ZK 选举中非常重要的一些东西。 1.1 zxid zxid 就是我们之前提到的事务编号,是一个 8 字节的整型数字,但是 ZK 设计的时候把这一个数字拆成了两部分使用,一鱼两吃! 8 个字节的整数一共有 64 位长度,前 32 位用来记录 epoch,后 32 位就是用来计数。你可能要问了? epoch?是啥? zxid 初始化是 0,也就是这样 000000000000000000000000…

2021年3月18日 0条评论 608点热度 0人点赞 李锋镝 阅读全文

一、优秀员工小S(Sync) 我们通过之前的文章有介绍过,小S(Sync) 负责对办事处的数据进行归档,所以今天他就是我们的主角,让我们一起深入了解他的日常工作吧 为了唤醒大家的远古记忆,我放一张之前的图片 今天我们会重点讲一下图中的蓝色部分,不过在此之前还是得先从整体架构上介绍下 ZK 的数据管理,ZK 的数据大致是分为了两部分,一个是内存,一个就是磁盘文件。 1.1 内存 虽然今天我们的主角是磁盘文件,但是内存还是稍微再提一下下,帮助大家记忆的同时也能有一个比较全面的视角去认知 ZK 整体的数据管理。 ZK 在…

2021年3月18日 0条评论 596点热度 0人点赞 李锋镝 阅读全文

作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么当 Redis 服务器的内存耗尽后,如果继续执行请求命令,Redis 会如何处理呢?   设置有效期 使用Redis 服务时,很多情况下某些键值对只会在特定的时间内有效,为了防止这种类型的数据一直占有内存,我们可以给键值对设置有效期。Redis中可以通过 4 个独立的命令来给一个键设置过期时间: expire key ttl:将 key 值的过期时间设置为 ttl 秒。 pexpire key ttl:将 key 值的过期时间设置为 t…

2021年3月3日 0条评论 620点热度 1人点赞 李锋镝 阅读全文

经常在其它各个地方在说公司禁止使用Lombok,我一直不明白为什么不让用,今天看到一篇文章列举了一下“缺点”,这里我只想狠狠地反驳,看到列举的理由我竟无言以对。   JDK 版本问题 当我想要将现有项目的 JDK 从 Java 8 升级到 Java 11 时,我发现 Lombok 不能正常工作了。于是我不得不将所有的 Lombok 注解从项目源代码中清除,并使用 IDE 自带的功能生成 getter/setter,equals,hashCode,toString 以及构造器等方法,你也可以使用 Delom…

2021年3月3日 0条评论 578点热度 2人点赞 李锋镝 阅读全文

Intro Dapr 官方团队已于最近(2021.2.17)正式发布Dapr v1.0,Dapr已正式生产可用,可以部署到自托管环境或 Kubernetes 集群。对于绝大多数开发者来说,想必对Dapr只是有所耳闻,而具体是什么(What),可以解决什么样的问题(Why&How),有怎样的应用场景(Where),并不知悉。本文就尝试简要梳理下Dapr,并尝试回答以上问题。 What's Dapr Distributed Application Runtime. An event-driven, portab…

2021年2月26日 0条评论 610点热度 0人点赞 李锋镝 阅读全文

摘要:一问一答的形式轻松学习掌握java工具。 以一问一答的形式学习java工具 Q:检查内存泄露的工具有? A: jmap生成dump转储文件,jhat可视化查看。 Q:某进程CPU使用率一直占满,用什么工具可以排查? A: top -Hp pid找到最占CPU的线程 然后jstack来查找那个线程此时所处的堆栈,确定问题发生位置。 § 各工具详细介绍 § jstack 全称: JVM Stack Trance 作用: 查看某个java进程的堆栈情况, 可用于确认死锁、IO等待、死循环等问题。 命令用法: jst…

2021年2月19日 0条评论 602点热度 0人点赞 李锋镝 阅读全文

问题。然而在大量写入数据场景该如何优化呢? 今天这里主要给大家介绍,在有大量写入的场景,进行优化的方案。 总的来说MYSQL数据库写入性能主要受限于数据库自身的配置,以及操作系统的性能,磁盘IO的性能。主要的优化手段包括以下几点: 1、调整数据库参数 (1) innodb_flush_log_at_trx_commit 默认为1,这是数据库的事务提交设置参数,可选值如下: 0: 日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,但是在一个事务提交不做任何操作。 1:在每个事务提交时,日志缓冲被写到…

2021年2月19日 2条评论 621点热度 0人点赞 李锋镝 阅读全文

摘要:在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历。 在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历。这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面一起学习学习吧。 方式一 通过Map.keySet使用iterator遍历 @Test public void testHashMap1() { Map<Integer, Str…

2021年2月19日 0条评论 583点热度 1人点赞 李锋镝 阅读全文

前言 Shiro作为常用的权限框架,可被用于解决认证、授权、加密、会话管理等场景。Shiro对其API进行了友好的封装,如果单纯的使用Shiro框架非常简单。但如果使用了多年Shiro,还依旧停留在基本的使用上,那么这篇文章就值得你学习一下。只有了解Shiro的底层和实现,才能够更好的使用和借鉴,同时也能够避免不必要的坑。 下面以官方提供的实例为基础,讲解分析Shiro的基本使用流程,同时针对认证和授权流程进行更底层的原理讲解,让大家真正了解我们所使用的Shiro框架,底层是怎么运作的。 Shiro组成及框架 在学…

2021年2月16日 0条评论 586点热度 0人点赞 李锋镝 阅读全文
123456