
实战
文章平均质量分 80
兢兢业业的子牙
这个作者很懒,什么都没留下…
展开
-
Redis---Info命令
1、简介Redis提供了info指令,它会返回关于Redis服务器的各种信息和统计数值。在使用Redis时,时常会遇到一些疑难杂症需要我们去排查,这个时候我们可以通过info指令来获取Redis的运行状态,然后进行问题的排查。通过给定可选的参数 section ,可以让命令只返回某一部分的信息:server: Redis服务器的一般信息 clients: 客户端的连接部分 memory: 内存消耗相关信息 persistence: RDB和AOF相关信息 stats: 一般统计 r原创 2021-10-04 22:57:12 · 4317 阅读 · 0 评论 -
Spring监听器---ApplicationListener
说到事件监听,想到的肯定是观察者模式。但是这儿主要说下spring中的监听是怎么样的流程。这就不得不说到spring容器的refresh方法,容器启动过程中,listener相关的主要是这个三个方法:initApplicationEventMulticaster方法初始化事件多播器,后续的事件发布都是由多播器来发布的;registerListeners注册监听器到前面初始化好的多播器上面去;finishRefresh容器启动完成最后刷新,发布ContextRefreshedEvent事件。..原创 2021-09-15 21:37:23 · 1340 阅读 · 0 评论 -
Dubbo服务暴露与服务消费流程分析
Dubbo的服务暴露和服务的引用流程比较复杂,尤其是Dubbo框架对于扩展点实现了自动包装、自动装配、自适应和自动激活的这些特性,导致我们直接在看源码分析时,会出现很多地方的逻辑不清楚(因为有很多的类是在内存中动态生成的),这里我会把一些动态生成的关键的类的源码贴出来,这样有助于更清晰的理解Dubbo的服务暴露和和消费的整个过程。之所以对服务的暴露和引用的流程做分析,一方面是想更深入的理解Dubbo框架,另一方便是想结合Dubbo的这些扩展点,研究一下Dubbo的微内核加插件机制的架构,学架构不就得..原创 2021-09-06 20:28:35 · 404 阅读 · 0 评论 -
Redis分布式锁---Red Lock
1.Redlock:全名叫做 Redis Distributed Lock;即使用redis实现的分布式锁;官方地址这个锁的算法实现了多redis实例的情况,相对于单redis节点来说,优点在于 防止了 单节点故障造成整个服务停止运行的情况;并且在多节点中锁的设计,及多节点同时崩溃等各种意外情况有自己独特的设计方法前置概念:1.TTL:Time To Live; redis key 的过期时间或有效生存时间2.clock drift:时钟漂移;指两个电脑间时间流速基本相同的情况下,两个电脑原创 2021-08-25 21:47:50 · 859 阅读 · 0 评论 -
Redis的集合---Zset
前言:zset就是有序集合,并且每个member都带有score(可用于排序),因此很适合在打赏日榜、近一周收益这类场景中运用。数据结构初探有序集合对象的编码可以是ziplist或者skiplist。同时满足以下条件时使用ziplist编码:元素数量小于128个 所有member的长度都小于64字节以上两个条件的上限值可通过zset-max-ziplist-entries和zset-max-ziplist-value来修改。ziplist编码的有序集合使用紧挨在一起的压缩列表节点来保原创 2021-08-22 21:02:52 · 1239 阅读 · 0 评论 -
一天一道面试题---开源RPC框架技术选型
一.前言RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务.一般RPC框架要实现远程调用,至少要完成三部分的功能:通信框架,通信协议,序列化和反序列化.二.常见的语言平台RPC框架:RPC框架 是否支持跨语言 描述 Dubbo 否 国内最早开源的RPC框架,有阿里巴巴公司开发并于2011年对外开源,只支持Java语言 Motan 否 微博内部使用的RPC...原创 2021-08-05 22:34:08 · 456 阅读 · 0 评论 -
单元测试----PowerMock
一、为什么要使用Mock工具 在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,远程服务, 文件系统等等)。 而我们没法控制这些外部依赖的对象,为了解决这个问题,我们就需要用到Mock工具来模拟这些外部依赖的对象,来完成单元测试。 二、为什么要使用PowerMock 现如今比较流行的Mock工具如jMock、EasyMock、Mockito等都有一个共同的缺点:不能mock静态、final、私有方法等。而Powe...原创 2021-08-04 21:50:07 · 391 阅读 · 0 评论 -
RocketMQ(二)---Docker集群部署RocketMQ
RocketMQ(2)—Docker集群部署RocketMQ=前言=1、因为自己只买了一台阿里云服务器,所以RocketMQ集群都部署在单台服务器上只是端口不同,如果实际开发,可以分别部署在多台服务器上。2、这里有关 Broker 和 NameServer 分别都做了了集群部署(各部署两个),且BroKer是按两主进行部署。之所以选用Docker部署主要还是考虑 :通过Docker部署RocketMQ集群更快速,而且对系统的资源利用更好!下面先写好所需配置文件,在运行配置文件...原创 2021-08-01 21:38:41 · 881 阅读 · 0 评论 -
RocketMQ原理分析(一)
RocketMQ(1)-架构原理RocketMQ(1)-架构原理RocketMQ是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ的特点是纯JAVA实现;集群和HA实现相对简单;在发生宕机和其它故障时消息丢失率更低。一、RocketMQ专业术语先讲专业术语的含义,后面会画流程图来更好的去理解它们。Producer消息生产者,位于用户的进程内,Producer通过NameServer获取所有Broker的路由信息,根据负载均衡策略选择将消息发到哪个Broker,然后原创 2021-08-01 21:36:50 · 316 阅读 · 0 评论 -
三分钟搞定mybatis多数据源(读写分离)---dynamic-datasource-spring-boot-starter
1.引入依赖: dynamic-datasource-spring-boot-starter <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.4.0..原创 2021-08-01 21:34:06 · 817 阅读 · 0 评论 -
3分钟学会使用AOP完成日志记录
1.相关概念AOP核心概念1、横切关注点对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点2、切面(aspect)-》(通知+切点)类是对物体特征的抽象,切面就是对横切关注点的抽象。通知+切点意思就是所有要被应用到增强(advice)代码的地方。(包括方法的方位信息)3、连接点(joinpoint)-》(被拦截的方法)被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截的方法,实际上连接点还可以是字段或者构造器4、切入点(point原创 2021-07-25 21:53:37 · 960 阅读 · 0 评论 -
简单封装Spring的NamedParameterJdbcTemplate
由于在项目中想用Spring的NamedParameterJdbcTemplate,但又想写的sql查询简单一点,少一些,所以封装了Sql命名查询。使用此工具,主要是让where条件的查询及排序和分页简单点,现在使用的是mysql。一、SqlBuffer查询对象封装(现在只能select语句的封装)import java.util.HashMap;import java.util.Map;public class SqlBuffer { /** * 空格原创 2021-07-22 10:38:39 · 517 阅读 · 0 评论 -
dynamic-datasource-spring-boot-starter 源码解析
dynamic-datasource 源码分析源码地址分析:自动配置 首先,这是一个SpringBoot启动器,所以我们先从spring.factories入手。 发现帮我们自动配置了DynamicDataSourceAutoConfiguration 查看DynamicDataSourceAutoConfiguration配置类。 先看看比较重要的注解 @EnableConfigurationProperties(DynamicDataSourceProper...原创 2021-07-18 21:23:31 · 1926 阅读 · 1 评论 -
SpringBoot2.X-Valid & Validated
一.前言当提供一个接口对外提供服务时,数据校验是必须需要考虑的事情。很多时候,必须在每个单独的验证框架中实现完全相同的验证。为了避免在每一层重新实现这些验证,许多开发人员会将验证直接捆绑到他们的类中,用复制的验证代码将它们混杂在一起。这个JSR将为JavaBean验证定义一个元数据模型和API。二.Valid 参数校验Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。JSR 303..原创 2021-07-11 19:36:30 · 253 阅读 · 0 评论 -
springBoot集成guava cache实现本地缓存
1.前言在整合guava实现限流中我们使用guava--ratelimiter实现了单机限流,本篇我们整合guava实现本地缓存.2.整个guava cache实现本地缓存2.1 引入依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId>原创 2021-07-07 21:59:26 · 3209 阅读 · 0 评论 -
springBoot集成guava实现限流--ratelimeter
关于限流的几种方案和算法可以看我们之前的的博客:限流的几种方案和限流算法1.前言Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。2.springBoot集成r原创 2021-07-07 21:44:30 · 1216 阅读 · 1 评论 -
Spring Security梳理
2021最新Spring Security知识梳理一、SpringSecurity 框架简介Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。 正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authoriz原创 2021-06-27 21:44:18 · 419 阅读 · 0 评论 -
几种志框架:Log4j Log4j2 SLF4J logback和Apache Commons Logging的比较
作为Java开发人员,对于日志记录框架一定非常熟悉。而且几乎在所有应用里面,一定会用到各种各样的日志框架用来记录程序的运行信息。而对于一个成熟的Java应用,这个是必不可少的。在开发和调试阶段,日志可以帮助我们更快的定位问题;而在应用的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通常很多企业会通过收集日志信息来对系统的运行状态进行实时监控预警。总体概览image.png目前的日志框架有JDK自带的logging,log4j1、log4j2、logback ,这些框架都自己定制了.原创 2021-06-20 19:12:37 · 1087 阅读 · 6 评论 -
5分钟学会SpringBoot整合nacos做注册中心和配置中心
1.运行服务端nacos官网地址1.下载nacos-server2.解压下载的文件,并进入解压后的nacos-data目录,删除derby-data目录。3.进入nacos/bin 执行命令: sh startup.sh -m standalone3.查看最后打印出来的start.out文件4.访问控制台服务端启动完毕2.nacos做配置中心 和 注册中心2.1 引入maven依赖 <!-- 配置中心的依赖 --> <dependency>原创 2021-06-15 22:32:43 · 481 阅读 · 0 评论 -
RocketMQ实战(3) -事务消息
RocketMQ实战(3) -事务消息干干净净没有故事,一个酷字贯穿一生。springBoot快速整合rabbitMQ。话不多少,上才艺~1.生产者方面1.1 定义监听器------执行本地事务和事务会查:@RocketMQTransactionListener@Slf4jpublic class TransactionListener implements RocketMQLocalTransactionListener { @Override public RocketMQ原创 2020-10-16 10:05:43 · 420 阅读 · 2 评论 -
RocketMQ实战(2)-springBoot整合RabbitMQ-- 使用rocketMQTemplate
RocketMQ实战(2) springBoot整合RabbitMQ-- 使用rocketMQTemplate在RocketMQ实战(1)中使用原生api进行了简单的操作,本节我们使用rocketMQTemplate简化相关操作,这也是开发过程中常用的,话不多讲,上才艺。1.创建springBoot项目,并引入一下依赖 <dependency> <groupId>org.apache.rocketmq</groupId> <artifa原创 2020-10-15 21:01:25 · 1258 阅读 · 2 评论