
web后端开发
文章平均质量分 77
后端开发是指构建网站、应用程序或其他软件的背后的技术方面,主要负责处理应用程序的逻辑、数据存储和处理、安全性等方面
Dddddduo_
江苏省高中数学竞赛三等奖 阿里云认证专家博主 字节跳动青训营后端优秀奖
展开
-
SQL语句练习 自学SQL网 多表查询
【代码】SQL语句练习 自学SQL网 多表查询。原创 2025-04-30 19:34:11 · 167 阅读 · 0 评论 -
SQL语句练习 自学SQL网 基础查询
【代码】SQL语句练习 自学SQL网 基础查询。原创 2025-04-25 13:00:50 · 377 阅读 · 0 评论 -
Java接口 抽象方法 默认方法 静态方法
接口在 JDK8 之前只有抽象方法在 JDK8 时引入了静态方法和默认方法静态方法可以通过接口名调用 只能通过接口调用默认方法可以由子类实现 可以重写也不可以重写默认方法是解决的接口进行拓展时破坏现有实现类的问题。原创 2025-04-25 09:38:38 · 365 阅读 · 0 评论 -
布隆过滤器与哈希 用Java手写一个简单的布隆过滤器
如果布隆过滤器返回 false 说明数据一定没出现过。如果布隆过滤器返回 true 说明数据可能出现过。布隆过滤器时检查数据是否出现过的一种方法。原创 2025-04-23 18:26:29 · 111 阅读 · 0 评论 -
非关系型数据库 八股文 Redis相关 缓存雪崩 击穿 穿透
什么是缓存雪崩、击穿、穿透?| 小林coding。之前我们说的是 缓存雪崩 缓存击穿 这两种情况那么说明还是有数据的 我们只是要求缓存恢复相对应的数据 即可正常运行但是如果 数据库没有数据 缓存也没有数据后续的请求依旧会全部到达缓存 导致数据库压力骤增为什么会存在 数据库中也没有数据 缓存中也没有数据这种情况呢可能的原因业务误操作 删掉了 mysql 和缓存里面的数据黑客恶意攻击 特地访问不存在的数据限制 请求的 访问在 API 的入口处我们要判断请求参数是否合理请求参数是否原创 2025-04-23 18:08:30 · 782 阅读 · 0 评论 -
Java八股 深入理解Spring的AOP 面向切面编程 底层 保姆级教程 手写例子
AOP 的核心是连接点连接点是我们需要关注的程序拓展点可能是类初始化 方法执行 方法调用 字段调用 异常处理等Spring 支持的连接点是方法执行点切入点是一系列连接点的集合,Spring默认使用AspectJ语法,在AOP中抽象表示为可以进行操作的集合之后就是通知通知就是我们在连接点上执行的行为连接点 切入点 通知组合在一起 就是一个切面把切面映入到其他应用程序或者对象上,创建一个被通知的对象,这些就是织入,Spring 在运行时完成织入 ,在 AOP 中表示为怎么实现的,实现方式。原创 2025-04-22 17:31:04 · 1391 阅读 · 0 评论 -
JavaWeb开发 Servlet底层 Servlet 过滤器 过滤器和拦截器 手写一个限制访问路径的拦截器
定义过滤器,然后映射到一个 URL 或 Servlet,这与定义 Servlet,然后映射到一个 URL 模式方式大致相同。然后再启动类里面用@ ServletComponentScan 注解 指定到过滤器类也行。是当当请求进入 web 服务器后 在到达 controller 之前。过滤器虽然是 HTTP 请求进入 web 服务器后第一个经过的地方。过滤器是在请求进入 Servlet 容器前对请求进行。但他是基于 Java Servlet 规范实现的。一个是基于配置文件 一个是基于注解。原创 2025-04-15 21:09:56 · 790 阅读 · 0 评论 -
JavaWeb开发 Servlet底层 从概念到HTTP请求 到web服务器再到servlet
service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。service() 方法是执行实际任务的主要方法。原创 2025-04-15 20:05:44 · 837 阅读 · 0 评论 -
Java集合框架 源码分析 迭代器 并发修改异常 同步锁解决多线程修改集合问题
Java中的Iterator(迭代器)是集合框架中用于遍历容器元素的统一接口,提供了一种标准化的元素访问方式,无需依赖具体集合类型的实现细节。通过迭代器,开发者可以以统一的方式处理不同类型的集合,同时避免直接操作集合内部结构带来的风险。如需更复杂的遍历(如双向操作),可改用。会给集合内部的一个成员变量 modCount 赋值。当迭代器创建的时候 就会有这个出现这个变量。若遍历过程中通过集合自身方法(非迭代器的。将遍历操作与集合实现分离,适用于所有。表示集合实际上被修改的次数。首先是 集合初始化的时候。原创 2025-04-14 19:20:04 · 955 阅读 · 0 评论 -
BHUACM吉林省赛集训 4月14日 简单dp背包问题专题
由于动态规划并不是某种具体的算法,而是一种解决特定问题的思想,因此它会出现在各式各样的数据结构中,与之相关的题目种类也更为繁杂。如果有大量的重叠子问题,我们可以用空间将这些子问题的解存储下来,避免重复求解相同的子问题,从而提升效率。能用动态规划解决的问题,需要满足三个条件:最优子结构,无后效性和子问题重叠。动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。,每个阶段对应若干个子问题,提取这些子问题的特征(称之为。已经求解的子问题,不会再受到后续决策的影响。寻找每一个状态的可能。原创 2025-04-14 16:49:15 · 267 阅读 · 0 评论 -
深入理解 Java 静态代理 代码实现
在不改变原有方法的代码上 实现一个代理类。代理可以理解成是对一个方法的加强。首先我们要理解什么是代理。同时重写接口里面的方法。原创 2025-04-01 01:06:36 · 96 阅读 · 0 评论 -
类加载 双亲委派机制 源码解析Tomcat的类加载机制
我们常说的是 一个类的加载 第一步就是加载加载阶段 我们会将类的,class 文件加载到 JVM 里面在这个阶段JVM 会根据类的全限类名来获取定义该类的二进制字节流并且将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构这个加载过程会创建一个 java.lang.Class 类的实例来表示这个类这个 Class 对象作为的事程序中每个类的数据访问入口。原创 2025-04-01 00:22:11 · 925 阅读 · 0 评论 -
Java设计模式 简单工厂模式 工厂方法模式 抽象工厂模式 模版工厂模式 模式对比
核心思想:创建相关或依赖对象的家族,无需指定具体类典型场景:跨平台UI组件、数据库访问套件// 抽象工厂// 具体工厂(Windows风格)// 具体工厂(Mac风格)// 产品体系public void paint() { System.out.println("Windows按钮");public void check() { System.out.println("Mac复选框");特点✅ 保证产品兼容性✅ 产品族一致性控制❌ 扩展新产品族困难。原创 2025-03-31 10:38:01 · 638 阅读 · 0 评论 -
JVM Java类加载 isInstance instanceof 的区别
instanceof关键字编译时需明确ClassA的类名(必须存在),否则编译失败。示例// trueClass类的方法支持运行时动态确定类型(通过反射或变量传递类名)。示例// true差异维度instanceof本质关键字Class类方法类型检查时机编译时静态运行时动态动态类型支持不支持支持(反射、泛型)代码灵活性固定类名类名可变量传递或反射获取通过合理选择两者,可以兼顾代码的简洁性与动态灵活性。原创 2025-03-29 12:01:44 · 682 阅读 · 0 评论 -
深入理解 Java 类加载机制
加载,这是由类加载器执行的,该步骤将查找字节码(通常在classpath所指定的路径中查找,但这并非是必需的),并从这些字节码中创建一个Class对象。链接。在链接阶段将验证类中的字节码,为静态域分布存储空间,并且如果必需的话,将解析这个类创建的对其他类的所有引用。初始化。如果该类具有超类,则对其初始化,执行静态初始化器和静态初始化块。原创 2025-03-29 12:01:03 · 431 阅读 · 0 评论 -
linux删除文件 相关
rm(remove)是用于删除文件或目录的常用命令。rm [-dfirv][--help][--version][文件或目录...]。原创 2025-03-28 02:06:25 · 814 阅读 · 0 评论 -
Linux常见定时任务命令 系统级别的定时任务
crontab是一个常用的定时任务管理工具,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于crontab文件中,以供之后读取和执行。通常,crond守护进程会在后台运行,每分钟检查是否有预定的作业需要执行。at命令用于设置在某个特定的时间点执行一次性的任务。原创 2025-03-28 02:05:27 · 558 阅读 · 0 评论 -
Linux常见docker命令整理 容器 镜像
在执行停止和删除容器的操作之前,了解 Docker 容器的不同状态十分重要。容器主要有以下几种状态,其中停止(Exited)状态表示容器已停止运行,但仍然存在于 Docker 主机上。在 Linux 系统中,若要停止并删除所有 Docker 容器,可按以下步骤进行,同时要注意这些操作可能需要管理员权限。除了删除容器外,还可以使用 Docker 的清理命令来释放其他未使用的资源,如镜像、网络和卷。使用以下命令列出所有正在运行的容器的 ID,然后通过。以安静模式列出所有容器(包括已停止的)的 ID,原创 2025-03-28 01:57:39 · 910 阅读 · 0 评论 -
Linux配置静态站点nginx
Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序员伊戈尔·赛索耶夫(Igor Sysoev)开发,于 2004 年首次公开发布。它以其高并发处理能力、低内存消耗和稳定性而受到广泛关注和应用。原创 2025-03-27 01:47:13 · 935 阅读 · 0 评论 -
概念|RabbitMQ 消息生命周期 待消费的消息和待应答的消息有什么区别
以上流程体现了RabbitMQ在消息可靠性、灵活路由和异常处理上的核心设计,实际应用中需根据业务场景组合配置参数。如需进一步了解 RabbitMQ 消息生命周期,可参考 关于消费模式的解析或 中的应答机制实验代码。若未持久化且服务崩溃可能丢失。已分配给消费者但未确认(队列中未分配给消费者(消费者未确认且连接中断。可能因队列未持久化丢失。原创 2025-03-07 16:20:42 · 834 阅读 · 0 评论 -
保姆级教程 在linux上启动Docker并且使用IntelliJ DockerCompose一键部署Springboot应用 常见命令
修改 docker.service 文件。Linux用户组是多个用户的集合,通过共享权限和资源访问规则实现集中管理。每个用户必须至少属于一个用户组,且系统中存在三种角色划分:● 文件所有者:创建文件的用户,拥有最高控制权;● 用户所在组:文件所属的默认组,组成员共享权限;● 其他组:既非所有者也不在文件所属组的用户。1. 权限控制用户组通过文件权限位(rwx)实现精细控制: ○ 文件权限分为所有者、所属组、其他组三部分(如 -rw-r--r--) ○ 通过 chmod 命令批量修改组权限(如原创 2025-03-25 12:22:25 · 755 阅读 · 0 评论 -
Java 双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]
在 Java 中,Deque 是一个双端队列接口,它继承自 Queue 接口,支持在队列的两端进行元素的插入、删除和访问操作。LinkedList 是 Deque 接口的一个实现类,下面介绍 Deque<Integer> deque = new LinkedList<>(); 常见的操作。原创 2025-03-22 21:54:34 · 515 阅读 · 0 评论 -
浅谈canal实例 在docker里面安装canal镜像 Canal监听MySQL数据库变更并同步更新Redis和Elasticsearch 示例
通过以上步骤,Spring Boot应用能够实时监听MySQL变更,并自动同步到Redis和Elasticsearch,保障数据一致性。原创 2025-03-20 21:27:54 · 598 阅读 · 0 评论 -
言简意赅 Linux部署elasticsearch7.15.2
byd折磨了我两天。原创 2025-03-19 21:26:16 · 483 阅读 · 0 评论 -
Spring设计模式 八股速记 高层模块底层模块 依赖倒置原则 开闭原则 接口隔离原则
基本定义高层模块不应依赖低层模块,两者都应依赖抽象(接口或抽象类)。抽象不应依赖细节,而细节(具体实现类)应依赖抽象。核心目标通过面向接口编程,打破传统“高层调用低层”的依赖关系,实现模块间解耦。例如:传统依赖:司机类直接调用奔驰车类的方法,导致更换车型需修改司机代码。倒置后:司机依赖“车辆接口”,奔驰车、宝马车均实现该接口,实现灵活扩展。基本定义高层模块不应依赖低层模块,两者都应依赖抽象(接口或抽象类)。抽象不应依赖细节,而细节(具体实现类)应依赖抽象。核心目标。原创 2025-03-17 07:37:01 · 1065 阅读 · 0 评论 -
浅谈RabbitMQ Springboot3后终止自动注入服务 需要手写Bean并实例化bean(SpringBoot启动前) Could not autowire. No beans of ‘Rab
报错 Could not autowire. No beans of 'RabbitAdmin' type found.意思就是这个模版在高版本是需要自己去手写。手写 注册 Bean 注入。Spring 启动流程。原创 2025-03-09 16:29:08 · 122 阅读 · 0 评论 -
快速上手 代码详解 RabbitMQ简单实战 Spring框架下实现解耦 改造传统服务端代码
它就像是一个“调度员”,将接收到的请求进行初步处理后,调用 Service 层的相应方法来完成具体的业务逻辑。这一层是业务逻辑的核心处理层,负责对 Controller 层传递过来的请求进行具体的业务处理。它会调用 Dao 层的方法来获取所需的数据,并对数据进行必要的处理和转换。在这种方案中,Service 层不再直接将处理后的数据返回给 Controller 层,而是将数据发布到消息队列中,Controller 层再从消息队列中获取数据。监听到消息队列中有新的数据时,会将数据赋值给。原创 2025-03-07 16:42:25 · 596 阅读 · 0 评论 -
RabbitMQ控制台详解 中文讲解 软件工业化生产 rabbitmq-management 索引速查
rabbitmq-management是RabbitMq web管理端,用的是erlang的cowboy框架进行开发。web页面包括Overview(概述)Connections(连接)Channels(通道)Exchanges(交换器)Queues(队列)Admin(用户管理)。转载 2025-03-07 16:14:23 · 47 阅读 · 0 评论 -
快速开始 | Springboot操作RabbitMQ太简单啦! 编写RabbitmqConfig 基于模版向下封装Service 跑通Junit测试
【Java代码】快速开始 | Springboot->消息队列RabbitMQ 编写RabbitmqConfig 基于模版向下封装Service 跑通Junit测试。原创 2025-03-07 14:26:11 · 363 阅读 · 0 评论 -
教程|如何在Windows操作系统上下载并安装MySQL8 并设置环境变量env
我的笔记本操作系统是 windows10 在这里。找到系统环境变量注册位置。在 cmd 窗口输入指令。类似于 我笔记本上的是。检测配置环境变量成功。原创 2025-03-06 14:24:54 · 562 阅读 · 0 评论 -
Java类加载机制 双亲委派机制 八股速记版
双亲委派机制通过层级化加载体系,确保了Java核心类库的安全性和系统稳定性,同时通过破坏委派的灵活机制,为复杂场景提供了扩展可能性。理解这一机制对诊断类冲突、版本兼容等问题具有重要意义。二、双亲委派机制详解。三、类加载器关键特性。原创 2025-03-02 23:23:17 · 436 阅读 · 0 评论 -
谈谈单例模式中通过Htools包的SpringUtil.getBean获取Bean的好处
这种模式在中间件开发、基础框架开发中较为常见,体现了对Spring容器的主动控制,而非被动依赖。的场景中非常实用,是解决框架整合时序问题的经典方案。由于单例的初始化早于 Spring 容器的初始化,,后续使用时必然抛出。原创 2025-03-02 23:20:51 · 1069 阅读 · 0 评论 -
Spring单例模式 Spring 中的单例 饿汉式加载 懒汉式加载
单例模式(Singleton Pattern)是一种,其核心目标是确保一个类,并提供全局唯一的访问点。它常用于资源控制(如数据库连接池、线程池)、配置管理、日志对象等场景。new。原创 2025-03-02 23:18:43 · 1067 阅读 · 0 评论 -
MyBatis-Plus 元对象处理器 @TableField注解 反射动态赋值 实现字段自动填充
对实体类的动态包装器,提供反射操作字段的能力(类似一个能透视对象内部结构的工具)填充策略枚举,包含 INSERT(插入时填充)、UPDATE(更新时填充)等。(避免每个插入操作都写 setCreateTime)(比如强制所有表统一使用同一时间生成规则)严格模式填充方法,确保字段存在且类型匹配。假设你每次保存订单时都要记录。(时间记录等通用操作集中管理)原创 2025-03-02 23:13:20 · 495 阅读 · 0 评论 -
题解 | 牛客周赛82 Java ABCDEF AK实录
其中可选的数是 排列的最大值n - 比重复数字小的数(不能填) -前面有多少数 (注意要把重复的数空下来)如果一个元素与前面这个元素不同 这个数就是确定的 而后面跟这个数相同的数就都是不确定的。数组的索引i 的值表示的是前 i 个元素最小的 m 个数的和。我们只需要统计这段重复的数字和可以填入的数字的排列组合就行。通过优先队列筛选出前 i 个元素数值大的元素并进行移除。优先队列采用的是大顶堆(数值大的元素优先级高)我们发现给出的元素只能是递减的。按照索引大小的规则来排序元素。重复的数我们计数出来的。原创 2025-03-02 00:30:25 · 675 阅读 · 0 评论 -
设计模式 工厂模式 工厂方法模式 抽象工厂模式
通过工厂方法设计模式,我们将文档创建的逻辑封装到工厂类中,使得客户端代码解耦了与具体产品的依赖,只关心工厂接口而不关心具体的产品类型。这使得系统在增加新的文档类型时非常灵活,只需要新增工厂类即可,无需修改现有的代码。原创 2025-02-26 15:22:05 · 1257 阅读 · 0 评论 -
Java类字节码 详解 深入浅出 面试题 用verbose工具查看字节码
首先,我会回顾Java字节码的基础知识,确保自己理解每个操作码的作用。例如,iconst_1将整数1压入操作数栈,istore_1将栈顶的int值存储到局部变量表的位置1。iload_1则是将局部变量位置1的值压入栈顶。这些基本操作需要正确理解才能分析整个流程。接下来,我需要分析方法的整体结构。方法foo()的返回类型是int,描述符为()I,访问标志为ACC_PUBLIC,说明这是一个公共方法。Code属性中给出了操作数栈的最大深度(stack=1),局部变量数量(locals=5),以及参数数量(a原创 2025-02-08 01:35:06 · 725 阅读 · 0 评论 -
Java并发编程 优化卖票案例 FieldUpdater 对象的属性修改原子类 以一种线程安全的方式操作非线程安全对象内的某些字段
无锁机制:compareAndSet方法通过CAS(Compare-And-Swap)操作实现原子更新,不需要加锁,减少了线程阻塞和上下文切换的开销。AtomicReferenceFieldUpdater:基于CAS的无锁机制,线程直接尝试更新,只有冲突时才会重试,避免了阻塞。AtomicReferenceFieldUpdater:在大多数情况下,CAS操作非常高效,尤其适合读多写少的场景。synchronized:基于锁的机制,线程需要等待获取锁才能执行临界区代码,可能导致阻塞。原创 2025-02-08 00:28:45 · 711 阅读 · 0 评论 -
并发编程 引用类型 原子类 Stamped和Markable atomicMarkableReference表单Ref和标记Markable 面试题
AtomicMarkableReference 是一个位于 java.util.concurrent.atomic 包中的类。它提供了一种原子性的方式来管理一个带有标记的引用。这在一些需要同时跟踪对象引用和一个标记状态的场景中非常有用,例如实现乐观锁机制或者在多线程环境下标记某个对象的特定状态。原创 2025-02-06 12:54:41 · 232 阅读 · 0 评论 -
Java并发编程 原子 Atomic 基本类型 CountDownLatch阻塞 数组类型 原子类 AtomicIntegerArray 看源码自我学习
类在多线程环境下的强大功能,它可以确保对数组的操作是原子的,从而避免数据竞争和不一致的问题。提供的方法可以确保在多线程环境下的操作是原子的,即不会发生数据竞争或不一致的问题。提供了一些基本的操作方法,如获取、设置、自增、自减等。)中的一个类,它提供了一种线程安全的方式来操作整数数组。与普通的整数数组不同,countDownLatch 会等线程完成一个后自减。以下是一个完整的示例,展示了如何使用。输出的结果会小于等于 50000。50 个线程去加 100 次。通过这些示例,你可以看到。原创 2025-02-06 12:53:48 · 597 阅读 · 0 评论