- 博客(135)
- 资源 (15)
- 收藏
- 关注

原创 SpringBoot yml配置文件为变量赋值
1. 创建person类和Car类,并在person类上加注释@ConfigurationProperties(prefix = "person"),表明这个类的成员变量的值从配置类注入。注意这里的person类的成员变量需要有get/set方法。import org.springframework.boot.context.properties.ConfigurationProp...
2019-07-14 19:58:47
7777
原创 java 面试消息题1-13
当Slave切换成Mater以后,锁就不存在了,其他的Redission可以加到锁了,这时候就出现了多个线程同时进入锁的问题呢。简单的说,当需要判断一个值(“abc”)是否存在时候,把这个值进行取hash值,用三个不同的函数可以算出三个不同的数值,再把这三个值对应的二进制数字位数上的值标记为1.只有判断处这三个位置的值都为1的时候这个值才有可能存在。假如你设置了一个固定的超时时间, 但是程序的运行时间就是比你设置的时间长,到时间之后就需要把锁释放了,这时候其他的程序就行进到这段加锁的代码里面来。
2023-04-11 20:05:14
724
原创 Mongo 简单查询
插入用来测试的数据db.inventory.insertMany([{ item: "journal", qty: 25, status: "A", size: { h: 14, w: 21, uom: "cm" }, tags:[ "blank", "red" ] },{ item: "notebook", qty: 50, status: "A", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },{ item: "
2022-03-03 20:48:02
825
原创 MongoDB创建用户设置密码和基本命令的使用
第一步 连接本机# mongo ‐‐host <HOSTNAME> ‐‐port <PORT>mongo #我的是默认本机,所以不用跟参数第二步 设置密码> use adminswitched to db admin> db.createUser({... user: "allen",... pwd: "111111",... roles: [ "root" ]... })Successfully added user: { "user..
2021-06-23 22:08:49
544
原创 MongoDB的安装使用
以JSON为数据模型的文档数据库,一个文档就是一个JSON对象属于应用型数据库,类似Mysql,存储海量数据,但是相对Mysql,Mongo访问su更快。
2021-06-23 21:16:04
167
1
原创 Kafka的ReBalance机制和高水位机制
分区与消费者的分配平衡机制。partition.assignment.strategyrange -round-robinsticky
2021-06-20 20:48:09
605
2
原创 Kafka整合SpringBoot
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-06-20 18:28:01
209
原创 kafka的Leader选举机制
Kafka设计原理详解Kafka核心总控制器Controllerkafka的所有Broker都会注册到kafka集群中去。kafka集群会选举一个Broker作为Leader作为kafka七群的总控制器Controller。他负责管理整个集群所有分区Partition和副本follower的状态。当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本。当检测到某个分区的ISR集合发生变化时,由控制器负责通知所有broker更新其元数据信息。当使用kafka-top
2021-06-20 18:01:27
4918
1
原创 kafka的java原生使用实例
第一步,导包 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.4.1</version> </dependency> <dependency> <groupId>com.alibaba<
2021-06-07 22:28:13
727
1
原创 Kafka的集群搭建分区介绍
对于kafka来说,一个单独的broker意味着kafka集群中只有一个节点。要想增加kafka集群中的节点数量,只需要多启动 几个broker实例即可。为了有更好的理解,现在我们在一台机器上同时启动三个broker实例。1. 将kafka的配置文件准备三份[allen@localhost config]$ pwd/home/allen/packages/kafka_2.13-2.8.0/config[allen@localhost config]$ cp server.properties
2021-06-06 22:26:14
398
2
原创 Kafka入门,下载,安装,配置,基本使用
Kafka基本概念kafka是一个分布式的,分区的消息(官方称之为commit log)服务。它提供一个消息系统应该具备的功能,但是确有着独 特的设计。可以这样来说,Kafka借鉴了JMS规范的思想,但是确并没有完全遵循JMS规范。Kafka中一些基本概念。安装并配置kafka安装和配置的步骤,可以参考下面的官网http://kafka.apache.org/quickstart下载,解压wget https://mirrors.bfsu.edu.cn/apache/k...
2021-06-03 22:07:24
212
原创 Rabbit MQ 通配符(Topic)的java实例
1. 创建通配符模式下的交换机通配符的规则:1. # :代表没有或一个或多个单词(单词与单词之间用“.”分割); 2. * :代表一个零个或一个单词;例如: aa.#.bb.* : 匹配的: aa.HH.CC.bb 、 aa.bb 、aa.bb.cc 不匹配: aa.cc 、 aa.bb.cc.dd2. 消费者1 public class BiaDu { public static void main(String[].
2021-05-11 22:35:13
287
2
原创 Rabbit MQ 定向(Direct)的java实例
1. 参照上一个例子, 创建一个type是direct的交换机2. 创建消费者1, 并在消费者中绑定交换机与queue的关系。public class BiaDu { public static void main(String[] args) throws IOException { Connection connection = RabbitUtils.getConnection(); final Channel channel = connec.
2021-05-11 21:36:31
271
1
原创 Rabbit MQ 广播(fanout)的java实例
RabbitMQ 基础架构如下:前一篇文章,有关于1和2的例子下面介绍3 Publish/SubScribe的例子3与2 的区别是:2 中的么个consumer 收到的msg是互斥的,加起来是一个总和。3中的每个consumer收到的msg是一样的,自己就是一个总和,msg被复制了多份。在介绍3的例子之前,需要了解下交换机:lExchange:交换机(X)。一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。.
2021-05-11 21:10:35
1202
2
原创 Rabbit MQ 的使用实例
1. 创建一个User , Allen2. 创建一个Virtual Host3. 为User设置访问Virtual hosts权限4. 使用Allen 这个user创建一个Queue 名字为Allen_Msg_Queue。注意需要退出当前登录然后用Allen这个用户登录进去创建5. 使用procedcer 往这个queue上面发送msgpublic class Producer { public static void main(.
2021-05-08 11:33:43
1547
1
原创 Rabbit MQ安装与使用
Rabbit MQ 的安装第一步 准备好安装包第二步 安装安装顺序分别安装erlang,socat,rabbitmq,如下[root@localhost packages]# rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm Preparing... ################################# [100%]Updating / installing... 1:er
2021-05-05 22:03:38
699
1
原创 Message Queue(消息队列)的基本概念和使用场景
消息队列的概念Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。消息队列本质如下图, 其本质就是用这种中间件的方式来代替远程调用的方式。为什么要使用消息队列?一. 解耦接触系统于系统间的强依赖关系。二. 异步提速使用消息队列在不同系统直接通信,比以前的直接调用的方式更快。三. 消峰填谷使用消息队列后会遇到什么问题?一 引入了外部依赖,一档MQ宕机,会对业务造成严重影响二 增加复杂性,要
2021-05-05 20:17:24
885
原创 Zookeeper 的应用场景
Zookeeper 的应用场景:Zookeeper场景一 - 分布式锁非公平锁实现原理,都去执行创建 create -e /exclusive/lock这个节点,是执行成功就谁拿到锁。这个实现方式在并发问题比较严重的情况下,性能会下降的比较厉害,主要原因是,所有的连接 都在对同一个节点进行监听,当服务器检测到删除事件时,要通知所有的连接,所有的连接同时 收到事件,再次并发竞争,这就是羊群效应。公平锁的实现原理,借助于临时顺序节点,可以避免同时多个节点的并发竞争锁,缓解了服务端压力。1
2021-04-27 22:18:55
217
原创 ZK 的 Curator java客户端使用实例
Curator是一套开源的java操作zookeeper客户端框架,由netflix公司推出的。Curator是目前使用最多,对zookeeper版本支持最好的第三方客户端。Curator对很多zookpeeper的服务功能进行了封装,例如如下场景:Leader选举分布式计数器分布式锁会话重新链接Watch反复注册多种异常处理场景下面接受Curator的java 客户端使用实例:Curator 建立与zk的连接, 这里提供了2种风格的写法: public st
2021-04-12 23:16:29
328
原创 Zookeeper Java客户端实例以及设置循环监听
Zookeeper Java 客户端实例Zookeeper 的client端和服务端的代码没有分离,所以只用引用一个jar就行。这里版本最好与你服务端安装的zookeeper版本一致,以防一些兼容性问题。<dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.5.8</versio
2021-04-09 22:15:50
378
原创 搭建Zookeeper集群详细步骤
如何使用zookeeper, 如下图, 可以将配置信息放在/order/config里面, 当有人取更新里面的数据的时候,其他的节点都会收到更新的信息。ZK的客户端工具:[allen@localhost ~]$ cd packages/[allen@localhost packages]$ cd apache-zookeeper-3.5.8-bin/[allen@localhost apache-zookeeper-3.5.8-bin]$ lsbin conf docs lib
2021-04-08 20:42:05
231
原创 zookeeper事件监听机制
通过get -w 可以在某个节点上添加一个监听事件,当节点下面有任何变动,会通知到客户端。这样客户端就可以实时的感受到服务端的数据的实时变化。添加事件,对数进行监听,被监听的节点数据发送变化时会收到通知,就是你重新设置的值和一以前的值一样,也会通知的,因为数据没变,但是目录的元数据也发变化了:对目录进行监听 ,当目录里面的结构发送变化是,客户端会收到通知,注意所有的通知都是一次性的,通知了一次后对应的事件就被移除了。添加树的节点监听 ls -R /test1对/test1 下面的所有
2021-04-05 20:23:43
495
原创 Zookeeper 创建6种的节点实例
Zookeeper是Apache Hadoop的一个子项目,它主要用来解决分布式系统中经常遇到的一些数据管理问题,例如,统一命名,状态同步,集群管理,分布式应用配置管理。Zookeeper的定位,这个动物园的管理者,如下图Zookeeper又2个特性特性一树形结构,每个子目录可以被增加删除特性二 事件监听机制特性一zookeeper可以对目录树中的任意一个节点进行监听。监听是只监听目录下面的目录变化。zookeeper类似一个文件系统,每个子目录被称为目录节点,允许我们自..
2021-04-05 19:15:57
6544
原创 Redis编程的规范与部分优化建议
为了使reids配置更优,在使用redis的时候需要注意一些规范,首先要注意,redis和任何cache都不适合写操作比较多的场景,只时候读多写少的场景。1. 定义key的时候,加上前缀,防止不同业务的key冲突trade:order:cloth:Tshirt:10011不要再key里面加特殊字符,尽量的让key简洁,不要让key占太多空间user:{uid}:friends:messages:{mid} ==> u:{uid}:fri:msg:{mid}不要大量使用的bigkey
2021-04-05 12:03:48
150
原创 企业级架构下Redis存在的一些问题和解决方案
在企业级的互联网项目中,通常使用的是多级的缓存架构,如下的一个架构例子:如上的这个架构存在这一些需要注意的问题, 这些问题也是通常使用缓存架构时都会遇到的问题,下面介绍了一些常见问题和解决方案:缓存穿透缓存存在的目的是为了保护后端, 让大量的访问请求都直接从缓存层返回数据,不用打到存储层的数据库里面去。缓存穿透就是大量的访问没有被缓存层有效的拦截,都直接访问到数据层去了。通常导致缓存穿透的原因有:有人恶意的攻击,使用些不存在的产品代号,进行大量的访问,造成大量空命中。 自身业务逻辑
2021-04-05 10:59:35
325
1
原创 Redis实现分布式锁Redisson
自己来写一套redis 分布式锁的的逻辑,如下需要考虑的的问题很多, 很难把每个细节都考虑到。1. 必须把delete key放到finally里面,因为中间出现exception,这个锁就被永远卡住了2. 必须给一个锁的最大占用时间,万一没有执行到delete key程序挂了,这个锁就被永远卡住了3. 给每个锁一个id,当一段代码执行时间比较长,超过了最大占用时间,锁被释放了。后面一个程序进来到所里面,这时候第一个程序执行完成,走到delete lock。4. 锁续命,用一个守护线程一直来检查当
2021-04-02 18:16:42
187
原创 Redis底层设计原理
Redis是C语言实现的Redis的Key和Value都是Sting,C语言中 char data[]="Allen"Redis在C语言中自定义了一个数据结构来存储String,SDSSDS = Simple dynamic string 简单动态字符串特点:1. 二进制安全的数据结构2. 提供了热潮预分配机制,避免了频繁的内存分配3. 兼容C语言的函数库...
2021-03-16 22:46:06
313
1
原创 使用Jmeter模拟1秒发送100个请求
在分布式系统中,使用syncnized是没有用的,无法达到锁的效果,如下例子:1. 安装并配置后一个nginx服务器,nginx的配置文件如下,下面配置的server是我IDEA启动的服务对应的机器的ip,我通过修改yml的端口号,在IDEA中启动了2个服务8080和8081。这里用到了nginx的负载均衡功能。http { include mime.types; default_type application/octet-stream; sendfile
2021-03-16 22:45:19
5304
原创 Redis集群扩容与下线步骤
当双手十一来临时,需要临时增加Redis集群的数量来缓解压力在集群中增加Redis节点步骤如下:1. 使用链接集群,并通过cluster nodes来查看当前集群的信息[allen@localhost ~]$ cd packages/redis-5.0.3/[allen@localhost redis-5.0.3]$ src/redis-cli -h 192.168.0.103 -p 8003 -a allenWarning: Using a password with '-a' or '
2021-01-25 22:42:17
839
原创 Redis 集群的原理分析
Redis 集群的原理分析Redis将所有数据划分问16384个槽位slots,每个节点负责一部分槽位,槽位的信息存在于每个节点中。当Redis Cluster的客户端来链接集群时,会得到一份集群的槽位信息,这样当客户端需要查找存储每个值时,就直接去链接对应的节点就行了,同时如果槽位信息改变了,存在客户端与服务器不一致情况,需要纠正机制来实现校验和调整。槽位定位算法key的hashcode%16835跳转重定位当客户端向一个,错误的节点发出了指令,节点发现所访问的槽位不归自己所有时,
2021-01-24 21:50:08
189
原创 Redis Java客户端-通过原生jedis和SpringBoot操作Redis集群
Redis java客户端操作集群1. 使用Jedis java原生操作redis集群public class RedisCluster { public static void main(String[] args) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(20); jedisPoolConfig.setMa
2021-01-21 20:37:24
350
1
原创 Redis删除并重新创建一个集群
发现自己搭建的集群有问题, 如何删除现有集群并重写搭建:1. 登录每台机器查看启动的redis服务,然后停掉所以的redis服务ps -ef| grep rediskill 12455 124602. 登录每台机器,删除上个集群的相关文件[allen@localhost redis-5.0.3]$ cd 8001[allen@localhost 8001]$ ls8001.log appendonly.aof dump.rdb nodes-8001.conf[allen@l
2021-01-20 20:52:23
3143
8
原创 Linux 网络配置
1. 创建虚拟机的时候,注意选择桥接2. 用自己的常用账号登陆linux机器。然后按照下面的步骤配置网络。3. 基本上前面2步完成后重启机器就可以了。如果有问题继续下面的配置[root@localhost network-scripts]# pwd/etc/sysconfig/network-scripts[root@localhost network-scripts]# vi ifcfg-ens33TYPE=EthernetBOOTPROTO=t=static.
2021-01-20 20:44:10
145
原创 Redis 集群架构的搭建基于5.03
哨兵架构存在的一些缺陷:1. 瞬断问题,哨兵架构中,当主节点挂断后需要选举,然后切换,中间有几秒到几十秒的服务暂停时间2. 高并发受限问题,哨兵对外只有一个节点提供写服务,一台就几w的QPS。3. 单个节点的内存不能设置过大,也就10G左右,否者导致持久化文件过大,影响数据恢复和主从同步效率。Redis集群架构可以解决上面提到的问题,redis集群是有多个主从节点小群组成的分布式服务器集群特点: 复制,高可用,分片特性,没有中心节点,可水平扩容。官网称可以支持上万个节点(推荐不超过1
2021-01-19 22:12:21
1081
4
原创 linux不同机器间共享目录,目录绑定-基于NFS
我现在有2台机器,192.168.0.101和192.168.0.102192.168.0.101作为服务端,192.168.0.102作为客户端,/home/allen/packages/share为共享目录。然后共享目录建立好了后, 我会在客户端的共享目录中创建一个文件,然在服务端去查看是否有该文件的存在一 在客户端和服务端分别安装ntfs和rpcbind1. 安装ntfs-utilsyum -y install ntfs-utils2.安装rpcbindyum ins.
2021-01-17 22:26:27
437
原创 Redis哨兵架构的搭建测试实例
主从架构,如果主节点挂了,需要运维人员手动处理,重写配置主节点。哨兵架构可以可以解决这个问题, 当主节点挂了之后,哨兵会自动的选举一个节点当作主节点。sentinel哨兵是图书的redis服务,不提供读写服务,主要用过来监控redis实例节点。哨兵架构下client端第一次从哨兵找出redis主节点,后续就支持访问redis的主节点,不会每次都通过sentinel代理访问reids主节点,当redis主节点发送变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端,redis
2021-01-13 22:14:29
482
1
原创 Redis的批处理命令-管道和Lua脚本
redis 管道,一次性的把多条命令发送到服务器端,节省网络开销管道没有考虑事务和一致性的问题,如果pipeline有10条命令,其中地2-4条没有成功,其他的命令也会提交,只是把结果返回回来。public class RedisPipeLine { public static void main(String[] args) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPo
2021-01-11 21:59:35
734
原创 Redis在java中的第一个Helloworld
第一步 - 加入Maven dependency: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version> </dependency>第二步 - 在java中的使用:JedisPoolCon.
2021-01-11 08:46:05
177
原创 Redis的主从架构搭建
一个主节点,一到多个从节点,主节点执行写操作,从节点进行数据备份。也可以让从节点提供写读操作,减轻主节点的压力。Redis主从架构搭建1. 从src/redis.conf重新复制一份配置文件cp redis.conf redis.conf_12. 修改新建的文件redis.conf_1,配置如下信息port 6380 #修改端口号,代表本机另外一台机器pidfile /var/run/redis_6380.pid
2021-01-07 20:48:03
194
航空客运订票系统 c语言 数据结构作业
2008-12-29
本程序是模拟航空客运定票的业务活动,包括查询航线,客票预定和办理退票业务等活动。有了这个程序可以实现借助计算机实现上述业务的办理。
2008-12-25
按二叉树的形状打印二叉树
2008-12-10
学生分数的统计,统计某分数的学生人数
2008-12-10
回文,输入一段文字,会判断你输入的文字是不是回文
2008-12-09
商品货栈管理,通过栈和队列对商品货栈的管理
2008-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人