java
文章平均质量分 91
卷心菠菜
这个作者很懒,什么都没留下…
展开
-
蚂蚁金服三面:请说说Redis分布式锁的原理和实现
对同一个资源进行操作,单一的缓存读取没问题了,但是存在并发的时候怎么办呢,为了避免数据不一致,我们需要在操作共享资源之前进行加锁操作。我们在开发很多业务场景会使用到锁,例如库存控制,抽奖,秒杀等。一般我们会使用内存锁的方式来保证线性的执行。但现在大多站点都会使用分布式部署,那多台服务器间的就必须使用同一个目标来判断锁。分布式与单机情况下最大的不同在于其不是多线程而是多进程。图1:分布式站点使用内存锁图2:分布式站点使用分布式锁当然我们暂时用不了这么复杂的场景,我们就简..原创 2021-10-30 21:51:48 · 137 阅读 · 0 评论 -
并发编程:乱序执行的那些事儿五分钟给你整明白
什么是乱序执行乱序执行 [1] ,简单说就是程序里面的代码的执行顺序,有可能会被编译器、CPU 根据某种策略调整顺序(俗称,“打乱”)——虽然从单线程的角度看,乱序执行不影响执行结果。为什么需要乱序执行主要原因是 CPU 内部采用 流水线技术 [2] 。抽象且简化地看,一个 CPU 指令的执行过程可以分成 4 个阶段:取指、译码、执行、写回。这 4 个阶段分别由 4 个独立物理执行单元来完成。这种情况下,如果指令之间没有依赖关系,后一条指令并不需要等到前一条指令完全执行完成再开始执行。而是前原创 2021-10-30 21:50:41 · 250 阅读 · 0 评论 -
跳表——怎么让一个有序链表能够进行“二分“查找?
对于一个有序数组,如果要查找其中的一个数,我们可以使用二分查找(Binary Search)算法,将它的时间复杂度降低为O(logn).那查找一个有序链表,有没有办法将其时间复杂度也降低为O(logn)呢?跳表(skip list),全称为跳跃链表,实质上就是一种可以进行二分查找的有序链表,它允许快速查询、插入和删除有序链表。跳表使用的前提是链表有序,就像二分查找也要求有序数组怎么理解跳表比如我们有一个原始有序链表,如下图所示。要查找其中值为20的元素,之前都是采取按顺序...原创 2021-10-30 21:49:52 · 379 阅读 · 0 评论 -
基于Spring Boot和Kubernetes的RESTful微服务
微服务体系结构是构建现代软件系统最流行的方法之一。微服务体系结构的核心是使用更小的内聚服务构建软件应用程序。您不需要构建一个大型的整体,而是构建小型的可独立部署的服务。因此,单个团队可以拥有端到端的功能。什么是微服务体系结构?微服务体系结构由许多(通常是数百个)小型自治服务组成。每项服务都是独立的。微服务是围绕业务能力构建的。微服务体系结构的一些重要特征包括:微服务是围绕业务能力建模的。 微服务是可独立部署的。 微服务封装了它所拥有的数据。如果一个微服务需要从另一个微服务获取数据,那么它应该原创 2021-10-30 21:49:00 · 151 阅读 · 0 评论 -
超赞的kafka可视化客户端工具,让你嗨皮起来
Kafka Tool是一个用于管理和使用Apache Kafka®集群的GUI应用程序。 Kafka Tool提供了一个较为直观的UI可让用户快速查看Kafka集群中的对象以及存储在topic中的消息,提供了一些专门面向开发人员和管理员的功能,主要特性包括:快速查看所有Kafka集群信息,包括其brokers, topics and consumers 查看分区中的消息内容并支持添加新消息 查看消费者偏移量,支持查看Apache Storm Kafka Spout消费者偏移量 以pretty-pr原创 2021-10-30 21:47:41 · 1843 阅读 · 0 评论 -
面试官:Spring里的循环依赖怎么解决?
最近被面试搞得很是烦躁,特别是看到一些面试官上来就黑着个脸,真想赶紧面试结束。可为了生活,还是得忍着,归根结底还是太菜了!最近有粉丝问到了循环依赖问题,以后再有人问你,拿这篇“吊打”他。概念什么是循环依赖?多个bean之间相互依赖,形成了一个闭环。比如:A依赖于B、B依赖于C、C依赖于A。通常来说,如果问Spring容器内部如何解决循环依赖,一定是指默认的单例Bean中,基于set方法构造注入的属性互相引用的场景。循环依赖的种类及能否解决如下: 名称 .原创 2021-10-30 21:46:17 · 144 阅读 · 0 评论 -
别再写满屏的 get & set 了,太 Low。试试 MapStruct 高级玩法
别再写满屏的 get-set 了,太 Low!MapStruct 高级玩法,这篇栈长带你上正道!原文链接:https://mp.weixin.qq.com/s/pnDjW9jXXNswqMOIxMpT7g1、自定义映射当我们映射 DTO 的时候,如果某些参数的值 MapStruct 的映射配置不能满足要求,可以使用自定义方法。新增两个 DTO 类:UserCustomDTO 类里面包含了 UserExtDTO 对象。/** * 微信公众号:Java技术栈 * @a原创 2021-10-30 21:45:24 · 193 阅读 · 0 评论 -
String 既然能这样性能调优,我直呼内行
String 身体解密想要深入了解,就先从基本组成开始……「String 缔造者」对String对象做了大量优化来节省内存,从而提升 String 的性能:Java 6 及之前数据存储在char[]数组中,String通过offset和count两个属性定位char[]数据获取字符串。这样可以高效快速的定位并共享数组对象,并且节省内存,但是有可能导致内存泄漏。❝共享 char 数组为啥可能会导致内存泄漏呢?String(int offset, i...原创 2021-10-30 21:44:13 · 106 阅读 · 0 评论 -
个人笔记,深入理解 JVM,很全(终于有人把JVM说清楚了)
01、前言刷豆瓣看到《深入理解 JVM》出第三版了,遂买之更新 JVM 知识,本文为笔记,仅供个人 Review02、Java 内存区域与内存溢出03、运行时数据区域参考:JVM 规范,Memories of a Java Runtime堆:JVM 启动时按-Xmx, -Xms大小创建的内存区域,用于分配对象、数组所需内存,由 GC 管理和回收方法区:存储被 JVM 加载的类信息(字段、成员方法的字节码指令等)、运行时常量池(字面量、符号引用等)、JIT 编译后的 Code原创 2021-10-30 21:43:15 · 862 阅读 · 0 评论 -
诡异的问题:Dubbo注册zookeeper协议时,出现了这种异常提示
遇到一个很诡异的问题,我在启动多个配置相同zookeeper的Dubbo项目时,其他项目都是正常启动,唯独有一个项目在启动过程中,Dubbo注册zookeeper协议时,竟然出现了这样的异常提示——Caused by: java.lang.IllegalStateException: zookeeper not connected at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(Cu原创 2021-10-30 21:41:20 · 551 阅读 · 1 评论