自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Navicat的安装步骤

链接: https://pan.baidu.com/s/1W2tGt6gEMzpNA0EFwakXQQ 提取码: xdnb。双击文件夹里面的(无限适用Navicat),如何将winmm.dll放到navicat的安装目录。双击navicat应用程序进行傻瓜式安装,不再赘述。以上步骤完成后就可以使用navicat啦!

2025-09-26 11:51:09 245

原创 60道MYSQL高频面试

可以通过 flashback,美团的 myflash,也是一个不错的工具,本质都差不多,都是先解析 binlog event,然后在进行反转。一般的语句修改使用 statment 格式保存 binlog,如一些函数,statement 无法完成主从复制的操作,则采用 row 格式保存 binlog,MySQL 会根据执行的每一条具体的 SQL 语句来区分对待记录的日志形式。但是 MySQL 重启之后会重新生成新的 binlog 文件,这就保证了,同一个 binlog 文件里,Xid 一定是惟一的。

2025-09-24 16:16:10 1047

原创 JVM虚拟机

如果不,JVM会查看HandlePromotionFailure 参数是否允许担保失败,如果允许会继续检查老年代最大可用连续空间是否大于历次晋升老年代对象的平均大小,如果满足将Minor GC,否则改成一次 FullGC。通过 GC Roots 的根对象作为起始节点,从这些节点开始,根据引用关系向下搜索,如果某个对象没有被搜到,则会被标记为垃圾。已经被加载的类会直接返回,如果没有被加载,首先将类加载请求转发给父类加载器,一直转发到启动类加载器,只有当父类加载器无法完成时才尝试自己加载。

2025-09-23 17:31:39 704

原创 JUC并发编程

每当一个线程执行完毕后,调用countDown方法,计数器的值就减1,当计数器的值为0时,表示所有线程都执行完毕,然后在等待的线程就可以恢复工作了。CAS 算法是基于值来做比较的,如果当前有两个线程,一个线程将变量值从 A 改为 B ,再由 B 改回为 A ,当前线程开始执行 CAS 算法时,就很容易认为值没有变化,误认为读取数据到执行 CAS 算法的期间,没有线程修改过数据。如果这个对象没有被锁定,或当前线程已经持有锁,就把锁的计数器加 1,执行 monitorexit 指令时会将锁计数器减 1。

2025-09-21 21:32:15 691 1

原创 精选40道Kafka面试

消费组内的消费者可以使用多线程的方式实现,消费者的数量通常不超过分区的数量,且二者最好保持整数倍的关系,这样不会造成有空闲的消费者。Consumer Group与Consumer的关系是动态维护的,当一个Consumer进程挂掉或者是卡住时,该Consumer所订阅的Partition会被重新分配到改组内的其他Consumer上,当一个Consumer加入到一个Consumer Group中时,同样会从其他的Consumer中分配出一个或者多个Partition到这个新加入的Consumer。

2025-09-17 13:23:09 844 1

原创 2025年最新Typora破解

3.在最上面文件安装目录上输入cmd,进入DOS窗口。邮箱不需要真实邮箱,符合邮箱规范就行。进入到 Typora 的安装目录,将以下两个。解压License-Windows文件夹。下载完成,傻瓜式安装,不再赘述。点击确定, 等待激活成功。AI生成项目shell1。AI生成项目shell1。进Typora安装目录。点击运行Typora,开始激活Typora。

2025-09-17 11:51:16 3759 3

原创 SQL的执行顺序

1.首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表 vt1(选择相对小的表做基础表)。

2025-09-16 13:26:46 463

原创 SpringAI框架接入Deepseek和豆包实现智能聊天

ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder().model("ep-xxxxxxxxxxxx")// 需要替换为您的推理接入点ID。在进行创建springboot项目时,添加Spring Web和OpenAI两个依赖,不要添加lombok依赖,创建完项目后自己在maven中添加lombok的依赖,这是一个小小的bug,Springboot版本为3.2.x或者更高版本。// 打印模型输出的回答内容。

2025-09-15 16:14:06 1753 6

原创 天机学堂(高并发优化)

首先,我们要定义一个工具类,帮助我们改造整个业务。在提交学习记录业务中,需要用到异步任务和缓存的地方有以下几处:因此,我们的工具类就应该具备上述4个方法:① 添加播放记录到Redis,并添加一个延迟检测任务到DelayQueue② 查询Redis缓存中的指定小节的播放记录③ 删除Redis缓存中的指定小节的播放记录④ 异步执行DelayQueue中的延迟检测任务,检测播放进度是否变化,如果无变化则写入数据库@Slf4j@Component。

2025-06-11 00:32:44 1210

原创 天机学堂(学习计划和进度)

经过前面的努力,我们已经完成了《我的课程表》相关的功能的基础部分,不过还有功能实现的并不完善。还记得昨天给大家的练习题吗?《查询我正在学习的课程》,在原型图中有这样的一个需求:我们需要在查询结果中返回已学习课时数、正在学习的章节名称。虽然我们在learning_lesson表中设计了两个字段:learned_sections:已学习章节数latest_learn_time:最近学习时间但是,这几个字段默认都是空或0,我们该如何得知用户到底学习了几节?最近一次学习是什么时候?

2025-06-07 00:06:18 1533

原创 天机学堂(我的课表)

编号接口简述请求方式请求路径1支付或报名课程后,立刻加入课表MQ通知2分页查询我的课表GET3查询我最近正在学习的课程GET4根据id查询指定课程的学习状态GET5删除课表中的某课程DELETE6退款后,立刻移除课表中的课程MQ通知7校验指定课程是否是课表中的有效课程(Feign接口)GET8统计课程学习人数(Feign接口)GET那么接下来,我们就一起来分析、设计、实现这些接口吧。

2025-06-04 18:26:42 1707 3

转载 天机学堂(初始项目)

天机学堂是一个基于微服务架构的生产级在线教育项目,核心用户不是K12群体,而是面向成年人的非学历职业技能培训平台。相比之前的项目课程,其业务完整度、真实度、复杂度都非常的高,与企业真实项目非常接近。通过天机学堂项目,你能学习到在线教育中核心的学习辅助系统、考试系统,电商类项目的促销优惠系统等等。更能学习到微服务开发中的各种热点问题,以及不同场景对应的解决方案。学完以后你会收获很多的“哇塞”。

2025-06-02 20:48:27 2710

原创 点评day08(UV统计)

UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。PV:全称Page View,也叫页面访问量或点击量,用户每访问网站的一个页面,记录1次PV,用户多次打开页面,则记录多次PV。Hyperloglog(HLL)是从Loglog算法派生的概率算法,用于确定非常大的集合的基数,而不需要存储其所有值。通常来说UV会比PV大很多,所以衡量同一个网站的访问量,我们需要综合考虑很多因素,所以我们只是单纯的把这两个值作为一个参考值。作为代价,其测量结果是概率性的,

2025-05-11 00:31:07 454

原创 点评day08(用户签到)

id % bitmap.size = 算出当前这个id对应应该落在bitmap的哪个索引上,然后将这个值从0变成1,然后当用户来查询数据时,此时已经没有了list,让用户用他查询的id去用相同的哈希算法, 算出来当前这个id应当落在bitmap的哪一位,然后判断这一位是0,还是1,如果是0则表明这一位上的数据一定不存在, 采用这种方式来处理,需要重点考虑一个事情,就是误差率,所谓的误差率就是指当发生哈希冲突的时候,产生的误差。第一种解决方案:遇到的问题是如果用户访问的是id不存在的数据,则此时就无法生效。

2025-05-11 00:28:08 867

原创 点评day08(附近商户)

我们要做的事情是:将数据库表中的数据导入到redis中去,redis中的GEO,GEO在redis中就一个menber和一个经纬度,我们把x和y轴传入到redis做的经纬度位置去,但我们不能把所有的数据都放入到menber中去,毕竟作为redis是一个内存级数据库,如果存海量数据,redis还是力不从心,所以我们在这个地方存储他的id即可。GEORADIUS:指定圆心、半径,找到该圆内包含的所有member,并按照与圆心之间的距离排序后返回。GEODIST:计算指定的两个点之间的距离并返回。

2025-05-11 00:21:44 970

原创 点评day07(好友关注)

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

2025-05-10 00:30:41 1055

原创 点评day07(达人探店)

对应的表有两个: tb_blog:探店笔记表,包含笔记中的标题、文字、图片等 tb_blog_comments:其他用户对探店笔记的评价。因为我们的数据是不能重复的,当用户操作过之后,无论他怎么操作,都是。

2025-05-10 00:21:58 897

原创 点评day06(redis-消息队列)

所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。注意:当我们指定起始ID为$时,代表读取最新的消息,如果我们处理一条消息的过程中,又有超过1条以上的消息到达队列,则下次获取时也只能获取到最新的一条,会出现漏读消息的问题。

2025-05-09 00:32:42 1134

原创 点评day06(秒杀的优化)

秒杀业务的优化思路是什么?(核心的留给Redis判断,之后的留给queue去做)先利用Redis完成库存余量、一人一单判断,完成抢单业务再将下单业务放入阻塞队列,利用独立线程异步下单基于阻塞队列的异步秒杀存在哪些问题?内存限制问题数据安全问题。

2025-05-09 00:22:05 802

原创 点评day05(分布式锁-redisson)

5、分布式锁-redission 5.1 分布式锁-redission功能介绍 基于setnx的分布式锁问题 基于setnx实现的分布式锁存在下面的问题:重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。

2025-05-08 00:22:08 1064

原创 点评day04(分布式锁-setnx)

我们一路走来,利用添加过期时间,防止死锁问题的发生,但是有了过期时间之后,可能出现误删别人锁的问题,这个问题我们开始是利用删之前 通过拿锁,比锁,删锁这个逻辑来解决的,也就是删之前判断一下当前这把锁是否是属于自己的,但是现在还有原子性问题,也就是我们没法保证拿锁比锁删锁是一个原子性的动作,最后通过lua表达式来解决这个问题。

2025-05-07 00:19:36 1356

原创 点评day03(优惠券秒杀)

由于现在我们部署了多个tomcat,每个tomcat都有一个属于自己的jvm,那么假设在服务器A的tomcat内部,有两个线程,这两个线程由于使用的是同一份代码,那么他们的锁对象是同一个,是可以实现互斥的,但是如果现在是服务器B的tomcat内部,又有两个线程,但是他们的锁对象写的虽然和服务器A一样,但是锁对象却不是同一个,所以线程3和线程4可以实现互斥,但是却无法和线程1和线程2实现互斥,这就是 集群环境下,syn锁失效的原因,在这种情况下,我们就需要使用分布式锁来解决这个问题。

2025-05-06 15:24:17 941

原创 点评day02(缓存)

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

2025-05-05 18:46:11 1294

原创 点评day01(基于Redis)

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

2025-05-04 15:14:26 855

原创 点评day01(基于session)

动静分离**静态部署**负载均衡*

2025-05-04 15:05:41 883

原创 Redis八股文——分布式锁

这个是不能的,比如,当线程1加锁成功后,master节点数据会异步复制到slave节点,此时当前持有Redis锁的master节点宕机,slave节点被提升为新的master节点,假如现在来了一个线程2,再次加锁,会在新的master节点上加锁成功,这个时候就会出现两个节点同时持有一把锁的问题。这样做是为了避免死锁的产生。嗯~,redis本身就是支持高可用的,做到强一致性,就非常影响性能,所以,如果有强一致性要求高的业务,建议使用zookeeper实现的分布式锁,它是可以保证强一致性的。

2025-04-28 23:53:42 557

原创 面试八股文之Redis篇-——缓存

候选人: (雪崩大量Key过期,过期时间不唯一) 嗯!!缓存雪崩意思是设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB 瞬时压力过重雪崩。与缓存击穿的区别:雪崩是很多key,击穿是某一个key缓存。解决方案主要是可以将缓存失效时间分散开,比如可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,,就很难引发集体失效的事件。

2025-04-27 23:59:44 1272

原创 今日头条day12

持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干持续集成的组成要素一个自动构建过程, 从检出代码、 编译构建、 运行测试、 结果记录、 测试统计等都是自动完成的, 无需人工干预。一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,一般使用SVN或Git。一个持续集成服务器, Jenkins 就是一个配置简单和使用方便的持续集成服务器。1.2 持续集成的好处。

2025-04-25 01:43:41 629

原创 今日头条day11

Kafka Stream是Apache Kafka从0.10版本引入的一个新Feature。它是提供了对存储于Kafka内的数据进行流式处理和分析的功能。Kafka Stream的特点如下:Kafka Stream提供了一个非常简单而轻量的Library,它可以非常方便地嵌入任意Java应用中,也可以任意方式打包和部署除了Kafka外,无任何外部依赖充分利用Kafka分区机制实现水平扩展和顺序性保证。

2025-04-24 00:44:37 1096

原创 今日头条day10

当前软件的架构已经开始向分布式架构转变,将单体结构拆分为若干服务,服务之间通过网络交互来完成业务处理。在分布式架构下,一个服务往往会部署多个实例来运行我们的业务,如果在这种分布式系统环境下运行任务调度,我们称之为分布式任务调度。将任务调度程序分布式构建,这样就可以具有分布式系统的特点,并且提高任务的调度处理能力:1、并行任务调度并行任务调度实现靠多线程,如果有大量任务需要调度,此时光靠多线程就会有瓶颈了,因为一台计算机CPU的处理能力是有限的。

2025-04-23 01:18:20 1117

转载 今日头条day09

将配置导入spring后,发现有个注解找不到需要导入自定义注解导入自定义注解到heima-leadnews-model模块中的com.heima.model.common.annotation.IdEncrypt。

2025-04-22 00:18:34 1334

转载 今日头条day08

接口地址/login/in请求方式POST请求数据类型响应数据类型*/*接口描述请求示例heima-leadnews-model模块下的com.heima.model.admin.pojos.dtos包下创建AdUserDto类@Data。

2025-04-21 00:55:42 1240

原创 今日头条day07

* APP用户搜索信息表 前端控制器*

2025-04-20 01:00:37 1126

原创 今日头条day06

消息中间件对比特性ActiveMQRabbitMQRocketMQKafka开发语言javaerlangjavascala单机吞吐量万级万级10万级100万级时效性msusmsms级以内可用性高(主从)高(主从)非常高(分布式)非常高(分布式)功能特性成熟的产品、较全的文档、各种协议支持好并发能力强、性能好、延迟低MQ功能比较完善,扩展性佳只支持主要的MQ功能,主要应用于大数据领域消息中间件对比-选择建议消息中间件建议Kafka。

2025-04-19 00:25:35 1054

原创 今日头条day05

定时任务:有固定周期的,有明确的触发时间延迟队列:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件,任务可以立即执行,也可以延迟应用场景:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单;如果期间下单成功,任务取消场景二:接口对接出现网络问题,1分钟后重试,如果失败,2分钟重试,直到出现阈值终止。

2025-04-18 00:50:39 918

原创 CentOS 7 安装教程

2、分交换分区(交换空间)swap,看内存总大小,如果内存足够大,这个空间就要设置太大了。(注意:版本一定要对应镜像文件版本,其中centos是32位,centos 64位则就是64位,windows系统应安装64位版本)3、稍后安装操作系统(需要在虚拟机安装完成之后,删除不需要的硬件,所以稍后安装操作系统)接下来可以创建用户(此处可以不进行创建,安装完成后进入root也可以重新创建)-编辑虚拟机设置–删-USB控制器、声卡、打印机(可以使虚拟器启动的快一点)(简略表示出该虚拟机的类型、版本。

2025-04-17 22:40:36 2871 1

原创 今日头条day04

内容安全是识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效降低内容违规风险。目前很多平台都支持内容检测,如阿里云、腾讯云、百度AI、网易云等国内大型互联网公司都对外提供了API。按照性能和收费来看,黑马头条项目使用的就是阿里云的内容安全接口,使用到了图片和文本的审核。

2025-04-17 00:29:04 981

原创 今日头条day03

说明接口路径请求方式POST参数WmNewsDto响应结果WmNewsDto​​​@Data/*** 标题*//*** 频道id*//*** 标签*//*** 发布时间*//*** 文章内容*//*** 文章封面类型 0 无图 1 单图 3 多图 -1 自动*//*** 提交时间*//*** 状态 提交为1 草稿为0*//*** 封面图片列表 多张图以逗号隔开*/"title":"黑马头条项目背景",

2025-04-16 00:48:44 1280

原创 今日头条day02

加载首页加载更多加载最新接口路径请求方式POSTPOSTPOST参数响应结果​​​@Data​// 最大时间// 最小时间// 分页size// 频道IDString tag;​​​​​​MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。

2025-04-15 00:16:56 1264

原创 今日头条day01

随着智能手机的普及,人们更加习惯于通过手机来看新闻。由于生活节奏的加快,很多人只能利用碎片时间来获取信息,因此,对于移动资讯客户端的需求也越来越高。黑马头条项目正是在这样背景下开发出来。黑马头条项目采用当下火热的微服务+大数据技术架构实现。本项目主要着手于获取最新最热新闻资讯,通过大数据分析用户喜好精确推送咨询新闻2.4)项目术语。

2025-04-14 17:36:51 1205

空空如也

空空如也

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

TA关注的人

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