- 博客(131)
- 收藏
- 关注
原创 专题二 - 滑动窗口
因为有不符合条件的数组,返回零,所以在最后的 return 中,选择三目表达式,如果 len 在整个过程中,始终保持 Integer.MAX_VALUE 则返回 0。注意:在代码编写中,定义的 len 为满足条件的子数组的最小长度,最开始并不知道最小长度是多少,我们先定义为整数类型的最大值。这道题中,因为我们使用了数组来代替 hash 表,用数组下标来表示水果种类,用数组对应的元素,表示水果的个数。看起来我们上述的过程,并不是很靠谱,并没有将所有的情况全部枚举,只是对部分情况进行了判断,感觉有点不靠谱。
2025-11-20 20:56:04
970
原创 分布式部署
1 台机器,就是我们前面的单机部署,将所有服务部署在一台服务器上,如果多台,就可以将上面的 5 个服务,根据机器性能分摊,分开部署即可~4. Nacos 默认注册地址为内部局域网 IP,如果各个服务器不在一个局域网时,根据内网 IP 去访问,会出现内网不通,接口调用失败。前面的文章中,我们的微服务都是在单机上进行部署的,接下来要使用多台服务器,演示分布式服务部署。在 CMD 客户端,使用如下命令行,连接 MySQL,如果可以正确连接,则授权成功。2. 确认配置,代码,打包,上传 jar 包 -->
2025-11-13 21:02:43
871
原创 专题一 - 双指针
2. 遇到 非 0 元素,dest 指向的是非 0 区间的最后一个元素,此时要腾出一个位置,来插入这个新的非 0 元素,所以先 dest++,再swap(dest, cur),然后 cur++2. arr[cur] == 0 则 arr[dest] = 0 ,dest--,arr[dest] = 0,dest--,cur--通过我们第一次异地的模拟过程,知道了最后一个复写的元素是 4,则将 cur 指向最后一个复写的元素,dest 指向结束时的最后位置。则至少会存在一个巢穴中的鸽子的数目是大于 1 的。
2025-11-11 11:45:28
653
原创 统一服务入口-Gateway
前面的课程中,我们通过 Eureka,Nacos 解决了服务注册,服务发现的问题,使用 Spring Cloud LoadBalanced 解决了负载均衡问题,使用 OpenFeign 解决了远程调用问题。但是,当前的所有微服务接口都是直接对外暴露的,可以直接通过外部进行访问。为了保证对外服务的安全性,服务端实现的微服务接口通常带有一定的权限校验。由于使用了微服务模块,原本一个应用的多个模块被拆分成了多个应用,导致我们需要进行多次逻辑校验。当逻辑校验发生变化时,就需要改变多个应用。
2025-11-04 20:19:20
967
原创 服务注册 / 服务发现 - Nacos
随着 Eureka 2.0 的宣布闭源,阿里 Nacos 宣布开源,快速成为国内最受关注的开源产品。在最初开源时,Nacos 选择进行内部三个产品合并统一开源(Configserver 非持久注册中心,VIPServer 持久化注册中心,Diamond 配置中心)。定位:一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。所以 Nacos 是一个注册中心组件,但又不仅仅只是一个注册中心组件。
2025-10-24 11:27:09
932
1
原创 多机部署,负载均衡
上篇文章中,实现远程调用的代码如下:根据应用名称获取到了服务实例列表,从列表中选择了一个服务实例。但如果一个服务对应多个实例呢?流量在这些实例中是如何分配?现象观察:在 Services 中先启动三个服务然后再多启动两个 product-service 实例此时观察 eureka,可用看到 product-service 下有三个实例。通过日志发现,发出了多次访问,但都到了同一台机器上。我们希望的是,启动多个实例之后,请求可用被分担到其他机器上。
2025-10-17 16:48:29
929
1
原创 服务注册 / 服务发现 - Eureka
Eureka 是 Netflix OSS 套件中关于服务注册和发现的解决方案。SpringCloud 对 Eureka 进行了集成,并 作为优先推荐方案进行宣传,虽然目前 Eureka2.0 已经停止维护,新的微服务架构设计中,也不再建议使用,但是目前依然有大量公司的微服务系统使用 Eureka 作为注册中心。Eureka 分为两部分::作为注册中心的服务端,为微服务应用提供服务注册,服务发现,健康检查等核心能力。:作为服务提供者的客户端。
2025-10-16 11:32:34
1288
1
原创 SpringCloud 学习之环境工程搭建 - 1
实现一个电商平台 demo例如京东,里面有极多功能,如果将这些功能全部都卸载一个服务中,这个服务将是巨大的。此时微服务架构就是一个较好的选择。微服务应用开发的第一步,就是服务拆分,拆分后才能实现各自开发。
2025-10-15 17:59:02
671
原创 Spring Cloud 概述
它只是把一些比较优秀的解决微服务架构中常见的开源框架,基于 Spring Cloud 规范进行了整合,并基于 Spring Boot 的风格,对这些组件框架进行封装,将一些复杂的配置和实现原理进行了屏蔽。我们可以将一些通用的,会被多个上层调用的共享业务,抽象提取称独立的基础服务,组成一个一个微小的服务,这就是微服务。2. 功能上,集群的每一个节点的功能都是相同的,并且是互相可以替代的。服务依赖:随着服务数量增多,服务与服务之间的关系也会更加复杂,一个服务发生更改,就需要考虑到修改的服务对其他服务的影响。
2025-10-15 10:32:04
792
原创 Spring 原理
3.1:执行各种通知(Aware 接口)(没有方法,仅用于标记 Bean 需要感知容器资源),常见的有 BeanNameAware:让 Bean 知道自己在容器中的名字,BeanFactoryAware:让 Bean 拿到容器的 BeanFactory,ApplicationContextAware:让 Bean 拿到容器的 ApplicationContext(即容器主动给 Bean 发消息,把容器的资源告诉 Bean)4. @ComponentScan:包扫描。
2025-10-10 19:46:46
976
原创 Linux 基本入门
最明显的一点就是 MySQL 数据库密码,我们在开发环境中的数据,都是 mock 的,一点不重要,被黑客窃取了也无所谓,可以设置简单密码 123456。注意:此处安装的 jdk 是 OpenJDK,OpenJDK 是一个开源版本的 jdk,和 Oracle 官方的 jdk 略有差别,此处我们使用 OpenJDK 即可~此时就使用到了上面补充的 MySQL 相关命令,使用密码进入 Linux 的 MySQL,然后将数据库脚本运行,建立相同的表结构。生产环境:最终项目发布时候使用的机器,需要极高的稳定性。
2025-10-10 15:14:03
495
原创 Spring AOP
AOP:Aspect Oriented Programming(面向切面编程)提到面向切面编程,易想到之前的一点知识:面向对象编程,Java 是一门面向对象的编程。面向切面 与 面向对象并不矛盾,面向切面是对面向对象的补充。这里的切面指,某一类特定的问题,所以 AOP 也称面向特定方法编程。面向特定方法编程:例如前面我们举出的案例,强制登录校验拦截器,就是为了解决登录校验这一问题而做出的统一处理;统一异常处理,是为了解决抛出异常而做出的统一处理;统一数据处理,是为了解决数据返回格式做出的统一处理。
2025-10-03 16:48:17
758
原创 Spring 统一功能处理
统一的数据返回格式使用 @ControllerAdvice 和 ResponseBodyAdvice 的方式和 @ControllerAdvice 表示控制器通知类,添加类 ResponseAdvice,实现 ResponseBodyAdvice 接口,并在类上添加 @ControllerAdvice 注解。通过源码,我们观察到 @ControllerAdvice 派生于 @Component 组件,这也说明了,为什么没有五大注解,@ControllerAdvice 仍可以生效的原因。
2025-10-01 21:06:52
826
原创 Spring 统一功能处理 - 拦截器与适配器
前面图书管理系统案例的完善中,我们实现了强制登录的功能,后端程序 Session 来判断用户是否登录。但实现过程还是比较麻烦的,且有大量冗余重复的代码。有一种方法,可以统一拦截所有的请求,并进行 Session 校验 --> 拦截器。拦截器:是 Spring 框架提供的核心功能之一,主要用来拦截用户的请求。在指定方法的前后,根据业务的需要来执行我们预先设定好的代码。实现 HandlerInterceptor 接口,并重写所有方法。
2025-09-29 20:33:24
1056
原创 利用 MyBatis 操作数据库完善案例
交互接口中约定,浏览器给服务器发送一个 /book/getListByPage HTTP 请求,通过 currentPage 参数告诉服务器,当前请求为第几页的数据,后端根据请求参数,返回对应页的数据(还需要返回总共数据的个数 total,便于告诉前端显示多少页)但我们此时并未创建 service 层的代码,如果第一次编写,idea 会自动爆红提示,自动生成 service 层的代码和对应的方法,在 service 层继续导入 mapper 层对象,使用 mapper 层的方法。
2025-09-27 11:42:10
911
原创 MyBatis 操作数据库 - 2
1. 表名,字段使用小写字母或者数字,单词之间以下划线分割。不允许出现数字开头或者两个下划线中间只出现数字的情况。2. 建表必备三字段:id,create_time,update_time3. 在表查询的时候,大部分情况,不使用 * 作为查询的字段列表。
2025-09-22 10:59:10
863
2
原创 MyBatis 操作数据库
MyBatis 是一款优秀的持久层框架,用来简单的完成程序和数据库交互的工具。MyBatis中文网持久层:指的是持久化操作的层,通常指数据访问层(dao),是用来操作数据库的。
2025-09-20 21:46:22
920
1
原创 SpringBoot 日志
在 Java SE 语法学习阶段,我们就学习使用 System.out.print 来打印日志,测试一些我们的语法结果。在之后的学习,也通过日志,断点的方式,来对程序队形调试,定位问题 bug。随着我们项目的复杂度越来越高,普通的打印日志的方式无法满足我们的要求,需要专门更加的日志框架。
2025-09-19 22:10:20
715
原创 告别依赖混乱:Spring IoC 容器与 DI 依赖注入入门精讲
我们在前面已经使用过 IoC 了,在类上面添加 @RestController 和 @Controller 注解,就是把这个对象交给 Spring 管理,Spring 框架启动的时候,就会加载该类,把对西昂交给 Spring 管理,就是 IoC 思想。IoC:Inversion of Control(控制反转),也就是说,Spring 是一个 “控制反转” 的容器。控制反转什么呢???获得依赖对象的过程被反转了。
2025-09-17 21:35:42
1253
原创 Spring MVC 中使用 Lombok 时出现的问题
十分迷惑呀,简直是,问了 ai 助手也没有什么结果。将上述代码注释掉即可正常编译~~ 记得注释掉之后刷新 maven ~~Spring 官方升级导致的 lombok 失效了~
2025-09-16 21:27:40
220
原创 Spring MVC 的案例小练习
当我们完成后端代码后,可以进行小步测试,即先直接使用 postman 对后端代码进行测试。测试正常,先基本确认后端代码可以基本实现功能。无1. 获取全部留言我们可以用 List 表达,用 JSON 来描述这个 List 数据1.登录接口:2. 图书列表展示。
2025-09-16 20:54:54
731
1
原创 Java Web 入门实战:SpringBoot+Spring MVC 从 0 到 1 学习指南
pom文件:pom.xml 中,我们主要看 <dependencies> 标签中的内容:引入了两个依赖:spring-boot-starter-web:包含了 web 应用开发所需要的常见依赖spring-boot-starter-test:包含了单元测试所需要的常见依赖目录介绍:Spring Boot 项目有两个主要的目录:src/main/java:Java 源代码src/main/resources:静态资源或配置文件:(前端工程化后不需要了~)
2025-09-15 21:49:22
1352
原创 我的创作纪念日
今年开学大三,前面学了很多的东西,刚开始喜欢将一些点就作为代码的注释放在代码中,后来想想,好记性不如烂笔头,记在博客当笔记本了就,日后复习的确用的到。嘿嘿~ 也是在学习过程中,遇到问题,总在 csdn 中能找到解决方法,后来自己也遇到问题,自己也解决问题,也就记录下来,期望能在某个午后,帮助到其他学者~~hh,憧憬的话,希望我能一直坚持下去。希望我的博客,能成为我未来无论是找工作,考研,可以拿得出手的牌面资本~~学习知识,敲完代码,之前敲完就是完了,有了博客,不自觉的将整体所有的知识,条理性的梳理一下~
2025-09-13 21:15:35
275
原创 Javaweb前端内容的思维导图
目录前端工程化搭建前端工程化和ES6语法Vue3和ViteVue3视图渲染技术Vue3路由机制Vue3数据交互AxiosVue3状态管理Pinia
2025-09-11 21:06:17
223
原创 案例开发 - 日程管理 - 第七期
接下来处理显示所有日程数据的问题,showSchedule.vue 中向后端发送异步请求,查询数据并且将数据在前端页面进行展示。前端 Login.vue 中,登录成功后,接收后端响应回来的用户名 id 和用户名,存储在 userStore 中。后端中的 SysScheduleController 类中进行 findAllSchedule 方法的编写。项目改造,进入 demo-schedule 项目中,下载 pinia 依赖。在 main.js 中开启 pinia。在 main.js 中直接导入即可。
2025-09-10 21:34:14
475
原创 Javaweb - 14.7 - Vue3 状态管理 Pinia
如何实现多个组件之间的数据传递:方式1:组件传参 (兄弟传参)方式2:路由传参方式3:通过pinia状态管理定义共享数据当我们有多个组件共享一个共同的状态(数据源)时,多个视图可能都依赖于同一份状态。来自不同视图的交互,也可能需要更改同一份状态。
2025-09-10 09:34:24
311
原创 案例开发 - 日程管理 - 第六期
即,我们的浏览器,访问的是前端页面的地址,http://localhost:5173,但是却从后端地址 http://localhost:8080 给我们返回数据,浏览器认为这样地址发生了变化而得到的数据是不安全的,因此报错。浏览器知道了后端服务器的存在,向后端服务器发两次请求,第一次称为预检,即确定一下后端服务器的数据是否安全,后端服务器告诉浏览器,放心吧哥们,我没病,然后浏览器再向后端服务器发送请求获取数据。我们在第五期完整了前端代码的重构,在第六期,使用 Axios 的技术完成前后端数据交互。
2025-09-09 11:16:29
283
1
原创 Javaweb - 14.6 - Vue3 数据交互 Axios
前端中的异步编程技术,类似 Java 中的多线程 + 线程结果回调Promise,简单来说就是一个容器,里面保存着某个未来才会结束的事件的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的信息。Promise 提供统一的 API,可以异步操作都可以用同样的方法进行处理。Promise 对象有以下两个特点:1. Promise 对象代表一个异步操作,有三种状态:Pending(进行中),Resolved(已完成),和 Rejected(已失败)。
2025-09-09 08:48:09
807
原创 Javaweb - 14.5 Vue3 路由机制
什么是路由:定义:路由就是根据不同的 URL 地址展示不同的内容或页面作用:SPA 中,可以实现不同视图之间的无刷新切换实现页面认证和权限控制。
2025-09-07 18:02:32
830
原创 Javaweb 14.4 Vue3 视图渲染技术
每个 Vue 组件实例,在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂在实例到 DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。图解:常见钩子函数:onMounted() 注册一个回调函数,在组件挂载完成后执行。onUpdated() 注册一个回调函数,在组件因为响应式状态变更而更新其 DOM 树之后调用onUnmounted() 注册一个回调函数,在实例被携带之后调用。
2025-09-06 18:02:04
965
原创 Javaweb 14.3 Vue3 和 Vite
Vue 是一款用于构建用户界面的 JavaScript 框架,帮助我们高效地开发用户界面。Vue 的两个核心功能:声明式渲染:Vue 基于标准 HTML 拓展了一套模板语法,使得我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关系响应式:Vue 会自动跟踪 JavaScript 状态并在其发生变化时响应式地更新 DOM我们载前面学习 Javaweb 项目的时候,了解了其基础的目录和文件。
2025-09-04 20:24:30
843
原创 Javaweb - 14.2 - 前端工程化环境搭建
Nodejs 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,可以使 JavaScript 运行在服务端。使用 Node.js,可以方便地开发服务端应用程序。Nodejs 有如下特点:单线程,采用事件驱动,异步 I/O,可以处理高并发请求。轻量级,模块化,跨平台在 Nodejs 中,我们可以使用 JavaScript 来编写服务器端程序,使得 JavaScript 成为了一种全栈语言。首先要理解一个概念:框架。
2025-09-04 10:38:52
906
原创 Javaweb - 14.1 - 前端工程化
前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块化,组件化,规范化,自动化的问题。我们在前面的案例中,前后端都在同一个容器中实现。但为了实现模块化,组件化,规范化,自动化,前后端会使用到不同的工具,后端使用 maven,前端使用 nodejs,npm,vite...但前后端的工具,又无法在同一个容器中部署,所以,前端工程化,就是将 app 中的前端相关的代码剥离出来,形成一个独立的工程,使用相关的专门的技术来实现前端代码模块化,组件化,规范化,自动化。
2025-08-09 18:20:54
972
原创 案例开发 - 日程管理 - 第四期
在第四期内容中,我们主要解决的是用 ajax 技术,实现用户在注册页面时候,输出要注册的用户名,当输入完用户名,点击空白处的时候,前端发送请求,检测用户名是否重复。
2025-07-31 23:33:34
502
原创 Javaweb - 13 - AJAX
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)AJAX 不是新的编程语言,而是一种使用现有标准的新方法AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据,并更新部分前端显示页面的内容AJAX 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行XMLHttpRequest 只是实现 AJAX 的一种方法(原生 JS 的实现方式)
2025-07-29 09:21:45
446
原创 案例开发 - 日程管理 - 第三期
在项目中,用户在未登录的状态下,不允许访问 showSchedule.html 和 SysScheduleController 相关增删改的操作,需要重定向到 login.html 页面中,登录成功后才可以自由访问。我们在日程管理第二期中,完成了一些功能,但有一个点忽略了。
2025-07-28 22:44:09
161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅