avatar
文章
47
标签
18
分类
9

首页
归档
标签
分类
关于
Walon的技术博客
搜索
首页
归档
标签
分类
关于

Walon的技术博客

Spring框架之AOP与事务管理
发表于2024-05-13|Java
Spring框架之AOP与事务管理今日目标 理解并掌握AOP相关概念 能够说出AOP的工作流程 能运用AOP相关知识完成对应的案例编写 重点掌握Spring的声明式事务管理 1,AOP简介前面我们在介绍Spring的时候说过,Spring有两个核心的概念,一个是IOC/DI,一个是AOP。 前面已经对IOC/DI进行了系统的学习,接下来要学习它的另一个核心内容,就是==AOP==。 对于AOP,我们前面提过一句话是:==AOP是在不改原有代码的前提下对其进行增强。== 对于下面的内容,我们主要就是围绕着这一句话进行展开学习,主要学习两方面内容AOP核心概念,AOP作用: 1.1 什么是AOP? AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。 OOP(Object Oriented Programming)面向对象编程 我们都知道OOP是一种编程思想,那么AOP也是一种编程思想,编程思想主要的内容就是指导程序员该如何编写程 ...
Spring框架之第三方bean与注解开发
发表于2024-05-13|Java
Spring框架之第三方bean与注解开发今日目标 掌握IOC/DI配置管理第三方bean 掌握IOC/DI的注解开发 掌握IOC/DI注解管理第三方bean 完成Spring与Mybatis及Junit的整合开发 1,IOC/DI配置管理第三方bean前面所讲的知识点都是基于我们自己写的类,现在如果有需求让我们去管理第三方jar包中的类,该如何管理? 1.1 案例:数据源对象管理在这一节中,我们将通过一个案例来学习下对于第三方bean该如何进行配置管理。 以后我们会用到很多第三方的bean,本次案例将使用咱们前面提到过的数据源Druid(德鲁伊)和C3P0来配置学习下。 1.1.1 环境准备学习之前,先来准备下案例环境: 创建一个Maven项目 pom.xml添加依赖 1234567<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId> ...
Spring框架之IOC与DI
发表于2024-05-13|Java
Spring框架之IOC与DI今日目标 掌握Spring相关概念 完成IOC/DI的入门案例编写 掌握IOC的相关配置与使用 掌握DI的相关配置与使用 1,课程介绍对于一门新技术,我们需要从为什么要学、学什么以及怎么学这三个方向入手来学习。那对于Spring来说: 1.1 为什么要学? 随着时代发展,软件规模与功能都呈几何式增长,开发难度也在不断递增,该如何解决? Spring可以简化开发,降低企业级开发的复杂性,使开发变得更简单快捷 为了解决项目中特定的问题,会引入对应的框架。如何简化各种框架接入的过程? Spring可以框架整合,高效整合其他技术,提高企业级应用开发与运行效率 综上所述,Spring是一款非常优秀而且功能强大的框架,不仅要学,而且还要学好。 1.2 学什么?从上面的介绍中,我们可以看到Spring框架主要的优势是在简化开发和框架整合上,至于如何实现就是咱们要学习Spring框架的主要内容: Spring框架中提供了两个大的核心技术,分别是: IOC AOP Spring的简化操作和框架整合都是基于这两块内容,所以这也是Spring学 ...
微服务常用组件ES-下
发表于2024-05-12|后端
微服务常用组件ES-下 在昨天的学习中,我们已经导入了大量数据到 elasticsearch 中,实现了商品数据的存储。不过查询商品数据时依然采用的是根据 id 查询,而非模糊搜索。 所以今天,我们来研究下 elasticsearch 的数据搜索功能。Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)语句来定义查询条件,其 JavaAPI 就是在组织 DSL 条件。 因此,我们先学习 DSL 的查询语法,然后再基于 DSL 来对照学习 JavaAPI,就会事半功倍。 1.DSL 查询Elasticsearch 的查询可以分为两大类: 叶子查询(Leaf queryclauses):一般是在特定的字段里查询特定值,属于简单查询,很少单独使用。 复合查询(Compound query clauses):以逻辑方式组合多个叶子查询或者更改叶子查询的行为方式。 1.1.快速入门我们依然在 Kibana 的 DevTools 中学习查询的 DSL 语法。首先来看查询的语法结构: 12345678GET /{索引库名 ...
Redis入门到实战_02_实战篇
发表于2024-05-12|后端数据库
实战篇Redis开篇导读亲爱的小伙伴们大家好,马上咱们就开始实战篇的内容了,相信通过本章的学习,小伙伴们就能理解各种redis的使用啦,接下来咱们来一起看看实战篇我们要学习一些什么样的内容 短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容 优惠卷秒杀 通过本章节,我们可以学会Redis的计数器功能, 结合Lua完成高性能的redis操作,同时学会Redis分布式锁的原理,包括Redis的三种消息队列 附近的商户 我们利用Redis的GEOHash来完成对于地理坐标的操作 UV统计 主要是使用Redis来完成统计功能 用户签到 使用Redis的BitMap数据统计功能 好友关注 基于Set集合的关注、取消关注,共同关注等等功能,这一块知识咱们之前就讲过,这次我们在项目中来使用一下 打人探店 基于List来完成点赞列表的操作,同时基于SortedSet来完成点赞的排行榜功能 以上这些内容咱们统统都 ...
微服务常用组件ES-上
发表于2024-05-12|后端
微服务常用组件ES-上 B 站对应视频:https://www.bilibili.com/video/BV1S142197x7/ 黑马商城作为一个电商项目,商品的搜索肯定是访问频率最高的页面之一。目前搜索功能是基于数据库的模糊搜索来实现的,存在很多问题。 首先,查询效率较低。 由于数据库模糊查询不走索引,在数据量较大的时候,查询性能很差。黑马商城的商品表中仅仅有不到 9 万条数据,基于数据库查询时,搜索接口的表现如图: 改为基于搜索引擎后,查询表现如下: 需要注意的是,数据库模糊查询随着表数据量的增多,查询性能的下降会非常明显,而搜索引擎的性能则不会随着数据增多而下降太多。目前仅 10 万不到的数据量差距就如此明显,如果数据量达到百万、千万、甚至上亿级别,这个性能差距会非常夸张。 其次,功能单一 数据库的模糊搜索功能单一,匹配条件非常苛刻,必须恰好包含用户搜索的关键字。而在搜索引擎中,用户输入出现个别错字,或者用拼音搜索、同义词搜索都能正确匹配到数据。 综上,在面临海量数据的搜索,或者有一些复杂搜索需求的时候,推荐使用专门的搜索引擎来实现搜索功能。 目前全球的搜索引擎技术排名如下: ...
微服务常用组件MQ-下
发表于2024-05-12|后端
微服务常用组件MQ-下 在昨天的练习作业中,我们改造了余额支付功能,在支付成功后利用 RabbitMQ 通知交易服务,更新业务订单状态为已支付。 但是大家思考一下,如果这里 MQ 通知失败,支付服务中支付流水显示支付成功,而交易服务中的订单状态却显示未支付,数据出现了不一致。 此时前端发送请求查询支付状态时,肯定是查询交易服务状态,会发现业务订单未支付,而用户自己知道已经支付成功,这就导致用户体验不一致。 因此,这里我们必须尽可能确保 MQ 消息的可靠性,即:消息应该至少被消费者处理 1 次 那么问题来了: 我们该如何确保MQ消息的可靠性? 如果真的发送失败,有没有其它的兜底方案? 这些问题,在今天的学习中都会找到答案。 1.发送者的可靠性首先,我们一起分析一下消息丢失的可能性有哪些。 消息从发送者发送消息,到消费者处理消息,需要经过的流程是这样的: 消息从生产者到消费者的每一步都可能导致消息丢失: 发送消息时丢失: 生产者发送消息时连接 MQ 失败 生产者发送消息到达 MQ 后未找到 Exchange 生产者发送消息到达 MQ 的 Exchange 后,未找到合适的 Queu ...
微服务常用组件MQ-上
发表于2024-05-12|后端
微服务常用组件MQ-上 对应 B 站视频: 微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于 OpenFeign 的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们成这种调用方式为同步调用,也可以叫同步通讯。但在很多场景下,我们可能需要采用异步通讯的方式,为什么呢? 我们先来看看什么是同步通讯和异步通讯。如图: 解读: 同步通讯:就如同打视频电话,双方的交互都是实时的。因此同一时刻你只能跟一个人打视频电话。 异步通讯:就如同发微信聊天,双方的交互不是实时的,你不需要立刻给对方回应。因此你可以多线操作,同时跟多人聊天。 两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发微信可以同时与多个人收发微信,但是往往响应会有延迟。 所以,如果我们的业务需要实时得到服务提供方的响应,则应该选择同步通讯(同步调用)。而如果我们追求更高的效率,并且不需要实时响应,则应该选择异步通讯(异步调用)。 同步调用的方式我们已经学过了,之前的 OpenFei ...
微服务入门与基本组件的使用-下
发表于2024-05-12|后端
服务保护和分布式事务 在微服务远程调用的过程中,还存在几个问题需要解决。 首先是业务健壮性问题: 例如在之前的查询购物车列表业务中,购物车服务需要查询最新的商品信息,与购物车数据做对比,提醒用户。大家设想一下,如果商品服务查询时发生故障,查询购物车列表在调用商品服 务时,是不是也会异常?从而导致购物车查询失败。但从业务角度来说,为了提升用户体验,即便是商品查询失败,购物车列表也应该正确展示出来,哪怕是不包含最新的商品信息。 还有级联****失败问题: 还是查询购物车的业务,假如商品服务业务并发较高,占用过多 Tomcat 连接。可能会导致商品服务的所有接口响应时间增加,延迟变高,甚至是长时间阻塞直至查询失败。 此时查询购物车业务需要查询并等待商品查询结果,从而导致查询购物车列表业务的响应时间也变长,甚至也阻塞直至无法访问。而此时如果查询购物车的请求较多,可能导致购物车服务的 Tomcat 连接占用较多,所有接口的响应时间都会增加,整个服务性能很差, 甚至不可用。 依次类推,整个微服务群中与购物车服务、商品服务等有调用关系的服务可能都会出现问题,最终导致整个集群不可用。 这就是级联*** ...
Redis入门到实战_01_快速入门
发表于2024-05-12|后端
基础篇Redis开篇导读理想课程 小伙伴们理想的课程一定是能够通过讲解的方式,得到如下这些启发,我们的课程会从基础到精通,从redis小白,到redis大牛,还在等什么,这套课程一定就是你最适合你的课程~ 1.Redis简单介绍Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 NoSql 其中键值型,是指Redis中存储的数据都是以key.value对的形式存储,而value的形式多种多样,可以是字符串.数值.甚至json: 而NoSql则是相对于传统关系型数据库而言,有很大差异的一种数据库。 对于存储的数据,没有类似Mysql那么严格的约束,比如唯一性,是否可以为null等等,所以我们把这种松散结构的数据库,称之为NoSQL数据库。 3.初始Redis3.1.认识NoSQLNoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。 3.1.1.结构化与非结构化传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名. ...
1…345
avatar
Leon Walon
文章
47
标签
18
分类
9
Follow Me
公告
This is my Blog
最新文章
VS Code中的vim2025-02-20
前端开发核心总结2024-10-12
JavaWeb_servlet使用与手撕MVC框架_04_Filter-Transaction-Listener2024-06-16
JavaWeb_servlet使用与手撕MVC框架_03_MVC与IOC2024-06-15
JavaWeb_servlet使用与手撕MVC框架_02_手撕MVC2024-06-15
分类
  • Java21
  • 前端1
  • 后端16
    • 数据库7
  • 数学1
  • 生活技能1
    • 做饭1
  • 电脑软件3
标签
ES 容器 SpringMVC 数据库 Web MySQL JavaWeb Redis Java HTML5 数学 做饭 Spring JDBC 微服务 消息队列 文档编辑 Mybatis
归档
  • 二月 20251
  • 十月 20241
  • 六月 20244
  • 五月 202437
  • 四月 20244
网站资讯
文章数目 :
47
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Leon Walon
框架 Hexo|主题 Butterfly
搜索