手机做推广比较好的网站有哪些/广州百度seo代理
三层架构
controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据
service:业务逻辑层,处理具体的业务逻辑
dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查
分层解耦
内聚:软件中各个功能模块内部的功能联系
耦合:衡量软件中各个层/模块之间的依赖、关联的程度
软件设计原则:高内聚低耦合
service层代码改动,controller层代码也要改动,那么这两层就说耦合了
控制反转: Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转
依赖注入: DependencyInjection,简称Dl。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入
Bean对象:I0C容器中创建、管理的对象,称之为bean
IOC&DI入门
第一步只需要加上一个注解@Component
第二步:controller运行时需要依赖service,service运行还是需要依赖dao,只需要在前面加上一个注解@Autowired,加上之后运行时IOC容器会自动为其提供该类型的bean对象,并且赋值给这个变量
IOC详解
Bean的声明
注意事项:
1.声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写
2.使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller
DI详解
通过以下几种方案来解决:
@Primary
@Qualifier
@Resource
@Primary
加到A上代表想让A生效,加到B上代表想让B生效
@Qualifier
@Qualifier后面括号内指定一个属性,即value属性,value属性就是指定bean的名字。如果在声明bean的时候没有指定名字,那么就默认是类名首字母小写
@Resource
按照名称进行注入
小结
相关文章:

分层解耦.
三层架构 controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据 service:业务逻辑层,处理具体的业务逻辑 dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改…...

JAVA异步的TCP 通讯-客户端
一、客户端代码示例 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.CompletionHandler; import java.util.concurrent.ExecutorService; impo…...

MySQL的存储引擎对比(InnoDB和MyISAM)
InnoDB 特点: 事务支持:InnoDB 是 MySQL 默认的事务型存储引擎,支持 ACID(原子性、一致性、隔离性、持久性)事务。行级锁定:支持行级锁,能够并发执行查询和更新操作,提升多用户环境…...

【2025-02-06】简单算法:相向双指针 盛最多水的容器 接雨水
📝前言说明: ●本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,主要跟随B站博主灵茶山的视频进行学习,专栏中的每一篇文章对应B站博主灵茶山的一个视频 ●题目主要为B站视频内涉及的题目以及B站视频中提到的“课后作业”。…...

2.6-组合博弈入门
组合博弈入门 组合游戏 要求 有两个玩家;游戏的操作状态是一个有限的集合(比如:限定大小的棋盘);游戏双方轮流操作;双方的每次操作必须符合游戏规定;当一方不能将游戏继续进行的时候…...

【教学】推送docker仓库
引言 Docker Hub 这个最常见的公共 Docker 仓库为例,本文将介绍如何把本地 Docker 镜像推送到公共 Docker 仓库 1. 注册 Docker Hub 账号 如果你还没有 Docker Hub 账号,需要先在 Docker Hub 官网 进行注册。注册完成后,记住你的用户名和密…...

【大数据技术】本机PyCharm远程连接虚拟机Python
本机PyCharm远程连接虚拟机Python 注意:本文需要使用PyCharm专业版。 pycharm-professional-2024.1.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso写在前面 本文主要介绍如何使用本地PyCharm远程连接虚拟机,运行Python脚本,提高编程效率。 注意: …...

3060显卡掉帧是为什么?3060掉帧卡顿解决方法
NVIDIA GeForce RTX 3060是一款性能强劲的显卡,它可以在高画质的情况下运行大多数的游戏,但是也有一些用户反映,3060玩游戏时会出现掉帧和卡顿的现象,这让很多玩家感到困扰。那么,3060显卡掉帧是什么原因呢?…...

Kubernetes集群通过Filebeat收集日志
Filebeat收集容器日志,其中NODE_NAME配置,是将node信息添加到日志中,所以需要serviceAccount权限,如果不需要配置NODE信息,可以不创建serviceAccount,其他内容可根据实际情况修改 apiVersion: v1 kind: Ser…...

SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具
SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具 一、SQLAIchemy的介绍二、数据库引擎1、支持的数据库1.1、sqlite数据库1.2、MySQL数据库1.3、数据库引擎的参数 三、定义模型类1、定义模型2、engine负责数据库迁移 四、alembic数据库迁移⼯具1、安装alembic2、初始化alemb…...

[含文档+PPT+源码等]精品基于Python实现的django个性化健康餐计划订制系统
软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js(2.X)、css3 开发工具:pycharm、Visual Studio Code、HbuildX 数据库:MySQL 5.7.26&am…...

Python3中异常处理:try/except语句
一. 简介 什么是异常处理 ? 在 Python中,异常处理是一种用于管理程序运行时错误的机制。通过使用异常处理,你可以编写更加健壮和可靠的代码。 Python 提供了 try,except,else和 finally关键字来处理异常,…...

[ Spring] Integrate Spring Boot Dubbo with Nacos 2025
文章目录 Dubbo Project StructureDeclare Plugins and RepositoriesIntroduce DependenciesDubbo Consumer PropertiesDubbo Provider ApplicationDubbo Provider ServiceDubbo Consumer PropertiesDubbo Consumer ApplicationDubbo Consumer ControllerCommand References Du…...

【3分钟极速部署】在本地快速部署deepseek
第一步,找到网站,下载: 首先找到Ollama , 根据自己的电脑下载对应的版本 。 我个人用的是Windows 我就先尝试用Windows版本了 ,文件不是很大,下载也比较的快 第二部就是安装了 : 安装完成后提示…...

【QT笔记】使用QScrollArea实现多行文本样式显示
目录 一、QScrollArea 的基本概念 二、demo代码 三、实现效果 1、页面空间足够,无滚动条时显示效果 2、有滚动条时显示效果 一、QScrollArea 的基本概念 QScrollArea 是 Qt 框架中用于提供一个滚动条区域,允许用户滚动查看比当前可视区域更大的内容…...

大模型中提到的超参数是什么
在大模型中提到的超参数是指在模型训练之前需要手动设置的参数,这些参数决定了模型的训练过程和最终性能。超参数与模型内部通过训练获得的参数(如权重和偏置)不同,它们通常不会通过训练自动学习,而是需要开发者根据任…...

【Uniapp-Vue3】z-paging插件组件实现触底和下拉加载数据
一、下载z-paing插件 注意下载下载量最多的这个 进入Hbuilder以后点击“确定” 插件的官方文档地址: https://z-paging.zxlee.cn 二、z-paging插件的使用 在文档中向下滑动,会有使用方法。 使用z-paging标签将所有的内容包起来 配置标签中的属性 在s…...

UE虚幻引擎No Google Play Store Key:No OBB found报错如何处理
UE虚幻引擎No Google Play Store Key:No OBB found报错如何处理? 问题描述: UE成功打包APK并安装过后,启动应用时提示: No Google Play Store KeyNo OBB found and no store key to try to download. Please setone …...

OKHttp拦截器解析
OKHttp涉及到拦截器大概的执行步骤为: 1.通过newCall生成RealCall对象 具体代码如下: Override public Call newCall(Request request) {return new RealCall(this, request, false /* for web socket */);}2.调用Call的execute方法 当然这也可以是执…...

STM32标准库移植RT-Thread nano
STM32标准库移植RT-Thread Nano 哔哩哔哩教程链接:STM32F1标准库移植RT_Thread Nano 移植前的准备 stm32标准库的裸机代码(最好带有点灯和串口)RT-Thread Nano Pack自己的开发板 移植前的说明 本人是在读学生,正在学习阶段&a…...

c++11总结26——std::regex
std::regex 是 C11 引入的 正则表达式库,用于 字符串匹配、搜索和替换。 🔹 头文件:#include <regex> 🔹 命名空间:std 🔹 支持的匹配模式:ECMAScript(默认)、POS…...

langchain教程-12.Agent/工具定义/Agent调用工具/Agentic RAG
前言 该系列教程的代码: https://github.com/shar-pen/Langchain-MiniTutorial 我主要参考 langchain 官方教程, 有选择性的记录了一下学习内容 这是教程清单 1.初试langchain2.prompt3.OutputParser/输出解析4.model/vllm模型部署和langchain调用5.DocumentLoader/多种文档…...

leetcode_双指针 125.验证回文串
125.验证回文串 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是回文串 ,返回 true ÿ…...

ML.NET库学习001:基于PCA的信用卡异常检查之样本处理与训练
文章目录 (文末提供数据集下载)ML.NET库学习001:基于PCA的信用卡异常检查之样本处理与训练目标项目概述代码结构概述1. **主要类和文件**2. **命名空间和使用指令**3. **数据类 (TransactionObservation)**4. **主程序入口 (Main 方法)**5. **数据预处理 (DataPrepr…...

【华为OD机考】华为OD笔试真题解析(1)--AI处理器组合
一、题目描述 某公司研发了一款高性能AI处理器,每台物理设备具备8颗AI处理器,编号分别为0、1、2、3、4、5、6、7。 编号0~3的处理器处于同一链路中,编号4~7的处理器处于另外一个链路中,不同链路中的处理器不能通信,如…...

edu小程序挖掘严重支付逻辑漏洞
edu小程序挖掘严重支付逻辑漏洞 一、敏感信息泄露 打开购电小程序 这里需要输入姓名和学号,直接搜索引擎搜索即可得到,这就不用多说了,但是这里的手机号可以任意输入,只要用户没有绑定手机号这里我们输入自己的手机号抓包直接进…...

力扣 279. 完全平方数
🔗 https://leetcode.cn/problems/perfect-squares 题目 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量完全平方数可以拆解为两个相同数的乘积 思路 dp 公式,就是从看用哪个完全平方数 1 2 4 9…… 到当前 sum 的数量最少 代码 …...

鸿蒙生态潮起:开发者的逐浪之旅
鸿蒙生态潮起:开发者的逐浪之旅 在全球科技的澎湃浪潮中,鸿蒙生态宛如一座正在崛起的新大陆,熠熠生辉,吸引着无数开发者扬帆起航,探寻其中蕴藏的无限机遇,也直面诸多挑战。 鸿蒙生态的机遇,首先…...

Diskgenius系统迁移之后无法使用USB启动
前言 本文用于记录系统迁移中遇到的问题及解决方法,如有不对请指出,谢谢! 现象 使用DiskGenius进行系统迁移后,使用USB启动失败,反复在品牌logo和黑屏之间切换,期间还会在左上角显示”reset system“报错…...

Kafka 可靠性探究—副本刨析
Kafka 的多副本机制提升了数据容灾能力。 副本通常分为数据副本与服务副本。数据副本是指在不同的节点上持久化同一份数据;服务副本指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理。 1 副本刨析 1.1 相关概念 AR&…...