自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 限流工具使用

开发过程中经常会遇到一些限流的场景,比如为保证服务器自身安全,对接口进行限流;在我们请求一个三方接口时,对方有1分钟内调用次数不能超过多少次的限制。等等。这里先搜罗一些实现方案,具体原理后面慢慢学习补充我们常说的限流,其实更多的都是指时间窗口内的平均速率。

2023-07-17 16:53:44 280

原创 java虚拟机类加载机制

Java 类加载机制

2022-06-24 16:08:39 286 1

原创 常用排序算法

排序算法

2022-06-21 18:55:07 308

原创 虚拟机工具

jvm jps jmap

2022-06-20 17:15:42 197

原创 java垃圾收集器

java 收集器

2022-06-20 13:08:21 259

原创 Java内存区域与内存溢出异常

jvm 相关知识

2022-06-10 14:34:18 133

原创 HashMap扩容源码分析

扩容resize方法HashMap底层哈希桶的数据结构是数组,所以也会涉及到扩容的问题。当HashMap的容量达到threshold域值时,就会触发扩容。扩容前后,哈希桶的长度一定会是2的次方。那么到底是怎么扩容的呢?又有哪些精妙的设计呢?一起来看看源码吧final Node<K,V>[] resize() { //oldTab 为当前表的哈希桶 Node<K,V>[] oldTab = table; //当前哈希桶的容量 len

2022-04-14 11:21:23 719

原创 minio自建对象存储(单机版)

1.简介MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。2.官方文档英文文档中文文档github地址3. docker 部署搞一个单机版玩一玩。在云服务上部署,通过nginx反向代理。使用了http 。怕麻烦就没配置https启动脚本 nohup docker run \

2021-11-16 18:13:22 3464

原创 k8s集群搭建

安装环境硬件环境虚拟机:VMware® Workstation 16 Pro操作系统:Centos-7.6虚机要求:2核cpu,2g内存,不然初始化master会警告部署规划192.168.31.10 master192.168.31.127 worker1192.168.11.182 worker2软件环境Kubernetes 版本: 1.19.2docker 版本:19.03.0使用kubeadm 进行安装网络插件:选择网络插件:https://kubernetes.i

2021-11-11 14:31:28 542

原创 kafka基础介绍

kafka基础介绍kafka官方文档:http://kafka.apache.org/documentation.html#introductiongithub: https://github.com/apache/kafka中文文档: https://kafka.apachecn.org/documentation.htmlKafka常用命令:https://blog.csdn.net/qq_27399407/article/details/118966702kafka 安装部署:http

2021-10-19 20:30:55 303

原创 kafka常用命令

一、脚本概览bin目录下的脚本作用脚本 作用 connect-distributed.sh 用于启动多节点的Distributed模式的Kafka Connect组件 connect-standalone.sh 用于启动单节点的Standalone模式的Kafka Connect组件 kafka-acls.sh 用于设置Kafka权限,比如设置哪些用户可以访问Kafka的哪些TOPIC的权限 kafka-broker-api-versions.sh 主要

2021-07-21 14:58:53 135

原创 CentOS Kafka 单机集群安装(伪集群)

1、下载解压kafkacd /usr/local/softwget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgztar -xzvf kafka_2.13-2.5.0.tgzcd kafka_2.13-2.5.02、修改配置文件复制3个配置文件cd configcp server.properties server1.properties cp server.properties server

2021-07-19 11:34:58 125

原创 从int和Integer了解自动装箱、自动拆箱制

int 是java的8个原始数据类型(boolean、byte 、short、char、int、float、double、long)之一。Java 语言虽然号称一切都是对象,但原始数据类型是例外。Integer 是 int 对应的包装类,它有一个 int 类型的字段存储数据,并且提供了基本操作,比如数学运算、int 和字符串之间转换等。在 Java 5 中,引入了自动装箱和自动拆箱功能(boxing/unboxing),Java 可以根据上下文,自动进行转换,极大地简化了相关编程。关于 Integer

2020-06-10 20:29:06 470

原创 Kafka相关原理浅析

Topic&Partitiontopic 是存储消息的逻辑概念partition 分区,是消息的屋里存储概念每个topic可以有多个分区相同topic中的不同分区的消息是不同的同一个分区下的消息是顺序的一个topic的不同分区分布在集群中不同的broker中。假设三个broker的集群,下图topic的三个分区就会分布在三个不同的broker上kafka中的的消息...

2020-05-07 12:55:11 209

原创 SpringBoot,SpringCloud版本选择说明

我们都知道,SpringBoot+SpringCloud项目中经常会因版本出现一些奇怪的问题,那么在搭建新的项目是该如何选择SpringBoot和SpringCloud的版本呢?在Spring的官网中其实有说明的;https://spring.io/projects/spring-cloud这里介绍了相关大版本的对应关系,如图所示:那么具体的小版本呢?可以通过这个地址获取小版本的对应关...

2020-03-26 17:08:02 875

原创 java中的四种引用类型

四中引用类型的介绍强引用所谓强引用(“Strong” Reference),就是我们常见的普通对象引用。只要有强引用指向一个对象,就表明这个对象还活着,垃圾收集器不会回收这类对象。对于一个普通对象,只要没有其他引用引用关系,超过了引用的作用域或则显式的将引用赋值为null,就可以被垃圾收集器收集了强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: Obje...

2020-01-15 14:56:22 152

原创 GitFlow分支流程

1.1 简介Gitflow.工作流定义了一个围绕项目发布的格分支模型。虽然比功能分支工作流复杂几分,但提供 了用于一个健壮的用于管理大型项目的框架。Gitflow工作流没有用超出功能分支工作流概念和命令,而是为不同的分支分配一个很明确的角 色,并定义分支之间如何和什么时候进行交。除了使用功能分支,在做准备、维护和记录发布也使用各 自的分支。当然你可以用上功能分支工作所有的好处: Pull ...

2019-12-06 17:33:54 510

原创 final、finally、finalize的区别

final、finally、finalize有什么区别?典型的回答final可以用来修饰类、变量、方法,分别有不同的含义。final修饰类时,该类不可被继承。final修饰变量时该变量不可被修改。final修饰方法时,该方法不可被重写。finally是java中保证关键代码一定被执行的一种机制。我们可以使用try-finally、try-catch-finally来关闭io流、JDBC链接...

2019-12-02 17:35:56 264

原创 Exception和Error的区别

java提供了相对完善的异常处理机制,大大降低了编写和维护可靠程序的门槛。今天来聊一下Exception和Error有什么区别?。典型的回答Exception和Error都继承了Throwable类,在java中只有Throwable类型的示例才可以被抛出或者捕获。Exception是程序正常运行中的意外情况,可以被捕获,做相应的处理。Exception 又分为可检查(checked)异常...

2019-11-25 19:22:02 154

原创 谈谈你对java平台的理解

从你接触 Java 开发到现在,你对 Java 最直观的印象是什么呢?是它宣传的 “Complier once, run anywhere”,还是目前看已经有些过于形式主义的语法呢?你对于 Java 平台到底了解到什么程度?请你先停下来总结思考一下。今天的问题是:谈谈你对java的理解,java是“解释执行”这句话对吗?先科普下什么是“解释执行”? 什么是“编译执行”?解释执行解释执行...

2019-11-15 19:28:31 442

转载 fastjson使用实例 TypeReference

一直用FastJson 做rest接口的序列化,FastJson对泛型的支持也非常好。经过一段时间使用后发现不定时的会报JsonObject can’t covert to ****的错误,但是重启之后就好了。排查过程不赘述,直接上代码演示String itemJsonStr = "{\"models\":{\"_defaultModel\":{\"id\":824,\"itemName\"...

2019-10-16 12:08:37 560

原创 Kafka的安装和API的基本使用

Kafka的安装集群部署方式请参考官网:Kafka quickStart这里说一下自己踩得坑:我使用的是云服务器,按照官网教程安装完成后服务器本机创建topic、发送消息都ok。就是自己电脑一直连接不上,检查了端口什么的都是放开了的。网上搜了一下,说的是advertised.listeners 需要配置。具体配置如下:listeners=PLAINTEXT://:9092# Hostna...

2019-09-02 16:33:02 216

原创 SpringCloud学习(二)断路器

熔断器雪崩效应在微服务中通常会有多个服务层的调用,基础服务的故障可能造成级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。...

2019-07-12 21:41:32 212

原创 explain用法和结果分析

1. EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。通过explain我们可以获得以下信息:表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询使用方法:explain + sql语句。 ...

2019-06-26 14:59:12 35745 1

原创 SpringCloud学习(一)入门服务的注册、发现、调用

服务的注册与发现注册中心(eureka server)使用eureka作为注册中心。创建eureka-service工程创建工程,选择Spring Initializ如下图下一步->选择cloud discovery->eureka server ,然后一直下一步就行了。配置servereureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册...

2019-06-14 16:50:46 127

原创 redis学习(二)redis集群

虽然redis有持久化功能能够保障redis服务器宕机也能恢复并且只有少量的数据损失,但是由于所有数据在一台服务器上,如果这台服务器出现硬盘故障,那就算是有备份也仍然不可避免数据丢失的问题。在实际生产环境中,我们不可能只使用一台redis服务器作为我们的缓存服务器,必须要多台实现集群,避免出现单点故障;下面来看下redis的集群策略主从复制复制的作用是把redis的数据库复制多个副本部署在不同...

2019-04-03 21:31:21 291

原创 redis学习(一)redis原理

过期时间的设置redis中提供了expire命令来设置一个key的过期时间。expire命令为:expire key seconds 时间单位为秒 返回1标识设置成功,返回0表示设置失败或者key不存在ttl key 返回过期时间。当前key不存在返回-2 未设置过期时间返回-1persist命令 将当前key设置为永久,如果该命令执行成功或者成功清除了过期时间,则返回1 。 否则...

2019-04-02 07:12:54 204

原创 搭建基于mysql验证的ftp并实现零配置新增虚拟用户

配置FTP服务器 1.在FTP服务器上安装vsftpd和pam_mysql包 centos6.x中安装 pam_mysql需要先安装,epel源 yum -y install epel 安装完成后可用命令 :yum repolist 检查是否安装成功 接下来安装pam_mysql 和vsftpd yum installvsftpd pam_mysql...

2019-03-27 17:09:48 186

原创 centos 6.5配置epel源

EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/CentOS提供他们默认不提供的软件包。1. 确认CentOS 的版本#cat /etc/issue2. 下载epel 的rpm 安装包下载CentOS 6版本所对应的epel 的版本#wget http:/...

2019-03-21 10:20:19 695

原创 Java SPI 学习

什么是java SPI SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。目前市面上有很多框架都是用它来做服务的扩展发现,大家耳熟能详的...

2019-03-20 18:04:25 122

原创 TCP的三次握手四次挥手

序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前...

2019-03-12 16:51:14 174

原创 zookeeper学习(十)

  利用zookeeper做配置中心在zk中创建持久化节点并赋值,如图我创建jdbc连接相关的参数值新建一个zookeeper配置中心类,从zookeeper动态获取数据库配置package com.pxc.zk.learn.configCenter;import com.alibaba.druid.pool.DruidDataSource;import org.apache.c...

2019-01-29 11:39:41 193 1

原创 zookeeper学习(九)

zk实现分布式锁的原理  利用zk的节点特性:临时有序节点。当zookeeper客户端需要抢夺某个资源时,会先在/locker节点下创建临时有序节点,通过监听比自己序号次小的节点的删除事件,来进行一些逻辑,判断自己的节点是否为/locker所有子节点中序号最小的,如果是那么就使用资源,使用完之后,再释放资源删除对应节点。如下图:&amp;amp;mmsp; 原理流程图:Curator实现分布式...

2019-01-21 16:16:29 163

原创 zookeeper学习(八)

&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;今天使用zookeeper的javaApi,来实现zk的基础操作,watch的实现,以及Acl权限的使用基于javaApi实现zk节点的增、删、改countDownLatch.await(); //创建节点(持久化节点) Stri

2018-12-29 18:40:22 94

转载 zookeeper学习(七)

Zookeeper的典型应用场景的介绍,我们只有知道zk怎么用,用在哪,我们才能真正掌握Zookeeper这个优秀的分布式协调框架。首先,我们要知道,Zookeeper是一个具有高可用、高性能和具有分布式数据一致性的分布式数据管理及协调框架,是基于对ZAB算法的实现,基于这样的特性,使ZK成为解决分布式一致性问题的利器,同时Zookeeper提供了丰富的节点类型和Watcher监听机制,通过这两...

2018-12-29 17:12:08 136

转载 zookeeper学习(六)

ZAB协议概述 在前面的文章中,介绍了经典的分布式数据一致性算法Paxos算法,但事实上zookeeper并没有采用完全的Paxos算法,而是采用了一种称为Zookeeper Atomic Broadcast(ZAB,zookeeper原子消息广播协议)。ZAB 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议。在 ZooKeeper 中,主要依赖 ZA...

2018-12-29 17:00:21 99

转载 zookeeper学习(五)

在前一篇中,写了Zookeeper的相关概念,以及节点、acl,watcher等机制,这一篇就写一下保证ZK集群高可用及数据一致性的底层实现算法:ZAB协议。ZAB协议概述在前面的文章中,介绍了经典的分布式数据一致性算法Paxos算法,但事实上zookeeper并没有采用完全的Paxos算法,而是采用了一种称为Zookeeper Atomic Broadcast(ZAB,zookeeper原子...

2018-12-29 16:39:59 257

转载 zookeeper学习(四)

在zookeeper系列的前三篇,介绍分布式数据一致性的相关原理及经典的分布式一致性算法,比如:2PC,3PC,Paxos算法。在本篇,我们正式开始介绍Zookeeper,Zookeeper是分布式一致性问题的工业解决方案,是常用的分布式协调框架。本篇,会介绍Zookeeper的基本概念,数据模型,节点特性,Watcher机制及ACL等机制,在后边我们会介绍Zookeeper为了保证一致性使用的算...

2018-12-29 16:37:12 266

转载 zookeeper学习(三)

      在上一篇中,我们介绍了为什么使用分布式,为什么会出现分布式数据一致性问题,以及相关分布式理论:CAP/BASE理论,这些是我们进行后边介绍的分布式一致性算法的基础,正是由于在系统的可用性和数据一致性之间反复的权衡,于是出现了一系列的一致性协议,如2PC,3PC,paxos算法等。本篇就介绍两个最常见的分布式一致性算法:两阶段提交(2PC),三阶段提交(3PC)以及它们的相关应用。其...

2018-12-29 16:32:19 272

转载 zookeeper学习(二)

         Zookeeper系列,会从分布式一致性理论开始介绍,设计诸如:CAP,BASE理论,分布式一致性算法:2PC,3PC,Paxos,ZAB以及Zookeeper的节点特性,Zookeeper如何保证一致性及高可用,最后会介绍zk的各种应用。         关于数据的一致性,我们在数据库中有了解过,因为数据库事务的ACID特性的C就代表一致性,这ACIC可以简单的把一致性理解为...

2018-12-29 16:20:51 149

空空如也

空空如也

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

TA关注的人

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