- 博客(131)
- 收藏
- 关注
原创 springboot单元测试关闭日志
如果单元测试需要启动springboot,则还需要在application.properties中添加以下内容。容器,则以上内容就可以关闭日志了。如果单元测试没有启动。
2023-12-03 20:59:29 481
原创 clickhouse
https://daiqiaohong.gitee.io/blog/%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%8A%80%E6%9C%AF%E4%B9%8BClickHouse/
2023-09-03 22:34:15 80
原创 11_Redis经典五大类型源码及底层实现
Github:https://github.com/redis/redisredis是key-value存储系统:key一般都是String类型的字符串对象value类型则为redis对象(RedisObject)value可以是字符串对象,也可以是集合数据类型的对象,比如List、Hash、Set、ZsetRedis 6.0[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZSzoTZ18-1692553049425)(/Users/coder/Library/Applicat
2023-08-20 15:00:00 364
原创 09_Redlock算法和底层源码分析
redisson分布式锁:https://github.com/redisson/redisson/wiki/8.-%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E5%92%8C%E5%90%8C%E6%AD%A5%E5%99%A8#84-%E7%BA%A2%E9%94%81redlock。锁变量由多个实例维护,即使有实例发生了故障,锁变量仍然是存在的,客户端还是可以完成锁操作。在解锁的时候,需要判断当前是锁定状态,并且锁是当前线程持有的。RedLock算法设计理念?
2023-08-20 10:37:04 129
原创 08_Redis分布式锁
JUC中AQS锁的规范落地参考,可冲入锁考虑,lua脚本,redis命令 逐步实现分布式锁。防止张冠李戴,不能私下unlock别人的锁,只能自己加锁自己释放,自己上的锁必须自己解。若在redis集群环境下,不能因为某一个节点挂了而出现获取锁和释放锁失败的情况。杜绝死锁,必须有超时控制机制或者撤销操作,有个兜底终止跳出方案。同一个节点的同一个线程如果获得锁之后,它也可以再次获取这个锁。任何时刻只能有且仅有一个线程持有。高并发情况下,依旧性能良好。
2023-08-19 14:48:31 137
原创 03_缓存双写一致性
如何选择方案?利弊如何在大多数业务场景下,优先使用先更新数据库,再删除缓存的方案(先更库→后删缓存)。理由如下:先删除缓存值再更新数据库,有可能导致请求因缓存缺失而访问数据库,给数据库带来压力导致打满nysql。如果业务应用中读取数据库和写缓存的时间不好估算,那么,延迟双删中的等待时间就不好设置。如果使用先更新数据库,再删除缓存的方案。
2023-08-19 14:47:17 1468
原创 06_布隆过滤器BloomFilter
由一个和构成,用来快速判断集合中是否存在某个元素备注:布隆过滤器时一种类似set的数据结构,只是统计结果在巨量数据下有 小瑕疵,不够完美。
2023-08-19 14:45:53 113
原创 07_缓存预热&缓存雪崩&缓存击穿&缓存穿透
提前将数据从数据库同步到redis。是什么请求去查询一条记录,先查redis无,后查mysql无,都查询不到该条记录,但是请求每次都会打到数据库上面去,导致后台数据库压力暴增,这种现象我们称为缓存穿透,这个redis就变成了一个摆设。简单说就是,本来无一物,两库都没有。既不在Redis,也不在数据库,数据库存在被多次暴击风险解决缓存穿透最怕恶意攻击,使用空对象缓存、布隆过滤器可解决空对象缓存或者缺省值黑客或者恶意攻击黑客会对你的系统进行攻击,拿一个不存在的id去查询数据,会产生大量的请求到数据库去查询。可能
2023-08-19 14:44:44 1407
原创 06_布隆过滤器BloomFilter_副本
由一个和构成,用来快速判断集合中是否存在某个元素备注:布隆过滤器时一种类似set的数据结构,只是统计结果在巨量数据下有 小瑕疵,不够完美。
2023-08-19 14:44:14 99
原创 04_Redis与mysql数据双写一致性案例
是什么canal[ka’nel,中文翻译为水道/管道/沟渠/运河,主要用途是用于MySQL数据库增量日志数据的订阅、消费和解析,是阿里巴巴开发并开源的,采用Java语言开发;历史背景是早期阿里巴巴因为杭州和美国双机房部署,存在跨机房数据同步的业务需求,实现方式主要是基野业务tig9er(触发器)获取增量变更。从2010年开始,阿里巴巴逐步尝试采用解析数据库日志获取增量变更进行同步,由此衍生出了canal 项目;能干嘛数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、倒排索引等)
2023-08-19 14:43:09 368
原创 02_BigKey
大批量往redis里面插入2000w测试数据key真实生产案例[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LfbSfvNL-1692427337323)(https://you-blog.oss-accelerate.aliyuncs.com/2023/202303052248850.png)]生产上严禁使用。通过修改配置文件redis.conf,严禁使用高危命令。不能用keys *,因为会卡顿,那用什么。
2023-08-19 14:42:36 96
原创 01_Redis单线程与多线程
在谈Redis的单线程或多线程时,需要根据版本来区分。Redis重要里程碑:Redis单线程定义:主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时(包括获取(Socket读)、解析、执行、内容返回(Socket写)),都是由一个顺序串的主线程处理,这就是所谓的“单线程”。这也是Redis对外提供键值存储服务的主要流程。但是Redis的其他功能,比如持久化RBD、AOF、异步删除、集群数据同步等,其实是由额外的线程执行的。Redis命令工作线程是单线程的,但是,对整
2023-08-19 14:42:02 1380
原创 00_Redis面试题
有这么一种情况,微服务查询redis无,mysql有,为保证数据双写一致性,回写redis需要注意什么?用户在手机App上的签到打卡信息:1天对应1系列用户的签到记录,新浪微博、钉钉打卡签到,来没来如何统计?抖音电商直播,主播介绍的商品有评论,1个商品对应了1系列的评论,排序+展现+取前10条记录。
2023-08-19 14:40:55 126
原创 07_ES嵌套数据类型
聚合查询:根据username和car_name进行分组,对car_price求和。模拟一种数据存储场景,一个人有多辆车,需要将人和车的信息保存在一起。
2023-04-05 20:55:52 235
原创 kafka消费者
一、kafka消费方式二、kafka消费者工作流程2.1 消费者总体工作流程2.2 消费者组原理Consumer Group(CG):消费者组,由多个consumer组成。形成一个消费者组的条件,是所有消费者的groupid相同。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费。消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。消费者初始化流程:每个consumer都发送JoinGroup请求选出一个consu
2022-05-27 21:18:52 566
原创 KafkaBroker
一、Kafka Broker 工作流程1.1 zookeeper中存储的kafka信息启动zk客户端:./bin/zkCli.sh查看kafka信息:ls /kafka1.2 kafka broker 总体工作流程broker启动,向zk注册自己先注册的controller为controller的leader由选出的controller监听brokder节点的变化controller决定选举broker的leadercontroller将节点信息上传至zk
2022-05-27 21:18:17 2281
原创 KafkaTopicAPI
创建topic@Testpublic void createTopic() { Properties properties = new Properties(); properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka-21:9092,kafka-22:9092"); AdminClient adminClient = KafkaAdminClient.create(properties);..
2022-05-27 21:17:35 151
原创 kafka生产者
一、生产者消息发送流程1.1 发送原理在消息发送的过程中,涉及到了两个线程——main 线程和 Sender 线程。在 main 线程 中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给 RecordAccumulator, Sender 线程不断从 RecordAccumulator 中拉取消息发送到 Kafka Broker。1.2 生产者参数列表bootstrap.servers: 生产者连接集群所需的 broker 地址清单。例如 kafka-01:90
2022-05-27 21:16:31 265
原创 kafka常用命令
创建topickafka-topics.sh --bootstrap-server localhost:9091,localhost:9092,localhost:9093 --create --topic test-topic-01 --replication-factor 1 --partitions 1--bootstrap-server:指定kafka节点地址--create:指定本次命令是创建 topic--topic:指定topic名称--replication-factor:..
2022-05-27 21:15:39 216
原创 kafka安装
一、zookeeper安装在同一台服务器上,以不同端口(2181,2182,2183)运行三个zookeeper,形成一个伪集群下载安装包cd /opt/softwarewget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz解压安装包tar -zxvf zookeeper.tar.gz -C /opt/module/zooke
2022-05-27 21:14:29 162
原创 Linux常用设置
设置Linux终端路径修改配置文件 ~/.bashrc修改或添加以下配置export PS1='[\u]$ '\u 当前登录的用户名\h 当前的主机名 (hostname)\w 当前路径\W 只显示当前文件夹名称保存退出,让文件生效source ~/.bashrcLinux命令行忽略大小写在用户家目录下创建“.inputrc”文件vim ~/.inputrc编辑文件,添加配置set completion-ignore-case on保存退出,重启终
2022-05-15 21:04:11 290
原创 Linux安装docker
安装脚本:#!/bin/bashyum install -y gcc gcc-c++yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engineyum remove docker*
2022-05-15 17:57:53 94
原创 Centos7配置阿里云yum镜像
安装wgetyum -y install wget备份Centos7自带的镜像源文件mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_back下载镜像源文件wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo下载镜像源文件 wget -O /etc/yum.rep..
2022-05-15 17:49:56 814
原创 Linux安装git
安装在联网情况下yum -y install git配置全局配置(命令行修改)git config --global user.name "your name"git config --global user.email "your email"全部配置(修改配置文件)修改 ~/.gitconfig 文件[user] name = yourName email = yourEmail...
2022-05-15 17:44:08 132
原创 Linux安装zsh
安装zsh注意:需要先安装gityum -y install zsh wget https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh -O - | zsh安装插件 zsh-syntax-highlightingcd /root/.oh-my-zsh/custom/pluginsgit clone https://gitee.com/pankla/zsh-syntax-highlighting.gitgit c..
2022-05-15 15:20:41 768
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人