- 博客(27)
- 收藏
- 关注
原创 【学习笔记】手写一个简单的 Spring MVC
1. 用户发送HTTP请求2. 请求到达服务器后,Spring MVC 的中央分发器拦截请求3. 中央分发器根据 请求的路径找到对应的 HandlerMapping,确定由哪个 Controller 控制器处理4. HandlerMaping 根据请求信息映射到对应的 Controller ,然后返回给中央分发器5. 中央分发器把请求交给对应的Controller 控制器,Controller 是Spring MVC的一个组件,它负责处理请求以及响应结果
2024-10-06 00:51:20 1095
原创 【学习笔记】手写一个简单的 Spring IOC
Spring 的核心之一是 IOC,全称 Inversion Of Control ,控制反转,用来统一管理 Bean
2024-10-03 21:41:35 1241
原创 【学习笔记】手写 Tomcat 八
Non-Blocking I/O,非阻塞IO。我们之前使用的是 BIO 阻塞IO。NIO 是同步非阻塞的,服务器的实现模式是一个线程处理多个连接。因为获取的用户数据需要封装,需要一个类和数据库的字段一一对应,这就是 对象关系映射(ORM)
2024-10-01 23:55:06 690
原创 【学习笔记】手写 Tomcat 七
现在的情况是当 Tomcat 接收一个请求后,会先判断是请求的静态资源还是动态资源,如果是动态资源,还要继续判断请求的是哪个功能,然后调用相应的 Servlet 执行。这样有些缺点,当功能很多时,一个个判断请求的是哪个功能,效率不高,而且代码不够优雅,并且来一个请求就会创建一下 Servlet 对象,比较消耗资源,那如何解决呢?
2024-09-27 01:12:55 1449
原创 【学习笔记】手写 Tomcat 六
昨天使用了数据库连接池,我们了解了连接池的优点,那么也可以使用线程池来管理线程,java自带的线程池的参数有 核心线程数,最大线程数,线程活跃时间,时间单位,任务队列,线程工厂,拒绝策略。为了学习了解线程池,我们先手写一个简单的线程池,只需要做到核心线程可重复利用就行。
2024-09-26 00:51:59 1445
原创 【学习笔记】手写 Tomcat 五
我们把功能都写在了 Servlet,这样有几个缺点,一是不够低耦合 高内聚,二是不方便协同开发等。我们可以使用三层架构来解决这个问题。三层架构区分层次的目的是为了 “高内聚,低耦合”。
2024-09-23 02:05:34 962
原创 【学习笔记】手写 Tomcat 四
在上次的基础上,我们需要解决一下 read 读取到 -1 导致报错的问题,我们需要知道,为什么会读取到 -1?什么情况下会读取到 -11. 客户端 Socket 关闭(Socket.close)2. 客户端关闭输出流,客户端在关流的时候,还多了一个往服务器写结束标记的动作,结束标记 -1 3. 读取超时抛出异常,java 中的 Socket 默认没有超时限制 4. 读取文件时,到了文件的末尾,表示没有数据可读,也会返回 -1
2024-09-22 01:45:13 1836
原创 【学习笔记】手写 Tomcat 一
现在的问题,只能访问一次服务端,服务端响应之后就关闭了。这显然不是我们想要的,服务器是当用户访问的时候都会响应数据。我们知道,服务端不是只为一个客户端服务的,所以,当新的用户发送连接后,就需要创建一个新的通信通道。
2024-09-10 18:33:02 894
原创 【学习笔记】手写 Tomcat -- 预备知识
I 是 Input,O 是Output,也就是输入输出流。当我们操作数据时,以内存为基准,把数据读取到内存中是输入,把数据从内存写入到硬盘是输出。
2024-09-09 21:58:43 1427
原创 Spring-MVC 结合 Swagger2
打开接口详情,可以看到有很多类型的请求方法,这是因为 我们使用的是 @RequestMapping() 注解 ,改成具体的对应的 注解 就可以了。POST 请求方法 改成 @PostMapping () 注解。
2024-08-18 21:24:22 609
原创 学习笔记-MYSQL 事务
事务是访问并可能更新数据库中数据的一个执行单元,这个单元是由一条或多条语句组成,单元里的语句是相互依赖的。这个单元里的SQL语句一起向系统提交,提交后要么都执行成功,要么都失败。
2024-08-05 23:41:24 1253
原创 学习笔记-JWT 保持登录状态
接上次的问题,使用 vuex 保存用户信息,页面一刷新数据就没了解决方案是刷新后再请求一下数据,获取一下用户信息。本次结合 JWT 来实现刷新页面后再次请求用户信息,这次是基于 token 来获取用户信息,我们知道 token 里包含了用户信息,那么我们只需要解析一下token就可以获取到数据了,就不需要再次请求数据库获取数据了如果对 token 不是很了解的同学,可以看一下这篇文章,本篇文章是基于这个文章。
2024-08-03 18:14:23 1021
原创 学习笔记-Cookie、Session、JWT
会话开始:当一个用户首次访问一个网站,服务器会创建一个新的HttpSession对象,并生成一个唯一的会话ID(通常称为JSESSIONID)。会话ID存储在Cookie中:服务器会在响应中包含一个Set-Cookie头,将这个会话ID作为cookie的一部分发送给浏览器。浏览器会存储这个cookie。后续请求:当用户继续与网站交互时,浏览器会自动在每个后续请求中包含这个会话ID的cookie。这使得服务器能够识别出请求来自于哪个具体的会话。
2024-08-02 01:37:39 1175
原创 学习笔记-Vue脚手架开发
在前端开发当中,有的项目使用的 Node 版本不一样,总不能使用哪个版本就重新安装一下吧,这样就比较麻烦,所以,可以使用 nvm来管理这些 Node 版本
2024-07-26 23:35:56 761
原创 学习笔记-Vue 的 slot 和router
vue实例能不能嵌套一个vue实例可以,但是不建议,因为用不了嵌套的实例,vue 执行的SAP 技术,如果需要一个页面多个实例,可以把其他的实例作为组件使用。
2024-07-25 18:11:12 594
原创 学习笔记-Vue 基础使用
Vue.js的核心特性之一是它的响应式系统。当你修改Vue实例的数据时,视图会自动更新以反映这些变化。这种双向数据绑定减少了手动操作DOM的需要。
2024-07-24 20:01:33 228
原创 学习笔记- MyBatis 动态 SQL
在进行增删改的数据库操作时,涉及到数据的变动,需要开启提交事务,MyBatis默认开启事务,但没有开启提交事务
2024-07-19 22:16:02 699
原创 学习笔记-MyBatis 的使用
MyBatis 是一个优秀的基于 Java 的持久层框架,也就是我们说的Dao层,它内部封装了 JDBC,使开发者只需要关注 SQL 语句本身,而不需要花费精力,去处理加载驱动、创建连接、创建statement等繁杂的过程。
2024-07-17 22:43:19 1371
原创 MAVEN 如何使用
当我们有许多模块或者项目的时候,要使用这些 jar 包就需要复制到文件夹里才能使用,这样不同的项目使用的 jar 包可能是一样的,这样就不太方便,那么有没有一种可以配置一次,下次可以直接使用的方式呢?配置MAVEN 后每个 jar 包本身只在本地仓库中保存一份即可,项目中使用 jar 包只需要以坐标的形式引用一下就行了。jar 包也依赖另一个jar包,所以当我们自己添加的话,需要确保 jar 包需要的依赖都有,而MAVEN 可以帮我们自动添加 jar 包所需要的依赖。然后就可以在本地仓库看到了。
2024-07-11 18:32:58 924
原创 Tomcat 中 lib 文件夹和配置文件夹应该放在哪?
我们会发现 src 下的源代码文件 在编译后都被放到了 WEB-INF (Tomcat的安全目录)下的 classes 文件夹里。那我们还有其他的文件夹,比如配置文件夹,放数据库连接的配置文件,和其他的自定义配置文件。当 lib 文件夹放在 模块的根目录下,在编译过后,并没有出现在 out 文件夹里的 WEB-INF 文件夹下。其实,WEB-INF 文件夹下的文件在编译后都会拷贝一份到 out 目录下的 WEB-INF 文件夹。在构建过程中,资源文件夹的所有内容都复制到 out 输出文件夹中。
2024-07-11 16:02:07 405
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人