自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于redis实现的附近商户

主要利用redis3.2后添加的geo。初始化redis中的数据。

2023-06-12 23:18:32 178

原创 redis关注相关功能

1.分析界面发出的请求判断是否关注请求进行关注取消请求(关注发回为true取消关注发回为false)2.业务层逻辑。

2023-06-11 22:08:41 159

原创 基于redis实现点赞相关功能

1.实现基础的点赞功能(当用户进行点赞判断是否已经点赞,若点赞则取消若未点赞则点赞)实现方式:在redis中存入一个set集合每当一个用户进行点赞则将改用户id存入key为他所点赞的帖子的id+标志字符,每次点赞前进行判断该set集合中是否存在,若存在则取消赞,并删除set中的用户id,不存在则添加赞并添加用户id到set集合中代码添加点赞排行功能(显示点赞的前几名)set集合不支持排序,所以需要将set集合更改为sortedSet

2023-06-07 13:02:21 892

原创 基于redis实现消息队列(更推荐使用专业的mq)

——lpush存放队列(lpush 队列名 队列内容(可一次存放多个内容,用空格隔开)) brpop取队列(brpop 队列名 等待时间单位秒(一次取一个))个人感觉:mq>stream>list>pubsub。基于pubsub实现消息队列(发布订阅模型)利用redis实现消息队列(基于stream的消息队列。修改java代码实现发送消息。基于list,点对点模型。案例,更改之前的案例。

2023-06-05 14:46:07 731

原创 redis优惠卷秒杀-------优化

优化流程(1:库存不足,2:用户已经下单,无法重复下单确保一人一单,0:有下单资格)1.修改添加优惠卷业务,在添加优惠卷到数据库的同时添加到redis中。因为时串行执行且多次调用数据库,所以效率较慢,所以引入队列概念。2.编写lua脚本,实现秒杀库存,一人一单,决定抢购是否成功。

2023-06-05 12:05:51 38

原创 基于秒杀-----分布式锁----lua脚本

现阶段存在问题:当线程阻塞时间超过setnx的自动过期时间时可能导致一人多单和setnx的key误删情况。3.修改业务类(仅进行注入了RedissonClient 和创建锁对象和trylock的参数)解决方法:使用redis的框架redisson实现分布式锁。需要优化的问题:不可重入,不可重试,超时释放,主从一致。:多进程可见,互斥,高可用,高性能,安全性。解决方法:让判断锁标识与释放锁保持原子性。测试结果:实现了多个服务器下的一人一单。1.创建获取锁删除锁的工具类。redis分布式锁的优化。

2023-05-29 21:33:58 1178

原创 商品显示秒杀-一人一单业务

如果报错可将代理注解关闭将serviceImpl中的内容更改为(作者的事务依旧可以实现,原理暂时未知,如有知道的大神希望可以告诉一声)出现问题:依旧为超卖问题,因为为新增操作,所以无法进行添加乐观锁,进行添加悲观锁。到目前依旧有问题——在集群模式下依旧存在并发问题,依旧存在一人多单问题。3.修改后代码(需要在service中添加方法-自行添加即可)解决方法------分布式锁。2.在启动类上添加注解。

2023-05-26 22:22:07 90

原创 redis优惠卷秒杀

改进方法不在进行判断数量是否与开始查询到的数量一致,改进行判断数量是否大于0。改进后发现成功率大幅下降预期成功率在0.5实际成功率0.2(乐观锁的弊端)引入概念乐观锁悲观锁,悲观锁为强制所有线程串行执行,会导致效率低下。出现的问题,多线程并发冲突,会导致多卖。测试(与预期结果一致)

2023-05-26 20:41:19 122

原创 商品秒杀-redis的id自动生成(避免用户猜到id)

1.自定义全局id生成器。

2023-05-24 20:45:25 76

原创 redis缓存------实现增删改查中的redis缓存实现

流程分析实现代码service。

2023-05-23 23:30:47 303

原创 基于redis实现session的登录功能

创建一个新的拦截器,拦截一切路径,并此拦截器只进行刷新redis时间后直接放行,需要验证是否登陆的功能放在原拦截器中实现。因为拦截器为交给spring管理,所以需要在mvc的拦截器中进行注入StringRedisTemplate。拦截器只拦截了需要访问的功能,当用户访问不需要登录的功能时redis依旧会过期。拦截所有请求的拦截器(刷新token的拦截器)在拦截器中实现redis的时间刷新。拦截需要登录的拦截器。

2023-05-22 21:17:12 300

原创 Redis-spring data

Bean//创建redistemplate对象//设置连接工厂//常见json序列化工具//设置key的序列化//设置value的序列化//返回记得引入json依赖注入参数时需要指定数据类型。

2023-05-21 20:49:36 56

原创 redis-jedis

整合过程1.引入依赖2.进行测试。

2023-05-21 17:15:23 34

原创 redis常见命令

通用命令string常见命令。

2023-05-21 15:39:29 29

原创 初始Redis

链接:https://pan.baidu.com/s/1aLkOBakXa3LfzT2517G4Hw。(1)将配置文件进行备份(配置文件在/usr/local/src/redis-6.2.6。(2.)安装依赖(redis是基于c语言开发的,所以需要先安装依赖)(3.)上传安装包到usr/local/src下并进行解压。1.默认启动(前台启动):redis-server。(4.)进入redis解压后的目录并进行编译。(只有源码需要自行编译,或者订阅作者的付费)默认的安装路径是usr/local/bin。

2023-05-21 13:34:20 548

原创 git常用命令

上传到远程仓库:git push 远程仓库别名(可用git remote查看) 分支(一般远程仓库只有master一个分支,其他分支需要自行创建)拉取远程仓库中的内容:git pull --rebase 远程仓库别名 分支。提交到本地仓库:git commit -m ”注释信息“ 文件名支持通配符。2.从远程仓库克隆(我使用的gitee,可直接在仓库中复制地址)提交到暂存区:git add 文件名(支持通配符)注:在执行命令后需要输入远程仓库的账号密码。获得git仓库的两种方式。1.在本地初始化仓库。

2023-05-18 23:19:57 32

原创 git代码托管服务(gitee)

1.创建gitee账号并登录。2.创建gitee仓库。

2023-05-18 17:33:13 77

原创 文件上传与下载

文件下载(图片回显)是利用数据流实现的。注:查看前端传回数据名称的方法。

2023-05-14 15:25:01 45

原创 mybatisplus公共字段自动注入

2.编写方法并继承MetaObjectHandler。4.在过滤器中使用封装的工具类将id传入线程中。3.基于ThreadLocal编写封装工具类。1.在字段上添加注释。

2023-05-11 18:24:33 218

原创 对象映射器

注:js会损失long类型的数据精度。2.在mvc的配置文件中重写方法。

2023-05-10 23:09:16 54

原创 springboot全局异常处理器

【代码】springboot全局异常处理器。

2023-05-10 13:15:54 85

原创 过滤器设置(瑞吉)

与拦截器对应的js代码。

2023-05-09 22:57:56 277

原创 设置通用返回数据模板

【代码】设置通用返回数据模板。

2023-05-09 20:07:14 61

原创 springboot设置静态资源路径

【代码】springboot设置静态资源路径。

2023-05-09 19:27:36 158

原创 MQ集群(rabbitMQ)

同步策略,默认是manual,即新加入的镜像节点不会同步旧的消息。如果设置为automatic,则新加入的镜像节点会把主节点中所有消息都同步,会带来额外的网络开销。:匹配队列的正则表达式,符合命名规则的队列才生效,这里是任何以。:匹配队列的正则表达式,符合命名规则的队列才生效,这里是任何以。:策略模式,此处是all模式,即所有节点都会称为镜像节点。接下来,停止并删除当前的mq容器,我们重新搭建集群。:策略模式,此处是exactly模式,指定副本数量。:策略参数,这里是2,就是副本数量为2,1主1镜像。

2023-04-25 17:18:59 484

原创 rabbitmq的高级特性

3.编写ComfirmCallback。使用命令查看rabbitmq的挂载地址。2.编写returnCallback。使用java代码实现创建延迟队列。延迟时间由发送信息的时候设定。将下载的插件放在插件所在位置。防止延迟队列被当成错误解决。将一个普通对列变为惰性队列。1.在项目中添加配置。

2023-04-25 16:07:23 515

原创 分布式多级缓存

指定对哪个database记录binary log events,这里记录heima这个库。:设置binary log文件的存放地址和文件名,叫做mysql-bin。:数据库地址和端口,如果不知道mysql容器地址,可以通过。(2)在MySQL中创建一个新用户以用来数据同步。2.创建docker网络并让mysql加入。(3)重启docker的mysql容器。3.在docker导入canal镜像。(1)修改mysql的配置文件。:这是canal的默认监听端口。1.开启mysql的主从同步。

2023-04-22 16:45:50 424

原创 【无标题】

Redis5.0之前集群命令都是用redis安装包下的src/redis-trib.rb来实现的。因为redis-trib.rb是有ruby语言编写的所以需要安装ruby环境。注意集群模式中进入redis一定要加上-c参数,例:redis-cli -c -p 7001。1.删除原本的7001 7002 7003目录,以防产生干扰,并创建新的目录。启动命令:redis-server redis.conf。2.在tmp目录中创建配置文件redis.conf。2.将之前的redis的aof关闭rdb开启。

2023-04-20 22:46:23 295

原创 分布式事务

c:consistency(一致性)A:availability(可用性)P:oartition tolerance(分区容错性)4.在业务的实现类的方法上添加注解@GlobalTransactional。cap定理:分布式系统无法同时满足cap(一般为cp或者ap)在nacos中若能找到此列表则代表启动成功。1.在seata的数据库中添加全局锁表。3.将配置中的方式更改为at(默认)1.创建数据库(冻结表)2.在项目库中添加快照表。2.编写接口和实现类。

2023-04-19 23:13:52 404

原创 sentiel安装与整合

常见异常重写方法@Component@OverrideString msg = "未知异常";msg = "请求被限流了";msg = "请求被热点参数限流";msg = "请求被降级了";msg = "没有权限访问";查看结果。

2023-04-18 21:42:03 279

原创 搭建es集群

单点es的缺点:1.存储数据有限;2.单点故障问题(es出现故障则整个服务会直接宕机)解决存储数据有限:搭建多台es服务器实现集群解决单点故障:在不同的es服务器中进行备份数据(例:在第二台服务器中备份第一台的数据)

2023-04-17 21:23:53 477

原创 es与mysql的数据同步问题

3.当一个业务出现问题则直接卡死。5.在发送消息的一方引入依赖和yaml中的配置。方案二:异步通知(解除了两个服务之间的耦合)方案三:监听MySQL的binlog日志。4.编写配置类创建队列与交换机并绑定。7.在接收一方编写监听器。重启服务即可实现数据同步。缺点:比较依赖与mq。6.修改发送一方的业务。

2023-04-17 20:01:27 159

原创 实现es搜索栏自动补全功能

1.下载拼音分词器将文件下载后解压,放到es的目录下(与ik分词器放在同一目录下)重启es即可2.测试:会将文本的每一个拼音进行分词及所有的拼音首字母进行分词2.自定义分词器(必须在创建索引库时创建)3.实现自动补全功能(1)实现自动补全的字段必须是completion类型的。

2023-04-17 13:41:16 278

原创 es数据聚合(包含java代码实现)

注:聚合的字段不可分词聚合的分类。

2023-04-17 10:00:26 576

原创 java利用RestClient进行dsl的查询

3.精确查询(term词条精准查询,range范围精准查询)与matchall查询有区别的地方为第二步的准备dsl。与上方一致只有2.准备dsl发生变化。2.match条件查询。

2023-04-16 14:31:54 216

原创 dsl语法

注:es支持的最大查询条数为10000条,如:初始条数为9991,每页10条将会报错,所以es不支持深度分页。2.match查询(条件查询)-----包含四川和外滩的信息,信息匹配度越高越靠前,两者存在一个也可以。6.经纬度查询(地理位置查询)distance查询。5.range查询(精准查询范围值一般用于价格)7.人工干预查询到的文档的权重(干预文档排序)注:一旦进行排序则不会进行打分机制,以提高速度。3.multi_match查询,多条件查询。1.查询所有(默认有分页查询)4.term查询(精准查询)

2023-04-13 22:08:09 691

原创 shingcloud整合es(黑马案例)

链接:https://pan.baidu.com/s/1RVgsD15Sdmbvmw5bEt9zQw。注:dsl语句:GET /hotel/_search 批量查询。8.查询索引库(如果索引库不存在会报错)1.将数据库文件上传到而es上。9.判断索引库是否存在。全局更新与新增文档一致。4.在项目中引入依赖。

2023-04-07 22:40:04 1791

原创 dsl语法(es基本使用)

put /索引库名{参数}delete /索引库名。4.修改索引库(索引库不能修改,只能添加属性)

2023-04-06 19:01:07 357

原创 ik分词器的拓展

例:(每一行为一个词,如果在拓展字典中则是新增词汇,如果在删除字典中,则代表此词不参与分词)注意在IkAnalyzer.xml的同级目录下创建自己的文件并进行编辑。

2023-04-05 19:47:08 36

原创 centos7在docker上安装es(elasticsearch)

链接:https://pan.baidu.com/s/1eTdUKBY6U9-evh7mrSqmJA。链接:https://pan.baidu.com/s/1eTdUKBY6U9-evh7mrSqmJA。1.将kibana的tar文件拉取到虚拟机中(因为es文件较大,不建议直接使用docker进行拉取)2.将es的tar文件拉取到虚拟机中(因为es文件较大,不建议直接使用docker进行拉取)(2)将ik分词器进行解压并放到所查看的目录中。1.在线安装(不推荐,较慢)(1)查看数据卷目录。

2023-04-04 22:59:16 636

ubuntu安装docker

ubuntu安装docker

2023-05-06

空空如也

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

TA关注的人

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