自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sid小杰的博客

转载注明出处

原创 【二】Java 序列化与反序列化

参考:Java 序列化的高级认识 一、概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 二、JDK类库...

2020-06-02 21:41:25 12 0

原创 【一】Java IO流分类及各类简介(如何将控制台输出定向到一个文件、怎么关闭多层包装的流)

一、按数据流的方向分类 1.输入流 通常类的名字中有Input或者reader 2.输出流 通常类的名字中有output或者writer 二、按处理数据单位分类 1.字节流 传输过程中,传输数据的最基本单位是字节的流。 字节流的类通常以stream结尾。 字节流在操作时本身不会用...

2020-06-02 19:22:50 22 0

转载 分布式一致性算法之Paxos

2pc、3pc、paxos、raft都是解决分布式系统中的一致性问题的。 一、两个类型的一致性(操作原子性与副本一致性) 1.2pc、3pc协议用于保证属于多个数据分片上的操作的原子性。这些数据分片可能分布在不同的服务器上,2PC、3PC协议保证多台服务器上的操作要么全部成功,要么全部失败。 ...

2020-05-14 18:05:12 48 0

原创 分布式事务之2pc、3pc

2pc、3pc、paxos、raft都是解决分布式系统中的一致性问题的。 一、两个类型的一致性(操作原子性与副本一致性) 1.2pc、3pc协议用于保证属于多个数据分片上的操作的原子性。这些数据分片可能分布在不同的服务器上,2PC、3PC协议保证多台服务器上的操作要么全部成功,要么全部失败。 ...

2020-05-14 11:01:13 70 0

原创 分布式之cap、base理论、flp不可能原理、一致性问题、共识算法

一、CAP理论 CAP理论:在一个分布式系统中,最多只能满足C、A、P中的2个。 CAP含义: C:Consistency 一致性:同一数据的多个副本是否实时相同。all nodes see the same data at the same time A:Availability 可用...

2020-05-13 14:01:48 84 0

原创 【四】rabbitmq高可用集群及镜像队列

一、目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 二、RabbitMQ可以通过三种方法来部署分布式集群系统 cluster: 不支持跨网段,用于同一个网段内的局域网 可以随意的动态增加或者减少 节点之间需要运行相同版本的Rab...

2020-05-12 17:11:25 44 0

原创 【三】rabbitmq消费者ACK机制message acknowledgment

一、队列关于ACK的设置 消费者在声明队列时,可以指定noAck参数,当noAck=false时,RabbitMQ会等待消费者显式发回ack信号后才从内存(和磁盘,如果是持久化消息的话)中移去消息。否则,RabbitMQ会在队列中消息被消费后立即删除它。 二、消费端关于ACK的设置 这个在c...

2020-05-12 11:23:45 47 0

原创 【二】rabbitmq生产者确保消息一定送达

rabbitmq中生产者确保消息一定送达到queue有两种机制:1.事务 2.生产者消息确认机制(publisher confirm) 参考:RabbitMQ之消息确认机制(事务+Confirm) 一、事务 1.使用方法: 事务的实现主要是对信道(Channel)的设置,主要的方法有三个:...

2020-05-11 22:21:42 37 0

原创 【一】rabbitmq原理概述(exchange、queue、channel、connection、vhost)持久化、消息分发

一、架构图 网上找的 二、exchange(交换机) 生产者发消息发往交换机,交换机会自己投递消息到绑定的queue队列 这里有几个点需要注意 1.exchange根据什么规则把消息投递到哪些queue中? exchange有4种类型 direct: 对routing_ke...

2020-05-11 21:46:06 55 0

转载 【十一】消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局

转载:消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局 一、前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储...

2020-05-09 16:18:19 49 0

转载 【十】kafka之为何高性能、监控关注指标

一、kafka为何高性能 1.分区 kafka是个分布式集群的系统,整个系统可以包含多个broker,也就是多个服务器实例。每个主题topic会有多个分区,kafka将分区均匀地分配到整个集群中,当生产者向对应主题传递消息,消息通过负载均衡机制传递到不同的分区以减轻单个服务器实例的压力。 一...

2020-05-09 11:05:01 70 0

转载 【九】kafka延迟队列、重试队列、死信队列

一、延迟队列 实现方案: 在发送延时消息的时候并不是先投递到要发送的真实主题(real_topic)中,而是先投递到一些 Kafka 内部的主题(delay_topic)中,这些内部主题对用户不可见, 然后通过一个自定义的服务拉取这些内部主题中的消息,并将满足条件的消息再投递到要发送的真实...

2020-05-09 10:56:50 121 0

原创 【七】kafka可靠性、有序性、重复消费、丢数据、线程安全

一、哪些情况会造成重复消费 1.生产者挂了重启 场景: 生产者设置的ACK是ALL,及需要所有副本都保存了消息才叫发送成功。 假设生产者发送一条信息,leader已经收到且已经保存了,follower还没来得及同步,leader就挂了。 此时会被认为是发送失败,重发。 而刚好重发的时候...

2020-05-07 17:47:07 62 0

转载 【五】kafka体系架构之消费者客户端概述

这里写自定义目录标题消费组消费端分区分配策略RangeAssignor分配策略RoundRobinAssignor分配策略StickyAssignor分配策略消费再均衡Rebalance弊端:触发再均衡的场景Rebalance1.组成员数量发生变化2.订阅主题数量发生变化3.订阅主题的分区数发生变...

2020-05-07 15:55:59 38 0

转载 【四】kafka体系架构之kafka服务端概述(主题、分区、副本、日志、控制器)

基于kafka 2.11版本 kafka-clients 2.2.2 一、架构图 1.kafka体系架构图 由此可以看到kafka体系架构的组成有如下几部分: 1.producer生产者,发送消息到kafka cluster 2.kafka cluster是由broker组成的集...

2020-05-07 15:00:21 56 0

转载 【二】kafka体系架构之生产者客户端概述

基于2.11版本 一、架构图 由此可以看到kafka体系架构的组成有如下几部分: 1.producer生产者,发送消息到kafka cluster 2.kafka cluster是由broker组成的集群 3.consumer消费者,从kafka cluster中pull拉取消息进...

2020-05-03 22:44:14 76 0

原创 【二十七】redis之结合Lua脚本

一、redis中使用lua脚本的优点 1.减少网络开销,在 Lua 脚本中可以把多个命令放在同一个脚本中运行,只有一次网络开销。 2.原子操作,Redis 会将整个脚本作为一个整体执行,中间不会被其他命令插入。 3.复用性,客户端发送的脚本会存储在 Redis 中,这意味着其他客户端可以复...

2020-04-28 18:21:18 45 0

原创 【二十六】redis之事务、事务特性、与pipeline比较,与Lua脚本比较

一、redis事务的特性 1.原子性 这里的原子性跟mysql的原子性不一样。 redis事务的原子性是说的:一次事务提交的多个命令,要么都不执行(watch发现某个key的值变了则不开始执行),要么所有的命令都执行(一旦开始执行事务,事务中所有的命令都会执行,即使有命令报错了,后面的命令也...

2020-04-28 16:08:45 67 0

原创 【二十五】分布式锁(redlock、redis、zookeeper)

一、分布式锁必须保证的特性 互斥 无死锁 容错 阻塞与非阻塞 可重入 二、如何使用redis实现分布式锁 获取锁 SET key random_val NX PX 30000 释放锁 if redis.call("get",...

2020-04-28 12:08:21 48 0

原创 【二十四】redis之缓存与数据的一致性(DTP)

分布式的数据库保证数据一致性,如果有分布式事务是最好,或者XA这种分布式事务也挺好。 但是这里说的可以粗暴的理解成redis作为缓存使用的时候如何保证redis和mysql中数据的一致性。 一、读操作 读操作都没什么大的分歧,一般都是先读redis,redis没有就读mysql,然后把读出来...

2020-04-26 14:57:21 46 0

原创 【二十三】redis之缓存穿透、缓存击穿、缓存雪崩及解决方案

一、缓存穿透 概念: 一次请求发现数据在缓存和DB中都没有。 通常是恶意攻击 比如:请求一个数据的ID为-1 解决方案: 1.拦截不合法请求 可考虑使用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitMap中,一个一定不存在的数据会被这个bitMap拦截掉,从而避免底层存储系...

2020-04-23 17:03:54 41 0

原创 【二十二】redis之内存淘汰策略和过期策略

一、内存淘汰策略 1.场景 redis的数据会在内存里面,并且有配置设置redis最多能占用多少内存,那就一定存在一个情况:当redis能占用的内存已满,但redis还需要再存新的数据在内存中,那怎么办? 这个就是内存淘汰策略解决的问题 2.配置redis最大占用内存 1.通过配置文件设...

2020-04-23 15:31:57 38 0

转载 【十一】MySQL中InnoDB及索引深入剖析(数据页、记录、页目录、B+树索引、聚簇索引、二级索引、索引优化 转自罗志赟)

InnoDB页 将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。 InnoDB行格式 我们平时是以记录为单位来向表中插入数据的,这...

2020-04-21 10:22:40 81 0

转载 【十】mysql之SQL优化及一条SQL是怎么被执行的(转载罗志赟的)

原文链接:Mysql的SQL优化指北 概述 在一次和技术大佬的聊天中被问到,平时我是怎么做Mysql的优化的?在这个问题上我只回答出了几点,感觉回答的不够完美,所以我打算整理一次SQL的优化问题。 要知道怎么优化首先要知道一条SQL是怎么被执行的 正在上传…重新上传取消 首先我们会连接到...

2020-04-20 17:24:50 31 0

转载 【九】mysql之主从复制(转载)

本文转自深度探索MySQL主从复制原理 启迪云计算-开发工程师 邸小丽 概要 MySQL Replication (MySQL 主从复制) 是什么?为什么要主从复制以及它的实现原理是什么? MySQL 主从复制概念 MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个...

2020-04-20 11:01:32 87 0

原创 【八】MySQL事务之MVCC、undo、redo、binlog、二阶段提交

1.简介 MVCC的全称是“多版本并发控制”。这项技术使得InnoDB的事务隔离级别下执行一致性读操作有了保证。 换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值。 MVCC由于其实现原理,只支持read committed和repeatable read隔离...

2020-04-17 14:45:51 55 0

原创 【七】MySQL之事务ACID、隔离级别

一、事务的属性 1.原子性:事务中的操作要么全部执行,要么全部不执行 2.一致性:事务执行前后,数据完整性没有被破坏 3.隔离性:一个事务操作的结果在何时以何种方式对其他并发的事务操作可见 4.持久性:事务结束后,对数据的修改是永久的 二、事务的隔离级别 查询mysql的事务隔离级别 ...

2020-04-16 16:07:42 133 0

原创 【十三】Java集合总结Queue

一、简介 Queue接口继承了Collection Queue即队列,一般都是FIFO先进先出,优先级队列和 LIFO 队列(或堆栈)例外 不允许插入null值 JDK中并发队列提供了几种队列实现继承自Queue: 1.并发队列ConcurrentLinkedQueue(类) 2.阻...

2020-04-13 15:12:36 19 0

原创 【一】Pinpoint1.8.4编译

1.从github上拉取源码,切换分支到tag 1.8.4 2.下载安装java6 java7 java8 java9 (下不到9,就下11,但是JAVA_9_HOME的环境变量名字不能变) 设置环境变量,并且要设置到path中 3. 4. mvninstall -DskipTes...

2019-10-03 17:47:28 588 0

原创 【四】服务网关之Zuul的使用

参考https://blog.csdn.net/hellozpc/article/details/84144453#3__Spring_Cloud_Zuul_243 一、简介 前面已经启动了服务注册Eurake、启动了两个服务item和order 【一】服务调用之服务A用RestTempla...

2019-09-06 22:25:59 79 0

原创 【三】服务调用之spring cloud feign使用

参考https://blog.csdn.net/hellozpc/article/details/84144453 一、简介 首先【一】服务调用之服务A用RestTemplate实现以HTTP的方式调用服务B中 写好了2个项目,订单系统order,商品系统item,使用restTemplat...

2019-08-31 20:57:35 40 0

原创 【二】服务注册之Eureka注册中心使用

参考https://blog.csdn.net/hellozpc/article/details/83692496 一、简介 Eureka包含两个组件:Eureka Server和Eureka Client。 Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Se...

2019-08-31 20:00:06 143 0

原创 【一】服务调用之服务A用RestTemplate实现以HTTP的方式调用服务B

参考https://blog.csdn.net/hellozpc/article/details/83692496 一、简介 场景例子: 前端访问订单系统,获取某个订单的详情。订单系统中只有订单信息和商品ID,订单系统需要请求商品系统查出商品的详情来组装数据。那么订单系统调用商品系统(即服务...

2019-08-31 18:56:57 426 0

原创 SpringBoot+Jpa+Hibernate(基础使用、原生SQL、分页查询、动态SQL)

一、pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" ...

2019-06-10 22:12:47 2530 0

原创 Docker安装Jenkins

首先需要安装JDK,这里不演示了 需要安装docker 下载jenkins sudo docker pull jenkins 创建jenkins文件夹 mkdir /app/jenkins 启动jenkins 注意,我这里一直是root用户 为了防止权限问题,我使用了 -u 0...

2019-05-05 00:58:54 69 0

原创 ubuntu安装docker

Docker 要求 Ubuntu 系统的内核版本高于 3.10 查看Linux内核的版本 uname -a 更新ubuntu库 sudo apt-get update sudo apt-get upgrade 安装docker sudo apt install docker....

2019-05-04 23:05:43 312 0

原创 【五】Spring Cloud Config 配置中心创建Server与Client

一、简介 1.1配置中心的作用 个人理解主要是: 比如我一个web应用,部署了10台机器,每次修改一个application.yml的配置,就要对应的改10台机器上的这个文件。 很容易出错。 而有了配置中心过后,只需要改配置中心里面的一个文件,所有的服务器启动,都会从这个配置中心得到配置...

2019-05-04 21:03:20 124 0

原创 【十七】JVM内存分配、垃圾回收算法、垃圾回收器(1.7)

本篇是对《深入理解Java虚拟机----JVM高级特性与最佳实践》周志明作的第二版对应内容的一个读书笔记。 先贴上JVM运行时数据区的图 其中:程序计数器、虚拟机栈、本地方法栈这3个区域,都是随线程而生,随线程而死。不需要过多的考虑垃圾回收的问题。 垃圾回收需要考虑的是:1.方法区 2....

2019-04-07 18:00:00 226 0

原创 【十六】JVM虚拟机运行时数据区、虚拟机监控工具

本篇是对《深入理解Java虚拟机----JVM高级特性与最佳实践》周志明作的第二版对应内容的一个读书笔记。 一、JVM运行时数据区 名字 线程共享/私有 存的什么 可能会报什么异常 程序计数器 线程私有 如果正在执行java方法,存的字节码指令的地...

2019-04-06 23:26:53 98 0

原创 【十五】JVM类加载、双亲委派模型简述笔记

本篇是对《深入理解Java虚拟机----JVM高级特性与最佳实践》周志明作的第二版对应内容的一个读书笔记。 一、什么是虚拟机类加载 JVM虚拟机类的加载机制是说: 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。...

2019-04-06 00:07:49 96 0

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