自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java代理模式

代理模式( Proxy ),给某一个对象提供一个,并由代理对象控制对原对象的引用。通常会通过代理对象来为原对象添加额外的功能。主要用于处理类或对象的组合。

2024-06-20 18:32:15 1604 1

原创 反射的原理和操作

反射在运行时,通过读取方法区中的字节码,来动态的找到其反射的类以及类的方法和属性等(实际上就是在运行时,根据全类型名在方法区找对应的类),用这些类型信息完成对该类实例的操作,其实就是直接使用类的一个逆向使用。在Java中,反射是指在运行时动态地获取、检查和操作类、对象、方法和属性的能力。与直接使用类相反,我们需要先获取到对象在方法区的类型信息,获取到类型信息后,我们就知道这个类的构造器、属性、方法、注解、子类、父类等等信息了,这个时候,我们就可以通过这些类型信息来回调处理对象,来完成自己想要的操作了。

2024-06-18 19:49:01 1376

原创 红黑树基本概念

通过对节点的颜色和结构进行调整,红黑树能够在插入或删除节点时自动重新平衡,以保持树的平衡性质。这种自平衡的特性使得红黑树在很多应用中被广泛使用,包括在标准库中的数据结构实现以及数据库、操作系统等领域。属性来确保树的平衡。它的名称来自于每个节点上的颜色标记,可以是红色或黑色。

2024-06-07 15:45:20 127

原创 Redis集群哨兵

Redis哨兵模式(Redis Sentinel)是用于实现Redis高可用性(High Availability)的一种解决方案。它通过引入哨兵进程来监控和管理Redis主从节点,以实现自动故障转移和节点恢复的功能。主从模式,当主节点宕机之后,从节点是可以作为主节点顶上来,继续提供服务的。但是有一个问题,主节点的IP已经变动了,此时应用服务还是拿着原主节点的地址去访问,这…于是,在Redis 2.8版本开始引入,就有了哨兵这个概念。

2024-06-06 13:15:18 246

原创 mysql索引

MySQL索引是一种用于提高数据库查询性能的数据结构。它是按照特定的算法和规则创建的,可以加速数据库的查询操作。索引以一种类似于字典的方式存储数据,并提供快速的数据检索能力。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。我们通常所说的索引,包括聚集索引、覆盖索引、组合索引、前缀索引、唯一索引等,没有特别说明,默认都是使用B+树结构组织(多路搜索树,并不一定是二叉的)的索引。

2024-06-06 10:24:00 933

原创 JVM运行时数据区域

java虚拟机再执行Java程序的时候把它所拥有的内存区域划分了若干个数据区域。这些区域有着不同的功能,各司其职。这些区域不但功能不同,创建、销毁时间也不同。有些区域为线程私有,如:每个线程都有自己的程序计数器,则程序计数器随着用户线程创建而创建,随其销毁而销毁。而有些区域是所有线程共有的,如堆是被所有线程所共有的。

2024-06-05 17:06:50 692 1

原创 Redis持久化

由了AOF重写缓存区的存在,当子进程完成AOF重写工作之后,它会向父进程发送一个信号,父进程在接到该信号之后,会调用处理函数,将AOF重写缓冲区中的所有内容写入到新AOF文件中(就是重写后的文件),这样重写后数据库状态就和服务器当前的数据库状态一致了。通过该功能,Redis 服务器可以创建一个新的 AOF 文件来替代现有的 AOF 文件,新旧两个 AOF 文件所保存的数据库状态相同,但新 AOF 文件不会包含任何浪费空间的冗余命令,所以新 AOF 文件的体积通常会比旧 AOF 文件的体积要小得多。

2024-05-07 00:27:59 728

原创 MySQL事务

MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。

2024-05-05 01:11:01 575

原创 Redis为什么快

高效的数据结构:Redis提供了多种高效的数据结构,如字符串、哈希表、列表、集合和有序集合等。高度优化的网络模型:Redis使用了高度优化的网络模型,采用非阻塞的I/O多路复用技术(如epoll、select等),能够高效地处理大量的并发连接。这使得Redis能够同时处理大量的客户端请求,提供快速的响应速度。异步操作:Redis支持异步操作,它将一些耗时的操作(如持久化、复制等)放在后台进行,不会阻塞主线程的执行。相比于传统的磁盘存储,内存存储具有更低的访问延迟,因为内存的读写速度比磁盘快得多。

2024-04-25 21:38:02 113

原创 线程的 run() 和 start() 有什么区别

调用 start() 方法是用来启动线程的,轮到该线程执行时,会自动调用 run();直接调用 run() 方法,无法达到启动多线程的目的,相当于主线程线性执行 Thread 对象的 run() 方法。一个线程对线的 start() 方法只能调用一次,多次调用会抛出 java.lang.IllegalThreadStateException 异常;run() 方法没有限制。原文链接:https://blog.csdn.net/meism5/article/details/90240272。

2024-04-25 21:26:19 115

原创 Runnable和Callable的区别

接口都用于创建可以在多线程环境中执行的任务。方法可以抛出受检查异常,调用者必须显式地处理这些异常或继续向上抛出。方法不能抛出任何受检查异常,只能捕获和处理异常。方法可以返回一个结果,该结果可以是任何类型。方法没有返回值类型。接口没有返回值,它的。

2024-04-25 21:12:56 99

原创 内存泄漏和内存溢出

内存泄漏(Memory Leak):内存泄漏指的是在程序中动态分配的内存空间,在不再需要时没有被正确释放或回收的情况。如果内存泄漏发生的次数足够多或泄漏的内存量足够大,最终会导致程序占用的内存不断增加,直到耗尽系统的可用内存,导致程序崩溃或系统变慢。内存溢出(Memory Overflow):内存溢出指的是程序在申请内存时,需要的内存超过了系统当前可用的内存空间。内存泄漏(Memory Leak)和内存溢出(Memory Overflow)是与计算机内存管理相关的两个术语,它们描述了不同类型的内存问题。

2024-04-25 18:49:27 169

原创 MySQL和Redis的区别和联系

MySQL和Redis是两个常见的数据存储系统,它们在功能、使用场景和数据模型等方面存在一些区别和联系。

2024-04-25 18:07:59 243

原创 左连接和右链接

全外连接(full join):返回左右表中所有的记录和左右表中连接字段相等的记录。左连接 (left join):返回包括左表的所有记录和右表中连接字段相等的记录。右连接(right join):返回包括右表的所有记录和左表中连接字段相等的记录。等值连接或者叫内连接(inner join):只返回两表相连相等的行。

2024-04-25 17:52:02 76

原创 B+索引和Hash索引的区别

3、Hash 索引不支持多列联合索引,对于联合索引来说,Hash 索引在计算 Hash 值的时候是将索引键合并后再一起计算 Hash 值,不会针对每个索引单独计算 Hash 值。③、Hash索引中存放的是经过Hash计算之后的Hash值,而且Hash值的大小关系并不一定和Hash运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算。2、Hash 索引是无序的,如果是范围查询检索,这时候 Hash 索引就无法起到作用,即使原先是有序的键值,经过 Hash 算法后,也会变成不连续的了。

2024-04-25 17:48:04 243

原创 乐观锁和悲观锁的区别

乐观锁(Optimistic Locking)和悲观锁(Pessimistic Locking)是并发控制中常用的两种策略,用于处理多个并发操作对共享资源的访问冲突。

2024-04-25 17:20:33 515

原创 线程和进程的区别

从上图可以看出:一个进程中可以有多个线程,多个线程共享进程的。

2024-04-25 15:59:12 229

原创 进程间的通信方式

在发送数据时,会分成一个一个独立的数据单元,也就是消息体(数据块),消息体是用户自定义的数据类型,消息的发送方和接收方要约定好消息体的数据类型,所以每个消息体都是固定大小的存储块,不像管道是无格式的字节流数据。所以,即使进程 A 和 进程 B 的虚拟地址是一样的,其实访问的是不同的物理内存地址,对于数据的增删查改互不影响。的通信模式就可以解决。,因为进程写入数据到内核中的消息队列时,会发生从用户态拷贝数据到内核态的过程,同理另一进程读取内核中的消息数据时,会发生从内核态拷贝数据到用户态的过程。

2024-04-25 15:45:48 925

原创 序列化和反序列化

(2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。总结:核心作用就是对象状态的保存和重建。反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。Java反序列化就是指把字节序列恢复为Java对象的过程。接口是一个标记接口,没有定义任何方法,它只是用于标识一个类可以被序列化。(1)Java序列化就是指把Java对象转换为字节序列的过程。接口,可以进行序列化和反序列化操作。接口来实现对象的序列化和反序列化。对象并进行序列化和反序列化操作。

2024-04-25 14:46:06 216

原创 操作系统中线程状态

转载 原文链接:https://blog.csdn.net/Elephant_King/article/details/122559577。线程run()、main()方法执行结束,或者因为异常退出了run()方法,则该线程结束生命周期。因为某种原因,线程放弃对CPU的使用权,停止执行,直到进入就绪状态在有可能再次被CPU调度。调用线程的start()方法,处于就绪状态。就绪状态是进入到运行状态的唯一入口。获得了CPU时间片,执行程序代码。死亡的线程不可再次复生。创建了一个新的线程对象。

2024-04-25 14:38:44 252

原创 Post和Get区别

OST和GET是HTTP协议中两种常见的方法(HTTP Methods),用于在客户端和服务器之间传输数据。

2024-04-25 14:17:41 143

原创 JVM 垃圾回收机制

老年代 GC(Major GC / Full GC):指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Minor GC(但非绝对的,在 ParallelScavenge 收集器的收集策略里就有直接进行 Major GC 的策略选择过程)。可达性分析算法(Reachability Analysis Algorithm)是一种主流的垃圾回收算法,用于确定哪些对象是可达的(被程序中的其他对象引用)并且不会被回收,以及哪些对象是不可达的(没有被引用)并且可以被回收。

2024-04-25 14:09:34 592

原创 Redis缓存更新策略(与数据库一致性问题)

一致性问题是指当数据库中的数据发生更新时,如何保证Redis缓存中的数据也能及时更新,以避免数据不一致的情况发生。

2024-04-10 23:11:00 223 1

原创 从0学线程/进程---------Linux关于线程/进程的命令

命令,但提供了更多的交互式功能和更友好的界面。可以使用包管理器(如。:实时显示系统中运行的进程的状态和资源占用情况。:根据进程名搜索进程,并返回与之匹配的进程ID。:用于显示当前运行的进程的状态。:以树状形式显示进程之间的父子关系。:用于终止一个进程。:用于修改正在运行的进程的优先级。:根据进程名终止匹配的进程。:用于设置进程的优先级。

2024-04-10 17:59:20 151 1

原创 从0学线程-----创建线程的方法

直接使用Thread。

2024-04-10 17:47:56 126 1

原创 并发&并行&异步调用

单核CPU下,线程实际是串行执行的。操作系统中有一个组件叫任务调度器,将CPU的时间片分给不同的线程使用。由于CPU切换非常快,人感觉这几个线程是同时运行的,这就是并发。concurrent。CPU中有多个核,虽然一个核依旧只能串行执行线程,但不同核之间是并行的。接下来准备多花时间学学JUC吧 加油~

2024-04-10 16:47:09 207 1

原创 线程池(接上篇)

(来自JavaGuide)

2024-04-10 16:20:32 207 1

原创 线程池基本概念

线程池是一种用于管理和复用线程的机制,它可以在多线程应用程序中有效地处理并发任务。Java中的线程池是通过包提供的Executor框架实现的。

2024-04-10 14:44:37 669 1

原创 数据库分库分表

水平切分(Horizontal Sharding):将单个数据库表的数据拆分成多个数据库实例中的多个表。例如,将用户订单表按照用户ID的范围划分成多个表,如订单表_1存储用户ID 1-10000的订单,订单表_2存储用户ID 10001-20000的订单,以此类推。例如,将用户基本信息存储在一个数据库实例中,将用户订单信息存储在另一个数据库实例中。它将数据分散存储在多个数据库实例(分库)和表中(分表),以提高系统的吞吐量和扩展性。不补充了 我真的需要会这个吗。

2024-04-09 11:38:11 177

原创 Redis数据类型(接上篇)

Redis 中的 HyperLogLog 是基于 Probabilistic Counting Algorithm (PCA) 的实现,它使用固定的内存大小来估计一个集合的基数,即集合中不同元素的数量。在 Redis 中,Bitmap(位图)是一种特殊的数据结构,用于存储位级别的数据,其中每个位(bit)可以表示一个布尔值(0 或 1)。Redis 的地理空间功能是基于经度和纬度坐标的,它使用地理哈希算法(Geohash)进行内部索引,以实现高效的地理位置查询。这次是真等考完再写了。

2024-04-08 19:22:57 814

原创 Redis数据类型

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。集合是一个无序的字符串集合,不允许重复的元素。通过使用哈希表作为底层实现,Redis能够提供高效的集合操作,例如添加元素、删除元素、检查元素是否存在、计算交集、并集和差集等。string 类型是二进制安全的。是一种键值对的集合,其中键和值都是字符串类型。

2024-04-08 17:48:59 681

原创 自旋锁和互斥锁

自旋锁是一种忙等待(Busy Waiting)的同步原语。当一个线程请求自旋锁时,如果自旋锁已经被其他线程持有,则该线程会一直忙等待(自旋)直到自旋锁可用。当一个线程请求互斥锁时,如果互斥锁已经被其他线程持有,该线程会被阻塞,直到互斥锁可用。互斥锁适用于保护临界区较大且执行时间较长的情况,因为线程在等待互斥锁时可以被置于休眠状态,不会浪费CPU资源。自旋锁(Spin Lock)和互斥锁(Mutex)都是并发编程中常用的同步机制,用于保护共享资源的访问,避免竞态条件(Race Condition)的发生。

2024-04-08 10:45:00 145

原创 Cookie和Session

因此,Cookie在这个过程中起到了存储和传递Session ID的作用。它允许服务器在不同的HTTP请求之间跟踪用户的会话,并保持用户的登录状态或其他会话相关的信息。通过Cookie中的Session ID,服务器能够将用户请求与特定的会话数据进行关联,实现会话管理和用户跟踪的功能。当用户第一次访问一个网站时,服务器会为该用户创建一个唯一的Session ID,并将其存储在一个Cookie中。在用户的后续请求中,浏览器会自动将Cookie中的Session ID作为Cookie标头的一部分发送回服务器。

2024-04-08 00:16:47 144

原创 HTTP不同版本

HTTP/1.0、HTTP/1.1和HTTP/2是HTTP的三个主要版本,它们在功能和性能方面有着不同的特点和改进。

2024-04-07 23:06:37 267

原创 HTTP/HTTPS

HTTP是一种应用层协议,用于在客户端和服务器之间传递和交换超文本数据,如HTML页面、图像、音频、视频等。它使用明文传输数据,不提供加密和身份验证功能。HTTP使用TCP作为传输协议,默认使用端口号80。HTTPS是在HTTP的基础上添加了安全性的协议。它通过在HTTP和TCP之间引入SSL/TLS协议,对数据进行加密和身份验证,确保传输的数据在网络上的安全性和完整性。HTTPS使用TCP作为传输协议,默认使用端口号443。

2024-04-07 22:52:29 233

原创 TCP/IP模型中的重要协议

RP(Address Resolution Protocol,地址解析协议)是TCP/IP协议族中的一种网络协议,用于将IP地址映射到物理MAC地址,以实现在局域网中的通信。ARP协议通过查询网络中其他主机的IP地址和MAC地址的映射关系,以找到目标主机的MAC地址。ARP请求与响应:当一个主机需要发送数据到另一个主机时,它首先检查目标主机的IP地址是否存在于其本地的ARP缓存中。ARP缓存:主机在收到ARP响应后,会将目标IP地址和对应的MAC地址存储在本地的ARP缓存中,以便后续的通信中可以直接使用。

2024-04-07 21:51:09 407

原创 Redis 缓存击穿 缓存穿透 缓存雪崩

缓存穿透指的是针对一个不存在的数据进行大量请求,导致这些请求都绕过缓存,直接访问数据库。缓存击穿指的是在高并发情况下,一个非常热门的数据项过期失效,而此时有大量的请求同时涌入,导致请求直接绕过缓存,直接访问数据库。缓存雪崩指的是在某个时间点,缓存层中大量的缓存数据同时失效,导致大量请求直接访问数据库。这种情况通常是由于缓存层的故障、过期时间设置不合理或者缓存数据的批量更新等原因引起的。Redis缓存是一种常用的缓存方案,但在某些情况下可能会出现缓存击穿、缓存穿透和缓存雪崩的问题。

2024-04-06 02:05:47 231 1

原创 TCP/IP四层模型

TCP/IP四层模型是一种网络协议体系结构,用于描述和组织计算机网络中的通信协议。它由四个层级组成,每个层级都提供了特定的功能和服务,以实现可靠的数据传输和网络通信。以下是对TCP/IP四层模型的简要介绍:网络接口层(Network Interface Layer):网络接口层是TCP/IP模型的最底层,负责处理物理网络和数据链路层的细节。它定义了如何在物理媒介上进行数据传输,包括电缆类型、物理连接和数据编码等。

2024-04-06 01:45:08 1865 4

原创 TCP四次挥手

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。但是在关闭连接时,当Server端收到Client端发出的连接释放报文时,很可能并不会立即关闭SOCKET,所以Server端先回复一个ACK报文,告诉Client端我收到你的连接释放报文了。只有等到Server端所有的报文都发送完了,这时Server端才能发送连接释放报文,之后两边才会真正的断开连接。故需要四次挥手。

2024-04-06 01:15:59 385

原创 TCP三次握手

TCP三次握手是建立TCP连接时使用的一种协议,用于确保通信双方之间的可靠数据传输。下面是TCP三次握手的步骤:第一次握手(SYN):客户端向服务器发送一个SYN(同步)报文段,其中包含了客户端的初始化序列号(ISN)和一些连接建立的参数。客户端进入SYN_SENT(同步已发送)状态,等待服务器的响应。第二次握手(SYN+ACK):服务器收到客户端的SYN报文段后,会发送一个带有SYN和ACK(确认)标志的报文段作为响应。该报文段中包含了服务器的初始化序列号(ISN)和一些连接建立的参数。

2024-04-06 00:50:20 926

空空如也

空空如也

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

TA关注的人

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