自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(136)
  • 问答 (7)
  • 收藏
  • 关注

原创 security.springboot之授权

授权的方式包括web授权和方法授权,web授权是通过url拦截进行授权,方法授权是通过 方法拦截进行授权。他 们都会调用accessDecisionManager进行授权决策,若为web授权则拦截器为;若为方法授权则拦截器为MethodSecurityInterceptor。如果同时通过web授权和方法授权则先执行web授权,再执行方 法授权,最后决策通过,则允许访问资源,否则将禁止访问在t_user数据库创建如下表:角色表:权限表:角色权限关系表:修改。

2024-01-23 17:50:44 908

原创 Spring Boot开发Spring Security

自定义登录页面在快速上手中,你可能会想知道登录页面从哪里来的?因为我们并没有提供任何的HTML或JSP文件。SpringSecurity的默认配置没有明确设定一个登录页面的URL,因此会根据启用的功能自动生成一个登录页面URL,并使用默认URL处理登录的提交内容,登录后跳转的到默认URL等等。尽管自动生成的登录页面很方便快速启动和运行,但大多数应用程序都希望定义自己的登录页面。@Configuration//就相当于springmvc.xml文件@Override。

2024-01-23 17:00:59 1291

原创 Java后端开发面试题——企业场景篇

单点登录这块怎么实现的单点登录的英文名叫做:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统。

2023-09-04 17:12:00 1170

原创 Java后端开发面试题——JVM虚拟机篇

线程私有的,内部保存的字节码的行号。用于记录正在执行的字节码指令的地址。javap -v xx.class 打印堆栈大小,局部变量的数量和方法的参数。线程共享的区域:主要用来保存对象实例,数组等,当堆中没有内存空间可分配给实例,也无法再扩展时,则抛出OutOfMemoryError异常。元空间保存的类信息、静态变量、常量、编译后的代码年轻代被划分为三部分,Eden区和两个大小严格相同的Survivor区,根据JVM的策略,在经过几次垃圾收集后,任然存活于Survivor的对象将被移动到老年代区间。老

2023-09-04 11:45:13 1277

原创 Java后端开发面试题——多线程

创建线程的方式有哪些?runnable 和 callable 有什么区别?Runnable 接口run方法没有返回值Callable接口call方法有返回值,是个泛型,和Future、FutureTask配合可以用来获取异步执行的结果Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法的异常只能在内部消化,不能继续上抛线程的 run()和 start()有什么区别?start(): 用来启动线程,通过该线程调用run方法执行run方法中所定义的逻辑代码。

2023-09-02 15:44:50 1940

原创 Java后端开发面试题——集合篇

因为它的底层使用的Arrays类中的一个内部类ArrayList来构造的集合,在这个集合的构造器中,把我们传入的这个集合进行了包装而已,最终指向的都是同一个内存地址。在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值,没有键值相等的节点。​计算数组的容量,如果当前数组已使用长度+1后的大于当前的数组长度,则调用grow方法扩容(原来的1.5倍)所有散列值相同的元素我们都放到相同槽位对应的链表中,链表法中的链表如果是红黑树(可以防止DDos攻击)

2023-08-27 21:31:06 1057 3

原创 Java后端开发面试题——消息中间篇

RabbitMQ-如何保证消息不丢失,SpringAMQP中的的消息默认是持久的,可以通过MessageProperties中的DeliveryMode来指定的manual:手动ack,需要在业务代码结束后,调用api发送ack。auto:自动ack,由spring监测listener代码是否出现异常,没有异常则返回ack;抛出异常则返回nack none:关闭ack,MQ假定消费者获取消息后会成功处理,因此消息投递后立即被删除在消费者出现异常时利用本地重试,设置。

2023-08-24 22:27:51 953

原创 Java后端开发面试题——微服务篇总结

key-resolver :定义限流对象( ip 、路径、参数),需代码实现,使用spel表达式获取 replenishRate :令牌桶每秒填充平均速率。AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,再选择连接数较小的实例。key:定义限流对象,binary_remote_addr就是一种key,基于客户端ip限流。BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器。在任务执行的代码中可以获取分片总数和当前分片,按照。

2023-08-22 22:18:38 2336

原创 Java后端开发面试题——框架篇

条件判断会有像@ConditionalOnClass这样的注解,判断是否有对应的class文件,如果有则加载该类,把这个配置类的所有的Bean放入spring容器中使用。其本质是通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。(查询用户的时候,把用户所属的订单数据也查询出来,这个是立即加载 查询用户的时候,暂时不查询订单数据,当需要订单的时候,再查询订单,这个就是延迟加载)

2023-08-21 22:48:21 1619

原创 Java后端面试题——Mysql篇

存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的 MySQL 存储引擎。# 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志 long_query_time=2。幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了”幻影”。使用id查询,直接走聚集索引查询,一次索引扫描,直接返回数据,性能高。

2023-08-20 23:54:18 274

原创 Java后端开发面试题篇——Redis

缓存穿透:查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库解决方案一:缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存优点:简单 缺点:消耗内存,可能会发生不一致的问题解决方案二:布隆过滤器优点:内存占用较少,没有多余key缺点:实现复杂,存在误判误判率:数组越小误判率就越大,数组越大误判率就越小,但是同时带来了更多的内存消耗用redisson实现布隆过滤器。

2023-08-19 00:14:05 422

原创 对象存储服务MinIO

这样你就不用每次调用的时候写配置了新建一个springboot项目pom.xml导入依赖。

2023-07-21 17:33:57 153

原创 FreeMarker模板引擎

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

2023-07-21 17:12:56 267

原创 图片识别文字审核敏感词——Java

什么是OCR?OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。

2023-07-21 16:59:02 219

原创 同一个项目中一个service调用另一个service的同异步问题

同步:就是在发出一个调用时,在没有得到结果之前, 该调用就不返回(实时处理)异步:调用在发出之后,这个调用就直接返回了,没有返回结果(分时处理)

2023-07-21 16:45:37 582

原创 SpringCloud分布式项目下feign的使用

另外一个微服务(value的值对应)的接口实现(后面统称为B),哪个微服务去实现这个接口,value就是什么@Autowired@Override接着在B项目中写mapper、service层的实现即可。

2023-07-21 16:41:43 283

原创 项目实战——延时任务精准发布策略

定时任务:有固定周期的,有明确的触发时间延迟队列:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件,任务可以立即执行,也可以延迟应用场景:场景一:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单;如果期间下单成功,任务取消场景二:接口对接出现网络问题,1分钟后重试,如果失败,2分钟重试,直到出现阈值终止。

2023-07-21 12:54:06 78

原创 nginx的前端集成

对于springcloud项目,后端我们有很多的微服务,当然前端我们也可以有很多的小项目进行集成。

2023-07-14 14:41:20 873

原创 网关微服务简单配置

routes中的配置你需要修改,你的服务毕竟和我的不一样嘛,这样以来,我们直接给网关发送请求就可以访问这里的服务了,例如我的网关,你必须要在路径前面加上user才可以。对于网关而言,他并不是只能在yml中设置,这是我的一个过滤器,起到了之前我们的那种springmvc身份拦截器的功能。bootstrap.yml,在nacos中,它比application.yml优先级要高,当然你可以使用。其中data id就是你的application name,微服务其实就是根据服务名称进行识别的。

2023-07-14 14:33:56 875

原创 Swagger、knife4j简介

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!knife4j: Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j。

2023-07-14 14:24:40 206

原创 Java分布式项目常用技术栈简介

前提是你已经安装了docker,没有安装的可以看我之前的博客,我有介绍过。--restart=always 开机启动。MODE=standalone 单机版。-p 8848:8848 映射端口。-d 创建一个守护式容器在后台运行。这些一般来说是不会有问题的。版本号你可以自行修改。

2023-07-14 14:10:56 1208 1

原创 Vue2——入门(适合后端程序员看)

Vue 的组件文件以 .vue 结尾,每个组件由三部分组成template 模板部分,由它生成 html 代码script 代码部分,控制模板的数据来源和行为style 样式部分,一般不咋关心入口组件是 App.vueexport default 导出组件对象,供 main.js 导入使用这个对象有一个 data 方法,返回一个,给 template 提供数据{{}}在 Vue 里称之为插值表达式,用来data 方法返回的属性,的含义是数据发生变化时,页面显示会同步变化。

2023-06-01 16:19:38 246

原创 Vue2——数据双向绑定

你可以看到事件绑定我给了两种方式,其中第二种时缩写方式简写方式:可以把 v-on: 替换为 @在 methods 方法中的 this 代表的是 data 函数返回的数据对象。

2023-06-01 16:12:53 628

原创 Axios后端程序员快速入门简述

axios 它的底层是用了 XMLHttpRequest(xhr)方式发送请求和接收响应,xhr 相对于之前讲过的 fetch api 来说,功能更强大,但由于是比较老的 api,不支持 Promise,axios 对 xhr 进行了封装,使之支持 Promise,并提供了对请求、响应的统一拦截功能。

2023-06-01 16:03:33 524

原创 Javascript之查找元素

document.getElementById - 根据 id 值查找一个元素[document|元素].querySelector - 根据选择器查找第一个匹配元素[document|元素].querySelectorAll - 根据选择器查找所有匹配元素。

2023-05-29 21:50:53 915

原创 Javascript循环for in for of

主要用来遍历对象可以看到这样遍历出来的的是属性名,如何获取属性值呢?后面的写法是可以看到值的。

2023-05-29 21:36:50 64

原创 JavaScript——结构解析[]{}

这里的变量名顺序是可以变的,只要一致就行。

2023-05-29 13:23:57 85

原创 Javascript符号解析——??与?.

值1??值2值1 是,返回值2值1 不是 nullish,返回值1。

2023-05-28 22:22:36 122

原创 Javascript之 ... 解读

对于相同的属性,后面会覆盖前面的。

2023-05-28 22:15:12 47

原创 Redis分片集群

主从(一个主节点、多个子节点,读写分离)和哨兵(解决主节点宕机问题)可以解决高可用、高并发读的问题。使用分片集群可以解决上述问题,分片集群特征:集群中有多个master,每个master保存不同数据每个master都可以有多个slave节点master之间通过ping监测彼此健康状态客户端请求可以访问集群任意节点,最终都会被转发到正确节点。

2023-05-20 21:06:50 670

原创 Redis哨兵

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。哨兵的结构和作用如下:监控:Sentinel 会不断检查您的master和slave是否按预期工作:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主:Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端。

2023-05-19 21:36:01 410

原创 Redis主从

简述全量同步和增量同步区别?master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl_baklog,逐个发送给slave。增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave什么时候执行全量同步?slave节点第一次连接master节点时slave节点断开时间太久,repl_baklog中的offset已经被覆盖时什么时候执行增量同步?

2023-05-17 22:22:17 381

原创 Redis持久化

RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。

2023-05-17 15:32:47 354

原创 Sentinel———隔离和降级

而当服务恢复时,断路器会放行访问该服务的请求。RT超过500ms的调用是慢调用,统计最近10000ms内的请求,如果请求量超过10次,并且慢调用比例不低于0.5,则触发熔断,熔断时长为5秒。统计最近1000ms内的请求,如果请求量超过10次,并且异常比例不低于0.5,则触发熔断,熔断时长为5秒。在指定时间内,如果请求数量超过设定的最小数量,慢调用比例大于设定的阈值,则触发熔断。统计指定时间内的调用,如果调用次数超过指定请求数,并且出现异常的比例达到设定的比例阈值(或超过指定异常数),则触发熔断。

2023-05-14 17:17:23 423

原创 Redis——UV统计

全称Unique Visitor,也叫独立访客量,是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站,只记录1次。

2023-05-13 21:50:47 63

原创 内存单位冷知识

1B(byte字节)=8bit1KB(Kilobyte千字节)=1024B,1MB(Megabyte兆字节简称“兆”)=1024KB,1GB(Gigabyte吉字节又称“千兆”)=1024MB,1TB(Terabyte万亿字节太字节)=1024GB,1PB(Petabyte千万亿字节拍字节)=1024TB,1EB(Exabyte百亿亿字节艾字节)=1024PB,1ZB(Zettabyte十万亿亿字节泽字节)=1024EB,1YB(Yottabyte一亿亿亿字节尧字节)=1024ZB,1BB(Brontoby

2023-05-10 21:05:28 129

原创 try——finally面经

自己写了一段代码,和面试题差不多,好多人这里都不太清楚,你们可以看看我的运行结果。只可意会,不可言传。

2023-05-10 20:02:54 59

原创 Redis消息队列

消息队列(Message Queue),字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色:消息队列:存储和管理消息,也被称为消息代理(Message Broker)生产者:发送消息到消息队列消费者:从消息队列获取消息并处理消息。

2023-05-02 18:09:01 946

原创 Redis 缓存穿透、缓存雪崩、缓存击穿

缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。常见的解决方案有两种:缓存空对象优点:实现简单,维护方便缺点: 额外的内存消耗 可能造成短期的不一致(恶意攻击的对象id对应的redis空值缓存失效前成为了新插入的id,造成真实客户只能得到空缓存)布隆过滤(类似于位示图0、1代表是否存在)优点:内存占用较少,没有多余key缺点: 实现复杂 存在误判可能(对于过滤结果:假的一定为假,真的有小概率为假)

2023-04-27 13:33:58 1125

原创 Redis——缓存更新策略

缓存更新策略的最佳实践方案:低一致性需求:使用Redis自带的内存淘汰机制高一致性需求:主动更新,并以超时剔除作为兜底方案(一般情况)读操作:缓存命中则直接返回缓存未命中则查询数据库,并写入缓存,设定超时时间写操作:先写数据库,然后再删除缓存要确保数据库与缓存操作的原子性。

2023-04-25 20:56:45 388

空空如也

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

TA关注的人

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