Kafka是数据和网络IO密集型组件,尤其是服务器端,基本要求就是数据传输和网络IO的高吞吐量和低系统开销。Kafka使用java NIO 封装了一套自己的底层网络层。从这些代码中,既可以看到基本的Java NIO的运行原理和使用方式,也能看到Kafka为了满足自身业务需求而进行的封装和扩展。本文从代码层面,详细解析Kafka底层网络层的具体实现。 如果不熟悉Java NIO的同学,可以参考IB
转载 2023-12-15 17:07:00
90阅读
今日内容说起集合,我们面试中问的比较多的问题除了List和Set,也就是Map相关的问题了。而Map中问到最多的也就HashMap了,看过HashMap源码的人都知道,源码里面确实有很多东西可以学习和研究,所以我们今天主要是来总结hashmap相关的问题~面试问题总结HashMap的底层数据结构 JDK1.7之前,HashMap的底层数据结构是数组+链表JDK1.8以后,HashMap的底层
转载 2023-11-28 23:25:16
65阅读
1. 概述在本教程中,我们将了解volatile关键字和Atomic类之间的区别以及它们解决的问题。首先,有必要知道Java如何处理线程之间的通信以及可能出现的意外问题。线程安全是一个关键主题,它提供了对多线程应用程序内部工作的深入了解。我们还将讨论争用条件,但我们不会太深入地讨论这个主题。2. 并发问题让我们举一个简单的例子来了解Atomic类和volatile关键字之间的区别。假设我们正在尝试
转载 2024-10-12 17:29:00
50阅读
 JOIN 语句原理join方式连接多个表,本质就是各个表之间数据的循环匹配。MySQL5.5版本之前,MySQL只支持一种表间关联方式,就是嵌套循环(Nested Loop Join)。如果关联表的数据量很大,则 join 关联的执行时间会非常长。在 MySQL5.5以后的版本中,MySQL 通过引入BNLJ算法来优化嵌套执行。驱动表(主表)和被驱动表(从表)驱动表就是主表,被驱动表就
一、synchronized的使用方式在语法上,要使用synchronized关键字,需要把任意一个非null对象作为"锁"对象,也就是需要一个对象
原创 2022-05-26 01:29:18
259阅读
IOC一、什么是IOC?IOC 底层原理二、IOC接口三、IOC 操作 Bean 管理1、什么是 Bean 管理2、IOC 操作 Bean 管理(基于 xml 方式)(1)基于 xml 方式创建对象(2)基于 xml 方式注入属性①第一种注入方式:使用 set 方法进行注入②第二种注入方式:使用有参数构造进行注入③补充(xml 注入其他类型属性)1、字面量2、注入属性-外部 bean3、注入属性
转载 2023-11-06 18:37:05
58阅读
底层数据结构HashMap是基于哈希表的Map接口的非同步实现。基于一个“链表散列”的数据结构,即数组和链表的结合体,此实现提供所有可选的映射操作,并允许使用null值和null键。HashMap储存的是键值对,HashMap很快。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的键 值
前言Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可以由String,hash,list,set,zset,Bitmaps,HyperLogLog等多种数据结构和算法组成。Redis还提供了键过期,发布订阅,事务,Lua脚本,哨兵,Cluster等功能。Redis执行命令的速度非常快,根据官方给的性能可以达到10w+qps。那么本文主要介绍到底Redis
Mysql的结构示意图如图所示: +++++++++++++++++++++++++++++++++++++++++++、 上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。 下面是关于上述部件的介绍: 1. connectors 与其他编程语言中的sql 语句进行交互,如php、java等。Management Serveic
spring ioc aop 动态代理 控制反转 依赖注入 spring 的2个核心技术:ioc/di:控制反转/依赖注入所谓IoC(控制反转),对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。  IoC的一个重点(DI 依赖注入)是在系统运行中,动态的向某个对象提供它所需要的其他对象(因此又叫D
转载 2023-06-19 03:25:58
54阅读
文章目录ArrayList实现原理初始化扩容方式add()方法实现接口线程安全与否LinkedList实现原理初始化add()方法实现接口线程安全与否总结:面试如何介绍ArrayList和LinkedList ArrayList实现原理初始化ArrayList的底层是一个动态数组,初始化时,ArrayList首先会对传进来的初始化参数initalCapacity进行判断:如果参数等于0,则将数组
转载 2024-06-04 07:45:51
32阅读
先来介绍一下自旋锁自旋锁        阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比用户代码执行的时间还要长。当同步资源的锁定时间很短时,为了这一小段时间去切换线程,可能会让系统得不偿。而为了让当前线程“稍等一下”
 SpringMVC概述 什么是Spring MVC SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC框架.MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化、等等),而且使用简单,与Spring无缝集成。 支持 RESTful风格的 URL 请求 。采用了松散耦合可插拔组件结构,比其他 MV
转载 2024-03-28 16:50:45
74阅读
实现数据交互的。其实axios和fetch都是基于XMLHttpRequest(XHR)和浏览器内置的fetch API的封装。XHR是一个JavaScript对象,允许浏览器与服务器进行异步通信。
原创 2023-07-23 00:01:05
73阅读
众所周知,Java的特点是跨平台性说着不屑一顾,谁不明白Java跨平台?我当时就是这样一种心态,可当我简单的使用一个FileInputStream时,读出来一堆乱码。如图所示: 明明是最简单的读取然后输出,怎么这都能出错?其实这一切都是Java底层编码惹的祸。编码Java是一个跨平台的高级程序编程语言。这个跨平台性怎么实现的呢?首先为什么能在每个平台运行,首先归功于Java JDK。JD
转载 2023-07-15 14:19:32
86阅读
MySQL 中的 Hash 索引Hash 索引与 B+ 树索引的区别Hash 索引不能进行范围查询,而 B+ 树可以。这是因为 Hash 索引指向的数据是无序的,而 B+ 树的叶子节点是个有序的链表。Hash 索引不支持联合索引的最左侧原则(即联合索引的部分索引无法使用),而 B+ 树可以。对于联合索引来说,Hash 索引在计算 Hash 值的时候是将索引键合并后再一起计算 Hash 值,所以不会
原创 2021-02-19 20:31:06
503阅读
JVM原理1、JVM的体系结构jvm:java虚拟机 java语言之所以可以实现跨平台(不同的操作系统) 就是因为有jvm虚拟机虚拟机 :基于操作系统上的虚拟的主机 java之所以可以跨平台 也是因为每个操作系统都可以安装虚拟机2、双亲委派机制在介绍双亲委派机制的时候,不得不提ClassLoader(类加载器)。说ClassLoader之前,我们得先了解下Java的基本知识。 Java是运行在Ja
转载 2023-10-05 11:13:19
55阅读
Java中,反射(Reflection) 是一种强大的机制,允许程序在运行时动态地获取类的信息(如类名、方法、字段等),并调用其方法或修改其属性。反射的底层实现原理涉及到JVM的类加载机制和元数据存储结构。以下是详细的分析:1. 反射的核心概念反射的核心是java.lang.Class类和java.lang.reflect包中的类(如Field、Method、Constructor等)。这些类提
原创 6月前
140阅读
Eureka原理简介 Eureka 是一种基于 REST(表述性状态传输)的服务,主要用于 AWS 云中,用于定位服务,以实现中间层服务器的负载平衡和故障转移。 我们称此服务为 Eureka 服务器。 Eureka 还附带了一个基于 Java 的客户端组件,即 Eureka 客户端,这使得与服务的交互更加容易。 客户端还有一个内置的负载均衡器,可以进行基本的循环负载均衡。eureka架构图Eure
文章目录注解获取属性值的底层实现注解的工作原理 注解获取属性值的底层实现JVM会为注解生成代理对象. 注意注解的生命周期都要设置为runtime 程序运行时, 设置如下的jvm参数, 保存生成的代理对象成为文件-Djdk.proxy.ProxyGenerator.saveGeneratedFiles=true 只获取成员属性的值. 运行上面的main方法后 , 生成的代码如下 在生成的代理对象
  • 1
  • 2
  • 3
  • 4
  • 5