- 博客(113)
- 收藏
- 关注
原创 【SpringCloud】微服务架构演进与Spring Cloud简介
在学习Spring Cloud 之前, 我们先来了解下什么是微服务, 以及微服务的发展史. 在架构发展的过程中, 项⽬开发遇到了哪些问题, 以及Spring Cloud是⽤来解决什么问题的.我们先看一下官网的介绍:Spring Cloud 提供了一些可以让开发人员快速构建分布式服务的工具,如配置管理、服务发现、熔断、智能路由等。它们可以在任何分布式环境中很好地工作。简单来说,Spring Cloud 就是分布式微服务架构的一站式解决方案,是微服务架构落地的多种技术的集合。
2024-09-13 19:55:53 1046
原创 【Redis】Redis 典型应用 - 分布式锁原理与实现
在⼀个分布式的系统中, 也会涉及到多个节点访问同⼀个公共资源的情况。此时就需要通过 锁 来做互斥控制, 避免出现类似于 “线程安全” 的问题线程安全问题:多个线程并发执行的时候,执行先后顺序是不确定的。就需要保证程序在任意执行顺序下执行逻辑都是OK的⽽ Java 的 synchronized 或者 C++ 的 std::mutex, 这样的锁都是只能在当前进程中⽣效, 在分布式的这种多个进程多个主机的场景下就⽆能为⼒了。此时就需要使⽤到分布式锁。本质上就是使⽤⼀个公共的服务器, 来记录加锁状态。
2024-09-12 16:45:43 700
原创 【Redis】Redis 典型应用 - 缓存 (Cache) 原理与策略
缓存 (cache) 是计算机中的⼀个经典的概念,在很多场景中都会涉及到。核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅, ⽅便随时读取。举个例⼦:⽐如我需要去⾼铁站坐⾼铁. 我们知道坐⾼铁是需要反复刷⾝份证的 (进⼊⾼铁站, 检票, 上⻋,乘⻋过程中, 出站…)正常来说, 我的⾝份证是放在⽪箱⾥的(⽪箱的存储空间⼤, ⾜够能装). 但是每次刷⾝份证都需要开⼀次⽪箱找⾝份证, 就⾮常不⽅便。因此我就可以把⾝份证先放到⾐服⼝袋⾥。⼝袋虽然空间⼩, 但是访问速度⽐⽪箱快很多。
2024-09-09 19:34:43 1148
原创 【Redis】Redis 集群搭建与管理: 原理、实现与操作
Redis 作者的答案: https://github.com/antirez/redis/issues/2576。
2024-09-07 17:44:37 1496
原创 【Redis】Redis Sentinel(哨兵)系统:自动故障恢复与高可用性配置全解
Redis Sentinel 是⼀个分布式架构,其中包含若⼲个 Sentinel 节点和 Redis 数据节点,每个Sentinel 节点会对数据节点和其余 Sentinel 节点进⾏监控,当它发现节点不可达时,会对节点做下线表⽰。Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应⽤来说,这种⽅案是⽆法接受的,于是 Redis 从 2.8 开始提供了 Redis Sentinel(哨兵)加个来解决这个问题。
2024-09-06 17:21:22 1724
原创 【Redis】Redis 主从复制原理与配置详解:解决单点故障与性能瓶颈的最佳方案
当从节点正在复制主节点时,如果出现⽹络闪断或者命令丢失等异常情况时,从节点会向主节点要求补发丢失的命令数据,如果主节点的复制积压缓冲区存在数据则直接发送给从节点,这样就可以保持主从节点复制的⼀致性。⼀主⼀从结构是最简单的复制拓扑结构,⽤于主节点出现宕机时从节点提供故障转移⽀持,如图所⽰。复制积压缓冲区是保存在主节点上的⼀个固定⻓度的队列,默认⼤⼩为 1MB,当主节点有连接的从节点(slave)时被创建,这时主节点(master)响应写命令时,不但会把命令发送给从节点,还会写⼊复制积压缓冲区,如图所⽰。
2024-09-05 13:08:17 1345
原创 【Redis】深入解析 Redis 事务:特性、操作及其与 MySQL 事务的区别
Redis 的事务和 MySQL 的事务概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执⾏.原子性:把多个操作打包成一个整体了一致性:事务执行之前和之后,数据都不能离谱持久性:事务中做出的修改都会存硬盘隔离性:事务并发执行涉及到的一些问题弱化的原⼦性:redis没有 “回滚机制”,只能做到这些操作 “批量执⾏”,不能做到 “⼀个失败就恢复到初始状态”,也就是不保证全部执行成功,其中有失败的就失败了,不理会。不涉及 “约束”,也没有回滚。
2024-09-04 16:58:14 1465
原创 【Redis】Redis 持久化机制详解:RDB、AOF 和混合持久化的工作原理及优劣分析
父进程此时继续写这个旧的 aof 文件的意义就是为了避免出现,重写的过程中重写一半服务器挂了,这种情况下子进程内存写的数据就都没了,新的 aof 文件内容还不完整,父进程写的旧的 aof 文件就能保证重启之后数据的完整性了。内存中的数据的状态,已经相当于是把 AOF 文件结果整理后的模样了。dump.rdb 是 RDB 机制生成的镜像文件,Redis 服务器默认就是开启了 RDB 的,这是一个二进制文件,内存中的数据是以压缩的形式保存到这个二进制文件的,这是需要消耗一定的 CPU 资源,但能节省存储空间。
2024-09-03 11:27:37 1046
原创 【Redis】Redis 客户端开发与 Java 集成:RESP协议解析与实战操作
比如我们本身是需要通过 Windows 主机,访问云服务器的 6379 端口,于是就构造一个特殊的 SSH 数据报,把要访问 Redis 的请求放大 SSH 数据报里,这个数据报就会通过 22 端口发送给服务器,服务器的 SSH 服务器程序就能解析出上述的数据报,然后把数据报交给 6379 端口的程序。服务器的响应类型是特定于命令的。,函数式接口,即回调函数,写我们要执行的 redis 命令,这个回调就会被 RedisTemplate 内部进行执行了,在方法内部这么写即可删库,或者其他你想的操作。
2024-09-01 18:03:53 1760
原创 【JavaEE】深入解析 Spring 事务与传播机制:实现方式与应用场景
事务是⼀组操作的集合, 是⼀个不可分割的操作.即同时执行多个操作事务会把所有的操作作为⼀个整体, ⼀起向数据库提交或者是撤销操作请求. 所以这组操作要么同时成功, 要么同时失败.事务传播机制就是: 多个事务⽅法存在调⽤关系时, 事务是如何在这些⽅法间进⾏传播的.⽐如有两个⽅法A, B都被修饰, A⽅法调⽤B⽅法A⽅法运⾏时, 会开启⼀个事务. 当A调⽤B时, B⽅法本⾝也有事务, 此时B⽅法运⾏时, 是加⼊A的事务, 还是创建⼀个新的事务呢?这个就涉及到了事务的传播机制.⽐如公司流程管理。
2024-08-28 14:14:45 991
原创 【JavaEE】深入浅出 Spring AOP:概念、实现与原理解析
学习完Spring的统⼀功能之后, 我们进⼊到AOP的学习. AOP是Spring框架的第⼆⼤核⼼(第⼀⼤核⼼是IoC)Spring两大核心思想:IoCAOP什么是AOP?⾯向切⾯编程什么是⾯向切⾯编程呢?切⾯就是指某⼀类特定问题, 所以AOP也可以理解为⾯向特定⽅法编程什么是⾯向特定⽅法编程呢?⽐如上个章节学习的"登录校验", 就是⼀类特定问题. 登录校验拦截器, 就是对"登录校验"这类问题的统⼀处理. 所以, 拦截器也是AOP的⼀种应⽤.AOP是⼀种思想, 拦截器是AOP思想的⼀种实现。
2024-08-26 22:14:05 1144
原创 【JavaEE】SpringBoot 统一功能处理:拦截器、统一数据返回与异常处理的综合应用与源码解析
从session中获取⽤⼾信息, 如果session中不存在, 则返回false,并设置http状态码为401, 否则返回true.@Component@Slf4j@Overridelog.info("登录拦截器校验...");//返回true表示放行,返回false表示拦截//检验用户是否登录//true表示没有session就创建一个,false表示没有就直接返回//放行//401表示未认证登录//拦截http状态码401: Unauthorized中⽂解释:未经过认证。
2024-08-21 14:34:15 863
原创 【Redis】有序集合(Zset)详解及实际应用场景分析:从命令操作到内部编码
时间复杂度:O(log(N)+M),M 是 [start, stop] 的大小,N 是整个有序集合的元素个数,此处查找位置,只需要查找一次 start 和 stop,因此这部分只是一个 logN。求出给定有序集合中元素的交集并保存进⽬标有序集合中,在合并过程中以元素为单位进⾏合并,元素对应的分数按照不同的聚合⽅式和权重得到新的分数。这样的特定位置,但删除时没有应用这个特性,而是直接调用了一个通用的删除函数,给定一个 member 的值,进行查找,找到位置后再删除。M 是最终结果的有序集合的元素个数.
2024-08-20 02:29:55 1233
原创 【Redis】集合类型详解及实际应用场景分析:从命令操作到内部编码
如果 set1 和 set2 中都有一个 1,此时让 set1 的 1 移动到 set2 中,最终返回值是 1,即移动成功,set1 的 1 不见了,set2 的 1 也还在。注意,由于 set 内的元素是⽆序的,所以取出哪个元素实际是未定义⾏为,即随机删除,这里是真随机,而不是伪随机。这里的无序,是指变换一下元素的顺序,集合还是一样的集合,而不是说顺序逆序的无序。获取⼀个 set 的基数(cardinality),即 set 中的元素个数。获取⼀个 set 中的所有元素,注意,元素间的顺序是⽆序的。
2024-08-20 02:28:54 487
原创 【Redis】列表类型详解及实际应用场景分析:从命令操作到内部编码
如图 2-23 所⽰,Redis 同样使⽤ lpush + brpop 命令,但通过不同的键模拟频道的概念,不同的消费者可以通过 brpop 不同的键值,实现订阅不同频道的理念。列表类型是⽤来存储多个有序的字符串,如图 2-19 所⽰,a、b、c、d、e 五个元素从左到右组成了⼀个有序的列表,列表中的每个字符串称为元素(element),⼀个列表最多可以存储。brpop 这样的命令设定就能实现一个“轮询”的效果,先执行 brpop 的消费者先拿到 lpush 进入列表的元素,后执行的后拿到下一个。
2024-08-20 02:28:24 956
原创 【Redis】哈希类型详解及缓存方式对比:从命令操作到实际应用场景
哈希类型中的映射关系通常称为 field-value(里层value),⽤于区分 Redis 整体的键值对(key-value(外层value)),注意这⾥的 value 是指 field(可以理解为,这个 field 就是 外层value 里的 key,这里的 value 是 里层value)对应的值,不是键(key)对应的值,请注意 value 在不同上下⽂的作⽤。缺点:占⽤过多的键,内存占⽤量较⼤,同时⽤⼾信息在 Redis 中⽐较分散,缺少内聚性,所以这种⽅案基本没有实⽤性。避免“牵一发动全身”
2024-08-20 02:26:52 515
原创 【JavaEE】深入MyBatis:动态SQL操作与实战项目实现指南
学习了MyBatis动态SQL的⼀些标签使⽤. 标签中, 使⽤的是Java对象的属性, ⽽⾮数据库字段.动态SQL的实现, 注解和xml的实现⽅式相似, 区别是注解⽅式需要添加.但是使⽤注解的⽅式时, Idea不会进⾏格式检测, 容易出错, 建议初学者⽤xml的⽅式MyBatis的学习, 需要更多的练习才能掌握. 代码⼀定要⾃⼰写, 切忌眼⾼⼿低C:\Users\幽琴健\Desktop\学习打卡md文件\JavaEE\JavaEE15\图书管理系统2.png。
2024-08-19 14:50:17 1137
原创 【JavaEE】MyBatis 实战指南:从 JDBC 到高效数据库操作的进阶教程
MyBatis 是⼀款优秀的持久层框架,⽤于简化JDBC的开发。而且本身和 Spring 没有任何关系。本质就是操作数据库的框架MyBatis 本是 Apache的⼀个开源项⽬iBatis,2010年这个项⽬由 apache 迁移到了 google code,并且改名为 MyBatis。2013年11⽉迁移到Github。官⽹:https://mybatis.org/mybatis-3/zh/index.html在上⾯我们提到⼀个词:持久层。
2024-08-17 13:10:11 972
原创 【Redis】字符串数据类型深入解析与应用实践
字符串类型是 Redis 最基础的数据类型,关于字符串需要特别注意:1)⾸先 Redis 中所有的键的类型都是字符串类型,⽽且其他⼏种数据结构也都是在字符串类似基础上构建的,例如列表和集合的元素类型是字符串类型,所以字符串类型能为其他 4 种数据结构的学习奠定基础。以上介绍了使⽤ Redis 的字符串数据类型可以使⽤的⼏个场景,但其适⽤场景远不⽌于此,开发⼈员可以结合字符串类型的特点以及提供的命令,充分发挥⾃⼰的想象⼒,在⾃⼰的业务中去找到合适的场景去使⽤ Redis 的字符串类型。可以使⽤负数表⽰倒数。
2024-08-16 19:09:42 1098
原创 【JavaEE】深入探索SpringBoot的日志管理功能与实践应用
为什么要学日志⽇志对我们来说并不陌⽣, 从JavaSE部分, 我们就在使⽤ System.out.print 来打印⽇志了.通过打印⽇志来发现和定位问题, 或者根据⽇志来分析程序的运⾏过程. 在Spring的学习中, 也经常根据控制台的⽇志来分析和定位问题.随着项⽬的复杂度提升, 我们对⽇志的打印也有了更⾼的需求, ⽽不仅仅是定位排查问题.⽐如需要记录⼀些⽤⼾的操作记录(⼀些审计公司会要求), 也可能需要使⽤⽇志来记录⽤⼾的⼀些喜好,把⽇志持久化, 后续进⾏数据分析等. 但是。
2024-08-16 14:51:58 733
原创 【Redis】数据类型详解及其应用场景
目录Redis 常⻅数据类型预备知识基本全局命令小结数据结构和内部编码单线程架构引出单线程模型为什么单线程还能这么快Redis 常⻅数据类型Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维⾮常重要,同时掌握每种数据结构的常⻅命令,会在使⽤ Redis 的时候做到游刃有余。本章内容如下:预备知识:⼏个全局(generic)命令,数据结构和内部编码,单线程模式机制分析。5 种数据结构的特点、命令使⽤、应⽤场景⽰例。键遍历、数据库管理。预备知识在正式介绍 5
2024-08-15 19:41:38 1169
原创 【JavaEE】深入浅出:Spring Boot配置文件全解析
Kaptcha 是Google的⼀个⾼度可配置的实⽤验证码⽣成⼯具. 代码:http://code.google.com/p/kaptcha/⽹上有很多⼈甚⾄公司基于Google的kaptcha进⾏了⼆次开发. 我们选择⼀个直接适配SpringBoot的开源项⽬由于作者的⽂档写的不是很全, 下⾯简单介绍下插件的使⽤原理验证码可以客⼾端⽣成, 也可以服务器⽣成. 对于普通的字符验证码,后端通常分两部分.⼀是⽣成验证码内容,根据验证码内容和⼲扰项等, ⽣成图⽚, 返回给客⼾端⼆是。
2024-08-15 11:51:43 820
原创 【Redis】深入探讨其8大核心特性与实用场景,全方位解析从安装到使用的关键技巧
的⻆度,数据分为热数据和冷数据,热数据通常是指需要频繁操作的数据,反之为冷数据,例如对于视频⽹站来说,视频基本信息基本上在各个业务线都是经常要操作的数据,⽽⽤⼾的观看记录不⼀定是经常需要访问的数据,这⾥暂且不讨论两者数据规模的差异,单纯站在数据冷热的⻆度上看,视频信息属于热数据,⽤⼾观看记录属于冷数据。排⾏榜系统⼏乎存在于所有的⽹站,例如按照热度排名的排⾏榜,按照发布时间的排⾏榜,按照各种复杂维度计算出的排⾏榜,Redis 提供了列表和有序集合的结构,合理地使⽤这些数据结构可以很⽅便地构建各种排⾏榜系统。
2024-08-14 16:18:17 818
原创 【JavaEE】深入理解Spring中的IoC与DI:从依赖注入到Bean管理的详解
学习了IoC后, 什么是DI呢?IoC是一种思想,DI是一种实现方式DI: Dependency Injection(依赖注⼊)容器在运⾏期间, 动态的为应⽤程序提供运⾏时所依赖的资源,称之为依赖注⼊。程序运⾏时需要某个资源,此时容器就为其提供这个资源.从这点来看, 依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦。上述代码中, 是通过构造函数的⽅式, 把依赖对象注⼊到需要使⽤的对象中的。
2024-08-14 10:29:43 1068
原创 【Redis】Redis 初探:特性、应用场景与高并发架构演进之路
在进⾏技术学习过程中,由于⼤部分读者没有经历过⼀些中⼤型系统的实际经验,导致⽆法从全局理解⼀些概念,所以本⽂以⼀个 “电⼦商务” 应⽤为例,介绍从⼀百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让⼤家对架构的演进有⼀个整体的认知,⽅便⼤家对后续知识做深⼊学习时有⼀定的整体视野。
2024-08-13 17:02:52 955
原创 【JavaEE】深入理解Spring IoC与DI:从传统开发到依赖注入的转变
通过前⾯的学习, 我们知道了Spring是⼀个开源框架, 他让我们的开发更加简单. 他⽀持⼴泛的应⽤场景, 有着活跃⽽庞⼤的社区, 这也是Spring能够⻓久不衰的原因.但是这个概念相对来说, 还是⽐较抽象.Spring两大核心思想:IoCAOP我们⽤⼀句更具体的话来概括Spring, 那就是:Spring 是包含了众多⼯具⽅法的 IoC 容器什么是容器?什么是 IoC 容器?接下来我们⼀起来看容器是⽤来容纳某种物品的(基本)装置。来⾃:百度百科⽣活中的⽔杯, 垃圾桶, 冰箱等等这些都是容器.
2024-08-13 15:11:30 650
原创 【JavaEE】应用分层解密:优化代码结构与增强项目可维护性
阿⾥开发⼿册中, 关于⼯程结构部分, 定义了常⻅⼯程的应⽤分层结构:那么什么是应⽤分层呢?应⽤分层 是⼀种软件开发设计思想, 它将应⽤程序分成N个层次, 这N个层次分别负责各⾃的职责, 多个层次之间协同提供完整的功能.根据项⽬的复杂度, 把项⽬分成三层, 四层或者更多层.常⻅的MVC设计模式, 就是应⽤分层的⼀种具体体现.为什么需要应⽤分层?
2024-06-07 00:14:35 953 1
原创 【JavaEE】留言板与图书管理系统
目录留言板1. 准备工作2. 约定前后端交互接口lombok3. 服务器代码4. 调整前端页面代码图书管理系统1. 准备工作2. 约定前后端交互接口3. 服务器代码4. 调整前端页面代码留言板需求:界⾯如下图所⽰输⼊留⾔信息, 点击提交. 后端把数据存储起来.⻚⾯展⽰输⼊的表⽩墙的信息1. 准备工作前端没有保存数据的功能,后端把数据保存下来(内存或者数据库中…,这里先存内存中)把前端⻚⾯放在项⽬中<!DOCTYPE html><html lang="en">
2024-06-06 00:11:10 1765
原创 【JavaEE】加法计算器与用户登录实战演练
(Application Programming Interface), 我们⼀般讲到接⼝或者 API,指的都是同⼀个东西.是指应⽤程序对外提供的服务的描述, ⽤于交换信息和执⾏任务(与JavaSE阶段学习的[类和接⼝]中的接⼝是两回事)简单来说, 就是。
2024-05-24 23:54:12 578
原创 【JavaEE】深入浅出:服务器如何响应Web请求
在我们前⾯的代码例⼦中,都已经设置了响应数据, Http响应结果可以是数据, 也可以是静态⻚⾯,也可以针对响应设置状态码, Header信息等.Http响应报头也会向客⼾端传递⼀些附加信息, ⽐如服务程序的名称,请求的资源已移动到新地址等, 如:Content-Type, Local等。随着互联⽹的发展, ⽬前项⽬开发流⾏"前后端分离"模式, Java主要是⽤来做后端项⽬的开发, 所以也就不再处理前端相关的内容了。如果⼀个类的⽅法⾥, 既有返回数据的, ⼜有返回⻚⾯的, 就把。
2024-05-23 23:58:18 842
原创 【JavaEE】深入理解Web会话机制:Cookie、Session与Header解析
这个代码中看不到 SessionId 这样的概念的. getSession 操作内部提取到请求中的 Cookie ⾥的 SessionId, 然后根据 SessionId 获取到对应的 Session 对象, Session 对象⽤ HttpSession来描述。. 对客⼾的每个请求,服务器能够识别出请求来⾃于同⼀个客⼾. 当⼀个未知的客⼾向Web应⽤程序发送第⼀个请求时就开始了⼀个会话.当客⼾明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时,会话就结束了.
2024-05-22 00:08:37 861
原创 【JavaEE】深入浅出Spring MVC:从JSON到文件上传
JSON概念JSON:JavaScript Object Notation 【JavaScript 对象表⽰法】JSON是⼀种轻量级的数据交互格式. 它基于 ECMAScript (欧洲计算机协会制定的js规范)的⼀个⼦集,采⽤完全独⽴于编程语⾔的⽂本格式来存储和表⽰数据。-- 百度百科JSON本质上是一个字符串JSON就是⼀种数据格式, 有⾃⼰的格式和语法, 使⽤⽂本表⽰⼀个对象或数组的信息, 因此JSON本质是字符串. 主要负责在不同的语⾔中数据传递和交换.国际通⽤语⾔-英语。
2024-05-20 23:40:22 674
原创 【JavaEE】深入学习Spring MVC:掌握参数传递与映射
Spring 会根据参数名称⾃动绑定到对象的各个属性上, 如果某个属性未传递, 则赋值为null(基本类型则赋值为默认初识值, ⽐如int类型的属性, 会被赋值为0)某些特殊的情况下,前端传递的参数 key 和我们后端接收的 key 可以不⼀致,⽐如前端传递了⼀个。默认情况下,请求中参数名相同的多个值,是封装到数组. 如果要封装到集合,要使⽤。字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以。底层逻辑:需要名称一样,从请求的参数中,获取参数名为。是个必传参数,如果不传就会报错了。
2024-05-19 23:51:50 679
原创 【JavaEE】Spring Web MVC入门:掌握Spring的MVC框架基础
Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring MVC".什么是Servlet呢?Servlet 是⼀种实现动态⻚⾯的技术。
2024-05-15 00:19:43 617 1
原创 【JavaEE】Web服务器与请求响应流程:深入了解如何处理Web请求
⼀个有经验的程序猿和⼀个新⼿程序猿相⽐, 最⼤的优势往往不是代码写的多好, ⽽是调试效率有多⾼. 同⼀个问题可能新⼿花了⼏天都⽆法解决的, 但是有经验的程序猿可能⼏分钟就搞定了.http://127.0.0.1:8080/user/sayhi ,就是向本地计算机中的8080端⼝程序,获取资源位置是/user/sayhi的数据。观察⽇志是调试程序的重要途径. 系统⽇志往往很多, 需要同学们耐⼼阅读, 经常阅读, 熟练了就能更快速的找到问题了。, 也就是在本地计算机中找到正在运⾏的8080端⼝的。
2024-05-14 00:06:09 1108
原创 【JavaEE】Spring Boot 入门:快速构建你的第一个 Spring Boot 应用
在学习SpringBoot之前, 我们先来认识⼀下Spring我们看下Spring官⽅(https://spring.io/)的介绍可以看到,Spring让Java程序更加快速, 简单和安全. Spring对于速度、简单性和⽣产⼒的关注使其成为世界上最流⾏的Java框架。Spring官⽅提供了很多开源的项⽬, 覆盖范围从Web开发到⼤数据, Spring发展到了今天, 已经形成了⾃⼰的⽣态圈. 我们在开发时, 也倾向于使⽤Spring官⽅提供的技术, 来解决对应的问题.
2024-05-13 00:28:28 916
原创 【JavaEE】Maven简介与实用指南:项目构建和依赖管理的高效工具
Maven 是⼀个项⽬管理⼯具。基于 POM(Project Object Model,项⽬对象模型)的概念,Maven 可以通过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。⼤⽩话:Maven 是⼀个项⽬管理⼯具, 通过 pom.xml ⽂件的配置获取 jar 包,⽽不⽤⼿动去添加 jar 包。
2024-05-12 00:26:37 1705
原创 【JavaEE网络】HTTPS详解:从对称与非对称加密到证书认证
HTTPS 工作过程中涉及到的密钥有三组.第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过.
2024-05-11 00:10:31 1131
原创 【JavaEE网络】用Form与Ajax构建HTTP请求
从前端角度, 除了浏览器地址栏能构造 GET 请求, form 表单能构造 GET 和 POST 之外, 还可以通过 ajax 的方式来构造 HTTP 请求. 并且功能更强大.在我们当前的例子中, test.html 是通过本地文件的方式打开的, 这个环节不涉及 HTTP 交互.**注意: 由于我们的服务器的地址是随便写的, 因此无法获取到正确的 HTTP 响应. **ML, 是 2005 年提出的一种 JavaScript 给服务器发送HTTP 请求的方式.其他代码不变, 只是改下方的代码.
2024-05-10 00:11:54 938 1
原创 【JavaEE网络】HTTP响应详解:状态码、报头与正文的全面解析
如果输入正确, 则可以正确访问到. 但是如果输入错误, 比如 www.sogou.com/index2.html , 就会看到 404 这样的响应.例如, 在浏览器中输入 www.sogou.com/index.html , 此时就在尝试访问 sogou 上的/index.html 这个资源.当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况.状态码表示访问一个页面的结果。但是对方的服务器不一定都支持所有的方法(或者不允许用户使用一些其他的方法).
2024-05-09 00:06:00 1020
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人