- 博客(15)
- 收藏
- 关注
原创 CompletableFuture常用方法
1.创建异步任务CompletableFuture.runAsync():创建一个没有返回值的异步任务。CompletableFuture<Void> runComplete = CompletableFuture.runAsync(()-> System.out.println("没有返回值的异步任务")); CompletableFuture.supplyAsync():常见一个有返回值的异步任务。CompletableFuture<String> support
2022-05-25 18:46:08
8817
1
原创 如何使用curl命令,curl命令的用法
如果经常和各种API打交道,那curl命令能让你更快的使用这些API。1.直接发送请求curl URL 相当于发送一个GET请求,curl默认就是发送GET请求curl https://jsonplaceholder.typicode.com/posts[ { "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehender
2022-05-25 18:40:40
1116
原创 Redis集群模式总结
什么是集群Cluster集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。集群与哨兵Sentinel有什么区别Sentinel哨兵,是为系统提供高可用特性,每一个Redis节点数据是同步的,且每一个Redis节点保存的都是全量数据。Cluster集群,是将超大数据集打散到多台Redis服务器,可对存储规模进行水平扩容,每一个Redis节点存储的都是完整数据的子集。总而言之,哨兵模式更多的是为了维护可用性,不会因Redis宕机而引起服务的不可用,而集群模式
2022-01-25 21:24:55
857
原创 Redis哨兵模式总结
前言虽然Redis单机部署起来比较简单,但是但是可靠性低,且不能很好利用CPU多核处理能力,而且在生产环境中,为了保证高可用的状态,单机运行一般是不可行的,同时为了保证数据的读写分离,降低Redis节点的压力,先来看一看Redis的主从复制。主从复制的用途读写分离,扩展主节点的读能力,分担主节点读压力容灾恢复,一旦主节点宕机,手动将从节点提升为主节点顶上主从复制的搭建安装Redis(一键安装脚本)yum install -y gcc-c++ autoconf automakecd /u
2022-01-24 22:45:00
1630
原创 详解JavaNIO Buffer类的属性和方法
前言我们知道,Java中的NIO实际上使用的是多种IO模型中的IO多路复用策略,在NIO中,引入了Buffer缓冲区,Channel通道,Selector选择器三个概念,现在先看一下Buffer缓冲区的一些基本知识。介绍NIO的Buffer本质上是一个内存块,既可以写入数据,也可以从中读取数据,Java NIO中代表缓冲区的Buffer类是一个抽象类,位于java.nio包中。NIO的内部是一个内存块(数组),与普通的内存块(Java数组)不同的是,NIO Buffer对象提供了一系列有效地方法,用
2022-01-16 22:36:44
1114
原创 关于Redis持久化储存
Redis是一个内存数据库,如果没有配置持久化,redis重启后数据就全丢失因此开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。Redis持久化的方式有两种,分别的RDB和AOF,接下来我们就分别看一下两种储存方式的特点以及优缺点。RDB (Redis DataBase) 全量二进制备份介绍在指定的时间间隔内将内存中的数据集快照写入磁盘,默认的文件名为dump.rdb。应用场景save会阻塞当前Redis服务器,执行save命令期间,Redis不能处
2022-01-15 21:35:46
1176
原创 Java多线程环境下的同步机制Synchronized
一、前言大家有没有想过一个问题,Java中的++操作是不是线程安全的呢,也就是说在多线程情况下,多个线程一起去执行++操作,得到的结果会不会是我们所预期的结果呢,可以写个demo去验证一下。public static int count = 0; public static void main(String[] args) { for (int j = 0; j < 10000; j++) { new Thread(new Runnable() { @Override pub
2022-01-01 23:55:22
310
原创 分布式事务解决方案
一.CAP定理什么是CAP定理在分布式系统中的三个条件一致性:分布式环境下多个节点的数据是否强一致可用性:分布式服务能一直保证可用状态。当用户发出一个请求后,服务能在有限时间内返回结果分区容错性:特指对网络分区的容错性对于共享数据系统,最多只能同时拥有CAP其中的两个,没法三者兼顾。任两者的组合都有其适用场景真实系统应当是ACID与BASE的混合体不同类型的业务可以也应当区别对待其中,分区容错性又是不可或缺的。在分布式系统中,最重要的是满足业务需求,而不是追求抽象、绝对的系统特性。
2021-12-29 22:33:54
105
原创 Java中的CountDownLatch和Golang中的WaitGroup实现线程同步
一、前言先假设一个场景,我们需要一个分片下载视频的场景,启动多个线程去分别下载视频的每个部分,下载完成之后再将多个线程下载完成的分片组合,这个时候就需要让下载分片的线程先执行完,然后再执行组合的部分,那怎么才能实现让组合线程等待其他线程下载完之后再执行这个操作呢,我们可以来了解一下Java并发包下的CountDownLatch和Golang并发包下的WaitGroup二、代码Java:这是在普通情况下,新建了10个线程去执行分片下载,看看结果如何。可以看到在分片下载还没有结束的时候已经开始整合
2021-12-26 22:42:57
578
原创 Centos8安装RabbitMQ
一、需要安装的文件erlang-22.3.4.2-1.el7.x86_64.rpmsocat-1.7.3.3-2.el8.x86_64.rpmrabbitmq-server-3.8.4-1.el8.noarch.rpm我已经把这三个文件放在了网盘中,需要的可以自己去下载链接: https://pan.baidu.com/s/1uJXgtjPckj7o-8uPzi6x0w 提取码: wf2p二、安装在Linux新建文件夹rabbitmq使用FileZilla将下载好的三个文件传输到rabbi
2021-12-26 20:29:07
1606
原创 MySQL的异构数据同步
前言当MySQL操作完数据后如果将数据同步到ElasticSearch中,或者还要同步到MongoDB中,而且操作MySQL和ElasticSearch和MongoDB的分属于多个部门应该怎么办,如果采用调用别的部门的api来进行ElasticSearch和MongoDB的异构数据同步,肯定会增加沟通成本的和Bug产生的几率,所以我们需要一种别的方式来解决MySQL的异步数据同步。解决方案一.采用阿里canal来进行异构数据同步当MySQL执行一条sql语句后,会在binlog中记录下本次执行的sq
2021-12-25 20:24:26
1749
原创 MySql的Ngram全文索引
前言在我们日常开发中,很多时候会遇到对数据库中某个字段模糊查询的需求,也就是like某个字段,但是很多公司像阿里,京东都禁止使用like来对数据库进行模糊查询,原因是啥呢?我们先来看下面三条语句其中title添加了索引1.SELECT id,title from test_user where title like '张三%'2.SELECT id,title from test_user where title like '%张三'3.SELECT id,title from test_use
2021-12-25 17:20:10
3354
原创 Redis之布隆过滤器
说一个很常见的场景吧,我们在新闻网站、视频网站浏览新闻视频的时候,它们是怎么给我们推荐那些我们没看过的内容的呢?可能你会想到:服务器端储存每个用户的观看记录,在去除掉每个用户已观看的内容,但是这种方法会给服务器端很大的压力,当用户量特别大的时候,每个人看过的内容又很多的时候,效率会大大降低,甚至拖垮服务。如果每个用户的观看内容是存到了关系型数据库,那每次查询的时候都要顺便判断是否有重复观看的数据,说实话,关系型数据库不适合这种场景。再假如,把观看数据存到了缓存中,但是这些数据是不会消失的,会随着时间的
2021-12-18 22:44:01
565
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人