Spring监听器(ApplicationEvent):比MQ更轻的异步神器!
引言:当咖啡店遭遇程序员
“顾客挤爆柜台时,优秀的店长不会催促咖啡师加速,而是启动一套科学的协作机制——
就像Spring事件驱动,用发布-订阅模式让系统像顶级咖啡团队般优雅应对洪峰流量”
一、咖啡店里的监听器:3位灵魂角色
真实战场还原(每秒1000订单的咖啡店):
graph LR
顾客["🔥 顾客喊单(事件发布者) ...
数据结构——树
概述
树就是一种类似现实生活中的树的数据结构(倒置的树)。任何一颗非空树只有一个根节点。
树的定义:树是⼀种数据结构,它是由n(n≥1)个有限节点组成⼀个具有层次关系的集合。把它叫做“树”是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。
一棵树具有以下特点:
每个节点有零个或多个⼦节点
没有⽗ ...
Kafka与RocketMQ的形象理解
一、先分清:两家店 “主打啥”(定位)
店类型
对应 MQ
主打能力(一句话)
像生活里的啥?
快递分拣站
Kafka
只拼 “快” 和 “多”,不管复杂服务
双 11 快递仓:一天分 10 万件,不帮改地址
社区便利店
RocketMQ
啥都管 “全”,服务灵活
楼下小超市:能留货、能退差、能帮存东西
...
剑指offer-46、孩⼦们的游戏(圆圈中最后剩下的数)
题目描述
有个游戏是这样的:⾸先,让 n 个⼩朋友们围成⼀个⼤圈,⼩朋友们的编号是0~n-1。然后,随机指定⼀个数 m ,让编号为0的⼩朋友开始报数。每次喊到 m-1 的那个⼩朋友要出列唱⾸歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下⼀个⼩朋友开始,继续 0... m-1报数....这样下去....直到剩下最后⼀ ...
Spring Boot中HTTP请求参数转换和请求体JSON反序列化的区别
Spring Boot中HTTP请求参数转换和请求体JSON反序列化的区别
问题
假设如下方法和对象
@Operation(summary = "新增或修改标签信息")
@PostMapping("saveOrUpdate")
public Result saveOrUpdateLabel(@RequestBody LabelInfo labelInfo) {
service.saveOrUpdate(labelInfo);
return Result.ok();
}
@Schema(descript ...
剑指offer-45、扑克牌顺⼦
题⽬描述
扑克牌可以组成顺⼦,⼤\⼩ 王可以看成任何数字,并且 A 看作 1 , J 为 11 , Q 为 12 , K 为 13 。 5张牌 【A,0,3,0,5】 就可以变成“ 1,2,3,4,5 ”(⼤⼩王分别看作 2 和 4 ),这样就组成了顺⼦。(可以认为⼤⼩王是 0 。)
输⼊五张牌,如果牌能组成顺⼦就输出true,否则就输出 false 。
示例1
输⼊:[0,3,2,6,4]
...
剑指offer-44、翻转单词序列
题⽬描述
给定⼀个句⼦,将句⼦中的单词进⾏翻转,注意,单词内部的字符顺序不改变,改变的是单词与单词之间的顺序,⽐如“ I am a coder. ”,翻转之后变成“ coder. a am I ”。
示例
注意:引号内部才是输⼊的内容
输⼊:"You are a cool boy."
输出:"boy. cool a are You"
思路及解答
Java内置函数分割反转
Java ⾥⾯有 ...
关于synchronized-reentrantlock-volatile学习总结1.0
Synchronized
synchronized 是什么
synchronized是 java 提供的原子性内置锁,实现基本的同步机制,不支持超时,非公平,不可中断,不支持多条件,基于 JVM 的 Monitor(监视锁)机制实现,主要解决的是多个线程之间的访问资源的同步性,可以保证被它修饰的方法或者代码块在任意时刻只有一个线程执行,以及保证:
原子性
...
线性数据结构
线性表示最常⽤⽽且最为简单的⼀种数据结构,⼀个线性表示 n 个数据元素的有限序列,有以下特点:
存在唯⼀的第⼀个的数据元素
存在唯⼀被称为最后⼀个的数据元素
除了第⼀个以外,集合中每⼀个元素均有⼀个前驱
除了最后⼀个元素之外,集合中的每⼀个数据元素都有⼀个后继元素
线性表包括下⾯⼏种:
数组:查询 / 更新 ...
Spring Cloud分布式事务(基于Seata AT模式,集成Nacos)--学习版
Spring Cloud分布式事务快速上手(基于Seata AT模式,集成Nacos)--学习版
前言
对于从未接触过Seata的同学来说,想要快速上手Seata还是需要花费比较长的时间,因为本身微服务开发中环境的搭建、以及各种配置都已经很繁琐了,然后再集成Seata,Seata又有许多配置,对于每个微服务来说,针对Seata又有一些配置,要搞清 ...
剑指offer-43、左旋转字符串
题⽬描述
汇编语⾔中有⼀种移位指令叫做循环左移( ROL ),现在有个简单的任务,就是⽤字符串模拟这个指令的运算结果。对于⼀个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。例如,字符序列S=”abcXYZdef” ,要求输出循环左移3位后的结果,即“ XYZdefabc ”。是不是很简单?OK,搞定它!
思路及解答
这道题⽬ ...
死磕Spring Boot Validation校验
一、基本介绍
SpringBoot提供了方便的validation主要对输入数据进行校验,确保数据符合预期规则,是保证应用健壮性的重要手段,
1、Bean Validation:基于 JSR-380 (Bean Validation 2.0) 规范、
2、Hibernate Validator:最流行的实现
3、Spring 集成:通过 @Valid 或 @Validated 注解触发验证
怎么使用就不介绍了,包含如 ...
剑指offer-42、和为S的两个数字
题⽬描述
输⼊⼀个递增排序的数组和⼀个数字 S ,在数组中查找两个数,使得他们的和正好是 S ,如果有多对数字的和等于 S ,输出两个数的乘积最⼩的。
返回值描述:对应每个测试案例,输出两个数,⼩的先输出。
输⼊:[1,2,4,7,11,15],15
返回值:[4,11]
思路及解答
暴⼒遍历
直接遍历每两个数,查看其和是否符合等于 sum , ...
剑指offer-41、和为S的连续正数序列
题⽬描述
⼩明很喜欢数学,有⼀天他在做数学作业时,要求计算出 9~16 的和,他⻢上就写出了正确答案是 100 。但是他并不满⾜于此,他在想究竟有多少种连续的正数序列的和为 100 (⾄少包括两个数)。没多久,他就得到另⼀组连续正数和为 100 的序列: 18,19,20,21,22 。现在把问题交给你,你能不能也很快的找出所有和为S的连续 ...
有了TCP为什么还需要HTTP?再用RPC?这次彻底讲明白了
掘金原文(个人技术文章优先在掘金发布):https://juejin.cn/post/7559981310472470562
记得刚工作那会儿,第一次接触RPC概念时,我内心满是疑惑——明明HTTP用得好好的,为什么要搞出个RPC?直到参与了几个微服务项目后,我才真正能理解它们各自的价值。今天,就让我们一起理清这些协议之间的关系。
从网络基础说起:TC ...
Vaadin:可能你不了解,但值得试一次的企业级Web开发框架
在国内前端生态中,Vue、React、Angular 已经非常成熟了。大部分企业的技术选型也很清晰:后端用 Java/Spring,全栈用前后端分离,表格控件就选择 Element/Ant Design/AG Grid……但有一个国外企业级框架,近两年在全球 Java 圈越来越火,它的名字叫 Vaadin。如果你还不熟悉它,这篇文章可能会让你重新思考一句话:Jav ...
SpringCloud 常见面试题(三)
服务网关
在微服务架构中,网关的作用是什么
在微服务架构中,网关(Gateway)具有以下作用:
统一入口:网关为所有的微服务提供一个唯一的入口点,从而简化了客户端与服务的交互,同时保障了后台服务的安全性。
鉴权校验:网关能够识别每个进来的请求,并根据其权限进行校验,阻止不符合要求的请求通过。
动态路由:根据 ...
50043_基于微信小程序的小区物业管理系统
1.项目包含
项目源码、项目文档、数据库脚本、软件工具等资料;
带你从零开始部署运行本套系统。
2.项目介绍
由于传统依靠微信小程序的小区物业管理系统在信息管理上存在很大难题,比如操作困难,容错率低,管理人员处理数据的效率较低等情况,于是便开发出了这个依托微信小程序的小区物业管理系统。 该系统被引用来有目的 ...
面向对象编程前三次大作业总结
前言
本次大作业是第一个面向对象编程的实操练习,难度从中到难,层层递进。
OOP题目集01
大部分是作为前面Java程序练习的过渡用的练习题,题目简单,题型常见不复杂,能帮助我们学习更多方法运用于Java编程当中。
第一次电梯调度程序也是基础的电梯类设计,初步了解题目的需求,为以后的迭代设计奠定基础。
OOP题目集02
...
Spring Boot自动装配实战:多数据源SDK解决Dubbo性能瓶颈
Spring文章专栏:https://juejin.cn/column/7511884538579877939
明明学了自动装配,却鲜有机会实战?当我面对Dubbo性能瓶颈时,一个自定义Starter的构想让我开启了Spring Boot条件化装配的奇妙之旅。
引言:那些年我们学过的自动装配
记得毕业那会刚开始学习Spring Boot的时候,自动装配机制让我眼前一亮——"约定大于 ...