- 博客(111)
- 收藏
- 关注
原创 Redis面试篇 Redis主从集群、Redis哨兵监控主从集群、Redis分片集群、Redis数据结构、Redis内存回收、Redis缓存问题、Redis持久化
Sentinel的三个作用是什么?集群监控故障恢复状态通知Sentinel如何判断一个redis实例是否健康?每隔1秒发送一次ping命令,如果超过一定时间没有相向则认为是主观下线(sdown如果大多数sentinel都认为实例主观下线,则判定服务客观下线(odown故障转移步骤有哪些?首先要在sentinel中选出一个leader,由leader执行failover选定一个slave作为新的master,执行,切换到master模式然后让所有节点都执行slaveof新master。
2025-02-17 11:35:14
827
原创 Day7 微服务 Elasticsearch搜索引擎、DSL查询(叶子查询、复合查询、排序、分页、高亮)、RestClient查询、数据聚合
query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件文档搜索的基本步骤是:创建对象准备,也就是DSL。来构建查询条件传入的query()方法发送请求,得到结果解析结果(参考JSON结果,从外到内,逐层解析)@Test//1.创建Request//2.组织请求参数//3.发送请求//4.解析响应//1.获取总条数System.out.println("共搜索到"+total+"条数据");//2.遍历结果数组。
2025-02-16 14:06:31
905
1
原创 多级缓存 JVM进程缓存
传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图:存在下面的问题:•请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈•Redis缓存失效时,会对数据库产生冲击多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能:浏览器访问静态资源时,优先读取浏览器本地缓存访问非静态资源(ajax查询数据)时,访问服务端请求到达Nginx后,优先读取Nginx本地缓存。
2025-01-20 15:36:35
1217
原创 Day6 微服务 Elasticsearch搜索引擎、Kibana编写请求、倒序索引、正向索引、IK分词器、索引库操作、文档操作、JavaRestClient客户端
分词器的作用是什么?创建倒排索引时,对文档进行分词用户搜索时,对输入的内容分词IK分词器有几种模式?ik_smart:智能切分,粗粒度:最细切分,细粒度IK分词器如何拓展词条?如何停用词条?利用config目录的文件添加拓展词典和停用词典在词典中添加拓展词条或者停用词条索引库操作有哪些?创建索引库:PUT/索引库名查询索引库:GET/索引库名删除索引库:DELETE/索引库名修改索引库,添加字段:PUT/索引库名/_mapping。
2025-01-19 22:57:18
657
原创 Day5 微服务 MQ高级、保证MQ消息的可靠性(发送者、MQ本身、消费者)、延迟消息处理超时订单
每个只能配置一个,因此我们可以在配置类中统一设置。我们在publisher模块定义一个配置类:@Slf4j@Overridelog.error("触发returncallback,");});由于每个消息发送时的处理逻辑不一定相同,因此ConfirmCallback需要在每次发消息时都需要定义。具体来说,是在调用RabbitTemplate中的convertAndSend方法时,多传递一个参数:id:消息的唯一标示,MQ对不同的消息的回执以此做判断,避免混淆。
2025-01-19 20:05:55
704
原创 Day4 微服务 MQ基础、消息队列、RabbitMQ(消息通信中间件)、SpringAMQP(消息收发工具)、消息转换器
Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理默认消息是轮询消费的,通过设置prefetch来控制消费者预取的消息数量描述下Direct交换机与Topic交换机的差异?Topic交换机接收的消息RoutingKey必须是多个单词,以 .分割Topic交换机与队列绑定时的bindingKey可以指定通配符:代表0个或多个词:代表1个词。
2025-01-05 18:05:31
778
原创 Day3 微服务 微服务保护(请求限流、线程隔离、服务熔断)、Sentinel微服务保护框架、分布式事务(XA模式、AT模式)、Seata分布式事务框架
Sentinel是一款服务保护框架,目前已经加入SpringCloudAlibaba中。核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。为了方便监控微服务,我们先把Sentinel的控制台搭建出来。1)下载jar包。
2025-01-01 17:08:49
1214
原创 Day2 微服务 网关路由转发、网关登录校验、用户信息的传递(浏览器 -> 网关 -> 微服务 -> 微服务与微服务)、配置管理(配置共享,配置热更新、动态路由配置)
无论是还是都支持自定义,只不过编码方式、使用方式略有差别。自定义不是直接实现,而是实现。@Component@Override@Override// 获取请求// 编写过滤器逻辑System.out.println("过滤器执行了");// 放行注意事项:该类的名称一定要以为后缀!@Component@Override// 编写过滤器逻辑System.out.println("未登录,无法访问");// 放行// 拦截@Override。
2024-12-30 15:53:29
860
3
原创 Day1 微服务 单体架构、微服务架构、微服务拆分、服务远程调用、服务注册和发现Nacos、OpenFeign
Bean注意事项:这里不需要在类上加@Configration注解。
2024-12-28 01:02:14
1023
1
原创 Docker基础知识 Docker命令、镜像、容器、数据卷、自定义镜像、使用Docker部署Java应用、部署前端代码、DockerCompose一键部署
当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(container)。镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:Docker Hub。
2024-12-26 11:25:10
747
2
原创 Day2 苍穹外卖前端 前端环境搭建、员工分页查询组件、启用禁用员工账号组件
本项目使用到的前端技术如下:node.jsvueElementUIaxiosvuexvue-routertypescript效果如下:主要代码在src目录中,src目录结构如下:下面重点介绍一下src中的重点文件和目录:App.vue:项目的主组件,,需要在终端通过命令进行安装。安装完成后,那为什么程序知道依赖哪些JS包?
2024-12-24 22:14:10
755
原创 Day1 苍穹外卖前端 Vue基础、Vue基本使用方式、Vue-router、Vuex、TypeScript
vue 属于单页面应用,所谓路由,就是根据浏览器路径不同,用不同的视图组件替换这个页面内容。可以在创建vue工程中生成Vue-Router的Demo。使用 vue ui 创建项目的同时指定:创建完带有路由功能的前端项目后,在工程中会生成一个路由文件,如下所示:为了能够使用路由功能,在前端项目的入口文件main.js中,
2024-12-23 09:40:01
1100
原创 Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格
Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。银行网银系统导出交易明细各种业务系统导出Excel报表批量导入业务数据。
2024-12-22 00:54:52
1288
原创 Day12 苍穹外卖项目 Apache ECharts、营业额统计、用户统计、订单统计、销量Top10统计
Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。1、柱状图2、饼状图3、折线图不管是哪种形式的图形,最本质的东西实际上是数据,它其实是对数据的一种可视化展示。
2024-12-21 23:36:38
928
原创 Day10 苍穹外卖项目 订单搜索、各个状态的订单统计、查询订单详细、接单、拒单、取消订单、派送订单、完成订单
订单详情页面需要展示订单基本信息(状态、订单号、下单时间、收货人、电话、收货地址、金额等)订单详情页面需要展示订单明细数据(商品名称、数量、单价)商家取消订单时,如果用户已经完成了支付,需要为用户退款。只有状态为“待派送”的订单可以执行派送订单操作。只有状态为“派送中”的订单可以执行订单完成操作。商家接单其实就是将订单的状态修改为“已接单”商家拒单其实就是将订单状态修改为“已取消”取消订单其实就是将订单状态修改为“已取消”派送订单其实就是将订单状态修改为“派送中”完成订单其实就是将订单状态修改为“已完成”
2024-12-16 17:03:04
1240
原创 Day9 苍穹外卖项目 查看历史订单、查询订单详情、取消订单、再来一单
展示订单数据时,需要展示的数据包括:下单时间、订单状态、订单金额、订单明细(商品名称、图片)再来一单就是将原订单中的商品重新加入到购物车中。商家已接单状态下,用户取消订单需电话沟通商家。如果在待接单状态下取消订单,需要给用户退款。待支付和待接单状态下,用户可直接取消订单。派送中状态下,用户取消订单需电话沟通商家。取消订单后需要将订单状态修改为“已取消”可以根据订单状态查询。
2024-12-16 11:18:03
705
原创 Day11 苍穹外卖项目 SpringTask、订单状态定时处理、WebSocket提示来单提醒以及客户催单
WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。Http也是基于TCP的一种网络协议。Http是无状态的(服务器不会存储客户端上一次请求的信息,而是发送新的请求)。一次请求对应一次响应。HTTP是短连接WebSocket是长连接HTTP通信是单向的通信,基于请求响应模式WebSocket支持双向通信HTTP和WebSocket底层都是TCP连接。
2024-12-16 11:15:23
901
原创 Day8 苍穹外卖项目 地址簿功能实现、用户下单实现、订单支付实现、WeChatPayUtil工具类
在苍穹外卖项目中,选择的就是微信支付这种支付方式。要实现微信支付就需要注册微信支付的一个商户号,这个商户号是必须要有一家企业并且有正规的营业执照。只有具备了这些资质之后,才可以去注册商户号,才能开通支付权限。个人不具备这种资质,所以我们在学习微信支付时,最重要的是了解微信支付的流程并且能够阅读微信官方提供的接口文档,能够和第三方支付平台对接起来就可以了。
2024-12-09 10:48:53
648
原创 Day7 苍穹外卖项目 缓存菜品、SpringCache框架、缓存套餐、添加购物车、查看购物车、清空购物车
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:EHCacheCaffeineRedis(常用)注意事项:切换缓存实现,只需要引入其maven坐标,就能实现。
2024-12-06 14:53:44
1274
原创 Git分布式版本控制工具 Git基本概念、Git工作流程、Git常用命令、Git远程仓库、IDEA操作Git
远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
2024-12-04 16:47:17
860
原创 Day6 苍穹外卖项目 HttpClient、微信小程序开发、微信登录实现、小程序商品浏览功能实现
小程序是一种新的开放能力,开发者可以快速地开发一个小程序。可以在微信内被便捷地获取和传播,同时具有出色的使用体验。首先,不同群体开放权限不一样,比如以个人身份来注册小程序,是无法开通支付权限的。若要提供支付功能,必须是企业、政府或者其它组织等。然后,实际上微信的官方是提供了一系列的工具来帮助开发者快速的接入 并且完成小程序的开发,提供了完善的开发文档,并且专门提供了一个开发者工具,还提供了相应的设计指南,同时也提供了一些小程序体验DEMO,可以快速的体验小程序实现的功能。最后,
2024-12-02 22:34:49
954
原创 【Redis基础篇】5种常见数据结构、SpringDataRedis的Java客户端操作、Jedis、key和value配置序列化器、手动序列化和反序列化、Redis下载与安装、Key的命名规范
Redis是一个基于内存的key-value非结构数据库。Redis 是使用最为广泛的存储中间件。Redis中文网Spring Data Redis是Spring Data项目的一部分,旨在简化Spring应用程序中的数据访问。Spring Data Redis专门提供与Redis集成。
2024-11-28 15:27:57
993
原创 Day4 苍穹外卖项目 新增套餐、套餐分页查询、删除套餐、修改套餐、起售停售套餐
业务规则:套餐名称唯一套餐必须属于某个分类套餐必须包含菜品名称、分类、价格、图片为必填项添加菜品窗口需要根据分类类型来展示菜品新增的套餐默认为停售状态。
2024-11-27 20:17:26
761
原创 Day3 苍穹外卖项目 公共字段自动填充(AOP)、文件上传、新增菜品、菜品分页查询、删除菜品、修改菜品
进入到sky-server模块,创建com.sky.annotation包。
2024-11-27 15:34:08
653
原创 Day2 苍穹外卖项目 新增员工、ThreadLocal线程局部变量、PageHelper分页查询、启用禁用账号、编辑员工、分类管理功能、日期格式消息转换器
进入sky-common模块,在com.sky.result包下定义了Result.java。
2024-11-21 18:05:40
708
原创 Day1 苍穹外卖项目 软件开发整体介绍、项目介绍、开发环境搭建、导入接口文档(YAPI)、Swagger(生成测试接口)、git版本控制、maven分模块开发
项目经理:对整个项目负责,任务分配、把控进度产品经理:进行需求调研,输出需求调研文档、产品原型等,产品原型就是html网页。UI设计师:根据产品原型输出界面效果图架构师:项目整体架构设计、技术选型等开发工程师:代码实现测试工程师:编写测试用例,输出测试报告运维工程师:软件环境搭建、项目上线功能架构功能架构:体现项目中的业务功能模块。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。可以代替postman。
2024-11-17 22:47:35
1344
原创 JAVA的application.yml文件的配置
MyBatis-Plus 是 MyBatis 的增强工具,提供了更多的功能,如 CRUD 操作、分页、SQL 注入器等。Redis 是一个高性能的 key-value 存储系统,常用于缓存、消息队列等场景。MyBatis 是一个优秀的持久层框架,支持定制化 SQL、存储过程以及高级映射。文件常用于配置各种应用程序属性,尤其是在使用 Spring Boot 框架时。在 Java 项目中,
2024-11-15 23:06:59
1207
原创 JAVA工具包 java.lang 包、java.util 包、java.io 包、java.net 包、java.sql 包、java.time 包、java.util.concurrent 包
包提供了 JDBC(Java Database Connectivity)的支持,用于数据库访问。包是 Java 8 引入的日期时间 API,提供了对日期、时间、时区、持续时间等的支持。包提供了网络编程的支持,包括 URL、Socket、ServerSocket 等。类:用于字节流和字符流之间的转换。包提供了用于输入输出的类和接口。包提供了大量的实用工具类,包括。、日期时间处理、随机数生成等。
2024-11-12 16:30:16
616
原创 CSS基础知识day8 box-sizing、resize、box-shadow、opacity、背景属性、border-radius、渐变、字体图标、2D、3D变换、过渡、动画、伸缩盒模型、BFC
CSS3在未来会按照。
2024-11-11 08:39:29
423
原创 JAVA基础练习题
1.1.1 需求/* 定义一个表示学生信息的类Student,要求如下:(1)类Student的成员变量:sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。(2)类Student带参数的构造方法:在构造方法中通过形参完成对成员变量的赋值操作。(3)类Student的方法成员:getNo():获得学号;getName():获得姓名;getSex():获得性别;getAge()获得年龄;getJava():获得Java 课程成绩。
2024-10-31 22:47:22
559
原创 MYSQL设计思想 第一范式、第二范式、第三范式
在数据库设计中,三大范式是指关系数据库中的表设计应该满足的规范化程度,主要是为了降低数据冗余和提高数据的完整性。这三大范式分别是:第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。
2024-10-29 13:22:15
1012
原创 JAVA基础 类、对象、方法、实例变量、 Java 源程序与编译型运行区别、面向对象
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(sub class)。要访问的话,可以通过编写相应的构造函数来实现对该类的成员进行赋值操作,或者调用该类的setXxx()方法来实现。封装是一种将数据(属性)和对数据的操作(方法)结合在一起,限制外部对对象内部状态的直接访问的机制。从报错信息可以知道,不能通过 (对象.成员)的方式来调用,因为是private访问修饰符来修饰的.进一步说,所谓的封装就是把类的属性和方法使用。
2024-10-27 22:37:29
449
原创 Vue3学习 创建Vue3项目、ref、reactive、setup、Vue3生命周期、Composition API
什么是hook?—— 本质是一个函数,把setup函数中使用的Composition API进行了封装。类似于vue2.x中的mixin。自定义hook的优势: 复用代码, 让setup中的逻辑更清楚易懂。注意事项:一般会创建一个hooks文件夹,然后在里面写相应的 useXxx.js 文件})})return {x,y。
2024-10-27 22:30:50
669
原创 JAVA异常类 Throwable超类、Exception类、检查型异常、非检查型异常、异常处理方式、全局异常处理器、自定义异常、Result类
在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。所有异常都必须是 Throwable 的子类。如果希望写一个检查性异常类,则需要继承 Exception 类。如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。只继承Exception 类来创建的异常类是检查性异常类。
2024-10-21 17:27:10
949
原创 Vue脚手架学习 vue脚手架配置代理、插槽、Vuex使用、路由、ElementUi插件库的使用
例如在input框输入了一些信息,然后要切到另外一个组件,回来发现之前输入的信息不见了,是因为组件在切换时就会被销毁,此时就可以设置该组件处于活跃状态就不会被销毁。数据在组件插槽的自身,但根据数据生成的结构需要组件的使用者来决定。在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,1.作用:切换不同的路由,默认之前的路由是会被销毁的。上面这种引入方式比较暴力,直接把全部的CSS和组件都引入,会导致所占的空间比较大。
2024-10-19 01:20:33
1140
原创 JAVA常见的关键字 final、this、super、static、abstract
1.Final关键字2.This关键字3.Super关键字3.1 基本用法3.1.1访问父类的成员变量3.1.2调用父类的方法3.1.3 调用父类的构造函数3.2super关键字的深层理解3.3 注意事项4.Static关键字4.1 作用范围4.2 使用4.2.1 修饰类的成员变量4.2.2修饰类的成员方法4.2.3 修饰代码块4.2.4 修饰内部类4.2.5 注意事项5.abstract关键字5.1 为什么要用?5.2
2024-10-12 17:07:48
686
1
原创 JAVA基础 基本数据类型、引用数据类型、数组、String、StringBuffer、StringBuild、Iterator迭代器
有一个需求就是普通数据也想用迭代器,那必须得自己封装...@Override@Override@Override// 增强for循环// }注意:由于增强For循环也是迭代器实现的,因此也可以使用增强For循环。。。
2024-10-11 11:25:03
1465
原创 Vue脚手架学习 初始化脚手架、ref、props、mixin、自定义插件、组件的自定义事件、全局事件总线、消息订阅与发布、nextTick、动画过渡效果
Mixins 是一个对象,它包含了 Vue 组件的选项(data、methods、computed、watch、生命周期钩子等)。当一个组件使用一个混合时,混合的所有选项将与组件的选项合并。你可以定义一个或多个混合,然后将它们应用到不同的组件中,从而共享代码和功能。可以把多个组件共用的配置提取成一个混入对象一般会写独立的js文件,然后要使用的地方再引入1.3.2 如何使用 Mixinsdata() {return {},methods: {},
2024-10-10 13:07:09
1079
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人