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

Spring | Spring的“数据库开发“ (Srping JDBC)

目录:

    • Spring JDBC
      • 1.Spring JDBC的核心类 ( JdbcTemplate类 )
      • 2.Srping JDBC 的配置
      • 3.JdbcTemplate类的“常用方法”
        • execute( ):直接执行“sql语句”,没有返回值
        • update( ) :“增删改”,返回 “影响的行数”
        • query( ) : “查询”,返回 “T类型 / List类型” 的结果

在这里插入图片描述

作者简介 :一只大皮卡丘,计算机专业学生,正在努力学习、努力敲代码中! 让我们一起继续努力学习!

该文章参考学习教材为:
《Java EE企业级应用开发教程 (Spring + Spring MVC +MyBatis)》 黑马程序员 / 编著
文章以课本知识点 + 代码为主线,结合自己看书学习过程中的理解和感悟 ,最终成就了该文章

文章用于本人学习使用 , 同时希望能帮助大家。
欢迎大家点赞👍 收藏⭐ 关注💖哦!!!

(侵权教材方可联系我,进行删除,如果雷同,纯属巧合)


Spring JDBC

SpringJDBC模块 负责数据库资源管理错误处理,大大简化了开发人员对数据库的操作,使得开发人员可以从烦琐的数据库操作中解脱出来,从而将更多的精力投入到编写业务逻辑中

1.Spring JDBC的核心类 ( JdbcTemplate类 )

  • 针对数据库的操作,Spring 框架 (Spring JDBC )提供了 JdbcTemplate类,该类是Spring框架数据抽象层基础,其他更高层次的抽象类却是构建于JdbcTemplate类之上。

  • JdbcTemplate 类是Spring JDBC核心类

  • JdbcTemplate继承 / 实现 关系为 :
    在这里插入图片描述

    抽象类赋予JdbcTemplate属性接口赋予JdbcTemplate操作的方法,具体内容如下 :
    一、
    JdbcTemplate 继承 抽象类 JdbcAccessorJdbcAccessor是 JdbcTemplate的直接父类 (JdbcAccessor) 为子类 (JdbcTemplate) 提供了一些访问数据库时使用公共属性

    DataSource : 其主要功能是获取数据库连接具体实现时还可以引入对数据库连接
    冲池分布式事务的支持,它可以作为访问数据库资源的标准接口。

    SQLExceptionTranslator
    org.springframework.jdbc support.SQLExceptionTranslator接口负责对 SQLException 进行转译工作。通过必要的设置或者 获取SQLExceptionTranslator中的方法,可以使 JdbcTemplate 在需要处理SQLException时,委托SQLExceptionTranslator实现类完成相关的转译工作

    二、
    JdbcTemplate 实现了 JdbcOperations 接口。JdbcOperations接口定义了在JdbcTemplate类中可以使用的操作集合,包括 添加修改查询删除 等操作。

2.Srping JDBC 的配置

  • Spring JDBC模块主要由 4个包组成,分别是core (核心包)dataSource (数据源包)object (对象包)support (支持包)

  • 想实现 Spring JDBC功能,要进行Spring JDBC配置 :
    配置 core (核心包) 中的 JdbcTemplate 类
    配置 dataSource (数据源包) 中的 DriverManagerDataSource类
    (在 applicationContext.xml 中进行配置)

  • 包名说明
    core包
    (要配置JdbcTemplate 类)
    包含了JDBC核心功能,包括 JdbcTemplate 类SimpleJdbcInsert类SimpleJdbcCall类 以及 NamedParameterJdbcTemplate类
    ② 定义JdbcTemplate时,要将已经配置好的dataSource注入到JdbcTemplate中。
    dataSource包
    (要配置dataSource数据源 : DriverManagerDataSource类 )
    访问数据源实用工具类,它有多种数据源实现,可以在Java EE容器外部测试JDBC代码。
    ② 在配置文件中配置dataSource其的类为 :org.springframework.jdbc.datasource.DriverManagerDataSource
    ③ 配置 dataSource4个属性分别为: 数据库驱动url用户名密码
    ps : 配置dataSource的例子在下面。
    object包面向对象的方式访问数据库,它允许执行查询并将返回结果作为业务对象,可以在数据表的列业务对象的属性之间映射查询结果
    support包包含了coreobject包支持类,例如,提供异常转换功能的SQLException类
  • dataSource4个属性
    ( 在以下的dataSource4个属性applicationContext.xml中完成配置 )

    属性名含义
    driverClassName使用驱动名词,对应驱动JAR包中工的Driver类
    如 :<property name=“driverClassNamevalue=“com.mysql.jdbc.Driver”/>
    url数据源所在地址
    如 :<property name=“urlvalue=“jdbc:mysql://localhost:3306/spring”/>
    username访问数据库的用户名
    如: <property name=“username” value=“root”/>
    password访问数据库的密码
    如 : <property name=“password” value=“root”/>
  • Srping JDBC配置的 “配置模板” / 例子
    Spring JDBC要添 JAR包 : (配置JAR包)
    Spring的核心JAR包

    Spring JDBC开发所需JARmysql数据库的驱动JAR包 (mysql-connector-java.jar) 、Srpring的JDBC的JAR包 (spring-jdbc.jar) 、Spring事务处理的JAR包(spring-tx.jar)。

    在这里插入图片描述

    获取spring框架基本核心jar包
    获取Spring JDBC 开发需要的jar包
    jar包 / maven( 依赖 ) 下载( 可自行按需下载JAR )
    ps :
    如有报错版本问题,可看情况判断是否需要更换JAR版本


    applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--
①该配置文件中可添加、配置管理Bean
②可配置Spring AOP (AspectJ等)的配置信息
③当然也可以配置Spring JDBC等的配置信息
--><!-- 1.配置数据源 (与Spring JDBC中的dataSource模块有关)   -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据库驱动   --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- url   --><property name="url" value="jdbc:mysql://localhost:3306/spring"/><!-- 用户名   --><property name="username" value="root"/><!-- 密码   --><property name="password" value="root"/>
</bean><!--  2.配置JDBC模板 / 配置JdbcTemplate (与Spring JDBC中的core模块有关)  -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--  默认必须使用数据源 --><property name="dataSource" ref="dataSource"/>
</bean></beans>

在上述applicationContext.xml中,定义了 3个Bean,分别是 dataSourejdbcTemplate需要注入类Bean
其中 dataSource 对应 的org.springframework.jdbc.datasource. DriverManagerDataSource 类用于对数据源进行配置
jdbcTemplate 对应的org.springframework.jdbc.core. JdbcTemplate 类用于定义了JdbcTemplate的相关配置。

dataSource4个属性,需要根据数据库类型或者机器配置的不同设置相应的属性值。例如果数据库类型不同需要更改驱动名称;如果数据库不在本地,则需要将地址中的 localhost 替换成相应的主机IP;如果修改过MySQL数据库的端口号(默认为3306),则需要加上修改后的端口号,如果没修改,则端口号可以省略。

3.JdbcTemplate类的“常用方法”

JdbcTemplate类中,提供了大量的更新查询数据库方法,我们就是使用这些方法操作数据库的。

execute( ):直接执行“sql语句”,没有返回值
  • execute (String sql) 方法 : 执行指定的 SQL 语句。该方法是==没有返回值==的。

    例子如 :

    第一步、建好项目、导入所需依赖、打开doc窗口,指定确定存在数据库 (如: use spring)
    在这里插入图片描述

    在这里插入图片描述

    ​ 此时spring这个 “数据库” 中并没有 “数据表”。

    第二步、配置applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--该配置文件中可以配置Spring JDBC等的配置信息--><!-- 1.配置数据源 (与Spring JDBC中的dataSource模块有关)   --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据库驱动   --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- url   --><property name="url" value="jdbc:mysql://localhost:3306/spring"/><!-- 用户名   --><property name="username" value="root"/><!-- 密码   --><property name="password" value="root"/></bean><!--  2.配置JDBC模板 / 配置JdbcTemplate (与Spring JDBC中的core模块有关)  --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--  默认必须使用数据源 --><property name="dataSource" ref="dataSource"/></bean></beans>
    

    第三步、创建 JdbcTemplateTest测试类测试 JdbcTemplate类中的 execute( )方法的使用情况 :

    package com.myh.jdbc;import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.jdbc.core.JdbcTemplate;public class JdbcTemplateTest { //在该测试类中使用 execute()方法建数据库中的"表"public static void main(String[] args) {//加载配置文件ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/myh/jdbc/applicationContext.xml");//从IOC容器中获得 JdbcTemplate 实例JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");String sql = "create table student(" +"id int primary key auto_increment," +"username varchar(50)," +"hobby varchar(50))";/*execute()方法作用 : 执行sql语句*/jdbcTemplate.execute(sql);System.out.println("创建student表成功!");}
    }
    

    运行效果图
    doc窗口,输入 “show tables”命令,判断execute( )方法是否成功执行

在这里插入图片描述

控制台输入 如下 :

在这里插入图片描述

由两个效果图可知,程序 使用execute( String sql )方法执行的sql语句成功创建student表

update( ) :“增删改”,返回 “影响的行数”
  • update()方法 : 可以完成 插入更新删除数据 的操作,有返回值 : 返回影响的行数
    JdbcTemplate类中,提供了一系列的
    update( )方法,其常用方法如下所示 :
方法说明
int update( String sql )该方法是最简单update 方法重载形式,它直接执行传入的SQL语句,并 返回受影响行数
int update( PreparedStatementCreator psc )该方法执行PreparedStatementCreator返回的语句,然后返回受影响的行数
int update( String sql,PreparedStatementSetter )该方法通过PreparedStatementSetter设置SQL语句中参数,并返回受影响的行数
int update( String sql,Object…args )
★★★★★ ( 常用 )
该方法 使用Object…设置SQL语句中参数要求参数不能为NULL,并 返回受影响的行数
将设置的参数填充到占位符?中

update( ) 方法例子 :进行“增删改”操作。
Student.java

package com.myh.jdbc;public class Student {private Integer id; //学生idprivate String username; //用户名private String hobby;/*getter/setter方法*/public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}//重写toString()方法@Overridepublic String toString() {return "Student{" +"id=" + id +", username='" + username + '\'' +", hobby='" + hobby + '\'' +'}';}
}

StudentDao.java (接口) :

package com.myh.jdbc;public interface StudentDao {  //在该接口中定义“添加”、“更新”、“删除”的Student的方法//添加public int addStudent(Student student);//更新public int updateStudent(Student student);//删除public int deleteStudent(int id);
}

StudentDaoImpl.java实现类

package com.myh.jdbc;import org.springframework.jdbc.core.JdbcTemplate;
public class StudentDaoImpl implements StudentDao{ //该类为StudentDao接口的"实现类"//声明JdbcTemplate属性private JdbcTemplate jdbcTemplate;//为JdbcTemplate属性 添加setter方法public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}/**添加*/@Overridepublic int addStudent(Student student) {/*sql语句,此处的占位符?通过下面的Object参数进行填充*/String sql = "insert into student(username,hobby) values(?,?)";//定义数组来存储sql语句中的参数 (将Student类中存储的数组放进数组中)Object[] obj = new Object[]{student.getUsername(),student.getHobby()};//通过 update(String sql)执行操作,返回值为: sql语句影响的行数int num = this.jdbcTemplate.update(sql,obj); //返回sql语句影响的行数return num;}/*** 更新*/@Overridepublic int updateStudent(Student student) {String sql = "update student set username = ?,hobby = ? where id = ?";//定义要用在update()方法中的参数Object[] params = new Object[]{student.getUsername(), student.getHobby(), student.getId()};int num = this.jdbcTemplate.update(sql, params);return num;}/*** 删除*/@Overridepublic int deleteStudent(int id) {String sql = "delete from student where id = ?";//执行删除操作,返回影响的行数int num = this.jdbcTemplate.update(sql, id);return num;}
}

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--该配置文件中可以配置Spring JDBC等的配置信息--><!-- 1.配置数据源 (与Spring JDBC中的dataSource模块有关)   --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据库驱动   --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- url   --><property name="url" value="jdbc:mysql://localhost:3306/spring"/><!-- 用户名   --><property name="username" value="root"/><!-- 密码   --><property name="password" value="root"/></bean><!--  2.配置JDBC模板 / 配置JdbcTemplate (与Spring JDBC中的core模块有关)  --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--  默认必须使用数据源 --><property name="dataSource" ref="dataSource"/></bean><!--定义一个id 为"studentDao" 的Bean,该Bean用于将"jdbcTemplate"类注入到"studentDao"这个实例中,因为实例中要用到该对象--><bean id="studentDao" class="com.myh.jdbc.StudentDaoImpl"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean></beans>

JdbcTemplateTest.java (测试类)

package com.myh.jdbc;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;public class JdbcTemplateTest { //在该测试类中使用 execute()方法建数据库中的"表"/*** 进行Junit测试*/@Testpublic void JunitTest() {//加载配置文件ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/myh/jdbc/applicationContext.xml");//从IOC容器中获得 JdbcTemplate 实例JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");/*execute()方法作用 : 执行sql语句*/jdbcTemplate.execute("select * from tb_user");System.out.println("数据查询成功!");}/*** 添加*/@Test //junit4单元测试public void addStudentTest() {//加载配置文件ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/myh/jdbc/applicationContext.xml");//获取StudentDao实例StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDao");//创建Student对象,往其中添加数据Student student = new Student();student.setUsername("张三");student.setHobby("打篮球");//添加int num = studentDao.addStudent(student);if (num > 0) {System.out.println("成功插入了" + num + "条数据!");} else {System.out.println("插入操作执行失败!");}}/*** 更新(修改)*/@Testpublic void updateStudentTest() {//加载配置文件ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/myh/jdbc/applicationContext.xml");//获取StudentDao实例StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDao");//创建Student对象,往其中添加数据Student student = new Student();student.setId(1);student.setUsername("小明");student.setHobby("踢足球");//更新(修改)int num = studentDao.updateStudent(student);if (num > 0) {System.out.println("成功修改了" + num + "条数据!");} else {System.out.println("修改操作执行失败!");}}/*** 删除*/@Testpublic void deleteStudentTest() {//加载配置文件ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/myh/jdbc/applicationContext.xml");//获取StudentDao实例StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDao");//删除int num = studentDao.deleteStudent(1);if (num > 0) {System.out.println("成功删除了" + num + "条数据!");} else {System.out.println("删除操作执行失败!");}}
}
query( ) : “查询”,返回 “T类型 / List类型” 的结果
  • query( ) : 数据库中的数据进行查询操作
    JdbcTemplate类中还提供了大量的query( )方法来处理各种对数据库表查询操作

    方法说明
    List<T> query ( String sql , RowMapper rowMapper)
    ★★★★★ ( 常用 )
    执行String类型参数提供SQL语句,并通过 RowMapper 返回一个List类型结果
    :
    可用于查询所有数据。(★★★)
    List<T> query ( String sql , PearesSatementSetter pss , RowMapper rowMapper)根据String 类型参数提供SQL语句创建 PreparedStatement对象,通过RowMapper结果 / 结果集返回到List中。
    List<T> query ( String sql , Objecr[ ] args , RowMapper rowMapper )使用Obiect[ ]的值来设置SQL语句中的参数值,采用 RowMapper回调方法可以直接返回List类型数值
    T queryForObject ( String sql , RowMapper rowMapper ,
    Object… args)
    ★★★★★ ( 常用 )
    args参数绑定SQL语句中,并通过 RowMapper 返回一个Object类型单行记录
    :
    用于“根据指定id查询数据。(★★★)
    List<T> queryForList ( String sql , Object[ ] args , class<T> )该方法可以 返回多行数据结果, 但必须是返回列表elementType参数返回的是 List元素类型
  • query( ) 方法例子 :返回 “T类型 / List类型” 的结果 :

    Student.java

    package com.myh.jdbc;public class Student {private Integer id; //学生idprivate String username; //用户名private String hobby;/*getter/setter方法*/public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}//重写toString()方法@Overridepublic String toString() {return "Student{" +"id=" + id +", username='" + username + '\'' +", hobby='" + hobby + '\'' +'}';}
    }
    

    StudentDao.java (接口)

    package com.myh.jdbc;import java.util.List;public interface StudentDao { //根据id查询public Student findStudentById(int id);//查询所有public List<Student> findAllStudent();
    }
    

    StudentDaoImpl.java (实现类)

    package com.myh.jdbc;import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;import java.util.List;public class StudentDaoImpl implements StudentDao{ //该类为StudentDao接口的"实现类"/***  根据id查询 :*  用queryForObject ( String sql , RowMapper rowMapper , Object...args) 这个方法来进行“根据id”查询数据*  该方法 : 将args参数绑定到sql语句中,且通过 RowMapper 返回一个Object类型的“单行记录”。*/@Overridepublic Student findStudentById(int id) {//sql语句String sql = "select * from student where id = ?";//创建一个BeanPropertyRowMapper对象RowMapper<Student> rowMapper = new BeanPropertyRowMapper<Student>(Student.class);//调用query()方法查询数据库中的数据Student student = this.jdbcTemplate.queryForObject(sql, rowMapper, id); //返回值为一个return student;
    }/*** 查询所有*/@Overridepublic List<Student> findAllStudent() {//sql语句String sql = "select * from student";//创建 BeanPropertyRowMapper 对象RowMapper<Student> rowMapper = new BeanPropertyRowMapper<Student>(Student.class);List<Student> students = this.jdbcTemplate.query(sql, rowMapper); //返回值为list集合,该集合中存储一个或多个Student类数据return students;}
    }
    

    applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--该配置文件中可以配置Spring JDBC等的配置信息--><!-- 1.配置数据源 (与Spring JDBC中的dataSource模块有关)   --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据库驱动   --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- url   --><property name="url" value="jdbc:mysql://localhost:3306/spring"/><!-- 用户名   --><property name="username" value="root"/><!-- 密码   --><property name="password" value="root"/></bean><!--  2.配置JDBC模板 / 配置JdbcTemplate (与Spring JDBC中的core模块有关)  --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--  默认必须使用数据源 --><property name="dataSource" ref="dataSource"/></bean><!--定义一个id 为"studentDao" 的Bean,该Bean用于将"jdbcTemplate"类注入到"studentDao"这个实例中,因为实例中要用到该对象--><bean id="studentDao" class="com.myh.jdbc.StudentDaoImpl"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean></beans>

JdbcTemplateTest.java (测试类)

package com.myh.jdbc;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.jdbc.core.JdbcTemplate;
import java.util.Iterator;
import java.util.List;public class JdbcTemplateTest { /*** 根据id来查询数据*/@Testpublic void findStudentByIdTest() {//加载配置文件ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/myh/jdbc/applicationContext.xml");//获取StudentDao实例StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDao");//执行 findStudentById()方法Student student = studentDao.findStudentById(1);System.out.println(student);}/*** 查询所有数据*/@Testpublic void findAllStudentTest() {//加载配置文件ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/myh/jdbc/applicationContext.xml");//获取StudentDao实例StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDao");//执行 findAllStudent()方法List<Student> allStudent = studentDao.findAllStudent();
//使用“集合”的“迭代器”遍历集合中数据Iterator<Student> iterator = allStudent.iterator();
while (iterator.hasNext()) {Student next = iterator.next();System.out.println(next);}}
}

相关文章:

Spring | Spring的“数据库开发“ (Srping JDBC)

目录&#xff1a; Spring JDBC1.Spring JDBC的核心类 ( JdbcTemplate类 )2.Srping JDBC 的配置3.JdbcTemplate类的“常用方法”execute( )&#xff1a;直接执行“sql语句”&#xff0c;没有返回值update( ) &#xff1a;“增删改”&#xff0c;返回 “影响的行数”query( ) : “…...

面试八股文(2)

文章目录 1.ArrayList和LinkedList区别2.HashMap和HashTable区别3.线程的创建方式4.Java中异常处理5.Java序列化中某些字段不想进行序列化&#xff1f;6.Java序列化7.静态方法和实例方法8.List、Set、Map三者区别9.ArrayList和Vector区别10.HashMap和HashSet区别 1.ArrayList和…...

记elasticsearch CPU负载100%问题

记elasticsearch CPU负载100%问题 环境&#xff1a;问题表现&#xff1a;初步排查&#xff1a;日志查询hot_thread 深入查询当前elasticsearch正在运行的Task查看Task详情解决问题对导致问题的原因的几个猜测问题复现&#xff1a;导致问题的原因。json导入规则问题json导入规则…...

回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&#xff09; 目录 回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&…...

PyTorch、NCNN、CV::Mat三者张量的shape

目录 一、PyTorch二、NCNN三、CV::Mat 一、PyTorch 在 PyTorch 中&#xff0c;张量&#xff08;Tensor&#xff09;的形状通常按照 (N, C, H, W) 的顺序排列&#xff0c;其中&#xff1a; N 是批量大小&#xff08;batch size&#xff09; C 是通道数&#xff08;channel numb…...

社交平台内容创作未来会有哪些方向?

内容为王的时代下&#xff0c;企业如果想要通过社交平台占据用户心智&#xff0c;可以找到适合自己的内容营销策略&#xff0c;好的内容能够与消费者建立信任关系&#xff0c;今天 媒介盒子就来和大家聊聊&#xff1a;社交平台内容创作的方向。 一、 内容逐渐细分 相比于原来…...

MySQL温故篇(一)SQL语句基础

一、SQL语句基础 1、SQL语言分类 DDL&#xff1a;数据定义语言 DCL&#xff1a;数据控制语言 DML&#xff1a;数据操作语言 DQL&#xff1a;数据的查询语言 2、数据类型 3、字符类型 char(11) &#xff1a; 定长 的字符串类型,在存储字符串时&#xff0c;最大字符长度11个&a…...

C 检查小端存储还是大端

#include <stdio.h>int main() {unsigned int i 1;char *c (char*)&i;if (*c) printf("小端字节序\n");elseprintf("大端字节序\n");return 0; }该程序就是利用了强转舍弃 我们首先定义了一个无符号整数i并将其初始化为1。然后&#xff0c;…...

【ETOJ P1021】树的遍历 题解(有向图+深度优先搜索+广度优先搜索)

题目描述 给定一棵大小为 n n n&#xff0c;根为 1 1 1 的树&#xff0c;求出其按照 dfs 和 bfs 进行遍历时的顺序。 请将所有出点按照编号从小到大排序后进行遍历。 dfs 为深度优先搜索&#xff0c;bfs 为宽度优先搜索。 输入格式 一个整数 n n n&#xff0c;表示点的…...

红队渗透靶机:LEMONSQUEEZY: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录扫描 1、dirsearch 2、gobuster WEB phpmyadmin wordpress wpscan 登录wordpress 登录phpmyadmin 命令执行 反弹shell 提权 get user.txt 信息收集 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~…...

【Servlet】——Servlet API 详解

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Servlet】 本专栏旨在分享学习Servlet的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、HttpServlet二、Htt…...

oracle主库增加redo组数

redo log&#xff08;重做日志&#xff09;&#xff1a; 重做日志&#xff1a;简单来说就是&#xff0c;将oracle数据库的DML、DDL&#xff08;数据库操作语言&#xff0c;数据库定义i语言&#xff09;操作记录在日志中&#xff0c;方便恢复及备库使用&#xff0c;以组的方式管…...

lua只读表

参考《programming in lua》13.4.5中&#xff0c;详细介绍了只读表的用法。建立一个函数&#xff0c;传入一个table&#xff0c;传出一个代理table&#xff0c;其__index指向传入的table&#xff0c;__newIndex直接报error即可&#xff1a; --输入一个table&#xff0c;输出一…...

探索深度学习的边界:使用 TensorFlow 实现高效空洞卷积(Atrous Convolution)的全面指南

空洞卷积&#xff08;Atrous Convolution&#xff09;&#xff0c;在 TensorFlow 中通过 tf.nn.atrous_conv2d 函数实现&#xff0c;是一种强大的工具&#xff0c;用于增强卷积神经网络的功能&#xff0c;特别是在处理图像和视觉识别任务时。这种方法的核心在于它允许网络以更高…...

HarmonyOS案例:摇杆游戏

本案例主要演示如何通过一系列的动画效果以及运算实现摇杆控制组件同步运动的功能&#xff0c;界面简陋无需在意。 欢迎大家的阅读和评价&#xff0c;也欢迎大佬们批评、指正&#xff0c;我将继续努力&#xff0c;奉上更加专业的、高效的代码案例。 import curves from ohos.c…...

Elasticsearch:构建自定义分析器指南

在本博客中&#xff0c;我们将介绍不同的内置字符过滤器、分词器和分词过滤器&#xff0c;以及如何创建适合我们需求的自定义分析器。更多关于分析器的知识&#xff0c;请详细阅读文章&#xff1a; 开始使用 Elasticsearch &#xff08;3&#xff09; Elasticsearch: analyzer…...

Git系列---远程操作

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 引用 1.理解分布式版本控制…...

kafka客户端生产者消费者kafka可视化工具(可生产和消费消息)

点击下载《kafka客户端生产者消费者kafka可视化工具&#xff08;可生产和消费消息&#xff09;》 1. 前言 因在工作中经常有用到kafka做消息的收发&#xff0c;每次调试过程中&#xff0c;经常需要查看接收的消息内容以及人为发送消息&#xff0c;从网上搜寻了一下&#xff0…...

【从0上手Cornerstone3D】如何使用CornerstoneTools中的工具之工具介绍

简单介绍一下在Cornerstone中什么是工具&#xff0c;工具是一个未实例化的类&#xff0c;它至少实现了BaseTool接口。 如果我们想要在我们的代码中使用一个工具&#xff0c;则必须实现以下两个步骤&#xff1a; 使用Cornerstone的顶层addTool函数添加未实例化的工具 将工具添…...

02-Java抽象工厂模式 ( Abstract Factory Pattern )

抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是围绕一个超级工厂创建其他工厂 该超级工厂又称为其他工厂的工厂 在抽象工厂模式中&#xff0c;接口是负责创建一个相关对象的工厂&#xff0c;不需要显式指定它们的类 每个生成的工厂都能按照工厂模式提供对象 …...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...

如何通过git命令查看项目连接的仓库地址?

要通过 Git 命令查看项目连接的仓库地址&#xff0c;您可以使用以下几种方法&#xff1a; 1. 查看所有远程仓库地址 使用 git remote -v 命令&#xff0c;它会显示项目中配置的所有远程仓库及其对应的 URL&#xff1a; git remote -v输出示例&#xff1a; origin https://…...