自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 @AutoWired和 @Resource原理深度分析!

依赖注入是一种常见的设计模式,用于实现控制反转(Inversion of Control, IoC)。在传统的编程中,类通常负责管理自己的依赖,而在 DI中,这种责任被转移到了外部容器(如 Spring容器)上,通过 DI,可以提高代码的可测试性和可维护性,因为依赖关系是通过配置而不是硬编码的。@Autowired是 Spring框架提供的注解,用于自动装配 bean。它可以用在构造器、方法、字段或参数上,Spring容器会通过类型匹配(byType)来注入依赖。@Autowired@Autowired和。

2024-10-27 18:38:43 810

原创 这是我拿下 Google一面的源码阅读技巧!

本文,我总结了一些自己阅读源码的经验,仅供大家参考。阅读源码是一个长期积累的过程,也是一个痛苦的过程,它比想象的要复杂得多,没有标准、系统的方法来训练这项技能。但是,只要我们不断练习读代码,找到适合自己的方法和工具,坚持突破,随着时间和经验的增长,你会发现自己阅读得越多速度就会越快而且越高效,对代码的理解也越深入。如果你有什么好的源码阅读方式,欢迎评论区留言,我们一起讨论,一起进步。

2024-10-19 10:25:37 917

原创 Kafka 为什么要抛弃 Zookeeper?

本文,我们分析了为什么 Kafka 要移除 ZooKeeper,主要原因有两个:ZooKeeper不能满足 Kafka的发展以及 Kafka想创建自己的生态。在面临越来越复杂的数据流处理需求时,KRaft 模式为 Kafka 提供了一种更高效、简洁的架构方案。不论结局如何,Kafka 和 ZooKeeper曾经也度过了一段美好的蜜月期,祝福 Kafka 在 KRaft模式越来越强大,为使用者带来更好的体验。

2024-10-16 09:15:19 1351

原创 JDBC存在什么问题?MyBatis是如何解决的?

本文,我们分析了 JDBC的核心组件,使用存在的问题以及 Mybatis如何解决这些问题,对于一些出道比较早或者接触过 JDBC老项目的Java程序员来说,对 JDBC的使用可能还有体感。而现在大部分项目,Hibernate和 Mybatis这些对象关系映射(ORM)框架对 JDBC做了很好的抽象和封装,提供了更加面向对象的数据库操作方式。因此,开发者不需要直接处理 JDBC的API,而是直接面向 ORM。

2024-10-12 10:58:59 1094

原创 农行1面:说说 final,finally,finalize的区别

本文我们详细地分析了finalfinally和finalize以及它们之间的对比,实际上它们之间没有什么直接关联,只是单词的前 5个字符相同,所以在很多面试题中,经常把它们放在一起进行对比。重点理解final关键字的使用重点掌握finally在异常处理中的使用finalize方法已经不再推荐,只需要了解。

2024-10-10 12:09:52 846

原创 什么是分布式缓存,它是如何工作的?

分布式缓存是指分布在多个服务器上的缓存。与本地缓存不同,分布式缓存通常部署在独立的应用进程中,并与应用进程部署在不同的机器上。因此,数据读写操作需要通过网络来完成。可扩展性:当应用程序需要处理大量数据或高并发请求时,可以通过增加服务器节点来扩展分布式缓存的容量和提高性能。数据一致性:分布式缓存的数据一致性可以通过各种技术实现,如缓存同步、分布式锁等。独立部署:分布式缓存通常部署在独立的应用进程中,与应用程序分离,多个应用可以直接共享缓存。

2024-09-27 09:22:52 878

原创 Python Tuples详解!

Python Tuples(元组)是类似于列表的一种集合,元组中存储的值可以是任何类型,并且它们通过整数索引。这篇文章,我们将深入地分析 Python Tuples(元组)。

2024-08-20 14:08:25 1026 1

原创 Long-Polling vs WebSockets 如何选择?

Long-Polling(长轮询)和 WebSockets 是客户端和服务器之间实时通信的两种常见方法

2024-08-19 09:13:30 1206

原创 如何设计 REST API?

REST API,全称 Representational State Transfer Application Programming Interface,它是一种基于 REST架构风格的应用程序编程接口。REST是一种用于构建分布式系统的架构风格,通过利用 HTTP协议来定义和访问资源。资源(Resource):在 REST中,资源是任何可以通过 URI(统一资源标识符)进行访问的对象或实体。资源可以是数据对象、服务、文件等。URI(统一资源标识符):每个资源都有一个唯一的 URI,用于标识资源。

2024-08-16 16:42:20 440

原创 Kafka ACK机制详解!

什么是 Kafka的 ACK机制?它是如何工作的?什么是 ISR? 它是如何工作的?ACK机制是如何在性能和可靠性之间权衡的?

2024-08-12 07:00:50 849

原创 什么是 Heap dump?Java 如何生成 Heap dump?

深度剖析 Head dump!

2024-08-10 16:36:08 998

原创 RocketMQ 是如何刷盘的?

RocketMQ 的刷盘机制通过同步刷盘和异步刷盘两种方式,确保消息在高性能和高可靠性之间找到平衡。理解其刷盘机制及源码实现,对于优化和调试RocketMQ系统具有重要意义。因此,还是建议有时间读读 RocketMQ的源码。

2024-08-05 08:00:00 1394

原创 深度剖析 RocketMQ 事务消息!

事务消息是为了保证分布式系统中消息的一致性而引入的一种消息类型。事务消息允许消息发送方在发送消息后,进行本地事务操作,并根据本地事务的执行结果来决定消息的最终状态(提交或回滚)。本文详细介绍了 RocketMQ 事务消息的基本流程,并通过源码分析揭示了其内部实现原理,尽管事务消息增加了系统的复杂性,但在需要保证消息一致性的场景中,它仍然是一种非常有效的解决方案,比如资金转账、订单处理、分布式事务、库存管理等场景。

2024-08-04 21:47:12 2051

原创 985的女实习生,将 DNS工作原理分析得太透彻了!

当我们在浏览器里面输入一个域名,浏览器是如何定位到远程的服务器?其中会经历哪些过程?

2024-05-26 10:15:12 837

原创 美团 2面:G1 为什么能替代 CMS收集器?看完这篇就懂了!

CMS 效力了18年,为什么会被官方废弃?G1有什么优点可以替代 CMS收集器?

2024-03-24 13:23:57 1289

原创 肝了一周,彻底弄懂了 CMS收集器原理,这个轮子造的真值!

网上关于 CMS的文章很多,为什么要重复造车轮?CMS已经被弃用,为什么还要分析它?JVM已自动化回收垃圾,为什么还要讲解 CMS?

2024-03-17 09:53:25 1060

原创 MySQL 所有锁机制已备好,请取用!

MySQL数据库锁设计的初衷是处理并发问题,保证数据安全。MySQL 数据库锁可以从下面 3个维度进行划分:按照锁的使用方式,MySQL锁可以分成共享锁、排它锁两种;根据加锁的范围,MySQL锁大致可以分成全局锁、表级锁和行锁三类;从思想层面上看,MySQL锁可以分为悲观锁、乐观锁两种;

2022-10-06 18:01:55 438 1

原创 如何解决spring @Value获取值为null的问题

很多时候,我们会使用到Spring的EL表达式,通过@Value("${xxx.xxx}")注解方式从属性文件中获取配置信息,但是,稍不注意,获取的值就为null,遇到这种问题需要怎么解决?

2022-09-02 10:00:47 6028

原创 DynamoDB系列之--几个核心的概念

DynamoDB作为亚马逊重磅推出的NoSql数据库,在亚马逊去Oracle数据库之后也开始在使用自家的DynamoDB,那么DynamoDB 有哪些核心的概念呢?

2022-08-26 15:56:29 506

原创 DynamoDB系列之--本地二级索引

DynamoDB的本地二级索引(DynamoDB Local Secondary Indexes)是什么?它有什么作用?

2022-08-26 15:53:13 1263

原创 程序员有必要掌握 TDD 吗?

你听过或者了解过 TDD 吗? 你知道 TDD 是什么吗?你知道它是如何工作的吗?

2022-08-04 13:31:15 1762

原创 深度剖析IO多路复用机制

什么是 IO多路复用?IO多路复用 解决了什么问题?你平时有使用过IO多路复用吗?

2022-07-31 20:09:03 502

原创 如何解决@Value取值为null

在使用springboot编写java代码时,经常会出现@Value()获取值为null,该如何解决这个问题呢

2022-06-20 17:11:08 1513

原创 DynamoDB 如何做in查询

DynamoDB是亚马逊内部一款功能强大的NoSql数据库,那么DynamoDB怎么实现和mysql一样的in查询呢?

2022-04-19 20:27:49 744

原创 手把手教你注册和备案域名

手把手教你注册和备案域名,让你拥有合法的个性域名

2022-04-17 16:30:37 3906

原创 源码解析Redis底层数据结构——简单动态字符串

Redis底层数据结构-简单动态字符串源码source/redis/src/sds.h定义简单动态字符串(SDS,simple dynamie String),Redis底层是C编写的,但是Redis并没有直接使用C语言的字符串类型,而是自己创建了一套新的字符串类型,下面为SDS源码定义:每个 sds.h/sdshdr 结构表示一个 SDS 值:struct sdshdr { // redis 3.0 int len; // 记录 buf 数组中已使用字节的数量,等于 SDS 所

2021-01-30 22:39:06 214 1

原创 Redis数据类型和底层数据结构概述

redis是典型的key-value存储的内存数据库,在工作中即便没有使用过,也应该多多少少听说过它,特别是在一些高流量,高并发的场景,更是离不开redis,redis已经慢慢成为了互联网技术的一个标配。说到redis的数据结构,我们可能会脱口而出:String(字符串),List(列表),Hash(哈希),Set(集合)和 Sorted Set(有序集合),其实这些只是 Redis 键值对中值的数据类型,也就是数据的保存形式,而这里要表达是redis的底层数据结构,也就是支撑数据类型的底层结构。简单.

2021-01-30 17:31:18 218 1

原创 Java常用日志框架总结

前言作为java程序员,在工作开发中遇到最多的一个问题就是打日志(log),好的日志方式可以帮助你事半功倍的监控线上程序运行的链路,出现bug时可以快速定位,但是,面对现如今众多的日志框架中,如何去选择哪个日志框架,成为困扰很多程序员的一个问题,他们的性能怎们样,他们有什么关系,今天我们就来把一把log的那些事…log框架及发展史Log4j: apache基于java的日志框架Log4j2: apache基于log4j的升级版本JUL: 2002年,java 1.4发布,定义了jav

2021-01-28 20:33:18 1374 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除