自定义博客皮肤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)
  • 收藏
  • 关注

原创 了解多线程的JUC框架

为了解决这些问题,Java引入了JUC框架,提供了一系列更高效和灵活的工具,以应对并发编程的挑战。:通过使用原子变量和CAS机制,JUC提供了一种无锁的编程方式,可以在高并发环境下实现安全的共享数据操作。:JUC的线程池通过复用线程,避免了频繁创建和销毁线程的开销。:为了处理大量的订单请求,我们可以使用JUC的线程池来管理线程。:在设计并发程序时,合理设计锁的使用,尽量避免嵌套锁的情况,以降低死锁发生的可能性。:在设计并发程序时,关注性能瓶颈,合理使用原子变量和锁机制,避免不必要的竞争和等待。

2024-09-05 14:48:14 687

原创 SQL 优化案例

考虑删除该字段的索引,或者将索引创建在不常更新的字段上,以提高写入性能。: 通过查询日志或性能监控工具,分析索引的使用情况。如果某个索引在过去的几个月内没有被使用,可以考虑删除该索引,降低维护成本。: 在搜索中,使用了不适合的索引类型,如在文本字段上使用 B+树索引。: 在一个大型用户管理系统中,发现某些索引很少被使用,导致维护成本高。经常被更新,但该字段上却创建了索引,导致写入性能下降。: 将查询条件改为范围查询,并确保。在某些情况下,这样的查询可能更高效。: 在合并多个查询结果时,使用了。

2024-09-03 09:20:13 503 1

原创 MySQL TiDB (事务 锁机制 存储引擎 索引优化) 概括

【代码】MySQL TiDB (事务 锁机制 存储引擎 索引优化) 概括。

2024-09-03 09:11:10 1009 1

原创 MySQL Tidb索引失效情况

【代码】MySQL Tidb索引失效情况。

2024-09-03 09:06:11 575

原创 MySQL索引专题

索引与数据分开存储,叶子节点存储的是聚簇索引的值(通常是主键值),这样可以通过非聚簇索引快速定位到聚簇索引,然后再获取完整数据。列表示实际使用的索引,如果为 NULL,则没有使用索引,查询中若使用了覆盖索引,则该索引和查询的 select 字段重叠。显示可能应用在这张表中的索引,一个或多个,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用。相比之下,使用业务字段作为主键时,数据插入的顺序可能不一致,导致频繁的页分裂和数据移动,从而增加了写入成本。查找聚簇索引获取完整行数据。

2024-09-02 23:41:35 1161

原创 IBM WMQ、RabbitMQ、RocketMQ和Apache Kafka 四种消息队列对比

IBM WebSphere MQ是IBM公司推出的企业级消息中间件,旨在解决企业应用程序之间的异步通信问题。它提供了可靠的消息传递机制,保证消息的安全传递和顺序处理。RabbitMQ是一个开源的消息中间件,广泛用于实现异步消息传递。它基于AMQP(高级消息队列协议)标准,支持多种消息模式。RocketMQ是阿里巴巴开源的分布式消息队列,支持高吞吐量和低延迟的消息传递,适合大规模应用。Apache Kafka是一个分布式流处理平台,广泛应用于大数据处理和实时分析。

2024-09-02 18:54:53 1943

原创 TiDB与MySQL 对比

MySQL是由瑞典公司MySQL AB开发的开源关系型数据库管理系统,最初发布于1995年。MySQL以其高效、可靠和易用性迅速获得了广泛应用。2008年,MySQL AB被Sun Microsystems收购,随后在2010年,Oracle Corporation收购了Sun。尽管MySQL现在由Oracle维护,但它仍然是世界上最流行的开源数据库之一。TiDB是由PingCAP公司开发的分布式关系型数据库,首次发布于2017年。TiDB旨在解决传统关系型数据库在高可用性和可扩展性方面的不足。

2024-09-02 18:39:51 1705

原创 IBM WebSphere MQ 的消息队列使用代码样例

在连接工厂和队列管理器的实现中,确保在应用程序中只存在一个连接实例,减少资源消耗,提高性能。: 在消息发送和接收的实现中,将消息发送和接收的操作封装成命令,便于管理和扩展。接口,类能够接收 JMS 事件并进行处理,增强了系统的解耦性。中,定义了事务的提交和回滚逻辑,允许子类实现具体的事务管理。中,封装对象的创建逻辑,使代码更加灵活,便于扩展和维护。

2024-09-02 09:50:46 442

原创 RabbitMQ 实战:电商下单流程

通过以上步骤,我们实现了一个基于 RabbitMQ 的电商下单流程,展示了如何通过消息队列实现异步处理与服务之间的解耦。同时,采用幂等性设计和消息可靠性机制,确保了系统的稳定性与可靠性。这种架构能够有效提高系统的响应速度,并降低系统间的耦合度,使得各个服务可以独立扩展和维护。

2024-09-01 23:51:31 1734

原创 RabbitMQ介绍与使用

在现代应用程序中,随着微服务架构的普及,系统之间的通信变得越来越复杂。系统耦合性高:服务之间直接调用会导致紧密耦合,影响系统的可维护性和扩展性。流量高峰处理困难:在高并发情况下,服务可能会出现瞬时过载,导致请求丢失或响应延迟。异步处理需求:某些操作需要异步执行,但直接调用会导致主线程阻塞。RabbitMQ 是一个开源的消息代理软件,基于高级消息队列协议(AMQP)实现。基于 AMQP 协议:支持多种消息队列功能,适合用于微服务架构。高性能:使用 Erlang 编写,具有出色的并发处理能力,延迟低。

2024-09-01 23:30:31 1229

原创 ThreadLocal在多线程环境中的应用与原理解析

适用于需要在多线程环境中管理线程私有数据的场景。通过提供每个线程独立的变量副本,它解决了共享状态问题,简化了编程模型,提高了性能,并增强了灵活性。在使用时,开发者需要注意内存管理,以避免潜在的内存泄漏。合理使用可以极大提升多线程应用的健壮性和性能。

2024-09-01 19:21:51 1078

原创 7.Redis 的设计和实现详解

选择合适的数据结构: 根据业务需求选择合适的 Redis 数据结构和内部编码,以优化内存使用和访问性能。开启多线程: 在高并发场景下开启多线程功能,充分利用服务器的 CPU 资源。合理设置淘汰策略: 根据业务场景选择合适的缓存淘汰策略,确保重要数据不被意外删除。利用过期和惰性删除: 设置合理的过期时间,结合惰性删除策略,确保内存的有效利用。异步删除大数据: 对于大数据的删除操作,使用UNLINK命令避免阻塞主线程,保持系统的高可用性。

2024-09-01 13:44:48 1089

原创 6.Redis 缓存使用问题及解决方案

Redis 作为一种高效的缓存解决方案,广泛应用于各类项目中。然而,使用缓存时也会面临一些问题,特别是数据一致性、缓存穿透、击穿、雪崩等问题。

2024-09-01 13:33:06 1404

原创 5.Redis 集群 主从复制 哨兵

Redis Sentinel 是 Redis 提供的高可用解决方案,能够自动监控主节点和从节点的状态,并在主节点故障时自动进行故障转移。这一机制确保了 Redis 的高可用性,避免了人工干预的需求。主从复制是 Redis 提供的一种数据复制机制,允许一个主节点将数据复制到一个或多个从节点。在主从复制中,主节点负责处理写操作,而从节点则负责处理读操作,从而实现读写分离和负载均衡。

2024-09-01 13:24:36 2281

原创 4.Redis 持久化机制 分布式锁

尽管Redis是一个内存数据库,但它支持两种持久化机制:RDB(快照持久化)和AOF(追加文件),这两种机制可以将数据写入磁盘,从而避免因进程退出而导致的数据丢失。

2024-09-01 13:01:17 1348

原创 3.Redis高级特性和应用(慢查询、Pipeline、事务、Lua、限流原理)

在数据库系统中,慢查询是指执行时间超过预设阈值的查询操作。Redis也提供了慢查询日志功能,帮助开发和运维人员定位性能瓶颈。慢查询日志记录了执行时间较长的命令,以便进行优化。

2024-09-01 12:38:49 1958

原创 2.Redis高级特性和应用(发布/订阅、Stream)

发布/订阅是一种消息传递模式。在这种模式下,消息的发布者和订阅者之间没有直接的联系。发布者将消息发送到一个频道,而所有订阅该频道的客户端都能接收到这个消息。这样,发布者和订阅者之间实现了松耦合。

2024-09-01 12:21:13 1029

原创 1.Redis入门与应用

字符串在Redis中是以动态字符串(SDS)形式存储的。SDS允许字符串的灵活扩展,避免了传统C语言字符串操作中的许多问题。Redis中的字符串最大可以存储512MB的数据,适合存储文本、图像等二进制数据。哈希结构在Redis中使用哈希表实现,允许以字段和对应值的形式存储数据。在内存中,哈希表的存储效率较高,对于小型哈希(小于512个字段),Redis使用ziplist(压缩列表)存储,从而节省内存。列表在Redis中使用双向链表实现,支持从两端插入和弹出元素。

2024-09-01 12:13:35 1184

原创 深入理解Spring Boot的开箱即用与自动装配特性

Spring Boot的自动配置功能通过注解实现。它根据类路径中的依赖,自动配置Spring应用程序所需的Bean,极大地减少了手动配置的工作量。Spring Boot的自动配置机制能够根据类路径中的依赖,自动创建和配置所需的Bean,极大地简化了配置过程。在此过程中,注解的作用是确保Spring能够扫描到项目中的所有组件(如服务、控制器等),从而使得自动装配顺利进行。开发者可以在业务逻辑中直接使用这些自动配置的Bean,而无需关心它们的创建和管理。

2024-08-29 19:26:14 2990

原创 Spring Boot常用注解及其含义

在Java中,注解是一种特殊的类型,它可以被用来为代码元素(如类、方法、字段等)添加元数据。Spring Boot使用注解来简化配置和功能实现。定义注解:使用@interface定义一个注解。注解处理:使用反射机制(Java Reflection)在运行时读取注解,并根据注解的信息执行相应的逻辑。

2024-08-29 19:06:04 628

原创 SpringBoot概述及创建项目

Spring Boot是一个基于Spring框架的开源Java项目,旨在简化Spring应用程序的开发过程。它提供了一种快速、简洁的方式来创建独立的、生产级的Spring应用程序,避免了繁琐的配置过程。

2024-08-29 18:38:28 1671

原创 深入理解Spring Security

Spring Security是一个功能强大且灵活的安全框架,专为保护基于Spring的应用程序而设计。它提供了一系列安全服务,包括身份验证、授权、攻击防护、会话管理等,帮助开发者轻松实现应用程序的安全控制。

2024-08-29 18:05:57 1361

原创 Spring MVC概述

除了全局异常处理,还可以在Controller中使用注解处理特定异常。// 返回错误视图拦截器可以在请求处理之前和之后执行一些操作。可以通过实现接口定义一个拦截器。@Override// 在请求处理之前执行// 返回true继续执行,返回false则中断请求@Override// 在请求处理之后执行@Override// 在请求完成之后执行我们定义一个通用的类,可以接收任意类型的数据。// 响应状态码// 响应消息// 响应数据// 构造函数。

2024-08-29 17:40:37 1313

原创 过滤器与拦截器对比

过滤器的触发是由Servlet容器在请求到达Servlet之前和响应离开Servlet之后自动管理的。过滤器可以对请求和响应进行处理,并通过方法控制请求的流向。过滤器的配置可以通过web.xml文件或使用注解(如@WebFilter)进行声明。特性过滤器(Filter)拦截器(Interceptor)适用框架Spring MVC处理时机请求到达Servlet之前和响应离开Servlet之后请求到达Controller之前和响应离开Controller之后配置方式。

2024-08-29 11:52:08 1053

原创 IOC 概述

控制反转(Inversion of Control,简称IOC)是一种设计原则,它通过将对象的创建和管理权交给外部容器来实现对象之间的解耦。传统的编程模式中,对象的创建和依赖关系是由应用程序自己管理的,而在IOC中,这些工作由容器负责。这样可以提高代码的可维护性、可测试性,并降低代码的耦合度。依赖注入(Dependency Injection,简称DI)是实现IOC的一种具体方式,它通过将对象的依赖关系注入到对象中,来实现对象之间的解耦。

2024-08-28 20:07:21 1429

原创 Spring AOP 应用场景与源码解析

通过对 Spring AOP 的深入解析和生活场景的结合,我们可以更好地理解其实现原理、代理生成机制和配置方式。AOP 作为一种编程范式,通过代理模式将横切关注点(如日志、事务等)与业务逻辑分离,提高了代码的可维护性和可读性。在实际开发中,合理运用 AOP 能够显著提升开发效率和代码质量。通过以上的示例和情景比喻,相信您能更好地掌握 Spring AOP 的应用和实现。AOP(面向切面编程)是一种编程范式,旨在将横切关注点(如日志、事务等)从业务逻辑中分离出来,以提高代码的模块化和可维护性。

2024-08-28 19:32:04 1801

原创 MyBatis的相关问题

缓存击穿是指某个热点数据在缓存中不存在,导致大量请求直接访问数据库,造成数据库压力过大。总之,是MyBatis中非常重要的一个接口,负责创建SqlSession对象和管理MyBatis全局属性的配置。使用可以简化数据库操作的编写和管理,提高应用程序的性能和可维护性。总之,SqlSession是MyBatis框架中最为核心的组件之一,它封装了对数据库的操作,提供了事务管理的支持,并由进行管理。使用SqlSession时需要注意其生命周期、线程安全性等问题。

2024-08-27 23:41:26 688

原创 MyBatis中使用的设计模式详细解析

单例模式:确保一个类只有一个实例,节省资源,方便管理。工厂模式:将对象创建与使用分开,增加灵活性。代理模式:动态生成接口的实现类,方便扩展功能。模板方法模式:封装公共逻辑,简化操作。观察者模式:保持数据一致性,自动更新缓存。策略模式:实现功能扩展,允许灵活选择不同的策略。

2024-08-27 20:50:36 959

原创 MyBatis与Spring整合的完整总结

通过动态代理,MyBatis能够在运行时为Mapper接口生成实现类,并将方法调用转发到SqlSession中执行。同时,MyBatis与Spring的整合使得开发者能够更方便地进行数据库操作,利用Spring的依赖注入和管理功能,提高了代码的可维护性和灵活性。整个架构灵活且易于扩展。

2024-08-27 20:23:35 816

原创 JAVA基础问题

字节流:用于处理原始二进制数据,适合所有类型的数据(如图像、音频、视频等)。字符流:用于处理文本数据,支持字符编码,适合处理文本文件,如txt、csv等。// 字节流= -1) {// 处理字节数据// 字符流= null) {br.close();

2024-08-27 19:39:20 930

原创 排序算法解析

介绍几种排序算法,包括快速排序、归并排序、堆排序、希尔排序、插入排序、选择排序、冒泡排序、计数排序、随机排序、桶排序和基数排序。

2024-08-22 17:47:12 1033

原创 使用Lock规避死锁的策略

死锁是一种状态,多个线程在执行过程中,因为争夺资源而造成一种互相等待的现象。比如,线程 A 持有锁 1,等待锁 2,而线程 B 持有锁 2,等待锁 1,这样就形成了死锁。

2024-08-22 12:53:11 329

原创 深入理解 TCP 协议与网络通信

TCP 的三次握手是建立可靠连接的过程,确保通信双方都能正常发送和接收数据。握手过程为:第一次,发送方发送一个请求(SYN);第二次,接收方确认请求(SYN-ACK);第三次,发送方再次确认(ACK)。这一过程确保了双方都明确连接的状态。生活案例帮助记忆第一次握手:A 发送一个请求,表示:“我想和你建立连接。”(A 发送 SYN)第二次握手:B 收到后回复:“我也想和你建立连接!”(B 发送 SYN-ACK),并确认收到了 A 的请求。

2024-08-22 10:47:18 1188

原创 开发者必备框架指南

DevOps 及云计算。

2024-08-19 18:05:48 823

原创 CKA(k8s) 05Kubernetes 完整工作流程描述

在这个完整的流程中,用户的请求从入口流入Master节点,通过进行处理,存储到etcd,然后由进行调度,最终在Node节点上由kubelet创建Pod。Pod的状态通过进行监控和调整,确保实际状态与期望状态一致。

2024-08-17 00:21:24 528

原创 CKA(k8s) 04应用梳理

或YAML文件(资源对象文件)定义期望的资源状态(如Pod),并发出请求。接收到用户的请求后,会验证请求的合法性,并将用户定义的期望状态(如Pod的定义)存储到。:根据Pod的资源请求和节点的可用资源,筛选出符合条件的节点。在这个完整的流程中,用户的请求从入口流入Master节点,通过。的状态变化,确保集群中的实际状态与用户的期望状态保持一致。:对预选出的节点进行进一步的评估,选择最适合的节点。的容器,这个容器作为Pod的网络命名空间的基础。进行监控和调整,确保实际状态与期望状态一致。

2024-08-17 00:12:17 931

原创 CKA(k8s) 03 调度管理 流量管理 集群管理

流量调度ingress 域名方式实现 双层service。404 ingress环境ok。1.故障排障notready。3.节点更新******4.数据备份 etcd。集群管理******

2024-08-16 23:48:57 234

原创 CKA(k8s)笔记 02数据管理 配置管理 安全管理

volumens将存储介质映射为存储对象 然后应用容器去使用。pv数据持久化 存储资源分级管理。业务数据持久化 配置文件持久化。pvc如何给pod使用 指向。进入redis执行保存文件。

2024-08-16 23:46:07 117

原创 CKA (k8s)笔记 01资源控制 网络管理

所有的资源对象,自动化管理pod,都是通过lable来实现的。副本控制器 deployment 数量期望值2 实。

2024-08-16 23:42:21 114

原创 TiDB 数据库核心原理与架构笔记

写数据只写leader,leader将指令变成日志的形式,向所有的follower复制,当大多数节点都收到日志,并持久化后,follower会返回append成功的信息给leader后,leader会apply到rocksdb的kv的编程数据中。TiFlash只接入日志,没办法写入,只能读,和其他follower一样,从TiKV的leader复制转换来的,对原来性能影响很小,因此做到了业务的隔离性,如果TiFlash宕机后,重新复制即可。

2024-08-16 23:32:12 503

空空如也

空空如也

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

TA关注的人

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