- 博客(28)
- 收藏
- 关注
原创 Springcloud---线程隔离及断路器-Hystrix
Hystrix主要能为我们解决哪些问题服务降级:当一个服务出现宕机、超时、资源不足或者出现异常时,可以执行一个降级的方法,调用降级业务逻辑,返回一个托底的数据/响应。线程隔离:提供了一个Hystrix的线程池,以及信号量机制,帮助我们管理容器的线程池,或者实现与容器的线程池隔离。熔断:当一个请求的失败率,达到一定阈值的时候,启动熔断机制。请求缓存:缓存当前请求的信息,下次调用直接返回。在customer里面导入pom依赖<dependency> <
2020-12-05 14:22:21
472
原创 springcloud--服务间的负载均衡-Robbin
1.导入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency>这样复制一个搜索的启动类主要端口号设置的时候不要和其他服务重复建一个config包 配置整合RestTemplate和Robbin@B
2020-12-01 22:09:12
171
原创 spingcloud--Eureka的高可用(集群的搭建)
为什么要搭建eureka集群如果说我们的程序正在运行,突然Eureka宕机了。如果服务调用方访问过一次服务提供方,那么Eureka的宕机不会影响到功能的正常使用。如果服务调用方没有访问过服务提供方,那么Eureka宕机会导致服务不可用。间接说明了EurekaClient在本地是有缓存的,缓存了服务地址列表。1.复制一个自己搭建的服务注册中心(搭建服务注册中心在博客下方)在搭建的client修改一下yml文件 客户端和搜索都改一下root:root是你搭建的账户和密码没有可以不写eurek
2020-12-01 21:50:10
200
原创 spingcloud--Eureka的安全性(登录验证)
1.导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>2.编写配置类 在服务中心下建一个config包@EnableWebSecuritypublic class cofig extends WebSecu
2020-12-01 21:37:05
171
原创 spingcloud--Eureka服务的搭建
1.创建父项目指定打包方式为pom<packaging>pom</packaging>指定springcloud版本号:<properties> <java.version>1.8</java.version> <spring.cloud-version>Hoxton.SR8</spring.cloud-version></properties><dependencyMana
2020-12-01 21:25:50
84
原创 多对一链表查询(mybatis)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.springhomework.dao.lianbiao"><!-- 多对一的查询--><
2020-11-30 22:30:08
230
原创 RabbitMq避免消息的重复消费
重复消费消息,会对非幂等行操作造成问题重复消费消息的原因是,消费者没有给RabbitMQ一个ack解决方案为了解决消息重复消费的问题,可以采用Redis,在消费者消费消息之前,现将消息的id放到Redis中,id-0(正在执行业务)id-1(执行业务成功)如果ack失败,在RabbitMQ将消息交给其他的消费者时,先执行setnx,如果key已经存在,获取他的值,如果是0,当前消费者就什么都不做,如果是1,直接ack。极端情况:第一个消费者在执行业务时,出现了死锁,在setnx的基础上,再给ke
2020-11-26 21:51:43
1763
原创 RabbitMq--路由模式( Routing)
下面展示一些 内联代码片。public class Routing { @Test public void publish() throws IOException, TimeoutException { //1. 获取连接对象 Connection getconnection = RabbitMQUtil.getconnection(); //2. 创建连接通道对象 Channel channel = getconnecti
2020-11-25 22:22:15
288
原创 RaabitMq--广播模式( Publish/Subscribe fanout )
下面展示一些 内联代码片。public class Fanout { @Test public void publish() throws IOException, TimeoutException { //创建连接对象 Connection getconnection = RabbitMQUtil.getconnection(); //创建管道 Channel channel = getconnection.createCh
2020-11-25 22:20:42
163
原创 RabbitMq-work模式
下面展示一些 内联代码片。public class WorkTest { private static String queryname="WORK"; @Test public void publish() throws IOException, TimeoutException { //获取connection Connection connection = RabbitMQUtil.getconnection(); //创建ch
2020-11-25 22:19:11
228
原创 Redis的集群
一台机器模拟集群的多台机器 通过端口号区分最好mkdir创建一个文件夹 在文件夹下配置# docker-compose.ymlversion: "3.1"services: redis1: image: daocloud.io/library/redis:5.0.7 restart: always container_name: redis1 environment: - TZ=Asia/Shanghai ports: - 7001
2020-11-24 22:35:53
91
原创 redis-----哨兵模式
配置docker-compose.yml文件version: "3.1"services: redis1: image: daocloud.io/library/redis:5.0.7 restart: always container_name: redis1 environment: - TZ=Asia/Shanghai ports: - 7001:6379 volumes: - ./conf/redis1.co
2020-11-24 22:17:44
99
1
原创 Redis的主从架构
1.yml文件最好mkdri 一个文件夹 在文件夹里面配置 docker-compose.ymlversion: "3.1"services: redis1: image: daocloud.io/library/redis:5.0.7 restart: always container_name: redis1 environment: - TZ=Asia/Shanghai ports: - 7001:6379 volu
2020-11-24 21:57:45
66
原创 redisTemplate 和 stringRedisTemplate的区别
两者关系是StringRedisTemplate继承RedisTemplate。1.RedisTemplate使用的是JdkSerializationRedisSerializer 存入数据会将数据先序列化成字节组然后再存入Redis数据库。StringRedisTemplate使用的是StringRedisSerializer。注!(1)当你的Redis数据库里面本来存的是字符串数据或者是你要存取的数据就是字符串类型数据的时候,那么你就使用StringRedisTemplate即可;(2)但是如
2020-11-24 21:44:58
339
原创 redis在linux基本使用
1.安装redisDocker-Compose安装version: '3.1'services: redis: image: daocloud.io/library/redis:5.0.7 restart: always container_name: redis environment: - TZ=Asia/Shanghai ports: - 6379:6379使用redis-cli连接Redisdocker ps -a 查
2020-11-24 21:41:32
284
原创 RabbitMq Hellowword 形式 点到点
消费者监听队列 生产者发送会被消费者直接获取点到点public class HelloWorldTest { //生产者发布消息 @Test public void pubish() throws IOException, TimeoutException { //获取连接对象 Connection getconnection = RabbitMQUtil.getconnection(); /
2020-11-24 21:26:33
94
原创 RabbitMq基础
RabbitMQ安装1.配置yml文件 放在docker容器里version: "3.1"services: rabbitmq: image: daocloud.io/library/rabbitmq:management restart: always container_name: rabbitmq ports: - 5672:5672 - 15672:15672 volumes: - ./data:/var/lib/
2020-11-24 20:56:28
104
1
原创 RabbitMQ连接工具类
这三个属性通过 ip地址:http://ip地址:15672factory.setUsername(“test”);factory.setPassword(“test”);factory.setVirtualHost("/test");增减用户用户名为test 密码test 可以任意起 给个权限虚拟主机为 /test 前提: 需要在linux系统下载rabbitmq配置镜像 默认访问15672public class RabbitMQUtil { private static C
2020-11-24 20:40:54
835
原创 用Redis的管道减少网络延迟
因为在操作Redis的时候,执行一个命令需要先发送请求到Redis服务器,这个过程需要经历网络的延迟,Redis还需要给客户端一个响应。如果我需要一次性执行很多个命令,上述的方式效率很低,可以通过Redis的管道,先将命令放到客户端的一个Pipeline中,之后一次性的将全部命令都发送到Redis服务, Redis服务一次性的将全部的返回结果响应给客户端。!!!!这一种效率低耗时间长!!!public class TestRedisDemo6 { // Redis管道的操作 @
2020-11-20 22:08:56
168
原创 使用连接池操作Redis,避免频繁创建和销毁链接对象消耗资源
使用连接池操作Redis,避免频繁创建和销毁链接对象消耗资源public class TestRedisDemo5 { @Test public void pool2() { //1. 创建连接池配置信息 GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(100); // 连接池中最大的活跃数
2020-11-20 22:03:18
586
原创 Jedis 以字符串的形式 存取对象 借助 Jackson
Jackson工具类在博客下方public class TestRedisDemo4 { @Test public void setStringJackSon() throws Exception { //1. 连接Redis Jedis jedis = new Jedis("127.0.0.1", 6379); //2.1 准备key(String)-value(User) String stringKey="jackson
2020-11-20 22:02:12
140
原创 Jedis 以字符串的形式 存取对象 借助 FastJson 结合封装的工具类使用
FastJson在博客下方public class TestRedisDemo3 { // 存储对象 - 以String形式存储 @Test public void setStringFastJson(){ //1. 连接Redis Jedis jedis = new Jedis("127.0.0.1", 6379); //2.1 准备key(String)-value(User) String strin
2020-11-20 22:00:45
161
原创 jedis 以字节数组的形式 存取对象 借助SerializationUtils 工具类 将对象转为 字节数组 将字节数组转为对象
jedis 以字节数组的形式 存取对象 借助SerializationUtils 工具类 将对象转为 字节数组 将字节数组转为对象pojo对象记得序列化下面展示一些 内联代码片。public class TestRedisDemo2 { // 存储对象 - 以byte[]形式存储在Redis中 @Test public void setByteArray(){ //1. 连接Redis服务 Jedis jedis = new Jedis
2020-11-20 21:57:31
278
原创 redis 结合 jedis的使用
记得启动redis 如果连接超时 记得关闭防火墙public class TestRedisDemo1 {@Testpublic void set(){//1. 连接RedisJedis jedis= new Jedis(“127.0.0.1”,6379);//2. 操作Redis - 因为Redis的命令是什么,Jedis的方法就是什么jedis.set(“name”,“李四”);//3. 释放资源jedis.close();}@Testpublic void get(){//1
2020-11-20 21:53:30
163
原创 redis常用方法
代码:public class ExtDemo1 {Jedis jedis;@Beforepublic void doBefore(){jedis = new Jedis(“192.168.184.134”, 6379);}@Testpublic void test1() throws InterruptedException { System.out.println("清空数据:"+jedis.flushDB()); System.out.println("判断某个键是否
2020-11-20 21:49:46
185
原创 Json工具类----Jackson
代码部分public class JacksonUtils {private final static ObjectMapper obejectmapper=new ObjectMapper();private JacksonUtils(){}private static ObjectMapper getInstance(){ return obejectmapper;}/** * javaBean、列表数组转换为json字符串 */public static Strin
2020-11-20 21:46:39
194
原创 Json工具类---FastJson
1.导入 pom依赖 <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.4</version>2.代码部分/阿里fastjson自定义工具类public class FastJsonUtils {private static final SerializeConfig config;static
2020-11-20 21:41:50
122
原创 JSR303校验
JSR303校验导入pom包<groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>pojo@validatad // 数据校验用的常用方法
2020-11-19 21:17:57
69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人