自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zifanyou的博客

既然选择了远方,便只顾风雨兼程

  • 博客(28)
  • 收藏
  • 关注

原创 对汉诺塔java实现的理解记录

参考链接 https://blog.csdn.net/zandaoguang/article/details/76889284参考链接 https://blog.csdn.net/qq_37873310/article/details/80461767汉诺塔的原理就不多说了,请参考以上两篇文章。在理解汉诺塔的过程中对以上两篇文章的变量名产生过迷惑,在理解了之后,将函数中的变量名从A,B...

2019-09-27 17:08:14 197

原创 Redis系列(3) Jedis Redission 开发示例

redis开发中,比较常用的工具包有两个,Jedis和Reddisson。其中Jedis封装的都是一些基础的redis操作,如get()、set()等。而Reddisson中封装的都是一些比较高级的功能,比如分布式锁、队列、Map等。1. Jedis1.1 Maven<dependency> <groupId>redis.clients</gro...

2019-01-21 11:31:37 1596

原创 Redis系列(2) 功能解析 普通操作、发布订阅、分布式锁

1.普通操作2. 发布订阅上图为发布订阅的简单示例,当使用集群模式的时候,情况就会比较复杂,如下图:由于频道不同于Key,无法进行slot计算,所以进行订阅的时候无法计算具体的Redis节点,所以只能在随机的节点进行订阅。当发布消息时,会进行集群之间的同步,最终每个节点都会收到发布的消息,然后将消息发送给本地的订阅者。3. 分布式锁 redis分布式锁不是r...

2019-01-18 10:42:57 394

原创 Redis系列(1)----Redis集群 主从 架构

1.集群架构Redis的集群模式采用的是无中心模式。 在Redis集群模式中,把所有的空间分为16384个槽位(slot)。默认情况下,所有的Master节点平分所有槽位。由于Slave节点会从Master节点同步所有数据,所以从节点和对应的主节点的槽位相同。 客户端在启动时,会从配置的节点列表中的某一个节点中,获取到所有集群相关的信息,包括槽位的分配信息等。 客户端程序在进行操作时...

2019-01-18 10:31:53 226

原创 Java基础系列(5) ---序列化

1.什么是序列化?序列化可以将任意对象写出到流中,并在之后将其读回。2.功能举例可以使用序列化将对象持久化到磁盘,等到使用时再读出来,可以节省内存。可以通过网络传递对象。3.示例想要一个类生成的对象可以被序列化,必须实现Serializable接口public class Book implements Serializable{ public stat...

2019-01-09 11:27:53 141

原创 Java笔记 ------- 带标签的break、continue,如何跳过多重循环

1. break在java中将goto关键字作为保留字,但是并没用使用它,但是可以使用break语句执行相似的跳转功能。举例如下: label:for(int i=0;i<3;i++){ System.out.println("i=" + i); for(int j=0;j<3;j++) { System.out.println...

2018-12-28 11:06:34 312

原创 Java基础系列(4)并发队列 ConcurrentLinkedQueue、ArrayBlockingQueue、LinkedBlockingQueue

1. 线程安全ConcurrentLinkedQueue、ArrayBlockingQueue、LinkedBlockingQueue都是线程安全的队列,都可以进行并发编程。2. 阻塞ConcurrentLinkedQueue是非阻塞的队列,通过CAS算法实现,效率较高;ArrayBlockingQueue和LinkedBlockingQueue都是阻塞的,实现了BlockingQue...

2018-12-20 11:54:23 508 1

原创 maven-shade-plugin使用记录 (设置main class, 排除META-INF/*.SF等文件)

1. pom.xml<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>

2018-12-18 16:57:09 5910

原创 maven-assembly-plugin插件使用记录

1. pom.xml<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> &

2018-12-18 16:47:33 340

原创 rocketmq系列(3) 开发 API

1. 发送普通消息2. 发送事务消息3. 接收普通消息4. 接收广播消息1. 发送普通消息public class Producer { public static void main(String[] args) { //生产者组 String producerGroup="ProducerGroup"; //Name Serv...

2018-12-18 12:01:02 1196

原创 rocketmq 系列(2) 架构、原理、实现

1. 集群架构2. 存储方式3. 消费者分配策略4. 事务消息5. 二阶段提交以及事务回查问题6. 顺序消息7. 负载均衡8. 消费进度1. 集群架构                                                     网图所有Broker在启动时,向Name Server集群注册。并通过心跳进行状态保持。 Brok...

2018-12-13 18:48:42 392

原创 rocketmq系列(1)功能简介

1. Rocketmq是什么2. 术语  2.1 Producer  2.2 Producer Group  2.3 Consumer  2.4 Consumer Group  2.5 Topic  2.6 Queue  2.7 Message  2.8 Tag  2.9 Broker  2.10 Name Server3. 功能特性  3.1 ...

2018-12-13 18:31:43 979

原创 Java基础系列(3) 代理 (使用方式、深层原理解析)

前言1.何时使用代理 ?2.使用步骤2.1 实现InvocationHandler2.2 接口类2.3 实现类2.4 创建代理类以及执行代理方法3. 原理解析前言如果希望较为深入的理解代理这种模式,必须先学习一下反射相关的知识,可参考我上一篇文章反射。如果只是想了解如何使用,直接尝试即可。 代理分为静态代理和动态代理,由于静态代理比较简单而且不常用,所以本文只...

2018-12-12 14:52:08 126

原创 Java基础系列 (2) 反射

1.Class类1.1有三种方式获取到Class的对象1.2 可以使用 "=="1.3 newInstance() 方法1.4 forName 与 newInstance() 配合2. 分析类2.1 Field、Method 和 Constructor3. 运行时获取域的值4. 调用方法1.Class类在java运行时系统中,每当成功加载了一个类,都会为之创...

2018-12-11 14:36:33 133

原创 zookeeper系列(六) curator三种监听器(Cache)方式

目录 1. NodeCache2. PathChildrenCache3. TreeCache1. NodeCache这是最简单的一种监听方式,只监听固定节点的内容变化。public class CuratorBaseTest { /* url : zookeeper 地址 * namespace : 起始路径 * id0 : 用户名 * id...

2018-12-07 18:15:41 1697

原创 zookeeper系列(五) curator的基本操作 ACL权限

1. 简介2. Maven3. 操作3.1 重试策略3.2 连接3.3 基本操作1. 简介Apache Curator 是Netflix公司开源的一个Zookeeper Java客户端操作框架,现在已经是Apache的顶级项目。与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发。并且提供了很多场景下的使用模板,在...

2018-12-07 18:04:19 2590

原创 zookeeper系列(四)zkCli.sh客户端命令介绍

目录 1.连接服务器2. help 命令3. addauth scheme auth 鉴权4. ls path 查看目录5. stat path 获取节点的状态信息6. get path 获取内容7. ls2 path 是ls 和 stat两个命令的结合8.create [-s] [-e] path data acl 创建节点9. delete path [...

2018-12-06 15:56:37 1168

原创 zookeeper系列(二) zookeeper整体结构及使用场景

目录1. 简介2. 集群架构3. 数据模型4. 使用场景(常用功能)4.1 Master选举4.2 成员管理(负载均衡实现)4.3 配置管理(发布订阅)4.4 任务分配4.5 分布式锁 1. 简介Zookeeper是一个开源的分布式协调服务,其设计目标是将那些复杂的且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一些简单的接口提供...

2018-12-05 18:14:23 267

原创 zookeeper系列(一) zookeeper集群安装

以3.4.6版本为例,假设安装路径为 /home/zookeeper, 3个节点1.下载下载地址 https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz将zookeeper-3.4.6.tar.gz下载到 /home/zookeeper2.解压tar -zxvf zooke...

2018-12-05 11:52:05 152

原创 Java基础系列(1)数据类型。(Char,Unicode,UTF-16)

Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本类型(Primitive Type)。其中有4种整型、2种浮点型、1种用户表示Unicode编码的字符单元的字符类型char和一种用于表示真值的boolean类型。 1. 整型用于表示没有小数部分的数值,允许为负。 类型 字数 范围 类型 ...

2018-12-04 18:52:24 545

转载 zookeeper系列(三)ZAB协议

ZAB协议ZAB协议是专门为zookeeper实现分布式协调功能而设计。zookeeper主要是根据ZAB协议是实现分布式系统数据一致性。zookeeper根据ZAB协议建立了主备模型完成zookeeper集群中数据的同步。这里所说的主备系统架构模型是指,在zookeeper集群中,只有一台leader负责处...

2018-12-04 15:34:48 189

原创 paxos 到底解决了什么问题?

之前一直在研究paxos算法本身,从而忽略了它本质上想解决的问题。那么,paxos算法到底解决的是一个什么问题?答:简单来说,paxos算法解决的就是一个最终一致性问题。假设一个集群有三个节点,Paxos可以让三个节点更快的达成一致。因为在Paxos中规定,如果某个节点写操作执行之前其他两个节点(也就是大多数的节点)的值已经相等并记为V,那么除非这次写入的值也为V,否则操作不能进行。而当其他两...

2018-12-04 15:22:46 1934

原创 paxos 原理分析 简单图解

参考链接:https://www.zhihu.com/question/19787937/answer/107750652http://www.importnew.com/24420.html1.首先还是概念:Paxos算法包含三个角色Proposor,Acceptor,Learner,Client。Client : 发起请求Proposor : 提出提案。Acceptor : 接收...

2018-12-03 21:11:53 762

原创 java.net.SocketException: Connection reset 异常处理

场景描述:客户端通过socket访问远程服务器,执行命令时抛异常,  java.net.SocketException: Connection reset 分析:使用socket访问服务端数据时,当服务端认为已经返回全部的结果后,会主动关闭socket,此时客户端再从socket读数据会抛异常。 处理办法:1.客户端可准确识别返回内容结束标志时,读取全部数据后主动关闭连接。2....

2018-12-03 14:39:25 10982 1

原创 java split 一个或多个空格 分割字符串

split()方法支持正则表达式参数   String[] java.lang.String.split(String regex)    (regex 即为正则表达式)举例:String  s = "a b    c        d   e"String[] ss = s.split("\\s+");   注: 正则表达式中,\s 代表空格,+代表任意数量 。最前面的\为转义字符。...

2018-12-03 14:24:57 4299

原创 eclipse maven打包跳过测试

pom.xml:<build>  <plugins>    <plugin>              <groupId>org.apache.maven.plugins</groupId>              <artifactId>maven-surefire-plugin</artifac...

2018-11-30 14:55:15 1088

原创 svn备份。搭建svn从服务,主svn提交时自动同步到从svn

说在最前:同步之前一定要先备份好所有数据。经过尝试,将svn的持久化文件(下文中的 /home/svn/repos)拷贝到其他服务器上,可以直接启动并使用。 从服务器1.安装从svn从服务,已经安装则略过。yum install subversion(centos系统)2.建立版本库目录mkdir -p /home/svn/repos    svnadmin create ...

2018-11-29 14:22:07 929

原创 Java递归算法,从1到N个数中,取出K个数,列出所有组合。

题目:从1到n个数中,取出k个数,列出所有组合。举例,从数字1-5中取三个数的所有可能组合(数字不重复,忽略顺序)为:(5 4 3 ),(5 4 2 ),(5 4 1),(5 3 2 ),(5 3 1 ),(5 2 1 ),(4 3 2 ),(4 3 1 ),(4 2 1 ),(3 2 1)。其中n=5,k=3参考:https://blog.csdn.net/g1093896295/artic...

2018-11-27 18:05:51 7039 1

空空如也

空空如也

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

TA关注的人

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