云原生技术体系
文章平均质量分 63
Java、分布式、微服务
splendor.s
这个作者很懒,什么都没留下…
展开
-
SQL语句的加锁方式 - Mysql 锁机制
SQL语句的加锁方式 - Mysql 锁机制原创 2023-03-07 10:47:14 · 705 阅读 · 0 评论 -
雪花算法(snowflake)实现分布式ID的生成
先分析一下:雪花算法简单描述:一、 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0,是符号位,始终为0,不可用。二、41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时间进行排序。注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 -...原创 2019-08-27 14:50:33 · 968 阅读 · 1 评论 -
Redis主从复制、哨兵、Cluster三种模式
Redis作为缓存的高效中间件,在我们日常的开发中被频繁的使用,今天就来说一说Redis的四种模式,分别是「单机版、主从复制、哨兵、以及集群模式」。可能,在一般公司的程序员使用单机版基本都能解决问题,在Redis的官网给出的数据是10W QPS,这对于应付一般的公司绰绰有余了,再不行就来个主从模式,实现读写分离,性能又大大提高.单机版Redis:单机版的Redis就比较简单了,基本90%的程序员都是用过,官网推荐操作Redis的第三方依赖库是Jedis,在SpringBoot项目中,引入...原创 2021-04-26 15:41:50 · 197 阅读 · 0 评论 -
SpringBoot Redission实现分布式锁
为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。分布式锁应该具备条件互斥性 防止死锁 可重入 非阻塞 锁的力度目前我所知道的有3种方式通过 数据库实现排他锁 -- 性能比较差 不推荐 通过 zookeeper 实现 -- 目前还不了解 通过 redis(Redisson)实现 -- 通过设置过期时间 来控制锁的获取及释放Redisson 原理Redisson分布式锁的实现是基于实现R..原创 2020-11-04 16:12:54 · 469 阅读 · 0 评论 -
分布式消息队列 -- kafka基础知识相关
Kafkas是什么? Kafka是一个分布式消息队列, 也是一个开源消息系统,由Scala语言写成。kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外 kafka集群有多个kafka实例组成,每个实例(server)称为broker。无论是kafka集群,还是consumer都依赖于zookeeper集群保存一些mate信息,来保证系统可用性。在通常的流式计算中,kafka 一般用来缓存数据,而Storm或者Spark...原创 2020-08-13 10:40:02 · 624 阅读 · 0 评论 -
redisson与aop解决接口幂等性
1.自定义防重复提交的注解和切面2.在需要验证的接口上增加注解(一般是创建、修改的接口)3.以每次调用的 用户唯一标识(userId或者sessionId或者token)+ 请求路径+参数 作为key,value任意值都可以,缓存起来(redis或本地缓存),并设置一个合适的缓存失效时间。4.每次调用时根据key判断,缓存是否存在,存在则抛出异常或提示,不存在则执行业务逻辑原创 2020-07-28 14:26:16 · 792 阅读 · 0 评论 -
SpringBoot 多数据源以及拦截分页
SpringBoot整合Mybatis、Druid和PageHelper 并实现多数据源和分页。其中SpringBoot整合Mybatis请参考前文,这里就不过多说明了。重点是讲述在多数据源下的如何配置使用Druid和PageHelper。Druid介绍和使用在使用Druid之前,先来简单的了解下Druid。Druid是一个数据库连接池。Druid可以说是目前最好的数据...原创 2019-11-15 10:10:42 · 651 阅读 · 0 评论 -
SpringBoot中解决Redis的缓存穿透、缓存击穿、缓存雪崩案例
缓存穿透指的是一个缓存系统无法缓存某个查询的数据,从而导致这个查询每一次都要访问数据库。常见的Redis缓存穿透场景包括:查询一个不存在的数据:攻击者可能会发送一些无效的查询来触发缓存穿透。查询一些非常热门的数据:如果一个数据被访问的非常频繁,那么可能会导致缓存系统无法处理这些请求,从而造成缓存穿透。查询一些异常数据:这种情况通常发生在数据服务出现故障或异常时,从而造成缓存系统无法访问相关数据,从而导致缓存穿透。原创 2023-03-21 19:05:55 · 569 阅读 · 0 评论 -
Spring Boot集成Redisson布隆过滤器案例
布隆过滤器实际上是一个非常长的二进制向量(bitmap)和一系列随机哈希函数。那什么又叫哈希函数呢?哈希函数指将哈希表中元素的关键键值通过一定的函数关系映射为元素存储位置的函数。(HashMap源码)布隆过滤器存储空间和插入/查询时间都是常数Hash函数相互之间没有关系,方便由硬件并行实现布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势布隆过滤器可以表示全集,其它任何数据结构都不能有一定的误判率(常见的弥补措施是:建立一个小的白名单,存储那些可能被误判的元素。原创 2023-06-06 20:26:04 · 901 阅读 · 0 评论 -
@Autowired与@Resource的本质区别
1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。2、@Autowired属于Spring的;@Resource为JSR-250标准的注释,属于J2EE的。3、@Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(re...原创 2019-03-06 16:04:25 · 262 阅读 · 0 评论 -
Spring boot中使用aop详解教程
ioc和aop是spring的两大核心功能模块,功能非常强大,aop为解耦提供了非常优秀的解决方案,而ioc则提供的强大的依赖注入功能现在就以springboot中aop的使用来了解一下aop。一:使用aop来完成全局请求日志处理使用IDEA或者STS的快速创建项目功能,则创建一个springboot的web项目,勾选aop和web,pom.xml文件内容如下:<?xml ...原创 2019-02-27 17:10:55 · 907 阅读 · 0 评论 -
Nacos 注册中心核心能力以及现实原理解析
Nacos核心能力解析原创 2023-03-08 14:29:57 · 908 阅读 · 0 评论 -
SpringBoot 实现通用导出excel文件案例
springboo结合反射技术实现通用导出Excel文件原创 2023-03-09 10:11:08 · 678 阅读 · 0 评论 -
mybatis中ResultMap的使用
从SQL查询结果到领域模型实体 通过JDBC查询得到ResultSet对象 遍历ResultSet对象并将每行数据暂存到HashMap实例中,以结果集的字段名或字段别名为键,以字段值为值 根据ResultMap标签的type属性通过反射实例化领域模型 根据ResultMap标签的type属性和id、result等标签信息将HashMap中的键值对,填充到领域模型实例中并返回resultMap1、属性说明id属性 ,resultMap标签的标识。 type属性 ,返回值的全限定类名,或类原创 2020-12-16 14:22:19 · 809 阅读 · 0 评论 -
springboot集成validation校验包案例
首先添加maven依赖,可进行maven仓库。原创 2020-06-04 15:35:22 · 4795 阅读 · 1 评论 -
SpringBoot注解小结
一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让springBoot扫描到Configuration类并把它加入到程序上下文。@Configuration 等同于spring的XML配置文件,俗称配...原创 2019-04-17 15:14:45 · 236 阅读 · 1 评论 -
SpringBoot集成mybatis plus强大的条件构造器queryWrapper、updateWrapper
先安利一波官方文档的链接位置,官方文档说的很详细。条件构造器关系介绍介绍 :上图绿色框为抽象类abstract 蓝色框为正常class类,可new对象 黄色箭头指向为父子类关系,箭头指向为父类wapper介绍 :Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解原创 2020-10-13 10:15:53 · 1785 阅读 · 0 评论 -
SpringBoot集成mybatis案例
springboot继承mybatis案例原创 2020-03-24 16:52:39 · 835 阅读 · 1 评论 -
SpringBoot 整合MySQL以及Spring Data JPA
首先创建一个springboot项目,默认加入web依赖,之后使用Spring Date JPA和MySql依赖使用spring date jpa 需要添加以下依赖:<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artif...原创 2019-03-01 11:36:38 · 424 阅读 · 0 评论 -
druid+mybatis 多数据源及读写分离的处理
现如今复杂的业务系统,一般会将数据库按业务拆开,比如产品系统的数据库放在product db中,订单系统的数据库放在order db中...,然后,如果量大了,可能每个库还要考虑做读、写分离,以进一步提高系统性能,下面就来看看如何处理:核心思路:配置多个数据源,然后利用RoutingDataSource结合AOP来动态切不同的库。存在一下几个问题:1、配置文件中,多数据源的配置节...原创 2019-02-19 17:59:10 · 2821 阅读 · 1 评论