自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 4 种消息队列

消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个消息队列可以被一个也可以被多个消费者消费,包含以下 3 元素:Producer:消息生产者,负责产生和发送消息到 Broker;Broker:消息处理中心,负责消息存储、确认、重试等,一般其中会包含多个 Queue;Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理。

2024-04-25 19:40:59 2

转载 这是我见过最全的权限系统设计方案!

本文从易到难非常详细的介绍了权限模型的设计,在工作中需要根据实际情况来定义模型,千人以内的公司使用RBAC模型是完全够用的,没有必要吧权限模型设计的过于复杂。模型的选择要根据具体情况,比如公司体量、业务类型、人员数量等。总之最适合自己公司的模型就是最好的模型,权限模式和设计模式是一样的,都是为了更好的解决问题,不要为了使用模型而使用模型。

2024-04-22 16:50:14 25

转载 接口重试的8种方法

如果说我们不想在项目里额外地引入一些重试的框架,自己定义一个重试工具类也是可以的,这是我在某个第三方提供的client-sdk里发现的一套重试工具类,比较轻量级,给大家分享一下。首先,定义一个实现了Callback抽象类的具体回调类,实现其中的方法来执行需要重试的逻辑。回调类的方法返回一个对象,表示重试的结果。然后,定义一个类,用于封装重试的结果。类包含一个isRetry属性表示是否需要进行重试,以及一个obj属性表示重试的结果对象。// 构造方法和getter方法省略最后,定义一个。

2024-04-08 10:52:52 19

转载 万字详解,带你彻底掌握 WebSocket 用法(至尊典藏版)

WebSocket是一种协议,用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接,这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发,并于2011年成为标准。

2024-03-29 14:38:11 32

转载 MYSQL中的14个神仙功能,惊艳到我了!!!

我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。

2024-03-26 17:40:41 24

转载 Idea快捷键

【代码】Idea快捷键。

2024-03-26 15:03:18 18

转载 瞧瞧别人家的API接口,那叫一个优雅

在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台API接口,或者提供API接口给第三方平台调用。那么问题来了,如果设计一个优雅的API接口,能够满足:安全性、可重复调用、稳定性、好定位问题等多方面需求?今天跟大家一起聊聊设计API接口时,需要注意的一些地方,希望对你会有所帮助。

2024-03-22 09:46:27 16

转载 java.sql.SQLException: Invalid column type: 1111

源码结合报错信息的parameterMapping输出,可以发现,我们插入的是一个空值,而且也没有指定这个插入字段类型(JdbcType),mybatis就给了一个默认类型。报错的方法在 at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters。解决办法,不给空值,或者参数类型不能为1111,这不,mybatis给出了提示,尝试给参数不同的JdbcType,

2024-02-26 14:16:08 167

转载 缓存击穿,商详页进不去了!!!

从上面小猫的案例中,其实就已经很明了了,所谓缓存击穿就是原本由于缓存组件抗住的流量结果全部打到了数据库层,给数据库带来了巨大的压力,甚至严重的情况下直接把数据库干跨。导致缓存失效的原因也是很显然易见的,由于缓存在一个无法预期的一个场景下缓存失效了。在小猫的案例中可以看到是热卖的商品在redis中Key值全部同时失效导致的。当然这是一种常见的技术方案有问题导致的。那么还有一种导致缓存失效的原因就是缓存中间件直接宕机。

2024-01-31 15:20:19 52 1

转载 和它比起来,其他 Linux 命令都是猹!

sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一。它可以从多方面对系统的资源使用情况进行监控,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等,然后将系统中的各种性能数据收集起来并显示给用户。sar 命令的一些常用选项和功能如下:CPU使用统计:使用“-u”选项可以输出整体CPU的使用情况,包括用户模式下的时间百分比、系统模式下的时间百分比等。

2024-01-29 11:09:28 54

转载 索引 + 异步 ,从 12h 优化到 15 min

一、一般我会这样做:通过接口或者定时任务的形式读取Oracle或者通过FileOutputStream将Base64解密后的byte[]存储到本地遍历本地文件夹,将图片通过FTP上传到第三方服务器现场炸锅了!实际的数据量非常大,据统计差不多有400G的图片需要导出。现场人员的反馈是,已经跑了12个小时了,还在继续,不知道啥时候能导完。停下来呢?之前的白导了,不停呢?不知道要等到啥时候才能导完。这不行啊,速度太慢了,一个简单的任务,不能被这东西耗死吧?

2024-01-29 10:49:46 53

转载 Redis 除了用作缓存还能干吗?

今天我们来聊聊 Redis 的使用案例。Redis 是一种内存键值数据库。它支持多种数据结构,如 String, Hash, List, Set 等

2024-01-22 17:29:12 48

转载 如何保证API安全?

最近知识星球中有位小伙伴问了我一个问题:如何保证接口的安全性?根据我多年的工作经验,这篇文章从11个方面给大家介绍一下保证接口安全的一些小技巧,希望对你会有所帮助。

2024-01-22 15:56:00 116

转载 可解决95%以上问题的Linux命令!能用到退休

对于我们程序员来说,我们始终绕不过去要与 Linux 系统打交道。很多人,特别是新手程序员,一看到 Linux 系统那个小黑框,就发怵,其实,如果你真正去深入了解了,然后再学会一些常用的命令,慢慢的再在工作加以运用,你会发现真不难,而且挺容易操作的。给大家整理了日常工作中常用的 Linux 系统命令,仅供大家参考,

2024-01-19 11:11:56 38

转载 MySQL索引全解:从理论到实践,打造高效查询的指南

为了加快数据更新的速度,在InnoDB中,每次数据更新实际上都会先查询当前要更新的数据页是否已经加载到内存中了,如果是,则直接更新内存中的数据页即可,如果不是,则会先将本次更新记录到中,这样则能免去一次从磁盘加载数据页的过程。

2024-01-17 18:23:49 38

转载 MySQL 单表可以放多少数据,最多 2000 万?

title、description 分别为 varchar(50)、varchar(250),这两个应该都不会产生溢出页(不太确定),字符编码均为 utf8mb4,实际生产中 70% 以上都是存的中文( 3 字节),25% 为英文(1 字节),还有 5% 为 4 字节的表情,则存满的情况下将占用 (50+250)×(0.7×3+0.25×1+0.05×4) =说明:以上的数据计算,仅供参考,因为有的文章说,在主键为 bigint 的情况下,可存放 160 万叶子节点,整整多出 65 万。

2024-01-17 15:50:47 220

转载 Hutool 嘎嘎香,开炫了!

Hutool 官方文档:https://doc.hutool.cn/

2024-01-09 11:26:18 56

转载 Apollo 携程框架 开源配置

Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

2024-01-08 12:52:04 180

转载 【无标题】

org.apache.commons.lang.StringUtils Apache commons lang3包下的StringUtils工具类中封装了一些字符串操作的方法,非常实用,使用起来也非常方便。最近自己也经常在项目中使用到了里面的一些方法,在这里将常用的方法总结了一下,方便以后查阅,大家有兴趣也可以看一下。  首先需要说明的一点是,StringUtils类在操作字符串时,即使操作的为null值也是安全的,不会报NullPointerException,这一点在后面的例子中再具体说明。因此,

2023-12-19 15:47:47 42

转载 看看京东的接口优化技巧,确实很优雅!!

关于锁粒度:就是你要锁的范围有多大,不管是 synchronized 还是 redis 分布式锁,只需要在临界资源处加锁即可,不涉及共享资源的,不必要加锁,就好比你要上卫生间,只需要把卫生间的门锁上就可以,不需要把客厅的门也锁上。我们都用过数据库连接池,线程池等,这就是池思想的体现,它们解决的问题就是避免重复创建对象或创建连接,可以重复利用,避免不必要的损耗,毕竟创建销毁也会占用时间。变换思路,更高一级思考问题,站在接口设计者的角度去开发需求,会避免很多这样的问题,也是降本增效的一种行之有效的方式。

2023-11-20 17:07:35 72

转载 消息中间件之RocketMQ相关知识

本篇文章包含RocketMQ使用场景、消费模式、高可用机制、负载均衡、延迟消息等等,希望对大家有所帮助。

2023-11-17 17:11:41 77

转载 代码优雅之道——如何干掉过多的 if else

注意标题是过多的,所以三四个就没必要干掉了。实际开发中我们经常遇到判断条件很多的情况,比如下图有20多种情况,不用想肯定是要优化代码的,需要思考的是如何去优化?网上很多说用switch case啊,首先不比较if else与switch case效率问题的,只从代码整洁度来看二者没啥区别啊!我们这里更重要的是代码整洁度问题,为什么呢?来看下文的比较。

2023-11-16 10:37:35 56

转载 【如何解决 MySQL 主从延时问题?】

主从延迟,其实就是“从库回放” 完成的时间,与 “主库写 binlog” 完成时间的差值,会导致从库查询的数据,和主库的不一致。

2023-11-16 10:12:43 33

转载 面试官:线程池大小设置多少,比较合适?

多线程和并行性:并行处理是一种将较大的任务划分为较小的子任务并将这些子任务分布在多个 CPU 核心或处理器上的技术,以利用并发执行并提高整体性能

2023-11-14 11:26:37 66

转载 单机幂等性的 6 种实现方案

本文讲了防止数据重复提交的 6 种方法,首先是前端的拦截,通过隐藏和设置按钮的不可用来屏蔽正常操作下的重复提交。但为了避免非正常渠道的重复提交,我们又实现了 5 个版本的后端拦截:HashMap 版、固定数组版、双重检测锁的数组版、LRUMap 版和 LRUMap 的封装版。

2023-11-14 11:15:05 36

转载 全网最详细的分布式一致性方案讲解(彻底搞懂)

分布式系统下的数据一致性可以分为两大类:事务一致性:当多个节点进行操作时,所有节点最终达成的状态都是一致的。这需要通过协调来保证操作的正确性,避免出现数据不一致的情况;副本一致性:数据的多个副本之间保持一致性,这需要保证在对数据进行修改时,所有副本都能够及时更新,避免数据出现不同步的情况;:电商平台使用优惠券下单场景:下单成功,优惠券必须处于“已锁定”状态;支付成功,优惠券必须处于“已使用”状态;订单取消,优惠券需要恢复为“待使用”状态;优惠券和订单间就属于“事务一致”,两者间存在强关联关系。

2023-11-10 11:36:28 702

原创 SpringBoot 继承 Apollo 应用 简单步骤记录

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

2023-11-02 17:00:33 233

转载 奇淫巧技,CompletableFuture 异步多线程是真的优雅

的get()方法是阻塞的,我们一般建议使用。并且一般建议使用自定义线程池。但是如果线程池拒绝策略是或者,当线程池饱和时,会直接丢弃任务,不会抛弃异常。因此建议,线程池策略最好使用,然后耗时的异步线程,做好线程池隔离哈。

2023-11-01 18:01:54 71

转载 Java编程教程-Java TreeSet类

Java TreeSet类实现了使用树进行存储的Set接口。它继承了类并实现了NavigableSet接口。TreeSet类的对象按升序存储。关于Java TreeSet类的重要点有:Java TreeSet类仅包含唯一元素,就像一样。Java TreeSet类的访问和检索时间非常快。Java TreeSet类不允许空元素。Java TreeSet类是非同步的。Java TreeSet类维护升序。Java TreeSet类仅包含唯一元素,就像HashSet一样。

2023-10-27 16:36:29 41

转载 dubbo源码分析(二):超时原理以及应用场景

超时的实现原理是什么?之前有简单提到过, dubbo默认采用了netty做为网络组件,它属于一种NIO的模式。消费端发起远程请求后,线程不会阻塞等待服务端的返回,而是马上得到一个ResponseFuture,消费端通过不断的轮询机制判断结果是否有返回。因为是通过轮询,轮询有个需要特别注要的就是避免死循环,所以为了解决这个问题就引入了超时机制,只在一定时间范围内做轮询,如果超时时间就返回超时异常。

2023-10-27 15:15:47 64

转载 Java编程教程-Java LinkedList类

它提供了链表数据结构。返回包含列表中所有元素的数组,按照适当的顺序(从第一个元素到最后一个元素)排序。用于使用指定集合中的元素构建一个列表,元素的顺序是由集合的迭代器返回的顺序。返回列表中最后一次出现指定元素的索引,如果列表不包含该元素,则返回-1。将指定集合中的所有元素追加到列表末尾,按照指定集合的迭代器返回的顺序。返回列表中首次出现指定元素的索引,如果列表不包含该元素,则返回-1。获取并删除列表的最后一个元素,如果列表为空,则返回null。获取列表的最后一个元素,如果列表为空,则返回null。

2023-10-26 17:50:56 91

转载 Java编程教程-Java Map接口

Map不允许重复的键,但可以有重复的值。HashMap和LinkedHashMap允许使用null键和null值,但TreeMap不允许使用null键或null值。Map接口是基于键(key)和值(value)对的集合。Map中的键是唯一的。LinkedHashMap是Map的实现,它继承自HashMap类,并且按照插入顺序维护元素顺序。如果需要根据键进行搜索、更新或删Java Map接口除元素,那么Map是很有用的。TreeMap是Map和SortedMap的实现,它按照升序维护元素顺序。

2023-10-26 17:46:50 105

转载 为什么阿里巴巴要禁用 Executors 创建线程池?

ThreadPoolExecutor 对象构造函数参数说明:corePoolSize => 线程池核心线程数量maximumPoolSize => 线程池最大数量keepAliveTime => 空闲线程存活时间unit => 时间单位workQueue => 线程池所使用的缓冲队列threadFactory => 线程池创建线程使用的工厂handler => 线程池对拒绝任务的处理策略

2023-10-26 15:39:47 24

转载 全网最全的 IntelliJ IDEA 快捷键教程,动图演示(建议收藏)

全网最全的 IntelliJ IDEA 快捷键教程,该快捷键共分 16 种,

2023-10-25 14:28:05 49

转载 图解分库分表,写的太好了!

中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大,会导致性能变慢。使用方案可以参考数据进行水平拆分。把4000万数据拆分4张表或者更多。当然也可以分库,再分表;

2023-10-23 20:02:32 29

转载 学会 CompletableFuture:让你的代码免受阻塞之苦!

CompletableFuture 异步 高效

2023-10-23 18:04:43 50

转载 超过1000w条数据,MySQL查询越来越慢?四种方案帮你解决!

在系统中需要进行分页操作时,我们通常会使用 LIMIT 加上的方式实现,语法格式如下。在有对应索引的情况下,这种方式一般效率还不错。但它存在一个让人头疼的问题,在偏移量非常大的时候,也就是翻页到很靠后的页面时,查询速度会变得越来越慢。我们来演示一下。先创建一个订单表 t_order。往表中插入1100w 条数据。( t1 是一个有100条数据的表,这里我利用笛卡尔乘积的方式插入1100w条数据)我们看下,如下这些查询花费的时间。

2023-10-23 17:41:14 353

原创 EasyExcel 简单导入/导出 Controller Demo

一、EasyExcel简单导入二、EasyExcel简单导入 * 1.1、单sheet导入(读)Excel * 1.2、分页(批次)查询数据循环写入Excel表格三、EasyExcel简单导入 * 1.1、多sheet导入(读)Excel * 1.2、分页(批次)查询数据循环写入Excel表格一、EasyExcel简单导出二、EasyExcel简单批量导出 * 1、单sheet导出(写入)Excel * 2、分页(批次)查询数据循环写入

2023-10-11 14:41:51 564

原创 EasyExcel导入/导出Excel文件

EasyExcel导入/导出Excel文件简单写法 demo1、导入依赖2、创建简单导入、导出demo3、创建类 继承AnalysisEventListener(导入Excel监听解析表格数据)4、创建类 基于注解 自定义Excel导出模版

2023-10-10 15:16:21 359

转载 讲的太通透了,切面 AOP 优雅的实现权限校验!(VIP典藏版)

AOP(Aspect Oriented Programming),面向切面思想,是Spring的三大核心思想之一(两外两个:IOC-控制反转、DI-依赖注入)。那么AOP为何那么重要呢?在我们的程序中,经常存在一些系统性的需求,比如权限校验、日志记录、统计等,这些代码会散落穿插在各个业务逻辑中,非常冗余且不利于维护。例如下面这个示意图:有多少业务操作,就要写多少重复的校验和日志记录代码,这显然是无法接受的。

2023-09-27 14:28:17 127

空空如也

空空如也

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

TA关注的人

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