自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 Nacos笔记

在nacos/conf中有一个mysql-schema.sql这个sql脚本,作用就是利用mysql将nacos进行持久化,直接在本地执行里面的sql脚本,修改conf目录下的application.properties,最后重新启动即可。这个脚本的位置:就在nacos中的conf中的有一个mysql-schema.sql这个sql脚本,在服务器的mysql执行这个脚本就行。我之前搞这段配置的时候是直接黑马商城这个项目的,里面直接已经配置好了。数据库jdbc,日志swagger和openfeign配置。

2024-09-26 22:03:55 1199

原创 工厂模式,策略模式,代理模式,单例模式在项目中的应用

这段代码定义了一个名为的 Java 注解(Annotation)。注解是一种元数据,用于为代码元素(如类、方法、变量等)提供额外的信息。@Component/*** 应用类型* @return*//*** 评分策略* @return*/@Target(ElementType.TYPE):指定这个注解的作用域:类,接口和枚举@Retention(RetentionPolicy.RUNTIME) 指定了注解在运行时可用,

2024-09-17 17:24:30 1248

原创 Redis实战:存储笔记点赞+好友关注+GEO搜索附件商户+用户签到+UV统计

当我们点击美食之后,会出现一系列的商家,商家中可以按照多种排序方式,我们此时关注的是距离,这个地方就需要使用到我们的GEO,向后台传入当前app收集的地址(我们此处是写死的) ,以当前坐标作为圆心,同时绑定相同的店家类型type,以及分页信息,把这几个条件传入后台,后台查询出对应的数据再返回。第二次查就算我们按照之前的逻辑将这个偏移量设置成1,我们会查出0~3范围的成员,那这个成员是什么是m4,m3,m2,m1,然后我们的offset设置成1,那就会怎么样。这样我们就用极小的空间,来实现了大量数据的表示。

2024-09-10 22:17:40 1152

原创 Redis实战:基于session共享登录+缓存中遇到的基本问题+Redission分布式锁的应用+异步调用优化秒杀优惠券

项目背景:该项目背景就是黑马的黑马点评项目。

2024-08-31 21:59:17 1345

原创 SpringBoot项目整合智谱AI + SSE推送流式数据到前端展示 + RxJava得浅显理解

``json{"options":[{"value":"12 + 15", "key":"A"},{"value":"14 + 17", "key":"B"},{"value":"13 + 16", "key":"C"}], "title":"小学数学测验:哪个选项的结果是29?"},

2024-08-27 17:22:19 2297

原创 RabbitMq的基本理解

我们往先指定一个正常的交换机和队列,接着再指定一个死信交换机,将这个队列和死信交换机连连接起来,我们往这个队列中发送一条消息,并且给这个消息设置过期时间,但是我们不指定消费者,那我们可想而知,最后这个消息等超过了这个过期时间,就是进入到这个死信交换机中,那不就刚好达成我们延迟消息的目的了嘛。如果不是ack,就和我们自己指定的这个最大尝试次数判断,如果没超过这个重试次数,我们就继续发送消息,发送消息的流程一样,就是生成唯一的消息标识,然后执行回调函数。生产者收到ack确认后,就知道消息已经成功投递到队列。

2024-08-18 14:37:36 1060

原创 聚合平台项目优化(门面模式,适配器模式,注册器模式)

这篇文章的思路就是抛出问题,再思考解决方案,最后利用设计模式解决问题。

2024-08-13 22:28:29 982

原创 聚合平台项目之数据抓取

首先就是这个文字资源我将这个这个放到了一个一次性任务中这个一次性任务怎么保证一次性呢我们都知道springboot项目启动后会加载所有的bean对象我们只需要将这个类注册成bean即可,然后用完直接把@Component注销掉即可下一个是图片的项目实战应用@Service@Overridetry {i++) {//获取图片//获取标题break;整体的东西是差不多的我们将这个url修改成动态了之前在测试类中我们是写死了小黑子。

2024-08-13 20:02:52 1097

原创 微服务保护(Sentinel,请求限流,线程隔离,降级策略,熔断处理)

FallbackFactory这个降级工厂:@Slf4j@Override@Overridelog.info("查询商品失败"+cause);@Overridelog.info("减少库存失败"+cause);在这个工厂中,我们需要给这两个方法都提供降级逻辑。

2024-08-12 20:19:49 1160 2

原创 分布式事务(Seata,XA,AT模式

我们可以设想,这三个模块都需要访问数据库,彼此之间不想单体架构的项目一样,可以用@Transactional进行控制,如果有一个服务访问数据库失败,那就会造成数据不一致的问题。这个快照是针对我们每一个微服务模块的,所以我们是不是得每个数据库都得保存,或者,如果项目比较大,一个微服务对应一个mysql实例,那我们就得在每个mysql实例中保存。我们需要把这个seata的服务注册到nacos里去,所以,这里的ip地址得改成我们自己的。服务则是事务协调中心,是一个独立的微服务,需要单独部署。

2024-08-12 10:14:41 606

原创 Java 9 及更高版本中的模块系统(JPMS)引发的第三方库或代码需要访问java内部的API(反射)发生的IllegalAccessException 问题

在 Java 9 及更高版本中,Java 引入了模块系统(JPMS),这意味着某些包和类的访问权限更加严格。如果你的代码或第三方库需要使用 Java 内部的某些 API(比如反射访问某些类),但当这些 API 所在的模块没有被显式开放时,就会导致。是一条 Java 命令行参数,用于在 Java 9 及更高版本中进行模块化编程时,控制模块访问权限。包的访问权限,使得未命名模块(未明确定义为模块的代码,比如一些库或框架)可以访问该包中的类。: 这是一个常见错误,指的是在初始化静态内容时抛出的异常。

2024-08-12 07:40:29 214

原创 微服务项目的登录流程

项目背景是黑马商城,通过黑马商城这个微服务项目将前端发送登录请求,到API网关进行登录校验并获取登录用户ID,再将用户ID传递到微服务板块中的MVC拦截器,并且在微服务板块的各个模块中用openfeign的拦截器结合具体的需求来实现功能。在springboot项目中,你想将配置文件绑定到这个Java对象上,首先你得先确认你这个对象是一个bean对象,将这个对象注册成bean对象的方法有两种@Compont或者在启动类加上面@Scan注解。我们根据这个配置文件的信息就是说,有些路径需要校验,有些不需要,

2024-08-10 17:54:27 1113

原创 API开放平台项目全过程总结

该项目是一个api的调用平台,类似于百度开发者中心,使用者可以访问然后调用自己需要的接口来实现自己的功能该项目的简单模拟了这个流程该系统有三个子后端系统,分别是传统的用户管理系统,API网关系统,还有接口系统。整体的流程如下图:用户在前端页面发出请求,可以请求管理系统,里面就是对用户和接口的一些基本的crud,当用户想要调用接口的时候,这个时候API网关就会对请求进行一个统一的拦截,先对用户和请求的接口进行校验(在里面包括用到了API签名认证的技术对用户的身份进行了一个严格的校验,

2024-08-07 09:03:37 946

原创 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderExce

org.apache.ibatis.builder.BuilderException:错误评估表达式'ew. view '。sqlSegment!原因:org.apache.ibatis.ognl.OgnlException: sqlSegment [java.lang.ExceptionInInitializerError]根据你提供的错误信息,似乎是在使用 MyBatis 时出现了问题。具体错误信息指出了在 MyBatis 的表达式评估时遇到了。让我们逐步分析这个问题并提供一些可能的解决方案。

2024-08-06 15:56:35 249

原创 Dubbo框架实现RPC远程调用包括nacos的配置和初始化

这个技术我是直接在项目中运用并且学习的,所以我写笔记最优先的角度就是从项目背景出发继上一次API网关完成了这个实现用户调用一次接口之后让接口次数增多的操作之后,又迎来了新的问题。就是我们在调用接口的时候需要对用户进行校验,对调用的接口是否存在进行验证。从这个需求出发,我们第一反应想到的解决办法是什么,应该是在api-gateway项目中也来引入一下这个数据库配置,包括三层架构重新写一轮,包括实体类也需要引入一下。

2024-08-06 12:30:27 988

原创 API网关理解

装饰器设计模式就是在原有的基础上增强。感觉蛮好理解这个东西。

2024-08-03 17:06:41 1071

原创 JWT登录校验流程

但是传统的会话技术对用户的掌控能力更强,就是我可以直接在我的数据库中将session设置为失效,你直接就登录不了,不过对比于jwt,我们必须会设置一个过期时间,只有等过期时间过去了,你才不能登录。就是当你登录成功之后,系统会给你下发一个令牌,这个令牌肯定会比较复杂,拼接你的账号密码这些然后经过加密算法算出来一个字符串三个部分,三个部分就是我上面说的请求头,负载,签名。记住这个我们需要判断,这个路径是不是登录方法,如果是登录方法,我们都还没给他令牌,肯定。

2024-08-03 13:20:25 1125

原创 Mybatis-plus笔记

这一篇的标题是Mybatis-plus笔记,不会再去分析Mybatis-plus中的每一个方法,就单纯的从下面四个方面介绍一下1:介绍一下概念(依赖,基本的使用)2:Mybatis-plus的条件构造器3:Mybatis-plus的扩展功能:分页插件,乐观锁,悲观锁,禁止全局删除或更新4:Mybatis-plus - x插件简介 | MyBatis-Plus (baomidou.com)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2024-08-02 12:54:31 921

原创 SpringMVC(包括Servlet,会话技术)理解

首先先介绍一下Servlet这个用java编写的服务端的程序。再介绍Cookie和Session的会话技术,最后再介绍SpringMVC,因为现在的表述层都直接用SpringMVC这个框架了,淡化了很多Servlet方面的知识,不过这个框架底层也是用Servlet实现的,所以在此简单记录一下。这个是鱼皮老师的用户中心项目,之前写过苍穹外卖,接触了jwt登录,但是那个时候是直接用了拦截器,自己对jwt的研究也不够深入,这个项目接触了另一种登录方法。也算是有所收获。

2024-07-31 17:51:50 1013

原创 Vue3路由

路由:可以根据特定的规则将数据包或请求从源地址传输到目标地址在前端或者vue3项目中路由主要用于构建单页面应用程序(SPA)路由器(Router):路由器是负责管理路由的组件或模块。它定义了路由的规则、路径和对应的处理函数或组件。请着重注意,路由器(Router)与路由(Route)的区别。路由器是用来管理路由的,你也可以理解为路由的集合。如果将一个一个的路由比作学生,那么路由器就是老师,负责管理所有的路由。在vue3项目中,路由是由路径和对应的组件构成的。

2024-07-30 23:06:12 346

原创 Vue3基础语法

修改名字

2024-07-30 20:14:44 1209

原创 No MyBatis mapper was found in ‘[com.yupi.apiinterface]‘ package. Please check your configuration.

首先介绍一下背景新建了一个模块,然后按部就班的写了controll层关键点来了我用Mybatis-X的插件生成了实体类,mapper及注解还有service但是mapper上面是没有@Mapper这个注解的我前几天刚好分析了springboot的自动装配原理,我想着用这个注解来扫描mapper包,不过竟然报错了最关键的是这项目启动没有问题:然后我刚好在模拟向后端发送请求这个功能然后我发现,后端都收不到我的请求后面我看了一下任务管理器:8开头的端口没有我的项目进程。

2024-07-26 23:06:28 604

原创 API签名认证

简介 | HutoolHutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug这是Hutool得官方解释把这个Hutool看成一个工具类即可。

2024-07-26 22:48:44 855

原创 springAOP理解及事务

Slf4j@Component//将这个类交给IOC容器管理@Aspect//声明这个类是一个AOP类@Autowired@Autowired//操作人ID - 当前登录员工ID//获取请求头中的jwt令牌,解析令牌//操作时间//操作类名//操作方法名//操作方法参数//原始方法执行之前的时间//调用原始目标方法运行//方法返回值//操作耗时//原始方法执行之后的时间//记录操作日志。

2024-07-25 20:41:47 948 1

原创 springboot自动装配原理(源码分析)及自定义starter

SpringBoot的自动配置就是当spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot 的 starter。常见的自定义starter:阿里云OSS,JWT令牌,这些功能模块,我觉得也可以理解为工具类。

2024-07-24 17:28:48 710

原创 spring部分源码分析及Bean的生命周期理解

本文整体框架是通过refresh方法这个入口进入分析:分析IOC容器的创建及一些Bean的生命周期的知识点,写得确实一般般,感觉自己的有些前置知识并没有理解的很到位,所以,这篇文件先记录一下,等以后理解得好了再来更新。System.out.println("实例化");System.out.println("依赖注入");System.out.println("初始化");System.out.println("销毁");@Override。

2024-07-23 15:14:07 1171 2

原创 Maven使用(依赖管理和继承聚合特性)

虽然传统的Web工程一般指的是WAR包部署,但目前的开发实践中,尤其是使用Spring Boot的情况下,JAR包也是可以直接用于Web应用程序的部署的。这为开发者提供了更为灵活和便利的部署方式。所以在你提到的情况下,使用JAR包来部署Web项目是完全合理的,尤其是如果你使用了Spring Boot的话。这样可以让你的应用更容易进行独立部署和管理我们可以从上面得知,springboot项目有内置tomcat 这种服务器软件,所以,我们直接打成jar包就行,

2024-07-22 20:37:45 1023

原创 项目部署上线(跨域问题的处理)

镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。我觉得可以理解为一份文件的副本。

2024-07-21 00:56:09 1429

原创 伙伴匹配项目的随机匹配算法功能开发

------------------状态转移方程。的直接遍历,我的第一个标签开始,遍历你的标签数组,如果有这个标签,我就记下来,count++,然后第二个标签,这样一想直接就是指数级别的复杂度,dp[i][j]表示将str1的前i个字符变成str2需要几步 ------------------确定dp数组的含义。将dp这个二维数组第一行和第一列初始化为i和j ------------------初始化dp数组。改,dp[i][j] = dp[i - 1][j - 1] + 1。

2024-07-19 09:44:21 884

原创 JDK新特性(Lambda表达式,Stream流)

有且只有一个抽象方法的接口,用@FunctionalInterface去检测我们可以点击这个Comparator这个方法还有我们在线程章节经常用的Runnable接口这时候可能有人会想,Lambda表达式既然只能用函数式接口做为参数,那这个不是很鸡肋嘛难道我要自己去写一个接口,里面专门再只放一个抽象方法,那这不是更麻烦了嘛反正我刚刚学的时候,我确实是有这样的疑问后面问了GPT,其实这个lambda表达式大部分应该是和后面的Stream流一起使用的。

2024-07-17 16:42:19 1350

原创 设计模式(工厂模式,模板方法模式,单例模式)

这很容易引发线程不安全问题,我们设想有两个线程,第一个线程需要这个singleton1这个对象,进入了if判断,不过这个时候CPU将线程切换给了第二个线程,那这个时候,第二个线程也进入了if判断,然后CPU再切换会第一个线程,线程一创建了对象,但是我们知道线程二也进入了if判断,它也能创建对象,这就导致了线程不安全问题。所以翻译成Java语言就是,空调是一个抽象类,发动机是一个抽象类,多个抽象类,一个工厂抽象类,不同型号的车是一个类都去继承这个工厂,你需要什么零件就去这个工厂里面配这个零件。

2024-07-16 16:20:22 944

原创 网络编程+文件上传操作的理解

概述:在网络通信协议下,不同计算机上运行的程序,进行数据传输比如:通信,视频通话,网游,邮件等只要是计算机之间通过网络进行数据传输,就有网络编程的存在(下面单纯是在Java基础中了解了一下网络编程,感觉理解比较浅显,深入的知识可能得学Netty)

2024-07-15 17:29:11 966

原创 组队功能开发(伙伴匹配系统)

1:全量查询时(listTeam):封装了一个TeamQuery这样一个dto用来接收前端参数,其实也是告诉前端,只需要传这个实体里面的属性即可,(这个蛮好理解,有些字段前端不需要,比如id,当前时间字段)Java的Optional类是在Java 8中引入的一个类,用于解决空指针异常的问题,Java的Optional类是一种优雅地。不过我感觉这样有一个问题:就是当你的队伍失效或者解散的时候,你要修改在这个队伍中的每个用户的队伍字段,这就很麻烦了。但是我们继续想,如果只有一张队伍表,你这个队伍中肯定有成员,

2024-07-14 09:50:47 911

原创 Java泛型

泛型(Generics)是 Java 编程语言中的一个重要特性,它允许我们在定义类、接口和方法时使用一个或多个类型参数,从而使得代码具有更高的复用性和类型安全性。对于泛型类来说:new对象的时候确定类型对于泛型方法来说:调用的时候确定类型对于方法接口来说:a.在实现类的时候还没有确定类型,只能在new实现类的时候确定类型了 ->比如 ArrayListb.在实现类的时候直接确定类型了 -> 比如Scanner。

2024-07-13 15:20:46 739

原创 分布式锁理解

处理多个并发操作的情况,确保在分布式系统中的不同节点(不同服务器)上对共享资源的访问是有序的和安全的什么意思呢:有一个房间(数据库),有三台服务器ABC,他们都有这个定时任务,想要进去操作数据库我们规定,ABC三个服务器需要抢夺一把锁,抢到的才能进入,进去之后并且还需要锁上门这就和Java多线程很像。

2024-07-12 23:00:59 845

原创 Java集合

集合的概念:集合(Collection)是Java编程语言中一种非常重要的数据结构,用于存储和操作一组对象。在Java中,集合框架提供了一系列接口和类,用于表示和操作不同类型的集合,如列表(List)、集(Set)、映射(Map)等。boolean add(E e) : 将给定的元素添加到当前集合中(我们一般调add时,不用boolean接收,因为add一定会成功)extends E> c) :将另一个集合元素添加到当前集合中 (集合合并)void clear():清除集合中所有的元素。

2024-07-12 17:26:48 846

原创 Java多线程

锁:那个object对象我们也可以设想,就是一个票肯定只能有一把锁,如果有两把锁,那就和没锁是一样的了,其它线程还是能从另一个锁访问到这里的object对象就是这个锁,保证这个对象唯一就行。死锁是指在多线程或多进程的程序中,各个线程或进程因竞争资源而陷入相互等待的状态,导致它们无法继续执行下去,这种情况被称为死锁。在死锁状态下,没有任何一个线程或进程能够继续执行,它们都在等待其他线程或进程释放资源,而形成了一个闭环。再举两个例子把。

2024-07-05 22:59:17 778

原创 Java的字符串

正是应该这个特性,String不能被修改,所以后面才出现了StringBuilder。

2024-07-05 14:40:24 1027

原创 解决前端登录成功之后,往后端发请求携带cookie问题

总结一下就是:我一直把我的cookie种在了http://localhost:8080/api这个域,不过http://localhost:8080/api和 http://127.0.0.1:5173/并不是一个域,所以,我在访问 http://127.0.0.1:5173/这个域名的时候,我就一直找不到cookie。说回这个Cookie在项目中的作用,当我们成功登录之后,浏览器产生了这个Cookie,如果我们想访问其它页面的话,就需要携带这个Cookie,要不然后端是不认识你的。

2024-07-03 16:30:47 2079

原创 Toast.success is not a function

说一下自己的项目:项目背景是伙伴匹配系统。

2024-07-02 14:12:03 463 3

空空如也

空空如也

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

TA关注的人

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