java
文章平均质量分 90
90后小伙追梦之路
本人从事京东程序员5年!喜欢学习java的朋友可以一起学习,我会分享很多经验知识!喜欢的朋友可以点点关注!后台小信封【999】撩我领取java进阶学习资料!
展开
-
【并发进阶】4000千字带你全面解析Java线程池原理
我们先简单的复习一下线程池参数及流程最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、...原创 2022-08-29 21:21:11 · 116 阅读 · 0 评论 -
分布式消息通信之Kafka的实现原理
当然,每个分区只能由同一个消费组内的一个consumer来消费.如下图所示,分别有三个消费者,属于两个不同的group,那么对于firstTopic这个topic来说,这两个组的消费者都能同时消费这个topic中的消息,对于此事的架构来说,这个firstTopic就类似于ActiveMQ中的topic概念。从前面的整个演示过程来看,只要不是超大规模的使用kafka,那么基本上没什么大问题,否则,对于kafka本身的运维的挑战会很大,同时,针对每一个参数的调优也显得很重要。所以需要借助一些开源中间件来解决。.原创 2022-08-29 21:17:04 · 574 阅读 · 0 评论 -
为了拿捏后端打工人都要会的 Redis 数据结构,我画了 20 张图
除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效地处理。因此,这次我们就来好好聊一下 Redis 数据结构,这个在面试中太常见了。注意,Redis 数据结构并不是指 tring(字符串)、List(列表)、Hash(哈希)、Set(集合)和 Zset(有序集合),因为这些是 Redis 键值对中值的数据类型,并不是数据结构。这些数据类型的底层实现的方式,才是数据结构。...原创 2022-08-29 21:12:26 · 228 阅读 · 0 评论 -
从零开始自己动手写阻塞队列
在我们平时编程的时候一个很重要的工具就是容器,在本篇文章当中主要给大家介绍阻塞队列的原理,并且在了解原理之后自己动手实现一个低配版的阻塞队列。// 用于保护临界区的锁// 用于唤醒取数据的时候被阻塞的线程// 用于唤醒放数据的时候被阻塞的线程// 用于记录从数组当中取数据的位置 也就是队列头部的位置// 用于记录从数组当中放数据的位置 也就是队列尾部的位置// 记录队列当中有多少个数据// 用于存放具体数据的数组复制代码。...原创 2022-08-29 20:56:41 · 97 阅读 · 0 评论 -
2022年Java面试题目收集整理归纳(持续更新)
Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、10、Elasticsearch 中的节点(比如共 20 个),其中的 10 个选了一个master,另外 10 个选了另一个 master, 怎么办?Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、10、什么是原子操作?...原创 2022-08-29 20:46:21 · 331 阅读 · 0 评论 -
【kafka源码】kafka分区副本的分配规则
创建Topic的时候 是用的是一个无序的map对象新增分区的时候 是将Broker List 作了排序执行分区副本重分配任务, 也是将BrokerList做了排序这里 在创建的地方没有做排序 不知为何,在我看来,完全可以在创建Topic的时候也做好排序;不知为何这里是 一个无序的Map 这里应该是一个bug,这里应该是需要有序的 请看分析这个bug,你中招了吗!!!...原创 2022-08-29 16:30:46 · 758 阅读 · 0 评论 -
8分钟,复习一遍红黑树
*** 红黑树节点定义**/// 颜色T key;// 关键字(键值)// 左孩子// 右孩子// 父结点}}"(R)":"B");}}复制代码。原创 2022-08-29 16:28:19 · 409 阅读 · 0 评论 -
高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀
很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就更别提如何构建高并发系统了!究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构,结合高并发专题下的其他文章,学以致用。...原创 2022-08-29 16:08:03 · 370 阅读 · 0 评论 -
阿里 P9 耗时 28 天,总结历年亿级活动高并发系统设计手册
在这个电商的时代,如何运用自如的使用高并发秒杀系统,提升秒杀的性能,只有系统稳定了,无论是低峰、高峰的流量都是可以控制住的。最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、...原创 2022-08-29 16:02:30 · 303 阅读 · 0 评论 -
无经验都能看懂的java虚拟机内存区域划分
好比我们上面说的math对象,我们假设我们是一个web应用程序,main线程执行完之后程序不会结束,但是main方法结束了,那么main()方法栈帧会被释放,局部变量会被释放,但是局部变量对应的堆中的对象还是依然存在的,但是又没有指针指向它,那么它就是一个垃圾对象,那就应该被回收掉了,之后如果还会new Math对象,也不会用这个之前的了,因为已经无法找到它了,如果留着这个对象只会占用内存,显然是不合适的。第三部分对齐填充并不是必然存在的,也没有特别的含义,它仅仅起着占位符的作用。...原创 2022-08-29 15:37:20 · 143 阅读 · 0 评论 -
多家大厂 JAVA 面试题整理分布式 + 微服务 + 高并发 + 性能优调 + 框架源码
Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。原创 2022-08-28 16:18:33 · 260 阅读 · 0 评论 -
java 大厂面试指南:性能优化 + 微服务 + 并发编程 + 开源框架 + 分布式
秋招面试,我相信有人欢喜有人愁,大厂的面试题千奇百怪,不知道他会问到哪方面的知识点,我也是秋招大部队里面的一员,给大家整理出了 18 个大厂经常会问到 200 多道面试问题,涉及的知识点有,性能优化,微服务,并发编程,开源框架,分布式,等等。...原创 2022-08-28 16:14:58 · 512 阅读 · 0 评论 -
前阿里 P8 狂总结出 1000 页 Java 面试核心原理 + 框架篇笔记
本内容是 10 年毕业的学长,他开始在字节跳动,后来去了阿里,以下是他最近的面试经历,Java 开发五年也是瓶颈期的:我最近从一线大厂阿里离职之后在杭州呆了二十多太难,在这之前已经准备了一个多月吧,从六月份开始向公司投简历面试,现在是 Java 中高级的职位,截止今天已经面试了 22+公司了,也收到了一些意向的 offer。每个阶段都需要有个总结,现在金九银十就要来了,抽了一天出来,将这些面试题总结了一下(由于时间,就将大概都会问到的系统的总结了一下)。...原创 2022-08-28 16:01:23 · 151 阅读 · 1 评论 -
Java 面试被问框架源码看过吗?70 道 SSM 面试题及学习笔记值得收藏
最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、Elasticsearch、Kafka、微服务、Linux等等。...原创 2022-08-28 15:51:23 · 375 阅读 · 1 评论 -
阿里 P8 用这 5 大核心技术 +10 大高级框架 +200 个案例构建亿级流量并发
必备基础:无 最佳搭配:有软件开发经验。原创 2022-08-28 15:28:23 · 195 阅读 · 0 评论 -
内行看门道,外行看热闹。阿里 P8 大咖离职带出内网专属“高并发系统设计”学习笔记,涨薪跳槽 10k 不成问题吧?
通过以上七个步骤,我想你应该能够从中获益良多,掌握高并发系统设计的精髓!从基础出发,由浅入深,从七个方面(基础+数据库+缓存+消息队列+分布式服务+维护+实战)去带领大家去学习高并发系统设计!先带你建立对高并发系统设计的直观理解,再以最简单架构逐步演进到支撑百万、千万并发的分布式架构为案例,带你解决这个过程中遇到的痛点问题,提升业务处理能力,真正完成一次系统演进,最后结合实战优化整体设计思路。...原创 2022-08-26 15:39:02 · 184 阅读 · 0 评论 -
多线程&高并发(全网最新:面试题 + 导图 + 核心学习笔记)面试手稳心不慌,轻松拿下 offer,秋招跳槽求职者福音
多线程与高并发面试题(基础部分)你如何确保 main()方法所在的线程是 Java 程序最后结束的线程?ThreadLocal 原理ThreadLocal 内存结构图什么是死锁(Deadlock)?如何分析和避免死锁?什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?什么是线程池?如何创建一个 Java 线程池?什么是并发容器的实现?Executors 类是什么?说说 CountDownLatch 与 CyclicBarrier 区别多线程与高并发面试题(高级进阶部分)...原创 2022-08-26 15:35:13 · 158 阅读 · 0 评论 -
【架构视角】一篇文章带你彻底吃透Spring
也可以说,依赖被注入到对象中。功能增强 本身就是在做 简化,例如声明式简化,像声明式编程,使用者只需要告诉框架他要什么,不用管框架是如何实现的。Bean管理 本身就是在做 解耦,解除耦合,这个解耦指 Bean 和 Bean 之间的关联关系,Bean 之间通过接口协议互相串联起来的,至于每个接口有多少个实现类,那都不会有任何影响,Bean 之间只保留单点通道,通过接口相互隔离,关系都交给 Spring 管理,这样就避免了实现类和实现类之间出现一些耦合,就算方法增减了、引用变更了也不至于互相污染。...原创 2022-08-26 15:30:35 · 115 阅读 · 2 评论 -
深入了解 Spring 之 Spring Batch 框架
partitionHandler 是将 stepExecutionSplitter 拆分后的子 StepExecution 集合进行执行,我们可以如下类图,在 TaskExecutionParitionHandler 中包含了一个 Step 属性,意味着多次执行属性 step 对象的动作的。在讲解 Step 之前,需要对其 StepHandler 接口进行解读,因为 Job 并不是直接调用 Step 的实现类的,而是通过 StepHandler 的实现类去调用 Step 的实现类的;后面抽出来进行解读;..原创 2022-08-26 14:52:54 · 1121 阅读 · 1 评论 -
10 分钟彻底理解 Redis 的持久化和主从复制
上面讲了一大堆Redis的持久化机制的知识,其实,如果你只是单纯把Redis作为缓存服务器,那么可以完全不用考虑持久化,但是,在如今的大多数服务器架构中,Redis的单单只是扮演一个缓存服务器的角色,还可以作为数据库,保存我们的业务数据,此时,我们则需要好好了解有关Redis持久化策略的区别与选择。其实,只要稍微有点计算机基础知识的人都知道,存储在内存当中的数据,只要服务器关机(各种原因引起的),内存中的数据就会消失了,不仅服务器关机会造成数据消失,Redis服务器守护进程退出,内存中的数据也一样会消失。.原创 2022-08-26 14:08:39 · 232 阅读 · 0 评论 -
数据库分库分表,何时分?怎样分?
今天来跟大家分享的是数据库分库分表,何时分?怎样分?原创 2022-08-25 15:26:54 · 1054 阅读 · 0 评论 -
一篇搞完SpringCloud面试(两万字)
构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控。原创 2022-08-25 15:20:57 · 176 阅读 · 0 评论 -
分布式环境下,互斥性与幂等性问题,分析与解决思路
在分布式环境中,操作互斥性问题和幂等性问题非常普遍。经过分析,我们找出了解决这两个问题的基本思路和实现原理,给出了具体的解决方案。针对操作互斥性问题,常见的做法便是通过分布式锁来处理对共享资源的抢占。分布式锁的实现,很大程度借鉴了多线程和多进程环境中的互斥锁的实现原理。只要满足一些存储方面的基本条件,并且能够解决如网络断开等异常情况,那么就可以实现一个分布式锁。目前已经有基于Zookeeper和Redis等存储引擎的比较典型的分布式锁实现。原创 2022-08-25 14:51:54 · 246 阅读 · 0 评论 -
面试反馈 Spring Cloud 的25连环炮
上周,一位朋友在面试被问到了Spring Cloud,然后结合他的反馈,今天我们继续走起SpringCloud面试连环炮。下面是一张Spring Cloud核心组件关系图:从这张图中,其实我们是可以获取很多信息的,希望大家细细品尝。下面是和核心组件的总结:话不多说,我们直接开始 Spring Cloud 连环炮。Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。原创 2022-08-25 14:47:48 · 122 阅读 · 0 评论 -
SpringBoot 实现接口幂等性的 4 种方案
如果不存在,就以该 Key 作为 Redis 的键,以下游关键信息作为存储的值(例如下游商传递的一些业务逻辑信息),将该键值对存储到 Redis 中 ,然后再正常执行对应的业务逻辑即可。上面只是给与一些建议,再次强调一下,实现幂等性需要先理解自身业务需求,根据业务逻辑来实现这样才合理,处理好其中的每一个结点细节,完善整体的业务流程设计,才能更好的保证系统的正常运行。注意,在并发情况下,执行 Redis 查找数据与删除需要保证原子性,否则很可能在并发下无法保证幂等性。原创 2022-08-25 14:28:18 · 193 阅读 · 0 评论 -
RabbitMQ 七种消息传递形式
一图胜千言,如下:这张图中涉及到如下一些概念:生产者(Publisher):发布消息到 RabbitMQ 中的交换机(Exchange)上。交换机(Exchange):和生产者建立连接并接收生产者的消息。消费者(Consumer):监听 RabbitMQ 中的 Queue 中的消息。队列(Queue):Exchange 将消息分发到指定的 Queue,Queue 和消费者进行交互。路由(Routes):交换机转发消息到队列的规则。原创 2022-08-24 14:58:20 · 2811 阅读 · 0 评论 -
全面梳理 Spring Boot 日志体系
之前录过一个视频和大家分享 Spring Boot 日志问题,但是总感觉差点意思,因此松哥打算再通过一篇文章来和大家捋一捋 Java 中的日志问题,顺便我们把 Spring Boot 中的日志问题也说清楚。原创 2022-08-24 14:36:12 · 230 阅读 · 0 评论 -
新来个技术总监,把 RabbitMQ 讲的那叫一个透彻,佩服。
常见的消息队列很多,主要包括 RabbitMQ、Kafka、RocketMQ 和 ActiveMQ,相关的选型可以看我之前的系列,原创 2022-08-24 14:20:30 · 177 阅读 · 0 评论 -
横贯八方揭秘RabbitMQ、RocketMQ、Kafka 的核心原理(建议收藏)
今天我们通过一篇文章来认识一下常见消息队列RabbitMQ、RocketMQ、Kafka。原创 2022-08-24 14:14:19 · 286 阅读 · 0 评论 -
美团一面:线程崩溃了,进程也会崩溃吗?
那么线程崩溃后,进程是如何崩溃的呢,这背后的机制到底是怎样的,答案是信号,大家想想要干掉一个正在运行的进程是不是经常用 kill -9 pid 这样的命令,这里的 kill 其实就是给指定 pid 发送终止信号的意思,其中的 9 就是信号,其实信号有很多类型的,在 Linux 中可以通过kill -l查看所有可用的信号。原创 2022-08-24 14:07:15 · 1475 阅读 · 1 评论 -
面试过阿里的P7大咖分享:180+道Java面试题目;含答案解析。
大厂常见问题通用问题Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象。因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM 的原创 2022-08-23 16:34:42 · 184 阅读 · 0 评论 -
金九银十进大厂必刷的Java面试题 (全彩版)
这些面试题全部在下面这个总共485页的PDF里面,内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技术栈,每个技术以及在PDF中的对应位置都截图在下文,大家可以先进行查看。可以分享给大家学习。最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、原创 2022-08-23 16:27:41 · 1205 阅读 · 0 评论 -
双非本科进不了大厂?阿里技术四面+交叉面+HR面,成功拿到offer
前两天,我收到了阿里巴巴的实习offer,从学长内推开始面试到拿到最后offer经历了4面技术、一面交叉面和一面HR面。经过了漫长的等待和几次几乎折磨的面试之后,终于拿到了实习offer。本人来自西南某双非本科学校,该校学的专业是物联网工程。我的专业与Java开发关系不大,学校也只教过一些简单的编程课,其余的编程相关知识都是自己在课余时间在实验室学习和自学的。技术不是大牛,项目做得多但是大部分都是自己练手的小项目或者一些有意思的小项目,没有接触过真正意义上的大项目。原创 2022-08-23 16:23:39 · 172 阅读 · 0 评论 -
腾讯一面:说一说 MySQL 中索引的底层原理
最近有很多读者要我出一些面试题的文章,一般我会给他一个老周整理的电子书,但有些读者反馈回来的面试题我觉得还是蛮经典的,而老周又在写系列的文章,本着对读者负责的态度,我会穿插写几篇我认为比较经典的面试题,让大家对这种经典问题不再是背八股文,而是深入底层原理以及数据结构。后续再碰到这类问题,不管哪个公司问的,你都会得心应手、从容不迫的回答。原创 2022-08-23 16:17:05 · 174 阅读 · 0 评论 -
领域驱动设计(DDD)靠谱么?
领域驱动开发的关注点在于领域模型,所有的考虑都应该从领域的角度出发,重心放在业务。领域模型必须能够精准地表达业务逻辑,领域模型需要在开发过程中不断被完善,并且能够指导工程师的开发工作。但是,现实往往并不如我们所预期的一样:国内关于 DDD 的最佳实践还是太少了除了知名的几个大厂以外很少看到有关于 DDD 的落地实践,最佳实践太少意味着,我们可以参考的资料就少,承担的项目失败的风险就大。DDD 中出现了很多新概念和术语。原创 2022-08-23 16:08:37 · 195 阅读 · 0 评论 -
Java线程池原理与源码详细解读,再也不怕面试问线程池了
在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多。那么有没有一种办法使执行完一个任务,并不被销毁,而是可以继续执行其他的任务呢?这就是线程池的目的了。原创 2022-08-22 16:14:22 · 407 阅读 · 0 评论 -
阿里巴巴大咖和你聊聊Java的几把JVM级锁
在计算机行业有一个定律叫"摩尔定律",在此定律下,计算机的性能突飞猛进,而且价格也随之越来越便宜, CPU 从单核到了多核,缓存性能也得到了很大提升,尤其是多核 CPU 技术的到来,计算机同一时刻可以处理多个任务。在硬件层面的发展带来的效率极大提升中,软件层面的多线程编程已经成为必然趋势,然而多线程编程就会引入数据安全性问题,有矛必有盾,于是发明了“锁”来解决线程安全问题。在这篇文章中,总结了 Java 中几把经典的 JVM 级别的锁。原创 2022-08-22 16:05:50 · 169 阅读 · 0 评论 -
用RocketMQ这么久,才知道消息可以这样写
在上一章节中,我们讲解了RocketMQ的基本介绍,作为MQ最重要的就是消息的使用了,今天我们就来带大家如何玩转MQ的消息。消息中间件,英文Message Queue,简称MQ。它没有标准定义,一般认为:消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。对于消息的处理处理速度快,RocketMQ可以达到单机10万+的并发。一般消息中间件都会有消息持久化机制和其他的机制确保消息不丢失。原创 2022-08-22 15:16:15 · 258 阅读 · 0 评论 -
Kafka 顺序消费线程模型的实践与优化
通过本文深度分析,我们已经认识到顺序消息会给消费吞吐量带来怎么样的影响,因此用户在业务的实现上不能重度依赖顺序消费去实现,能避免则避免,如果一定要使用到顺序消费,需要知道 Kafka 并不能保证严格的顺序消费,在消费组重平衡过程中很可能就会将消息的顺序性打乱,而且顺序消费会影响消费吞吐量,用户需要权衡这种需求的利弊。最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、原创 2022-08-22 14:58:30 · 308 阅读 · 0 评论 -
Dubbo应用无法重连zookeeper
海恩法则指出,每一起严重事故的背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。所以对测试环境的任何问题都要引起重视,从而把问题消灭在萌芽阶段。最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、原创 2022-08-22 14:42:13 · 1226 阅读 · 0 评论