自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库自增 id 过大导致前端时数据丢失

解决方案二:手动使用 json.parse() 方法还原响应数据。但是在接受 axios 请求参数时出现了精度丢失。可以看到,前端响应参数是没有丢失精度的。解决方案一:改变 axios 字符编码。

2024-12-30 09:30:11 523

原创 vue3 项目构建-10-使用全局管理器 vuex 存储用户登录信息

第一步,安装 vuex,配置持久化插件(用于存储用户登录信息)第二步,创建 vuex.js 配置文件。上面代码中用到 vuex 的就两行。第三步,存入用户登录信息。第四步,获取登录信息。

2024-12-20 08:43:12 360

原创 java八股笔记-3-mysql

通常来说,SQL 用于记录详细的对象信息,将对象结构化并存储,而 NoSQL 用来做一些缓存的操作,因为 NoSQL 是以 hash 的方式存储数据,查询的效率会比 SQL 高,而 SQL 的存储信息更加详细,更加有关联性,通常用于记录用户信息或者需要持久化的数据。比如当我们要删除某一个表的记录时,需要将与这条记录有关联的表的某一条记录也删除,有外键约束可以很方便的做到关联删除的操作。外键的作用是维护两个表的关系,一般一个表的外键约束是另一个表的主键,可以确保两个有关联的表的数据保证完整性和一致性。

2024-12-20 08:42:35 820

原创 java八股笔记-2-Spring

反射式一种强大的机制,允许程序在运行时动态的获取类信息使用场景:Spring 的 依赖注入 和 IoC动态代理 和 AOP配置文件进行可选项的配置单例模式:在程序的生命周期内,Spring 容器只会对一个 Bean 创建一个对象,只存在这一个对象多例模式:每一次从容器中获取实例对象 Spring 都会创建一个实例,每一个实例都是独立的,有自己的生命周期和状态指一个对象从创建到被最终被销毁的整个过程。

2024-12-20 08:41:29 705

原创 前后端发送一个字符串参数

vue3 安装 axios。

2024-12-17 19:02:18 200

原创 router 跳转页面时,跳转出错

结果最后找到答案,跳转界面没有加 setup 语法糖。调了很久,搜了很多资料。添加后 bug 解决。

2024-12-17 19:01:03 96

原创 vue3 简单引入 element-ui

以下是在Vue项目中引入Element-UI并设计登录和注册界面的详细步骤以及示例代码:一、引入Element-UI步骤一:安装Element-UI在你的Vue项目根目录下,打开终端,运行以下命令来安装Element-UI(假设你使用的是Vue 3,如果是Vue 2,安装的版本会稍有不同):npm install element-plus --save步骤二:完整引入(简单但会引入所有组件,适合小型项目)在项目的 main.js 文件(这是Vue项目的入口文件)中,添加以下代码来完整引入Ele

2024-12-07 20:55:49 6015

原创 vue3 项目构建-8-展示 markdown 文档

第二步,使用插件渲染。

2024-12-07 20:21:54 972

原创 vue3 项目搭建-9-通过 router 在跳转页面时传参

第二步,导入 router,在方法中 push 参数到 router。第三步,在 router 中接受 push 的参数。第四步,需要参数的页面拿到参数。

2024-12-07 20:20:03 478

原创 vue3项目构建-7-路由设置

首页:view/layout.index.vue;登录页:view/login/index.vue。二级路由是在一级路由的内部进行切换,和一级路由一起在页面展示。第二步,在一级路由下添加 chidren 属性,指定二级路由。第二步,在 src 下新建 router.js 文件。第四步,在 main.js 中挂载到 vue 实例中。第五步,在 app.vue 中加载路由组件。第三步,在 view 目录下创建路由。第一步,创建二级路由的 vue 组件。path 为空表示默认二级路由。第三步,设置路由出口。

2024-11-29 09:41:52 360

原创 vue3项目搭建-6-axios 基础配置

创建 axios 实例,配置基地址,配置拦截器,目录:utils/http.js。测试路径连接,目录:aips/testAPI.js。基地址:在每次访问时,自动作为相对路径的根。

2024-11-29 08:10:38 587

原创 vue3 与 spring-boot 完成跨域访问

spring-boot,写一个接口用于前端访问,并且给接口设置跨域访问,这里我前端的域名为 localhost:5173。在 main.js 中启动 testAPI.js,并打印在控制台,导入 getCategory 函数即可。在 apis 目录下新建 testVue.js 文件,调用 axios 实例,访问 /vue 接口。vue3,安装 axios 插件,创建 axios 实例,配置基础路径,向后端接口发送请求。utils 目录下新建 http.js 文件,这里的基地址是后端接口的访问根路径。

2024-11-28 16:28:49 606

原创 vue3项目搭建-5-elementPlus主题定制、src 别名 @

配置方法:在根目录下创建 jsconfig.json 文件,如果文件的前面有 js 文件,会自动折叠,但是依然是在同一个目录下的。在编码时输入 @/ VSCode 会立刻联想出 src 下的所有子目录和文件,统一文件路径访问不易出错。在 vite.config.js 中添加 css: 选项:在这里面指定定制样式文件的路径。若按钮变为指定的主题色,则表示配置成功,这里我设置的主题色是粉色。第一步,安装需要的两个插件,安装 element-plus。第二步,修改 vite.config.js。

2024-11-28 10:33:46 541

原创 git 上传代码时报错

在上传代码时,显示无法上传PS E:\JavaWeb\vue3-project> git pushTo https://gitee.com/evening-breeze-2003/vue3.git ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to 'https://gitee.com/evening-breeze-2003/vue3.git'hint:

2024-11-27 11:06:23 512

原创 vue3项目搭建-4-正式启动项目,git管理

连接远程仓库:git remote add origin https://gitee.com/evening-breeze-2003/vue3.git。git pull -> 将远程仓库的代码更新到本地,让版本一致,在提交前执行一下可以避免很多版本冲突的错误。git commt -m "本次提交的信息" -> 将改动的文件提交到本地仓库。git add . -> 提交所有文件,若把点换成指定文件的名字可以指定提交。git push -> 将改动的文件提交到远程仓库。composables -> 组合函数。

2024-11-27 11:06:08 736

原创 vue3小案例-信息系统

这些数据都是 mock 随机生成的,第一条是修改后的结果。

2024-11-26 16:38:35 862

原创 vue3项目搭建-3-Pinia的使用

Pinia 是集中状态管理工具。

2024-11-26 16:38:12 630

原创 vue3 发送 axios 请求时没有接受到响应数据

检查 onMounted() 函数发现 是因为 getList 没有加括号 ()最后排查了半天,通过 count 自增发现 getList 函数根本没有调用。一开始一直怀疑是后端接口的问题,或者是前端请求路径的问题。

2024-11-25 16:38:08 536 1

原创 Vue3项目搭建-2-组合式API

以上代码可以用语法糖将其简化,只需在 script 标签添加 setup 即可,语法糖替代我们完成了 return 操作以及 export default 的操作。在组件渲染时会优先执行 setup 中代码,执行时机为 beforeCreate 之前。若不使用 reactive 函数,则对象不会被动态的渲染到页面。若想要对非对象类型也添加,则可以使用 ref 函数。ref 即支持简单类型,也支持对象类型。

2024-11-21 17:15:46 399 1

原创 vue3项目搭建-1-创建项目

在创建完成后,会在你当前操作目录下生成你命名的项目名的文件,便是项目主体。我们访问 Local 地址,出现如下页面表示项目创建成功。取项目名后,其他创建选项都先选择否。

2024-11-21 15:42:23 348

原创 Redis 的代理类注入失败,连不上 redis

在测试 redis 是否成功连接时,发现 bean 没有被创建成功,导致报错。

2024-11-18 22:33:38 394

原创 java八股笔记-1-java基础

主要依赖于 JVMJVM是一个”桥梁“,是一个”中间件“,是实现跨平台的关键,Java代码首先被编译成字节码文件,再由JVM将字节码文件翻译成机器语言,从而达到运行Java程序的目的不同的平台对于同一个字节码文件翻译出来的机器语言是不同的,同样的 java 代码在不同的平台下的编译结果都是相同的JDK ,JRE,JVM 的关系:JRE 是能够运行机器语言所需的最小环境;JDK 是开发,编译,调试,运行 java 程序所需的全部工具和环境。

2024-11-13 21:18:32 926

原创 Mybatis-plus 使用分页插件

mapper,可以继承 myvatis-plus 中的 BaseMapper<T> 类,里面有很多常用的 CRUD 方法。如果要添加自定义 sql ,也可以直接在接口中定义,可以选择注解或者 mapper.xml 的方式指定该方法的 sql。记得要在 mapper 类上加上 @Mapper 注解以供 Spring 扫描。

2024-11-13 20:11:03 567

原创 单元测试时,mapper 中的 xml 配置的 sql 报错

解决方案一:将 mapper 类和 mapper.xml 放在同一个包下,失败。解决方案三:在 yml 配置文件中指定该 xml 文件的扫描。解决方案二:在启动类上加上包扫描。失败,不过可以排除是包扫描问题。

2024-11-13 20:10:11 387

原创 单元测试时报错找不到@SpringBootConfiguration

(或者@SpringBootApplication)注解的类。如果没有,可以在测试类上添加。注解用于加载 Spring Boot 应用上下文,但它需要找到一个带有。错误表示 Spring Boot 在运行测试时无法找到。确保你的测试类所在的包或子包中存在一个带有。)注解的类来配置应用上下文。

2024-11-13 19:33:45 530

原创 在启动 Spring Boot 项目时,报找不到 slf4j 的错误

将 pom.xml 中的如下配置替换成这样,排除这个插件。而且 tomcat 的启动信息不知道为什么输出出来了。

2024-11-12 19:50:13 939

原创 idea 中 application.properties 创建后图标不对

解决方案,用 AI 将 .properties 文件转换为 .yml 文件,图标正确。

2024-11-12 16:22:10 276

原创 仿微信项目-2-Socket模拟聊天室

利用 Socket 模拟一个服务器来统一接收和发送消息。然后,我们先将服务器启动,再用不同的客户端发送消息。再用 Socket 模拟若干的客户端。

2024-11-05 19:43:32 222

原创 仿微信项目-1-部署依赖、环境

为了避免 idea 给我们生成多余的文件,我们可以选择直接在文件夹中创建项目。

2024-11-05 19:43:21 527

原创 点评项目-12-好友关注

好友关注主要有三个功能:1.关注和取关2.共同关注3.关注推送。

2024-10-31 12:06:20 591

原创 点评项目-13-附近商铺、用户签到、UV统计

通过 Redis 的 GEO 功能完成地理位置的相关操作以下是北京几个地区的经纬度:北京站:116.42803 39.903738北京南站:116.378248 39.865275北京西站:116.322287 39.893729在 redis 中添加一个位置的命令查询两个点之间的距离查看某个地点附近的商铺。

2024-10-31 12:05:40 1331 1

原创 点评项目-11-达人探店

达人探店需要实现的功能:1.发布探店笔记。

2024-10-23 21:34:08 459

原创 点评项目-10- redis 消息队列完成异步秒杀

基于异步判断库存和一人一单,改进秒杀业务,提高并发性能需求:1.新增秒杀优惠卷的同时,将优惠卷信息保存到 Redis 中2.基于 Lua 脚本,判断秒杀库存,一人一单,决定用户是否抢购成功3.如果抢购成功,将优惠卷 id 和用户 id 封装后存入阻塞队列4.开启线程任务,不断从阻塞队列中获取信息,实现异步下单功能。

2024-10-21 21:15:01 240

原创 点评项目-9-秒杀业务(加锁)、redis分布式锁

悲观锁:在加锁时,我们将锁加在含有事物提交的方法上,对于方法的调用,会出现没有被 spirng 管理导致事物无法提交的情况,我们需要拿到其 sping 代理对象来调用含有事物提交的方法(需要添加 aspectjweaver 依赖,并在启动类添加 @EnableAspectJAutoProxy(exposeProxy = true) 注解)在释放锁时,我们需要判断要释放的锁和当前线程的锁是否一致,一致才释放,若不一致则直接让本该释放的锁通过 ttl 延迟释放。在存入锁时,我们使用 UUID 生成 Key。

2024-10-17 21:42:11 906

原创 idea 启动时,报错 Start Failed

通过第二行冒号之后的内容,我们可以推测出事因为 Lua 插件的原因导致无法启动。重新安装idea,解决。尝试禁用该插件,失败。

2024-10-17 11:09:44 550 1

原创 点评项目-8-全局ID生成器、秒杀优惠卷

2.新增秒杀优惠卷,将其对应的普通卷拿到后,封装成秒杀卷,再将其存入数据库,并且将其库存存入 redis 缓存,请求路径:/voucher/seckill。"rules": "全场通用\\n无需预约\\n可无限叠加\\不兑现、不找零\\n仅限堂食","rules": "全场通用\\n无需预约\\n可无限叠加\\不兑现、不找零\\n仅限堂食","rules": "全场通用\\n无需预约\\n可无限叠加\\不兑现、不找零\\n仅限堂食",1.新增普通优惠卷,直接将其存入数据库即可,请求路径:/voucher。

2024-10-14 11:47:27 979

原创 点评项目-7-缓存击穿的两种解决方案、缓存工具类的编写

在高并发访问的访问中,对于复杂业务 key 的缓存,可能会在缓存生效前打入大量的请求,导致大量的请求打到数据库解决方案:1.互斥锁,给缓存的构建过程加上一个锁,当拿到锁时才进行下一步,锁被占用则睡眠一段时间后再拿锁2.逻辑过期,给缓存加上一个逻辑过期时间,但是在 redis 中过期的数据不会被真正删除,在查询时,如果 key 在逻辑上过期了,则开启一个锁,并把更新 key 的任务交给另一个线程,然后先直接返回旧数据;若某个遇到锁被占用无需等待,直接返回旧数据。

2024-10-14 11:47:12 698

原创 点评项目-6-缓存更新策略、缓存穿透、雪崩

使用 redis 缓存记录的信息,有可能在数据库被信息被修改导致信息不一致,使用缓存更新来解决这个问题缓存更新策略主要有三种:1.内存淘汰(redis默认开启)2.超时剔除(给key添加TTL时间)3.主动更新(编写业务逻辑)主动更新策略:在数据库更新时删除缓存,通过事物保证数据库的更新和缓存的删除同时成功或失败。对于数据库的更新和缓存的删除的执行顺序:先删后更,在多线程下在数据库完成更新前可能会被另一个线程查询,导致数据不一致;

2024-10-11 17:17:28 711

原创 点评项目-5-商户查询缓存,从 2s 优化到 12ms

业务需求:当前端发送 shop/id 的请求时,我们需要向前端响应对应 id 的详细数据给前端直接查询 mysql 效率比较低,我们可以使用 redis 作为中间件进行数据的缓存,先查询 redis ,若redis 中未查询到,则在 mysql 中查询,并在查询后写入 redis 中。

2024-10-09 12:23:46 325

原创 点评项目-4-隐藏敏感信息、使用 redis 优化登录业务

对于登录信息,我们可以使用哈希结构存储不同的信息,使用随机 token 生成随机且唯一的 key,在响应时,将 token 返回给浏览器,在之后需要用到 token 的请求,需要在请求中发送 token。之前我们对 /user/me 路径,直接返回了登录的所有用户信息,其中的 passward 等敏感信息也会被返回到前端,这是很危险的,故我们需要选择性的返回用户信息,隐藏敏感用户信息。再使用第二级拦截器判断用户是否登录,登录的用户一定会存在于线程池,我们可以通过此来判断用户是否登录。

2024-10-09 10:17:38 1402

空空如也

空空如也

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

TA关注的人

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