暂时未有相关云产品技术能力~
CSDN优质博主,华为云云享专家,曾获多个奖项,JAVA后端开发工程师。
【1月更文挑战第18天】 一、SpringMVC简介 1、什么是MVC 2、什么是SpringMVC 3、SpringMVC的特点 二、SpringMVC项目创建步骤 1、创建maven工程 a>添加web模块 b>打包方式:war c>引入依赖 2、配置web.xml a>默认配置方式 b>扩展配置方式 3、创建请求控制器 4、创建springMVC的配置文件 5、测试HelloWorld a>实现对首页的访问 b>通过超链接跳转到指定页面
【1月更文挑战第17天】 一、Spring Validation概述 二、实验一:通过Validator接口实现 三、实验二:Bean Validation注解实现 四、实验三:基于方法实现校验 五、实验四:实现自定义校验
【1月更文挑战第17天】 一、i18n概述 二、Java国际化 三、Spring6国际化 1、MessageSource接口 2、使用Spring6国际化
【1月更文挑战第18天】 一、AOT概述 1、JIT与AOT的区别 2、Graalvm 3、Native Image 二、演示Native Image构建过程 1、GraalVM安装 (1)下载GraalVM (2)配置环境变量 (3)安装native-image插件 2、安装C++的编译环境 (1)下载Visual Studio安装软件 (2)安装Visual Studio (3)添加Visual Studio环境变量 (4)打开工具,在工具中操作 3、编写代码,构建Native Image (1)编写Java代码 (2)复制文件到目录,执行编译 (3)Native Image 进行构建
【1月更文挑战第16天】 一、JdbcTemplate 1、简介 2、准备工作 3、实现CURD ①装配 JdbcTemplate ②测试增删改功能 ③查询数据返回对象 ④查询数据返回list集合 ⑤查询返回单个的值 二、声明式事务概念 1、事务基本概念 ①什么是事务 ②事务的特性 2、编程式事务 3、声明式事务
【1月更文挑战第16天】 一、整合JUnit5 1、搭建子模块 2、引入依赖 3、添加配置文件 4、添加java类 5、测试 二、整合JUnit4 1、添加依赖 2、测试
【1月更文挑战第14天】 从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下,在源代码中嵌入补充信息。 Spring 从 2.5 版本开始提供了对注解技术的全面支持,我们可以使用注解来实现自动装配,简化 Spring 的 XML 配置。 Spring 通过注解实现自动装配的步骤如下: 1. 引入依赖 2. 开启组件扫描 3. 使用注解定义 Bean 4. 依赖注入
【1月更文挑战第17天】 一、Spring Resources概述 二、Resource接口 三、Resource的实现类 1、UrlResource访问网络资源 2、ClassPathResource 访问类路径下资源 3、FileSystemResource 访问文件系统资源 4、ServletContextResource 5、InputStreamResource 6、ByteArrayResource 四、Resource类图 五、ResourceLoader 接口 1、ResourceLoader 概述 2、使用演示 3、ResourceLoader 总结 六、ResourceLo
【1月更文挑战第13天】 一、环境要求 二、构建模块 三、程序开发 1、引入依赖 2、创建java类 3、创建配置文件 4、创建测试类测试 5、运行测试程序 四、程序分析 五、启用Log4j2日志框架 1、Log4j2日志概述 2、引入Log4j2依赖 3、加入日志配置文件 4、测试 5、使用日志
【1月更文挑战第15天】 一、场景模拟 1、声明接口 2、创建实现类 3、创建带日志功能的实现类 4、提出问题 二、代理模式 1、概念 2、静态代理 3、动态代理 4、测试 三、AOP概念及相关术语 1、概述 2、相关术语 ①横切关注点 ②通知(增强) ③切面 ④目标 ⑤代理 ⑥连接点 ⑦切入点 3、作用
【1月更文挑战第12天】延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列的。
【1月更文挑战第11天】 一、MQ的相关概念 1.什么是MQ? 2.为什么要用MQ 2.1流量消峰 2.2应用解耦 2.3异步处理 3.MQ 的分类 3.1.ActiveMQ 3.2.Kafka 3.3.RocketMQ 3.4.RabbitMQ 4.MQ 的选择 4.1.Kafka 4.2.RocketMQ 4.3.RabbitMQ 二、RabbitMQ的相关概念 1.四大核心概念 2.RabbitMQ 核心部分 3.RabbitMQ的工作原理 三、RabbitMQ的安装 1.docker下载(针对没有下载docker的粉丝) 2.安装RabbitMQ镜像 3.根据下载的镜像创建和启动容器
【1月更文挑战第11天】 一、clustering(集群) 1、使用集群的原因 2、搭建步骤 2.1、拉取镜像 2.2、创建三个RabbitMQ容器节点 2.3、集群搭建 二、镜像队列 1、使用镜像的原因 2、搭建步骤
【1月更文挑战第12天】 一、Docker容器命令: 二、Docker镜像命令 三、重启Docker命令 四、Docker数据卷命令 五、挂载数据卷
【1月更文挑战第9天】 1.消息属性 RabbitMQ是基于AMQP消息传输协议来实现的消息中间件;类似HTTP有header和body两部分数据,Message是RabbitMQ中的消息体概念。 Message由Properties和Body组成,前者是一些元信息,如消息的优先级、持久化、传输格式(如JSON)、延迟等高级特性,Body则是传递的消息数据实体 2.消息投递 Exchange、Queue与Routing Key三个概念是理解RabbitMQ消息投递的关键。RabbitMQ中一个核心的原则是,消息不能直接投递到Queue中。 Producer只能将自己的消息投递到Exc
【1月更文挑战第9天】 无论是面试还是工作,持久化都是重点! Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能!——RDB(Redis DataBase)和AOF(Append Only File)
【1月更文挑战第11天】 一、消息应答 1.概念 2.自动应答 3.消息应答方法 4.Multiple 的解释 5.消息自动重新入队 6.消息手动应答代码 7.手动应答效果演示 二、RabbitMQ持久化 1.概念 2.队列如何实现持久化 3.消息实现持久化 4.不公平分发 5.预取值
【1月更文挑战第10天】 在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢:
【1月更文挑战第8天】 Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。 另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。
【1月更文挑战第10天】 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设置basic.ack 的 multiple 域,表示到这个序列号之前的所有消息都已经得到了处
【1月更文挑战第10天】先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。 应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中.还有比如说: 用户在商城下单成功并点击去支付后在指定时间未支付时自动失效。
【1月更文挑战第9天】 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。 相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。
【1月更文挑战第7天】Redis事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!一次性、顺序性、排他性!执行一些列的命令。
【1月更文挑战第8天】哨兵模式说白点就是:自动选举老大的模式。
【1月更文挑战第8天】主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(masterleader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。 默认情况下,每台Redis服务器都是主节点; 且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
【1月更文挑战第7天】启动的时候,就通过配置文件来启动!
【1月更文挑战第7天】 消息队列 Redis 发布订阅(publsub)是一种消息通信模式︰发送者(pub)发送消息,订阅者(sub)接收消息。微信、微博、关注系统! Redis客户端可以订阅任意数量的频道。
【1月更文挑战第5天】MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
【1月更文挑战第5天】 一、分页插件使用步骤 1、添加依赖 2、配置分页插件 二、分页插件的使用 1、开启分页功能 2、分页相关数据 方法一:直接输出 方法二使用PageInfo 常用数据:
【1月更文挑战第6天】在Ubuntu下安装Redis
【1月更文挑战第3天】 一、核心配置文件详解 二、默认的类型别名 三、MyBatis的增删改查 四、MyBatis获取参数值的两种方式 1、单个字面量类型的参数 2、多个字面量类型的参数 3、map集合类型的参数 4、实体类类型的参数 5、使用@Param标识参数
【1月更文挑战第3天】 一、resultMap处理字段和属性的映射关系 二、多对一映射处理 1、级联方式处理映射关系 2、使用association处理映射关系 3、分步查询 1. 查询员工信息 2. 查询部门信息 三、一对多映射处理 1、collection 2、分步查询 3. 查询部门信息 4. 根据部门id查询部门中的所有员工 四、延迟加载
【1月更文挑战第1天】 2、标识符 3、行与缩进和多行语句 4、print输出语句 5、关键字 6、import和from...import的语法 二、数据类型 1、Number(数字) 1.1、三种数据类型: 1.2、数字类型转换: 1.3、常用数学函数: 1.4、随机数函数 2、String(字符串) 2.1、常用字符串运算符 3、Tuple(元组) 3.1、 常用运算符 4、List(列表) 4.1、修改列表 4.2、 嵌套列表 4.3、常用运算符 4.4、常用方法 5、Dictionary(字典) 5.1、访问字典的值 5.2、 修改字典 6、Set(集合) 6.1、两种创建格式
【1月更文挑战第1天】在分析问题是否具有最优子结构性质时,通常先设出问题的最优解,给出子问题的解一定是最优的结论。证明思路是:设原问题的最优解导出子问题的解不是最优的,然后在这个假设下可以构造出比原问题的最优解更好的解,从而导致矛盾。(一个问题能够分解成各个子问题来解决,通过各个子问题的最优解能递推到原问题的最优解,此时原问题的最优解一定包含各个子问题的最优解,这是能够采用贪心法来求解问题的关键)贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择获得,即通过一系列的逐步局部最优选择使得最终的选择方案是全局最优的。
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
【1月更文挑战第2天】 一、内置函数 1.1、什么是内置函数? 1.2、常用的内置函数 1.2.1、数学类型内置函数 1.2.2、类型转换内置函数 二、模块 2.1、模块的概念 2.2、模块的使用 2.2.1、import导入:import 包名.模块名[as 别名] 2.2.2、from...import导入:from 包名 import 模块名 或 from 模块名 import 工具名
【1月更文挑战第21天】 一、索引 1、说明 2、原理 3、相关操作 3.1、创建索引 3.2、查看集合索引 3.3、查看集合索引大小 3.4、删除集合所有索引(不包含_id索引) 3.5、删除集合指定索引 4、复合索引 二、聚合 1、说明 2、使用
【1月更文挑战第19天】 一、@RequestMapping注解的功能 二、@RequestMapping注解的位置 三、@RequestMapping注解的value属性 四、@RequestMapping注解的method属性 五、@RequestMapping注解的params属性 六、@RequestMapping注解的headers属性 七、SpringMVC支持ant风格的路径 八、SpringMVC支持路径中的占位符(重点)
【1月更文挑战第18天】 一、SpringMVC获取请求参数 1、通过ServletAPI获取 2、通过控制器方法的形参获取请求参数 3、@RequestParam 4、@RequestHeader 5、@CookieValue 6、通过POJO获取请求参数 7、解决获取请求参数的乱码问题 二、域对象共享数据 1、使用ServletAPI向request域对象共享数据 2、使用ModelAndView向request域对象共享数据 3、使用Model向request域对象共享数据 4、使用map向request域对象共享数据 5、使用ModelMap向request域对象共享数据
【1月更文挑战第13天】 一、IoC容器 1、控制反转(IoC) 2、依赖注入 3、IoC容器在Spring的实现 二、基于XML管理Bean 1、搭建子模块spring6-ioc-xml 2、实验一:获取bean ①方式一:根据id获取 ②方式二:根据类型获取 ③方式三:根据id和类型 ④注意的地方 ⑤扩展知识 3、实验二:依赖注入之setter注入 4、实验三:依赖注入之构造器注入 5、实验四:特殊值处理 ①字面量赋值 ②null值 ③xml实体 ④CDATA节 6、实验五:为对象类型属性赋值 方式一:引用外部bean 方式二:内部bean 方式三:级联属性赋值
【1月更文挑战第12天】用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等
【1月更文挑战第5天】 一、MyBatis-Plus简介 二、 MyBatis-Plus操作 1、准备数据库脚本 2、准备boot工程 3、导入依赖 4、配置文件和启动类 5、功能编码 6、测试和使用
【1月更文挑战第3天】 一、MyBatis的各种查询功能 1、查询一个实体类对象 2、查询一个List集合 3、查询单个数据 4、查询一条数据为map集合 5、查询多条数据为map集合 1、方法一 2、方法二 二、特殊SQL的执行 1、模糊查询 2、批量删除 3、动态设置表名 4、添加功能获取自增的主键
【1月更文挑战第2天】 MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
【1月更文挑战第1天】 1、注释 注释分为单行注释和多行注释两种,单行注释用#表示,多行注释用(三个双引号"“”“”")或‘(三个单引号’‘’‘’')表示。如下所示: