
java
文章平均质量分 64
香港胖仔
LiaoNing Technical University Information and Compute Science
展开
-
149、disruptor精通篇
Disruptor为什么这么快Disruptor不使用锁,通过内存屏障和原子性的CAS操作替换锁锁机制: 悲观锁:读写的时候都严格加锁,高并发下锁竞争问题严重,性能低下。 乐观锁:读的时候不加锁、写的时候才加锁;性能有所提高,但是会引起读写不一致的问题。缓存基于数组而不是链表,用位运算替代求模。缓存的长度总是2的N次方,这样可以用位运算i&(length-1) 替代i%length去伪共享,CPU的缓存一般是以缓存行为最小单位的,对应主存的一块相应大小的单元;当前...原创 2020-12-25 16:14:20 · 600 阅读 · 0 评论 -
148、JAVA并发编程讲解2
1、ReentranLock的构造函数可以传入一个boolean参数,用来指定公平/非公平模式,默认是false非公平的。非公平的效率更高。2、Lock的其他方法 tryLock() 尝试获得锁,返回true/false tryLock(timeout,unit) 在给定的时间内尝试获得锁 isFair() 是否为公平锁 isLocked() 当前线程是否持有锁 lock.getHoldCount() 持有锁的数量,只能...原创 2020-12-10 11:00:49 · 391 阅读 · 0 评论 -
147、java并发编程粗略讲解
最近博主学习了一下java并发编程的相关课程,在这里跟各位童鞋粗略地分享一下java并发编程的底层逻辑。谈到并发,博主在刚刚毕业的时候,做过一个用spring executor service 结合java mail service异步发送邮件的一个需求,一个邮件模板要发送给N个人。但是发邮件需要调用stmp服务器,就导致这中间的过程比较缓慢。为了用户体验友好,就将这个操作做成了多线程异步去处理。这里想说并发的场景是在多个线程去访问一个资源的时候,会出现并发的问题。为了处理并发情况下,多原创 2020-12-07 15:01:09 · 240 阅读 · 0 评论 -
146、爬取某博某条热搜的详细数据。
今天是20201101。博主表示在今天第一次真正的用上了5G信号,好开心。移动的5G信号真的爽。随时随地起飞。这周周二的时候,有个小姐姐来找我帮忙爬取一些微博的数据。作为一个程序员大哥,而且是大哥,辛亏不是大叔。这件小事肯定是当仁不让的呀。虽然没有什么把握,但是这么厉害的小姐姐怎么说也要答应呀。回家后,调研了半天,制定了如下的方案1、上网百度,百度上面和csdn上面的大佬都说要模拟微博登录,但是博主按照上面的方式去搞,怎么都登录不了,一直返回system error 。看样是接口调通原创 2020-11-01 12:05:20 · 1154 阅读 · 0 评论 -
145、disruptor无锁消息队列
disruptor无锁消息队列,使用ringbuffer来实现无锁消息队列正常多线程访问访问同一个资源的时候是需要进行加锁的,如synchronized方法。但是使用synchronized方法的时候会使cpu进行等待,在高并发的情况下会消耗大量的cpu资源。为了解决这个问题,使用无锁消息队列+共享指针的方式。解决了多线程访问同一个资源的加锁问题和多线程之间复制数据导致效率低下的问题(共享指针)上图为ringbuffer的数据结构,底层的数据结构为数组结构,在..原创 2020-10-26 11:57:48 · 556 阅读 · 0 评论 -
136、springcloud-bus 系统的飞行状态
今天来讲解一下springcloud中的bus 消息总线的功能,结合springcloud-config 配置中心,可以在系统的运行过程中,动态地更改一个微服务的状态例如端口号,服务名称,或者其他的信息。1、首先需要在github上面创建一个配置项目2、(1) 在配置中心的application.yml文件中,设置github上面配置文件的地址# 服务名称...原创 2020-04-20 14:46:37 · 196 阅读 · 0 评论 -
135、springcloud分布式配置中心的搭建
1、分布式配置中心,需要用到github或者gitlab作为配置文件的存储地址作者这里使用github作为配置文件的存储地址首先需要在github上面,创建一个属于自己的项目,其次在这个项目里面创建bootstrap.yml配置文件来修改和指定,当前用户输入到哪里了。2、在bootstrap.yml配置文件中填写上github的仓库路径和用户名、密码# 服务名称spring...原创 2020-04-15 10:11:09 · 191 阅读 · 0 评论 -
135、springcloud zipkin+Sleuth 链路监控
springcloud-zipkin 链路监控用于监控请求的调用链路,访问量,成功或者失败的次数,反映app的健康状态。为之后的springcloud 配置中心打好基础。下面讲解Zipkin+Sleuth的使用过程1、Sleuth具有跟踪收集请求的调用链路和信息发送给zipkin server进行统计的功能,sleuth结合springcloud使用的时候,需要先下载启动zipki...原创 2020-04-13 11:05:27 · 275 阅读 · 0 评论 -
134、springcloud-zuul网关的使用
springcloud-zuul网关的使用1、使用idea创建springcloud项目的时候选择eureka-client和zuul这两种组件2、确保pom.xml的maven依赖文件中含有springcloud-zuul的依赖 <dependency> <groupId>org.springframework.clou...原创 2020-04-09 10:39:49 · 153 阅读 · 0 评论 -
134、springcloud-hystrix-dashboard监控组件的使用
这一节来讲springcloud-hystrix-dashboard监控组件的使用,在微服务的场景下,一个矩形的app会有很多的服务,如何对这些服务进行监控,时间追踪服务的健康状态就变得特别重要,springcloud-hystrix-dashboard就提供了监控微服务状态的功能,并且将服务的状态以报表的形式,进行展示下面就讲解一下hystrix-dashboard的使用1、在s...原创 2020-04-06 14:44:10 · 280 阅读 · 0 评论 -
133、springcloud-hystrix 服务监控的告警机制
Springcloud-hystrix组件可以用来进行服务的熔断和降级,当一个服务出现问题的时候,也可以在降级的方法里面通过发送短信和邮件的形式来进行告警下面来讲解,如何在hystrix的降级方法里面,进行发短信通知,进行告警的操作1、首先要引入springboot和redis集成的相关依赖包 <dependency> ...原创 2020-04-05 11:30:47 · 1198 阅读 · 0 评论 -
132、springcloud-fegin-hystrix远程调用上的降级
这是今天的第三篇文章,继续讲解springcloud-hystrix熔断降级相关的知识上一节讲解了hystrix熔断的应用这一节讲一下hystrix降级的应用,何为降级,当远程调用的服务宕机了的时候,404或者500这个时候就使用到了降级处理,下面讲解一下hystrix中如何使用降级,并且和fegin进行结合1、springcloud的配置文件中打开fegin对hystrix的支持...原创 2020-04-04 18:02:56 · 360 阅读 · 0 评论 -
131、springcloud-hystrix熔断降级
今天的第二篇文章,下午16:27写的,spring-cloud-hystrix熔断降级之前写过高并发下的nginx的性能优化,熔断降级这个词则是在高并发的时候由于访问量比较高,超出了其中某一个服务的承载上限时,为了使后续的请求能够被成功处理,而不导致整个系统宕掉,而采取的保护服务的措施。下面来讲解spring-cloud-hystrix的使用方法1、导入spring-cloud...原创 2020-04-04 16:47:11 · 170 阅读 · 0 评论 -
130、springcloud-feign-client的使用以及微服务调用的结构
春城无处不飞花,寒食东风御柳斜,今天是2020年4月4日,清明节,又是举国悼念在covid-19新冠肺炎疫情中,为了国家和同胞抵御病毒而牺牲烈士的一天。博主在这里向医生哥哥和姐姐们还有护士们,致敬,白衣天使,救死扶伤,无比伟大。小时候一直想,长大要做一个对社会有用的人,为建设和谐美好的社会贡献一份小小的力量。不知道多久才能让朋友们感受到自己的微薄之力。下面进入正题,spr...原创 2020-04-04 11:37:28 · 505 阅读 · 0 评论 -
129、springcloud-eureka-client微服务的互相调用
这里要写的是springboot 订单模块的服务去调用商品模块的服务进行下单操作下面首先进行订单模块的代码编写1、将order订单模块注册到注册中心eureka: client: serviceUrl: defaultZone: http://localhost:8181/eurekaspring: application: name: eure...原创 2020-04-02 11:48:54 · 405 阅读 · 0 评论 -
128、springcloud实践eureka-client
eureka-client 是一个springboot服务,会完成相应的业务模块功能的时候,也会与eureka的注册中心进行心跳通信1、springboot的主类package com.springcloudtest.eurekaclient;import org.springframework.boot.SpringApplication;import org.sprin...原创 2020-04-02 11:20:49 · 189 阅读 · 0 评论 -
127、springcloud 实践
今天博主来讲一下spring cloud的实践,人家说学习一门新的技术,刚开始总是非常容易的,因为刚开始学的都是皮毛,都很容易入门,越往后面学习,越难。所以深入一门技术,做好,比所有技术都普遍了解更厉害。1、创建eureka 注册中心eureka 注册中心服务的application.yml文件...原创 2020-04-02 11:02:43 · 1217 阅读 · 0 评论 -
126、高并发下的限流配置(nginx使用令牌桶)
本篇来继续讲解Nginx高并发下的优化策略,可以配置的参数主文件配置参数worker_processes 2; #调整到与CPU数量一致events {worker_connection 65535; #每个worker最大并发连接数}下面设置nginx的令牌桶进行限流的功能http模块下面设置请求的进入速度,下图是每秒5个请求进入(每秒分发5个令牌) ...原创 2020-03-20 00:42:23 · 1619 阅读 · 1 评论 -
124、nginx实现源地址哈希法,最小连接数法,fair 算法
根据获取客户端的IP地址,通过哈希函数计算得到一个数值用改数值对服务器列表大小进行取模运算,得到的结果就是客服端要访问服务器的序号可以保证同一ip的请求被打到固定的机器上,可以解决session问题#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log n...原创 2020-03-18 09:35:26 · 1104 阅读 · 0 评论 -
123、Ngnix负载均衡demo
在疫情期间博主在家发奋学习,除了学习了Flutter之外,博主还学习了Nginx高并发下的优化策略首先博主在阿里云上面租了三台机器,一台作为Nginx服务器,另外两台跑着java的springboot程序需要使用Nginx将请求转发到另外两台服务器上面,1、nginx服务器上面的nginx.conf配置文件#user nobody;worker_processes ...原创 2020-03-17 22:02:25 · 353 阅读 · 0 评论 -
109、Dubbo的插件机制,使用JDK SPI的服务发现功能
Dubbo Extension机制SPI Service Provider Interface 是JDK内置的一种服务提供发现功能,一种动态替换发现的机制。想要在运行时动态地给一个接口添加实现,只需要添加一个实现即可。项目的结构如下图所示:1、接口类是HelloInterface,两个实现类分别是ImageHello 和 TextHello2、在META-INF目录下建立...原创 2019-06-22 17:11:47 · 169 阅读 · 0 评论