- 博客(44)
- 收藏
- 关注
原创 数据库索引设计原则与失效情况
在数据库设计和优化中,索引是一项至关重要的技术手段。它可以极大地提升查询效率,加快数据检索速度,但同时也需要遵循一些原则以及注意避免一些情况,以防止索引失效。
2024-02-08 21:48:17 474
原创 MySQL索引
在数据库系统中,索引是提高数据检索效率的关键。而MySQL的InnoDB存储引擎采用了B+树作为索引的数据结构,为数据库的高效运行提供了重要支持。本文将深入探讨InnoDB引擎的B+树实现,以及其带来的诸多优势。
2024-02-08 21:44:51 355
原创 redis是单线程的,但是为什么还那么快?
Redis(Remote Dictionary Server)作为一种开源的内存数据存储系统,以其卓越的性能和快速的响应时间成为流行的键值存储数据库。尽管它被称为单线程的数据库,但却能够实现惊人的性能。
2024-02-02 18:24:44 495
原创 Redis数据淘汰策略
Redis作为一种高性能的键值存储数据库,通常用于缓存和提高数据检索速度。然而,由于内存资源有限,当内存不足以容纳所有数据时,Redis就需要采取一些策略来删除部分数据,以确保新的数据能够被写入。这就引入了数据淘汰策略,Redis提供了8种不同的淘汰策略,每一种都有其独特的应用场景。
2024-02-02 18:19:50 660
原创 Redis数据过期策略
在Redis中,对数据设置有效时间是常见的需求,而数据过期后需要从内存中删除。为了实现这一目标,Redis采用了不同的数据删除策略,主要包括惰性删除和定期删除。本文将深入探讨Redis的数据过期策略,分别介绍惰性删除和定期删除,并探讨它们的优缺点以及如何配合使用。
2024-01-26 16:51:03 74
原创 Redis数据持久化:RDB与AOF对比及配置详解
在Redis中,作为缓存的数据持久化是至关重要的。为了实现数据的持久性,Redis提供了两种主要的持久化方式:RDB(Redis Database Backup)和AOF(Append-Only File)。本文将深入探讨这两种方式的原理、配置及优缺点。
2024-01-26 16:47:33 83
原创 缓存穿透、缓存击穿和缓存雪崩的解决方案
在缓存技术中,常常会遇到一些问题,如缓存穿透、缓存击穿和缓存雪崩。这些问题可能导致系统性能下降、数据库压力增大等,因此有必要了解这些问题的解决方案。
2024-01-18 16:51:24 389
原创 事务的四个特性、四个隔离级别以及数据库的常用锁
事务的四大特性,通常被称为ACID特性,是数据库管理系统(DBMS)确保事务处理的关键属性。
2023-12-11 21:38:38 1196 1
原创 ELK的日志解决方案
进入容器的ik/config文件<? <?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd" > < properties > < comment > IK Analyzer 扩展配置 </ comment > <!--用户可以在这里配置自己的扩展字典 --> < entry key = " ext_dict " > </ entry > <!
2023-12-06 21:27:48 1933
原创 线程池,及7大参数,4大拒绝策略详解
Java中线程池的核心实现类是ThreadPoolExecutor,可以通过该类地构造方法来构造一个线程池。
2023-12-05 21:43:16 1073
原创 @Scheduled,Quartz,XXL-JOB三种定时任务总结
Quartz是一个开源的、功能强大且灵活的作业调度框架,它支持复杂的调度需求,作业持久化、集群部署等功能。它允许你按照设定的时间规则执行特定的任务,例如定时执行、循环执行、间隔执行等。Quartz可以与Spring等框架无缝集成,被广泛应用于企业级应用中。XXL-JOB是一个分布式任务调度平台,用于在分布式系统中进行任务调度和管理。XXL-JOB提供了可视化的任务管理界面、任务的动态添加、修改、删除等功能。它支持分布式部署,并提供了任务执行日志、任务运行状态等监控功能。
2023-12-04 21:36:29 2914
原创 docker内容整理
检查之前是否安装过docker,如果有使用yum remove docker卸载安装yum工具配置阿里云镜像,添加docker引擎的yum源更新CentOS列出docker源安装docker检查docker版本号启动docker,并设置自启配置本地镜像库从默认网络获取docker镜像太慢,为了提高速度,可以配置国内的镜像库,可同时配置多个配置完成之后重启docker设置docker的静态ip目的:解决docker运行过程中ip的固定。
2023-12-03 22:31:42 2085
原创 docker配置redis插件
bloom filter作者未编译打包,需要自行编译。将编译好的插件拷贝到docker的redis容器中。拷贝libredis_cell.so文件到容器中。进入文件夹,查看文件,里面有Makefile文件。在linux中解压插件。检查插件是否安装成功。输入make进行编译。
2023-12-03 21:14:04 499
原创 docker搭建nginx实现负载均衡
查询安装准备创建一个空的nginx文件夹里面在创建一个nginx.conf文件和conf.d文件夹运行映射之前创建的文件夹端口:8075映射80。
2023-12-03 19:53:20 891
原创 synchronized的实现原理
大佬写的太好了建议看大佬的。在了解关键字的底层原理前,需要先简单了解下Java的内存模型,看看关键字是如何起作用的。这里的本地内存并不是真实存在的,只是Java内存模型的一个抽象概念,它包含了控制器、运算器、缓存等。同时Java内存模型规定,线程对共享变量的操作必须在自己的本地内存中进行,不能直接在主内存中操作共享变量。这种内存模型会出现什么问题呢?该问题Java内存模型是通过关键字和volatile关键字就可以解决,那么关键字是如何解决的呢,其实进入块就是把在。
2023-11-30 21:50:18 778
原创 拦截器、过滤器、AOP的区别和联系md
过滤器,顾名思义就是起到过滤筛选作用的一种事物,只不过相较于现实生活中的过滤器,这里的过滤器过滤的对象是客户端访问的web资源,也可以理解为一种预处理手段,对资源进行拦截后,将其中我们认为的杂质(用户自己定义的)过滤,符合条件的放行,不符合的则拦截下来。过滤器常见的使用场景。
2023-11-29 21:00:49 965
原创 Java三种代理模式:静态代理、动态代理和CGLIB代理
代理模式是23种设计模式种的一种。代理模式是一种结构型设计模式,它允许为其他对象提供一个替代品或占位符,以控制对这个对象的访问。代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。
2023-11-28 21:21:50 805
原创 Spring解决循环依赖的方案
循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。
2023-11-27 21:21:27 420
原创 RPC和http的区别
通用定义的http1.1协议的tcp报文包含太多废信息,一个POST协议的格式大致如下即使编码协议也就是 body 是使用二进制编码协议,报文元数据也就是header头的键值对却使用了文本编码,非常占字节数。如上图所使用的报文中有效字节数仅仅占约 30%,也就是70%的时间用于传输元数据废编码。当然实际情况下报文内容可能会比这个长,但是报头所占的比例也是非常可观的。这也就是为什么后端进程间通常会采用 自定义tcp协议 的 rpc 来进行通信的原因。不单效率那么简单。
2023-11-25 18:32:06 1099
原创 设计模式—build模式
建造者模式强调的是将一个复杂对象的构建过程分步骤进行,使得构建的过程灵活,可以根据需要定制不同的表示。建造者模式通常涉及一个导演类来指导构建的过程。工厂模式强调的是定义一个接口用于创建对象,但将实例化的步骤延迟到子类中。工厂模式适用于无法预先知道具体类的情况,通过子类来实现具体对象的创建。
2023-11-23 21:14:47 595
原创 ConcurrentHashMap和HashMap的区别
引入ConcurrentHashMap是为了同步集合Hashtable之间有更好的选择,Hashtable与HashMap,ConcurrentHashMap主要区别于HashMap不是同步的,线程不安全的和不适合应用于多线程并发环境下,而ConcurrentHashMap是线程安全的集合容器,特别是在多线程和并发环境中,通常作为Map的主要实现。ConcurrentHashMap避免了对全局加锁改成了局部加锁操作。
2023-11-21 21:21:19 50
原创 计算机网络的OSI七层模型
七层模型(Seven-Layer Model),也被称为OSI模型(Open Systems Interconnection Model),是计算机网络通信的核心架构。它将网络通信分为七个不同的层次,每个层次都有特定的功能和任务。七层模型的每一层都有独立的功能,通过层与层之间的交互和协作,实现了可靠的网络通信。这种分层的设计使得网络通信的开发、管理和维护更加简单和灵活。
2023-11-20 21:11:45 183 1
原创 生产者消费者消费者模型
生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者,所以为了达到生产者和消费者生产数据和消费数据之间的。如果缓冲区为空,那么消费者线程阻塞。
2023-10-30 20:48:11 235 1
原创 数据库分表分库的原则
关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。
2023-10-28 18:35:29 104 1
原创 SpringMVC的工作流程
SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC的架构模式思想,将Web层进行指责解耦,并管理应用所需的生命周期,为简化日常开发,提供了很大便利。Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或 JavaBean组件,不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
2023-10-17 20:21:17 191
原创 MySQL数据库引擎-Inodb,MyISAM
数据库引擎简单来说就是一个"数据库发动机"。当你访问数据库时,不管是手动访问,还是程序访问,都不是直接读写数据库文件,而是 通过数据库引擎去访问数据库文件。以关系型数据库为例,你发SQL语句给数据库引擎, 数据库引擎解释SQL语句,提取出你需要的数据返回给你。因此,对访问者来说,数据库引擎就是SQL语句的解释器。正式来说,数据库引擎是用于存储、处理和保护数据的核心服务。
2023-10-16 20:37:57 97 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人