- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 基于Docker的MySQL主从搭建
MySQL主从搭建环境Docker安装MySQL镜像下载MySQL主从搭建创建MySQL网络MySQL容器脚本创建MySQL主从容器创建MySQL主节点创建MySQL从节点加入网络MySQL主从关系建立问题结束语环境以下所有操作,均是在Macbook上进行的。其他系统请自行做适应性调整。Docker安装brew cask install docker# 安装后验证docker -v# 安装成功会输出版本号,本机为:Docker version 19.03.8, build afacb8b安
2020-11-27 14:42:51 404 2
原创 Redis主从复制的那些坑
Redis主从复制前言Redis主从复制有哪些问题数据一致性网络延迟过期数据前言对于分布式系统而言,针对高可用,无论是计算高可用还是存储高可用都是采用冗余的方式。计算高可用的冗余相对比较简单,因为在多数场景下计算节点都是无状态的,直接水平扩展即可。但对于存储高可用来说,其复杂度是计算高可用不可比拟的,因为存储高可用需要面对很多的问题。比如数据一致性,扩容/缩容可能导致的数据迁移等问题。存储高可用的核心就是数据冗余,也就是多副本。本篇只针对Redis高可用方案-主从复制会产生的一些问题进行探讨。Re
2020-11-16 18:12:32 621
原创 ZAB原子广播协议原理
ZAB协议原理ZAB简介Leader发现崩溃恢复全量同步(SNAP)部分同步-DIFF部分同步-TRUNC消息广播结束语ZAB简介ZAB是为原子广播协议,是zookeeper实现强一致性的共识算法。ZAB分三个阶段,分别是:Leader选举(发现)、崩溃恢复、消息广播Leader发现在具体介绍之前,先解释几个名次。逻辑时钟(electionEpoch):又名选举轮次,在Leader发现阶段,节点需要发送投票给其他节点,逻辑时钟表达的是大家需要在一个选举轮次上。当集群中某一个节点被过半的节点所支持,
2020-08-05 16:31:35 688
原创 Kafka 原理初探
概览kafka是一款优秀的流计算中间件系统。本篇文档只对其作为消息系统时做个介绍和分析。kafka作为一款高性能,高吞吐量,高可用的消息中间件,受到了很多互联网公司以及开发者的喜爱,接下来就对其做个介绍和分析。kafka 从最初到现在,中间经历个几个大版本的更新, 本篇文档不对其发展历程做过多的介绍,在接下来的文档介绍部分细节时会简单提到kafka版本之间的差别。本篇文档主要是对kafka较深入的一个初步剖析,所以像topic, partition,consumer group等这些基础概念
2020-07-19 15:53:49 592
原创 全局唯一ID
序言全局唯一ID在分布式系统当中的作用举足轻重。雪花算法也许是大家耳熟能详的一种方案,但其存在时间回拨可能引起ID重复的问题,网上也有很多能人异士通过特殊的处理降低时间回拨所带来的影响,但让本人来看,优化方案并没有那么好。本篇就给大家贡献一篇全局唯一ID的新方案。方案原理本篇所要描述的全局唯一ID方案,是受雪花算法的启发,但其方案已和雪花算法完全不同,整体上看本方案比雪花算法更加的简洁。了解雪花算法的都知道,64位的比特位,划了符号位,时间位,数据中心位(可没有),worker 位.
2020-07-17 22:31:31 330
原创 由spring BeanFactoryPostProcessor 引发的一个问题
今天在工作中碰到这样一个, 其实之前也遇到过, 但是并没有具体的去了解详情, 今天由于疏忽再次碰到了这个问题, 所以这里和大家分享一下。起初是这样的:Listener<P> 接口, 负责处理事件,ListenerRegistry 负责dispatcher 事件处理接口,也就是Listener, Listener 在实力化时通过 spring的InitializingBean...
2019-02-28 18:50:27 860
原创 Java实现基于zookeeper轻量级方法路由
在工作中碰到了这样的一个问题,签电子合同,发送短信往往都是多个服务提供商,但是使用每个服务商的权重不同,每个业务线可能使用的服务提供商也会不同,像这种服务提供商的路由选择,可以通过设计表来进行实现,不过我用了另外一种方式实现。这个小工具的实现使用的zookeeper, 支持动态的配置各个权重。下面是具体的实现过程。1.为了降低处理的复杂度,并没有使用注解,而是自定义一个spring命名空间...
2019-01-26 11:29:50 642 1
原创 JVM之基本类型
最近在看JVM方面的东西,其中看到关于基本类型方面的一些讲解,在早之前未曾留意,今天这里记录一下。在java语言规范中boolean类型只有true和false,但是jvm不能直接使用true和false。在jvm规范中,boolean类型被映射为int,true被映射为1,false被映射为0。也这样一来,在编译而成的字节码文件中,除了字段和传入参数外,基本上看不到boolean的痕迹了。...
2018-10-07 10:26:01 412
原创 java获取方法参数名称的方式
经过私下里的思考,对文章进行了更改有时候我们需要通过获取方法的参数名称来完成一些业务需求,比如spring mvc 中controller中方法参数和http请求的参数进行映射。springmvc中提供有@RequestParam和@PathVariable注解,通过注解给方法参数指定名称,在运行时可以通过反射获取到,这是比较简单的一种方式,在springmvc中在没有使用注解的情况下,...
2018-07-21 16:21:04 1290 1
原创 java反射中的桥接方法
在阅读spring源码时,看到桥接方法,因此这里将整理的文档贴出来 --------------------------------------------------------------------------------------------------------------------- /////////////////////////////////////////...
2018-05-09 14:01:33 321
原创 Excel导入导出实现
java Excel导入导出,笔者使用的poi框架笔者自认为自己的实现无特别的亮点,但可能与多数的实现有稍微的区别,有关于模板以及标题的对应关系,笔者采用自定义注解来实现废话不多说,直接上全部代码:package com.optimus.common.excel.annotation;import java.lang.annotation.*;/** * 此注解表示类属性在excel中的...
2018-04-17 22:08:49 297
原创 【无标题】
交给无驾驶证人用车 >>> 处200到2000以下罚款,可以并可处吊销驾驶证。非法拦截、扣留机动车辆,不听劝阻,造成交通严重阻塞或者较大财产损失的 && 并处15日以下拘留。故意损毁、移动、涂改交通设施,造成危害后果,尚不构成犯罪的 && 并处15日以下拘留。无证驾驶 (无证包含:未取得,被吊销/撤销/注销) && 并处15日以下拘留。违反交通管制的规定强行通行,不听劝阻的 && 并处15日以下拘留。驾驶拼装、报废机动车 && 并处吊销驾驶证。车交给无证人员驾驶 && 并处吊销驾驶证。
2023-12-04 11:41:41 100
原创 分布式系统之高可用方案
高可用方案初探高可用方案CAP计算高可用对称式高可用非对称式高可用存储高可用架构模式双机热备主备主从双主集群和数据分区集群模式数据分区异地多活高可用方案单点系统可能会由于断电,宕机等情况,使得系统不可用,在行业竞争激烈的情况下,系统的可用性会影响公司获客能力及口碑。高可用分为计算高可用和存储高可用。CAPCAP分布式理论,C:一致性,A:可用性,P:分区容错性。C:站在用户角度看,读操作能够看到最后一次写操作的结果。A:系统总是能够在合理的时间内返回合理的结果(不包括超时,错误)P:发生网络
2020-10-28 20:54:38 1582 2
原创 dubbo 系列之集群策略
dubbo 集群策略概览FailoverClusterFailbackClusterMergeableCluster结束语概览本篇分析dubbo集群容错策略。dubbo 提供了以下容错策略FailoverCluster: 故障转移集群策略(默认)AvailableCluster: 可用性集群策略BroadcastCluster: 广播集群策略(适合事件通知类的服务)FailbackCluster: 故障恢复集群策略FailsafeCluster: 安全失败集群策略(不抛异常)Failfas
2020-07-24 15:51:25 390
原创 Mac homebrew 资源下载加速设置
homebrew 替换为阿里云镜像源# 替换brew.git:cd "$(brew --repo)"git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git# 替换homebrew-core.git:cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"git remote set-url origin https://mirrors.aliy
2020-07-19 15:12:20 262
原创 如何终止一个java线程
线程,相比进程更加轻量级,系统开销更小,但过多的线程因系统资源占用多,导致系统性能下降,因此有关线程的管理不得不去做。在java中如何创建线程呢?相比这样的文章都已多如牛毛,笔者在这里只简单的重述一下。常见的有两种方式:1.继承Thread类并重写run方法2.实现Runnable接口,通过 new Thread(runnableImpl)方式第2中方式显得更加的灵活,也是经常被采用的方式,第一种...
2018-04-17 21:44:42 353
简单易用的class文件修改工具类asmtools
2018-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人