【Spring】Spring 整合 Junit、MyBatis

一、 Spring 整合 Junit

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.qiu</groupId><artifactId>spring-015-junit</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.23</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><!-- Spring6 的支持 junit4 还有 junit5 --><version>5.3.23</version></dependency><!--使用Junit则将下面改为Junit5版本即可--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies></project>
package org.qiu.spring.bean;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** @author 秋玄* @version 1.0* @email qiu_2022@aliyun.com* @project Spring* @package org.qiu.spring.bean* @date 2022-11-30-21:55* @since 1.0*/
@Component
public class User {@Value("张三")private String name;@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public User() {}public User(String name) {this.name = name;}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="org.qiu.spring.bean"/>
</beans>
package org.qiu.spring.test;import org.junit.Test;
import org.junit.runner.RunWith;
import org.qiu.spring.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/*** @author 秋玄* @version 1.0* @email qiu_2022@aliyun.com* @project Spring* @package org.qiu.spring.test* @date 2022-11-30-21:56* @since 1.0*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class JunitTest {@Autowiredprivate User user;@Testpublic void testUser(){System.out.println(user.getName());}
}

运行效果:  

Spring提供的方便主要是这几个注解:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring.xml")

在单元测试类上使用这两个注解之后,在单元测试类中的属性上可以使用@Autowired。比较方便

在JUnit5当中,可以使用Spring提供的以下两个注解,标注到单元测试类上,这样在类当中就可以使用@Autowired注解了

@ExtendWith(SpringExtension.class)

@ContextConfiguration("classpath:spring.xml")

二、Spring 集成 MyBatis

1、实验步骤 

  • 第一步:准备数据库表

    • 使用t_act表(账户表)

  • 第二步:IDEA中创建一个模块,并引入依赖

    • spring-context

    • spring-jdbc

    • mysql驱动

    • mybatis

    • mybatis-spring:mybatis提供的与spring框架集成的依赖

    • 德鲁伊连接池

    • junit

  • 第三步:基于三层架构实现,所以提前创建好所有的包

    • com.qiu.bank.mapper

    • com.qiu.bank.service

    • com.qiu.bank.service.impl

    • com.qiu.bank.pojo

  • 第四步:编写pojo

    • Account,属性私有化,提供公开的setter getter和toString。

  • 第五步:编写mapper接口

    • AccountMapper接口,定义方法

  • 第六步:编写mapper配置文件

    • 在配置文件中配置命名空间,以及每一个方法对应的sql。

  • 第七步:编写service接口和service接口实现类

    • AccountService

    • AccountServiceImpl

  • 第八步:编写jdbc.properties配置文件

    • 数据库连接池相关信息

  • 第九步:编写mybatis-config.xml配置文件

    • 该文件可以没有,大部分的配置可以转移到spring配置文件中。

    • 如果遇到mybatis相关的系统级配置,还是需要这个文件。

  • 第十步:编写spring.xml配置文件

    • 组件扫描

    • 引入外部的属性文件

    • 数据源

    • SqlSessionFactoryBean配置

    • 注入mybatis核心配置文件路径

      • 指定别名包

      • 注入数据源

    • Mapper扫描配置器

      • 指定扫描的包

    • 事务管理器DataSourceTransactionManager

      • 注入数据源

    • 启用事务注解

      • 注入事务管理器

  • 第十一步:编写测试程序,并添加事务,进行测试

2、具体实现 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.qiu</groupId><artifactId>spring-016-sm</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--spring-context--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.23</version></dependency><!--spring-jdbc--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.23</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.10</version></dependency><!--mybatis-spring:mybatis提供的与spring框架集成的依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.3</version></dependency><!--德鲁伊连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.15</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies></project>
package org.qiu.spring.pojo;/*** @author 秋玄* @version 1.0* @email qiu_2022@aliyun.com* @project Spring* @package org.qiu.spring.pojo* @date 2022-12-01-09:16* @since 1.0*/
public class Account {private String actno;private Double balance;public Account() {}public Account(String actno, Double balance) {this.actno = actno;this.balance = balance;}@Overridepublic String toString() {return "Account{" +"actno='" + actno + '\'' +", balance=" + balance +'}';}public String getActno() {return actno;}public void setActno(String actno) {this.actno = actno;}public Double getBalance() {return balance;}public void setBalance(Double balance) {this.balance = balance;}
}
package org.qiu.spring.mapper;import org.qiu.spring.pojo.Account;import java.util.List;/*** 实现类不需要写,由 mybatis 通过动态代理实现即可* @author 秋玄* @version 1.0* @email qiu_2022@aliyun.com* @project Spring* @package org.qiu.spring.mapper* @date 2022-12-01-09:17* @since 1.0*/
public interface AccountMapper {int insert(Account account);int delete(String atcno);int update(Account account);Account selectByActno(String actno);List<Account> selectAll();
}
<?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="org.qiu.spring.mapper"><insert id="insert">insert into t_act values (#{actno},#{balance})</insert><delete id="delete">delete from t_act where actno = #{actno}</delete><update id="update">update t_act set balance = #{balance} where actno = #{actno}</update><select id="selectByActno" resultType="Account">select * from t_act where actno = #{actno}</select><select id="selectAll" resultType="Account">select * from t_act</select>
</mapper>
package org.qiu.spring.service;import org.qiu.spring.pojo.Account;import java.util.List;/*** @author 秋玄* @version 1.0* @email qiu_2022@aliyun.com* @project Spring* @package org.qiu.spring.service* @date 2022-12-01-09:30* @since 1.0*/
public interface AccountService {int save(Account account);int deleteByActno(String actno);int modify(Account account);Account getByActno(String actno);List<Account> getAll();void transfer(String fromAccount,String toAccount,Double money);
}
package org.qiu.spring.service.impl;import org.qiu.spring.mapper.AccountMapper;
import org.qiu.spring.pojo.Account;
import org.qiu.spring.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @author 秋玄* @version 1.0* @email qiu_2022@aliyun.com* @project Spring* @package org.qiu.spring.service.impl* @date 2022-12-01-09:33* @since 1.0*/
@Service("accountService")
public class AccountServiceImpl implements AccountService {@Autowiredprivate AccountMapper accountMapper;@Overridepublic int save(Account account) {return accountMapper.insert(account);}@Overridepublic int deleteByActno(String actno) {return accountMapper.delete(actno);}@Overridepublic int modify(Account account) {return accountMapper.update(account);}@Overridepublic Account getByActno(String actno) {return accountMapper.selectByActno(actno);}@Overridepublic List<Account> getAll() {return accountMapper.selectAll();}@Overridepublic void transfer(String fromAccount, String toAccount, Double money) {Account from = accountMapper.selectByActno(fromAccount);if (from.getBalance() < money) {throw new RuntimeException("余额不足");}Account to = accountMapper.selectByActno(toAccount);from.setBalance(from.getBalance() - money);to.setBalance(to.getBalance() + money);int count = accountMapper.update(from);count += accountMapper.update(to);if (count != 2){throw new RuntimeException("转账失败");}}
}
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mvc
jdbc.username=root
jdbc.password=mysql
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--打印 mybatis 日志信息--><settings><setting name="logImpl" value="STDOUT_LOGGING"/></settings>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!--组件扫描--><context:component-scan base-package="org.qiu.spring"/><!--引入外部属性文件--><context:property-placeholder location="jdbc.properties"/><!--数据源--><bean id="dataSuorce" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean><!--SqlSessionFactoryBean--><bean class="org.mybatis.spring.SqlSessionFactoryBean"><!--注入数据源--><property name="dataSource" ref="dataSuorce"/><!--指定 mybatis 核心配置文件--><property name="configLocation" value="mybatis-config.xml"/><!--指定别名包--><property name="typeAliasesPackage" value="org.qiu.spring.pojo"/></bean><!--Mapper扫描配置器,扫描Mapper接口,生成代理类--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.qiu.spring.mapper"/></bean><!--事务管理器--><bean id="txManaget" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSuorce"/></bean><!--启动事务注解--><tx:annotation-driven transaction-manager="txManaget"/></beans>

由于使用了事务,所以需要给service添加事务注解  

@Transactional
@Service("accountService")
public class AccountServiceImpl implements AccountService {\\ ......
}

import org.junit.Test;
import org.qiu.spring.service.AccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @author 秋玄* @version 1.0* @email qiu_2022@aliyun.com* @project Spring* @package PACKAGE_NAME* @date 2022-12-01-10:04* @since 1.0*/
public class SMTest {@Testpublic void testSM(){ApplicationContext app = new ClassPathXmlApplicationContext("spring.xml");AccountService service = app.getBean("accountService", AccountService.class);try {service.transfer("act001","act002",10000.0);System.out.println("转账成功");} catch (Exception e){e.printStackTrace();}}}

运行效果:  

Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
十二月 01, 2022 10:16:27 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb]
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@15a04efb] will be managed by Spring
==>  Preparing: select * from t_act where actno = ?
==> Parameters: act001(String)
<==    Columns: actno, balance
<==        Row: act001, 40000.0
<==      Total: 1
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb]
Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb] from current transaction
==>  Preparing: select * from t_act where actno = ?
==> Parameters: act002(String)
<==    Columns: actno, balance
<==        Row: act002, 10000.0
<==      Total: 1
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb]
Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb] from current transaction
==>  Preparing: update t_act set balance = ? where actno = ?
==> Parameters: 30000.0(Double), act001(String)
<==    Updates: 1
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb]
Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb] from current transaction
==>  Preparing: update t_act set balance = ? where actno = ?
==> Parameters: 20000.0(Double), act002(String)
<==    Updates: 1
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb]
Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f666ebb]
转账成功

3、Spring 配置文件的 import

spring 配置文件有多个,并且可以在 spring 的核心配置文件中使用 import 进行引入,我们可以将组件扫描单独定义到一个配置文件中,如下:  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--组件扫描--><context:component-scan base-package="com.qiu.bank"/></beans>

然后在核心配置文件中引入:  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><!--引入其他的spring配置文件--><import resource="common.xml"/></beans>

注意:在实际开发中,service单独配置到一个文件中,dao单独配置到一个文件中,然后在核心配置文件中引入,养成好习惯  

一  叶  知  秋,奥  妙  玄  心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sql Server 2016数据库定时备份

一、 配置备份计划任务 选中“维护计划“--右键--“维护计划向导” 完成

遥控挖掘机之ESP8266调试心得(1)

ESP8266调试心得 1. 前言2.遇到的问题2.1 ESP8266模块建立TCP连接时候报错2.2 指令异常问题 3. 更新ESP8266固件3. ESP8266的部分AT指令3. 连接步骤3.1 模块与电脑连接3.2.1 电脑上的设置3.2.2 ESP8266模块作为客户机&#xff08;TCP Cilent&#xff09;的设置步骤 3.2 模块与模…

从开发角度理解漏洞成因(02)

文章目录 文件上传类需求文件上传漏洞 文件下载类需求文件下载漏洞 扩展 留言板类&#xff08;XSS漏洞&#xff09;需求XSS漏洞 登录类需求cookie伪造漏洞万能密码登录 持续更新中… 文章中代码资源已上传资源&#xff0c;如需要打包好的请点击PHP开发漏洞环境&#xff08;SQL注…

贝塞尔曲线 java

参考文章&#xff1a; 理解贝塞尔曲线https://blog.csdn.net/weixin_42301220/article/details/125167672 代码实现参考 https://blog.csdn.net/yinhun2012/article/details/118653732 贝塞尔 一二三阶java代码实现,N阶段可以通过降阶递归实现 public class Test extends JPan…

java选择结构语句

文章目录 Java选择结构语句的几种形式1. **if 单选择结构**:2. **if-else 双选择结构**:3. **if-else if 多选择结构**:4. **switch 选择结构**: Java 12及更高版本的Switch Expressions返回值的Switch表达式yield关键字使用Switch作为语句或表达式 Pattern Matching for insta…

Final Draft 12 for Mac:高效专业剧本创作软件

对于剧本创作者来说&#xff0c;一款高效、专业的写作工具是不可或缺的。Final Draft 12 for Mac就是这样一款完美的选择。这款专为Mac用户设计的剧本创作软件&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;让您的剧本创作更加得心应手。 Final Draft 12支持多种剧本格…

【C++】CentOS环境搭建-编译安装Boost库(附CMAKE编译文件)

【C】环境搭建-编译安装Boost库 Boost库简介Boost库安装通过YUM安装&#xff08;版本较低 V1.53.0&#xff09;通过编译安装&#xff08;官网最新版本1.85.0&#xff09;1.安装相关依赖2.查询官网下载最新安装包并解压3.编译Boost4.安装Boost库到系统路径 Boost库验证 Boost库简…

(22.12.20)matlab2022+yalmip+cplex安装教程,win11 x64

前言 Hi,你好&#xff01;最近刚刚更换新的电脑设备&#xff0c;安装软件时尽量选择最新版本&#xff0c;但也遇到了大大小小的安装问题&#xff0c;这里把踩到的坑一并总结出来&#xff0c;给出一份还算合理的MATLAByalmipCPLEX安装教程&#xff08;win11&#xff09;。 MAT…

从零入门激光SLAM(十三)——LeGo-LOAM源码超详细解析4

大家好呀&#xff0c;我是一个SLAM方向的在读博士&#xff0c;深知SLAM学习过程一路走来的坎坷&#xff0c;也十分感谢各位大佬的优质文章和源码。随着知识的越来越多&#xff0c;越来越细&#xff0c;我准备整理一个自己的激光SLAM学习笔记专栏&#xff0c;从0带大家快速上手激…

OBS插件--视频回放

视频回放 视频回放是一款源插件&#xff0c;它可以将指定源的视频缓存一段时间&#xff08;时间可以设定&#xff09;&#xff0c;将缓存中的视频添加到当前场景中后&#xff0c;可以快速或慢速不限次数的回放。这个功能在类似体育比赛的直播中非常有用&#xff0c;可以捕获指…

【快讯】山东省第四批软件产业高质量发展重点项目开始申报

为加快落实《山东省高端软件“铸魂”工程实施方案&#xff08;2023-2025&#xff09;》&#xff0c;提高软件产业规模能级&#xff0c;提升关键软件技术创新和供给能力&#xff0c;塑强数字经济发展核心竞争力&#xff0c;确定开展第四批软件产业高质量发展重点项目申报工作&am…

CTF-Web Exploitation(持续更新)

CTF-Web Exploitation 1. GET aHEAD Find the flag being held on this server to get ahead of the competition Hints Check out tools like Burpsuite to modify your requests and look at the responses 根据提示使用不同的请求方式得到response可能会得到结果 使用…

如何通过汽车制造供应商协同平台,提高供应链的效率与稳定性?

汽车制造供应商协同是指在汽车制造过程中&#xff0c;整车制造商与其零部件供应商之间建立的一种紧密合作的关系。这种协同关系旨在优化整个供应链的效率&#xff0c;降低成本&#xff0c;提高产品质量&#xff0c;加快创新速度&#xff0c;并最终提升整个汽车产业的竞争力。以…

面试笔记——JVM组成

基本介绍 JVM: Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 使用JVM的好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收机制 JVM的组成及运行流程&#xff1a; 程序计数器 程序计数器&a…

Zabbix5.0——安装与部署

目录 一、zabbix-server(192.168.206.134) 监控方 1. 环境准备 2.安装zabbix 2.1 准备zabbix-repo 2.2清理缓存 2.3安装zabbix主包&#xff08;服务器和代理&#xff09; 2.4安装zabbix前端包 3. 数据库安装 3.1 授权zabbix账号 3.2导入数据库&#xff08;初始化zabbix&#x…

人工智能驱动的设计工具的兴起:彻底改变创意产业

人工智能驱动的设计工具的兴起&#xff1a;彻底改变创意产业 概述 人工智能 (AI) 正在改变创意产业&#xff0c;设计也不例外。人工智能驱动的设计工具正在彻底改变设计师的工作方式&#xff0c;提供无与伦比的效率、创造力和创新水平。从生成图像和设计到自动化日常任务&…

基于Opencv的车牌识别系统(毕业设计可用)

系统架构 图像采集&#xff1a;首先&#xff0c;通过摄像头等设备捕捉车辆图像。图像质量直接影响后续处理的准确性&#xff0c;因此高质量的图像采集是基础。 预处理&#xff1a;对获取的原始图像进行预处理&#xff0c;包括灰度化、降噪、对比度增强和边缘检测等。这些操作旨…

RS3236-3.3YF5 封装SOT-23-5 线性稳压器 带过温保护

RS3236-3.3YF5 是一款由Runic&#xff08;润石&#xff09;公司生产的线性稳压器&#xff08;LDO&#xff09;&#xff0c;以下是该器件的一些功能和参数介绍&#xff1a; 品牌: Runic 产品类型: 线性稳压器 (LDO) 输入电压范围: 最大 7.5V 输出电压: 固定 3.3V 输出电流: 最大…

基于FPGA的去雾算法

去雾算法的原理是基于图像去模糊的原理&#xff0c;通过对图像中的散射光进行估计和去除来消除图像中的雾霾效果。 去雾算法通常分为以下几个步骤&#xff1a; 1. 导引滤波&#xff1a;首先使用导引滤波器对图像进行滤波&#xff0c;目的是估计图像中散射光的强度。导引滤波器…

介绍适用于 Node.js 的 Elastic OpenTelemetry 发行版

作者&#xff1a;来自 Elastic Trent Mick 我们很高兴地宣布推出 Elastic OpenTelemetry Distribution for Node.js 的 alpha 版本。 该发行版是 OpenTelemetry Node.js SDK 的轻量级包装&#xff0c;可以让你更轻松地开始使用 OpenTelemetry 来观察 Node.js 应用程序。 背景 …