- 博客(53)
- 收藏
- 关注
原创 【面试】计算机网络
防止旧的重复连接初始化造成混乱在网络中,数据包可能会延迟或重复到达。如果只有两次握手,服务器无法区分当前请求是新的还是旧的重复连接请求。三次握手通过客户端的最后一次确认(ACK),确保连接是基于最新的请求建立的。假设客户端发送了一个 SYN 请求,但由于网络延迟,这个请求在连接关闭后才到达服务器。如果没有第三次握手,服务器可能会误认为这是一个新的连接请求,从而建立无效连接。通过第三次握手,客户端可以明确告知服务器这是对最新 SYN 请求的确认,避免旧请求干扰。确保双方都能发送和接收数据。
2025-03-11 03:33:29
1345
原创 【面试】JVM
Java中Stop-The-Vorld机制简称STW,是在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起。这是Java中一种全局暂停现象,全局停顿,所有java代码停止,native代码可以执行,但不能与JVM交互。不管选择哪种GC算法,stop-the-world都是不能彻底避免的,只能尽量降低STW的时长。为什么需要STW呢首先,如果不暂停用户线程,就意味着期间会不断有垃圾产生,永远也清理不干净。其次,用户线程的运行必然会导致对象的引用关系发生改变,这就会导致两种情况:漏标和错标。
2025-03-11 02:48:32
950
原创 【面试】Redis
Redis 提供了 Bitmaps 这个 “数据类型” 可以实现对位的操作。Bitmaps 本身不是一种数据类型, 实际上它就是字符串(key-value) , 但是它可以对字符串的位进行操作。Bitmaps 单独提供了一套命令, 所以在 Redis 中使用 Bitmaps 和使用字符串的方法不太相同。可以把 Bitmaps 想象成一个以位为单位的数组, 数组的每个单元只能存储 0 和 1, 数组的下标在 Bitmaps 中叫做偏移量。常用命令。
2025-03-11 01:57:52
1219
原创 【面试】框架
所谓的 IOC,就是控制反转的意思。何为控制反转?我们可以根据字面意思理解,就是对于某个东西A,原来的控制权在使用方B,B想用就能用,不想用就不用。现在把控制权交还给了A,只有A给了才能用,这样就是控制反转了。class A {}class B {// B需要将A的实例new出来,也就是我们说的控制当有了IOC后@Component // 说明A自己控制自己,把自己初始化出来,注入给了容器class A {}class B {// B不需要控制a,直接使用。
2025-03-10 23:40:57
1237
原创 【面试】Kafka
Kafka 的重平衡(Rebalance)机制是指在消费者组(Consumer Group)中,当消费者数量发生变化(如新增、减少或崩溃)时,Kafka 重新分配分区(Partition)给消费者的过程。重平衡的目的是确保每个分区只被组内的一个消费者消费,从而实现负载均衡和高可用性。消费者加入组:新的消费者加入消费者组。消费者离开组:消费者主动离开(如关闭)或崩溃。订阅主题变化:消费者组订阅的主题或分区数量发生变化。分区数量变化:主题的分区数量发生变化。重平衡的过程。
2025-03-10 16:37:56
1028
原创 【面试】Zookeeper
ZooKeeper 的核心特性高可用性:ZooKeeper 通过多节点集群实现高可用性,即使部分节点故障,服务仍然可用。一致性:ZooKeeper 使用 ZAB(ZooKeeper Atomic Broadcast)协议保证数据的一致性。顺序性:ZooKeeper 保证客户端的操作顺序与请求顺序一致。高性能:ZooKeeper 的设计目标是高吞吐量和低延迟。ZNode 的类型ZooKeeper 的数据模型类似于文件系统的树形结构,每个节点称为 ZNode。
2025-03-09 17:46:16
1323
原创 【面试】Java 多线程
什么是进程是包含了某些资源的内存区域,操作系统利用进程把它的工作划分为一些功能单元。电脑中时会有很多单独运行的程序,每个程序有一个独立的进程。例如微信,IDEA,GOOGLE等等。什么是线程进程中包含的一个或多个执行单元称为线程,线程只能归属一个进程,并且线程只能访问该进程拥有的资源。当操作系统创建一个进程,该进程会自动申请一个主线程作为首要的执行任务。线程的切换耗时小,把线程称为轻负荷线程。一个进程由一个或多个线程组成,彼此间完成不同的工作,多个线程同时执行,称为多线程进程和线程的关系。
2025-03-09 16:27:27
964
原创 【面试】MySQL
关系型数据库是基于关系模型(表结构)的数据库,数据以行和列的形式存储在表中,表与表之间通过关系(如主键和外键)连接。非关系型数据库是一种不基于关系模型的数据库,数据存储方式灵活,可以是键值对、文档、列族或图结构。数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。查看看某个表用了什么引擎:show create table 表名,在显示结果里参数engine后面的就表示该表当前用的存储引擎。
2025-03-09 14:55:58
1214
原创 【面试】Java 集合
① 集合判空判断所有集合内部的元素是否为空,使用 isEmpty() 方法,而不是 size()==0 的方式。② 集合转 Map在使用 java.util.stream.Collectors 类的 toMap() 方法转为 Map 集合时,一定要注意当 value 为 null 时会抛 NPE 异常。// 空指针异常③ 集合遍历不要在 foreach 循环里进行元素的 remove/add 操作。
2025-03-09 04:25:12
861
原创 【面试】Java 基础
泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。为什么使用泛型保证了类型的安全性在没有泛型之前,从集合中读取到的每一个对象都必须进行类型转换,如果不小心插入了错误的类型对象,在运行时的转换处理就会出错。消除强制转换。
2025-03-09 01:47:14
1007
原创 Swagger 常用注解
通过代码和注释自动生成文档。在 Swagger 框架下,开发人员可对服务进行归类说明,对方法,模型,返回结果等进行详细说明。
2023-05-30 19:00:29
5462
原创 Kafka 介绍和使用
Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,由Scala和ava编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
2023-02-21 15:07:14
1724
原创 Spring Cloud Gateway
微服务背景下,一个系统被拆分为多个服务,但是像安全认证,流量控制,日志,监控等功能是每个服务都需要的,没有网关的话,我们就需要在每个服务中单独实现,这使得我们做了很多重复的事情并且没有一个全局的视图来统一管理这些功能。一般情况下,网关可以为我们提供请求转发、安全认证(身份/权限认证)、流量控制、负载均衡、降级熔断、日志、监控、参数校验、协议转换等功能。上面介绍了这么多功能,实际上,网关主要做了两件事情:请求转发 + 请求过滤。
2023-02-16 14:36:56
908
原创 Redis 入门到精通
缓存就是数据交换的缓冲区(称作Cache),是临时存贮数据(使用频繁的数据)的地方。当用户查询数据,首先在缓存中寻找,如果找到了则直接执行,如果找不到则去数据库中查找。
2023-02-13 11:41:49
1414
1
原创 PageHelper 分页插件
pagehelper 是 mybatis 提供的分页插件,目前支持 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库。
2023-02-12 14:50:40
744
原创 p6spy 完整 SQL 打印
P6Spy 是一个框架,无需对现有应用程序进行任何代码更改,即可无缝拦截和记录数据库数据。通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析。
2023-02-10 14:20:27
1447
原创 Future & CompleteFuture
Java8 中的 completeFuture 是对 Future 的扩展实现, 主要是为了弥补 Future 没有相应的回调机制的缺陷。
2023-02-08 15:05:33
3587
3
原创 SpringBoot 整合 Druid
作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池。按照发展历程,业界知名的数据库连接池有以下几种:c3p0、DBCP、Tomcat JDBC Connection Pool、Druid 等。
2023-02-01 16:59:55
273
原创 Stream 管道流
在 java8 中添加了一个新的抽象,称之为 Stream,可以让程序员以一种声明式的方式处理数据,Stream流的处理方式,可以把要处理的元素看成一种流,流在管道中传输,并且在管道的节点上进行处理。
2023-01-17 10:59:44
1570
原创 Maven
Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。接下来我们就来介绍一下项目构建和依赖管理。
2023-01-13 16:11:42
743
原创 Spring Boot 整合 MyBatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
2022-12-28 10:42:18
139
原创 Spring Boot 整合 AOP
在 Spring 框架中有一个 AOP 子框架,自己创建了一套独有的表达式语言,通过这些表达式语言,可以轻松控制业务类中某些方法横切或植入新功能,以达到低耦合的效果。Spring AOP 底层用的就是动态代理,不用写动态代理代码。
2022-11-17 14:39:47
1328
原创 log4j2 日志介绍和使用
日志对于项目的重要性不言而喻,现在市面上的日志框架多种多样:Log4j、Log4j2、Slf4j、JDKLog、Logback 等等。Log4j 目前已经停止更新。Apache 推出了新的 Log4j2 代替 Log4j,Log4j2 是 Log4j 的升级,与其前身Log4j 相比有了显着的改进,并提供了许多 Logback 可用的改进,因此 Log4j2 + Slf4j 应该是未来的大势所趋。
2022-11-16 15:28:09
2228
原创 Mybatis 自动生成实体代码的 generator 插件(表转实体类)
Maven 是一个优秀的项目构建和管理工具,mybatis-generator 插件用于快速生成 xml 与实体。分为三步,第一步在 pom.xml 中添加依赖,第二步创建 generatorConfig.xml,第三步运行执行命令生成代码
2022-11-15 14:15:17
756
原创 Spring Boot 整合 Canal
canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。
2022-11-09 16:41:51
10651
原创 JVM运行时数据区域
Java 虚拟机在执⾏ Java 程序的过程中会把它管理的内存划分成若⼲个不同的数据区域。JDK1.8 和之前的版本略有不同。
2022-09-02 11:44:10
1138
原创 Spring Boot 容器化 docker 命令
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。...
2022-08-01 17:08:38
812
原创 VMware 虚拟机安装与使用
VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMware采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。...
2022-07-07 16:01:25
63125
9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅