- 博客(64)
- 收藏
- 关注
原创 Java中的transient关键字
文章目录transient关键字简述深入transien关键字transient的底层实现原理被transient关键字修饰过得变量真的不能被序列化嘛?静态变量能被序列化吗?被transient关键字修饰之后呢?transient关键字简述将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。关于序列化:Java序列化提供两种方式。一种是实现Serializable接口另一种是实现Exteranlizable接口。 需要重写writeExternal和r
2022-04-06 21:15:45
880
原创 三、MyBatisPlus条件构造器-Wrapper
文章目录一、wapper介绍二、AbstractWrapper1、ge、gt、le、lt、isNull、isNotNull2、eq、ne3、between、notBetween4、allEq5、like、notLike、likeLeft、likeRight6、in、notIn、inSql、notinSql、exists、notExists7、or、and8、嵌套or、嵌套and9、orderBy、orderByDesc、orderByAsc10、last11、指定要查询的列12、set、setSql一、w
2021-10-25 12:53:27
656
原创 二、MyBatisPlus的CRUD
文章目录一、insert1、插入操作2、主键策略二、update1、根据Id更新操作2、自动填充3、乐观锁三、select1、根据id查询记录2、通过多个id批量查询3、简单的条件查询4、分页四、delete1、根据id删除记录2、批量删除3、简单的条件查询删除4、逻辑删除五、性能分析一、insert1、插入操作@RunWith(SpringRunner.class)@SpringBootTestpublic class CRUDTests { @Autowired privat
2021-10-25 12:52:31
157
原创 一、MyBatisPlus快速入门
文章目录简介&特性快速开始一、创建并初始化数据库二、初始化工程三、添加依赖四、配置五、编写代码六、开始使用简介&特性官网:http://mp.baomidou.com/参考教程:http://mp.baomidou.com/guide/MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。快速开始快速开始参考:http://mp.baomidou.com/guide/quick-start
2021-10-25 12:51:25
140
原创 阿里云服务器cpu使用率一直100%,疑似中了病毒脚本
参考文章cpu使用率一直100%TCP 之 SYN_SENT状态linux下查询进程对应文件亲测有效其它
2021-10-13 14:16:33
766
原创 九、Spring Cloud Config分布式配置中心
文章目录基于上一集简介Git配置管理远程Git仓库创建远程仓库创建配置文件搭建配置中心微服务获取配置中心配置Spring Cloud Bus服务总线Spring Cloud 体系技术综合应用概览基于上一集简介在分布式系统中,由于服务数量非常多,配置文件分散在不同的微服务项目中,管理不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库(GitHub、码云)。使用S
2021-10-03 15:51:17
188
原创 八、Spring Cloud Gateway网关
文章目录基于上一集简介Gateway加入后的架构核心概念快速入门面向服务的路由修改映射配置,通过服务名称获取路由前缀去除前缀过滤器简介配置全局默认过滤器执行生命周期使用场景自定义过滤器自定义局部过滤器自定义全局过滤器负载均衡和熔断(了解)Gateway跨域配置Gateway的高可用(了解)Gateway与Feign的区别基于上一集简介Spring Cloud Gateway是Spring官网基于Spring 5.0、 Spring Boot 2.0、Project Reactor等技术开发的网关服务
2021-10-03 15:50:28
226
原创 七、Feign
目录基于上一集简介快速入门导入依赖Feign的客户端开启Feign功能启动测试负载均衡Hystrix支持(了解)请求压缩(了解)日志级别(了解)基于上一集简介Feign也叫伪装:Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。项目主页快速入门导入依赖在 consumer-demo 项目的 pom.xml 文件中添加如下依赖<dependency> <gro
2021-10-03 15:49:46
120
原创 六、熔断器Hystrix
文章目录基于上一集简介雪崩问题线程隔离&服务降级测试服务熔断测试基于上一集简介Hystrix 在英文里面的意思是 豪猪,它的logo 看下面的图是一头豪猪,它在微服务系统中是一款提供保护机制的组件,和eureka一样也是由netflix公司开发。主页Hystrix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。雪崩问题微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:如图,一次业务请
2021-10-03 15:49:05
147
原创 五、负载均衡Ribbon
目录负载均衡问题使用Ribbon实现负载均衡访问启动两个服务实例开启负载均衡查看源码负载均衡问题在Eureka注册中心的案例中,我们启动了一个 user-service ,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端口来访问。但是实际环境中,往往会开启很多个 user-service 的集群。此时获取的服务列表中就会有多个,到底该访问哪一个呢?一般这种情况下就需要编写负载均衡算法,在多个实例列表中进行选择。不过Eureka中已经集成了负载均衡组件:Ribbon,简单修
2021-10-03 15:48:33
118
原创 四、Eureka注册中心
目录认识Eureka原理图入门案例搭建eureka-server工程服务注册服务发现Eureka详解基础架构高可用的Eureka ServerEureka客户端失效剔除和自我保护认识Eureka首先我们来解决第一问题,服务的管理。问题分析在微服务场景模拟的案例中,user-service对外提供服务,需要对外暴露自己的地址。而consumer-demo(调用者)需要记录服务提供者的地址。将来地址出现变更,还需要及时更新。这在服务较少的时候并不觉得有什么,但是在现在日益复杂的互联网环境,一个项目
2021-10-03 15:48:10
338
原创 三、微服务场景模拟
目录创建父工程创建服务提供者创建服务调用者存在的问题创建父工程先创建一个父工程,然后后续的工程都以这个工程为父。在实际开发中,每个微服务可独立一个工程。工程目录结构:在pom文件中添加对应依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i
2021-10-03 15:47:38
174
原创 二、Why SpringCloud?
目录SpringCloud备受青睐的原因简介版本SpringCloud备受青睐的原因微服务是一种架构方式,最终肯定需要技术架构去实施。微服务的实现方式很多,但是最火的莫过于Spring Cloud了。为什么?后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。技术强:Spring作为Java领域的前辈,可以说是功力深厚。有强力的技术团队支撑,一般人还真比不了群众基础好:可以说大多数程序员的成长都伴随着Spring框架,试问:现在有几家公司开发不用Spring?Spr
2021-10-03 15:46:39
103
原创 一、系统架构的演变、服务的调用方式
目录系统架构的演变1.集中式架构2.垂直拆分3.分布式服务4.面向服务架构(SOA)5.微服务架构服务的调用方式RPC和HTTPHttp客户端工具Spring的RestTemplateRestTemplate的简单测试随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此也不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构,还有在Google带领下来势汹涌的Service Mesh。系统架构的演变1.集中式架构当网站
2021-10-03 15:45:33
269
原创 RabbitMQ-集群搭建、负载均衡
文章目录为何要搭建RabbitMQ集群?集群方案原理单机多实例方式搭建集群集群管理镜像集群配置负载均衡-HAProxy安装HAProxy配置HAProxy代码测试集群为何要搭建RabbitMQ集群?如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。集群方案原理RabbitMQ这款消息队列中间件产品本身是基于Erl
2021-09-07 22:48:10
2720
1
原创 RabbitMQ-消息幂等性的保障:乐观锁机制
文章目录什么是幂等性?消息幂等性保障:乐观锁机制什么是幂等性?幂等性指一次和多次请求某一个资源,对于资源本身应该具有同样的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。在MQ中指,消费多条相同的消息,得到与消费该消息一次相同的结果。消息幂等性保障:乐观锁机制用户付款500后,发送一条扣款500的消息到mq,但是由于网络什么各种原因,Consumer没有消费到消息便让Producer再发一条,此时Q1中还存在着未被消费的和重发的那一条消息,这时Consumer在来正常
2021-09-07 16:29:37
706
1
原创 RabbitMQ-消息可靠性保障:消息补偿机制
文章目录现有需求:确保消息100%发送成功。使用消息补偿机制:1.业务数据入库在发送消息前,先将消息入库2.发送消息发送消息m到消息队列Q1,Consumer监听到Q1的消息m后,消费消息m,并将消息m入库。然后发送确认消息给Q2,回调检查服务监听到Consumer反馈的确认消息后,也将消息写入数据库MDB。这是消息发送成功的正常情况。倘若:发送消息失败,那么Consumer消费不到消息,Consumer的消息入库操作也失败了。这时也不用担心,因为在我们发送消息m后,过了几分钟后也会进行延
2021-09-07 16:14:10
962
原创 RabbitMQ-日志与监控、消息追踪
文章目录日志与监控RabbitMQ日志Web管控台监控使用命令rabbitmqctl管理和监控消息追踪消息追踪-Firehose消息追踪-rabbitmq_tracing日志与监控RabbitMQ日志linux系统下:RabbitMQ默认日志存放路径: /var/log/rabbitmq/rabbit@xxx.logxxx为你的主机名日志包含了RabbitMQ的版本号、Erlang的版本号、RabbitMQ服务节点名称、cookie的hash值、RabbitMQ配置文件地址、内存限制、磁盘限制、
2021-09-07 15:28:03
1381
原创 RabbitMQ-dlx死信队列
文章目录什么是死信队列?消息成为死信的三种情况:DLX死信队列 的测试小结什么是死信队列?死信队列,英文缩写:DLX 。Dead LetterExchange(死信交换机),当消息成为Dead message后,可以被重新发送到另一个交换机,这个交换机就是DLX。消息成为死信的三种情况:1.队列消息长度到达限制;⒉消费者拒接消费消息,basicNack/basicReject,并且不把消息重新放入原目标队列,requeue=false;3.原队列存在消息过期设置,消息到达超时时间未被消费;
2021-09-07 15:26:27
151
原创 RabbitMQ-ttl+dlx实现延迟队列
文章目录什么是延迟队列?延迟队列的实现测试什么是延迟队列?延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。若有如下需求:1.下单后,30分钟未支付,取消订单,回滚库存。2.新用户注册成功7天后,发送短信问候。其实现方式:1.定时器2.延迟队列但,在RabbitMQ中没有直接提供延迟队列。不过我们可以使用 TTL + DLX 组合来实现延迟队列延迟队列的实现测试工程结构:spring-rabbitmq-producer.xml中相关配置
2021-09-07 15:26:00
336
原创 RabbitMQ-TTL消息存活时间
文章目录TTL是什么?TTL的测试小结TTL是什么?TTL全称Time To Live(存活时间/过期时间) 。当消息到达存活时间后,还没有被消费,会被自动清除。RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。TTl:消息的存活时间有两种 1.队列统一过期 2.消息单独过期若设置了队列过期时间,也设置了消息过期时间,以时间短的为准。若队列过期后,会将队列中所有消息移除。只有消息在队列顶端时(即将被消费时),才会判断它是否过期(被移除掉),
2021-09-07 15:25:24
865
原创 RabbitMQ-消费端限流
文章目录为什么要做消费端限流?消费端限流的测试为什么要做消费端限流?A系统每秒最大能处理1000请求,若这时开展了秒杀活动,请求瞬间增多,全部打到A系统上的话那A系统肯定会崩溃宕机什么的,这对业务正常运转造成了巨大的影响。所以我们把消息存入MQ中,然后每次从MQ中拉取1000个请求,保证A系统能正常运转,业务正常进行。当有一天,A系统要维护了,维护期间会有大量消息堆积在MQ中,维护好了若让MQ中的消息全打入A系统的话,怕不是马上就挂。所以我们需要在消费端限流,来保证系统的稳定性和业务的正常运转。
2021-09-07 15:24:55
585
原创 RabbitMQ-Consumer Ack消息的可靠性
文章目录消费端收到消息后的确认方式手动确认方式的测试消息可靠性要点消费端收到消息后的确认方式ack指Acknowledge,确认。表示消费端收到消息后的确认方式。有三种确认方式:自动确认: acknowledge=“none”手动确认: acknowledge=“manual”根据异常情况确认: acknowledge=“auto”其中自动确认是指,当消息一旦被Consumer接收到,则自动确认收到,并将相应message 从 RabbitMQ的消息缓存中移除。但是在实际业务处理中,很可能
2021-09-07 15:24:23
184
原创 RabbitMQ-消息的可靠投递
文章目录适用场景两种方式confirm确认模式 的测试return回退模式 的测试其它方式适用场景在使用RabbitMQ的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。两种方式RabbitMQ为我们提供了两种方式用来控制消息的投递可靠性模式。confirm 确认模式return 退回模式rabbitmq整个消息投递的路径:producer -> rabbitmq broker -> exchange -> queue -> consumer消息从
2021-09-07 15:23:47
128
原创 RabbitMQ基础概念及工作模式的简单介绍
文章目录RabbitMQ中的MQ是什么?MQ的优势和劣势优势:1.应用解耦2.异步提速3.削峰填谷劣势:1.系统可用性降低2.系统复杂度提高3.一致性问题使用MQ的满足条件常见的MQRabbitMQ简介发展史JMS的概念RabbitMQ相关概念RabbitMQ的六种工作模式1.简单模式2.Work queues工作队列模式3.Pub/Sub发布订阅模式4.Routing路由模式5.Topics通配符模式总结RabbitMQ中的MQ是什么?MQ全称Message Queue(消息队列),是在消息的传输过程
2021-09-06 13:33:52
857
2
原创 在linux上以rpm方式安装jdk,此方式不需要再设置环境变量
目录在linux上以rpm方式安装jdk,此方式不需要再设置环境变量1.查看你的linux系统上是否已经有jdk了2.下载3.安装4.卸载在linux上以rpm方式安装jdk,此方式不需要再设置环境变量1.查看你的linux系统上是否已经有jdk了linux命令:java -version好了可以看到我们已经有jdk了,散了散了(狗头)2.下载jdk官网下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downl
2021-08-18 10:30:38
639
原创 SpringMVC拦截器interceptor
文章目录拦截器(interceptor)的作用拦截器与过滤器的区别拦截器方法说明自定义拦截器拦截器(interceptor)的作用Spring MVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。拦截器与过滤器的区别拦截器方法说明自定义拦截器步骤:①
2021-06-02 20:22:58
418
1
原创 SpringMVC数据响应&获得请求参数
文章目录一、数据响应1.页面跳转①直接返回字符串:②返回ModelAndView对象③向request域中存储数据2.回写数据①直接返回字符串②返回对象或集合二、SpringMVC获得请求数据1.获得请求参数①获取基本类型参数②获取pojo类型参数③获取数组类型参数④获取集合类型参数2.静态资源的放行3.解决请求数据乱码问题4.参数绑定注解@RequestParam5.获得Restful风格的数据6.自定义类型转换器7.获取Servlet相关的API8.获取请求头@RequestHeader@CookieV
2021-06-02 20:21:53
394
2
原创 Spring5MVC快速入门
文章目录一、SpringMVC是什么?二、SpringMVC快速入门一、SpringMVC是什么?SpringMVC是一种基于java实现的MVC设计模型的请求驱动类型的轻量Web框架,属于SptingFrameWork的后续产品,已经融合在Spring Web Flow中。SpringMVC已经成为目前最主流的MVC框架之一,他通过一套注解,就可以让一个简单的Java类成为处理请求的控制器,而无需实现任何接口。它同时还支持RESTful编程风格的请求。二、SpringMVC快速入门①导入S
2021-06-02 20:20:16
237
1
原创 Spring5的新功能中的一些以及SpringWebflux
文章目录一、 Spring 5.0 框架自带了通用的日志封装二、Spring5 框架核心容器支持@Nullable 注解三、Spring5 核心容器支持函数式风格 GenericApplicationContext四、Spring5 支持整合 JUnit5五、Spring5 框架新功能(Webflux)1、SpringWebflux 介绍2、响应式编程(Java 实现)3、响应式编程(Reactor 实现)4、SpringWebflux 执行流程和核心 API5、SpringWebflux(基于注解编程模型
2021-05-27 20:32:38
228
1
原创 Spring5_事务管理
文章目录事务的概念搭建事务操作环境事务操作Spring中的事务管理注解声明式事务管理声明式事务管理参数配置XML 声明式事务管理完全注解声明式事务管理事务的概念1、什么事务(1)事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败(2)典型场景:银行转账lucy 转账 100 元 给 marylucy 少 100,mary 多 1002、事务四个特性(ACID)(1)原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回
2021-05-27 20:31:51
156
2
原创 Spring5_JdbcTemplate
文章目录啥是JdbcTemplate?JdbcTemplate 操作数据库(添加)JdbcTemplate 操作数据库(修改和删除)JdbcTemplate 操作数据库(查询返回某个值)JdbcTemplate 操作数据库(查询返回对象)JdbcTemplate 操作数据库(查询返回集合)JdbcTemplate 操作数据库(批量操作)1、JdbcTemplate 实现批量添加操作2、JdbcTemplate 实现批量修改操作3.JdbcTemplate 实现批量删除操作啥是JdbcTemplate?1
2021-05-27 20:28:50
97
1
原创 Spring5_AOP
文章目录什么是 AOP?AOP底层原理AOP(JDK 动态代理)AOP(术语)AOP 操作(准备工作)AOP 操作(AspectJ 注解)AOP 操作(AspectJ 配置文件)什么是 AOP?(1)面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。(2)通俗描述:不通过修改源代码方式,在主干功能里面添加新功能AOP底层原理AOP 底层使用动态代理(1)有两种情况动态代理情况一:第一种
2021-05-27 20:27:50
115
原创 Spring5_IOC容器
文章目录写在前面的一、什么是IOC?二、IOC底层原理三、IOC(BeanFactory 接口)四、IOC操作Bean管理基于xml的IOC操作Bean管理1、基于 xml 方式创建对象2、基于 xml 方式注入属性2.1方式一:使用 set 方法进行注入2.2方式二:使用有参数构造进行注入2.3方式三:p 名称空间注入其它:xml 方式注入其他类型属性1.注入字面量2.注入属性-外部 bean3.注入属性-内部 bean4.注入属性-级联赋值5.注入集合属性IOC 操作 Bean 管理(FactoryBe
2021-05-27 20:26:57
90
1
原创 JSON、AJAX、i18n
文章目录JSON什么是 JSON?JSON 在 JavaScript 中的使用。json 的定义json 的访问json 的两个常用方法JSON 在 java 中的使用javaBean 和 json 的互转List 和 json 的互转map 和 json 的互转AJAX 请求什么是 AJAX 请求原生的ajax请求jQuery 中的 AJAX 请求get和postgetJSONfang方法表单序列化 serialize()书城项目升级使用 AJAX 验证用户名是否可用使用 AJAX 修改把商品添加到购物车
2021-05-14 15:21:01
103
1
原创 filter过滤器
文章目录Filter 什么是过滤器Filter初体验♂Filter 的生命周期FilterConfig 类FilterChain 过滤器链Filter 的拦截路径精确匹配目录匹配后缀名匹配书城项目:使用 Filter 过滤器拦截/pages/manager/所有内容,实现权限检查ThreadLocal 的使用使用 Filter 和 ThreadLocal 组合管理事务JdbcUtils工具类修改为考虑上事务的使用 Filter 过滤器统一给所有的 Service 方法都加上 try-catch。来进行实现的
2021-05-14 15:19:57
135
1
原创 Cookie 和 Session
文章目录后面用到的BaseServletCookie 饼干什么是 Cookie?如何创建 Cookie服务器如何获取 CookieCookie 值的修改浏览器查看 Cookie:Cookie 生命控制Cookie 有效路径 Path 的设置免输入用户名登录Session 会话什么是 Session 会话?如何创建 Session 和获取(id 号,是否为新)Session 域数据的存取Session 生命周期控制Session 超时的概念介绍:浏览器和 Session 之间关联的技术内幕书城项目登录显示用户
2021-05-12 17:02:51
85
原创 第五章 servlet
文章目录一、Servlet 技术a)什么是 Servlet1、Servlet 是 JavaEE 规范之一。规范就是接口2、Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。3、Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。 b)手动实现 Servlet 程序1、编写一个类去实现 Servlet 接口2、实现 service 方法,处理请求,并响应
2021-05-12 17:02:25
212
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人