自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Bug解决】Nacos启动成功,但却无法访问(提示:无法访问此网站,192.168.10.88的响应时间过长)

在虚拟机上通过Docker创建Nacos容器,已经创建成功,查看Nacos启动日志也是成功。但通过端口号加8848/nacos(如:http://IP:8848/nacos)无法访问到Nacos管理页面。可以看出我是因为用以前项目的nacos容器,以前配置过网段,所以我现在用虚拟机的IP访问不到,解决办法,在启动一个容器呗,不配置网段,多简单,这就是docker的方便之处。先检查好自己在虚拟机中的nacos容器确实是启动了,端口映射也是正确的。2、查询8848端口是否开放。3、开放8848端口。

2024-09-19 15:11:10 91

原创 黑马点评27—原理—Redis内存回收

Redis本身是一个典型的key-value内存存储数据库,因此所有的key、value都保存在之前学习过的Dict结构中。内存淘汰:就是当Redis内存使用达到设置的上限时,主动挑选部分key删除以释放更多内存的流程。可以发现,当key的TTL到期以后,再次访问name返回的是nil,说明这个key已经不存在了,对应的内存也得到释放。惰性删除:顾明思议并不是在TTL到期后就立刻删除,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除。当内存使用达到上限时,就无法存储更多数据了。

2024-09-12 22:04:51 1033

原创 黑马点评26—原理—Redis通信协议

try {// 1.建立连接// 2.获取输出流、输入流// 3.发出请求// 3.1.获取授权 auth 123321// 3.2.set name 虎哥sendRequest("set", "name", "虎哥");// 4.解析响应// 3.2.set name 虎哥// 4.解析响应// 3.2.set name 虎哥// 4.解析响应// 5.释放连接try {if (reader!if (writer!if (s!

2024-09-12 16:49:10 368

原创 黑马点评25—原理—Redis网络模型(真的是单线程吗?)

就去等待,在用户态创建一个空的events数组,当就绪之后,我们的回调函数会把数据添加到list_head中去,当调用这个函数的时候,会去检查list_head,当然这个过程需要参考配置的等待时间,可以等一定时间,也可以一直等, 如果在此过程中,检查到了list_head中有数据会将数据添加到链表中,此时将数据放入到events数组中,并且返回对应的操作的数量,用户态的此时收到响应后,从events中拿到对应准备好的数据的节点,再去调用方法去拿数据。我们的应用都需要通过Linux内核与硬件交互。

2024-09-12 13:25:06 1145

原创 黑马点评24—原理—Redis数据结构

对⼀个内部表示成long型的string执行append, setbit, getrange这些命令,针对的仍然是string的值(即⼗进制表示的字符串),而不是针对内部表⽰的long型进⾏操作。String的内部存储结构⼀般是sds(Simple Dynamic String,可以动态扩展内存),但是如果⼀个String类型的value的值是数字,那么Redis内部会把它转成long类型来存储,从⽽减少内存的使用。我们可以看到,key的类型固定是string,而value可能的类型是多个。

2024-09-12 08:46:20 743

原创 黑马点评23——最佳实践-服务端优化

客户端缓冲区:指的就是我们发送命令时,客户端用来缓存命令的一个缓冲区,也就是我们向redis输入数据的输入端缓冲区和redis向客户端返回数据的响应缓存区,输入缓冲区最大1G且不能设置,所以这一块我们根本不用担心,如果超过了这个空间,redis会直接断开,因为本来此时此刻就代表着redis处理不过来了,我们需要担心的就是输出端缓冲区。lua和事务都是要保证原子性问题,如果你的key不在一个节点,那么是无法保证lua的执行和事务的特性的,所以在集群模式是没有办法执行lua和事务的。

2024-09-11 22:31:17 930

原创 黑马点评22——最佳实践-批处理优化

集群下的时候,使用Spring提供的SpringRedisTemplate这个已经做了关于集群的批处理优化,直接拿来用就行。pipeline就是大数据量的导入,pipeline是在单机模式下的。redis的处理耗时相比较网络传输的耗时其实是比较低的。所以我们最好采用批处理,

2024-09-11 21:52:35 356

原创 黑马点评21——最佳实践-键值设计

动态修改的,重启后就又失效了,而且最好上线不要超过1000。这样解决也不存在bigkey的问题了。

2024-09-11 21:32:31 226

原创 黑马点评20——多级缓存-总结

结合前面几篇关于多级缓存的内容,对我们整个多级缓存做个总结。

2024-09-11 20:30:05 368

原创 黑马点评19——多级缓存-缓存同步

在多级缓存中的数据一致性问题,也就是缓存同步的问题。

2024-09-11 20:27:44 1198

原创 docker安装部署Canal-监听mysql

接下来添加一个仅用于数据同步的账户,出于安全考虑,这里仅提供对heima这个库的操作权限。恰好笔者这里就是使用了8.0.24的mysql,刚好遇到了这个问题,就在这里解决一下。Canal是基于MySQL的主从同步功能,因此必须先开启MySQL的主从功能才可以。改成自己的密码哦,我们这里设置的密码是canal,所以我就要写canal。也就是密码的验证方式变化了,我们前面创建的用户使用的密码验证方式不行。运行完之后,我们可以查看用户,是不是真的添加进去了。打开mysql容器挂载的日志文件,我的在。

2024-09-11 19:41:55 1580

原创 黑马点评18——多级缓存-OpenResty

因为我们实际的tomcat一定是集群的,那我们的nginx会代理到tomcat的某一台服务器上(8081),在tomcat这一台服务器查询后返回结果,会形成一个JVM进程缓存,但是我们的nginx的默认负载均衡策略是轮询,下一次查询同一个商品id,nginx就把请求发到另一个tomcat服务器上(8082),那上次tomcat形成的jvm进程(8081)缓存无法命中,因为jvm进程缓存是不能共享的,所以,还得让8082服务器再次处理,那每次都这样,必然降低我们的命中率,降低性能。(注意:防火墙得关闭)

2024-09-11 16:59:25 949

原创 安装OpenResty(Linux-Docker)

直接在linux中安装请参考博客这篇博客讲解如何在docker中安装。

2024-09-10 09:14:35 1109

原创 安装OpenResty(Linux)

nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。看到里面的nginx目录了吗,OpenResty就是在Nginx基础上集成了一些Lua模块。默认情况下,OpenResty安装的目录是:/usr/local/openresty。opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。NGINX_HOME:后面是OpenResty安装目录下的nginx的目录。仓库,这样就可以便于未来安装或更新我们的软件包(通过。

2024-09-09 21:58:42 1034

原创 黑马点评17——多级缓存-Lua语法

centOs已经装好了lua,直接用~魔兽的一些插件就是用lua开发的。

2024-09-09 21:49:10 344

原创 黑马点评16——多级缓存-JVM进程缓存

但是现在的nginx的压力太大了,所以nginx也要部署成集群当然我们的redis、tomcat都可以部署成集群。

2024-09-09 20:40:07 896

原创 win11控制台卡顿,白色空窗问题解决

在使用win11的时候,cmd打开控制台执行命令的时候,经常出现只弹出一个半透明窗口,卡好久才行的问题。打开cmd窗口,在标题栏上右键,打开属性。勾选“使用就控制台样式”

2024-09-09 19:59:14 497

原创 黑马点评15——分布式缓存-Redis分片集群

这是自动的故障转移,但有时候需要手动的故障转移——比如更换机器的时候,进行数据迁移。在分片集群中配置分片的每一个节点。添加新的节点后要重新分配插槽,

2024-09-09 17:56:28 550

原创 黑马点评14——分布式缓存-Redis哨兵

我们监控集群中的节点状态,发现master宕机,立马选一个新节点作为master。那谁来检测?——哨兵。

2024-09-09 15:19:20 262

原创 黑马点评13——分布式缓存-Redis主从

我们的repl_baklog是有上线的,一旦我们的环中,master持续记录,slave宕机的话,这时候增量同步就失败了,因为还没有同步的数据被新的master覆盖了。无法避免,只能尽量优化、减少。搭建过程参考我的博客。

2024-09-09 10:21:01 435

原创 黑马点评12——分布式缓存-Redis持久化

提高安全性,弥补RDB的缺陷。

2024-09-09 09:14:22 146

原创 单机部署Redis集群

我们需要执行命令来创建集群,在Redis5.0之前创建集群比较麻烦,5.0之后集群管理命令都集成到了redis-cli中。修改redis-6.2.4/redis.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态。要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。

2024-09-07 11:36:07 1610

原创 黑马点评11——UV统计-HyperLogLog

我们这里没有真正的实现UV统计,但是我们在测试中测试1000000条数据,可以看出我们的内存占用非常小,而且误差也非常小。当高并发环境下的用户打过来的时候,我们把数据直接往HyperLogLog中放就可以了,误差完全可以接受。即使将来需要实现的话,其实难度也不是很大,直接把这些实现就可以了。简直就是天生用于UV统计的,太爽了!

2024-09-07 09:06:29 373

原创 黑马点评10——用户签到-BitMap数据结构

因为是当前用户的当天,所以保存需要的年月日不需要参数,可以直接获取。布隆过滤器也是使用BitMap实现的.但签到数据比较大,借鉴签到卡的思想。其实数据库完全可以实现签到功能。

2024-09-06 21:55:53 415

原创 黑马点评9——附近商户-GEO数据结构

数据库里没法实现按照地理坐标排序等复杂的搜索功能,我们把数据存到redis中,只需要保存id和对应的x以及y的坐标,就可以在查询的时候,从redis中根据坐标查询出id, 然后根据id去数据库中查询要的数据。

2024-09-06 20:51:59 484

原创 黑马点评8——好友关注-SortedSet

SortedSet会按照score值排序,然后有一个排名,如果按照排名查询,那和角标查询没什么区别,但是,我们的SortedSet也支持范围查询,score值就是我们的时间戳嘛,我们把时间戳从大到小的顺序进行一个排列,每一次查询的时候,记录下最小的时间戳,然后下次查询的时候,找比这个更小的,这样就实现了滚动分页了。分页流不能采用传统的分页模式,因为我们的数据会动态变化,比如上面的情况就会出现重复读取6的情况,list支持滚动分页吗?其实查询共同关注就是查询当前登录用户和查询的用户他们的关注的集合的交集。

2024-09-06 19:34:32 435

原创 黑马点评7——达人探店-SortedSet

这个就是查询数据库中的笔记。

2024-09-05 12:07:52 239

原创 黑马点评6——优惠券秒杀—Redis消息队列实现异步秒杀

书接上回,基于JVM的消息队列实现的阻塞队列,引发的两个问题。

2024-09-04 11:12:41 279

原创 黑马点评5——优惠券秒杀—优化秒杀

基于我们前面实现的优惠券的秒杀业务,我们接下来进行优化。

2024-09-02 17:48:00 518

原创 黑马点评4——优惠券秒杀—分布式锁

官网地址github地址。

2024-09-02 13:26:15 903

原创 黑马点评3——优惠券秒杀—全局唯一ID、秒杀下单、超卖问题(乐观锁)、一人一单问题(并发安全)

以前我们的优惠券下单业务是这样的:现在修改业务流程@Override// 1. 查询优惠券// 2. 判断秒杀是否开始// 尚未开始return Result.fail("秒杀尚未开始!");// 2/ 判断秒杀是否结束// 已经结束return Result.fail("秒杀已经结束!");// 4. 判断库存是否充足// 库存不足return Result.fail("库存不足!");// 5. 一人一单// 5.1 查询订单// 5.2 判断是否存在。

2024-08-31 23:49:06 914

原创 黑马点评2——商户查询缓存(P37店铺类型查询业务添加缓存练习题答案)redis缓存、更新、穿透、雪崩、击穿、工具封装

缓存也要考虑成本的问题,不是随便用的。

2024-08-31 16:04:47 1381

原创 Quartz定时任务框架——若依

文章目录定时任务的执行新增定时任务订单任务状态修改quartz的集群模式定时任务的执行新增定时任务订单任务状态修改quartz的集群模式把若依项目中的quartz数据库导入到数据库中然后打开ScheduleConfig配置类复制项目启动(记得修改端口),形成集群启动两个项目

2024-08-29 16:29:58 609

原创 黑马点评1——基于session实现登录

这里拦截器是我们自定义的,我们不能使用AutoWried让Spring帮助我们导入StringRedisTemplate ,因为这个类都不归Spring管,自然Spring也无法帮我们导入,我们只能使用构造器的方式导入,那在我们的MvcConfig这个配置类中,用到LoginInterceptor的时候,传进去就可以了,于是MvcConfig要修改为这样。在加一个拦截器,第一个拦截器负责拦截所有的请求,如果存在就刷新token,并且存入到ThreadLocal中,如果不存在也放行,所以,该方案pass。

2024-08-28 14:10:21 901

原创 Sentinel源码分析

例如,我们在order-service服务中,将的方法标记为一个资源。1)首先在order-service中引入sentinel依赖</</</2)然后配置Sentinel地址spring:cloud:sentinel:transport:dashboard: localhost:8089 # 这里我的sentinel用了8089的端口3)修改OrderService类的queryOrderById方法// 创建Entry,标记资源,资源名为resource1。

2024-08-26 19:18:53 906

原创 Nacos源码分析

protobuf的全称是Protocol Buffer,是Google提供的一种数据序列化协议,这是Google官方的定义:Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。可以简单理解为,是一种跨语言、跨平台的数据传输格式。与json的功能类似,但是无论是性能,还是数据大小都比json要好很多。

2024-08-26 19:07:46 1118

原创 Centos7安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的,这里主要介绍 Docker CE 在 CentOS上的安装。

2024-08-26 11:03:45 938

原创 Velocity模板引擎——若依代码生成器

比较擅长用于邮件,发票,web内容生成、代码生成、网页静态化模板化的东西适合使用当然模板引擎不止这一种,还有freemarker、thymeleaf等等.若依选择Velocity。

2024-08-24 20:47:11 853

原创 Jvm内存泄漏

【代码】Jvm内存泄漏。

2024-08-22 13:42:36 318

原创 宋红康JVM调优思维导图

文章目录1. 概述2. JVM监控及诊断命令-命令行篇3. JVM监控及诊断工具-GUI篇4. JVM运行时参数5. 分析GC日志课程地址1. 概述2. JVM监控及诊断命令-命令行篇3. JVM监控及诊断工具-GUI篇4. JVM运行时参数5. 分析GC日志

2024-08-21 09:54:16 250

空空如也

空空如也

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

TA关注的人

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