- 博客(63)
- 收藏
- 关注
原创 【微服务】Day19(RestTemplate远程调用、Nginx、Linux部署java项目)
简单来说Web服务器就是一个能够接收http请求并作出响应的程序webServer项目(二阶段项目)就是一个我们手写的Web服务器我们现在开发的标准SpringBoot项目启动时内置的Web服务器叫Tomcat实际上我们业界中还有很多Web服务器,它们具备很多不同的特征网关Gateway项目使用Netty服务器,Netty服务器内部是NIO的所以性能更好下图以Tomcat为例,解释请求响应流程大多数情况我们会使用Tomcat作为Web服务器它是我们请求\响应流程中的核心组件。
2022-10-20 17:53:49
395
1
原创 【微服务】Day18(秒杀业务完善、ELK简介、Nacos配置中心)
ELK:E:Elasticsearch 全文搜索引擎L:logstash 日志采集工具K:Kibana ES的可视化工具ELK是当今业界非常流行的日志采集保存和查询的系统我们编写的程序,会有很多日志信息,但是日志信息的保存和查询是一个问题idea控制台是临时显示的位置,我们可以将它保存在文件中但是即使保存在文件中,海量日志信息要想查询需要的条目也是问题所以我们使用ELK来保存。
2022-10-20 17:48:39
433
原创 【微服务】Day17(酷鲨商城前台业务总结、布隆过滤器、Docker)
布隆过滤器能够实现使用较少的空间来判断一个指定的元素是否包含在一个集合中布隆过滤器并不保存这些数据,所以只能判断是否存在,而并不能取出该元素使用情景:凡是判断一个元素是否在一个集合中的操作,都可以使用它布隆过滤器常见使用场景idea中编写代码,一个单词是否包含在正确拼写的词库中(拼写不正确划绿线的提示)公安系统,根据身份证号\人脸信息,判断该人是否在追逃名单中爬虫检查一个网址是否被爬取过…所谓的虚拟机,就是在当前计算机系统中,又开启了一个虚拟系统这个虚拟系统,我们要安装Linux系统。
2022-10-20 17:43:21
1336
1
原创 【微服务】Day16(开发酷鲨商城秒杀业务)
quartz包下再创建一个新的类用于接收信息RabbitMQConsumer代码如下启动Nacos\RabbitMQ\Seata启动stock-webapi会在0/10/20/30/40/50秒时发送消息消息的接收会实时运行在csmall-business模块中创建一个rabbit包包中创建RabbitConfig类配置交换机\路由Key\和队列的配置(允许复制)创建一个消息的发送者(建议使用Spring任务调度)RabbitProducer。
2022-10-20 17:35:50
256
原创 【微服务】Day15(消息队列、Kafka、RabbitMQ)
消息队列(Message Queue)简称MQ,也称:“消息中间件”消息队列是采用"异步(两个微服务项目并不需要同时完成请求)"的方式来传递数据完成业务操作流程的业务处理方式Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。Kafka最初是由LinkedIn开发,并随后于2011年初开源。zoo:动物园keeper:园长可以引申为管理动物的人Linux服务器中安装的各种软件,很多都是有动物形象的。
2022-10-20 17:23:37
208
原创 【微服务】Day14(续 秒杀业务准备、消息队列)
我们将秒杀的商品Spu列表查询出来当用户选择一个商品时我们要将这个商品的sku也查询出来也就是根据SpuId查询Sku的列表创建SeckillSkuMapperSeckillSkuMapper.xml文件添加内容
2022-10-20 16:50:27
356
原创 【微服务】Day13(续 Quartz、Redis 强化、秒杀业务准备)
学习秒杀的目的是让同学们了解高并发在微服务项目中的处理流程指定一些基本的高并发处理标准动作酷鲨商城定时秒杀业务就是一个模拟高并发的业务场景每秒请求数8000并发500~800网站在线用户20000(到30000)日活跃用户50000(到80000)学习完秒杀业务,我们能具备处理一般高并发业务的基本逻辑。
2022-10-20 16:47:36
148
原创 【微服务】Day12(搜索功能、Quartz)
如果我们按照关键字"手机"进行搜索可以在Repository接口中编写自定义方法// 查询title字段中包含指定关键字的spu数据 Iterable < SpuForElastic > querySpuForElasticsByTitleMatches(String title);}上面的查询可以通过测试类测试。
2022-10-20 16:26:20
543
原创 【微服务】Day11(续 开发新增订单功能、静态资源服务器)
我们无论做什么项目,都会有一些页面中需要显示的静态资源,例如图片,视频文档等我们一般会创建一个单独的项目,这个项目中保存静态资源其他项目可以通过我们保存资源的路径访问使用静态资源服务器的原因是静态资源服务器可以将项目需要的所有图片统一管理起来当其他模块需要图片时,可以从数据库中直接获得访问静态资源的路径即可方便管理所有静态资源。
2022-10-20 16:22:13
310
原创 【微服务】Day10(购物车续、新增订单、Leaf)
leaf是叶子的意思我们使用的Leaf是美团公司开源的一个分布式序列号(id)生成系统我们可以在Github网站上下载项目直接使用。
2022-10-20 16:17:15
201
原创 【微服务】Day09(开发酷鲨前台商品列表、登录流程回顾、开发购物车功能)
用户会根据分类树中的分类的名称,查询它需要的商品类别点击商品分类名称时,实际上我们获得了它的分类id(categoryId)我们可以根据这个id到pms_spu表中查询商品信息并进行分页显示这个查询目标仍然为mall-pms数据库,是product模块管理的范围所以我们在业务逻辑层中编写利用dubbo调用即可,还是不需要写mapper下面就在业务逻辑层中创建FrontProductServiceImpl业务逻辑层实现类先只实现按分类id分页查询的功能即可。
2022-10-01 01:02:47
450
原创 【微服务】Day08(分页查询)
在给大家提供的csmall-jsd2203项目的doc文件夹下的sql文件夹中有多个sql语句文件分别去运行它们,我们可以获得酷鲨商城前台的数据库信息了我们每个微服务项目原则上只操作少于一个数据库随堂更新git地址:https://gitee.com/jtzhanghl/csmall-repo-class.git我们数据库mall_pms的category表使用自关联实现了三级分类当前酷鲨商城项目使用固定的三级分类1.从数据库中查询出所有分类信息,一次性全查2.构建分类信息的父子结构,实现查询返回父子结构的
2022-10-01 01:01:27
674
原创 【微服务】Day07(SpringBoot 操作 Elasticsearch、SpringData自定义查询)
原生状态下,我们使用JDBC连接数据库,因为代码过于繁琐,所以改为使用Mybatis框架在ES的原生状态下,我们java代码需要使用socket访问ES,但是也是过于繁琐,我们可以使用SpringData框架简化Spring Data是Spring提供的一套连接各种第三方数据源的框架集我们需要使用的是其中连接ES的Spring Data Elasticseatrch官方网站:https://spring.io/projects/spring-data。
2022-10-01 00:33:17
543
1
原创 【微服务】Day06(csmall项目网关、Elasticsearch 概述)
昨天晚课git地址https://gitee.com/jtzhanghl/home2205.git上次课完成了路由的基本配置下面对当前项目所有服务器添加路由配置信息上面的yml配置了bejing和shanghai项目的路由信息先启动Nacos然后启动每个模块(beijing/shanghai/gateway)我们使用http://localhost:9000/bj/show可以访问beijing服务器的资源http://localhost:9000/sh/show可以访问shanghai服务器的资源以此类
2022-10-01 00:31:32
374
原创 【微服务】Day05(使用Seata、Sentinel、SpringGateway网关)
上次课我们讲解了Seata软件AT模式的运行流程AT模式的运行有一个非常明显的前提条件,这个条件不满足,就无法使用AT模式这个条件就是事务分支都必须是操作关系型数据库(Mysql\MariaDB\Oracle)因为关系型数据库才支持提交和回滚,其它非关系型数据库都是直接影响数据(例如Redis)所以如果我们在业务过程中有一个节点操作的是Redis或其它非关系型数据库时,就无法使用AT模式除了AT模式之外还有TCC、SAGA 和 XA 事务模式Sentinel英文翻译"哨兵\门卫"
2022-10-01 00:29:02
339
原创 【微服务】Day04(Dubbo实现微服务调用、负载均衡、Seata概述)
在实际项目中,一个服务基本都是集群模式的,也就是多个功能相同的项目在运行,这样才能承受更高的并发这时一个请求到这个服务,就需要确定访问哪一个服务器[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v9s5fzf6-1664555177009)(1655891169062.png)]Dubbo框架内部支持负载均衡算法,能够尽可能的让请求在相对空闲的服务器上运行在不同的项目中,可能选用不同的负载均衡策略,以达到最好效果Loadbalance:就是负载均衡的意思。
2022-10-01 00:26:45
324
原创 【微服务】Day03(Nacos心跳机制、cart,stock项目业务、Dubbo概述)
RPC是Remote Procedure Call的缩写 翻译为:远程过程调用目标是为了实现两台(多台)计算机\服务器,相互调用方法\通信的解决方案RPC只是实现远程调用的一套标准该标准主要规定了两部分内容1.通信协议2.序列化协议为了方便大家理解RPC,下面的图片帮助理解[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-csOHcs00-1664554865779)(image-20220505143449423.png)]
2022-10-01 00:23:39
669
原创 【微服务】Day02(业务概述、Nacos)
我们要搭建一个项目,用于学习各种微服务知识搭建的过程有很多新的标准,需要我们掌握和学习发给大家的3个csmall的项目csmall-finish.zip:这个项目是当前学习过程中需要使用的项目,有些配置和固定的代码,可以从中复制csmall-mobile-repo.zip:酷鲨商城前台前端项目csmall-jsd2203.zip:酷鲨商城前台后端项目模板我们通过学习电商网站添加订单的业务来学习需要使用到的微服务组件我们模拟用户选中了购物车中的商品后,点击"确认订单"按钮后的业务操作1.如果库存足够,就减少用
2022-10-01 00:20:38
602
原创 【微服务】Day01(Vant、SpringCloud)
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CZ2swusk-1663683660659)(image-20220428091647501-16583665374494.png)]Vant是一个轻量,可靠的移动端组件库,2017开源目前 Vant 官方提供了Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护React 版本和支付宝小程序版本。课程中我们使用Vue2版本对应的Vant学习微服务的概念是由Martin Fowler(马丁·福勒。
2022-09-20 22:27:04
397
原创 【Spring】Day19
当已经安装Redis,并确保环境变量可用后,可以在命令提示符窗口(CMD)或终端(IDEA的Terminal,或MacOS/Linux的命令窗口)中执行相关命令。在终端下,可以通过redis-cliredis-cli在Redis客户端中,可以通过ping检测Redis是否正常工作,将得到PONGping在Redis客户端中,可以通过set命令向Redis中或在Redis客户端中,可以通过get命令从Redis中get name如果使用的Key并不存在,使用get命令时,得到的结果将是(nil)
2022-09-20 22:17:14
482
原创 【Mybatis】DAY18_N
通过测试并观察日志【参见下文】,可以看到,第1次执行查询,但是,第2次并没有真正的执行查询,并且,2次查询结果的hashCode值是完全相同的!也就是说:Mybatis只执行了第1次的查询,当执行第2次的代码时,并没有真正连接到MySQL数据库执行查询,而是将第1次的查询结果直接返回了!二级缓存的应用优先级高于一级缓存,也就是说,Mybatis框架将优先从二级缓存中查找数据,如果命中,将返回,如果未命中,则从一级缓存中查找数据,如果命中,将返回,如果仍未命中,将执行真正的查询!,默认是开启的,且无法关闭!
2022-09-20 22:16:38
59
原创 【Spring。。】Day18
为了保证数据表的查询效率,SPU数据中的“详情”(通过富文本编辑器输入的内容)被设计在表中,而其它的一般数据在pms_spu表中,当“新增SPU”时,本质上需要同时对这2张表进行“插入数据”的操作!注意:在pms_spu表中,主键(id)并不是自动编号的(要考虑分库分表时,相关的数据表的主键都不允许使用自动编号)!另外,在插入数据之前,相关数据需要进行检查,包括:检查品牌、类别、相册的id是否存在、是否有效等,这些功能此前已经完成!
2022-09-20 22:15:40
329
原创 【Spring.。。】Day17
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zxT6cqMb-1663683199214)(images/image-20220915104032978.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SCGRHkSr-1663683199217)(images/image-20220915104053183.png)]
2022-09-20 22:14:19
221
原创 【Spring】Day16
由于已经实现了“查询品牌列表”功能,所以,Mapper层无需处理。在在在然后,在完成后,通过Knife4j的API文档可以进行调试(测试访问)。
2022-09-20 22:12:15
360
原创 csmall-passport(Day15)
当【添加管理员】时,必须在操作界面上提供一个可以选择【角色】的控件,且添加时必须确定某些角色,从而,新添加的管理员才会因为选择的角色而关联到某些权限,管理员才会具有某些操作权限!关于选择【角色】,需要将当前系统中的【角色列表】显示在操作界面上!在根包下创建在根包下创建在下的mapper文件夹中粘贴得到
2022-09-15 20:29:07
321
原创 csmall-passport(Day14)
在中,调用的中已经包含用户的权限,则,在返回的在中,执行认证且成功后,返回的对象中的“当事人”就是以上返回的对象,所以,此对象中是包含了以上封装的权限信息的,则可以将权限信息取出并封装到JWT中。需要注意:如果直接将权限()存入到JWT数据中,相当于把转换成String,此过程会丢失数据的原始类型,且不符合自动反序列化格式,后续解析时,无法直接还原成类型!为解决此问题,可以先将转换成JSON格式的字符串再存入到JWT中,后续,解析JWT时得到的也会是JSON格式的字符串,可以反序列化为格式!
2022-09-15 20:28:03
831
原创 Spring (day09)
在使用Spring MVC框架时,控制器(Controller)可以不处理异常(如果执行过程中出现异常,则自动抛出),框架提供了统一处理异常的机制。关于统一处理异常:统一处理异常的代码应该编写在专门的类中,并且,在此类上添加/注解在类中自定义方法来处理异常public在以上方法中,方法的参数是,则表示此方法就是用于处理及其子孙类异常的,不可以处理其它种类的异常。在同一个项目中,可以有多个以上处理异常的类,或同一个处理异常的类中可以有多个处理异常的方法,只要这些方法处理的异常不冲突即可!
2022-09-08 22:03:26
172
原创 Spring Boot+Security (Day12)
关于查询的字段列表,id、username、phone、email、enable;在项目的根包下创建
2022-09-08 21:53:03
289
原创 Spring Validation(day10)
默认情况下,Spring Validation框架会在检查所有的请求参数后再提示可能的失败,即“检查到某个错误时并不会直接中止,而是继续检查”,如果需要实现“快速失败”(即:检查到某个错误时直接视为失败,不会继续后续的检查),需要在配置类中使用。如果处理请求的方法的参数不是封装的数据类型,需要进行检查时,需要先在当前类上添加。使用这种方式检查请求参数时,如果检查不通过,将抛出。异常,所以,还需要在**全局异常处理器(类,在此配置类中创建并配置。则在项目的根包下创建。
2022-09-02 23:07:37
187
原创 spring(day06)
业务逻辑层,也称之为“业务层”(Service Layer),主要:设计业务流程,处理业务逻辑,以保证数据的完整性和安全性。业务层应该由接口(原因后续再解释)和实现类这2种文件组成!关于异常,如果使用现有的异常(例如等),可能会产生歧义,所以,通常会自定义异常,继承自。如果在项目中只使用1种异常类型,不便于不区分同一个业务可能出现的多种“错误”,所以,应该在异常类型中添加某个属性,来区分多种“错误”!关于此属性,可以是int、String。
2022-09-02 23:04:39
289
原创 spring(day05)
相对查询最多1个数据,查询列表的区别在于:必须使用List类型作为抽象方法的返回值类型,另外,在配置时,无论使用resultType还是resultMap,在指定封装返回结果的类型时,仍指定List中的元素类型即可。【需求】查询品牌列表,暂不考虑分页,结果按照sort降序排列、id升序(降序)。通常,查询列表时,与查询单个数据使用的VO类应该是不同的。则在项目的根包下创建在在中配置SQL:
2022-09-02 23:03:42
106
原创 spring(DAY03)
编写以下需求对应的SQL语句(使用记事本保存):向pms_brand表中插入数据根据id删除pms_brand表中的某1条数据根据若干个id批量删除pms_brand表中的数据根据id修改pms_brand表中的name字段的值统计pms_brand表中的数据的数量根据name查询pms_brand表中的数据根据id查询pms_brand表中的数据查询pms_brand表中所有的数据。
2022-09-02 23:00:20
70
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人