自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 问答 (1)
  • 收藏
  • 关注

原创 MySQL-事务

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。 在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修

2023-11-14 11:02:25 265

原创 MySQL-sql的优化

Join优化能用innerjoin 就不用left join right join,如必须使用一定要以小表为驱动,内连接会对两个表进行优化,优先把小表放到外边,把大表放到里边。比如设置合适的字符串类型(char和varchar) char定长效率高,varchar可变长度,效率稍低。如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响可以采用读写分离的架构。尽量用union all代替union union会多一次过滤,效率低。读写分离解决的是,数据库的写入,影响了查询的效率。

2023-11-04 15:59:42 412

原创 MySQL-索引

索引(index)是帮助MysQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

2023-11-04 15:45:07 277

原创 MySQL-慢sql语句分析

如果一条sql执行很慢的话,我们通常会使用mysql自动的执行计划explain来去查看这条sql的执行情况。语法格式:效果如下。

2023-11-04 14:30:07 260

原创 Redis-分布式锁

Redis实现分布式锁主要利用Redis的setnx命令。setnx是SET if not exists(如果不存在,则SET)的简写。(NX是互斥、EX是设置超时时间)但是如上会面临一个问题,当业务执行时间太长,导致业务还没执行完锁已到期,这样的话当其它线程进来时就不能保证业务的原子性。

2023-11-02 11:04:48 341

原创 Redis-双写一致性

当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致缓存命中,直接返回;缓存未命中查询数据库,写入缓存,设定超时时间延迟双删可以采用的是redisson实现的读写锁,在读的时候添加共享锁,可以保证读读不互斥,读写互斥。当我们更新数据的时候,添加排他锁,它是读写,读读都互斥,这样就能保证在写数据的同时是不会让其他线程读数据的,避免了脏数据。这里面需要注意的是读方法和写方法上需要使用同一把锁才行。

2023-10-31 15:41:16 118

原创 面试-Redis-缓存雪崩

解决方法主要是设置不同时间的TTL,比如可以在原有的过期时间的基础上设置随机的过期时间。比如可以设置在1--10分钟,这样每个缓存的过期重复率就会大大降低,就能减少雪崩问题。:缓存过期是指设置缓存时都采用了同一过期时间,导致缓存在莫一时刻同时失效,从而请求全部全部打到数据库中,导致数据库压力过大而挂机。它与缓存击穿的区别是:缓存击穿是一个key,而缓存雪崩是很多key。或者使用Redis集群的高可用性,如主从、哨兵、分片(后续更新):什么是缓存雪崩?

2023-10-22 16:50:00 362 1

原创 面试-Redis-缓存击穿

当然两种方案各有利弊:如果选择数据的强一致性,建议使用分布式锁的方案,性能上可能没那么高,获取锁需要等待,也有可能产生死锁的问题如果选择key的逻辑删除,则优先考虑的高可用性,性能比较高,但是数据同步这块做不到强一致。

2023-10-22 16:47:46 482 1

原创 面试-Redis-缓存穿透

什么是缓存穿透?怎么解决?:缓存穿透就是指查询一个不存在的数据,那么该请求必然会打到数据库。数据库查询不数据因此不会写入缓存,所以会导致每次请求都进入数据库,从而给数据库带来较大的压力导致数据库挂掉。解决方案的话,我们通常都会用(缓存空对象/布隆过滤器)来解决它:好的,你能介绍一下吗?答,可以的,...

2023-10-19 09:48:51 322 1

原创 图片文字识别-管理敏感词

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程方案说明百度OCR收费Google维护的开源OCR引擎,支持Java,Python等语言调用Tess4J封装了Tesseract-OCR ,支持Java调用Tesseract支持UTF-8编码格式,并且可以“开箱即用”地识别100多种语言。

2023-08-18 12:01:16 365

原创 freemarker

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言,不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。

2023-06-24 17:01:01 377

原创 spring security(密码编码器、授权,会话)

如果赞成票与反对票相同且不等于0,并且属性allowIfEqualGrantedDeniedDecisions的值为true(值默认为true),则表示通过,否则将抛出异常AccessDeniedException。它的逻辑与另外两种实现有点不一样,另外两种会一次性把受保护对象的配置属性全部传递 给AccessDecisionVoter进行投票,而。false)而定,如果该值 为true则表示通过,否则将抛出异常AccessDeniedException。如果没有反对票,但是有赞成票,则表示通过。

2023-05-29 15:53:02 740

原创 Node.js

使用require()加载自定义模块时,必须指定以』或../开头的路径标识符。在加载自定义模块时,如果没有指定/或../这样的路径标识符,则 node会把它当作内置模块或第三方模块进行加载。按照确切的文件名进行加载补全.js扩展名进行加载补全.json扩展名进行加载补全.node扩展名进行加载加载失败,终端报错官方给出的概念:Express是基于Node.js 平台,快速、开放、极简的Web开发框架。

2023-05-24 16:19:37 730

原创 微服务保护(线程隔离、降级、熔断)

信号量不会去创建独立的线程池,而是直接使用服务A原始的线程去请求,但是它维持了一个计数器。假设这个计数器总量为10,每当服务A向服务B发起请求时计数器就会减一,当请求处理完后在归还信号。假设服务A依赖于服务B和服务C,那么服务A就会分别对服务B和服务C创建线程池,当有请求进来时不会使用服务A本身的线程,而是到对应的线程池中取一个线程来调用feign的客户端来发起远程调用。此时如果服务B出现故障,最多只会把服务A中对应服务B的线程池占满,不会影响到服务A访问服务C。即拦截访问该服务的一切请求;

2023-05-17 19:14:42 770

原创 SpringMVC 执行流程

接收请求、响应结果,所有的请求都要经过它,它是被Tomcat容器初始化的当这个类加载时会加载一些组件类HandlerMapping、HandlerAdapter、ViewResolver等等。:将模型数据通过页面展示给用户,它的实现类支持不同的视图类型,如 jsp,freemarker, pdf 等。:进行视图的解析,根据视图逻辑将 ModelAndView 解析成真正的视图(view)。:处理业务逻辑的 Java 类(我们自己写的 Controller 类)。:负责执行 Handler.

2023-05-15 11:38:23 346

原创 Spring中事务失效的场景

事务通知只有捉到了目标抛出的异常,才能进行后续的回滚处理,如果目标自己处理掉异常,事务通知无法知悉。在catch块添加throw new RuntimeException(e)抛出。Spring为方法创建代理、添加事务通知、前提条件都是该方法是public的。Spring 默认只会回滚非检查异常。配置rollbackFor属性。改为public方法。

2023-05-11 15:24:08 68

原创 redis数据淘汰策略

当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。

2023-05-10 15:04:40 729

原创 redis数据过期策略

redis中提供了两种过期策略:1.惰性删除,2.定期删除。

2023-05-10 14:47:03 792

原创 redis持久化

RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,可以结合两者来使用。

2023-05-10 14:33:52 472

原创 分布式事务(CAP定理和BASE理论)

解决分布式事务,各个子系统之间必须能感知到彼此的事务状态,才能保证状态一致,因此需要一个事务协调者来协调每一个事务的参与者(子系统事务)。分布式系统节点通过网络连接,一定会出现分区问题(P),当分区出现时,系统的一致性(C)和可用性(A)就无法同时满足。因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。这里的子系统事务,称为分支事务;用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝。用户访问分布式系统中的任意节点,得到的数据必须一致。

2023-05-09 11:14:19 522

原创 了解JWT(Json Web Token)

JWT全称为JSON Web Token,是目前最流行的跨域身份验证解决方案。JWT是为了在网络应用环境间传递声明而制定的一种基于JSON的开放标准,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可被加密。jjwt是一个提供JWT创建和验证的Java库。

2023-04-17 19:08:14 888

原创 easycaptcha图形验证码

Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。

2023-04-10 14:38:46 583

原创 hibernate-validator数据校验

有了JavaScript后,校验工作可以放在前端去执行。但是前端传来的数据不可信。前端很容易获取到后端的接口,如果有人直接调用接口,就可能会出现非法数据,所以服务端也要数据校验。Hibernate Validator 框架以很优雅的方式实现参数的校验,让业务代码和校验逻辑分开,不再编写重复的校验逻辑。

2023-04-02 16:19:36 531

原创 knife4j接口文档

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名knife4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!其底层是对Springfox的封装,使用方式也和Springfox一致,只是对接口文档UI进行了优化。:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,对该接口的使用情况一目了然。

2023-04-02 15:09:07 785

原创 自定义starter

spring boot 在配置上相比spring要简单许多, 其核心在于spring-boot-starter, 在使用spring boot来搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用, 免去了各种配置。starter简单来讲就是引入了一些相关依赖和一些初始化的配置。

2023-03-30 11:10:27 250

原创 swagger

再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线接口调试页面等等。这样,如果按照新的开发模式,在开发新版本或者迭代版本的时候,只需要更新Swagger描述文件,就可以自动生成接口文档和客户端服务端代码,做到调用端代码、服务端代码以及接口文档的一致性。通过在项目中引入Springfox,可以扫描相关的代码,生成描述文件,进而生成与代码一致的接口文档和客户端代码。创建配置类SwaggerAutoConfiguration。

2023-03-29 15:07:29 202

原创 悲观锁和乐观锁

悲观锁:认为线程安全问题一定会发生,因此在操作数据之前先获取锁,确保线程串行执行。例如Synchronized、Lock都属于悲观锁乐观锁:认为线程安全问题不一定会发生,因此不加锁,只是在更新数据时去判断有没有其它线程对数据做了修改。如果没有修改则认为是安全的,自己才更新数据。如果已经被其它线程修改说明发生了安全问题,此时可以重试或异常。乐观锁的关键是判断之前查询得到的数据是否有被修改过,常见的方式有两种。

2023-03-07 09:19:44 109

原创 redis缓存基础

什么是缓存缓存就是数据交换的缓冲区(称作cache [ kze]]),是存贮数据的临时地方,一般读写性能较高。缓存的作用:缓存的成本:解决缓存与数据库不一致操作缓存和数据库时有三个问题需要考虑:1.删除缓存还是更新缓存?2.如何保证缓存与数据库的操作的同时成功或失败?3.先操作缓存还是先操作数据库?缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。解决方案:缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到

2022-12-07 09:49:28 314

原创 RabbitMQ入门(二)

消息从生产者发送到exchange,再到queue,再到消费者,可能导致消息丢失的情况:1.发送时丢失:2.MQ宕机,queue将消息丢失3.消费者接收到消息后未消费就宕机RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。结果有两种请求:1.publisher-confirm,发送者确认2.publisher-return,发送者回执实现生产者确认步骤:1.导依赖,写配置配置说明:publish

2022-11-16 16:32:12 6538

原创 了解sentinel

后来的请求必须等待前面执行完成,如果请求预期的等待时间超出最大时长,则会被拒绝。默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此Springivc的每一个端点(Endpoint)就是调用链路中的一个资源。快速失败方式是默认的流量控制方式,当QPS超过任意规则的阈值后,新的请求就会被立即拒绝并抛出FlowException异常。簇点链路释:请求进入服务中的controller的莫个方法,然后方法调用service,service调用mapper形成的链路。

2022-11-10 19:33:05 562

原创 了解什么是服务雪崩

释:服务提供者A因为某种原因出现故障,那么服务调用者服务B依赖于服务A的请求便无法成功调用其提供的接口,假以时日依赖于服务A的请求越来越多导致服务B的Tomcat资源耗尽,造成服务B线程阻塞,导致服务B也出现故障。释:服务A依赖于服务B和服务C(故障),例:服务A会把Tomcat线程划分为许多的独立线程池,每个业务分配一个线程池,那么服务C故障了最多只影响服务A的部分线程。释:服务A依赖于服务B(故障),服务A向服务B发起请求时超过设定的超时时间,它会立即结束等待,并向返回提示信息。

2022-11-07 16:23:28 1962

原创 拼音分词器_自动补全

我们可以在创建索引库时,通过settings来配置自定义的analyzer(分词器)// 自定义拼音分词器PUT /test{"analyzer": { //自定义分词器"my_analyzer": { //分词器名称}},"py": {//根据官网配置属性}}}},"name": {}}}}{"text": ["如家酒店还不错"],"analyzer": "my_analyzer" //自定义分词器的名称}

2022-11-05 16:43:02 955

原创 es聚合入门

【代码】es聚合。

2022-11-05 10:53:08 2045

原创 RestClient

【代码】RestClient。

2022-10-27 10:41:55 863

原创 es_DSL语句

mapping是对索引库中文档的约束,常见的mapping属性包括:

2022-10-21 08:56:40 442

原创 RabbitMQ入门

MQ(MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。​。

2022-10-10 16:54:32 825

原创 docker的几个常用命令

docker基本命令

2022-10-05 13:09:20 286

原创 gateway过滤器执行顺序和跨域配置

gateway过滤器执行顺序和跨域配置

2022-10-01 10:50:07 1300

原创 Gateway入门笔记

gateway入门

2022-09-30 17:26:51 1381

原创 yaml获取属性数据的三种方式

yaml获取属性数据的三种方式

2022-09-26 14:22:11 605

空空如也

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

TA关注的人

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