自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

永远在路上

道阻且长

  • 博客(87)
  • 收藏
  • 关注

原创 一文彻底搞懂 volatile 和 synchronized 的区别

在Java多线程编程中,volatile和synchronized是两个常用的关键字,用于保证共享变量的可见性和线程安全。虽然它们都可以用于实现线程安全,但是它们的运行机制和使用方式有很大不同。

2024-04-11 10:51:44 676

原创 一文彻底搞懂 Redis 缓存与数据库一致性

一般的业务场景都是读多写少的,当客户端的请求太多,对数据库的压力越来越大,引入缓存来降低数据库的压力是必然选择,目前业内主流的选择基本是使用 Redis 作为数据库的缓存。但是引入缓存以后,对我们系统的设计带来了很大的挑战,其中缓存和数据库的数据一致性问题就是一个非常棘手的问题。

2024-04-10 16:33:32 1265

原创 一文彻底搞懂Elasticsearch

Elasticsearch是一个开源的分布式搜索和分析引擎,基于Apache Lucene构建,提供了全文搜索、结构化搜索、分析等功能。它主要用于实时搜索、日志和事件数据分析、全文搜索等场景。

2024-04-09 21:15:23 1063

原创 一文彻底搞懂Kafka

Kafka 是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由 LinkedIn 公司开发,使用 Scala 语言编写,目前是 Apache 的开源项目。

2024-04-08 21:03:24 752

原创 一文彻底搞懂JAVA 异常分类及处理

如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。

2024-04-07 18:34:34 699

原创 一文彻底搞懂Redis为什么快

Redis(Remote Dictionary Server)是一个开源的基于内存的数据结构存储系统,它支持多种数据结构,如字符串(Strings)、哈希表(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)等,并提供了丰富的操作这些数据结构的命令。

2024-04-06 13:56:51 549

原创 一文彻底搞懂synchronized实现原理

synchronized 是 Java 中实现线程同步的关键字,用于保护共享资源的访问,确保在多线程环境中同一时间只有一个线程能够访问特定的代码段或方法。它提供了互斥性、可见性和有序性三个基本特性,确保了线程间操作的原子性和数据的一致性。

2024-04-05 13:52:12 1220

原创 一文彻底搞懂ZooKeeper选举机制

ZooKeeper 是一个分布式的开源协调服务,它提供了一个高性能的分布式协调服务,用于构建分布式应用程序和服务。ZooKeeper 集群是由多个 ZooKeeper 服务器组成的,这些服务器协同工作以提供高可用性和可靠性。

2024-04-04 15:05:52 1454

原创 一文彻底搞懂分布式事务解决方案

分布式事务是指跨多个节点、多个数据存储或多个服务之间进行的事务操作。在分布式系统中,由于数据和服务的分散性,事务操作可能涉及多个资源,因此需要特殊的机制来确保事务的一致性、隔离性、原子性和持久性(ACID 特性)。

2024-04-03 18:05:59 1191

原创 一文彻底搞懂SpringMVC执行流程

Spring MVC 是 Spring Framework 的一部分,是一个基于 Java 的开源 Web MVC 框架,用于构建 Web 应用程序。它提供了一种轻量级的、灵活的方式来开发 Web 应用程序,并借助依赖注入和面向切面编程等技术来促进松耦合和高效的开发。

2024-04-02 18:26:27 1243

原创 一文彻底搞懂如何创建线程

java创建线程(Thread)的5种方式方式一:继承于Thread类方式二:实现Runnable接口方式三:实现Callable接口方式四:使用线程池方式五:使用匿名类

2024-04-01 19:29:41 875

原创 一文彻底搞懂 TSL 流程

TLS(Transport Layer Security)是 HTTPS 使用的加密协议,它的前身是 SSL(Secure Sockets Layer),用于在通信双方之间建立安全连接并保护数据的传输。

2024-03-31 19:37:53 878

原创 一文彻底搞懂并发容器

并发容器是一种用于多线程环境的数据结构,它们能够有效地处理并发访问和修改的问题。在多线程应用程序中,多个线程可能会同时访问和修改共享的数据结构,这可能会导致数据不一致、竞态条件和其他并发问题。并发容器通过实现特定的算法和机制来确保线程安全性,从而有效地管理共享数据结构的并发访问。

2024-03-30 18:47:34 892

原创 一文彻底搞懂spring循环依赖

Spring 中的循环依赖是指两个或多个 Bean 之间相互依赖,形成一个循环引用的情况。在 Spring 容器中,循环依赖通常指的是单例(Singleton)作用域的 Bean 之间的循环引用。

2024-03-29 21:57:51 934

原创 一文彻底搞懂常见IO模型

阻塞式 IO(Blocking IO):在进行 IO 操作时,用户线程会被阻塞,直到数据准备好或操作完成才会返回结果。这种模型下,用户线程需要等待IO操作完成后才能进行其他任务。

2024-03-28 20:09:20 1485

原创 一文彻底搞懂MySQL中事务的五种分类

事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全部成功完成,要么全部失败回滚,从而保证数据库操作一致性和完整性的重要机制,它确保了数据库在并发环境下的正确性和可靠性。

2024-03-27 18:53:52 1602

原创 一文彻底搞懂反射机制

反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能就是反射机制。也就是说通过反射机制,我们可以获取想要获取到的东西。

2024-03-26 17:51:41 892

原创 一文彻底搞懂Redis底层数据结构

Redis是一个基于内存的数据存储系统,它支持多种数据结构和数据类型,每种数据结构和数据类型都有其特定的用途和适用场景。

2024-03-25 11:28:08 1182 1

原创 一文彻底搞懂MySQL索引

MySQL索引是一种数据结构,用于提高数据库查询效率。它可以快速定位到表中符合特定条件的数据行,从而加快查询速度。索引通常是根据表中的一个或多个字段创建的,它们存储了对应字段值的排序方式和位置信息,使得数据库系统可以更快地定位到所需的数据行。

2024-03-24 16:26:07 732

原创 一文彻底搞懂HashMap

JDK 8 中 HashMap 的数据结构是数组+链表+红黑树。

2024-03-23 18:23:07 1233

原创 一文彻底搞懂背包问题

01背包、完全背包和多重背包问题都属于经典的背包问题,这些问题都可以通过动态规划来解决,它们在动态规划中有着不同的特点和解法,其中状态转移方程是解决这些问题的核心。通过填表的方式,逐步求解最优解,最终得到问题的解。

2024-03-22 16:24:15 474

原创 一文彻底搞懂虚拟内存

虚拟内存是一种内存管理技术,是虚拟的、逻辑上存在的存储空间。

2024-03-21 17:48:01 709

原创 一文彻底搞懂线程池

线程池是一种线程管理机制,用于管理和复用线程,以提高程序的性能和资源利用率。在多线程编程中,创建和销毁线程是一项开销较大的操作,因此通过线程池可以预先创建一定数量的线程,并维护一个线程队列,以便在需要时重复利用这些线程,从而避免不断地创建和销毁线程带来的性能开销。

2024-03-20 22:25:25 1107

原创 一文彻底搞懂分库分表

分库:从单个数据库拆分成多个数据库的过程,将数据散落在多个数据库中。分表:从单张表拆分成多张表的过程,将数据散落在多张表内。

2024-03-19 16:15:50 1199

原创 一文彻底搞懂select、poll、epoll之间的区别

select、poll 和 epoll 都是用于 I/O 多路复用的机制,它们的目的都是监视多个文件描述符,以确定是否有数据可读、可写或者发生了异常。

2024-03-18 11:23:44 937

原创 一文彻底搞懂进程间通信方式

每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)

2024-03-17 18:04:03 961

原创 一文彻底搞懂TIME_WAIT状态为什么等待2MSL的时长

MSL 指的是最大报文生存时间(Maximum Segment Lifetime),是 TCP 协议中的一个重要参数。它表示一个 TCP 报文在网络中能够存在的最长时间,通常以秒为单位。

2024-03-16 15:00:04 588

原创 一文彻底搞懂HTTP版本区别

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议。它的不同版本包括 HTTP/1.0、HTTP/1.1 和 HTTP/2.0,每个版本都有一些特定的特性和改进。

2024-03-15 17:53:02 947

原创 一文彻底搞懂OSI七层模型和TCP/IP四层模型

OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名“开放式系统互联通信参考模型”,是一个试图使各种计算机在全世界范围内互联为网络的标准框架。1983年,国际标准组织(ISO)发布了著名的ISO/IEC 7498标准,它定义了网络互联的7层框架,也就是开放式系统互联参考模型。

2024-03-14 17:54:54 4361

原创 一文彻底搞懂ThreadLocal

ThreadLocal 是 Java 中的一个特殊类,用于在多线程环境下实现线程局部变量。它为每个线程提供了独立的变量副本,使得每个线程都可以独立地修改自己的副本,而不会影响其他线程的副本。

2024-03-13 21:49:26 779

原创 一文彻底搞懂IO流

Java对数据的操作是通过流的方式,IO是java中实现输入输出的基础,它可以很方便的完成数据的输入输出操作,Java把不同的输入输出抽象为流,通过流的方式允许Java程序使用相同的方式来访问不同的输入、输出。

2024-03-12 18:06:01 1494

原创 一文彻底搞懂MySQL建表规范

文章目录1. 表设计规范2. 索引规范3. SQL语句规范4. 散表规范1. 表设计规范库名、表名、字段名使用小写字母,使用“_”分割,不超过12个字符。使用InnoDB存储引擎。存储精确浮点数使用DECIMAL替代FLOAT和DOUBLE。使用UNSIGNED存储非负数值,使用INT UNSIGNED存储IPv4。整形定义中不添加长度,例如使用INT而不是INT(4)。使用短数据类型,例如取值范围为0-80时,使用TINYINT UNSIGNED。不建议使用ENUM类型,使用TINYI

2024-03-11 17:22:29 786

原创 一文彻底搞懂MyISAM和InnoDB区别

MySQL 5.5版本之前,MyISAM引擎是MySQL的默认存储引擎,拥有全文索引、压缩和空间函数等特性,但其不支持事务和行级锁定,最致命的缺陷是崩溃后无法安全恢复数据。然而,自MySQL 5.5版本起,InnoDB成为MySQL的默认存储引擎,其强大的事务支持、行级锁定以及崩溃恢复功能成为用户的首选。

2024-03-10 18:22:59 345

原创 一文彻底搞懂OOM内存溢出问题

OOM是Out Of Memory的缩写。即内存溢出。OOM通常是由于程序消耗的内存超过了系统实际可用的内存资源,或者是内存泄漏导致的。OOM错误会导致程序异常终止,通常会在日志或控制台中输出相关错误信息,包括堆栈跟踪等,以便开发人员进行排查和修复。解决OOM问题通常需要对程序进行内存使用情况的分析,优化代码逻辑,释放不必要的内存资源,增加系统内存配置等措施。

2024-03-09 19:29:24 1459

原创 一文彻底搞懂死锁

死锁通常被定义为:如果一个进程集合中的每个进程都在等待只能由此集合中的其他进程才能引发的事件,而无限期陷入僵持的局面称为死锁。在许多应用中进程需要以独占的方式访问资源,当操作系统允许多个进程并发执行时可能会出现进程永远被阻塞现象,如两个进程分别等待对方所占的资源,于是两者都不能执行而处于永远等待状态,此现象称为死锁。

2024-03-08 16:51:33 1385

原创 一文彻底搞懂从输入URL到显示页面的全过程

用户输入URL后,浏览器经过URL解析、DNS解析、建立TCP连接、发起HTTP请求、服务器处理请求、接收响应并渲染页面、关闭TCP连接等步骤,最终将页面显示给用户。

2024-03-07 20:48:52 510

原创 一文彻底搞懂深拷贝和浅拷贝的区别

深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是在复制对象或数据结构时所使用的两种不同的拷贝方法,它们之间的区别主要在于拷贝的程度和对原始对象内部结构的影响。

2024-03-06 19:38:38 1841

原创 ASM入网小助手卸载(亲测可用)

点击Browse把C:\Windows\SysWOW64\IsAgent里边剩余无法删除的文件添加到Full path点击Delete File,这时候文件不会立即删除,需要重启,把所有文件都添加一遍,然后重启电脑,这个时候ASM已经不会自动启动了,然后去C:\Windows\SysWOW64\IsAgent看一下,如果还有IsAgent,把IsAgent文件夹删除即可。实习的时候装了公司的入网小助手,今天卸载的时候突然发现要密码,在网上搜寻半天解决方法都比较复杂,最后找到个解决办法,亲测可用。

2024-03-05 13:10:41 2045

原创 一文彻底搞懂Redis持久化

Redis持久化是指将Redis服务器中的数据保存到磁盘上,以防止数据在服务器重启时丢失。Redis提供了两种主要的持久化方式:RDB(Redis DataBase)和AOF(Append Only File)。这两种持久化方式可以分别或同时使用,以满足不同的需求和场景。Redis持久化不保证数据的完整性,有可能会丢数据。当Redis用作DB时,DB数据要完整,所以一定要有一个完整的数据源(文件、mysql),在系统启动时,从这个完整的数据源中将数据load到Redis中。

2024-03-04 10:50:57 935

原创 一文彻底搞懂TCP/IP、UDP、FTP、HTTP、HTTPS的基本原理

基本原理:HTTPS(Hypertext Transfer Protocol Secure,安全超文本传输协议)是在HTTP基础上加入了安全性支持的协议,HTTPS是HTTP协议的安全版本,使用SSL/TLS协议进行加密通信,保证数据在传输过程中的机密性和完整性。基本原理:UDP(User Datagram Protocol,用户数据报协议)是一种简单的面向无连接的传输层协议,它与TCP一样属于TCP/IP协议族的一部分。基本原理:TCP/IP是一组用于实现网络通信的协议族,它是互联网的基础协议。

2024-03-03 14:23:25 3356

空空如也

空空如也

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

TA关注的人

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