自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 README

Elasticsearch详细笔记一、Elasticsearch概述1.1 开篇结构化数据非结构化数据半结构化数据1.2 技术选型Elasticsearch 是什么The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为 ES, ES 是一个开源的高扩展的分布式全文搜索引擎

2024-04-07 14:18:28 413

原创 java 八股文

这个是不能的,比如,当线程1加锁成功后,master节点数据会异步复制到slave节点,此时当前持有Redis锁的master节点宕机,slave节点被提升为新的master节点,假如现在来了一个线程2,再次加锁,会在新的master节点上加锁成功,这个时候就会出现两个节点同时持有一把锁的问题。我们当时采用的阿里的canal组件实现数据同步:不需要更改业务代码,部署一个canal服务。:嗯,是这样的,单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。

2024-04-01 22:41:26 403 1

原创 JUC并发编程

JUC

2024-01-13 15:09:11 859

原创 阳哥大厂第二季

CAS:compare and set(比较并交换)代码示例代码/***//*CAS是什么?==>compareAndSet 比较并交换*/// 期望值与上次相同,修改成功// 期望值与上次不同,修改失败程序运行结果分析CAS:就拿 JMM 模型来说1、现在有两个线程:线程 A 和线程 B ,同时操作主内存中的变量 i2、线程 A 将变量 i 的副本拷贝回自己线程的工作内存,先记录变量 i 当前的值,记录为期望值。

2024-01-03 15:54:26 927

原创 Open Feign(二)

设计:组件化思维// …### 如何获取组件?1) Autowired 自动装配2) 获取BeanFactory或ApplicationContext,再从里面获取[外链图片转存中...(img-VG9ccJzK-1700803995110)]### 如何传递组件?通过 Feign.Builder 传给 SynchronousMethodHandler.Factory ->SynchronousMethodHandler## 总结:设计:组件化思维。

2023-11-24 13:34:00 390

原创 记一次 xxl-job 实战

配置自定义任务有许多种模式,如 Bean模式(基于方法)、Bean模式(基于类)、GLUE模式等等。这里介绍通过 Bean模式(基于方法) 是如何自定义任务的(对于其余的模式可以参考官方文档)。Bean模式(基于方法)也就是每个任务对应一个方法,通过添加 @XxLJob(value=“自定义JobHandler名称”, init = “JobHandler初始化方法”, destroy = “JobHandler销毁方法”) 注解即可完成定义。/*** 任务处理类* * @author 单程车票。

2023-11-23 11:50:30 85

原创 Open Feign(一)

OpenFeign是 Spring Cloud 全家桶的组件之一, 其核心的作用是为 RestAPI提供高效简洁的 RPC 调用方式动态代理 (cglib, jdk)ImportBeanDefinitionRegistrar 接口@Import、ImportSelector、ImportBeanDefinitionRegistrar的使用和区别1)@Import(XXX.class)一般配合ImportSelector或者ImportBeanDefinitionRegistrar使用。

2023-11-21 11:12:15 81

原创 调用第三方接口考虑哪些点

但是一定要有业务告警,通过人工接入的方式,进行补发处理查询类接口的重试,也要慎重考虑,如果下游接口支持的QPS有限,重试放量,容易把下游的接口打垮,所以如果决定重试,要调研下游接口的并发能力,酌情处理。4、 接口设置超时时间 (不同的业务场景设置不同的超时时间),http工具类提供配置的超时时间参数,供其他业务场景传递,另外不传递给一个默认的超时时间,禁止不设置超时间评估超时时间,要结合业务,不能拍脑袋,比如可以根据接口监控,看一下P95、P99的响应时间,然后在这个基础上放大一点。

2023-11-13 13:50:49 72

原创 ElasticSearch黑马学习笔记(超详细)搜索引擎ElasticSearch7.x笔记

match和multi_match的区别是什么?match:根据一个字段查询multi_match:根据多个字段查询,参与查询字段越多,查询性能越差query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件查寻有四种;全文查询,精确查询,地理查询,符合查循,其中符合查询包含bool与functions;

2023-07-02 22:49:09 849 1

原创 k8s详细教程

Kubernetes详细教程1. Kubernetes介绍1.1 应用部署方式演变在部署应用程序的方式上,主要经历了三个时代:传统部署:互联网早期,会直接将应用程序部署在物理机上优点:简单,不需要其它技术的参与缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境优点:程序环境不会相互产生影响,提供了一定程度的安全性缺点:增加了操作系统,浪费了部分资源容器化部署:

2023-06-20 16:58:26 414 5

原创 SpringSecurity从入门到精通

我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity的异常处理机制。​ 在SpringSecurity中,如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。在ExceptionTranslationFilter中会去判断是认证失败还是授权失败出现的异常。

2023-05-13 10:40:30 87

原创 设计一个高流量高并发的系统,有哪些要点?

做好一个高流量高并发的系统,不论前端还是后端,过程中每一个步骤都是至关重要的。设计一个系统除了满足功能性,还要考虑兼容性、易用性、可靠性、安全性、可维护性、可移植性等软件质量。同时要对系统的吞吐量、并发数、平均响应时间等指标要完全掌握,在指标异常时可以快速做出决策避免一系列问题发生。

2023-05-11 10:59:55 160

原创 接口文档设计的12个注意点!

在接口版本变化时,需要及时更新接口文档(详细描述版本的变化、兼容性问题、版本切换方式等 ),以确保用户能够获得最新的接口信息。因此,接口文档应当包含接口的安全性说明:例如接口的访问授权方式、数据传输加密方式等。一般来说,接口文档需要完善接口测试的方法和结果,以便用户可以测试接口是否符合自己的需求,让用户用得放心。定义接口文档时,对于一些需要保护的接口,也需要考虑接口的安全 ,例如权限管理、防止 SQL 注入 等。接口文档,需要提供接口的使用案例:以方便开发者理解接口的使用方法和调用流程。

2023-04-26 21:51:13 122

原创 SpringBoot 这样做参数校验才足够优雅

当我们想提供可靠的 API 接口,对参数的校验,以保证最终数据入库的正确性,是 必不可少 的活。比如下图就是 我们一个项目里 新增一个菜单校验 参数的函数,写了一大堆的 if else 进行校验,非常的不优雅,比起枯燥的CRUD来说,参数校验更是枯燥。这只是一个创建菜单的校验,只需要判断菜单,菜单url 以及菜单的父类id是否为空,上级菜单是否挂载正确,这样已经消耗掉了30,40行代码了,更不要说,管理后台创建商品这种参数贼多的接口。估计要写几百行校验代码了。/*** 验证参数是否正确*/

2023-04-25 10:26:03 202

原创 spring事务不生效的15种场景

日常开发中,我们经常使用到spring事务。最近一位朋友去美团面试,被问了这么一道面试题: Spring 事务在哪几种情况下会不生效?今天田螺哥跟大家聊聊,spring事务不生效 的15种场景。

2023-04-24 11:01:59 109

原创 spring-retry

发送消息失败。调用远程服务失败。争抢锁失败。这些错误可能是因为网络波动造成的,等待过后重处理就能成功。通常来说,会用try/catch,while循环之类的语法来进行重处理,但是这样的做法缺乏统一性,并且不是很方便,要多写很多代码。然而spring-retry却可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能。本篇主要简单介绍了Springboot中的Retryable的使用,主要的适用场景和注意事项,当需要重试的时候还是很有用的。

2023-04-20 13:26:17 59

原创 I/O 框架

I/O框架

2022-09-05 13:21:33 98

原创 oauth2场景及应用

文章目录2、什么是oauth23、Oauth角色划分4、Oauth应用场景5、演示微信联合登录Oauth2.0模式分类授权码模式整合代码 (mayikt-springsecurity-oauth2)配置类整合accessToken## 1、前言当前有一个开放接口 该接口会被非常多的商户端来调用,管理商户端开放接口平台设计第三方支付接口 或者 第三方知名平台接口微信支付宝 等。2、什么是oauth2OAuth 2.0 是一个授权协议,它允许软件应用代表(而不是充当)资源拥有者去访问资源拥有者的资源。

2021-07-27 15:31:43 501

原创 Mysql高级-日志,主从复制,案例

文章目录1. MySql中常用工具1.1 mysql1.1.1 连接选项1.1.2 执行选项1.2 mysqladmin1.3 mysqlbinlog1.4 mysqldump1.4.1 连接选项1.4.2 输出内容选项1.5 mysqlimport/source1.6 mysqlshow2. Mysql 日志2.1 错误日志2.2 二进制日志2.2.1概述2.2.2 日志格式2.2.3 日志读取2.2.4 日志删除2.3 查询日志2.4 慢查询日志2.4.1 文件位置和格式2.4.2 日志的读取3. My

2021-07-27 15:02:56 378

原创 Rbac动态权限控制

文章目录Rbac动态权限控制Rbac动态权限控制1、RBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念。取消了用户和权限的直接关联,改为通过用户关联角色、角色关联权限的方法来间接地赋予用户权限(如下图),从而达到用户和权限解耦的目的。2、Maven依赖<!-- springboot 整合mybatis框架 --><dependency> <groupId>org.mybatis.spring.boot</groupId&

2021-07-27 15:02:11 1049

原创 Mysql高级-应用优化,查询缓存优化,锁

文章目录1. 应用优化1.1 使用连接池1.2 减少对MySQL的访问1.2.1 避免对数据进行重复检索1.2.2 增加cache层1.3 负载均衡1.3.1 利用MySQL复制分流查询1.3.2 采用分布式数据库架构2. Mysql中查询缓存优化2.1 概述2.2 操作流程2.3 查询缓存配置2.4 开启查询缓存2.5 查询缓存SELECT选项2.6 查询缓存失效的情况3. Mysql内存管理及优化3.1 内存优化原则3.2 MyISAM 内存优化key_buffer_sizeread_buffer_si

2021-07-23 13:08:29 242

原创 【SpringBoot】使用不同的策略动态地调用某个接口的实现类 策略模式与模板模式

文章目录1.前言2.代码演示1.前言经常遇到这样的一个需求,前端传的实体类型相同,后端需要根据实体类中的某一个字符串,动态地调用某一个类的方法。在SpringBoot中,我们可以理解成,一个Controller接口对应多个ServiceImpl,使用这种方式,如果后期需要添加一个功能,仅仅创建一个ServiceImpl就可以满足需求,而不用再额外创建一个Controller接口。现在假设一个情景,前端传入不同的用户类型,后端返回该用户的任务。你可能问我,为什么不直接把(用户类型,用户任务)存入数

2021-07-19 16:39:43 1456

原创 Mysql高级-存储引擎和sql优化

文章目录1. Mysql的体系结构概览2. 存储引擎2.1 存储引擎概述2.2 各种存储引擎特性2.2.1 InnoDB2.2.2 MyISAM2.2.3 MEMORY2.2.4 MERGE2.3 存储引擎的选择3. 优化SQL步骤3.1 查看SQL执行频率3.2 定位低效率执行SQL3.3 explain分析执行计划3.3.1 环境准备3.3.2 explain 之 id3.3.3 explain 之 select_type3.3.4 explain 之 table3.3.5 explain 之 type

2021-07-08 23:49:33 375

原创 Mysql高级-索引视图存储过程触发器

文章目录MySQL高级课程简介1. Linux 系统安装MySQL1.1 下载Linux 安装包1.2 安装MySQL1.3 启动 MySQL 服务1.4 登录MySQL2. 索引2.1 索引概述2.2 索引优势劣势2.3 索引结构2.3.1 BTREE 结构2.3.3 B+TREE 结构2.3.3 MySQL中的B+Tree2.4 索引分类2.5 索引语法2.5.1 创建索引2.5.2 查看索引2.5.3 删除索引2.5.4 ALTER命令2.6 索引设计原则3. 视图3.1 视图概述3.2 创建或者修改

2021-07-07 14:07:15 1303

原创 RabbitMq从入门到实战

文章目录1.消息队列1.1.MQ 的相关概念1.1.1.什么是MQ1.1.2.为什么要用MQ1.1.3.MQ 的分类1.2.RabbitMQ1.2.1.RabbitMQ 的概念1.2.2.四大核心概念1.2.3.RabbitMQ 核心部分1.2.4.各个名词介绍1.2.5.安装2.Hello World2.1.依赖2.2.消息生产者2.3.消息消费者3.Work Queues3.1.轮训分发消息3.1.1.抽取工具类3.1.2.启动两个工作线程3.1.3.启动一个发送线程3.1.4.结果展示3.2.消息应答

2021-07-02 18:01:22 375 2

原创 spring-ApplicationContext的事件机制

这里写目录标题spring-ApplicationContext的事件机制spring-ApplicationContext的事件机制1.通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext的事件处理。 如果容器中有一个ApplicationListener bean,当ApplicationContext发布ApplicationEvent时,ApplicationListener bean将自动被触发。2.spri

2021-06-17 17:19:01 313

原创 Docker技术

在这里插入代码片# Docker官方文档地址:https://www.docker.com/get-started中文参考手册:https://docker_practice.gitee.io/zh-cn/1.什么是 Docker1.1 官方定义最新官网首页# 1.官方介绍- We have a complete container solution for you - no matter who you are and where you are on your cont

2021-06-16 17:16:24 675

SGG_Linux.docx

Linux入门教程

2021-08-27

空空如也

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

TA关注的人

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