- 博客(22)
- 收藏
- 关注
原创 Redis的分布式锁实现原理
分布式锁实现原理: 通常在单体架构的时候,解决多线程问题,可以直接使用synchronized,或者lock锁,只要锁保证时同一把锁,此时就能够解决代码的线程问题。 Lock lock=new ReentrantLock(); @Autowired private RedisTemplate redisTemplate; @Override public void lockTest() { lock.lock(); Str
2020-11-04 13:27:10
563
1
原创 分布式服务中html样式不能导入
spring: thymeleaf: servlet: content-type: text/html cache: false mode: LEGACYHEML5<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</a
2020-11-04 12:40:38
159
原创 SpringCloud中Eureka组件原理,以及为什么重启服务之后,会访问不到数据
SpringCloud中的Eureka组件原理: Eureka是SpringCloud的一个服务注册组件,其中包含两个组件:Eureka Server (注册中心) 和 Eureka Client (服务提供者、服务消费者)。其主要作用是注册和消费,心跳续约,服务剔除。 当Eureka运行时,服务的生产者会将它的ip地址,端口号,预约的配置,和访问路径等信息传递到Eureka的注册资源表(cconcurrentHashMap)中,之后会将注册资源表中的信息同步到ReadWrite;而在Eu
2020-11-03 17:17:07
1311
原创 垃圾回收算法
java垃圾回收机制:java的一大优点,就是引入了垃圾回收机制,避免了程序员需要对每个对象进行手动的垃圾回收,但是也会造成一个小麻烦,就是不能自主的进行垃圾回收(虽然System.gc()可以启动垃圾回收,但是由于java语言规范,不一定会执行)。常用的垃圾回收算法:1.标记-清除,直接将需要清除的垃圾进行标记,当内存不足时,对标记过的垃圾进行回收。优点:对象不需要移动;缺点:清除效率低,而且会产生大量不连续的内存碎片,如果此时大对象进入,会由于内存不足,而导致触发多次GC2.标记-复制,将整个
2020-11-02 10:26:29
142
原创 ElasticSearch常用api来进行查询
封装查询条件的常用api1QueryBuilders.matchQuery("name", searchMap.get("keywords")).operator(Operator.AND)//对查询内容进行分词 后查询//查询域对象为name, 查询内容为searchMap.get("keywords") operator不写的时候默认为or,结果数据取并集 此时设置为and,结果取交集2QueryBuilders.termQuery("brandName", searchMap.g
2020-10-29 13:02:31
586
原创 线程池底层原理和七大参数
**线程池的底层:**是使用一个阻塞队列将线程存放进去,使用的时候调用阻塞队列中的线程;阻塞队列: LinkedBlockingQueue,底层是一个链表,空参构造默认队列容器是Integer类型的最大值;SynchronousQueue,是一个不存储元素的阻塞队列,当有消费者和生产者连接的时候,才能够使用线程。ArrayBlockingQuene,底层是一个数组的阻塞队列常用的线程池:(工具类中的三种线程池,但是线程池一般都是自己定义,工具类中的线程池或多或少的有瑕疵)Executors.n
2020-10-24 09:28:53
1072
原创 JWT组成三部分
头部一个json字符串,包含当前令牌名称,以及加密算法,{"typ":"JWT","alg":"HS256"}使用base64加密eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9载荷一个json字符创,包含一些自定义的信息,{"sub":"1234567890","name":"John Doe","admin":true}使用base64加密eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4
2020-10-23 15:47:10
8105
原创 虚拟机中不能通过ifconfig来查看ip地址
输入vim /etc/sysconfig/network-scripts/ifcfg-ens33(vi后加空格),如果后面设置了网络ip地址,把网段改为当前网段,否则无法连接
2020-10-18 19:58:19
711
原创 在linux中ElasticSearch安装过程中jdk版本问题
由于es和jdk是一个强依赖的关系,所以再新的版本的ElasticSearch压缩包中包含有自带的jdk,但是当我们的虚拟机中已经安装了jdk之后,就会发现启动es的时候优先去找的是虚拟机中已经装好的jdk,此时如果jdk的版本不一致,就会造成jdk不能正常运行。直接vim elasticsearch-7.4.0/bin/elasticsearch加配置#=======添加配置解决jdk版本问题=====export JAVA_HOME=/opt/elasticsearch-7.4.0/jdk
2020-10-18 10:31:34
4145
4
原创 分享mysql注意点
都是我遇到的问题,如果有其他的,多多指教使用mysql注意点:1,like中的%代表0个或者多个字符,_表示一个字符2,mysql优化distinct,底层是group by,并与order by联合使用3,显示一段数据的前50行,使用limit 0,504,查看数据表的存储计划,show create table 表名5,numeric decimal用来存储金钱,提高精度,一般使用的是decimal(9,2),‘9’表示数据用于存储值的总的小数位数一共有9位,‘2’表示存储小数点后的位数,
2020-10-18 10:11:51
167
原创 RabbitMQ的高级特性
RabbitMQ的高级特性在项目中,有一些无需即时返回且耗时的操作,我们可以将其提取出来,做异步处理,从而节省服务器的请求响应时间,从而提高系统的吞吐量。这就需要使用到MQ,而常见的RabbitMQ就是重中之重,之前说了他的几个常见的用处:异步解耦削峰填谷今天给大家介绍几个RabbitMQ的高级特性:1.消息可靠性投递在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。confirm
2020-10-15 18:05:08
237
原创 RabbitMQ的五种重要的工作模式和基础代码
消息中间件概述MQ全程message Queue,即消息队列,消息队列是应用程序和应用程序之间的通信方法。RabbitMQ的使用简单队列,直接提供者提供,消费者接受在工作队列中,每一个消费者默认平均分配提供者提供的消息。存在一个问题:两个消费者的处理能力不同工作队列的"能者多劳模式",由于性能不一样,通常需要配置成性能好的,快速消费,而不是等待性能慢的来消费.发布/订阅队列模式,每个消费者监听自己的队列。中间需要交换机来实现功能(BuiltinExchangeType.FANOUT
2020-10-14 18:44:42
184
原创 SpringCloud框架中的GateWay组件
Gateway-概述当我们使用微服务的时候,有时候我们不仅需要调用一个微服务,可能我们同时需要发送多个请求到多个服务器来完成一个请求。如果直接将我们微服务的ip暴露给用户,那么无疑是降低顾客的体验,而且如果面对一些服务ip更换,也会造成很多麻烦,通常这种时候,我们将这些多个请求都集成在一个服务器里面,这个就被称为网关。网关就是系统的入口,封装了应用程序的内部结构,为客户端提供统一服务。并且一些与业务本身功能无关的公共逻辑可以在这里实现,诸如:认证,鉴权,监控,缓存,负载均衡等常用的网关解决方案有:Ng
2020-10-12 13:34:20
482
原创 负载均衡
负载均衡1.什么是负载均衡负载均衡是一种集群技术,当请求过来后,服务器会根据自身的算法来决定到底访问集群中的哪台服务器,将请求分担到不同的服务器上,提高了业务处理能力,保证了业务的高可靠性。2.负载均衡的分类服务器端负载均衡负载均衡算法集成在服务器端,请求发出去时,到达某个服务器后,才知道要去访问谁客户端负载均衡负载均衡算法集成客户端,请求发出去时,就已经知道要访问谁了3.常见的负载均衡分类dubbo客户端负载均衡, 消费者在发出请求后,就已经知道要访问谁了n
2020-10-11 20:15:04
105
原创 SpringCloud的Hystrix组件
Hystrix-概述• Hystix 是 Netflix 开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败(雪崩)。• 雪崩:一个服务失败,导致整条链路的服务都失败的情形Hystix 主要功能• 隔离 线程池隔离 信号量隔离• 降级:异常,超时• 熔断• 限流其中,需要我们去重点掌握的是降级,熔断和限流.1.Hystrix的降级降级的使用是为了解决代码的异常和一些网络抖动产生的连接超时,返回一些能让用户识别的数据,让用户有更好的体验。使用之前需要导入
2020-10-11 17:01:50
120
原创 SpringCloud中的负载均衡的实现:Ribbon和Fegin
nginx-----服务端负载均衡dubbo的负载均衡策略; 轮询,随机,最小活跃数,一致性哈希—客户端负载均衡 Dubbo内置了4种负载均衡策略:RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。活跃数指调用前后计数差。使慢的 Provider 收到更少请求,因为越慢的 Provider 的调用
2020-10-11 11:55:21
302
原创 springCloud的Eureka理解,以及和zookeeper的差异
springCloud的Eureka理解,以及和zookeeper的差异Eureka介绍微服务就是将项目的各个模块拆分为可独立运行、部署、测试的架构设计风格。而在SpringCloud中要实现微服务的架构,就离不开Eureka的使用.Eureka就相当于是zookeeper的一个注册中心,负责管理server和client的连接.Eureka 是 Netflix 公司开源的一个服务注册与发现的组件 。• Eureka 包含两个组件:Eureka Server (注册中心) 和 Eureka Clie
2020-10-08 18:20:00
497
1
原创 redis中的Cluster集群
redis中的Cluster集群现状Cluster集群结构设计现状redis的主从复制,虽然可以实现部分代码的高可用,但是也会产生一些新的问题.如果redis提供的服务OPS达到10W/s,当前业务的OPS已经达到10W/s,或者内存单击容量达到256G,而当前业务的内存容量却要1T,此时在使用主从复制,就不是太合适,在主从复制的过程中,会造成大量的数据丢失,而且此时如果在使用主从复制,也会消耗大量的CPU性能,得不偿失.--------此时,我们可以使用redis的内置Cluster集群的方式来解决
2020-09-29 19:35:33
113
原创 redis的哨兵工作原理
redis的哨兵工作原理哨兵简介哨兵的作用哨兵的工作原理阶段一:监控阶段阶段二:通知阶段阶段三:故障转移阶段哨兵简介哨兵 (sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。哨兵的作用哨兵在进行主从切换过程中经理三个阶段:监控 ,不断的检查master和slave是否正常运行;master存活检测、 master与slave运行情况检测通知(提醒),当被监控的服务器出现问题时, 向
2020-09-29 19:10:27
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人