- 博客(62)
- 收藏
- 关注
原创 使用ShardingSphere实现MySql的分库分表
我们平时在设计数据库的时候,一般都是一个数据库里面有很多张表,比如用户表,那么所有的用户信息都会存在这一张表里面。但是当数据量特别大的时候,如果你只用一个数据库一张用户表来存,这样就会到这这个数据库访问压力过大。所以分库分表就是,把大量用户数据分成多个数据库的多张表来存,这里以学生信息表为例:可以看到,我创建了两个数据库,每个数据库分别有两张表来存储学生信息,这样相当于一共有四张学生表了,这样就能减少每个数据库的访问压力。既然分库分表的意思明白了,那么我们查询或者插入学生表的时候,该怎么操作呢?
2024-09-12 20:12:14
1413
1
原创 线程池原理及改造
首先我们先了解一下线程池里面几个参数:第一个是核心线程数,第二个是线程池最大线程数。(线程池里面的线程分为核心线程和非核心线程,既然核心线程有3个,那么说明还可以创建最多2个非核心线程)第三个是最大空闲时间,第四个是时间单位为秒,第五个是阻塞队列(这个很重要),第六个是线程工厂,默认的,最后一个是拒绝策略。
2024-09-11 20:19:31
1007
原创 一文讲懂Spring Event事件通知机制
我不会按照官方的解释来说什么是spring event,我只是按照自己的理解来解释,可能原理上会和官方有偏差,但是它的作用和功能就是这个,我更加偏向于从他的功能方面去解释,官方的解释其实有点听不懂。ok,说了这么多,到底什么是spring event?我相信event大家都很熟悉,就是事件,那么我么在学前端的时候肯定都知道事件,最常用的就是点击事件,点击一个按钮就触发一个事件。我觉得这里也可以这么理解,只是区别在于这里没有按钮,所以我们只能监听,比如当某个条件达成后,就会自动触发事件。
2024-09-08 18:21:48
1455
原创 自定义Stater
我们平时在导入依赖的时候,大部分导入的都是xxx-spring-boot-stater。那是因为它们都基于spring的规则将写好的框架定义成一个stater,这样方便springboot引用它们写好的功能。那我们为什么也要自定义stater呢?
2024-09-07 12:59:11
876
原创 OpenFeign远程调用详解【微服务篇】
在使用之前,我们需要先知道openfeign是什么?以及它的功能是什么?在哪里需要使用它。那么接下来我们先通过一张流程图来进行一个了解。这是一个我们发送请求到controller,然后服务器接收我们的请求,但是因为我们使用的是微服务,也就是各个服务分开独立。我的初始请求是请求到服务器1,但是现在我需要服务器2中的数据,那么我需要向服务器2 发送请求来获得我需要的数据。而两个服务器之间如何发送请求?这就是openfeign的功能。
2024-09-03 16:09:45
724
原创 Ribbon负载均衡底层原理
RibbonLoadBalancerClient修改请求地址,用localhost:8081替代userservice,得到http://localhost:8081/user/1,发起真实请求。拦截我们的RestTemplate请求http://userservice/user/1。IRule利用内置负载均衡规则,从列表中选择一个,例如localhost:8081。eureka返回列表,localhost:8081、localhost:8082。
2024-09-02 10:21:32
498
原创 Redis缓存穿透/雪崩/击穿
我们使用redis请求数据的时候,正常流程是先去redis缓存中查找,如果查到了数据,那么就直接返回,不需要再去查数据库,如果没有查到,就需要去查询数据库。所以缓存穿透就是:我们大量的访问一个数据库中本身就不存在的数据,既然数据库中都不存再该数据,那么redis'缓存中肯定更加不可能有这个数据,所以每次请求都会访问数据库去查找,大量这样的请求就会导致数据库压力过大崩盘。
2024-08-22 17:10:16
1058
原创 支付宝沙箱模拟支付的实现
现在几乎所有应用或者网站都需要接入支付接口,因为一个产品最终目的还是要赚钱,所以我们今天就使用支付宝提供的模拟支付的接口来实现这个功能。
2024-08-14 10:13:04
1712
原创 SpringSecurity登录认证流程及源码分析
10.既然如此,我们只需要实现这个接口重写loadUserByUsername方法,然后从数据路根据用户名查询到用户信息,然后封装成一个loginUser对象,并且对这个用户的基本信息进行一个校验,没问题后就可以返回了,到这里根据用户名查找用户这个验证已经完成了。(配置类的代码最后会统一给)我们直接找到源头,发现这个加密方法是一个PasswordEncoder接口的抽象方法,里面主要两个方法,分别用于对前端输入的密码加密,还有把加密后的密码和用户信息中的密码进行比对。7.那么不用多说,直接进入这个方法。
2024-07-31 19:43:59
1036
原创 SpringSecurity授权功能的实现
Security:认证 (判断你是平台合法用户)授权(有没有权限访问这个资源)a:b:c我们使用的是自定义的权限表达式 ,也就是说我们的权限用的是a:b:c这种格式来定义权限的,我们在判断权限的时候也是用这种格式来查询是否有对用的权限。SpringSecurity支持表达式:@PreAuthorize 注解的常用参数有:。。。。。。。。。用于判断接口需要的访问权限登录的用户是否拥有/***自定义权限实现,ss取自SpringSecurity首字母*/
2024-07-31 14:45:28
1224
原创 基于SpringBoot实现验证码功能
现在的登录都需要输入验证码用来检测是否是真人登录,所以验证码功能在现在是非常普遍的,那么接下来我们就基于springboot来实现验证码功能。
2024-07-24 00:03:51
3638
6
原创 Vuex--全局共享数据
1.其实mutations集合可以直接修改数据,我们也可以通过”this.$store.commit()“方法直接调用mutations集合里面的方法,之所以要通过store里面的方法去调用,是因为store支持异步调用,所以一般先调用store。在此之前,我们使用vue的数据全部放在每个组件的data区域里面,这里return里面存的都是这个组件要用到的数据,但是这里面的数据是局部的数据,也就是说这些数据是这个组件专用的,其他组件是用不了它的数据的。② 在main.js文件中导入并且挂载store。
2024-07-19 00:30:32
517
原创 Vue--Router(路由)
而且我们以前学过重定向等,也是页面跳转,我觉得区别就在于,路由是局部的页面切换。就是不会改变url重新加载一个网页,而是在一个网页上面显示不同的组件,你甚至可以控制这个新的页面切换在哪个位置。我们都知道,使用vue必然会涉及到很多个组件,也就是页面,而页面之间肯定需要切换,比如我点击一个按钮就需要切换另外一个组件(页面),这就是路由的作用。③ 然后你需要在index.js文件中配置路由的信息,包括导入,配置组件路径,暴露路由等步骤,这这里我将简化后的模板总结出来了,可以直接导入按需求做修改。
2024-07-17 01:22:29
1110
原创 Vue阶段性总结(干货满满)
没错,这就ViewModel的作用,它是View和Model之间的桥梁,负责将 Model 的数据转换为 View 可以展示的格式,并处理用户与 View 的交互。什么叫做所依赖的数据,就是你函数里面用到的数据,比如你要用num1+num2求和,那么num1和num2就是你所依赖的数据,当它们发生变化就会执行计算属性函数中的get方法。插槽本质上也是子组件和父组件之间的一种联系。②Model:既然有了页面,那么不难理解,这就是页面渲染的各式各样的数据,所以Model就是数据,不过它是完全独立的。
2024-07-14 21:59:34
798
原创 Vue基础--v-model/v-for/事件属性/侦听器
正常来说,type=“text”的文本域就算输入的数字,也是string类型,而是由这个.number属性,就可以把数字转成number类型,方便进行运算需求。这个函数里面有一个get函数,当需要获得get函数里面的属性的时候,就会自动调用这个get函数从而获取数据。不过侦听器监听的数据是你自己设置的,设置完成后,当你设置的那个数据一旦发生变化,就会调用侦听器的函数,实现数据的重新计算等。如上面所示,给v-model加上lazy属性,可以实现光标离开后再执行。说的明白一点,就是用来监听数据的。
2024-07-09 23:30:25
1139
原创 Vue的常见指令
它的作用就是我们可以动态的定义属性的值,比如常见的<img src = "1.jpg">我们如果想要修改图片就需要获取到DOM对象,然后再重新填充,但是如果使用v-bind,v-show作用和v-if一样,只是当它为true或者false都会生成DOM对象;style表示样式,同样我们也可以用vue绑定style,实现样式属性的动态生成。接下来,我们实现经常在网页上看见的多选项选择时,选到哪个,哪个就会高亮显示。所以说,vue主要是实现对数据的操作,而js是对DOM对象的操作。
2024-07-09 00:17:48
858
原创 三步学会使用WebSocekt
websocket和HTTP一样是基于TCP的一个通信协议。不过他是支持客户端和服务端双向通信的协议。和HTTP不同的是,websocket是长连接 , HTTP是短连接 ,因为websocket只要客户端可服务端建立好了连接,除了主动关闭连接 , 他们发送完信息不会自动断开 , 而HTTP客户端向服务端发送一次连接,服务端返回后,就会断开连接 , 下次再发就要重新建立连接。而且HTTP只能是客户端主动向服务端发送信息 , 服务端接收,然后再返回。
2024-07-02 12:50:48
1251
原创 Spring Cache常见问题解决
而你把Cacheable注解方法Server层方法上,那么该方法返回的肯定是一个xxx实体类,这就会导致,你存入的数据是一个Result类,而你需要取的数据又变成了xxx实体类,从而导致报错。那么问题就出现了 , 我们传入的新增的参数肯定是不会带有主键id的,那么此时他根据id去查找key,而你的id是null,他就会报这个错误。你只需要记住,springCache的注解,他的存入和取出的数据的类型一定是根据你的方法的返回值来的。这个问题一定是因为你存入数据的注解和取出数据的注解放在不一样的层的方法上。
2024-06-23 00:02:37
1636
原创 使用SpringCache实现Redis缓存
spring cache是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。而且spring cache提供了多种缓存的实现,例如:①EHCahe②Caffeine③Redis想用那种缓存只需要导入对应的jar包即可。本次我们使用Redis缓存作为用例。
2024-06-20 11:08:35
864
原创 Springboot实现微信小程序登录功能
微信小程序登录功能一般用于开发微信小程序的时候,我们需要使用微信授权登录我们的微信小程序,本篇博客就微信小程序实现微信授权登录以及springboot服务端代码逻辑做一个详细讲解。
2024-06-15 00:31:53
2075
原创 Redis 5种常用数据类型
Redis,全称Remote Dictionary Server,是一个开源的、内存中的数据结构存储系统。它可以用作数据库、缓存和消息中间件,支持多种类型的数据结构,如字符串(string)、哈希(Hash)、列表(list)、集合(sets)、有序集合(sorted sets)等类型数据间的操作。由于其出色的性能表现,Redis已成为许多大型互联网公司和开源项目的重要组件。
2024-06-10 15:56:15
501
原创 SQL主键回显
而我一个菜品应该会有多个口味,所以当我们在实现菜品插入功能的时候,我们还需要在插入完成菜品后,再把该菜品的口味也插入到对应的口味表中,而口味表中当然就需要所属菜品的id了。那么现在的问题就是,在菜品还没有插入之前,我是不知道菜品id的,因为菜品id是在菜品插入之后生成的id,所以我就需要在菜品插入完成后,再获得这个菜品生成的id赋值给口味对象,那么就需要使用到主键回显功能。当我们在一个业务功能下操作多张表时,当另一个表数据需要上一个表刚插入的数据的ID时,就需要使用到主键回显。
2024-06-09 12:23:17
569
原创 SpringBoot实现图片文件上传和回显的两种方式
实现图片的上传和回显功能其实在业务中是非常常见的,比如需要上传头像,或者交易平台需要上传物品的图片等等,都需要上传和回显,所以我接下来给大家介绍两种实现照片上传和回显的方式,一种是上传本地,一种是上传OSS。
2024-06-06 19:49:06
1111
原创 mp公共字段自动注入
我们平时在执行更新或者是插入数据功能的时候,都需要给一些公共的字段赋值,比如创建时间,更新时间,创建人,更新人等。这些字段在执行插入或者更新功能的时候,都需要注入一遍这些字段,导致重复代码过多。所以为了解决这一问题,我们可以每次在执行更新或者插入功能的时候,都自动调用一个方法,把这些公共的字段自动注入,这样就省下很多时间。@Component@Slf4j// 插入操作的时候执行该方法@Override。
2024-06-04 11:29:09
1056
3
原创 定时任务的实现方式
Quartz技术是一个比较成熟的定时任务框架,怎么说呢?有点繁琐,用过的都知道,配置略微复杂。springboot对其进行整合后,简化了一系列的配置,将很多配置采用默认设置,这样开发阶段就简化了很多。再学习springboot整合Quartz前先普及几个Quartz的概念。工作(Job):用于定义具体执行的工作工作明细(JobDetail):用于描述定时工作相关的信息触发器(Trigger):用于描述了工作明细与调度器的对应关系。
2024-05-30 17:47:34
896
原创 Springboot阶段项目---《书城项目》
本项目采用集成开发平台IntelliJ IDEA开发了在线作业成绩统计系统的设计与实现,实现了图书商城系统的综合功能和图形界面的显示,可以根据每个用户登录系统后,动态展示书城首页图书,实现了分类还有分页查询,还有用户可以添加图书到购物车,可以查看图书详情等基本功能。Springboot,SpringMVC,Mybatis等技术。
2024-05-23 17:53:07
1165
原创 MyBatis动态SQL--where 标签
而where标签的作用就是为了解决这类问题,where 标签可以自动去除多余的where,and,or这类语句,它是专门管理where子句,可以使其更加灵活。在上一章中的介绍if 标签时,其实我们发现了一个问题,就是当所有条件都为空时,sql语句会多出来一个where,而且有时候会多出来一个and等等。这里其他的地方都没有改变,就是将原来的原生where改成了mybatis中的<where>标签,它管理着where标签里面的所有子句。那么这样的话,where是不能去除多余的and的。
2024-04-03 19:30:00
683
原创 MyBatis动态SQL--if 标签
mybatis动态sql对我们来说是非常常见的,比如在下面这样一个场景中,我们需要多条件查询,但是查询的条件又不是固定的,是可以动态改变的,那我们就需要用到动态sql去完成。
2024-04-03 18:30:00
1838
原创 在WEB中应用MyBatis--事务回滚
所以 , 我们只需要在service创建一个SqlSession对象 , 然后让这个SqlSession对象去执行整个更新数据的方法,比如当他执行往第一次数据更新后,并不直接提交数据 , 而是继续执行第二次更新数据的操作 , 如果两个数据更新的操作都执行完成之后 , 再去提交数据 , 这样就算中间发生了异常 , 因为第一次更新数据后SqlSession对象并没有提交数据 , 所以也不会造成损失。其实我们的思路还是没有变 , 就是要使用一个SqlSession对象去执行这个数据更新。只不过换了一种方式。
2024-04-02 10:38:47
908
原创 MyBatis核心配置文件--<environment>
environmrn标签就是环境标签,我们平时在连接数据库的时候,连接哪一个数据库就表示连接哪一个环境,比如bookStore数据库中有一个t_book数据表,而crm中也有一个t_book数据表 , 而我们在编写sql语句的时候,只会指定操作t_book表 ,但是我应该指定哪个数据库中的t_book表呢?-- 环境可以有多个,这个是另一个环境,也就是另一个数据库crm , 但是这个数据库里面也同样有个t_book的数据表 , 这个环境的id我们改成crm-->
2024-04-02 10:13:37
1022
原创 myBatis-01-mybatis的使用
目录一 什么是mybatis二 mybatis的作用三 如何使用mybatis一 什么是mybatismybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。二 mybatis的作用 mybatis作为一个框架,它的主要作用就是简化我们后端代码与数据库之间的连接。我们原生的JDBC连接数据库过于繁琐,而mybatis底层帮我们实现了jdbc的
2024-03-25 08:50:11
287
原创 Ajax和Filter过滤器详解【24/01/22】
我们在此之前使用servlet由客户端直接向服务端发送请求数据 , 每次发送数据都要刷新整个页面 , 这回导致当我们只需要刷新某个局部数据的时候 , 连同整个页面都会一起刷新 , 从而丢失之前的页面数据 , 而ajax就实现了局部刷新。创建的div只要用于显示服务器返回的数据用户点击按钮时 , 就触发事件。回调函数得到http返回的内容,把内容写在div上。 2.在页面加载后从服务器。实现了局部刷新 , 不需要更新整个页面。把文本框的数据发送给http请求的目标。ajax的作用是什么?
2024-01-22 07:00:00
467
原创 Servlet详解(一)【24/01/15】
servlet是处理前端请求并且做出程序的前端小程序。第一次请求该项目资源->退出或关闭浏览器即是完成一次会话cookie是当你浏览某个网站的时候,由web服务器存储在你的机器硬盘上的一个小的文本文件。它其中记录了你的用户名、密码、浏览的网页、停留的时间等等信息。当你再次来到这个网站时,web服务器会先看看有没有它上次留下来的cookie。如果有的话,会读取cookie中的内容,来判断使用者,并送出相应的网页内容,比如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。
2024-01-15 15:49:36
854
原创 创建一个web项目(保姆级教学)
16.如果你上一步点击了确定 , 那么会退出这个页面 , 你再进入这个页面一下。6.然后找到你的tomcat的安装路径 , 然后要点击根目录(就是存放各种文件的最后一层文件夹)9.首先刚打开的sdk是没有配置 , 我们配置一下 , 选择1.8版本。15.继续如下操作:点击文件-->项目结构 , 进入下面的页面进行操作。然后我们就能看见我们刚刚写的内容了 , 这说明服务器启动成功了。8.然后我们回到主界面 , 然后继续点击文件-->项目结构。17:继续在这个页面进行如下操作 , 修改好了记得保存。
2024-01-11 18:38:47
1494
原创 JavaScript详解【24/01/08】
--是一种运行在客户端(浏览器)的编程语言,实现人机交互 1.var/let 数组名称 = [值列表]; 2.var/let 数组名称 = new Array(); var/let 数组名称 = new Array(size); var/let 数组名称 = new Array(element...);
2024-01-08 21:27:25
928
创建一个完整vite前端项目
2024-07-21
《书城项目》 这是一个基于springboot搭建的项目,前端使用的是jquery 作为一个初学者练手的项目
2024-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人