- 博客(33)
- 收藏
- 关注
原创 RabbitMQ详解(完结)
支付服务需要先调用用户服务完成余额扣减然后支付服务自己要更新支付流水单的状态然后支付服务调用交易服务,更新业务订单状态为已支付三个步骤依次执行。第一拓展性差我们目前的业务相对简单,但是随着业务规模扩大,产品的功能也在不断完善。某些电商项目中,还会有积分或金币的概念。假如产品经理提出需求,用户支付成功后,给用户以积分奖励或者返还金币,你怎么办?是不是要在上述业务中再加入积分业务、返还金币业务?
2025-11-27 23:37:06
729
原创 docker详解
我们利用docker安装应用时,docker会自动搜索并下载应用镜像(image).镜像不仅包含应用本身,还包含应用运行所需要的环境,配置,系统函数库。docker会在运行镜像时创建一个隔离环境,称为容器1).容器(Container)容器是镜像创建的运行实例,它是一个轻量级的、可执行的独立软件包,包含了运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。容器化技术使得软件可以在几乎任何地方以相同的方式运行,解决了“在我的机器上可以运行”的问题。
2025-11-26 23:14:34
775
原创 redis实战day03(消息队列)
目录秒杀优化1.异步秒杀整体思路2.Redis完成秒杀资格判断3.基于阻塞队列实现秒杀优化Redis消息队列1.基于List实现消息队列2. 基于PubSub的消息队列3.基于Stream的消息队列3.1优化:基于Stream的消息队列-消费者组编辑3.2异步秒杀下单 代码实现我们来回顾一下下单流程当用户发起请求,此时会请求nginx,nginx会访问到tomcat,而tomcat中的程序,会进行串行操作,分成如下几个步骤1、查询优惠卷2、判断秒杀库存是否足够3、查询订单4、校验是否是一人一单5、扣减库存
2025-11-04 16:19:24
874
原创 redis实战day2(秒杀)
重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。
2025-10-31 20:42:27
1024
原创 redis实战篇day1(缓存)
缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码1.1 为什么要使用缓存?速度快,好用,缓存数据存储于代码中,而代码运行在内存中,内存的读写性能远高于磁盘,缓存可以大大降低用户访问并发量带来的服务器读写压力 ,如果在同一时间大量的请求到数据库,数据库是撑不住的1.2 如何使用缓存实际开发中,会构筑多级缓存来使系统运行速度进一步提升,例如:本地缓存与redis中的缓存并发使用浏览器缓存:主要是存在于浏览器端的缓存。
2025-10-29 16:30:17
679
原创 苍穹外卖知识点大总结(4万字)
本项目(苍穹外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括 系统管理后台 和 小程序端应用 两部分。主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行统计,同时也可进行来单语音播报功能。这个只是一个商家的操作系统,但是用户端可以好多人登录主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。
2025-10-15 17:38:18
1033
原创 苍穹外卖day09
今天对应的是外卖day12---即将完结工作台代码Apache POI(excel表格导出)导出运营数据Excel报表(Apache POI实战)/*** 基于POI向Excel文件写入数据*///在内存中创建一个Excel文件对象//创建Sheet页//在Sheet页中创建行,0表示第1行//创建单元格并在单元格中设置值,单元格编号也是从0开始,1表示第2个单元格row1.createCell(1).setCellValue("姓名");
2025-10-11 16:39:06
776
原创 苍穹外卖day08
今天主要完成黑马第11天的内容特性LocalDate包含内容仅日期日期 + 时间精度天纳秒典型格式2024-01-15适用场景生日、节假日会议时间、日志时间戳使用建议如果只需要日期,使用LocalDate如果需要精确时间,使用如果需要时区信息,考虑使用关于在Spring中使用LocalDate和取决于数据传递的方式和你的配置。在某些情况下必须加,而在另一些配置完善的场景下则可以省略。🤔 何时需要(或不需要)注解?数据传递场景常用注解是否必须加注解?URL请求参数(如强烈建议添加。
2025-10-10 20:17:39
627
原创 苍穹外卖day07~
WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。HTTP是短连接WebSocket是长连接HTTP通信是单向的,基于请求响应模式WebSocket支持双向通信HTTP和WebSocket底层都是TCP连接既然WebSocket支持双向通信,功能看似比HTTP强大,那么我们是不是可以基于WebSocket开发所有的业务功能?
2025-10-09 19:55:43
1041
原创 苍穹外卖day04
这些任务虽然标记了day1 day2 ,但是每个day都不是我一天学习完的,学习过程要理解,记笔记,一个文章往往是我学习几天的心得总结目录1.微信登陆2.用redis存储数据3.Spring Cache技术5.添加购物车学到了好多好多,本文到此结束!
2025-09-24 20:32:36
741
原创 苍穹外卖day01
对于http协议请求协议:浏览器将数据以请求格式发送到服务器。请求行、请求头 、请求体get请求只有请求行和请求体post请求则是三个都有1)请求行:请求方式、资源路径、协议/版本组成(之间使用空格分隔)Host表示请求的主机名User-Agent浏览器版本。例如:Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79 ,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like GeckoAccept。
2025-09-16 14:18:37
881
原创 mysql基础详解
数据库对我们后端开发来说十分的重要,是保存数据的重要工具,今天我来为大家讲解sql的基础语法DDL-数据库操作查询所有数据库:查询当前数据库:创建:CREATE DATABASE [ IF NOT EXISTS ] 数据库名字 [ DEFAULT CHARSET 字符集 ] [ collate 排序规则 ];[ .. ]部分可以选择性加入IF NOT EXISTS:仅当数据库不存在时创建,避免重复创建报错。DEFAULT CHARSET 字符集 :指定数据库默认字符集(如utf8mb4。
2025-05-14 21:29:44
1961
原创 二叉树(含一部分例题)
二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。根节点(Root):树的顶层节点,没有父节点。子节点(Child):每个节点最多有两个子节点(左/右)。叶子节点(Leaf):没有子节点的节点。遍历方式:根据访问根节点的顺序不同,分为前序、中序、后序和层序遍历。二叉树是树的最基本的东西,对于二叉树的前中后遍历掌握还是很重要的,打牢基础,对于后续学习更难得红黑树avl树菜更得心应手。
2025-05-12 21:05:22
438
原创 剖析java多线程
多线程是java较为重要的东西,对于以后的开发起到很大作用在同一时刻,有多个指令在cpu上交替执行在同一时刻,有多个指令在cpu上同时执行进程:独立运行的程序实例(资源分配单位)。线程:进程内的执行单元(CPU 调度单位),共享进程内存。(线程安全的集合实现)。volatile 关键字 :保证变量可见性(直接读写主内存),禁止指令重排序。: 线程本地变量,避免共享(如 SimpleDateFormat 线程不安全问题的解决方案)。
2025-04-28 21:28:54
1656
原创 io流详细解读
io流是java中较为重要的知识点:Java I/O 提供了一整套用于进行输入输出操作的类库,主要位于java.io包中,此外还有java.nio提供了新一代的 I/O 方案(非阻塞 I/O)。流(Stream):数据在程序中按照“流”的方式传输。流本质上是一种“数据通道”,可以理解为一个连续的数据序列或字节序列分为字节流 字符流 高级流常用 I/O 类及其用途File 类(java.io.File)用于表示文件和目录,对文件属性进行获取和操作。注意:它本身不用于读写数据。字节流类。
2025-04-11 13:15:50
992
原创 异常内容梳理
在开发过程中我们往往会遇到一些错误,该如何接受这些错误呢?java中就为我们提供了异常处理的机制Checked Exception(编译时异常):必须显式处理(try-catch或throwsUnchecked Exception(运行时异常):继承自或Error,无需强制处理。本篇文章我们分析了有关异常的处理机制,下次再见!!
2025-03-28 12:43:25
651
原创 泛型(java)
/注意,特别强调:E具体的数据类型在定义Person对象的时候指定,即在编译期间,就确定E是什么类型//String/*你可以这样理解,上面的Person类String s;//E 表示 s 的数据类型, 该数据类型在定义Person对象的时候指定,即在编译期间,就确定E是什么类型public Person(String s) {//E 也可以是参数类型this.s = s;public String f() {//返回类型使用 Ereturn s;
2025-03-23 13:20:35
305
原创 java 集合内容梳理
java中为我们提供了很多集合,这些集合都有自己很独特的特点,接下来我将为大家介绍一下集合的特点以及内容。主要分为两类,单列集合和双列集合vector很少用,不再详细讲解。
2025-03-21 20:54:44
895
原创 idea中如何在创建类时附带作者和时间(类注释)
我们经常会看到一些作者在创建class类文件时会自带作者以及时间?那么该如何做到呢??在设置中自定义模板,实现了作者及时间的注明,代码更加规范更利于团队合作本次文章到此结束,下次再见!!
2025-03-18 16:03:09
2950
原创 java中的Arrays.sort传入接口实现定制排序解读
以上就是今天要讲的内容,本文仅仅简单介绍了Arrays.sort的简单使用以及定制排序,并且就按单追溯了实现的原理还举例说明导入接口定制排序的实现(离散化)、(ps:本人的一点学习理解,若有不足请大佬指出,我会继续学习和改正)
2025-03-17 17:31:32
529
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅