- 博客(284)
- 收藏
- 关注
原创 【多线程】CountDownLatch 和 CyclicBarrier:如何让多线程步调一致?
CountDownLatch 和 CyclicBarrier 是 Java 并发包提供的两个非常易用的线程同步工具类,它们的区别是:CountDownLatch 主要用来解决一个线程等待多个线程的场景,同时它的计数器不能循环利用,一旦计数器减到0,再有线程调用 await() ,该线程会直接通过。而 CyclicBarrier 是一组线程之间相互等待,CyclicBarrier的计数器是可以循环利用的,而且可以自动重置
2020-08-10 11:52:50 238 1
原创 【Linux】Linux中755权限是什么意思
Linux系统的权限一般是用 1-3 位数字表示文件所有者的权限, 4-6位数字代表同组用户的权限, 7-9 位数字代表其他用户的权限。具体权限是由数字来表示的。
2020-08-04 08:30:56 9124
原创 【多线程】CAS乐观锁
CAS(Compare and Swap 比较并替换),是一条CPU并发原语。它是乐观锁的一种实现方式,也是一种轻量级锁。
2020-07-30 09:17:03 1383
原创 【Redis】redis数据类型及应用场景
在多线程环境下,由于上下文的切换,数据可能出现不一致的情况或者数据被污染,我们需要保证数据安全,所以想到了加锁。
2020-07-26 21:27:13 268
原创 无状态登录
有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如Tomcat中的session。
2020-07-10 17:18:52 322
原创 【Spring Cloud】配置中心-Config
在分布式系统中,由于服务数量巨多,每个服务的粒度相对较小,而且每个服务都需要必要配置信息才能运行。为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。
2020-07-10 17:13:29 188
原创 【Spring Cloud】网关-gateway(2.x)
在2.x版本中,zuul的升级一直跳票,springcloud最后自己研发了一个网关代替Zuul,那就是SpringCloud Gateway。
2020-07-10 16:49:29 414
原创 【Spring Cloud】网关 - Zuul(1.x)
不管是来自于客户端(PC或移动端)的请求,还是服务内部调用。一切对服务的请求都会经过Zuul这个网关,然后再由网关来实现 鉴权、动态路由等等操作。Zuul就是我们服务的统一入口。
2020-07-10 16:38:19 212
原创 【Spring Cloud】负载均衡-Ribbon
Spring cloud 的服务有两种消费者,ribbon 是其中之一,它是一个负载均衡客户端,可以很好的控制http 和 tcp 的一些行为。
2020-07-09 09:41:48 345
原创 【Spring Cloud】注册中心-Euraka
eureka是springcloud Netflix微服务套件中的一部分,是一个服务注册和发现模块。
2020-07-09 09:19:48 420
原创 【JVM】类是怎么加载的?
系统加载class类型的文件主要有三步:加载-连接-初始化。连接过程又分为三步:验证-准备-解析。那么各步骤又是怎样执行一个过程呢?
2020-07-09 08:55:28 342
原创 【Spring Cloud】微服务和Spring Cloud
SpringCloud = 分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的几何体,俗称微服务全家桶。
2020-07-09 08:43:58 319
原创 【MySQL】一条查询语句在MySQL内部的执行过程
我们几乎每天都在写SQL语句,当我们写了一条查询语句,会得到一个查询结果,但是它在MySQL内部是怎样的一个执行过程呢?
2020-07-08 16:29:00 890
原创 【多线程】创建多少线程才是合适的
在Java领域,实现并发程序的主要手段是多线程,使用多线程还是比较简单的。但是使用多少个线程却是个困难的问题。经常有人问:各种线程池的线程数量调整成多少是合适的?那我们应该如何设置合适的线程数呢?
2020-07-05 10:43:16 1404
原创 feign.RetryableException: Read timed out executing POST http://......
问题描述SpringCloud微服务之间远程调用报错超时。feign.RetryableException: Read timed out executing POST http://......原因及解决方案这是一个http请求报错超时,因为feign的调用分为两层:Ribbon的调用和Hystrix的调用,所以我们在配置文件中添加超时配置即可。高版本的Hystrix默认是关闭的,可以不设置。#hystrix的超时时间hystrix: command: default:
2020-06-20 15:47:56 5080
原创 【多线程】线程的生命周期
搞懂生命周期中各个节点的状态转换机制。通用的线程生命周期初始状态:指的是线程已经被创建,但是还不允许分配CPU执行。(这里的被创建,仅仅是在编程语言层面被创建,而在操作系统层面,真正的线程还没有创建)可运行状态:指的是线程可以分配CPU执行。这种状态下,真正的操作系统线程已经被成功创建了,所以可以分配CPU执行。当有空闲的CPU时,操作系统会将其分配给一个处于可运行状态的线程,被分配到CPU的线程的状态就转换成了运行状态。运行状态的线程如果调用一个阻塞的API(例如以阻塞方式读文件)或等待某个
2020-06-07 21:05:37 649
原创 JMeter安装教程
下载注意:JMeter安装之前要配置好Java环境。1.下载地址:http://jmeter.apache.org/download_jmeter.cgi2.下载之后无需安装,直接解压压缩包。目录如下:配置环境变量1.新增系统环境变量,变量值为JMeter解压的路径2.编辑CLASSPATH变量,添加上(注意和已有内容之间用英文版分号隔开)%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%
2020-05-24 21:29:11 314 3
原创 【Linux】完美解决 nginx 的权限问题( Permission denied)
问题描述Linux安装nginx过程中,执行./confiture命令时,报错Permission denied(如图)解决办法nginx的目录都是root用户,所以执行命令时提升一下权限即可。sudo ./configure...
2020-05-05 08:50:16 4062
原创 【Linux】CentOS 7 安装Redis
1 下载安装包官网地址:https://redis.io/download2 安装2.1 首先,把下载好的安装包通过远程工具放到虚拟机中,进入 cd /opt 目录中查看2.2 解压安装包tar -zxvf redis-5.0.8.tar.gz解压后出现文件夹redis-5.0.8:2.3 进入Redis目录cd redis-5.0.82.4 在redis-5...
2020-04-27 09:13:19 253
原创 【JVM】浅谈对OOM的认识
一张图区分Exception和Error1、java.lang.StackOverflowError这是栈溢出错误,如果一个线程所需用到栈的大小>配置允许最大的栈大小,那么jvm就会抛出StackOverflow。一般出现这个问题是因为程序里有死循环或递归调用所产生的。由于深度递归,抛出此错误以指示应用程序的堆栈已耗尽。【举例】2、java.lang.OutOfMemoryEr...
2020-04-26 20:50:38 329
转载 形象化理解 SpringBoot + SpringCloud
大厦里的每间办公室都是一个容器,对应着一个docker容器,空办公室对于用户来说是没有任何意义的,只有里面入住了企业(Spring boot),跑了各种程序,才叫一个微服务结点。房间号可以理解成容器的ip和端口,企业名理解成微服务的服务名,如果一家企业规模较大,需要租多间办公室才可以,那就是多个容器共同组成一个高可用性的微服务组群。大厦有一本企业列表,有哪些企业提供哪些服务,对应的房间号是什么...
2020-04-16 20:23:54 285
原创 配置 springboot 的 run dashboard
1. run dashboard是什么可以看到,这里可以同时显示多个springboot项目,非常方便。默认情况下,idea的 run dashboard 是关闭的,当检测到你有多个springboot项目时会弹出提示框,询问是否打开。2. run dashboard如何打开在你的idea项目目录中,有一个 .idea目录:进入 .idea 目录中,有一个workspace.xml:...
2020-04-15 14:29:25 319
原创 【Linux】 CentOS 7 安装 RabbitMQ
1. 安装Erlang1.1 在线安装yum install esl-erlang_17.3-1~centos~6_amd64.rpmyum install esl-erlang-compat-R14B-1.el6.noarch.rpm1.2 离线安装1.下载好 erlang 安装包以后,上传至虚拟机。2.依次执行命令:1)rpm -ivh esl-erlang-17.3-1....
2020-04-14 11:42:11 229
原创 【Linux】CentOS 7 安装Redis
安装1.下载安装包:官网下载建议上传到home下:/usr/local/leyou2.解压 tar -xvf redis-4.0.9.tar.gz3.编译安装 mv redis-4.0.9 redis cd redis make && make install配置1.修改安装目录下的redis.conf文件vim redis.conf修改如下配置:#...
2020-04-13 08:33:13 131
原创 ZooKeeper启动报错 JAVA_HOME is incorrectly set
zookeeper在启动服务端的时候会基于java环境启动,所以在启动的时候会检测 jdk 是否安装。而在我们开发者的入门过程中,都会设定一下 %JAVA_HOME%的系统变量。在 zkService启动的时候,会找%JAVA_HOME%\bin\java.jar 进行java基础环境的启动。所以,如果没有配置的话,就要配置。zkService 启动的时候,到底做了些什么?1、启动加载zkE...
2020-03-13 19:12:20 752
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人