面试准备
谈谈你对面向对象的看法1234封装:保证了独立性,安全性继承:避免了大量重复代码,提升开发效率多态:提高代码的灵活和可扩展性抽象:强调了子类必要的核心 线程池的核心参数1核心线程数,最大线程数,任务队列,线程存活时间,时间单位,拒绝策略,线程工厂 核心线程数和最大线程数的区别1231. 核心线程数:是线程池长期维持的线程数量,即便这些线程空闲,也不会轻易被销毁,随时待命处理任务2. 最大线程数:是线程池能创建的线程上限。当任务队列已满,且当前活动线程数小于最大线程数时,线程池会创建新线程来处理任务。这用于应对突发的高并发任务。 什么样的情况需要设置索引1231. 频繁查询字段:当某个字段经常在WHERE子句中作为查询条件时2. 连接字段:在多表连接操作中,用于连接的字段设置索引可提升连接效率3. 排序字段:若查询结果需要按某个字段排序,对该排序字段创建索引有助于快速排序 你了解的一些索引优化的方式12341. 聚焦高频查询字段:仅在常出现在WHERE、JOIN、ORDER BY子句的字段上建索引。2. 前缀索引:对于长字符串字段,可使用前缀索引。3....
星策味达
项目简介12星策味达是一款点餐系统,项目包含后台管理系统和客户端界面,实现了员工管理、菜品及套餐展示、订单处理等核心功能,系统还引入了优惠券秒杀、菜品评价、附近美食等增值服务,丰富了用户的点餐体验。 延迟双删,缓存过期时间数据一致性保障:采用延迟双删和缓存过期时间,巧妙地解决了数据不一致问题,防止了脏数据残留。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131. 延迟双删 (1). 解决 “数据库更新期间,其他线程可能写入旧缓存” 的并发问题。 (2). 为什么需要第二次删除? 假设线程 A 删除缓存后,在更新数据库的过程中: ...
乐享学
项目简介12345678910111213141516171819202122232025.2 - 2025.05乐享学习后端开发项目简介:乐耍学是一款面向中学生的学习论坛,提供课业答疑,知识共享、学习方法交流等功能,支持发帖、评论、点赞、私信、热门排行及系统通知等功能,旨在提升学习效率。*技术架构:SpringBoot + MyBatis + MySQL + Redis + JWT + RabbitMQ + Elasticsearch项目亮点:*帖子排行:利用 Sorted Set 实现了帖子排行功能,并使用时间戳拼接元素值的方式,解决了权重相同的排行问题。*优化热门 Key 问题:使用 Caffeine+Redis 两级缓存,优化了热门帖子的访问,单机可达 80000QPS。*异步消息处理:利用 RabbitMQ 异步处理站内通知,在用户被点赞、评论、关注后,放入异步队列,以系统通知的方式推送给用户,降低系统耦合度,提升消息处理效率。*精准全文搜索:利用 ElasticSearch,可准确匹配搜索结果,并高亮显示关键词。*UV 和 DAU 统计:利用...
无标题
Jmeter快速入门1.安装JmeterJmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 1.1.下载可以Apache Jmeter官网下载,地址:http://jmeter.apache.org/download_jmeter.cgi 当然,我们课前资料也提供了下载好的安装包: 1.2.解压因为下载的是zip包,解压缩即可使用,目录结构如下: 其中的bin目录就是执行的脚本,其中包含启动脚本: 1.3.运行双击即可运行,但是有两点注意: 启动速度比较慢,要耐心等待 启动后黑窗口不能关闭,否则Jmeter也跟着关闭了 2.快速入门2.1.设置中文语言默认Jmeter的语言是英文,需要设置: 效果: 注意:上面的配置只能保证本次运行是中文,如果要永久中文,需要修改Jmeter的配置文件 打开jmeter文件夹,在bin目录中找到...
黑马商城
前提提示飞书文档,老师档案https://b11et3un53m.feishu.cn/wiki/R4Sdwvo8Si4kilkSKfscgQX0niB 1. Nacos1.导入依赖12345<!--nacos 服务注册发现--><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>2.配置文件连接Nacos配置自己的nacos虚拟机地址,Nacos根据application下的name注册123456spring: application: name: cart-service cloud: nacos: server-addr: 172.16.207.227:8848 2....
Redis相关处理
1 Redis配置123456789redis: host: localhost port: 6379 lettuce: pool: max-active: 10 max-idle: 10 min-idle: 1 time-between-eviction-runs: 10s 2 Redis进行缓存2.1 缓存穿透缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。常见的解决方案有两种:1.缓存空对象,优点:实现简单,维护方便。缺点:额外的内存消耗可能造成短期的不一致2.布隆过滤,优点:内存占用较少,没有多余 key。缺点:实现复杂存在误判可能推荐使用缓存空对象,这里封装到工具类的形式1234567891011121314151617181920212223242526272829303132333435//缓存穿透public <R,ID> R queryWithPassThrough( String keyPrefix,ID...
RabbitMQ在Java端口的使用
1. 配置RabbitMQ相关信息在application.yml中配置关于rabbitmq的信息 1234567spring: rabbitmq: host: 172.16.207.227 //根据实际的地址(本地部署可以为localhost),这里指虚拟机Ubuntu username: guest //默认用户 password: guest //默认密码 port: 5673 //RabbitMQ官方指定的端口号 virtual-host: / //默认的虚拟端口,在admin中更改 2. spring导入依赖导入spring12345678910111213141.建议方式//<!-- 移除手动指定的版本号 --><dependency> <groupId>org.springframework.boot</groupId> ...
docker
1 更新软件包索引:1sudo apt-get update 2 安装必要的软件包,以允许apt通过HTTPS使用仓库:1sudo apt-get install apt-transport-https ca-certificates curl software-properties-common 3 添加Docker的官方GPG密钥:1curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 4 添加Docker的稳定仓库:1sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 5 再次更新软件包索引:1sudo apt-get update 6 安装最新版本的Docker CE(社区版):1sudo apt-get install docker-ce 7...
RabbitMQ部署(在docker中管理)
1 拉取RabbitMQ镜像1.1 拉取最新镜像docker.1ms.run 国内镜像源1docker pull docker.1ms.run/rabbitmq:latest 1.2 验证镜像拉取镜像后,您可以通过以下命令来验证是否成功拉取了RabbitMQ镜像:1docker images此命令将列出本地所有已下载的Docker镜像,您可以在列表中查找rabbitmq相关的条目,确认是否包含您刚刚拉取的镜像。输出结果将显示镜像的REPOSITORY、TAG、IMAGE ID、CREATED、SIZE等信息。例如: 2. 启动RabbitMQ容器2.1 创建容器创建RabbitMQ容器是部署过程中的关键步骤,以下是创建RabbitMQ容器的命令行演示:1docker run -d --name rabbitmq -p 5673:5672 -p 15673:15672...
苍穹项目
一、第一天md5加密(maven导入版)123456789101. 导入md5(单程加密,不能复原) <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.2</version> </dependency>2. 使用 //将前端的数据进行md5处理再对比 password = DigestUtils.md5DigestAsHex(password.getBytes()); swagger123456789101112131415161718192021222324252627282930313233343536373839404142434445461. 在maven中导入knife4j ...






