自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 CAS共享锁机制分析

CAS共享锁机制分析什么是共享锁?AQS原理概述共享锁逻辑分析(Semaphore角度分析AQS共享逻辑)共享锁获取共享锁释放共用方法什么是共享锁?能被多个线程同时获得的锁,为共享锁。也称之为读锁。与互斥锁(写锁)互斥。AQS原理概述其核心是一个volatile关键字修饰的int类型的state变量,以及一个由双向指针组成的链表队列。队列再初始化的时候,会CAS生成一个head空节点,后继被阻塞的节点会添加到这个空节点的后面,并相互建立pre和next指针。而state变量在不同的锁中,使用方式

2022-03-27 15:36:10 999

原创 算法基础 - 位图

算法基础 - 位图什么是位图规则实现位运算: 加减乘除什么是位图功能:就是可以做出一个集合,如果数字范围能确定(最大值),就可以用位图来收集数字,表示存在或者不存在。好处:极大的压缩空间。规则与(&)0 & 0 = 00 & 1 = 01 & 0 = 01 & 1 = 1或(|)0 | 0 = 00 | 1 = 11 | 0 = 11 | 1 = 1异或(^)0 ^ 0 = 00 ^ 1 = 1

2022-02-08 01:18:19 400

原创 线程的可见性、有序性、一致性

线程的可见性、有序性、一致性volatile一个小程序三层缓存线程的乱序执行原子性volatile 和 synchronized的区别volatile一个小程序https://gitee.com/zxj8524210/my-thread-test/blob/master/src/main/java/org/example/App1.java说明:每一个线程从内存中读取一个变量,读到的都是一个副本。在当前线程修改变量的值,只会影响到当前线程从内存中读取到的副本的值,并不会影响到内存中本身的变量值

2022-01-10 00:54:29 615

原创 线程大乱记

什么是程序程序是一个落到磁盘上的一个可执行文件,鼠标双击这个文件可以使这个文件运行。比如QQ,每次双击的时候都可以打开一个新的登陆页面,这些登陆页面就相当于一个一个进程。什么是线程专业角度来讲,进程叫做资源分配的基本单位,线程在进程的内部,叫做调度执行的基本单位,多个线程共享同一个进程里面的资源。单核cup设定多线程有意义吗?答:有意义。因为有一些线程在执行过程中 可能在等在资源 或者 sleep,此时等待的过程中是不消耗cpu算力的,切换到其他线程执行的时候使用cpu算力,才能更好的压榨cpu。

2022-01-04 23:19:33 449

原创 时间日期处理

时间日期处理SpringBoot中接收日期格式处理SpringBoot中接收日期格式处理get请求,在实体类字段上添加@DateTimeFormat(pattern = "yyyy/MM/dd")注解controller @GetMapping("/getDate") public String getDate(DateGetEntity entity){ System.out.println(entity); return entity.toSt

2021-12-04 02:05:17 795

原创 Apollo配置中心

Apollo配置中心

2021-06-21 00:33:51 21588 1

原创 k8s测试镜像

k8s测试镜像Java代码DockerfileJava代码MainController@RestController@RequestMappingpublic class MainController { @Autowired private AddService addService; @Value("${server.port}") private String port; @GetMapping("/port") public Stri

2021-06-05 00:31:47 523

原创 k8s安装1.15

系统初始化修改主机名称#在两台主机上分别修改主机名称hostnamectl set-hostname k8s-masterhostnamectl set-hostname k8s-node01在两台机器上分别编辑 vim /etc/hosts 文件,添加内容172.30.66.9 k8s-master172.30.66.10 k8s-node01master和node安装依赖包yum install -y conntrack ntpdate ntp ipvsadm ipset jq

2021-05-13 08:10:58 262

原创 定时任务

定时任务实现定时任务有哪些方案分布式定时任务幂等性实现xxl-job 安装以及简单操作实现定时任务有哪些方案Thread.sleep方法public class ThreadTimeTask { public static void main(String[] args) { //创建一个任务用于执行定时任务 Runnable runnable = new Runnable() { int count=0;

2021-04-17 13:12:07 194

原创 lamdba streamAPI

lamdba streamAPI什么是streamstream的特性stream的运行机制Stream的创建(source)Stream的中间操作Stream的终止操作演示什么是streamStream是用来处理一组数组、集合的API使用它的原因有两个:代码简洁函数式变成写出的代码简洁且意图明确,使用stream接口让你从此告别for循环。多核友好,JAVA函数式编程使得编写并行程序从未如此简单,你需要的全部就是调用一下paralle()方法。stream的特性不是数据结构,没有内部存储

2021-04-04 12:20:00 246 1

原创 Dockerfile解析

Dockerfile解析镜像的创建Dockerfile里应该写什么简单案例相关命令图解构建过程Dockerfile指令总结指令比喻镜像的创建镜像的创建可以分为两种方式:镜像提交,docker commit的方式。docker commit命令可以把容器打包成一个镜像,还可以把容器内的数据也打包到镜像中。镜像构建,Dockerfile文件+docker build的方式。根据自己的需要(需求)自定义一个镜像。Dockerfile里应该写什么在哪个基础镜像上开始构建描述作者的信息定义

2021-01-03 15:59:56 290

原创 Docker

Docker使用安装配置阿里加速Dorcker的基本概念Docker的执行流程Docker的常用命令Docker快速部署安装操作系统:CentOS 7阿里镜像:https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.526c1b11MCdpwT按照阿里的镜像步骤安装即可:# step 1: 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persiste

2021-01-03 01:35:33 336

原创 minio客户端使用记录

minio客户端使用记录背景安装并运行连接minio服务器一些简单的命令mc实现文件上传变为shell脚本背景上一篇写的使用“Linux使用shell脚本实现目录创建与文件传输”的方式实现上传minio服务器的方案,领导说看着不太舒服,想要换成minio客户端的形式,然后我对这次实践做一个记录。安装并运行我这里使用的是docker的方式:[root@zxj ~]# docker pull minio/mc运行拉取下来的镜像,创建容器:[root@zxj ~]# docker run -it

2020-12-29 01:18:12 1668

原创 Linux使用shell脚本实现目录创建与文件传输

Linux使用shell脚本实现目录创建与文件传输前言需求分析与难点实现SSH无密码登录安装Expect动态创建目录发送文件至目标服务器前言本人是个java开发,第一次接触devops系统的开发,对shell脚本并不是特别的熟悉,因此实现的方式可能比较愚蠢,大神勿喷,如果有更好的建议,欢迎留言。需求devops开发(二开),在pipeline执行过程中,拉取代码后进行sonar扫描。要求sonar扫描后生成pdf文件后,上传至minio文件服务器并且提供下载功能。分析与难点在旧版本中,生成的

2020-12-20 22:19:32 6999

原创 K8S使用笔记

K8S使用笔记kubeadm/kubelet/kubectl区别启动全局命令部署相关命令tomcat-deploy.yml文件简要说明通过yml文件部署工作负载serviceRinetd 的使用基于NFS实现集群文件共享文件提供方节点服务器节点服务器映射pod容器目录资源限定kubeadm/kubelet/kubectl区别kubeadm是kubernetes集群快速构建工具kubelet运行在所有节点上,负责启动POD和容器,以系统服务形式出现kubectl:kubectl是kubenetes命令

2020-12-13 13:58:21 1045

原创 K8S的基本概念

K8SK8S能做什么K8S的基本概念K8S能做什么K8S全称:kubernetes它是一个集群容器编排工具,是基于Docker的。k8s的职责:自动化容器的部署和复制随时扩展和收缩容器的规模容器分组Group,并且提供荣期间的负载均衡实时监控,即使故障发现,自动替换。K8S的基本概念首先上图是一个完整的K8S集群,集群内包含了三台宿主机(上图中每一个方块都是一个物理的宿主机),这三台服务器中又分为两种角色,分别为 master 和 node 。k8s master:主服务器(图

2020-12-08 22:08:54 796 1

原创 DevOps Jenkins安装 maven git整合

DevOps Jenkins安装 maven git整合什么是DevOps?DevOps能做什么?Jenkins安装Jenkins插件安装Jenkins从github上拉取代码Jenkins拉取代码后打包什么是DevOps?在网上搜索了很多资料,说了一大堆高大上的词汇,看着也是云里雾里的。其实概念很简单:就是持续集成/持续测试,或者说是 自动化的运维部署DevOps能做什么?我们的服务一般都是跑在云服务器上,是基于容器化的。从开发到项目上线要经历 需求-> 开发 -> 测试 ->

2020-11-13 00:33:06 458

原创 SpringCloud - zuul网关常见问题解决方案

SpringCloud - zuul网关常见问题解决方案token不向后传递的问题。(单体 -> 微服务 改造)老项目改造中路由的问题动态路由(不同用户路由到不同服务)token不向后传递的问题。(单体 -> 微服务 改造)在老项目改造微服务过程中,建立zuul网关,发送的"Cookie", "Set-Cookie", "Authorization" 这三个请求头会被自动过滤,但是有些旧的服务需要这些请求头信息。源码: private Set<String> sensi

2020-08-11 01:33:32 1684

原创 Spring Cloud :7 . Config 配置中心

Spring Cloud :7 . SpringCloud Config 配置中心配置中心以及应用场景微服务加载配置文件流程SpringCloud Config +GitHub单机搭建通过Config Server 访问git上面的配置文件微服务从 Config Server 拉取 Github 上的配置文件SpringCloud Config 配置命名规则微服务整合 SpringCloud Config 加载远程配置SpringCloud Config 微服务手动刷新与自动刷新配置手动热更新配置中心以及

2020-07-27 02:11:19 297

原创 Spring Cloud :6 . Sleuth+zipkin链路追踪 、Admin健康检查、邮件通知

Spring Cloud :6 . Sleuth+zipkin链路追踪 、Admin健康检查、邮件Sleuth的使用zipkinSpring Cloud Admin健康检查Server端搭建Client端搭建Sleuth的使用最原始的链路追踪,先要在需要监控的服务里添加依赖,这里演示值添加在consumer端和provider端:<!-- 引入sleuth依赖 --> <dependency> <groupId>org.springframework.cl

2020-07-19 21:35:43 803

原创 Spring Cloud :5 . zuul的使用和搭建

Spring Cloud :5 . zuul、Sleuth+zipkin链路追踪 、Admin健康检查、邮件介绍zuul搭建如果要求自己实现一个zuul思路业务网关读写分离介绍在微服务的调用中,会出现以下的问题:客户端请求多个微服务,增加了客户端复杂性,每个微服务都要做用户认证,限流等,避免和多个微服务打交道的复杂性。有跨域问题,不在同一个域。认证复杂,每个服务都要独立认证,服务要求的权限不一致。难以重构。因为微服务被客户端调用着,重构难以实施。为了解决这些问题,我们可以在 用户 和 微

2020-07-17 23:16:59 203

原创 Spring Cloud :4 . Hystrix 降级、熔断、隔离

Spring Cloud :4 . Hystrix 降级、熔断、限流简介自己写一个Hystrix的思路简介在项目上线后,微服务之间相互调用,不可能一点问题都不出。如果出了问题,请求超时,应该怎么去解决?首先请求超时可能会发生在两个阶段:在客户端和服务器端建立连接的时候。服务器端在处理业务逻辑的时候。自己写一个Hystrix的思路 /** * * try{ * * 1.发起向服务方的请求 * 1.1 判断是否超

2020-07-15 02:57:57 1052 1

原创 Spring Cloud :3 . RestTemplate和OpenFeign

Spring Cloud :3 . RestTemplate和OpenFeignRestful风格API为什么要是用Spring Cloud基于Restful的远程调用?RestTemplate的常用APIRestful风格APISpring Cloud是基于HTTP协议的,远程调用都是使用HTTP的URL进行调用的,这样对于URL的定义就显得尤为重要,服务的提供方不能经常的更换,Restful风格API就是对URL暴露的一种约束。RestTemplate 和 OpenFeign 都可以使用Restf

2020-07-11 02:26:24 3202

原创 Spring Cloud :2 . Netflix Ribbon

Spring Cloud :2 . Netflix Ribbon负载均衡Ribbon负载均衡Ribbon内置的负载均衡策略负载均衡负载均衡分为软件负载均衡和硬件负载均衡:软件负载均衡:nginx,lvs硬件负载均衡:F5同时软件负载均衡又分为两种:服务端负载均衡 和 客户端负载均衡。 什么是客户端负载均衡呢?所谓客户端负载均衡,就是把所有需要被负载的服务IP地址、端口号、服务存放在客户端,客户端在调用的时候,直接定义算法(轮询、随机、权重 …)来对其中一台服务发起调用。 什么是服务端

2020-07-08 22:26:39 177

原创 Spring Cloud :1 . Netflix Eureka

Spring Cloud :Netflix EurekaEureka的作用Eureka Server集群的搭建第一种方式第二种方式Eureka Server的拓展配置Eureka的CAP原则Eureka Client发起注册Eureka的作用随着人们使用网络比重的日益增加,高并发已经的问题已经不可避免,在微服务体系中,往往需要把项目 根据 需求或者业务拆分成多个服务,项目中每个模块都可能是通过调用多个服务组合而成的。那么在微服务 分而治之 的思想中,如何实现解决高并发的呢?分布式:不同的服务 分

2020-07-06 16:48:01 442

原创 2. zookeeper - 选主原理,数据一致性原理,watch,简单API

zookeeper - 选主原理,数据一致性原理,watch,简单API扩展性可靠性有序性watch扩展性zookeeper是一个分布式协调的工具,具有扩展性,可靠性,时序性。站在微服务架构的角度上来说,每种服务都是不同的角色负责不同的功能,zookeeper有三种角色,分别是 leader,follower,observer。其中leader和follower是主从模型,而主从模型可以做读写分离。leader可以触发增删改查,follower和observer可以触发read操作和转发write操

2020-07-03 15:47:29 336

原创 1. zookeeper - 安装,添油加醋的官网翻译

zookeeper简介,安装,原语前言设计目标数据模型和层次名称空间节点 -> 临时节点 /永久节点 -> 顺序节点条件更新和监视担保简单的API实现安装前言在一些业务场景中,比如redis的击穿和雪崩的问题,解决方案会使用到 分布式锁 。而redis的分布式锁实现需要调用sentnx命令创建对象,该对象创建成功则表示获得锁,创建失败则表示获取锁失败。这种锁的创建方式有两个弊端:死锁。调用线程挂了,会导致锁无法得到释放,其他线程无法获取导致阻塞形成死锁。可以给锁添加过期时间来解决。锁提

2020-07-03 15:47:08 542

原创 3. zookeeper - 分布式协调

zookeeper - 分布式协调统一配置文件分布式锁统一配置文件就是很多的service在不同的物体位置,他们之间需要协作,相互传递数据等,zookeeper是来协调他们的。分布式配置:   在不同的主机里都启动了service,但是启动的时候需要配置需要从哪里来呢?我们可以在本地写配置文件,但是随着集群的规模越来越大,如果有某一个配置项需要修改的话,那么运维人员需要登录每一台主机修改每一个配置文件。   如果有一个地方,是所有service都能去独立访问的,那么只需要修改这一个位置其他人就都

2020-07-03 15:46:33 162

原创 6.Redis - 持久化 rdb 和 aof 详解

Redis-Redis持久化 rdb 和 aof 详解持久化rdb前置知识(可以先跳过)管道进程之间数据隔离单机持久化rdbredis中的rdb是如何实现的?fork()调用rdb的触发rdb的优点与弊端rdb知识图总览aof大纲aof的发展历程重写bufferredis作为内存数据库持久化redis在作为缓存和数据库的区别在于,缓存一般都是有期限的热数据,非全量数据,数据可以丢失,追求的是急速。redis作为数据库的时候,数据是绝对不能丢的。数据存在内存当中就会产生 掉电易失 的问题。所以redis

2020-06-23 12:14:06 553

原创 1.Redis - 诞生历程以及NIO原理

Redis-Redis介绍以及NIO原理

2020-06-23 12:13:17 652

原创 9.Redis - 缓存击穿,穿透,雪崩解决方案

Redis - 缓存穿透,击穿,雪崩解决方案缓存击穿缓存雪崩缓存穿透拓展:redis分布式锁缓存击穿在微服务项目中,我们会有很多的Client去访问redis,这些Client就是我们写的service。因为业务需求,service会去访问作为缓存的redis(缓存一些热数据),而在redis后面还有数据库(MySQL)。而这些服务可能会被其他的service调用,组成了一个微服务群体,再往前就是Nginx反向代理 负载均衡服务器或者 LVS服务器,再Nginx或者LVS之前就是互联网上面的用户。

2020-06-12 23:28:09 342 1

原创 5.Redis - 管道,消息订阅,事务,布隆过滤器,缓存回收

Redis-Redis管道,消息订阅,事务,布隆过滤器,清理策略管道Pub/Sub应用场景以及命令演示:聊天记录架构扩展:redis的事务常用命令原理:演示:redis的事务为什么不支持回滚?布隆过滤器安装什么是缓存穿透?布隆过滤器的原理管道如果Client想对redis进程发送很多的命令,其实每发送一个命令都要走一次数据传输给redis执行并返回,返回之后才能线性执行第二个命令。因此有了管道的概念,把多次数据传输压缩成一次数据传输,在redis中就是一次性发送多条命令,redis会返回多条结果。就像

2020-06-12 22:02:01 448

原创 8.Redis- 集群:AKF拆分(y轴和z轴),twemproxy,predixy,cluster

Redis- 集群:AKF拆分,CAP,主从复制,哨兵机制

2020-06-11 23:28:25 1327 2

原创 2.Redis-Redis的安装

Redis-Redis的安装安装环境安装步骤详细安装步骤总结安装环境操作系统:CentOS 7.xRedis版本:Redis5.x下载地址:http://download.redis.io/releases/redis-5.0.5.tar.gz安装步骤详细 [root@z8524210 /]# mkdir soft //建立一个soft目录,用来安装Redis [root@z8524210 /]# cd soft/ //进入到目录并且下载Redis,这里我已经下载好了

2020-05-31 23:39:58 242 1

原创 JVM之常用参数整理

JVM之常用参数整理常用参数设置垃圾回收器Parallel常用参数CMS常用参数G1常用参数非常用参数常用参数-Xmn10M :Young区的大小10M-Xms50M : Heap的初始容量50M-Xmx50M :Heap的最大容量50M-Xss10M:栈空间10M-XX:+PrintCommandLineFlags : 打印程序配置参数-XX:+PrintGC :打印GC信息-XX:+PrintGCDetails : 打印GC详细信息-XX:+PrintG

2020-05-22 22:00:18 526 1

原创 JVM之G1浅析

JVM之G1浅析前置基础概念Card TableCSet(Collecation Set)RSet(RememberedSet)Humongous对象G1结构Young区和Old区如何回收?G1的特点G1的GC分类三色标记算法RSet和SATB算法的配合前置基础概念Card Table跟各种垃圾回收器没有太大的关系,主要有用于优化分代模型快速扫描garbage,在可达性分析判断eden区某个对象是否还有引用指向,如果指向eden区对象引用在old区,那么在判断eden区的某个对象是否存活,就需要遍历整

2020-05-21 22:54:15 1739

原创 JVM之arthas在线排查工具

JVM之arthas在线之在线排查工具启动arthas总结几个常用的命令1.jvm命令:2.thread命令:3. dashboard命令:4.heapdump 命令5.jad命令:6.redefine命令:7.SC命令:启动arthasarthas的github地址:https://github.com/alibaba/arthasarthas官方文档:https://alibaba.github.io/arthas/index.html点开github上arthas的中文文档按照文档的步骤一

2020-05-20 21:48:19 990

原创 JVM之对象总结

JVM之对象总结对象的创建过程?对象在内存中存储布局?对象头具体包括什么?对象怎么定位?对象怎么分配?Object o = new Object();在内存中占用多少字节?对象的创建过程?1.class loading 把class文件加载到内存2.class linking(verification验证,preparation准备,resolution解析)verification:验证class文件的格式是否正确preparation:给静态变量付默认值resolution:把符号引用替换

2020-05-17 16:02:24 182

原创 JVM之Runtime Data Area和JVM Instructions分析

JVM之Runtime Data Area和JVM Instructions分析结构图包含哪些组件以及作用局部变量表结构图包含哪些组件以及作用一个java文件在javac指令后编译成class文件会经过 load、link、initializing后进入到runtime data arearuntime data area包含很多的组件,他们分别是:heap(堆)JVM stacks (JVM栈):每一个线程都有自己的JVM stack,而JVM stack里面又可以包含很多的frame(栈

2020-05-17 00:24:19 298

原创 ThreadLocal源码分析

ThreadLocal源码分析概要ThreadLocal之set方法ThreadLocal之get方法ThreadLocal之ThreadLocalMap内部类概要1.ThreadLocal是线程内共享资源2.存储的资源实际上是存储在当前线程内部的map集合里面3.存储的map的key是ThreadLocal对象如何证明,看下面源码分析ThreadLocal之set方法 public void set(T value) { //获取当前线程 Thread t =

2020-05-15 21:26:03 114

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除