- 博客(75)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(12)— 分布式事务(Seata)
在分布式系统下,一个业务跨越多个服务或数据源,每一个服务都是一个事务。要保证所有分支事务的最终状态一致,这样的事务就是分布式事务。
2023-01-09 17:20:03
2297
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(11)— 微服务保护(Sentinel)
默认情况下,发生限流,降级,熔断时,都会抛出异常到调用方。如果要实现自定义异常时的返回结果,需要实现接口。包含很多子类,分别对应不同的场景以下是微服务调用时被SentinelString msg = "未知异常";msg = "请求被限流";msg = "请求被降级";msg = "热点参数被限流";msg = "授权规则异常";} }以下是返回示例:返回的Json格式自定义,此处只做演示,不深究{"status" : 429 , "msg" : "授权规则异常" }
2023-01-03 17:52:37
1381
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(10)— Elasticsearch集群
单机的 Elasticsearch 做数据存储,必然面临两个问题:海量数据存储问题,单点故障等。
2022-12-29 14:31:35
1176
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(9)— Elasticsearch聚合和自动补全
character filters:在 tokenizer 之前对文本进行处理,例如 删除字符,替换字符等tokenizer:将文本按照一定的规则切割成词条(term),例如 keyword。tokenizer filter:将 tokenizer 输出的词条做进一步的处理,例如大小写转换,同义词处理,拼音处理等自定义分词器时不一定三部分都需要。根据实际业务需求即可。例如以下示例,只有 tokenizer 和 filter两部分,并没有 character。
2022-12-27 14:43:28
1327
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(8)— 使用ElasticSearch(RestClient)
ES 官方提供了各种语言的客户端用来操作ES,这些客户端的本质就是组创DSL语句,通过 Http 请求发送给ES提示1:ES 中支持两种地理坐标数据类型提示2:字段拷贝可以使用 copy_to 属性将当前字段的属性值拷贝到指定的属性上,方便以后搜索,且被指定的字段在查询数据时对外不可见例如:以下示例中的 all 字段,在后边查询数据时不会返回。
2022-12-20 11:35:13
1011
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(7)— ElasticSearch基础
elasticserach是一个强大的开源搜索引擎,可以从海量数据中迅速找到想要的内容。elasticsearch结合了 Kibana, Logstach, Beats,也就是 elastic stack。主要应用于日志数据分析,实时监控等领域。Elasticsearch底层是基于Lucene实现,Lucene是一个基于Java实现的搜索引擎类库,是Apache公司的项目。
2022-12-15 11:24:06
747
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(6)— RabbitMQ(消息队列)
MQ(MessageQueue),中文含义为消息队列,用来存放消息,也就是事件驱动模式中的 BrokerRabbitMQ:现阶段使用最多的MQ技术,优点在于消息的低延迟和可靠性ActiveMQ:开发语言基于Java,可以进行深度定制RocketMQ:开发语言基于Java,可以进行深度定制,阿里巴巴开发Kafka:单机吞吐量很高,但消息可靠性不高。RabbitMQ通过 VirtualHost 进行隔离,相互不可见。RabbitMQ中的相关概念channel:操作MQ的工具。
2022-12-13 16:14:26
1514
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(5)— 微服务部署(Docker)
镜像是将应用程序及其需要的系统函数库,环境,配置,依赖等统一打包。镜像是一个分层结构,每一层称之为一个LayerBaseImage:基础镜像层,包含基本的系统函数库,环境变量,文件系统等。Entrypoint: 入口,是镜像中启动应用的命令其他:在BaseImage的基础上添加依赖,安装程序,完成整个应用的安装和配置。
2022-12-08 16:05:46
5465
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringCloud(3)— Http客户端Feign
Feign是一种声明式的Http客户端,可以更加优雅的实现Http发送,从而解决以上问题2/*** 定义请求接口* @FeignClient 服务名称* @return 返回对象}Feign主要是基于SpringMVC的注解来申明远程调用的信息}1.日志级别的配置创建Feign的配置类// 指定 Feign 的输出日志级别 return Logger . Level . FULL;} }或者在项目配置文件中直接配置。
2022-11-30 16:10:10
461
原创 面试宝典(2)——缓存篇(Redis)
查询一个不存在的数据,数据库查询不到,同时也不会写入缓存,这就会导致每次查询都会去请求数据库。解决方案一:缓存空数据,查询返回的数据为空,仍把这个空结果呢进行缓存。优点:简单缺点:消耗内存,可能会发生数据不一致问题。解决方案二:布隆过滤器布隆过滤器可以用于检索一个元素是否在集合中。优点:内存占用少,没有多余的key缺点:实现复杂,存在误判概念:当某一个热点Key设置了过期时间,当Key过期时,恰好这个时间点过来大量请求,将数据库压倒。
2024-05-13 09:52:25
1023
原创 面试宝典(1)——数据库篇(MySQL)
回表查询是数据库中一种常见的查询操作,指的是在使用索引进行查询时,需要根据索引定位到数据行后,再通过数据行的地址(即主键)到表中查找对应的数据。这个过程就称为回表查询。回表查询会增加额外的IO操作,降低查询性能,因此在设计数据库索引时需要尽量避免回表查询。简单来说,就是先通过非聚集索引查询到聚集索引,再通过聚集索引到整行数据,这个过程被称之为回表查询。聚集索引一般是主键,如果没有主键,则使用第一个唯一索引(UNIQUE)作为聚集索引。如果没有主键,也没有合适的唯一主键,则InnoDB引擎。
2024-04-22 16:45:54
1461
原创 Springboot 过滤器、拦截器、全局异常处理
1.创建一个类,实现接口,并且实现其方法。拦截器是一种动态拦截方法调用的机制,与过滤器类似。是Spring框架中提供的,用来动态拦截控制器方法的执行。它的主要作用是拦截请求,在指定的方法前后调用,根据业务需要执行预先设定的代码。定义一个拦截器,继承,并实现其方法。中的方法都提供了默认实现,可根据业务需求来决定重写哪些方法。注意要为拦截器添加@Component注解,将其交给IOC容器管理。@Component@Override//在目标资源方法执行前执行,返回true放行,false 不放行。
2024-03-04 10:17:06
2266
2
原创 Springboot底层原理
springboot3.x中,META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中,配置了需要创建Bean对象的全类名。当Springboot项目启动后,Springboot中的一些配置类,bean对象就会自动存入到IOC容器中,不需要我们手动去申明。,它负责管理Spring应用程序中所有的bean,同时提供了一些方法来获取Bean,注册Bean,是整个Spring应用的核心。
2024-02-29 15:33:37
6541
18
原创 Springboot AOP开发
以上示例中的切入点表达式均相似,可以利用封装的思想,将切入点表达式全部抽取出来,在需要的时候直接使用即可。想要实现以上需求,则需要自定义切入点表达式通过@Pointcut注解,来定义切入点表达式,然后在需要编写切入点表达式的地方调用即可。@Aspect@Component@Slf4j/*** 声明一个空的方法体来定义切入点表达式* 使用 @Pointcut 注解来定义切入点表达式*/// 方法执行后的业务逻辑//code..注意:如果自定义的切入点访问修饰符为public。
2024-02-19 17:10:05
1341
原创 Java SE 多线程的介绍及使用
创建一个自定义类,继承Thread类,然后重写run()函数,在run()函数中实现业务逻辑。然后在main()方法中实例化该类的对象,最后通过start()方法运行子线程。注意事项:不要将主线程的任务放在子线程之前,否则与单线程无异。优缺点总结:优点,编码简单,易于理解多线程。缺点,线程类继承了 Thread 类,无法再继承其他类,不利于程序的扩展。
2023-12-15 10:20:32
98
原创 Java从入门到精通(五)· 内部类,枚举,泛型
枚举是一种特殊的类,可以理解为,枚举在本质上是一种类。枚举其实就是将某个类的几个常用对象都罗列出来,方便后期在项目中使用。注意:枚举罗列出来的是该枚举的对象。成员1,成员2,//.其他成员枚举中的其他成员,包含构造器,成员方法,成员变量枚举类的构造器都是私有的(默认且只能私有),因此枚举类对外不能创建对象枚举都是最终类,不可以被继承枚举类中,从第二行开始,可以定义类的其他各种成员编译器为枚举类新增了几个方法,并且枚举都是集成自类的。抽象枚举罗列对象:1.创建抽象方法。
2023-08-30 15:33:13
192
原创 Java从入门到精通(四)· 面向对象
使用 extends 关键字,可以让一个类与另一个类建立起父子关系。子类能够继承父类的非私有成员子类的对象是有子类和父类共同完成减少重复代码Java 中不支持多继承,仅支持单继承,即只能继承一个多父类。被abstract修饰的类,叫做抽象类,其中abstract就是抽象的含义,abstract关键字可以修饰类和成员方法基本语法: [访问修饰符] abstract [class关键字] 类名/*** 抽象类中的抽象方法。
2023-08-09 14:10:48
170
原创 Java从入门到精通(二)· 基本语法
计算机是用来处理数据的,字面量就是告诉程序员:数据在程序中的书写格式。特殊的字符: \n 表示换行, \t 表示一个制表符,即一个tab。
2023-08-01 10:58:52
95
原创 Java从入门到精通(一)· 语言背景
温故而知新,闲着没事干,准备将Java编程语言的知识点从头梳理一遍,整理成笔记,逐篇发布。部分图片素材来源与B站“黑马程序员”的课程。
2023-07-27 16:41:41
134
原创 Sharding-JDBC 按照时间进行分表
前面提到了,分片的两个关键类,而且我们已经在配置好了两个类的实现类,现在就让我们来真正实现它吧。
2023-06-12 15:42:50
5424
3
原创 Sharding-JDBC分库分表
垂直分表: 按字段访问频次、是否大字段等原则,将原先的大表拆分为多个小表,从而提升数据库性能。垂直分表会导致表结构改变,所以拆分时尽量从业务角度出发,避免联查,否则得不偿失。垂直分库:可以按照数据表业务,将相同业务的表拆分到多个数据库,这些数据库可以分布在不同的服务器上。这个过程中,表结构不发生改变。拆分之后,压力被多个服务器分别承担,从而提升访问数据,同时可以提高业务清晰度。但它需要解决跨库所带来的所有复杂问题。水平分库。
2023-05-19 10:48:50
1346
原创 TimeScaleDB食用手册
TimescaleDB是一种用于处理时间序列数据的开源时序数据库,它是PostgreSQL的扩展。它可以处理大量的时间序列数据,并且支持SQL查询和连续聚合功能。
2023-05-04 09:19:14
2221
1
原创 Spring Boot中使用Redis
1.Redis是基于内存的key-value结构数据库优点:基于内存存储,读写性能高适合存储热点数据(短时间被被大量用户读取的数据)2.NoSQL,泛指非关系型数据库,是关系型数据库的补充3.Redis应用场景:缓存,任务队列,消息队列,分布式锁,下载的redis是源文件,需要进行编译安装,Windows版本百度即可5.Linux下安装Redis安装过程中如果报错:You need tcl x.x or newer in order to run the Redis test。
2022-08-23 10:52:20
8370
原创 六 在CentOS Stream上搭建Node.js环境
搭建CentOS环境一 搭建CentOS环境1.安装 dnf2.安装 node.js 环境3.安装 npm4.安装 pm2一 搭建CentOS环境1.安装 dnf如果你的服务器环境可以运行 dnf 命令的话,则可以跳过这一步否则,先使用 yum 命令安装 dnf#安装启用 epel-release 依赖yum install epel-release -y#安装dnfyum install dnf#查看版本dnf --version2.安装 node.js 环境#查找指定名称的软
2022-05-10 16:36:59
972
原创 MySQL数据库主从双向同步
MySQL数据库主从双向同步一 环境二 主从同步1.主服务器配置2.从服务器配置二 双向同步三 后记一 环境由于开发需要,需要两台服务器进行负载均衡,两台服务器配置完全相同,均为windows server 2012,且MySQL数据库版本为Mysql5.6,连接工具使用Navicat Premium 12,使用默认安装。MySql数据库配置文件 My.ini 位于C:\ProgramData\MySQL\MySQL Server 5.6。假设两台服务器IP分别为:192.168.1.101,192
2022-04-13 17:39:47
4997
原创 MySQL数据库配置文件介绍及使用
MySQL数据库配置文件介绍及使用一 MySQL配置文件简单介绍二 配置参数详细介绍2.1 设置端口2.2 设置数据库文件存储目录2.3 创建新表时将使用的默认存储引擎2.4 设置最大连接数2.4 查询缓存大小2.5 设置临时表的最大大小2.6 可重用线程数2.7 MySQL在运行时允许使用的临时文件的最大大小2.8 允许事件定时执行一 MySQL配置文件简单介绍1.在使用MySQL的过程中,针对于一些需求,我们需要从MySQL的文件中去配置,才能满足我们的需求,例如数据库的最大连接数,开启实践的执行等
2021-12-02 14:42:10
5106
原创 五 Koa2项目中使用Swagger
Koa2项目中使用Swagger一 环境准备二 使用swagger三 显示接口一 环境准备1.首先需要先安装koa2-swagger-ui,以及swagger-jsdoc2.官方文档:Swagger官方文档npm install koa2-swagger-ui //npm install swagger-jsdoc二 使用swagger1.在app.js文件中引入koa2-swagger-ui,并设置swagger的基本配置const { koaSwagger } = require(
2021-11-05 14:08:54
2417
原创 四 Koa2中使用Sequelize进行数据操作
Koa2中使用Sequelize进行数据操作一 前言二 查询数据三 新增数据四 其他操作一 前言上一篇文章已经做了很多准备工作,这一篇一起讨论如何进行增删改查操作,如果有疑问或者看不懂的,可以先去学习前一节的内容。传送门二 查询数据1.先来新建一个路由文件system_manager.js,我们在routes文件夹下创建这个路由文件,然后在app.js文件中使用它。引入models对象,然后将路由的控制器名称修改为system_manager,再添加一个名为json的GetAPI。最后,在ap
2021-11-03 14:31:53
473
原创 三 Koa2项目中使用ORM框架
Koa2项目中中使用ORM框架一 什么是ORM?二 Sequelize三 Sequelize准备工作四 Sequelize创建数据库,数据表,测试数据五 创建测试数据,种子文件总结一 什么是ORM?1.ORM是对象关系映射,ORM框架即对象关系映射框架,使用ORM可以免去我们写SQL语句的烦恼,可以直接通过操作模型对象进行增删改查,让开发人员更加注重于业务的实现,告别SQL语句。总之优点多多,大家自行百度。2.以下操作均在Koa2项目的根目录终端下进行操作二 Sequelize1.Node.js
2021-11-02 13:11:04
1336
原创 二 Koa2框架中 Get / Post 接收参数
Koa2项目中接收参数一 实现跨域访问二 自定义一个API接口三 接受Get参数四 接受Post参数总结一 实现跨域访问1.如果希望开发的API被前端项目调用(例如Vue),则,第一步必然是实现跨域,Koa2框架中实现跨域访问与Express中略有不同,需要安装koa2-cors中间件,借助koa2-cors来实现跨域npm install koa2-cors -save安装完成之后在app.js文件中引入,并配置相关内容const cors = require('koa2-cors');ap
2021-11-02 10:29:04
3572
原创 一 使用Koa2创建Node.js项目
使用Koa创建Node.js项目一 环境准备二 开始一 环境准备Node,npm环境请自行安装,可参考其他文章,不再赘述二 开始1.安装koa2项目生成器npm install koa-generator -g //-g为全局安装2.创建一个名为test的Node项目koa2 test创建项目完成之后,文件目录如下:使用编辑器打开创建的test项目,我这里使用的是vs code,项目全部内容如下,因为koa框架是Express的团队开发的,所以两个框架在整体上保持了一致,这里
2021-11-01 17:57:02
551
原创 十二 Node.js实现Https访问
十二 Node.js实现Https访问一 准备工作二 开始部署一 准备工作1.一个备案的域名,2.一个被域名解析的服务器3.对应的证书,Node.js推荐下载Nginx服务器证书二 开始部署1.将下载好的证书解压放到指定文件夹下,我的证书放在public/ssl路径下,两个文件,一个.key,一个.pem然后在Node.js项目中的bin/www文件中,注释掉原来的创建服务器代码,使用https对象创建服务器即可。注意引入https模块。const options = { key: f
2021-07-15 14:55:43
2969
1
ASP.Net Core MVC 使用EF操作MySQL数据库完整实例
2021-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人