当前位置: 首页 > article >正文

spring注解开发(Spring整合MyBatis——Mapper代理开发模式、(Spring、MyBatis、Jdbc)配置类)(6)

目录

一、纯MyBatis独立开发程序。

(1)数据库与数据表。

(2)实体类。

(3)dao层接口。(Mapper代理模式、无SQL映射文件——注解配置映射关系)

(4)MyBatis核心配置文件。

(5)应用测试程序。(类App)

二、Spring整合MyBatis的思路分析。(Spring管理哪个bean?)

(1)MyBatis运行程序分析。

<1>初始化SqlSessionFactory。

<2>获取连接(SqlSession)。获取xxxMapper接口。

<3>调用数据层方法完成操作。

<4>关闭连接。

(2)MyBatis核心配置文件分析。

<1>初始属性、加载外部资源文件。

<2>初始化类型别名。

<3>配置数据源连接信息。

<4>初始化映射配置。

(3)分析小结。

三、Spring整合MyBatis。(实操)

(1)导入Spring整合Mybatis核心依赖坐标。

<1>spring-context。(基础核心)

<2>druid。(阿里数据源)

<3>mybatis。(基础核心)

<4>mysql-connector-java。(mysql核心jar)

<5>spring-jdbc。(spring操作数据库核心jar)

<6>mybatis-spring。(spring整合mybatis核心jar)

<7>lombok。(快速开发)

(2)service层。

<1>AccountService接口。

<2>AccountServiceImpl实现类。

(3)dao层。(Mapper代理模式开发)

(4)Jdbc配置类。(配置数据源信息)

(5)MyBatis配置类。(取代MyBatis核心配置文件)

<1>SqlSessionFactoryBean、MapperScannerConfigurer对象。

(6)Spring配置类。

(7)测试程序。(类App02)


一、纯MyBatis独立开发程序。

(1)数据库与数据表。
  • 数据库:hyl。数据表:tb_account。


(2)实体类。
  • pom文件引入Lombok依赖。(帮助快速开发:无需手动提供getter、setter方法、构造器、toString()方法等...)
<!--Lombok依赖坐标--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope>
</dependency>

  • 在包(domain)下创建对应数据库字段的实体类用于封装。
  • 实体类上使用注解@Data使Lombok生效。
package com.hyl.domain;import lombok.Data;@Data
public class Account {private Integer id;private String name;private Double money;
}

(3)dao层接口。(Mapper代理模式、无SQL映射文件——注解配置映射关系)
  • 只有接口无实现类。使用Mapper代理模式这一套开发模式。
  • 无SQL映射文件。使用注解形式(@Select、@Insert、@Delete、@Update)配置其映射关系并完成SQL语句的书写。
package com.hyl.dao;import com.hyl.domain.Account;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;import java.util.List;/*** 数据层的操作接口*/
public interface AccountDao {/*** 新增*/@Insert("insert into tb_account (name,money) values (#{name},#{money})")void save(Account account);/*** 根据id删除*/@Delete("delete from tb_account where id = #{id}")void delete(Integer id);/*** 更新* @param account*/@Update("update tb_account set name = #{name} , money = #{money} where id = #{id}")void update(Account account);/*** 查询所有* @return*/@Select("select * from tb_account ")List<Account> selectAll();/*** 根据id查询* @param id* @return*/@Select("select * from tb_account where id = #{id}")Account selectById(Integer id);
}

(4)MyBatis核心配置文件。
  • pom文件引入mybatis核心依赖与Java连接数据库核心依赖
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<!--mybatis依赖-->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version>
</dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!--mysql驱动-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency>

  • <properties>加载外部properties配置文件。
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/hyl
jdbc.username=root
jdbc.password=root123

  • 加载JDBC连接MySQL的数据源连接信息。
  • <mappers>中的<package>注册指定包下的所有mapper接口。
<?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><properties resource="db.properties"></properties><settings><setting name="logImpl" value="STDOUT_LOGGING"/></settings><typeAliases><package name="com.hyl.domain"/></typeAliases><environments default="development"><environment id="development"><!--配置JDBC事务管理--><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><package name="com.hyl.dao"/></mappers>
</configuration>

(5)应用测试程序。(类App)
  • 获得SqlSessionFactory对象。
  • 获得SqlSession对象。
  • 通过SqlSession对象调用getMapper("执行业务的接口.class")获取真正执行业务操作的xxxMapper接口。
  • 通过调用对应的方法执行查询操作即可。
  • 最后释放SqlSession对象资源。
package com.hyl;import com.hyl.dao.AccountDao;
import com.hyl.domain.Account;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class App {public static void main(String[] args) throws IOException {//1.创建sqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//加载mybatis主配置文件InputStream resourceAsStream = Resources.getResourceAsStream("mybatisConfig.xml");//3.创建SqlSessionFactory对象SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);//4.创建SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession();//5.执行SqlSession对象的getMapper方法获取执行业务的接口MapperAccountDao accountDao = sqlSession.getMapper(AccountDao.class);Account account = accountDao.selectById(1);System.out.println("查询结果:"+account);//6.释放SqlSession资源sqlSession.close();}
}

  • 测试类App程序运行结果如下。

二、Spring整合MyBatis的思路分析。(Spring管理哪个bean?)

(1)MyBatis运行程序分析。
  • 从上面的纯MyBatis开发项目的运行程序(App)分析。并将其拆分为几个重要的模块。

  • 因为Spring是用来管理bean的,那么需要确定有哪些bean是需要交给Spring管理的!
<1>初始化SqlSessionFactory。
  • 核心对象SqlSessionFactory。(需要交给spring管理)


<2>获取连接(SqlSession)。获取xxxMapper接口。
  • 无核心需要被spring管理的对象。
  • SqlSession对象是由SqlSessionFactory初始化那个阶段就已经造好。


<3>调用数据层方法完成操作。
  • 无核心需要被spring管理的对象。
  • 虽然accountDao是执行业务的对象,但依旧不是根源的对象。并且随着业务的更换,造出的对象也会更新。


<4>关闭连接。
  • 无核心需要被spring管理的对象。


(2)MyBatis核心配置文件分析。
  • MyBatis核心配置文件所有的配置都是围绕着SqlSessionFactory对象进行的。

<1>初始属性、加载外部资源文件。
  • 读取外部文件的值。不是核心关键所在。


<2>初始化类型别名。
  • 操作数据库得到的数据结果进行封装到对应的实体类中。次要核心


<3>配置数据源连接信息。
  • 配置数据源对象DataSource。核心所在
  • 造出SqlSession对象是操作对应的数据库的。而这些配置都是为核心对象SqlSessionFactory服务的。


<4>初始化映射配置。
  • 这部分主要关于业务的操作。
  • 初始化SqlSessionFactory对象后,再根据不同的配置、不同的接口,获得不同的xxxMapper,再去操作不同的库与表。所以也不是核心关键所在。


(3)分析小结。
  • 最终经过分析:MyBatis核心的对象SqlSessionFactory是需要交给Spring进行管理的

三、Spring整合MyBatis。(实操)

  • 注:数据库、数据表、实体类的代码与纯MyBatis开发程序一致。
(1)导入Spring整合Mybatis核心依赖坐标。
<1>spring-context。(基础核心)
        <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.18</version></dependency>

<2>druid。(阿里数据源)
<!--阿里数据库连接池druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency>

<3>mybatis。(基础核心)
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><!--mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency>

<4>mysql-connector-java。(mysql核心jar)
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency>

<5>spring-jdbc。(spring操作数据库核心jar)
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.18</version></dependency>

<6>mybatis-spring。(spring整合mybatis核心jar)
  • 注意这个jar与mybatis的基础依赖的版本是有联系的。随着版本的更替都会更替。
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency>

<7>lombok。(快速开发)
<!--Lombok依赖坐标--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency>

(2)service层。
<1>AccountService接口。
package com.hyl.service;import com.hyl.domain.Account;import java.util.List;public interface AccountService {/*** 新增* @param account*/void save(Account account);/*** 更新* @param account*/void update(Account account);/*** 删除* @param id*/void delete(Integer id);/*** 根据id查询* @param id* @return*/Account selectById(Integer id);/*** 查询所有* @return*/List<Account> selectAll();
}

<2>AccountServiceImpl实现类。
  • 使用注解@Service将该实现类交给spring容器管理。
  • 使用注解@Autowired完成dao层AccountDao的自动装配。
package com.hyl.service.impl;import com.hyl.dao.AccountDao;
import com.hyl.domain.Account;
import com.hyl.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class AccountServiceImpl implements AccountService {@Autowiredprivate AccountDao accountDao;@Overridepublic void save(Account account) {accountDao.save(account);}@Overridepublic void update(Account account) {accountDao.update(account);}@Overridepublic void delete(Integer id) {accountDao.delete(id);}@Overridepublic Account selectById(Integer id) {return accountDao.selectById(id);}@Overridepublic List<Account> selectAll() {return accountDao.selectAll();}
}

(3)dao层。(Mapper代理模式开发)
  • AccountDao接口。
  • 无SQL映射文件。(使用注解@Selcet、@Insert、@Delete、@Update配置映射关系与SQL语句)
package com.hyl.dao;import com.hyl.domain.Account;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;import java.util.List;/*** 数据层的操作接口*/
public interface AccountDao {/*** 新增*/@Insert("insert into tb_account (name,money) values (#{name},#{money})")void save(Account account);/*** 根据id删除*/@Delete("delete from tb_account where id = #{id}")void delete(Integer id);/*** 更新* @param account*/@Update("update tb_account set name = #{name} , money = #{money} where id = #{id}")void update(Account account);/*** 查询所有* @return*/@Select("select * from tb_account ")List<Account> selectAll();/*** 根据id查询* @param id* @return*/@Select("select * from tb_account where id = #{id}")Account selectById(Integer id);
}

(4)Jdbc配置类。(配置数据源信息)
  • 使用注解@Bean标明返回数据源对象的方法。这样Spring会自动将DataSource对象交给Spring容器管理。其它的组件(bean)都可以使用。
package com.hyl.config;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 {@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String userName;@Value("${jdbc.password}")private String password;/*** 1、定义方法,返回需要管理的bean(这里使用阿里提供的第三方数据源druid)* 2、使用注解@Bean 将方法的返回值声明为一个Spring管理的Bean。* 这意味着Spring会调用这个方法,并将方法的返回值(bean)存储到Spring容器中,供其他组件使用。*/@Beanpublic DataSource dataSource(){DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setDriverClassName(driver);druidDataSource.setUrl(url);druidDataSource.setUsername(userName);druidDataSource.setPassword(password);return druidDataSource;}
}

(5)MyBatis配置类。(取代MyBatis核心配置文件)
  • 使用注解@Bean标明返回SqlSessionFactory对象的方法。这样Spring会自动将SqlSessionFactory对象交给Spring容器管理。其它的组件(bean)都可以使用。

  • 因为根据上方分析:SqlSessionFactory对象的初始化都与MyBatis核心配置文件有关,所以在返回SqlSessionFactory的方法里面要设置很多东西!
<1>SqlSessionFactoryBean、MapperScannerConfigurer对象
  • 为了简化开发,spring整合mybatis中提供了类SqlSessionFactoryBean制造bean。


  • 最终的Mybatis配置类的代码如下。
package com.hyl.config;import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class MyBatisConfig {@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();//代替Mybatis核心配置文件标签<typeAliases>ssfb.setTypeAliasesPackage("com.hyl.domain");//因为Jdbc配置类的方法使用了@Bean注解生产DataSource对象的方法。// 则可以使用形参注入DataSource。再通过方法设置使DataSourcessfb.setDataSource(dataSource);//jdbc事务管理默认有spring-jdbc依赖处理return ssfb;}//单独方法代替Mybatis核心配置文件标签<Mappers>//使用spring整合mybatis提供的类MapperScannerConfigurer完成映射文件的扫描@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();//设置映射在哪些包下mapperScannerConfigurer.setBasePackage("com.hyl.dao");return mapperScannerConfigurer;}
}

  • 加后缀.bak——>注释原来的MyBatis核心配置文件。方便测试。


(6)Spring配置类。
  • 为了快速的开发——所以选择纯注解的开发模式。而放弃使用XML配置文件开发模式。
  • 使用注解@Configuration标明这是spring的一个配置类。(平替spring配置文件)
  • 使用注解@ComponentScan扫描指定包下类的注解。
  • 使用注解@PropertySource加载外部properties配置文件。
  • 使用注解@Import引入其它的配置类(JdbcConfig、MyBatisConfig配置类)。
package com.hyl.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;@Configuration
@ComponentScan("com.hyl")
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MyBatisConfig.class})
public class SpringConfig {}

(7)测试程序。(类App02)
  • 通过类AnnotationConfigApplicationContext加载spring配置类。

  • spring配置类再通过注解完成其它配置类的扫描、包的注解扫描。

  • 配和注解@Service使用,用容器对象调用getBean()方法获取AccountServiceImpl对象。


  • 最后调用操作数据库的方法。(这里以测试根据id查询演示)。
package com.hyl;import com.hyl.config.SpringConfig;
import com.hyl.domain.Account;
import com.hyl.service.AccountService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App02 {public static void main(String[] args) {AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);AccountService accountService = applicationContext.getBean(AccountService.class);Account account = accountService.selectById(2);System.out.println(account);applicationContext.close();}
}
  • 测试类App02程序运行结果如下。


  • 到这里就是就实现了Spring整合MyBatis的全部操作了!也是完成快速开发的重要一步。

相关文章:

spring注解开发(Spring整合MyBatis——Mapper代理开发模式、(Spring、MyBatis、Jdbc)配置类)(6)

目录 一、纯MyBatis独立开发程序。 &#xff08;1&#xff09;数据库与数据表。 &#xff08;2&#xff09;实体类。 &#xff08;3&#xff09;dao层接口。&#xff08;Mapper代理模式、无SQL映射文件——注解配置映射关系&#xff09; &#xff08;4&#xff09;MyBatis核心配…...

springcloud组件调用顺序

Spring Cloud 组件的调用顺序并不是固定不变的&#xff0c;它依赖于具体的业务场景和微服务架构的设计。然而&#xff0c;可以概括出一个典型的微服务架构中 Spring Cloud 组件的调用流程&#xff0c;这个流程大致可以分为以下几个步骤&#xff1a; 服务注册与发现&#xff1a…...

【MySQL】数据库-图书管理系统(CC++实现)

一.预期功能 该图书管理系统设计提供基本的设计模版&#xff0c;涉及数据库的增删查改等操作&#xff0c;包含登录功能&#xff0c;图书管理功能&#xff0c;图书借阅功能&#xff0c;用户管理功能等基础功能&#xff0c;详细功能查看以下菜单表&#xff0c;共包含三个菜单&am…...

VSCode轻松调试运行C#控制台程序

1.背景 我一直都是用VS来开发C#项目的&#xff0c;用的比较顺手&#xff0c;也习惯了。看其他技术文章有介绍VS Code更轻量&#xff0c;更方便。所以我专门花时间来使用VS Code&#xff0c;看看它是如何调试代码、如何运行C#控制台。这篇文章是一个记录的过程。 2.操作 2.1 V…...

python-leetcode-下一个排列

31. 下一个排列 - 力扣&#xff08;LeetCode&#xff09; class Solution:def nextPermutation(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""# Step 1: Find the first decreasing element …...

c++中初始化列表的使用

在 C 中&#xff0c;初始化列表是在构造函数的定义中&#xff0c;用于对类的成员变量进行初始化的一种方式。它紧跟在构造函数的参数列表之后&#xff0c;使用冒号 : 分隔&#xff0c;各成员变量的初始化用逗号 , 分隔。下面详细介绍初始化列表及其参数的含义。 基本语法 clas…...

2025年2月28日(RAG)

从图片中的内容来看&#xff0c;用户提到的“RAG”实际上是“Retrieval-Augmented Generation”的缩写&#xff0c;中文称为“检索增强生成”。这是一种结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的技术&#xff0c;用于增强自然语…...

学睿德毅AI 赋能教育拓展短视频创作边界

在数字技术飞速发展的当下&#xff0c;短视频行业已成为推动社会经济发展的重要力量。学睿德毅紧跟时代步伐&#xff0c;聚焦 AI 技术在教育领域的创新应用&#xff0c;精心打造了一套专业且系统的短视频剪辑课程体系。该体系以 “技术与创意并重&#xff0c;理论共实践一色” …...

Jsmoke-一款强大的js检测工具,浏览器部署即用,使用方便且高效

目录标题 Jsmoke &#x1f6ac;&#x1f6ac; by Yn8rt使用方式界面预览功能特性支持的敏感信息类型 Jsmoke &#x1f6ac;&#x1f6ac; by Yn8rt ​ 该插件由 Yn8rt师傅 开发&#xff0c;插件可以理解为主动版的hae和apifinder&#xff0c;因为其中的大多数规则我都引用了&a…...

iphone上ios设备开启safari开发者debug模式,配合mac电脑使用

1.mac操作 mac的safari上打开开发者模式&#xff0c;打开显示网页开发者功能 2.开启IPhone的Safari调试模式 启用 Web 检查 功能&#xff0c;打开 iPhone 依次进入 设置 > Safari浏览器 > 高级 > 网页检查器 > 启用。 3.调试步骤 先用IPhone 的Safari打开要调试…...

【JAVA】阿里云百炼平台对接DeepSeek-V3大模型使用详解

1、DeepSeek简介 DeepSeek的火热让全世界见证了一场国产AI大模型走向巅峰的盛宴。DeepSeek的横空出世一方面让AI大模型的格局得到重塑&#xff0c;另一方面&#xff0c;对于普通人来说&#xff0c;也有机会零距离的体验到更懂国人的AI大模型。从很多使用过后的小伙伴们的反馈来…...

Datawhale 数学建模导论二 笔记5 多模数据与智能模型

主要涉及到的知识点有&#xff1a; 数字图像处理与计算机视觉 计算语言学与自然语言处理 数字信号处理与智能感知 10.1 数字图像处理与计算机视觉 视觉信息是我们第一种非常规的数据模式&#xff0c;在Python当中可以使用opencv处理数字图像&#xff0c;并提取出视觉特征用…...

AWS SQS跨账户访问失败排查指南

引言 在使用AWS SQS(Simple Queue Service)时,跨账户访问是常见的业务场景。例如,账户A的应用程序向队列发送消息,账户B的消费者从队列拉取消息。尽管AWS官方文档明确支持此类配置,但在实际应用中,由于权限模型的复杂性,开发者和运维人员常会遇到“策略已配置但无法接…...

Spring 源码硬核解析系列专题(六):Spring MVC 的请求处理源码解析

在前几期中,我们探讨了 Spring 的 IoC 容器、Bean 创建、AOP、事务管理以及 Spring Boot 的自动装配,这些为 Spring MVC 的运行奠定了基础。作为 Spring 生态中处理 Web 请求的核心模块,Spring MVC 通过 DispatcherServlet 实现了灵活的请求分发与处理。本篇将深入 Dispatch…...

如何在一台服务器上搭建 mongodb副本集1主2从节点

在一台服务器上搭建 MongoDB 副本集&#xff08;1 主节点 2 从节点&#xff09;可以通过运行多个 MongoDB 实例并使用不同端口和数据目录来实现。以下是详细步骤&#xff1a; 1. 准备工作 确保已安装 MongoDB。为每个实例创建独立的数据目录和日志文件。 2. 创建数据目录和…...

TikTok隐私保护措施:确保用户安全

TikTok隐私保护措施&#xff1a;确保用户安全 在这个信息爆炸的时代&#xff0c;社交媒体平台的隐私保护问题日益成为公众关注的焦点。TikTok&#xff0c;作为全球领先的短视频平台&#xff0c;拥有庞大的用户群体&#xff0c;因此&#xff0c;其隐私保护措施显得尤为重要。本…...

Apollo Cyber 学习笔记

目录 0 Introduction What Why Advantage 1 Example 2 Concept 3 Flow Chart 4 Module 4.1 Transport 4.1.1 Share Memory 4.1.1.1 Segment 4.1.1.1.1 State 4.1.1.1.2 Block 4.1.1.1.3 Common 4.1.1.2 Notifier 4.1.1.2.1 ConditionNotifier 4.1.1.2.2 Multi…...

mamba_ssm和causal-conv1d详细安装教程

1.前言 Mamba是近年来在深度学习领域出现的一种新型结构&#xff0c;特别是在处理长序列数据方面表现优异。在本文中&#xff0c;我将介绍如何在 Linux 系统上安装并配置 mamba_ssm 虚拟环境。由于官方指定mamba_ssm适用于 PyTorch 版本高于 1.12 且 CUDA 版本大于 11.6 的环境…...

Ruby基础

一、字符串 定义 283.to_s //转为string "something#{a}" //定义字符串&#xff0c;并且插入a变量的值 something//单引号定义变量 %q(aaaaaaaaa) // 定义字符串&#xff0c;&#xff08;&#xff09;内可以是任何数&#xff0c;自动转义双引号%Q("aaaaa"…...

React底层常见的设计模式

在React中&#xff0c;常见的设计模式为开发者提供了结构化和可重用的解决方案&#xff0c;有助于提高代码的可维护性和可扩展性。以下是对React中几种常见设计模式的详细解析&#xff0c;并附上示例代码和注释&#xff1a; 1. 容器组件与展示组件模式&#xff08;Container/P…...

机器视觉--线扫相机触发

绪论 在当今蓬勃发展的机器视觉领域&#xff0c;线扫相机堪称关键角色&#xff0c;它凭借高分辨率的扫描成像能力&#xff0c;广泛应用于工业检测、物流识别、印刷质量检测等众多核心场景。线扫相机的触发方式作为成像环节的核心要素&#xff0c;直接决定了图像采集的精准度与…...

Flutter的permission_handler插件检查iOS的通知权限不准确

今天&#xff0c;做好了一个功能&#xff0c;就是在app内检查用户有没有给当前APP打开通知权限&#xff0c; 如果没打开&#xff0c;就展示一个 banner &#xff0c;让用户去点击banner去打开权限 。 android上测试得非常顺利&#xff0c; 结果&#xff0c; 在iOS 上就是不…...

五、数据库索引详解:作用、原理与使用指南

数据库索引详解&#xff1a;作用、原理与使用指南 一、索引的作用&#xff08;为什么需要索引&#xff1f;&#xff09; 1. 生活中的类比 想象你要在一本 500 页的书中快速找到「数据库索引」相关内容&#xff1a; 没有目录&#xff1a;需要逐页翻找 → 全表扫描有目录&…...

vue使用a-table设置自定义合并字段实现某字段值相同则合并行

背景&#xff1a; 笔者前端使用ant-design-vue,二次开发了a-table,但a-table组件的属性方法都可以用&#xff1b; 业务需求&#xff1a;物资存放在不同的仓库&#xff0c;显示物资统计表格&#xff0c;以物资分组合并显示物资名称、总数量&#xff08;物资A在所有库房总数量&a…...

Docker容器日常维护常用命令大全

友情提示&#xff1a;本文内容由银河易创&#xff08;https://ai.eaigx.com&#xff09;AI创作平台deepseek-v3模型生成&#xff0c;文中所有命令未进行验证&#xff0c;仅供参考。请根据具体情况和需求进行适当的调整和验证。 引言 Docker作为当前最流行的容器化技术&#xf…...

《昇腾推理服务器+DeepSeek大模型》技术培训在图为科技成功举办

2月17日&#xff0c;华为政企业务团队受邀莅临图为科技深圳总部&#xff0c;并成功举办了一场聚焦于《昇腾推理服务器DeepSeek大模型》的专业知识培训。 此次培训活动不仅深化了双方的技术交流&#xff0c;更标志着昇腾AI与DeepSeek大模型的全面融合应用即将迈入实质性落地的新…...

【Java环境】配置极简描述

241220 241220 241220 Java环境配置 下载JDK 注意&#xff1a;最好下载 Long-Term SupportLTS&#xff0c;长期支持版本【目前是JDK21】 下载地址&#xff1a;Java Downloads | Oracle. 下载这个&#xff1a;x64 Installer 。 安装时&#xff0c;路径可改&#xff0c;其余无…...

DeepSeek开源周Day5: 3FS存储系统与AI数据处理新标杆

项目地址&#xff1a; GitHub - deepseek-ai/3FS: A high-performance distributed file system designed to address the challenges of AI training and inference workloads.GitHub - deepseek-ai/smallpond: A lightweight data processing framework built on DuckDB and…...

FastAPI系列:如何配置跨域访问(CORS)

默认情况下&#xff0c;FastAPI应用程序不允许来自不同来源的请求。当你有一个前端应用程序与后端API通信&#xff0c;并且它们托管在不同的域或端口上时&#xff0c;在FastAPI中允许来自不同来源的请求是一种常见的场景。这被称为CORS&#xff08;跨域资源共享&#xff09;&am…...

Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存

Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 目录 Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 一、简单介绍 二、简单介绍 camera 三、安装 camera 四、简单案例实现 五、关键代码 一、简单…...