自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (3)
  • 收藏
  • 关注

原创 springboot项目实现微信公众号推送天气

SpringBoot、微信公众号相关api、Spring定时任务等。

2024-02-01 19:37:12 277 1

原创 基数排序JAVA实现

基数排序是一种非比较性的排序算法,它根据元素的每个位上的值进行排序。基数排序的思想是将待排序的元素按照个位、十位、百位等位数进行排序,从低位到高位依次进行。具体步骤如下:1.首先,将待排序的元素按照个位数的值分桶,即将所有元素根据个位数的值放入对应的桶中。2.然后,将每个桶中的元素按照个位数的值从小到大依次取出,放回原数组中。3.接下来,按照十位数的值将元素再次分桶,再依次取出放回原数组中。4.重复上述步骤,直到所有位数都排完为止。

2023-08-04 21:29:47 73 1

原创 数组和链表实现稀疏数组JAVA

稀疏数组是一种用于表示稀疏数据结构的数据结构。稀疏数组适用于当大部分元素的值为默认值(通常为0或null)时,可以通过压缩存储来节省空间。稀疏数组通常由三个字段组成:行数、列数和非默认值元素的列表。列表中的每个元素包含非默认值元素的行索引、列索引和值。稀疏数组的压缩存储方法是将稀疏数组转换为一个二维数组,其中第一行表示原始数组的行数、列数和非默认值元素的个数,接下来的行表示非默认值元素的行索引、列索引和值。这种存储方式可以大大减少空间占用,因为只需要存储非默认值元素的信息。

2023-07-28 21:41:22 71 1

原创 java代码实现链表

链表是一种常见的数据结构,用于存储和组织数据。它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表可以分为单向链表和双向链表两种类型。在单向链表中,每个节点只包含一个指向下一个节点的指针。链表的第一个节点称为头节点,最后一个节点称为尾节点,尾节点的指针指向空值。在双向链表中,每个节点包含指向前一个节点和后一个节点的指针。这使得在双向链表中可以从前向后或从后向前遍历。链表相对于数组的优势在于插入和删除操作的效率较高。

2023-07-27 21:20:47 185 1

原创 使用栈实现加减乘除运算

利用数组实现的栈结构来实现加减乘除运算。

2023-07-24 22:11:04 333 1

原创 数据结构之栈(JAVA)

栈是一种线性结构,它的他点是先进后出,就例如一个书箱中装满了书,我们能够最先取到的肯定是最后放的那一本书,因为它在最上面,而我们最先放入书箱的那一本书,由于被压到了最下面,因此只能最后被取出来。栈结构的实现可以使用数组或链表。使用数组实现的栈称为顺序栈,它需要预先指定栈的最大容量。使用链表实现的栈称为链式栈,它可以根据需要动态分配内存。栈结构在计算机科学中有广泛的应用。例如,编程语言中的函数调用栈用于保存函数调用的上下文信息。在算法中,栈可以用于解决递归问题、实现深度优先搜索等。

2023-07-24 21:57:16 48 1

原创 商城项目秒杀功能后端

在消费者收到秒杀消息后,还需要再次判断状态位,防止商品已经售罄,如果售罄,不再往下执行之后需要判断用户是否重复下单,可以利用Redis中的setnx进行判断,如果用户已经下过单,那么就表示setnx已经设置过,由于setnx只能设置一次,再次设置就会返回false,这样就能控制用户重复下单,如果用户重复下单,就不再往下执行,之后再次判断商品是否售罄,如果售罄,更新状态位不再往下执行,之后就可以生成临时订单,更新库存。同时,商城项目还需要注意防止刷单、防止秒杀脚本等恶意行为,保障秒杀活动的公平性和用户体验。

2023-07-19 09:42:13 273

原创 RabbitMQ基础知识使用springboot整合

有时两个进程之间传递消息时,某个进程承受消息太多,一下子无法处理完,容易造成崩溃,这时就可以在两个进程之间加上消息中间件,让它们排队有序的执行,例如在双十一期间,某件商品在九点要开始抢购,在九点就必定会有大量的请求,在这种情况下,为了防止服务器崩溃,就可以采用消息队列的流量削峰,将消息放入MQ中保存起来,根据服务器的消费能力一点点的来进行处理。1.设置消息的TTL,即消息的存活时间,例如我们创建一个消息队列,在参数中设置x-message-ttl 为10000,那所在这个队列的消息将会在五秒后被消失。

2023-07-15 00:46:05 130 2

原创 在学习商城项目中实现购物车相关功能后端部分

主要涉及到了购物车模块的增删改查,其中在查询购物车列表的时候,要注意根据已登录用户存储商品和未登录用户存储的商品情况进行不同的分析1.在已登录用户和未登录用户都没有商品的情况下,直接返回空的集合即可2.在已登录用户有商品、未登录用户没有商品的情况下,也不需要过多分析,直接返回已登录用户的商品列表即可3.在已登录用户有商品、未登录用户也有商品的情况下,需要进行判断已登录用户是否已经含有未登录用户的商品,如果有,则将已登录用户的商品数量进行加1,如果没有就在已登录用户中保存一个新的商品。

2023-07-10 20:46:50 874 2

原创 商城项目中实现单点登录功能后端部分

③判断请求路径是否是需要登录的api异步接口,如果是,则根据第二步取出来的用户id判断是否为空,如果为空,返回未登录的错误信息。从上面的代码可以看出我的cookie已经设置过了,path为/表示根路径,由于在设置cookie的时候没有设置domain,所以cookie可以有效的域名默认是设置cookie的页面,由于设置cookie的页面是登录页面,而登录页面的ip地址是127.0.0.1,因此只要ip地址是127.0.0.1的页面都拥有这样的cookie,因此可以正常显示用户名。

2023-07-09 19:30:31 173 1

原创 单点登录中遇到的bug

127.0.0.1和127.0.1.1有什么不同?127.0.0.1和127.0.1.1都是本地回环地址,用于在计算机上进行网络通信测试。它们的区别在于:127.0.0.1是最常见的本地回环地址,也被称为"localhost"。它通常用于本地主机上的服务和应用程序进行通信。127.0.1.1是一种特殊的本地回环地址,通常在某些Linux发行版中使用。它被用作本地主机名的别名,用于在本地主机上运行的网络服务和应用程序之间进行通信。

2023-07-09 11:35:09 213 1

原创 实现父子层级的数据结构封装

在今天的项目中,需要将商品分类信息封装成父子层级的数据结构Stream流是一种函数式编程的概念,它可以用来处理集合或数组等数据源的元素.

2023-07-05 21:52:14 1212 1

原创 Redis实现分布式锁

在高并发的场景下多使用分布式的架构,在这种情况下本地锁大多已经无法解决数据安全问题,因此需要用分布式锁的方式,这里使用了两种方式来完成。

2023-07-04 23:01:20 2581 2

空空如也

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

TA关注的人

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