- 博客(87)
- 资源 (7)
- 问答 (3)
- 收藏
- 关注
原创 jetbrains mono字体安装方法(LInux Windows MacOS系统)
1、进入官网网址:https://www.jetbrains.com/lp/mono/网站风格还是比较舒服的此处我用的是idea使用该字体点击download font,下载到本地Windows系统用户:选中所有字体,右键安装,完成后重启intellJ IdeaPreferences/Settings → == Editor == → == Font ==MacOS:...
2020-01-19 12:26:09 22882 5
原创 JavaScript清空数组的三种方法
1、length 用length方法可以很轻松地清空数组,代码示例:var arr = [1,2,3];console.log(arr);arr.length = 0;console.log(arr);结果如下:2、splisesplice() 方法向/从数组中添加/删除项目,然后返回被删除的项目var arr = [1,2,3]...
2018-05-20 20:17:42 77649 8
原创 并发编程ReentrantReadWriteLock 和 StampLock详解
本章主要说明ReentrantReadWriteLock 读写锁及StampLock的逻辑及原理
2023-07-03 11:24:48 348
原创 CentOS 7 通过kubeadm单机安装Kubernetes与Dashboard
文章目录1. 安装准备1.1 安装依赖1.2 安装docker1.3 系统基础设置2. 安装kubeadm kubelet kubectl2.1 配置yum源2.2 安装kubeadm&kubelet&kubectl2.3 统一k8s和docker的cgroup2.4 启动并设置开机自启动kubelet2.5 kubeadm init初始化master2.6 查看Node状态3. 安装CNI网络插件4. 安装DashBoard4.1 安装dashboard4.2 修改资源4.3更改ser
2022-02-14 06:30:00 878
原创 Pulsar基础(七)—Topic常用操作
topic基本操作创建Topic创建一个没有分区的Topicbin/pulsar-admin topics create persistent://tenant/namespace/topic创建一个有分区的Topicbin/pulsar-admin topics create-partitioned-topic persistent://tenant/namespace/topic --partitions 4无论是有分区还是没有分区, 创建topic后,如果没有任何操作, 60s后p
2022-02-10 06:30:00 5669
原创 pulsar基础(六)——namespace的基本操作
文章目录namespace基本操作创建命名空间获取命名空间列表删除命名空间其它操作获取namespace相关的配置策略配置复制集群设置复制集群获取复制集群列表获取backlog quota策略移除quota策略配置持久化策略设置持久化策略获取持久化策略配置消息存活时间(TTL)设置存活时间获取存活时间删除存活时间配置Topic的消息发送速率设置Topic的消息发送的速率获取topic的消息发送速率配置Topic的消息接收速率设置Topic的消息接收的速率获取topic的消息接收速率配置复制集群设置Topic
2022-02-09 06:30:00 1916 1
原创 pulsar基础(五)—多租户的操作
多租户操作获取租户列表tenants listcd /export/server/brokers/bin./pulsar-admin tenants list创建租户在创建租户时,可以使用-r 或者 --admin-roles标志分配管理角色。可以用逗号分隔的列表指定多个角色cd /export/server/brokers/bin./pulsar-admin tenants create my-tenant./pulsar-admin tenants create my-tenan
2022-01-27 06:30:00 1776
原创 pulsar基础(四)—namespace 和topic介绍
namespace 和topic介绍什么是命名空间(名称空间)namespace是Pulsar中最基本的管理单元,可以在namespace中进行设置权限、调整副本设置,管理跨集群的消息复制,控制消息策略等关键操作。一个主题topic可以继承其所对应的namespace的属性,因此我们只需对namespace的属性进行设置,就可以一次性设置该namespace中所有主题topic的属性。namespace分类namespace有本地namespace和全局namespace两种本地nam
2022-01-26 06:30:00 1468
原创 Pulsar基础(三)—多租户模式介绍
多租户模式介绍什么是多租户?多租户是一种架构,目的是为了让多用户环境下使用同一套程序,且保证用户间数据隔离简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。多租户这一特性,使得各个部门之间可以共享同一份数据,不用单独部署独立的系统来操作数据,很好的保证了各部门间数据一致性的问题,同时简化维护成本。Pulsar 的多租户设计符合以下要求:使用身份验证、授权和 ACL(访问控制列表)确保其安全性为每个租户强制执行存储配额支持在运行时更改隔离机制,从而实现操作成本低和管理
2022-01-25 06:30:00 2750 1
原创 Pulsar基础(二)——Pulsar组件介绍
Pulsar 组件Brokerbroker是一个无状态组件, 主要负责运行另外的两个组件:一个HTTP服务器,它暴露了REST系统管理接口以在生产者和消费者之间进行Topic查找的API一个调度分发器,它是异步的TCP服务器,通过自定义二进制协议应用于所有相关的数据传输 出于性能考虑,消息通常从Managed Ledger缓存中分派出去,除非积压超过缓存大小。如果积压的消息对于缓存来说太大了, 则Broker将开始从BookKeeper那里读取Entries(Entry同样是BookK
2022-01-24 21:45:00 828
原创 Pulsar基础(一)——Pulsar介绍
Pulsar介绍Apache Pulsar 是一个云原生企业级的发布订阅(pub-sub)消息系统,于2016年开源,Apache软件基金会顶级开源项目。Pulsar在Yahoo的生产环境运行了三年多,助力Yahoo的主要应用,如Yahoo Mail、 Yahoo Finance、Yahoo Sports、Flickr、Gemini广告平台和Yahoo分布式键值存储系统SherpaPulsar的功能与特性多租户模式(Multi-tenancy)Pulsar能为特定的租户预留合适的存储空间、应用授
2022-01-23 06:00:00 2225
原创 关于Zookeeper权限的一些坑
由于业务需求,需要给Zookeeper去配置一个权限,什么类型都可以。查阅技术文档后,选择了可以通过配置文件配置的SASL模型。auth、digest都无法通过配置文件去配置用户名和密码。然而在写Java连接代码时,遇到了问题问题在Java代码中,通常使用addAuthInfo(schema,auth)来给连接添加权限,digest、auth都是通过该方法添加权限,而在尝试之后,发现无论如何都没法通过addAuthInfo(schema,auth)通过SASL认证。原因在查阅官方文档后,发现:若使用
2022-01-20 06:30:00 785
原创 Kubernetes通过一行shell命令给pod中的zk节点添加权限
问题一个需求:需要写一个shell脚本部署Zookeeper,并且在脚本里需要去对zk的 /节点进行digest权限配置。尝试了以下命令:kubectl exec -ti podName -n namespace -- /bin/sh&&zkCli.sh&&setAcl digest:username:password发现执行后只执行了zkCli.sh命令,后面的setAcl命令并未执行。后来猜测,执行的命令需要在pod中可以识别才会执行,因此无法通过该命令直接执
2022-01-19 17:02:06 1188
原创 Go语言基础(五)——指针
指针指针的值是存储变量的 地址。一个指针指示值所在的位置。不是所有的值都有地址,但是所有的变量一定都有。指针可以在不知道变量名的情况下,间接读取或更新变量的值。获取值的地址通过 & 符号可以获取变量的地址,*号获取指针指向地址所对应的值。 x := 1 p := &x fmt.Println(p) fmt.Println(*p)输出:0xc0000a4058指针可以继续通过&来获取指针所对应的地址 x := 1 p := &x fmt.
2022-01-18 06:30:00 423
原创 Go语言基础(四)—String与其他基本数据类型的转换
Go语言中,不同类型的变量之间不能自动转换,需要显式转换,这与Java和C都有区别var i int32 =100var n1 float32 = float(i) //将int32转换为float32注意:若将int64转换成int8,编译时不会报错,但是结果按照溢出处理,所以转换需要考虑范围。func main() { var in64 int64 = 1651235425 var in8 int8 = int8(in64) fmt.Println("in64=", in64, "in8
2022-01-17 06:30:00 886
原创 Go 语言基础(三)——基本数据类型
数据类型基本数据类型数值型整数类型:int、int8 、int16、int 32 、int64、uint、uint8、uint16、uint32 、uint64int unint的大小与系统有关,默认声明intGo在使用时遵保小不保大,尽量使用占用空间小的数据类型查看占用空间用unsafe.Sizeof()浮点类型:float32、float64字符型byte布尔型bool字符串型StringJava 等其他语言归于引用数据类型,不属于基本数据类型,注意区分复杂数据类型
2022-01-16 08:00:00 442
原创 Go语言(二)—基本概述
变量概述变量是程序中数据的标识,通过变量,我们可以找到一个唯一的数据。变量的使用变量的声明(定义变量)非变量赋值使用变量若定义变量但并未使用,则会报错:unused variableGo 语言变量的声明指定变量类型var i intfmt.Println(i)这种定义方法下,变量的默认值为对应初始值根据值自行判断变量类型(类型推导)var num = 10.00省略varname := "tom"fmt.Println("name=",name)多变量声明局
2022-01-15 06:30:00 316
原创 Go语言基础(一)——HelloWorld
文章目录hello worldgo的运行区别:hello worldpackage main //包名import "fmt" //导入fmt库func main(){ fmt.Println("hello world")}由HelloWorld引出的go语言特性:Package每个文件夹内仅能有一个package名,但是该名可以与文件夹名不同每个应用程序应该有一个main packagefmt包含了标准输入输出的函数func main若未定义in
2022-01-14 06:30:00 6835
原创 shell(一)——概述、变量、运算符
文章目录shell概述shell解析器Linux提供的shell解析器:shell脚本入门脚本格式helloworld脚本的执行shell中的变量系统变量常用系统变量自定义变量基本语法变量定义规则特殊变量$n∗和* 和∗和@$?运算符基本语法:shell概述shell是一个命令行解释器,它接收应用程序/用户的指令,调用操作系统内核shell还是一个功能强大的编程语言,易编写,易调试,灵活性强shell解析器Linux提供的shell解析器:/etc/shells/bin/sh/etc/sh
2022-01-13 06:30:00 297
原创 RocketMQ(十三)——实战-普通消息的发送与消费
文章目录普通消息消息发送同步发送消息异步发送消息单向发送消息代码示例导入RocketMQ的依赖定义同步消息的发送者定义异步消息的发送者定义消费者普通消息消息发送同步发送消息同步发送消息是指:Producer发出一条消息后,会在收到MQ返回的ACK后才发送下一条消息。该方式的消息可靠性最高,但是消息发送效率太低。异步发送消息异步发送消息是指:Producer发出消息后无须等待MQ返回ACK,直接发送下一条消息。该方式有一定可靠性,发送效率相对同步较高单向发送消息单向发送消息是指:Produ
2022-01-12 06:30:00 528
原创 RocketMQ(十二)消息堆积与消费延迟
RocketMQ(十二)消息堆积与消费延迟产生背景消息处理流程中,如果Consumer的消费速度跟不上Producer的发送速度,MQ中未处理的消息会越来越多,这部分消息就被称为 堆积消息。消息出现堆积会导致消费延迟,以下场景需要重点关注消息堆积和消息延迟的问题。业务系统上下游能力不匹配造成的持续堆积,且无法自行恢复业务系统对消息的消费实时性要求较高,即使是短暂的堆积造成的消费延迟也无法接受。Consumer使用长轮询Pull模式消费消息时,分为以下两个阶段:消息拉取Consumer通过
2022-01-11 06:30:00 4248
原创 RocketMQ(十一)——消费的幂等性
消费幂等定义当出现消费者对某条消息重复消费的情况时,重复消费的结果与消费一次的结果是相同的,并且多次消费并未对业务系统产生任何负面影响,那么这个消费过程就是消费幂等的幂等:若某操作执行多次与执行一次对系统产生的影响是相同的,则称该操作是幂等的。在互联网应用中,尤其在网络不稳定的情况下,消息很有可能会出现重复发送或重复消费。如果重复的消息可能会影响业务处理,那么就应该对消息做幂等处理。常见消息重复的几种情况发送消息时重复当一条消息已被成功发送到Broker并完成持久化,此时出现了网络波动,从
2022-01-10 06:30:00 860 1
原创 ElasticSearch概述(一)——简介
文章目录基本介绍Elastic 介绍ElasticStack常规搜索的弊端全文搜索引擎:Elasticsearch和Solr之间如何选择?ES 的优点ES 案例基本介绍Elastic 介绍Elasticsearch是一个分布式,RESTful风格的搜索和数据分析引擎,可以解决各种用力。它也是Elastic Stack的核心,集中存储数据,帮助发现各种情况。ElasticStack包括 Elasticsearch 、Kibana、Beats、和Logstash (被合称为ELK Stack)能够安
2022-01-07 06:30:00 192
原创 Zookeeper(三)——选举机制
Zookeeper 选举机制第一次启动(五个节点):服务1启动,发起一次选举,服务器1投自己一票,不够半数以上(3票),选举无法完成,服务器1状态为LOOKING服务2启动,发起一次选举,服务器1和2分别投自己一票并交换选票信息,此时服务器1发现服务器2的myid比自己目前投票选举的更大,更改选票推举服务器2服务3启动,发起一次选举,此时服务器1和2都会更改选票为服务器3。此次投票结果:服务器1为0票,服务器2为0票,服务器3为3票,超过半数,服务器3当选Leader,1,2修改状态为FOLLOW
2022-01-07 06:30:00 167
原创 RocketMQ(十)——Consumer消费进度(Offset)的管理
文章目录Consumer消费进度(Offset)的管理Offset本地管理模式Offset远程管理模式offset用途重试队列offset的同步提交与异步提交Consumer消费进度(Offset)的管理消费进度offset是用来记录每个Queue的不同消费者组的消费进度的。根据消费进度记录器的不用,可以分为两种模式:本地模式和远程模式Offset本地管理模式当消费模式为 广播消费时,offset使用本地模式存储。因为每条消息会被素有的消费者消费。每个消费者管理自己的消费进度,各个消费者之间
2021-12-31 07:00:00 4791 2
原创 RocketMQ(九)—Queue分配算法
Queue分配算法一个Topic中的Queue只能由Consumer Group中的一个Consumer进行消费,而一个Consumer可以同时消费多个Queue中的消息。常见的Queue分配算法有四种,分别是:平均分配策略、环形平均策略、一致性hash策略、同机房策略。这些策略是通过在创建Consumer时的构造器传进去的平均分配策略计算公式:avg=QueueCountConsumerCountavg=\frac{QueueCount}{ConsumerCount}avg=Consumer
2021-12-30 07:00:00 2496
原创 RocketMQ(八)——Rebalance机制介绍
Rebalance指的是:将下一个Topic的多个Queue在同一个Consumer Group中的多个Consumer间进行重新分配的过程,该机制是为了提升消息的并行消费能力
2021-12-29 16:50:04 939 2
原创 RocketMQ(七)——消息的消费
消息的消费消费的类型消费者从Broker中获取消息的方式有两种:Pull(拉取)方式和Push(推送)方式Pull方式Consumer主动从Broker中获取消息,主动权在Consumer。一旦获取了批量消息,就会启动消费过程缺点:实时性较弱,Broker中有了新的消息时,消费者不能及时发现并消费优点:便于应用控制消息的拉取Push方式Broker 收到消息后会主动推送给Consumer,该方式获取实时性较高该方式是典型的发布-订阅模式,即Consumer向其关
2021-12-28 08:54:48 1464 2
原创 RocketMQ(六)—IndexFile详解
IndexFile除了通过指定Topic进行消息消费外,RocketMQ还提供了根据Key进行消息查询的功能。该查询通过store/index/infdexFile进行索引实现的快速查询。这个indexFile中的索引数据是包含Key的消息被发送到Broker时写入的。如果消息中没有Key,不会被写入。索引条目结构每个Broker包含一组indexFile,每个indexFile都是以该indexFile被创建时的时间戳进行命名的。每个indexFile由三部分组成:indexHeader(
2021-12-26 07:30:00 3428 4
原创 RocketMQ(五)——工作原理
消息的生产消息的生产过程Producer可以将消息写入到某Broker中的某Queue中,经历了如下过程:Producer发送消息之前,会先向Name Server发出获取Topic的路由信息的请求Name Server返回该Topic的路由表及Broker列表Producer根据代码中指定的Queue选择策略,从Queue列表中选出一个队列,用于后续存储消息Producer对消息做一些特殊处理,例如:消息超过4M,会对其进行压缩Producer向选出的Queue所在Broker发出消息RP
2021-12-25 07:30:00 636
原创 RocketMQ(四)—— 单机与集群安装
文章目录单机安装前置工作硬件需求:软件需求:安装:1. 下载安装包2. 下载的包上传至Linux3. 解压4. 修改初始内存5.启动6. 发送、接收消息测试发送消息接收消息7. 关闭Server控制台的安装与启动1. 下载zip2. 修改配置3. 添加依赖4. 打包5. 启动6.访问集群安装架构安装步骤修改RocketMQ1配置文件修改broker-a.properties修改broker-b.properties其他配置克隆生成RocketMQ 2修改RocketMQ2 配置文件修改 broker-b.p
2021-12-24 08:33:37 361 10
原创 RocketMQ(三)—— 集群模式的说明
集群理论复制与刷盘策略复制:复制策略是Broker的Master与Slave间的数据同步方式。分为同步复制与异步复制:同步复制:消息写入master后,master会等待slave同步数据成功后才向producer返回成功ACK异步复制:消息写入master后,master立即向producer返回成功ACK,无需等待slave同步数据成功异步复制降低系统写入延迟,提高系统吞吐量刷盘:刷盘策略指的是broker中消息的落盘方式,即消息发送到broker内存后消息持久化到磁盘
2021-12-23 08:59:29 1389 3
原创 Linux各个版本防火墙操作(CentOS Ubuntu)
CentOS基本操作开机启动防火墙:systemctl enable firewalld.service开机禁用防火墙:systemctl disable fiewalld.service启动防火墙:systemctl start firewalld禁用防火墙:systemctl stop firewalld检查防火墙状态:systemctl status firewalld 或者firewall-cmd --state开启/关闭固定端口开放端口:firewall-cmd --zon
2021-12-22 10:14:48 257
原创 RAID阵列及常用RAID
RAID阵列历史1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 A Case of Redundant Array of Inexpensive Disks中提出了 RAID 概念 ,即廉价冗余磁盘阵列( Redundant Array of Inexpensive Disks )。由于当时大容量磁盘比较昂贵, RAID 的基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。随着磁盘成本和价格的不断
2021-12-21 10:46:12 895 5
原创 RocketMQ(二)——系统架构及基本知识
架构RocketMQ主要分为四部分组成:生产者(Producer)消息生产者,负责生产消息。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟RocketMQ中的消息生产者都是以生产者组(Producer Group)的形式出现的。生产者组是同一类生产者的集合,这类Producer发送相同Topic类型的消息。一个生产者组可以同时发送多个主题的消息。消费者(Consumer)消息消费者,负责消费消息。一个消息消费者会从Br
2021-12-20 08:48:21 541
原创 RocketMQ(一)——发展历程及基本概念
RocketMQ发展历程及基本概念RocketMQ简介RocketMQ是一个统一消息引擎、轻量级数据处理平台是阿里巴巴开源的消息中间件,2016年成为Apache孵化项目。2017年孵化成为Apache顶级项目(TLP)官网地址发展历程2007年,阿里开始五彩石项目,Notify作为项目中 交易核心消息流转系统应运而生,Notify系统是RocketMQ的雏形2010年,B2B大规模使用ActiveMQ作为阿里的消息内核,阿里需要一个具有 海量堆积能力的消息系统2011年初,kafka
2021-12-16 08:31:14 908 2
原创 一文看懂什么是MQ消息队列
文章目录概念用途流量削峰异步解耦数据收集常见MQRocketMQRabbitMQActiveMQKafkaMQ 常见协议JMSSTOMPAMQPMQTT概念MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。用途流量削峰MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。防止因为短时请求超负荷导致服务器宕机。异步解耦上游系
2021-12-15 14:30:59 1028
原创 Zookeeper(二)——安装
Zookeeper(二)——安装下载安装包https://zookeeper/apache.org前置环境:JDKLinux安装1.安装 JDK2)拷贝 apache-zookeeper-3.5.7-bin.tar.gz 安装包到 Linux 系统下3)解压到指定目录tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/4)修改名称 mv apache-zookeeper-3.5.7 -bin/zookeeper-3
2021-12-15 08:29:15 152
原创 Zookeeper(一)——简介
Zookeeper简介Zookeeper 是一个 开源的、分布式的、为分布式框架提供协调服务的Apache项目,是一个基于观察者模式的分布式服务管理框架,负责存储和管理重要数据,接受观察者的注册。一旦数据的状态发生变化,Zk就负责通知在ZK上注册的那些观察者做出响应的反映。zookeeper=文件系统+通知机制特点:Zookeeper是一个领导者(Leader),多个跟随者(Follower)组成的集群集群上只要有半数以上节点存活,Zookeeper集群就可以正常服务,建议安装奇数台服务器
2021-12-14 09:10:27 152
Navicat Premium 12.zip
2019-12-04
智睿学校网上评课系统
2018-12-26
final boolean [] test = {true }有什么意义吗?
2022-02-14
Zookeeper如何通过配置文件配置Digest权限?
2022-01-17
Java代码链接带SASL认证的Zookeeper
2022-01-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人