- 博客(39)
- 收藏
- 关注
原创 SpringBoot线上服务假死、Tomcat假死原因分析、排查思路详解
最近发生过几次线上服务出现不能接收任何请求的情况,造成了较大的影响。该种情况一般称之为Tomcat假死,在发生的几次中进行排查也总结了一些经验。为大家分享在排查此类问题的经验!
2022-04-24 21:12:53 6501
原创 Redis的两种Java客户端之Jedis和Lettuce
Redis介绍Redis客户端之Jedis和LettuceJedis和Lettuce的区别Jedis和Lettuce的使用SpringBoot中使用Jedis和Lettuce操作Redis
2022-01-27 11:57:00 5181
原创 Apache Log4j漏洞解决,log4j版本升级2.15.0
文章目录前言一、查看当前log4j版本二、升级log4j版本前言 log4j发生了巨大漏洞,可以在远程直接在服务器上执行多种操作,被戏称log4shell,众多公司面临解决log4j漏洞问题,本文主要介绍log4j升级版本相关 一、查看当前log4j版本首先需要确认下当前项目是否引入了log4j?引入的log4j版本是多少?有些项目可能没有直接引入,但引入的其他组件中使用了log4j,所以需要仔细排查一下!这里,我们可以使用IDEA编译器带的maven s.
2021-12-17 15:06:09 16786 5
原创 浅谈Tair缓存的三种存储引擎MDB、LDB、RDB
Tair是阿里巴巴自主研发的高性能、分布式、可扩展、高可靠的 key/value 存储系统。一般我们可能会认为是阿里开发的加强版Redis,支持双向数据同步,能够很好的支持缓存异地多中心,有更好的写性能等。但实际Tair不仅仅是Redis的封装那么简单。
2024-09-18 15:44:22 1209
原创 Redis与Lua高效实现Redis批量处理与限流
Redis本身不具备批量操作的命令以及不保证事务。当我们的KV值很大时,在实际使用中大Key的出现会导致Redis的IO变慢从而导致服务不可处理速度变慢甚至不可用。此时可以采用Lua脚本来操作Redis。
2024-08-15 10:11:08 674
原创 Java本地高性能缓存Caffeine实战
Java里面常用的缓存有本地缓存和分布式缓存。本地缓存的代表技术主要有HashMap,Guava Cache,Caffeine。分布式缓存主要有redis和memcache。本文详细介绍了本地的高性能缓存Caffeine。
2024-08-14 09:59:58 991
原创 布隆过滤器将应用Redis缓存使用量降低100倍
布隆过滤器将我们业务的Redis存储量由10T降低为100G!布隆过滤器(Bloom Filter)本质上是一种空间效率极高的概率型数据结构,主要用于判断一个元素是否在一个集合中。
2024-08-13 10:03:46 888
原创 Java函数式编程Lambda表达式详解
Lambda表达式在编程中通常表示一种简洁表示匿名函数的方法。Java在8版本中引入Lambda表达式和Stream流等链式编程方式。
2024-08-08 11:16:14 1218
原创 消息队列RocketMQ实战与原理
RocketMQ是阿里开源的分布式消息队列,支持亿级别消息堆积,并捐献给Apache基金会,是目前最火热的消息队列组件
2024-08-07 10:08:29 832
原创 手撸高频面试算法LRU缓存,力扣热题
LRU是一种常用的缓存淘汰策略,全称为“Least Recently Used”,即最近最少使用的意思。LRU算法手写,在面试中也会经常遇到,本文介绍了JAVA的两种LRU实现。
2024-08-05 15:09:15 571
原创 从leetcode100几道题掌握回溯算法
回溯算法是一种基于试错思想的搜索算法,主要用于解决约束满足问题(Constraint Satisfaction Problems, CSPs),例如排列组合问题、迷宫求解、八皇后问题、数独游戏等。它的基本思路是从问题的根节点出发,尝试每一种可能性分支,直到找到解决方案为止;若某一路径不可行,则撤销选择,返回上一层次继续探索未遍历过的分支,这一过程称为“回溯”。从起始点开始,沿着一棵潜在的解树向下探索,尝试构建一个完整的解。在每一个决策点,检查当前的选择是否满足问题的约束条件。
2024-07-26 11:38:35 1034
原创 Spring boot集成log4j及日志配置详解,实战,ELK使用教程。
详细介绍了如何在 SpringBoot 项目中集成 Log4j 以及 Log4j 配置文件的各种配置方法。通过合理地配置日志系统,我们能够更好地进行故障排查、性能监控和安全审计。进一步地,通过日志数据采集和分析工具,我们能够实现对日志数据的深度挖掘,为我们的应用提供了更便捷的数据可视化等支持。
2024-06-13 11:42:37 3064
原创 Mysql数据库索引实战及原理
本文将详细的介绍MySQL的各种索引,它们是如何使用以及它们的实现原理。。索引的作用就是为了提高查询效率,当表数据增多时,查询效率下降的很快,就需要合理的使用索引。
2024-06-04 11:39:43 887
原创 Nginx安装、使用、配置介绍
Nginx大家应该都不陌生,它广泛应用在互联网企业。是一个高性能的反向代理和 Web 服务器软件,运行稳定的同时且具备高性能的并发处理能力。
2024-05-31 16:04:29 829
原创 Arthas在线诊断工具,Arthas使用教程,Arthas常用命令
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
2024-05-30 15:06:04 998
原创 字节二面:你们是如何做Mysql慢查询优化的。Mysql执行计划详解!
慢查询优化对于提高MySQL数据库的性能和稳定性非常重要,大家在日常开发工作中一定会遇到速度比较慢的SQL语句,从而使得系统性能受到比较大的影响。慢查询优化也是面试中非常经常被问到的知识点!
2023-09-04 16:54:49 294
原创 分布式事务你必须了解的知识!分布式事务方案应用场景和对比!
随着系统逐渐演变为分布式系统,单机事务不再满足需求,分布式事务的解决方案也就出现了,本文介绍了分布式的基本知识点和对比了多种分布式解决方案。
2023-08-15 14:00:00 813
原创 Java排查线上问题、负载、OOM、日志处理等命令大全。
玩转在Linux系统中进行Java服务问题的排查,机器负载,内存,网络等等问题以及用命令提取日志或文本中的关键信息并进行预处理分析统计等
2023-08-09 12:03:42 515
原创 Java服务限流之Guava
Google开源的工具包Guava具备很多强大的功能,限流器就是其中之一。常见的限流算法主要有固定窗口、滑动窗口、漏桶、令牌桶算法这几种。Guava的限流算法是基于令牌桶来实现的!下面为大家通俗介绍下令牌桶算法:令牌桶算法核心就是一个维护一个固定容量令牌的容器(就是桶),按照固定速率往桶里添加令牌。桶中最多存放N个令牌,当桶满时,新添加的令牌被丢弃;当接收到请求时,去桶中获取一个令牌,获取到则继续执行,并删除对应的令牌;未获取到令牌则丢弃请求(被限流)。
2023-05-16 18:54:20 1021
原创 Java监控Metrics+SpringBoot+influxdb+grafana实战
本文将会介绍下Metrics系统监控在SpringBoot下的实战,数据录入influxdb,使用grafana来做监控的可视化。文章目录引入依赖SpringBoot中使用MetricsMetrics写入数据到influxdb:Grafana可视化1.安装2.读取influxdb引入依赖本次是基与SpringBoot+Metrics
2021-12-24 15:23:33 2039
原创 初识Java系统性能监控工具Metrics
Metrics是一款Java的类库,主要用于监控和统计,可以对系统的一些性能及业务指标进行监测。用于统计系统TPS、QPS等各种运维指标和性能指标。
2021-12-23 20:55:53 3296
原创 都在用的Intellij IDEA实用插件,帮你开发效率提升十倍。
Intellij IDEA作为当前主流的Java语言开发工具,本身就具备优秀的功能,帮助大家在工作中提升效率!但是,还是有更好的手段提升我们的开发体验和效率的。IDEA的插件库中就有着很多的实用的插件,下面为大家推荐几款十分好用的插件!首先IDEA安装插件的方式在左上角File>>Setting>>Plugins,点击Marketplace在插件市场中搜索插件。1.Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。常用的有get...
2021-12-21 14:14:30 666
原创 Apache log4j核弹级漏洞,一篇完全理解漏洞原因
2021年12月9日,Log4j组件发生了核弹级别的安全漏洞。作为Java语言程序最普遍使用的组件之一,该次漏洞影响覆盖面之广堪比核弹爆炸;漏洞影响力的大小,从被大家戏称为Log4Shell就可以看出危害之大!相信圈内的人基本都听到了该消息,也和我一样想弄清楚漏洞究竟是怎么发生的?漏洞的影响范围?能带来什么危害?漏洞的原理是什么?12月10日,Apache官方也是披露了漏洞的相关详细信息。带着疑问了解了相关信息,分享给大家。一、漏洞的影响范围?程序中使用了Apache Log4j 2.x <=
2021-12-15 14:36:00 4476
原创 Java8异步框架之CompletableFuture
1. CompletableFutureCompletableFuture 是JDK1.8版本新引入的类。主要作用就是进行任务的异步计算,通过函数式接口的方式帮助我们简化了异步计算的复杂性。适用场景当你的业务处理中需要对部分处理异步计算,且最终汇总计算结果时,CompletableFuture是你不二的选择。JDK1.5中也提供了Future接口,但是获取结果需要一直让CPU轮询,同时配合线程或者线程池的处理代码相对还是比较复杂的。2. 创建异步任务public static Completab
2021-08-10 15:59:38 402
原创 Java多线程与并发-Java中实现同步的方式
1.什么是同步?为何要使用同步?同步:指的是一个线程发出某一功能调用时,在没得到结果之前,该调用不返回。同时其他线程为保证数据一致性,不能调用该功能。同步的作用:当多个线程同时操作一个可共享的资源变量时,将会导致数据不准确,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。Java中实现同步的主要方式是通过关键字synchronized和Lock API主要实现类ReentrantLock2.volatile为什么现在这里讲volatile,因为它
2021-08-09 14:11:30 664
原创 Java多线程与并发-Java中的线程池
1.为什么需要线程池? 池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。线程池通过对线程生命周期的管理和任务的统一调度,降低了线程资源的消耗,具有方便了编码中对线程的管理和便于优化线程数的优点等。2.创建线程池的方式1.ThreadPoolExecutor,通过他的构造方法来创建线程池ThreadPoolExecutor最长参数的构造函数 public ThreadPoolExecutor(int corePoolSi
2021-08-09 14:10:44 263
原创 Java多线程与并发-基础概念篇
1.进程与线程1.概念: 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程:是进程的执行单元,CPU调度和分派的基本单位,多个线程之间共享进程的资源。2.关系:答:一个进程中有多个线程,线程是进程的执行单元,多个线程共享进程的资源,可以理解为线程是和进程是所属关系的。3.区别:进程是系统资源分配和调度的独立单位,线程是负责程序执行的执行单元。通俗的理解就是,一个java程序就是一个进程,里面包含了main线程以及其他
2021-08-09 14:10:07 205
原创 玩转Java设计模式之策略模式
1.背景 为什么想介绍下策略模式,因为我已经在很多场景下用到锅这个模式,相信很多人也是,这是java设计模式中非常常用的一个模式了。2.策略模式介绍1.什么是策略模式 策略模式就是定义一系列算法,把他们一个一个封装起来,并且使他们可以相互替换. 用人话来举个例子:就是你想去旅游,预算10w元,四个旅游团分别给出了四种方案(策略),你可以任意选择其中一个来获得不一样的旅游体验。2.策略模式的作用 举个例子吧:
2021-08-09 14:08:55 404 1
原创 玩转Java设计模式之代理模式
玩转Java设计模式之代理模式1.什么是代理?举个例子:你今天要去送资料,临时有事找了张三帮你送,张三就可以看作是代理你的代理对象,代理的行为(方法)是送资料。简单来说就是我们使用代理对象来代替对真实对象,在不修改原目标对象的前提下,提供源对象的功能,同时还具备扩展目标对象的功能特性。代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。2.代理模式详解代理模式主要分为静态代理和动态代理,下面一一讲解2.1静态代理静态代理实现步骤:1.定义
2021-08-09 14:07:51 165
原创 玩转Java设计模式之单例模式
玩转Java设计模式之单例模式单例模式相信大家都不陌生,不管是工作还是面试都很容易碰到单例模式。顾名思义,单例模式就是指生成的对象为同一个对象的一种设计模式,本文主要介绍下单例模式的几种实现方法和对应的特点。单例的实现主要有五种:懒汉式、饿汉式、双检锁、静态内部类、枚举。1、懒汉式不多说,直接上代码public class Singleton { private static Singleton instance; private Singleton() {} p
2021-08-09 14:07:10 133
原创 玩转Java设计模式之观察者模式
1.什么是观察者模式 观察者模式主要用于解决一个对象发生变化,该对象注册的其他对象都能得到通知的这么个场景。事实上就是发布订阅,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 举个例子:微信公众号服务,不定时发布消息,关注公众号的才会收到推送的消息。2.观察者模式的实际场景 说个曾经我遇到过的场景: A、B、C三个服务。B、C服务均希望在A服务在Start Complete后与A服务
2021-08-09 14:06:29 274
原创 HashMap中常见面试题
1.HashMap的底层数据结构JDK1.8 之前JDK1.8之前HashMap底层是数组和链表结合在一起使用也就是链表散列,通过拉链法来解决hash冲突。所谓 “拉链法” 就是:将链表和数组相结合。也就是说创建一个链表数组,数组中每一格就是一个链表。若遇到哈希冲突,则将冲突的值加到链表中即可。JDK1.8 之后JDK1.8之后对底层结构进行了优化,在原有基础之上添加了红黑树。当发生hash冲突,且链表长度大于8时,会将链表转换为红黑树。2.HashMap线程安全吗?为什么?不安全
2021-08-09 14:04:54 119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人