自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yu_uuuuu的博客

点点滴滴

  • 博客(33)
  • 问答 (1)
  • 收藏
  • 关注

原创 浅谈Kakfa【一】Kafka基本概述与Partition

文章目录一、前言1.为什么引入MQ?2.哪些场景需要MQ?3.使用MQ需要注意哪些?二、Kafka概述与日志存储结构1.Kafka名词解释:2.Kafka特性:3.Kafka日志存储:3.1 Partition的数据文件3.2 数据文件的分段3.3 数据文件的索引3.4 偏移量索引3.6 时间戳索引三、结语一、前言本系列是Kafka基本知识与原理解读,不涉及源码的翻译与解释,可以全面了解Kafka的相关概念与底层实现原理。1.为什么引入MQ?(1) 解耦:将两个或多个互相强关联的系统进行解耦,

2021-01-24 23:25:13 533

原创 浅谈Zookeeper【三】ZK中Leader选举算法

文章目录一、前言二、Leader选举基本概念集群服务节点状态 State:选票模型 Vote选举网络通信管理器 QuorumCnxManager三、Leader选举触发时机四、Leader选举过程集群初始化选举Leader宕机后选举五、新节点加入与选举规则新节点加入选举规则六、选举算法FastLeaderElection解析七、总结一、前言前面已经介绍过Zookeeper的基础知识以及ZAB协议的一些概念,其中ZAB协议中关键性的发现步骤,也就是Leader选举机制是如何完成的,在这里简单介绍一下。二

2020-06-27 21:32:24 812

原创 浅谈Zookeeper【二】ZAB协议原理

ZAB协议介绍ZAB协议(Zookeeper Atomic Broadcast)时Zk中保证数据一致性的重要协议,是基于Paxos算法单独为Zk实现的协议。ZAB协议是一种支持崩溃恢复和原子广播的协议,基于zab协议,zk实现了一种主备模式的系统架构,由单一的主进程来处理客户端的请求,并且为每个请求分配一个全局唯一单调递增的事务ID(zxid),然后由主进程将数据广播给副本进程上去。所以说zk是一个保证顺序一致性的服务。

2020-06-21 20:57:31 536

原创 浅谈Zookeeper【一】Zookeeper基础知识介绍

前言由于在实际工作中,几乎都是使用公司提供的基础服务或者采用开源的框架,很少与ZK实际打交道,对ZK的底层原理一知半解,无法将各个知识点串起来,所以打算记录下自己所了解的ZK,并且将学习回顾知识汇总。本文作为Zk系列知识的开篇,只介绍Zk的基本知识,附带提一嘴Zk的实际应用场景,不深入介绍原理。Zookeeper介绍一、什么是ZookeeperZookeeper是典型的为解决分布式一致性所带来的问题的方案组件,分布式应用可以基于zk来实现集群管理、服务注册、动态配置、负载均衡、分布式锁、发布订阅等

2020-06-20 20:26:31 375

原创 分布式与并发【四】浅谈分布式一致性算法Raft

前言之前简单介绍过Paxos算法,并且推导了整个算法的产生,说明了实现过程,但是显而易见Paxos算法非常难理解,并且更难以实现,Raft算法的出现用来代替Paxos算法,实现更加容易,由于本人水平有限,可能文中出现错误,还请大家指出。基础概念介绍Raft是一种用于管理复制日志的一种一致性算法,它将通过一些功能将一致性的一些问题分解,从而更方便理解。一、Raft的重要功能Leader选举、日志复制(数据同步)、日志压缩(数据快照)、安全性等等二、Raft的角色Raft算法中将服务节点分为了三种

2020-06-07 17:03:27 451

原创 [JAVA工具类]-大数据Excel生成导出

前言在实际工作中,经常会需要进行Excel文件的下载导出,并且有时希望通过异步下载来进行实现或者需要下载数据量很大。为防止各个系统重复造轮子,本文通过注解方式来实现Excel的普通、分片生成。依赖Jar包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId

2020-06-01 14:19:37 497

原创 分布式与并发【三】浅谈分布式一致性算法Paxos

一、前言说到分布式一致性算法,那么必然不可避免谈到Paxos,Paxos算法在分布式领域地位非常重要,接下来简单记录下Paxos算法的原理。由于个人水平有限,如有错误还请谅解,本文参考书籍《从Paxos到ZooKeeper》与一些网络博客。二、背景在分布式系统中,经常会发生例如网络异常、服务宕机等情况,为了解决出现问题时数据不一致而产生了Paxos算法,可以保证无论在任何情况下都不会破坏数据的一致性。Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效

2020-05-31 17:24:22 424

原创 分布式与并发【二】浅谈分布式一致性协议2PC与3PC

前言:在分布式系统体系中,为保证数据的一致性,产生了一系列的一致性协议,其中最为著名的就是2PC和3PC协议,以及现在广泛使用的真正解决一致性的Paxos算法,本篇只讲述2PC和3PC,下一篇再介绍Paxos算法。在分布式系统中,每个子节点都能明确认知到自己处理的事务成功或者失败,但是却无法直接获取其他分布式节点的操作结果,因此当一个事务需要跨多个系统操作时,就需要一个中间方也叫做协调者来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点称之为参与者,由协调者来确定事务是否最终需要提交,基于这个思

2020-05-23 14:43:01 592

原创 分布式与并发【一】浅谈分布式ACID与CAP/BASE理论

前言由于工作中比较忙,好久没有梳理一下自身的知识体系,正好在公司OKR时规划了一下个人能力和影响力的提升,所以准备系统性回顾一下分布式相关的知识,整理成文档分享给大家。一、分布式的特点分布性: 一个分布式的系统中,所有的计算机可以任意分布在不同的地方,可能会在不同的城市和机房。对等性:分布式中的所有机器没有主从之分,并没有一个中心节点主机来控制,每个机器都是主机,都可以处理来自外部的请求,相当于一个副本的概念,当某台机器因为网络或物理原因宕机后不会对对外提供的整个服务造成影响。并发性:由于分布

2020-05-23 14:40:35 437

原创 RabbitMQ系列【三】RabbitMQ消息队列实践

RabbitMQ消息队列目前常用的有很多种,比如ActiveMQ、Kafka、RocketMQ,甚至使用Redis简单实现一个消息队列。这里主要记录一下RabbitMQ的相关知识。1、RabbitMQ的使用场景2、RabbitMQ的缺点3、RabbitMQ数据传递过程4、RabbitMQ的Exchange类型5、RabbitMQ使用实例RabbitMQ的使用场景消息队列的使用通常有三个重点:异步、削峰、解耦1、当系统耦合较高时,不利于我们维护与扩展,例如,AB两个系统都需要C系统的数据,C系统通过接口调

2020-05-23 14:33:49 428

原创 RabbitMQ系列【二】RabbitMQ高可用集群搭建

RabbitMQ集群的搭建在实际使用消息队列时,可能不可能使用单点服务,这样一旦服务挂掉,那问题就大了,所以这里我通过两台CentOS7虚拟机搭建一个RabbitMQ集群。RabbitMQ集群类型普通模式:就是搭建一个多服务的普通集群,消息队列Queue只在其中一个节点上,集群中的其他服务并不存在,集群中的所有节点具有相同的队列结构,保证能够同步数据。而当我们请求落点在一台不存在Queue的机器上怎么办呢?MQ会临时从有数据的节点拉取数据然后返回给消费者。这样有一个问题,就是只有一个物理Queue在一台节

2020-05-23 14:29:22 175

原创 RabbitMQ系列【一】安装Erlang与RabbitMQ

其实最好的办法就是阅读官网文档rabbitmq安装这里采用的Erlang版本为22.0.1,Mq版本为3.7.15CentOS7安装Erlang下载Erlang安装包,可以到官网去找各种版本wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm升级Erlang安装包rpm -Uvh erlang-solutions-1.0-1.noarch.rpm查看erlang版本,这时候显示的就是你将要安装的版本

2020-05-23 14:26:50 373

原创 SpringCloud【三】基于eureka+config创建client提供服务接口

eureka服务中心搭建:https://blog.csdn.net/Yu_uuuuu/article/details/82223790config配置中心搭建:https://blog.csdn.net/Yu_uuuuu/article/details/82351266当前项目GIT:https://github.com/yukaiji/springcloud-client 之前...

2018-09-07 17:11:52 585

原创 SpringCloud【二】搭建基于Git的配置文件管理config服务

为了避免每次对配置文件的更改需要重新打包部署,SpringCloud提供了一种方式,可以通过config来进行远程管理。每次只要在git上修改配置文件信息,无需服务的重启即可做到更新。本文主要是创建一个config server微服务,并且注册到eureka服务管理中心上。eureka项目的搭建:https://blog.csdn.net/Yu_uuuuu/article/detail...

2018-09-03 17:03:49 620

原创 SpringCloud【一】搭建Eureka单点或集群服务

当一个项目想采用微服务架构时,首先想到的就是springCloud,SpringCloud可以很好的搭配docker来进行服务的提供。但是怎么来管理这些服务呢,spring目前采用的是eureka注册中心,本文将通过图文的方式来简单搭建一个eureka注册中心单点服务和集群服务。项目链接:https://github.com/yukaiji/springcloud-eureka-serve...

2018-08-30 16:38:56 781

原创 Python爬虫-网贷之家P2P机构排名查询

 python采用3.X版本,依赖三方库BeautifulSoup/requests/pymysql由于最近P2P暴雷事件,写一个爬虫定时去爬取网贷之家对各个公司的排名及当前状况的分析,分为经营正常和异常的公司。将数据存储到数据库中。from bs4 import BeautifulSoupimport requestsimport pymysqlimport datetime...

2018-08-30 14:24:57 1253 1

原创 JAVA基础-synchronized关键字

synchronized关键字也叫作互斥锁或者同步。这个关键字的存在是为了解决编程中的线程安全问题的,而线程安全问题出现的主要原因一般为:多个线程操作同一个对象的数据,也就是同时操作共享变量的值。synchronized的出现解决了这个问题,互斥锁的含义为,当一个线程操作一个对象的时候,对该对象增加一个锁,任何其他线程都处在等待状态,不可以对该对象进行操作。当持有锁的线程执行完毕后,会释放持有锁,...

2018-04-28 11:03:15 202

原创 JAVA基础-volatile关键字

首先我们知道在java中内存的交互有以下几点。ReadLoad 和StoreWrite 两对操作不可分割。Lock(锁定):作用于主内存的变量,他把变量标识为一个线程独占的状态。UnLock(解锁) :作用于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。Read(读取):作用于主内存的变量,它把一个变量的值从主内存中读取到线程工作内存中,以便随后的loa...

2018-04-16 17:48:38 178

原创 JAVA基础-JMM内存模型

JAVA内存模型称为JMM,指JAVA虚拟机在内存中工作的方式。其中最主要的是理解JAVA内存模型定义多线程之间的通信方式和保证共享变量的可见性,以及如何对共享变量进行同步。在理解java内存模型之前首先必须知道一些基础的原理。1、数据依赖性 两个操作访问同一个变量时,如果其中的一个为写入操作,那么称这两个操作具有数据依赖性,编译器和处理器不会对有数据依赖性的操作进行重排序,也就是不会改变...

2018-04-13 14:45:00 209

原创 JAVA设计模式【二】 - 单例模式

单例模式 单例模式是比较常用和容易理解的一种设计模式,目的是一个单例对象的类只允许存在一个实例。常用的例如数据库连接池和多线程的线程池就是单例模式的。单例模式的几种实现方式:饿汉模式:/*** Created by j on 2018/3/1.*/public class Singleton { private static Singleton ourInstance = new Si...

2018-03-07 10:36:21 162

原创 JAVA设计模式【一】 - 简单工厂模式、工厂方法模式、抽象工厂模式

简单工厂模式(静态工厂模式): 普通工厂模式就是创建一个工厂类,创建并返回多个实现相同接口的类的实例。例子:根据传递的类型生产不同的食物。 有一个生产食物的接口:/*** Created by j on 2018/2/27.*/public interface Food { public static voidcreatFood();} 一个生产面条的实现类...

2018-03-07 10:35:15 261

原创 JAVA设计模式 - 七大基本原则

开发时一般对架构的设计都会要求满足一些原则,以便更好的扩展和维护。下面就是架构设计时的7大原则。1、开闭原则 (Open Close Principle OCP)    开闭原则要求对扩展开发,对修改关闭。在实际的开发中,产品一定不会是最先预想的样子,而在需要增加修改功能时,不需要更改原有的代码逻辑,降低耦合提高复用性。    在设计开发时,尽量不要在多处出现相同代码,尽可能将一个臃肿的逻辑分离为...

2018-03-07 10:33:57 345

原创 JAVA算法-快速排序

快速排序算法、JAVA实现快速排序

2017-11-30 10:30:54 324

原创 MyBatis缓存机制原理

mybatis 缓存原理,mybatis缓存机制,mybatis 一级缓存 二级缓存。mybatis理解

2017-11-14 10:45:09 1298 1

原创 [JAVA工具类]--邮件发送

javax.mailjava发送邮件,java发送企业邮件,java发送Exchange。java mail POM 依赖java发送邮件工具类

2017-11-10 11:20:26 2516 4

原创 简谈JAVA基础--ConcurrentHashMap

ConcurrentHashMap 与 HashTable不同的是,前者的锁更加细化,而不像后者一样将没个方法都加上Synchronized关键字。因为采用关键字来进行加锁会十分影响性能。在jdk1.7中采用的是分段锁的概念在jdk1.8中ConcurrentHashMap已经弃用Segment分段锁。底层数据结构采用和HashMap

2017-09-19 10:47:52 552

原创 简谈JAVA基础--双向链表(LinkedList)

JAVA 双向链表实现 ,双向链表数据结构, 双向链表原理 ,LinkedList ,源码分析。

2017-09-14 16:11:32 540

原创 简谈JAVA基础--单链表

JAVA实现单链表,单链表原理,单链表理解

2017-09-12 15:35:13 640

原创 简谈JAVA基础--ArrayList

Java ArrayList的数据结构原理与源码分析。

2017-09-11 14:24:35 270

原创 简谈JAVA基础--IO流

Java IO流的基本使用方法与介绍。 对文件进行简单的操作

2017-09-11 13:35:57 382

原创 简谈JAVA基础--HashTable

Java中HashTable与HashMap的区别。以及HashTable源码解读

2017-09-11 13:33:07 302

原创 简谈JAVA基础--HashMap

Java - HashMap数据结构分析,扩容与添加操作源码解析。基本参数与数据存储过程

2017-09-11 13:29:41 488

原创 简谈JAVA基础--基本数据类型和封装类型

java基本数据类型根据字节占用顺序包括boolean,byte,char,short,int,float,long,double 计算机中一个字节代表8位。根据各个类型所占用字节数可以得到表示的范围为 -2^位数   ——  2^位数-1次幂 - 1 除char与boolean外,其余类型的封装类继承于Number类 。java.lang -&gt; java.lang.Numb...

2017-09-11 13:27:56 391

空空如也

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

TA关注的人

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