- 博客(135)
- 资源 (11)
- 收藏
- 关注
原创 JFreeChart 生成Word图表
JFreeChartJFreeChart是一个开源的Java图表库,专为JAVA平台设计,用于生成高质量的2D图表。JFreeChart是一个完全使用JAVA语言编写的图表绘制类库。它最初由David Gilbert创建,自2001年以来一直在持续开发和更新,目前已成为Java社区中广泛使用的图表库之一。JFreeChart是一个开源项目,遵循GNU通用公共许可证(LGPL),允许在专有应用程序中使用。通过 JFreeChart 创建图表,将图表转换为图像格式(如PNG或JPEG),然后将图像解析
2024-06-26 16:25:14 1671
原创 Java操作Word文档
Word文档本质上是一个遵循Open XML标准的ZIP压缩包,包含了一系列XML文件和其他资源(如图片)。因此,操作Word文档的关键在于解析和修改这些XML文件。Java开发者可以选择多种库来实现这一目标,包括但不限于Apache POI、docx4j、iText以及Spire.Doc for Java等。JFreeChart是一个开源的Java图表库,专为JAVA平台设计,用于生成高质量的2D图表。通过 JFreeChart 创建图表,将图表转换为图像格式(如PNG或JPEG),然后将图像
2024-06-26 16:09:23 4947 2
原创 SpringBoot整合阿里云短信服务
要在Spring Boot项目中整合阿里云短信服务,你需要遵循以下步骤:1. 准备工作注册阿里云账号:首先确保你有一个阿里云账号,并且已经开通了短信服务。获取AccessKey ID和AccessKey Secret:在阿里云控制台的安全管理页面创建AccessKey,这是访问阿里云API的凭证。申请短信签名和模板:在阿里云短信服务控制台申请短信签名和短信模板,签名用于标识发送者的身份,模板用于定义短信内容,需要审核通过才能使用。
2024-06-11 17:41:36 1836 1
原创 AOP实现自定义滑动窗口限流
滑动窗口算法是一种广泛应用于计算机科学和数据分析中的数据流算法,特别适用于处理具有时间序列特性的数据,如网络流量监控、速率限制、数据分析等领域。其核心思想是在一个固定大小的“窗口”内对数据进行统计分析,这个窗口会随着数据的流入而向前滑动,始终保持最新一段时间内的数据统计。要实现AOP结合滑动窗口算法来实现自定义规则的限流,我们可以在原有的基础上进一步扩展,以支持更灵活的配置和更复杂的规则。
2024-06-11 09:57:53 1255
原创 SpringAOP 常见应用场景
常见应用场景:日志记录、权限检查、事务管理、异常处理、性能监控、缓存、参数校验和转换、API调用统计、SLF4J、Logback、Log4j等日志框架集成、自定义注解的处理。1、AOP实现 性能监控;2、AOP实现 API调用统计;3、AOP实现 缓存;4、AOP实现自定义滑动窗口限流
2024-06-08 13:54:29 3161 1
原创 SpringBoot 参数验证的几种方式
1、为什么要进行参数验证?数据完整性与准确性、安全防护、性能优化、用户体验、代码可维护性、遵循最佳实践、减少异常处理、合规性2、验证方式:if 语句判断、Assert、Validator、自定义验证注解
2024-06-03 14:47:48 4715 1
原创 Java实现对象存储的4种方式(本地对象存储、MINIO、阿里云OSS、FastDFS)
对象存储(Object Storage)是一种数据存储架构,它以对象(Object)为基本单位管理数据,区别于传统的文件存储(按目录层级组织)和块存储(主要用于磁盘和卷)。在对象存储中,每个对象包含数据本身、可变数量的元数据(描述数据的信息)和一个全局唯一的标识符(通常是对象的名称或键)。这种存储模型非常适合处理非结构化数据,如图片、视频、文档等。2、本地对象存储3、MINIO4、阿里云OSS5、FastDFS
2024-05-29 18:00:39 3417 1
原创 Java实现异步的4种方式
异步(Asynchronous)是指在进行多任务处理时,各个任务的执行不依赖于其他任务的完成,无需等待一个操作完成后再开始下一个操作。与之相对的是同步(Synchronous),同步操作需要按顺序执行,每个步骤必须等待前一个步骤完成才能开始。1、Future与Callable2. CompletableFuture3. Spring框架的异步支持@Async4. 使用消息队列RabbitMQ、Kafka
2024-05-29 13:27:48 15758
原创 Arthas使用教程—— 阿里开源线上监控诊断产品
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。arthas:help 、dashboard、jvm、 jad、monitor、watch、trace、tt、redefine 、stop
2024-02-06 15:57:18 9947 1
原创 JVM垃圾回收机制及调优工具Arthas的使用
JVM垃圾回收机制:引用计数器法、可达性分析算法垃圾收集算法: 标记-清除、复制、标记-整理、分代、三色标记法垃圾收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1、ZGC、ShenandoahJVM调优:基础命令:jps、jinfo、jstat、jstack、 jmap、toparthas:help 、dashboard、jvm、 jad、monitor、watch、trace、tt、redefine 、stop
2024-02-06 15:45:36 2210 1
原创 布隆过滤器 Bloom Filter
1、什么是布隆过滤器?2、布隆过滤器的工作原理3、布隆过滤器的优点4、布隆过滤器的缺点5、布隆过滤器的使用场景6、布隆过滤器的数据结构7、布隆过滤器的扩容8、SpringBoot 整合 布隆过滤器缓存穿透防护、重复数据检测、垃圾邮件过滤、实时监控与报警系统、推荐系统、数据库索引优化、社交网络和互联网服务、数据分析与挖掘、网络安全
2024-01-12 16:40:02 13577
原创 RabbitMQ解决消息丢失以及重复消费问题
RabbitMQ如何解决消息丢失问题:生产者确认机制、持久化消息、消费者ACK确认机制、集群部署、预拉取策略调整、监控与告警基于Spring AMQP框架整合ACK/NACK机制RabbitMQ 如何实现幂等性设计:业务层幂等处理、确认模式选择、死信队列与重试策略、幂等服务设计、事务与补偿机制幂等服务设计思路:通过雪花算法生成分布式唯一ID、通过枚举类,设计Message消费状态我们可以给每一个消息绑定一个分布式唯一ID,在通过Redis记录该消息的消费状态,保证每条消息只能被消费一次
2024-01-09 16:28:12 5337 3
原创 Redis 持久化
Redis 持久化配置 :RDB、AOF、混合持久化RDB:save、bgsaveAOF:自动触发AOF重写、AOF重写机制Redis 4.0 混合持久化:混合持久化配置Redis持久化关闭未生效:不同版本Redis关闭RDB的坑
2024-01-05 11:02:23 2669 4
原创 JVM高频面试题(2023最新版)
JVM内存区域、运行时数据区、堆和栈的区别、队列和栈的区别、对象的创建过程、 内存溢出异常、垃圾收集器、垃圾回收机制、垃圾回收算法、Serial收集器、ParNew收集器、Parallel Scavenge、Serial Old收集器、Parallel Old收集器、CMS收集器、G1收集器、ZGC、垃圾回收器工作流程、虚拟机类加载机制、JVM加载Class文件的原理机制、类加载器、双亲委派、JVM调优
2023-12-26 14:54:38 1533
原创 MySQL explain执行计划详解
2(id = 3)、【select id, name from t1 where address = ‘11’】:因为是在from语句中包含的子查询所以被标记为DERIVED(衍生),where address = ‘11’ 通过复合索引idx_name_email_address就能检索到,所以type为index。表示索引中使用的字节数,查询中使用的索引的长度(最大可能长度),并非实际使用长度,理论上长度越短越好。mysql对数据使用一个外部的索引排序,而不是按照表内的索引进行排序读取。
2023-12-26 14:03:46 722
原创 Dubbo 快速上手
”Dubbo”是阿里巴巴开源的基于 `Java` 的高性能` RPC`(一种远程调用) 分布式服务框架,致力于提供高性能和透明化的`RPC`远程服务调用方案,以及`SOA`服务治理方案**。1.1 核心功能:远程通讯、集群容错、自动发现;1.2 架构演变:单体架构、垂直应用框架、分布式应用架构、分布式架构-SOA面向服务架构、分布式结构-微服务。2.3 `RPC`需要解决的问题;3.`Dubbo`作用;4.`Dubbo` 和 `Spring Cloud`区别;5.`Dubbo`技术架构;
2023-12-26 14:02:15 1056
原创 Redis高频面试题(2023最新版)
哨兵模式基于主从模式,可以自动切换主从,可用性高,但是每个节点存储的数据是一样的,浪费内存,还难以扩容,因此redis 3.0 之后加入了 Redis Cluster 集群(切片集群),也就是说每台redis服务器上存储的内容都不同,解决了扩容问题,它还可以保存大量数据,还提供了复制和故障转移功能。AOF这种追加指令的方式,会造成AOF文件越来越大,因此redis提供了AOF文件重写机制,当AOF文件的大小超过所设定的阈值的时候,redis就会对AOF的文件进行压缩,只保留可以恢复数据的最小指令集。
2023-10-23 00:10:36 305
原创 MQ高频面试题(2023最新版)
1、什么是消息队列?2、消息队列有哪些使用场景?(为什么使用消息队列)3、消息队列如何解决消息丢失问题?4、消息队列如何保证消息的顺序性?5、如何避免消息重复消费?6、如何解决幂等性问题?7、如何处理消息队列消息积压问题?8、MQ技术选型9、如何保证数据一致性,事务消息如何实现?10、RabbitMQ的消息可靠传输如何保证?11、RabbitMQ的消息如何实现路由?
2023-10-21 00:09:16 661 1
原创 并发编程高频面试题(2023最新版)
1、为什么要使用并发编程?3、并发编程三要素4、并行和并发5、线程和进程的区别6、如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?7、线程的创建方式8、Runnable和Callable的区别9、run和start的区别10、线程的状态11、线程调度算法12、线程同步以及线程调度相关的方法13、Java程序中怎么保证多线程的运行安全?14、synchronized15、volatile16、Lock体系17、线程池18、原子操作类
2023-10-21 00:05:54 297
原创 Canal实现Mysql数据同步至Redis、Elasticsearch
1.Canal简介;1.1 MySQL主备复制原理;1.2 canal工作原理;2.开启MySQL Binlog;3.安装Canal;4.SpringCloud集成Canal;4.3 canal配置多个数据同步的目的地;4.5 监听配置;4.8 canal整合异常问题排查思路;4.8.2 使用canal监听数据 启动成功了 没有报错 不过一直监听不到消息
2023-09-20 21:16:56 1528 1
原创 Mysql和ES、Redis数据同步方案汇总
1. 同步双写是最简单的同步方式,能最大程度保证数据同步写入的实时性,最大的问题是代码侵入性太强。2. 异步双写引入了消息中间件,由于MQ都是异步消费模型,所以可能出现数据同步延迟的问题。好处是在大规模消息同步时吞吐量更、高性能更好,便于接入更多的数据源,且各个数据源数据消费写入相互隔离互不影响。3. 基于Mysql表定时扫描同步 ,原理是通过定时器定时扫描表中的增量数据进行数据同步,不会产生代码侵入,但由于是定时扫描同步,所以也会存在数据同步延迟问题,典型实现是采用 Logstash 实现增量同步。
2023-09-20 16:16:30 1665
原创 Seata 处理分布式事务
Seata 处理分布式事务:Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。分布式事务的处理过程:1 ID+ 3 组件模型1 ID:全剧唯一的事务ID术语3组件:- Tc-事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。- TM-事务管理器:定义全局事务的范围︰开始全局事务、提交或回滚全局事务。- RM-资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
2023-07-12 14:53:03 357
原创 Sentinel 熔断与限流
Sentinel 熔断与限流:分布式系统的流量防卫兵随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流星为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。1、流量配置规则;2、熔断降级;3、热点规则;4、系统规则;5、熔断框架比较;6、Sentinel的规则持久化
2023-07-12 14:50:06 1105
原创 Nacos 服务注册和配置中心
Nacos 服务注册和配置中心:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos = Eureka + Config + Bus。1、Nacos发现实例模型;2、注册中心对比;3、Nacos 支持AP和CP模式的切换;4、Nacos 服务配置;5、Nacos 集群是持久化配置
2023-07-12 14:46:46 252
原创 Hystrix 断路器
Hystrix 断路器:Hystrix是一个用于处理分布式系统的**延迟**和**容错**的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。1、服务降级;2、服务熔断;3、服务限流;4、服务监控 hystrixDashboard
2023-07-12 14:43:26 398
原创 OpenFeign 服务接口调用
Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡
2023-07-12 14:40:10 228
原创 Ribbon 负载均衡服务调用
Ribbon 负载均衡服务调用:Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。主要功能是提供客户端的软件负载均衡算法和服务调用。1、Ribbon工作流程;2、自定义Ribbon 负载均衡算法
2023-07-12 14:37:08 985
原创 SpringCloud Alibaba微服务分布式架构组件演变
SpringCloud Alibaba:1、服务注册中心:Eureka、Zookeeper、Consul、Nacos;2、服务调用:Ribbon、LoadBalancer、Feign、OpenFeign;3、服务降级:Hystrix、Resilience4j、Sentinel;4、服务网关:Zuul、Gateway;5、服务配置:Config、Nacos;6、服务总线:Bus、Nacos;6、分布式事务解决方案:seata
2023-07-12 14:23:10 1897
原创 XSS跨站脚本安全漏洞防护
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,并且在未检验数据是否存在XSS代码的情况下,将其存入数据库。存储型XSS可以持续攻击用户,在用户提交了包含XSS代码的数据存储到数据库后,每当用户在浏览网页查询对应数据库中的数据时,那些包含XSS代码的数据就会在服务器解析并加载,当浏览器读到XSS代码后,会当做正常的HTML和JS解析并执行,于是发生存储型XSS攻击。如果address的值是由用户提供的,且存入数据库时没有进行合理的校验,那么攻击者就可以利用上面的代码进行存储型XSS攻击。
2023-06-05 15:12:45 1982
转载 面向对象设计原则
面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。单一职责原则 :**一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。**开闭原则:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。里氏代换原则: 所有引用基类(父类)的地方必须能透明地使用其子类的对象。依赖倒转原则:依赖倒转原则:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是
2023-05-24 10:16:26 648 1
原创 SpringCloud 性能优化
Springcloud的性能问题、Servlet 容器 优化、Feign 配置优化、Zuul配置 优化、hystrix配置 优化、ribbon 优化
2023-05-24 10:05:33 1828
原创 Redis+LUA脚本结合AOP实现限流
1、通过lua脚本来实现动态的创建redis缓存2、基于Guava cache缓存存储实现限流切面3、自定义限流异常和限流key类型枚举
2023-05-20 10:39:18 1740 3
原创 Jmeter 压测 QPS
Jmeter的基本概念、Jmeter下载安装、Jmeter的目录结构、Jmeter设置中文、线程组、Jmeter创建http请求、 Jmeter设置请求头信息 、Jmeter测试方法概论、Jmeter结果树、Jmeter图形结果
2023-05-15 15:59:48 3864
原创 Spring 面试题总结(2023最新版)
Spring的理解,Spring的AOP理解,Spring的IOC的理解,Autowired和Resource的区别,Spring常用注解,SpringMVC常用注解,循环依赖,Spring Bean的生命周期,Spring支持几种作用域,Spring事务的隔离级别,Spring中的事务传播属性,Spring中事务实现方式,事务的本质,@Transactional的使用,SpringMVC的理解,Bootstrap.yml的作用,@Indexed注解,Spring的AOP理解,容器的启动流程,注解的原理
2023-05-06 14:54:21 3036 1
原创 滑动窗口算法实现单位时间API限流
通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请求进行限制,以防止自身服务由于资源耗尽而停止服务。将一个时间窗口分为5份。每一份里面都有一个独立计数器c。在时间轴上的一个时间窗口内,没当请求过来的时候,就会求计数器 c1+c2+c3+c4+c5的和,当达到阀值就拒绝,没达到当前小格子里面的计数器就加1。滑动窗口算法是固定窗口算法的优化版本,主要是为了解决固定窗口中的零界值问题导致限流失败的问题。在限流中有两个概念需要了解。
2023-04-26 18:00:15 696 2
原创 MySQL 大厂面试题总结(2023最新版)
1、索引2、建表规约3、索引规约4、SQL语句5、什么是Buffer Pool6、InnoDB如何管理Page页7、 change Buffer 8、MySQL为什么改进LRU算法?9、使用索引一定可以提升效率吗?10、索引有哪几种类型?11、什么是索引下推?12、什么是自适应哈希索引?13、为什么LIKE以"%"开头索引会失效?14、InnoDB与MyISAM的区别15、三个范式16、MySQL的事务17、MySQL视图18、大表数据查询优化思路
2023-04-04 11:49:41 3498
原创 MySQL 索引的数据结构及优化实战
1、索引的数据结构为什么是B+Tree和HASH?2、 索引的类型3、 InnoDB存储引擎索引实现(聚集)4、MyISAM存储引擎索引实现(非聚集)5、联合索引6、EXPLAIN关键字7、索引失效的情况8、为什么主键要设置成自增的?9、建表上的优化 10、索引失效的案例11、建表规约(阿里巴巴开发手册)12、索引规约(阿里巴巴开发手册)13、SQL语句(阿里巴巴开发手册)
2023-04-01 17:38:24 1406
原创 MyBatis 源码解析 面试题总结
MyBatis1、工作原理2、MyBatis的缓存3、缓存扩展4、设计模式5、SqlSessionFactory的理解6、SqlSession的理解7、对MyBatis的理解8、分页的理解9、插件原理10、不同Mapper中的id是否可以相同?11、架构设计的理解12、传统JDBC开发13的不足13、数据源模块的设计14、事务模块的设计15、Mapper接口的设计理解16、Reflector模块的理解17、类型转换模块18、spring/SpringBoot整合MyBatis
2023-03-31 17:43:25 1103
原创 Redis面试题 (2023最新版)
一、Redis为什么快?二、Redis合适的应用场景 三、Redis为什么6.0之前不支持多线程 四、Redis为什么6.0之后引入多线程 五、Redis有哪些高级功能 六、为什么需要使用Redis 七、Redis的事务 八、Redis的过期策略以及内存淘汰机制 九、什么是缓存穿透?如何避免? 十、什么是缓存雪崩?如何避免? 十一、Redis如何设计分布式锁 十二、什么是bigkey?会有什么影响? 十三、Redis如何解决key冲突 十四、怎么提高换成命中率 十五、Redis持久化方式有哪些方式?
2023-03-29 10:09:24 27204 6
原创 ConcurrentHashMap
ConcurrentHashMap在1.8做了哪些优化?ConcurrentHashMap的散列算法?ConcurrentHashMap初始化数组的流程?ConcurrentHashMap扩容的流程?ConcurrentHashMap读取数据的流程?ConcurrentHashMap中计数器的实现
2023-03-28 10:04:06 2598
MyBatis源码学习环境
2023-03-31
Linux安装jdk、mysql、maven、Tomcat、nginx、redis、nacos、erlang、rabbitmq
2023-03-24
RabbitMQ-Windows版.7z
2022-12-06
RabbitMQ-Linux版
2022-12-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人