- 博客(167)
- 收藏
- 关注
原创 linux自动分区后devmappercentos-home删除后合并到其它分区上
因为释放了 home卷组所占用的硬盘,所以vg卷组有了剩余的容量。删除其他分区,合并到对应分区上增加磁盘空间。删除执行成功磁盘容量已经全部都在/ 目录下。添加到 /root卷组中。linux自动分区后。
2025-01-14 14:15:45
374
原创 RocketMQ、Kafka、RabbitMQ,如何选型?
分布式、微服务、高并发架构中,消息队列(Message Queue,简称MQ)扮演着至关重要的角色。消息队列用于实现系统间的异步通信、解耦、削峰填谷等功能。目前常见的MQ实现包括RabbitMQ、RocketMQ和Kafka。RocketMQ、Kafka、RabbitMQ如何选择?
2025-01-13 22:21:33
1276
1
原创 MySQL 中删除重复数据 SQL 写法
要在 MySQL 中删除重复的数据并只保留一条,可以使用下面的方法(要用的时候直接复制小改下条件和表名称即即可)
2025-01-11 22:59:03
544
原创 实现高并发秒杀的 7 种方式
一、二方式是在代码中利用锁和事务的方式解决了并发问题,主要解决的是锁要加载事务之前三、四、五方式主要是数据库的锁来解决并发问题,方式三是利用for upate对表加行锁,方式四是利用update来对表加锁,方式五是通过增加version字段来控制数据库的更新操作,方式五的效果最差六、七方式是通过队列来解决并发问题,这里需要特别注意的是,在代码中不能通过throw抛异常,否则消费线程会终止,而且由于进队和出队存在时间间隙,会导致商品少卖上面所有的情况都经过代码测试,测试分一下三种情况:
2025-01-11 22:51:00
1002
原创 异步调用实践:Async,Future, TaskExecutor、EventListener
在Spring Boot中,实现异步调用可以通过多种方式,包括@Async注解、、自定义以及结合进行异步事件处理。每种方式都有其适用场景和优缺点,开发者应根据实际需求选择最合适的方法。同时,使用异步调用时需要注意线程安全、异常处理以及合理配置异步。
2024-08-12 22:21:26
602
原创 什么是熔断降级?说 4 种解决方案
在复杂的微服务架构中,一个服务的故障可能会导致整个系统的崩溃,从而造成连锁反应。通过实施熔断降级机制,系统可以在服务发生故障时将故障隔离,防止它扩散到其他服务或组件,从而保护整个系统的稳定性。
2024-06-15 22:40:20
1474
原创 为什么MySQL需要binlog、undo log、redo log 3种日志?
在正式进入主题之前,我们先看一张 MySQL的架构示意图:上述示意图中的红色字体:binlog、undo log、redo log 就是我们今天的主角。binlog是 server层生成的日记,而 undo log、redo log 是Innodb 存储引擎层生成的日志undo log(回滚日志):是 Innodb 存储引擎层的逻辑日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。
2024-06-02 23:32:21
686
原创 Redis 为什么这么快?
本文从数据结构、网络模型、持久化机制和内存管理等多个角度分析了 Redis 的高性能原因。正是这些优秀的设计理念和实践,使得 Redis 成为了一款高性能的内存数据库,受到了越来越多开发者的青睐。希望本文对您了解 Redis 的高性能原理有所帮助。
2024-06-02 22:36:42
852
原创 Nginx 七大应用场景(附配置)
应用场景7:基于请求路径转发不同服务。应用场景6:手机端重定向PC端。应用场景2:反向代理。应用场景3:负载均衡。
2024-05-20 21:41:03
272
原创 Hystrix从入门到源码分析
Hystrix 通过这些核心类和接口实现了断路器模式,提供了线程池隔离、请求缓存、服务降级等功能。每个命令在执行时都会被封装为一个 HystrixCommand 实例,并在一个独立的线程池中执行。CircuitBreaker 根据 HystrixCommandMetrics 提供的度量数据来决定是否跳闸。这些组件协同工作,确保了分布式系统在面对服务故障和延迟时的健壮性和弹性。
2024-04-19 22:42:24
1013
原创 微服务鉴权的几种实现方案
刚开始接触微服务时网上给的方案大都数是通过透传Token做鉴权,但我认为这种方式不是很妥当。接着往下看:这种方式通过透传Token使得各微服务都能获取到当前登录人信息,在代码编写上确实可能会方便,但我认为这不是一种很好的设计方式。换句话说:B服务提供API时不因该关心当前是否为登录状态,登录状态应该由路由中的第一个服务校验维护,在调用后续服务时应该显示的传入相关参数。
2024-03-23 22:20:19
1712
原创 Linux下最常用的MySQL运维脚本
MySQL数据库的运维工作需要一系列的操作,包括性能优化、备份、复制管理、版本升级、权限管理、安全性和自动化。通过编写适当的脚本,可以更高效地管理和维护MySQL数据库,确保其稳定性和安全性。本文提供了更多的示例代码和详细说明,以帮助深入了解如何使用脚本进行MySQL运维。
2024-03-16 22:32:31
1269
1
原创 常用负载均衡详解
在互联网场景下,负载均衡(Load Balance)是分布式系统架构设计中必须考虑的一个环节,它通常是指将负载流量(工作任务、访问请求)平衡、分摊到多个操作单元(服务器、组件)上去执行的过程。目的在于提供负载配比,解决性能、单点故障(高可用)和扩展性(水平伸缩)等问题。
2024-03-16 20:42:43
1813
原创 SpringBoot 整合 Kafka 实现千万级数据异步处理
在之前的文章中,我们详细的介绍了的架构模型,在集群环境中,可以通过设置分区数来加快数据的消费速度。光知道理论可不行,我们得真真切切的实践起来才行!下面,我将结合生产环境的真实案例,以SpringBoot技术框架为基础,向大家介绍的使用以及如何实现数据高吞吐!
2024-03-13 23:07:37
2284
原创 SpringBoot 中实现订单30分钟自动取消的策略
以上三种方案都可以实现订单在30分钟内未支付则自动取消的需求。根据实际业务需求、系统负载和其他因素,可以选择最适合自己系统的实现方案。每种方案都有其优缺点,需要根据具体情况权衡。
2024-03-13 21:35:03
545
原创 这些年背过的面试题——SpringMVC篇
SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
2024-03-12 22:43:16
939
原创 二叉树遍历详解
从根节点往下查找,先找左子树、直至左子树为空(左子节点逐个入栈、直至左子节点为空),再找右子树(出栈找右子节点)前序遍历:根左右,第一次经过节点即打印,直到打印null,往回溯,打印右子树中序遍历:左根右,第二次经过该节点时进行打印,即左边回溯时后序遍历:左右根,第三次经过该节点时进行打印,即右边回溯时层序遍历:按照层级,从上往下,从左到右。使用广度优先搜索算法。
2024-03-10 21:11:59
417
原创 MQ如何防止消息被重复消费?
被询问如何防止MQ消息被重复消费时,其实是在考察候选人对消息队列、分布式系统设计以及容错机制的理解,通过这些问题,可以全面了解候选人在处理MQ消息重复消费问题时的思考方式、技术能力和实践经验,从而评估其是否适合担任相关岗位。
2024-03-03 20:48:37
3306
原创 ThreadLocal 为什么会内存泄漏吗?是怎么产生的?
ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景
2024-03-02 03:30:00
969
原创 熔断、隔离、重试、降级、超时、限流,高可用架构流量治理核心策略全掌握
在探讨高可用架构之前,让我们以 O2 系统为例,解释一下何谓可用性。O2 是腾讯内部的一个广告投放系统,专注于提升投放效率、分析广告效果,拥有自动化广告投放、AIGC 自动化素材生产等多种功能。高性能;高可用;易扩展。理解高可用时,通常参考两个关键指标平均故障间隔(Mean Time Between Failure,简称 MTBF):表示两次故障的间隔时间,也就是系统正常运行的平均时间,这个时间越长,说明系统的稳定性越高;
2024-02-29 23:15:09
1258
原创 SQL硬核调优
在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化。
2024-01-30 15:52:22
1216
1
原创 JVM性能调优
吞吐量:重要指标之一,是指不考虑垃圾收集引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性能指标。延迟:其度量标准是缩短由于垃圾啊收集引起的停顿时间或者完全消除因垃圾收集所引起的停顿,避免应用运行时发生抖动。内存占用:垃圾收集器流畅运行所需要 的内存数量。这三个属性中,其中一个任何一个属性性能的提高,几乎都是以另外一个或者两个属性性能的损失作代价,不可兼得,具体某一个属性或者两个属性的性能对应用来说比较重要,要基于应用的业务需求来确定。合理的JVM调优可以显著提升应用的性能和稳定性。
2024-01-29 22:49:30
925
原创 压力测试JMeter
Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。同时,JMeter可以帮助你对你的应用程序进行回归测试。
2024-01-16 22:10:18
1349
原创 linux如何排查cpu持续飙高原因
首先在Linux系统中检查CPU使用率。可以通过在命令行中输入top或htop命令来查看当前系统中各个进程的CPU使用率。如果CPU使用率大于80%,则可以考虑进行排查。$ top。
2024-01-16 10:51:34
1504
原创 SpringBoot拦截器、过滤器、自定义注解、监听器、全局异常-使用详解
自定义一个注解,为该注解加一个参数name=kaifamiao,然后在拦截器里获取这个name要在Spring Boot中实现这个功能,你需要创建一个自定义注解,并在拦截器中读取这个注解的参数值。首先,创建一个自定义注解。在这个例子中,我们将创建一个名为的注解,它有一个名为name的参数。
2023-12-02 20:11:05
635
原创 vue项目的环境准备与创建详情
即可安装npm镜像源以后再用到npm的地方直接用cnpm来代替就好了,因为没有镜像源的话,安装速度比较慢cnpm -v。
2023-11-08 22:20:44
324
原创 Redis缓存击穿、缓存穿透和缓存雪崩的详解
在高并发的系统中,缓存是提高性能和减轻数据库压力的重要手段之一。Redis作为一种常用的缓存解决方案,被广泛应用于各种系统中。然而,当缓存使用不当或者面对特定的情况时,可能会出现缓存击穿、缓存穿透和缓存雪崩等问题。本文将详细介绍这三个问题的概念、原因和解决方法,并提供详细的Java示例代码。
2023-11-01 23:23:41
474
1
原创 磁盘空间100%时,简单的处理办法。
no space left on device的意思是:设备没有剩余空间,磁盘空间不足。当我们发现磁盘空间已满的时候,往往我们要去删部分日志文件,但有不知道那些文件占用磁盘较大时,下面就是查看磁盘情况,和查找那些文件占用磁盘较大,并如何删除部分日志文件。
2023-08-12 11:03:48
438
原创 彻底理解Java中的各种锁
假定当前环境是读多写少,遇到并发写的概率比较低,读数据时认为别的线程不会正在进行修改(所以没有上锁)。写数据时,判断当前 与期望值是否相同,如果相同则进行更新(更新期间加锁,保证是原子性的)。,比较并替换,比较当前值(主内存中的值),与预期值(当前线程中的值,主内存中值的一份拷贝)是否一样,一样则更新,否则继续进行CAS操作。如图所示,可以同时进行读操作,读的时候其他线程不能进行写操作。
2023-07-30 20:54:05
596
原创 Spring AOP知识点详解
AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“**切面**”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证.日志.事务处理。
2023-07-15 22:07:06
615
原创 Docker容器日志管理
Docker容器日志是容器在运行过程中产生的各种日志信息,包括错误、警告、信息等。Docker 容器日志是 Docker 的一个重要特性,它可以帮助用户监控容器的运行状态、分析容器的性能,并收集容器日志,方便后续分析。Docker 容器日志可以通过控制台输出、日志文件输出和系统日志输出来实现,可以通过 docker logs 命令和进入容器内部的方式来查看容器日志,可以通过设置日志输出格式、控制日志输出级别和定期清理日志文件来管理容器日志。
2023-07-05 22:03:43
1555
原创 深度学习HashMap之手撕HashMap
在Java里,Object类里提供了一个默认的hashCode()方法,它返回的是一个32位int形整数,其实也就是对象在内存里的存储地址。也叫拉链法,看起来,像在桶数组上再拉一个链表出来,把发生哈希冲突的元素放到一个链表里,查找的时候,从前往后遍历链表,找到对应的key就行了。好了,哈希表的介绍就到这,相信你已经对哈希表的本质有了深刻的理解,接下来,进入coding时间。理想的情况,是每个数据元素经过哈希函数的计算,落在它独属的桶数组的位置。构造多个哈希函数,发生冲突时,更换哈希函数,直至找到空闲位置。
2023-06-14 22:47:50
1071
原创 Dozzle-解决通过命令方式查看Docker 日志的神器
Dozzle 是一个开源的日志查看器,用于监视和查看 Docker 容器的实时日志。它提供一个简单而直观的 Web 界面,让用户可以方便地查看运行中的 Docker 容器的日志。它具有轻量级和快速的特点,并且不需要对 Docker 容器进行任何配置或修改。总的来说,Dozzle 是一个方便实用的工具,特别适用于需要监视和分析 Docker 容器日志的情况。它的简单性和易用性使得开发人员和系统管理员可以更好地理解和诊断其容器化应用程序的运行情况。感兴趣的朋友赶紧去试试吧~
2023-06-06 22:52:10
936
原创 面对CPU狂飙时的5步解决方案
现在企业对后端开发的要求越来越高,不仅要求我们会写代码,还要我们能够进行部署和运维!项目上线并运行一段时间后,可能会发现部署所在的Linux服务器CPU占用过高,该如何排查解决?
2023-06-06 22:43:15
585
原创 说一下TreadLocal,深拷贝和浅拷, 强引用,软引用,弱引用和虚引用
软引用可以让对象豁免一些垃圾回收,只有当JVM内存不足时,才会回收掉软引用指向的对象,JVM会确保抛出OOM之前回收掉软引用指向的对象,如果这次回收后还是没有足够的内存,JVM将会抛出OOM。只要强引用还在,垃圾回收器就永远不会回收被引用的对象,即使发生OOM,如果没有其他引用关系,只要超过了引用的作用于或者显式的将相应引用赋值为null,就可以被垃圾回收器回收掉。弱引用也是用来描述非必须对象的,但是强度比软引用更弱一些。无论当前内存是否充足,都会回收掉弱引用关联的对象。
2023-06-01 22:25:21
522
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人