[Spring]SSM整合
第一步
整合任何框架,首先都是导入相关的jar包:
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.18</version></dependency><!--mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--阿里数据库连接池druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.18</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>
注意:
如果你没使用spring框架,不用导入spring-jdbc和mybatis-spring;
最后的servlet-api,看你服务器是否使用的是tomcat,如果不是,请自行查阅相关使用;
如果你使用的是tomcat,若是10+版本,相应的jar包有所变化,详情可以查看:tomcat10整合SSM注意事项
第二步
导入了相关依赖包之后,就开始配置了。
这里先配jdbc:
jdbc
在resources目录(资源目录)下编写.properties配置文件,配置数据库连接信息:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/yourDatabaseName
name=root
pwd=root
注意不用使用和系统环境变量中相关的变量名,否则spring赋值时会被系统环境变量中同名的变量给覆盖,到时候还需要手动设置不引入系统环境变量。
创建一个spring的配置类,使用@propertySource注解扫描jdbc配置文件:
@Configuration
@PropertySource("classpath:/your.properties")//扫描.propertie文件
@Import({JdbcConfig.class})//扫描jdbc的配置类
public class SpringConfig {
}
然后我们编写jdbc的spring配置类:
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class JdbcConfig {//在spring中已经引入了相关变量@Value("${driver}")private String driver;@Value("${url}")private String url;@Value("${name}")private String username;@Value("${pwd}")private String password;@Beanpublic DataSource dataSource(){//创建数据连接池,并将该数据连接池作为Bean返回给spring容器DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setDriverClassName(driver);druidDataSource.setUrl(url);druidDataSource.setUsername(username);druidDataSource.setPassword(password);return druidDataSource;}
}
然后我们编写mybatis的相关配置
mybatis的相关配置
在Mybatis的配置类里面,我们需要编写两个方法。一个是Mybatis自身配置类中需要配置的连接池,但在整合spring中,我们将其作为Bean返回给spring(需要引入mybatis-spring),方法名随意,但返回值类型需要是 SqlSessionFactory 。SqlSessionFactoryBean是mybatis-spring中的类。
还有一个返回值为 MapperScannerConfigurer(一样的是mybatis-spring中的类) 的方法,用于扫描mybatis映射文件中对应的mapper接口。
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;public class MyBatisConfig {@Beanpublic SqlSessionFactory MysqlSessionFactoryBean(DataSource dataSource) throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*.xml"));sqlSessionFactoryBean.setTypeAliasesPackage("entity");sqlSessionFactoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);return sqlSessionFactoryBean.getObject();}@Beanpublic MapperScannerConfigurer MymapperScannerConfigurer(){MapperScannerConfigurer mapper = new MapperScannerConfigurer();mapper.setBasePackage("dao");return mapper;}
}
配置连接数据库的jdbc和mybatis之后,我们配置springMVC
配置springMVC
springMVC配置类中主要是扫描有关于前端的代码组件,如controller层、servlet层等。
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;@Configuration//声明为配置类
@ComponentScan("controller")//扫描相关组件包
@EnableWebMvc//启用springmvc相关功能
public class SpringMvcConfig {
}
编写替代web端代码中的web.xml配置文件的配置类:
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;//继承AbstractAnnotationConfigDispatcherServletInitializer父类
public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {//获取非web组件的Bean容器return new Class[]{SpringConfig.class};}@Overrideprotected Class<?>[] getServletConfigClasses() {//获取web组件的Bean容器return new Class[]{SpringMvcConfig.class};}@Overrideprotected String[] getServletMappings() {//在服务器中的部署根return new String[]{"/"};}
}
编写相关代码
首先我们编写mybatis的映射文件和它对应的mapper接口:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserMapper"><resultMap id="UserResult" type="entity.User"><id column="user_id" property="userId" /><result column="username" property="username"/><result column="password" property="password"/><result column="email" property="email"/><result column="phone" property="phone"/><result column="role" property="role"/><result column="create_time" property="createTime"/></resultMap><select id="selectByUsernameAndPassword" resultMap="UserResult">SELECTuser_id,username,password, -- 虽然数据库标记为invisible,但显式查询仍可获取email,phone,role,create_timeFROM userWHERE username = #{username}AND password = #{password}</select><update id="updateUser" parameterType="entity.User">UPDATE userSETusername = #{username},email = #{email},phone = #{phone}WHERE user_id = #{userId}</update>
</mapper>
编写对应的mapper接口:
import entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;public interface UserMapper {User selectByUsernameAndPassword(@Param("username") String username,@Param("password") String password);int updateUser(User user);
}
最后我们编写controller层等代码,
注意几点:
1.通过@Resource来注入mapper接口的实例对象,用该实例对象访问数据库
2.通过@RequestMapping()来配置url。
3.通过@RestController来标记当前类为controller层
4.上面三个注解都有可以替代的注解,比如@RestController可以用@Controller,这里不展开讲。
import dao.UserMapper;
import entity.Info;
import entity.User;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;@RestController
@RequestMapping("/api/user")
public class UserController {@Resourceprivate UserMapper userMapper;@RequestMapping(value = "/login", method = RequestMethod.POST)@ResponseBodypublic Info login(@RequestParam String username,@RequestParam String password) {System.out.println(username + " " + password);Info info = new Info();info.message = "测试";// 查询用户信息User user = userMapper.selectByUsernameAndPassword(username, password);if(user != null) {info.message = "登录成功";info.data.put("userId",user.getUserId());info.data.put("username",user.getUsername());info.data.put("role",1);}else {info.message = "登录失败";}return info;}
}
相关的实体类就不放上来的。
相关文章:
[Spring]SSM整合
第一步 整合任何框架,首先都是导入相关的jar包: <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.18</version></dependency><!--mybatis依…...
【HDFS】HDFS数据迁移与备份全攻略:从日常备份到灾难恢复
目录 1 HDFS数据迁移与备份概述 2 集群间数据迁移:DistCp工具详解 2.1 DistCp工作原理架构 2.2 DistCp标准工作流程 2.3 DistCp性能优化方案 3 离线备份实施策略 3.1 HDFS到本地备份架构 4 灾难恢复方案设计 4.1 基于快照的恢复流程 4.2 数据一致性校验方…...
动态规划入门:背包问题求具体方案(以0-1背包问题为例)
本质:有向图最短(长)路问题 字典序最小方案?--贪心思路?(本题未使用) 分析第一个物品: 写代码时tip:要考虑“边读边做”还是“先读后做” #include<iostream> #i…...
git学习日志
你看到的是 Vim 文本编辑器的界面,并非 git 的窗口。这是你通过 vim hello.txt 命令打开的新文件。以下是分步操作指南: 1. 进入编辑模式 按下键盘上的 i 键(进入 “INSERT” 模式),此时左下角会显示 -- INSERT --。现…...
数字孪生废气处理工艺流程
图扑数字孪生废气处理工艺流程系统。通过精准 3D 建模,对废气收集、预处理、净化、排放等全流程进行 1:1 数字化复刻,实时呈现设备运行参数、污染物浓度变化等关键数据。 借助图扑可视化界面,管理者可直观掌握废气处理各环节状态,…...
iPhone 13P 换超容电池,一年实记的“电池循环次数-容量“柱状图
继上一篇 iPhone 13P 更换"移植电芯"和"超容电池"🔋体验,详细记录了如何更换这两种电池,以及各自的优略势对比。 一晃一年过去,时间真快,这次分享下记录了使用超容电池的 “循环次数 - 容量(mAh)…...
豆瓣图书数据采集与可视化分析(二)- 豆瓣图书数据清洗与处理
文章目录 前言一、查看数据基本信息二、拆分pub列三、日期列处理四、价格列处理五、出版社列处理六、评价人数列处理七、缺失值处理八、重复数据处理九、异常值处理十、完整代码十一、清洗与处理后的数据集展示 前言 豆瓣作为国内知名的文化社区,拥有庞大且丰富的图…...
【Sa-Token】学习笔记05 - 踢人下线源码解析
目录 前言 强制注销 踢人下线 源码解析 前言 所谓踢人下线,核心操作就是找到指定 loginId 对应的 Token,并设置其失效。 上图为踢人下线后,前端应该用图像给出来让用户重新登录,而不是让前端收到一个描述着被下线 的JSON 强…...
Linux | I.MX6ULL 文件系统
01 本节所有的测试程序需要开发板有 Qt 环境来运行。我们提供的文件系统是由 yocto 裁剪整理得来的。之后我们会整理一份单独移植的 qt 系统。方便用户移植第三方软件。如果用户的文件系统非我们的出厂版本,请参考之前烧写章节重新烧写出厂文件系统。开发板启动需要输入登录…...
Python3基础语法
一:注释 Python中用#表示单行注释,#之后的同行的内容都会被注释掉。 使用三个连续的双引号表示多行注释,两个多行注释标识之间内容会被视作是注释。 二:基础变量类型与操作符 1. 除法 * 除法 / python3中就算是两个整数相除&a…...
QEMU源码全解析 —— 块设备虚拟化(20)
接前一篇文章:QEMU源码全解析 —— 块设备虚拟化(19) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 特此致谢! 上一回大致解析了drive_new函数,本回重点对于drive_new函数中调用的blockdev_init函…...
JavaScript 笔记 --- part 4 --- Web API (part 2)
(webAPI part2) DOM 基本操作 事件流 定义: 指的是事件完整执行过程中的流动路径 捕获阶段: 事件从最外层的窗口对象开始,逐层向内传播到目标元素,并触发相应的事件处理程序。 冒泡阶段: 事件从目标元素开始,逐层向外传播到最外层的窗口对象…...
从入门到精通汇编语言 第六章(中断及外部设备操作)
参考教程:通俗易懂的汇编语言(王爽老师的书)_哔哩哔哩_bilibili 一、移位指令 1、8个移位指令 (1)逻辑左移指令SHL:SHL OPR, CNT。 ①OPR为操作数,CNT为左移位数,该指令将OPR视作…...
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类尺寸QSizeF)
QSizeF 类(浮点尺寸类) 文章目录 QSizeF 类(浮点尺寸类)概述主要方法列表详细说明及应用举例注意事项 概述 QSizeF 类使用浮点精度定义二维对象的尺寸。官方文档在这里。 主要方法列表 __init__(self) …...
操作系统中的虚拟化技术深度对话
操作系统中的虚拟化技术深度对话 参与者:系统工程师(Engineer)、开发者(Developer)、学生(Student) 1. 虚拟化的基本概念 Student:虚拟化到底是什么?为什么操作系统需要…...
第35讲:构建属于自己的遥感大模型平台,并接入地理数据工作流
目录 🌍 写在前面 一、为什么要构建属于自己的遥感大模型平台? 二、核心技术选型推荐 ✅ 前端部分 ✅ 后端部分 ✅ 部署平台 三、平台架构设计思路 四、案例实战:构建一个在线遥感分割平台 📌 第一步:模型服务封装(FastAPI) 📌 第二步:前端上传与展示(L…...
langchain-nextjs-template 模板安装与配置
前提条件: node安装yarn 安装:npm install -g yarn 目录 1. 克隆项目2. 安装依赖3. 配置环境变量4. 修改模型配置5. 启动开发服务器6. 项目结构说明7. 功能说明8. 自定义提示模板部分过程文件截图 1. 克隆项目 首先,从 GitHub 克隆 LangCha…...
安卓单机斗地主,具备休闲挑战等多模式
软件介绍 斗地主单机版是一款超适合在安卓设备上玩的游戏。当你周末玩网游玩累了的时候,它就是个很不错的选择哦。 多种模式可选 这个斗地主单机版有不同的模式呢,有休闲模式、挑战模式、炸弹场和大师赛。你可以根据自己的喜好随意挑选模式,…...
电解电容失效分析过程、失效分析报告
参考: 深度剖析关键电子元器件电解电容内部故障隐患 电解电容的参数指标 电路板中电解电容是存在寿命的,电解电容中的电解液随着时间会慢慢减少导致电容容值降低,最终导致电源出现问题。相信大家都见过电解电容鼓包的情况。 所以做设计的时…...
Ubuntu修改Swap交换空间大小
前言: 安装Ubuntu系统时,选择了默认空间分配方案,Swap空间仅1G,而实际的物理内存有32G,分给Swap空间至少为内存的1倍,最好是内存值的2倍,系统相当卡顿,重做系统后,费力部…...
SpringBoot 知识图谱
预警:本文非常长,建议先 mark 后看,也许是最后一次写这么长的文章说明:前面有 4 个小节关于 Spring 的基础知识,分别是:IOC 容器、JavaConfig、事件监听、SpringFactoriesLoader 详解,它们占据了本文的大部分内容,虽然它们之间可能没有太多的联系,但这些知识对于理解 …...
智谱开源新一代GLM模型,全面布局AI智能体生态
2024年4月15日,智谱在中关村论坛上正式发布了全球首个集深度研究与实际操作能力于一体的AI智能体——AutoGLM沉思。这一革命性技术的发布标志着智谱在AGI(通用人工智能)领域的又一次重要突破。智谱的最新模型不仅推动了AI智能体技术的升级&am…...
一文读懂Python之numpy模块(34)
一、模块简介 numpy是Python语言中做科学计算的基础库,重在于数值计算,有一个强大的N维数组对象Array,同时NumPy 提供了大量的库函数和操作,可以帮助程序员轻松地进行Array数值计算。 numpy在数据分析和机器学习领域被广泛使用。…...
Lora 微调自定义device_map
Lora 微调自定义device_map 首先查看模型权重参数配置model.safetensors.index.json 查看多少解码器 这里的layer可以理解为解码器层,后面有qkv,bais,layernomal等 # 显卡数量 num_gpus = 5 # 总层数 num_layers = 28layers_per_gpu = num_layers // num...
二叉树的顺序结构及实现
一.二叉树的顺序结构 二.堆的概念及结构 三.堆的实现 一.二叉树的顺序结构 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆 ( 一种二叉树 ) 使用顺序结构的数组来存储。 二.堆的概念…...
python生成项目依赖文件requirements.txt
文章目录 通过pip freeze去生成通过pipreqs去生成 通过pip freeze去生成 pip freeze > requirements.txt会将整个python的Interceptor的环境下lib包下所有的依赖都生成到这个文件当中,取决于我们使用的python的版本下所有的安装包。不建议使用这种方式ÿ…...
Cribl 对Windows-xml log 进行 -flatten-03
The Flatten Function Description The Flatten Function is used to flatten fields out of a nested structure. Lets flatten the _raw JSON object, to further reduce the events size before we send it to the intended destination(s). Steps – Adding a Flatten…...
Java优雅实现判空方法
在 Java 开发中,频繁的 if (obj ! null) 判空代码会导致代码冗余、可读性差,且容易遗漏判空导致 NullPointerException。以下从 语言特性、设计模式、工具类 和 编码规范 四个维度,结合实际案例,详解如何优雅处理空值问题。 一、…...
leetcode 1035. Uncrossed Lines
题目描述 本题本质上就是求nums1和nums2的最长公共子序列的长度。因此本题本质上与第1143题一模一样。 代码: class Solution { public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {//本题等价于求nums1和nums2的最长公…...
windows上部署本地知识库(RAG)ollama + docker + ragflow方案
一、部署ollama 如何部署本地部署ollama参照我另一篇博客:Windows安装ollama部署本地大模型_ollama 在哪里运行的大模型-CSDN博客 二、部署docker 1、下载docker: 下载地址: Docker: Accelerated Container Application Development 2、winds(winds11)安装或者更新ws…...
多Agent框架及协作机制详解
文章目录 一、多智能体系统介绍1.1 多智能体系统定义1.2 多智能体协作1.3 协作类型1.4 协作策略1.5 通信结构1.6 协调与编排 1.3 多智能体与单智能体对比1.4 应用场景 二、多Agent开发框架AutoGenMetaGPTLangGraphSwarmCrewAI 三、多智能体协作方式3.1 MetaGPT:SOP驱…...
Cribl 对Windows-xml log 进行 -Removing filed-06
Removing Fields Description The Eval Function can be used to add or remove fields. In this example we will remove the extracted fields while preserving _raw, _time,index,source, sourcetype. Steps - Adding an Eval Function...
Linux 常用指令用户手册
Linux 常用指令用户手册 适合新手入门 & 日常速查 目录 基础操作文件与目录管理权限与所有权文本处理压缩与解压系统监控网络操作进程管理实用小技巧 1. 基础操作 1.1 查看系统信息 # 查看内核版本 uname -a# 查看系统发行版信息(适用于 Debian/Ubuntu&…...
Java EE(20)——线程安全——ThreadLocal
1.前言 在面的线程安全相关的博文中,解决线程安全问题的方法主要使用synchronized和volatile两个关键字。引发线程安全问题的根本原因是多个线程同时对共享变量进行写操作,而上述两个关键字并没有改变"多个线程写同一个变量"这个情况。以sync…...
树莓派超全系列教程文档--(36)树莓派条件过滤器设置
树莓派条件过滤器设置 条件过滤器[all] 过滤器型号过滤器[none] 过滤器[tryboot] 过滤器[EDID*] 过滤器序列号过滤器GPIO过滤器组合条件过滤器 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 条件过滤器 当将单个 SD 卡(或卡图像&am…...
Vue3核心源码解析
/packages/complier-core 定位:编译时核心,处理 Vue 模板的编译逻辑。核心功能: 模板解析:将 .vue 文件的模板语法(HTML-like)解析为 抽象语法树 (AST)。转换优化…...
JavaScript解密实战指南:从基础到进阶技巧
JavaScript加密技术广泛应用于数据保护、反爬虫和代码混淆,但掌握解密方法能帮助开发者突破技术壁垒。本文结合爬虫实战与安全分析场景,系统梳理JS解密的核心方法与工具。 一、基础解密方法 1. Base64解码 适用于简单编码场景,如Cookie加密…...
指针(2)
1.数组名的理解 使用指针访问数组的内容时,有这样的代码: int arr[10]{1,2,3,4,5,6,7,8,9,10}int * p&arr[0]; &arr[0] 的方式拿到了数组的第一个元素的地址,但是其实数组名本来就是地址,而且还是首元素的地址…...
Android开发中广播(Broadcast)技术详解
在 Android 开发中,广播(Broadcast) 是一种广泛使用的组件通信机制,它允许应用程序在不直接交互的情况下传递消息。本文将详细讲解 Android 广播的基本概念、类型、发送与接收流程、使用场景及注意事项,并结合具体的代…...
Python网络爬虫设计(三)
目录 一、需要登录的爬虫 二、pyppeteer与requests库结合 1、cookie和session 三、其他 1、绝对网址和相对网址 2、sleep函数 一、需要登录的爬虫 在众多种类的页面中,不同的页面有不同的功能,有的是进行展示的,而有的则是登录类的。在…...
【深度学习—李宏毅教程笔记】各式各样的 Attention
目录 一、普通 Self-Attention 的痛点 二、对 Self-Attention 的优化方式 1、Local Attention / Truncated Attention 2、Stride Attention 3、Global Attention 4、知名的 Self-Attention 的变形的应用 (1)Longformer (2)…...
leetcode 1143. Longest Common Subsequence
目录 题目描述 第一步,明确并理解dp数组及下标的含义 第二步,分析明确并理解递推公式 第三步,理解dp数组如何初始化 第四步,理解遍历顺序 代码 题目描述 这道题和第718题的区别就是,本题求的是最长公共子序列的长…...
Unity C\# 实战:从零开始为游戏添加背景音乐与音效 (AudioSource/AudioClip/AudioMixer 详解)
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
【代码解读】开源模型 minimind之pretrain
minimind原模型地址: https://github.com/jingyaogong/minimind 本文解读下开源模型minimind的预训练代码 train_pretrain.py,解释以代码注释的形式添加 1. 参数配置代码 parser argparse.ArgumentParser(description"MiniMind Pretraining") parser.ad…...
wordpress独立站的产品详情页添加WhatsApp链接按钮
在WordPress外贸独立站的产品展示页添加WhatsApp链接按钮,可以帮助客户更方便地与你联系。以下是实现这一功能的步骤: 方法一:使用HTML代码添加按钮 编辑产品展示页 进入WordPress后台,找到需要添加WhatsApp按钮的产品展示页。…...
从入门到精通汇编语言 第五章(流程转移与子程序)
参考教程:通俗易懂的汇编语言(王爽老师的书)_哔哩哔哩_bilibili 一、“转移”概述 1、转移的概念 (1)般情况下指令是顺序地逐条执行的,而在实际中,常需要改变程序的执行流程,这就…...
Redis下载
目录 安装包 1、使用.msi方式安装 2.使用zip方式安装【推荐方式】 添加环境变量 配置后台运行 启动: 1.startup.cmd的文件 2.cmd窗口运行 3.linux源码安装 (1)准备安装环境 (2)上传安装文件 (3&…...
硬件工程师笔记——电子器件汇总大全
目录 1、电阻 工作原理 欧姆定律 电阻的物理本质 一、限制电流 二、分压作用 三、消耗电能(将电能转化为热能) 2、压敏电阻 伏安特性 1. 过压保护 2. 电压调节 3. 浪涌吸收 4. 消噪与消火花 5. 高频应用 3、电容 工作原理 (…...
第一章,HCIA复习
抽象语言---->电信号抽象语言---编码 编码------二进制 二进制----电信号 OSI参考模型 TCP/IP模型(4参考5对等) 应用层:程序的编译过程;人机交互的接口。 表示层:数据格式化--->二进制 会话层:维护网…...
在 Debian 12 中恢复被删除的 smb.conf 配置文件
https://forum.ubuntu.com.cn/viewtopic.php?t494763 本文结合ai输出,内容中可能有些错误,但确实解决了我的问题,我采取保留完整输出的方式摘录。 在 Debian 12 中恢复被删除的 smb.conf 配置文件,需结合 dpkg 和 ucf(…...