自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis-实战篇(12)UV统计

Hyperloglog(HLL)是从Loglog算法派生的概率算法,用于确定非常大的集合的基数,而不需要存储其所有值。UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。但是如果每个访问的用户都保存到Redis中,数据量会非常恐怖,那怎么处理呢?通常来说UV会比PV大很多,所以衡量同一个网站的访问量,我们需要综合考虑很多因素,所以我们只是单纯的把这两个值作为一个参考值。Redis中的HLL是基于string结构实现的,单个HLL的内存。

2024-06-26 20:37:52 130

原创 redis-实战篇(11)用户签到

id % bitmap.size = 算出当前这个id对应应该落在bitmap的哪个索引上,然后将这个值从0变成1,然后当用户来查询数据时,此时已经没有了list,让用户用他查询的id去用相同的哈希算法, 算出来当前这个id应当落在bitmap的哪一位,然后判断这一位是0,还是1,如果是0则表明这一位上的数据一定不存在, 采用这种方式来处理,需要重点考虑一个事情,就是误差率,所谓的误差率就是指当发生哈希冲突的时候,产生的误差。统计有多少个1即可。这样我们就用极小的空间,来实现了大量数据的表示。

2024-06-26 20:36:32 868

原创 redis-实战篇(10)附近商户

我们要做的事情是:将数据库表中的数据导入到redis中去,redis中的GEO,GEO在redis中就一个menber和一个经纬度,我们把x和y轴传入到redis做的经纬度位置去,但我们不能把所有的数据都放入到menber中去,毕竟作为redis是一个内存级数据库,如果存海量数据,redis还是力不从心,所以我们在这个地方存储他的id即可。SpringDataRedis的2.3.9版本并不支持Redis 6.2提供的GEOSEARCH命令,因此我们需要提示其版本,修改自己的POM。

2024-06-25 18:07:50 577

原创 redis-实战篇(9)好友关注

推拉模式是一个折中的方案,站在发件人这一段,如果是个普通的人,那么我们采用写扩散的方式,直接把数据写入到他的粉丝中去,因为普通的人他的粉丝关注量比较小,所以这样做没有压力,如果是大V,那么他是直接将数据先写入到一份到发件箱里边去,然后再直接写一份到活跃粉丝收件箱里边去,现在站在收件人这端来看,如果是活跃粉丝,那么大V和普通的人发的都会直接写入到自己收件箱里边来,而如果是普通的粉丝,由于他们上线不是很频繁,所以等他们上线时,再从发件箱里边去拉信息。需求:利用Redis中恰当的数据结构,实现共同关注功能。

2024-06-25 18:05:42 1029

原创 redis-实战篇(8)达人探店

造成这个问题的原因是,我们现在的逻辑,发起请求只是给数据库+1,所以才会出现这个问题。因为我们的数据是不能重复的,当用户操作过之后,无论他怎么操作,都是。tb_blog:探店笔记表,包含笔记中的标题、文字、图片等。

2024-06-20 09:12:36 807

原创 redis-实战篇(7)redis消息队列

使用队列的好处在于 **解耦:**所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。不过要注意的是,当队列中没有消息时RPOP或LPOP操作会返回null,并不像JVM的阻塞队列那样会阻塞并等待消息。

2024-06-20 09:07:07 608

原创 redis-实战篇(6)秒杀优化

秒杀业务的优化思路是什么?

2024-06-19 10:10:20 944

原创 redis-实战篇(5)分布式锁-redission

重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。

2024-06-19 10:06:20 718

原创 redis-实战篇(4)分布式锁

线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删除锁,但是此时他的锁到期了,那么此时线程2进来,但是线程1他会接着往后执行,当他卡顿结束后,他直接就会执行删除锁那行代码,相当于条件判断并没有起到作用,这就是删锁时的原子性问题,之所以有这个问题,是因为线程1的拿锁,比锁,删锁,实际上并不是原子性的,我们要防止刚才的情况发生,如果脚本中的key、value不想写死,可以作为参数传递。

2024-06-18 10:44:18 1303

原创 redis-实战篇(3)优惠券秒杀

课程中的使用方式是没有像cas一样带自旋的操作,也没有对version的版本号+1 ,他的操作逻辑是在操作时,对版本号进行+1 操作,然后要求version 如果是1 的情况下,才能操作,那么第一个线程在操作后,数据库中的version变成了2,但是他自己满足version=1 ,所以没有问题,此时线程2执行,线程2 最后也需要加上条件version =1 ,但是现在由于线程1已经操作过了,所以线程2,操作时就不满足version=1 的条件了,所以线程2无法执行成功。

2024-06-18 10:34:50 702

原创 redis-实战篇(2)商户查询缓存

前言什么是缓存?就像自行车,越野车的避震器举个例子:越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪;这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术;缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据。

2024-06-17 10:54:23 1124

原创 redis-实战篇(1)短信登录

在这个方案中,他确实可以使用对应路径的拦截,同时刷新登录token令牌的存活时间,但是现在这个拦截器他只是拦截需要被拦截的路径,假设当前用户访问了一些不需要拦截的路径,那么这个拦截器就不会生效,所以此时令牌刷新的动作实际上就不会执行,所以这个方案他是存在问题的。

2024-06-17 10:45:53 535

原创 redis-基础篇(2)

在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/

2024-06-16 10:26:27 680

原创 redis-基础篇(1)

贴心小建议:命令不要死记,学会查询就好啦Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( https://redis.io/commands )可以查看到不同的命令:当然我们也可以通过Help命令来帮助我们去查看命令。

2024-06-16 10:18:16 1356

原创 ruoyi登录功能源码分析

上一篇文章我们分析了一下若依登录验证码生成的代码,今天我们来分析一下登录功能的代码。

2024-06-14 20:48:21 602

原创 SpringSecurity入门

半小时带你学会SpringSecurity

2024-06-14 19:07:23 289

原创 三十分钟学会RabbitMQ

30分钟学会rabbitmq

2024-06-13 21:51:52 1074 1

原创 Ruoyi验证码的发送与校验源码分析

解析若依验证码生成与校验源码

2024-06-13 21:43:09 278

原创 flink- java.lang.IllegalStateException: No Executor found. Please make sure to export the HADOOP_CLA

flink- java.lang.IllegalStateException: No Executor found. Please make sure to export the HADOOP_CLASSPATH environment variable or have hadoop in your classpath.

2024-05-28 23:35:09 598

原创 Flink集群安装部署

启动flink standalone集群后,可以使用flink client向该集群master节点提交任务。把/etc/profile文件分发给slave1和slave2。修改flink配置文件中的master和workers文件。把配置好的flink文件夹分发给slave1和slave2。修改flink-conf.yaml文件。前期准备:hadoop完全分布式集群。编辑/etc/profile文件。给文件夹改个简单点的名字。下载flink安装包。解压flink安装包。

2024-05-28 23:09:21 302

原创 centos7 安装配置spark集群

centos7 安装配置spark集群使用wget下载spark-3.0.0-bin-hadoop2.7压缩包(下载对应Hadoop版本的spark)[root@master ~]# wget https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop2.7.tgz将spark压缩包解压到/usr/locla/src[root@master ~]# tar -zxvf spark-3.0.0-bin-hadoop

2021-12-27 09:30:00 713

原创 centos7 Scala安装

centos7 Scala安装使用wget下载Scala压缩包[root@master ~]# wget https://downloads.lightbend.com/scala/2.12.11/scala-2.12.11.tgz解压Scala压缩包到/usr/local/src/[root@master ~]# tar -zxvf scala-2.12.11.tgz -C /usr/local/src/将解压文件夹改名为scala[root@master ~]# mv /usr/loc

2021-12-24 14:08:50 956

原创 mongodb安装及分布式搭建

mongodb安装及分布式搭建1、mongodb安装使用wget下载mongodb压缩包[root@master ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz解压到/usr/local/src/[root@master ~]# tar -zxvf mongodb-linux-x86_64-4.0.0.tgz -C /usr/local/src/重命名文件夹[root@master ~]#

2021-12-20 13:53:52 763

原创 七、Sqoop组件的安装与配置(数据传送工具)

七、Sqoop组件的安装与配置(数据传送工具)1、解压sqoop解压sqoop安装包[root@master ~]# tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/src/重命名sqoop文件夹[root@master ~]# mv /usr/local/src/sqoop-1.4.7.bin__hadoop-2.6.0/ /usr/local/src/sqoop2、配置sqoop环境创建sqoop的配置文件sq

2021-12-08 19:53:10 1536

原创 redis数据库docker安装

redis数据库docker安装1、使用yum安装docker容器[root@master ~]# yum -y install docker2、启动docker服务[root@master ~]# systemctl start docker3、拉取redis容器[root@master ~]# docker pull redis:latest4、启动redis容器[root@master ~]# docker run -itd --name redis6 -p 6379:637

2021-11-29 20:40:10 666

原创 六、HBase组件的安装与配置

六、HBase组件的安装与配置解压HBase[root@master ~]# tar -zxvf hbase-1.2.1-bin.tar.gz -C /usr/local/src重命名HBase文件夹[root@master ~]# mv /usr/local/src/hbase-1.2.1/ /usr/local/src/hbase在所有节点中添加环境变量[root@master ~]# vim /etc/profileexport HBASE_HOME=/usr/local/sr

2021-10-23 23:03:16 300

原创 五、zookeeper组建的安装与配置

五、zookeeper组建的安装与配置解压zookeeper[root@master ~]# tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/src/把zookeeper-3.4.5安装目录改为zookeeper[root@master ~]# mv /usr/local/src/zookeeper-3.4.5/ /usr/local/src/zookeeper1、master节点配置在zookeeper的安装目录下创建data和logs文件夹

2021-10-16 22:09:13 206

原创 四、hive组件的安装与配置

四、hive组件的安装与配置(一)、下载和解压相关文件解压hive[root@master ~]# tar -zxvf apache-hive-2.0.0-bin.tar.gz -C /usr/local/src/修改hive文件夹名字mv /usr/local/src/apache-hive-2.0.0-bin/ /usr/local/src/hive修改hive目录归属用户和用户组为hadoopchown -R hadoop:hadoop /usr/local/src/hive(

2021-10-15 16:56:19 451

原创 hadoop完全分布式搭建

shadoop完全分布式搭建一、前期准备 新建一台虚拟机1、基础配置配置网络(静态ip)vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILUR

2021-10-08 15:14:08 197

空空如也

空空如也

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

TA关注的人

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