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

秒鲨后端之MyBatis【1】环境的搭建和核心配置文件详解

别忘了请点个赞+收藏+关注支持一下博主喵!!!! ! !

Mybatis简介

MyBatis历史

  • MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github
  • iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

MyBatis特性

  1. MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
  2. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
  3. MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录
  4. MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架

MyBatis下载

  • MyBatis下载地址
  • 在这里插入图片描述

和其它持久化层技术对比

  • JDBC
  • SQL 夹杂在Java代码中耦合度高,导致硬编码内伤
    • 维护不易且实际开发需求中 SQL 有变化,频繁修改的情况多见
    • 代码冗长,开发效率低
  • Hibernate 和 JPA
  • 操作简便,开发效率高
    • 程序中的长难复杂 SQL 需要绕过框架
    • 内部自动生产的 SQL,不容易做特殊优化
    • 基于全映射的全自动框架,大量字段的 POJO 进行部分映射时比较困难。
    • 反射操作太多,导致数据库性能下降
  • MyBatis
  • 轻量级,性能出色
    • SQL 和 Java 编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据
    • 开发效率稍逊于HIbernate,但是完全能够接受

搭建MyBatis

开发环境

  • IDE:idea 2019.2
  • 构建工具:maven 3.5.4
  • MySQL版本:MySQL 5.7
  • MyBatis版本:MyBatis 3.5.7

创建maven工程

  • 打包方式:jar

  • 引入依赖

    <dependencies><!-- Mybatis核心 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!-- junit测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.3</version></dependency>
    </dependencies>
    

创建MyBatis的核心配置文件

习惯上命名为mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合Spring之后,这个配置文件可以省略,所以大家操作时可以直接复制、粘贴。
核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息
核心配置文件存放的位置是src/main/resources目录下

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration  
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-config.dtd">  
<configuration>  <!--设置连接数据库的环境, localhost后填表名-->  <environments default="development">  <environment id="development">  <transactionManager type="JDBC"/>  <dataSource type="POOLED">  <property name="driver" value="org.postgresql.Driver"/><property name="url" value="jdbc:postgresql://localhost:5432/postgres"/><property name="username" value="postgres"/><property name="password" value="aaa53557860"/></dataSource>  </environment>  </environments>  <!--引入映射文件-->  <mappers>  <!--java是以包的形式,故全类名为.而resources是目录的形式,故全类名为路径/--><mapper resource="mappers/UserMapper.xml"/>  </mappers>  
</configuration>

创建mapper接口

MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类

package com.atguigu.mybatis.mapper;  public interface UserMapper {  /*MyBatis面向接口编程的两个一致:1. 映射文件的namespace要和mapper接口的全类名保持一致2. 映射文件中SQL语句的id要和mapper接口中的方法名一致即:表--实体类--mapper接口--映射文件*//*在这里声明各类sql功能函数,再到UserMapper.xml文件写sql语句*//*添加用户信息*/ int insertUser();  
}

创建MyBatis的映射文件

  • 相关概念:ORM(Object Relationship Mapping)对象关系映射。
  • 对象:Java的实体类对象
    • 关系:关系型数据库
    • 映射:二者之间的对应关系
Java概念数据库概念
属性字段/列
对象记录/行
  • 映射文件的命名规则
  • 表所对应的实体类的类名+Mapper.xml
    • 例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapper.xml
    • 因此一个映射文件对应一个实体类,对应一张表的操作
    • MyBatis映射文件用于编写SQL,访问以及操作表中的数据
    • MyBatis映射文件存放的位置是src/main/resources/mappers目录下
  • MyBatis中可以面向接口操作数据,要保证两个一致
  • mapper接口的全类名和映射文件的命名空间(namespace)保持一致
    • mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致
<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper  
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:名称空间,指定为接口的全类名-->
<mapper namespace="com.atguigu.mybatis.mapper.UserMapper"> <!--SQL语句写在xml映射文件中--><!--int insertUser()--><!--这样调用mapper接口中的方法就可以根据mapper接口的全类名去匹配到这个xml映射文件,然后再根据我们调用的方法名来匹配到咱们的SQL语句--><!--输入<可以看到sql的各种关键字如select,insert等等-->
<!--int insertUser() 
!注意标签为要执行的关键字操作,如下是insert快捷方式为输入<insert后enter,写上函数方法名后,再在末尾加上>后自动补全标签,同时光标自动置于中间位置,供输入sql语句
-->  <insert id="insertUser"><!--这里要遵循不同的SQL语法--> insert into t_user (username,password,email) values ('admin','123456','admin@atguigu.com')</insert>  
</mapper>

通过junit测试功能

  • SqlSession:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)
  • SqlSessionFactory:是“生产”SqlSession的“工厂”
  • 工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象
public class UserMapperTest {@Testpublic void testInsertUser() throws IOException {//读取MyBatis的核心配置文件InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//获取SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);//获取sqlSession,此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务//SqlSession sqlSession = sqlSessionFactory.openSession();//创建SqlSession对象,设置参数为true,此时通过SqlSession对象所操作的sql都会自动提交  SqlSession sqlSession = sqlSessionFactory.openSession(true);//通过代理模式创建UserMapper接口的代理实现类对象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//调用UserMapper接口中的方法,就可以根据UserMapper的全类名匹配元素文件,通过调用的方法名匹配映射文件中的SQL标签,并执行标签中的SQL语句int result = userMapper.insertUser();//提交事务,没设置true的话要如下手动提交事务//sqlSession.commit();System.out.println("result:" + result);}
}
  • 此时需要手动提交事务,如果要自动提交事务,则在获取sqlSession对象时,使用SqlSession sqlSession = sqlSessionFactory.openSession(true);,传入一个Boolean类型的参数,值为true,这样就可以自动提交
  • 注意,以上是insert方法的测试函数testInsertUser(),如果要写(测试)其他的方法,要照着上面重新写一遍,注意一些函数名改一下即可。

加入log4j日志功能

  1. 加入依赖

    <!-- log4j日志 -->
    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
    </dependency>
    
  2. 加入log4j的配置文件

    • log4j的配置文件名(固定的,大多数日志的配置文件名字都是固定的)为log4j.xml,存放的位置是src/main/resources目录下
    • 日志的级别:FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试) 从左到右打印的内容越来越详细,当为日志配置级别如时,及设置打印等级大于等于debug级别的日志即DEBUG,INFO,WARN,ERROR,FATAL。
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="UTF-8" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" /></layout></appender><logger name="java.sql"><level value="debug" /></logger><logger name="org.apache.ibatis"><level value="info" /></logger><root><level value="debug" /><appender-ref ref="STDOUT" /></root>
    </log4j:configuration>
    

运行之前的juint-test测试java文件:打印了我们设置的三个日志

在这里插入图片描述

核心配置文件详解

MyBatis核心配置文件中的标签必须按照固定的顺序(有的标签可以不写,但顺序一定不能乱):
properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers

自己创建的(resources下)properties文件长这样:(为了区分当引入多个properties的键的重名问题,可以加上jdbc-properties方法.driver如jdbc.driver这样来区分)可以通过下面的方式直接引入,而无需按照之前的方式填driver,url,username,password,只需要按照接下来的如${jdbc.driver}一样填即可

在这里插入图片描述

<?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文件,此时就可以${属性名}的方式访问属性值--><properties resource="jdbc.properties"></properties><settings><!--将表中字段的下划线自动转换为驼峰--><setting name="mapUnderscoreToCamelCase" value="true"/><!--开启延迟加载--><setting name="lazyLoadingEnabled" value="true"/></settings><typeAliases><!--typeAlias:设置某个具体的类型的别名属性:type:需要设置别名的类型的全类名alias:设置此类型的别名,且别名不区分大小写。若不设置此属性,该类型拥有默认的别名,即类名如下面就为User以下就是以com.atguigu.mybatis.pojo。User数据库类--><!--<typeAlias type="com.atguigu.mybatis.pojo.User"></typeAlias>--><!--这里就实现了以类名[称为类型别名]User代替冗长的全类名com.atguigu.mybatis.pojo.User(虽然可以不设置,默认就可以为User--><!--<typeAlias type="com.atguigu.mybatis.pojo.User" alias="User"></typeAlias>--><!--以包为单位,设置改包下所有的类型都拥有默认的别名(通常用这个),即类名且不区分大小写--><packagename="com.atguigu.mybatis.pojo"/></typeAliases><!--environments:设置多个连接数据库的环境,就是在这个标签内可以设置多个environment(标签),里面可以各不相同属性:default:设置默认使用的环境的id--><environments default="mysql_test"><!--environment:设置具体的连接数据库的环境信息属性:id:表示连接数据库的环境的唯一标识,不能重复,可通过environments标签中的default设置某一个环境的id,表示默认使用的环境--><environment id="mysql_test"><!--transactionManager:设置事务管理方式属性:type:设置事务管理方式,type="JDBC|MANAGED"type="JDBC":设置当前环境的事务管理都必须手动处理(执行SQL时)type="MANAGED":设置事务被管理,例如spring中的AOP(执行SQL时)--><transactionManager type="JDBC"/><!--dataSource:设置数据源属性:type:设置数据源的类型,type="POOLED|UNPOOLED|JNDI"type="POOLED":使用数据库连接池,即会将创建的连接进行缓存,下次使用可以从缓存中直接获取,不需要重新创建type="UNPOOLED":不使用数据库连接池,即每次使用连接都需要重新创建type="JNDI":调用上下文中的数据源--><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><!-- <mapper resource="UserMapper.xml"/> --><!--以包为单位,将包下所有的映射文件引入核心配置文件注意:1. 此方式必须保证mapper接口和mapper映射文件必须在相同的包下2. mapper接口要和mapper映射文件的名字一致--><package name="com.atguigu.mybatis.mapper"/></mappers>
</configuration>

package包:类似于一层一层的目录的形式。

例如在resources下创建package:

新建目录,1.如果是这样创建:com.atguigu.mybatis,生成的是一个com.atguigu.mybatis.xml的文件,看着像包,然而右键用资源管理器点开,发现长这样:

只有一个目录,并不是包

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

而2.如果是com/atguigu/mybatis/xml,生成的也是一个com.atguigu.mybatis.xml的文件,但是长这样:

这才是真正的package的样子
在这里插入图片描述
在这里插入图片描述

别忘了请点个赞+收藏+关注支持一下博主喵!!!! ! !

相关文章:

秒鲨后端之MyBatis【1】环境的搭建和核心配置文件详解

​ 别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01;! ! ! Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff…...

编译原理复习---目标代码生成

适用于电子科技大学编译原理期末考试复习。 1. 目标代码 是目标机器的汇编代码或机器码&#xff0c;在本课程中指的是类似于汇编代码的一种形式&#xff0c;由一条条的指令构成目标代码。 抽象机指令格式&#xff1a;OP 目的操作数&#xff0c;源操作数。 我们要做的&…...

Winnows基础(2)

Target 了解常见端口及服务&#xff0c;熟练cmd命令&#xff0c;编写简单的 .bat 病毒程序。 Trail 常见服务及端口 80 web 80-89 可能是web 443 ssl心脏滴血漏洞以及一些web漏洞测试 445 smb 1433 mssql 1521 oracle 2082/2083 cpanel主机管理系统登陆&#xff08;国外用的…...

酒蒙子骰子小程序系统

酒蒙子流量变现小程序小游戏 后端tp8 前端uniapp 会员变现 分销推广 流量主 …...

网络安全防范

实践内容 学习总结 PDR&#xff0c;$$P^2$$DR安全模型。 防火墙&#xff08;Firewall&#xff09;&#xff1a; 网络访问控制机制&#xff0c;布置在网际间通信的唯一通道上。 不足&#xff1a;无法防护内部威胁&#xff0c;无法阻止非网络传播形式的病毒&#xff0c;安全策略…...

重拾设计模式--组合模式

文章目录 1 、组合模式&#xff08;Composite Pattern&#xff09;概述2. 组合模式的结构3. C 代码示例4. C示例代码25 .应用场景 1 、组合模式&#xff08;Composite Pattern&#xff09;概述 定义&#xff1a;组合模式是一种结构型设计模式&#xff0c;它允许你将对象组合成…...

红米Note 9 Pro5G刷小米官方系统

前言 刷机有2种方式&#xff1a;线刷 和 卡刷。 线刷 线刷&#xff1a;需要用电脑刷机工具&#xff0c;例如&#xff1a;XiaoMiFlash.exe&#xff0c;通过电脑和数据线对设备进行刷机。 适用场景&#xff1a; 系统损坏无法开机。恢复官方出厂固件。刷机失败导致软砖、硬砖的…...

渗透测试-前端加密分析之RSA加密登录(密钥来源服务器)

本文是高级前端加解密与验签实战的第6篇文章&#xff0c;本系列文章实验靶场为Yakit里自带的Vulinbox靶场&#xff0c;本文讲述的是绕过RSA加密来爆破登录。 分析 这里的代码跟上文的类似&#xff0c;但是加密的公钥是通过请求服务端获取的 http://127.0.0.1:8787/crypto/js/…...

踩准智能汽车+机器人两大风口,速腾聚创AI+机器人应用双线爆发

日前&#xff0c;RoboSense速腾聚创交出了一份亮眼的Q3财报。受到多重利好消息影响&#xff0c;其股价也应势连续大涨。截止12月9日发稿前&#xff0c;速腾聚创股价近一个月内累计涨幅已超88%。 财务数据方面&#xff0c;速腾聚创在今年前三季度实现总收入约11.3亿元&#xff0…...

YOLOv8全解析:高效、精准的目标检测新时代——创新架构与性能提升

目录 前言 一、模型介绍 二、网络结构 Backbone改进 特征增强网络(neck) 检测头(head) 其它部分 三、Loss计算 四、性能表现 五、YOLOv8使用详解 添加模型 其它部分 创建数据集 数据标注 模型训练 模型预测 六、YOLOv8总结 前言 YOLO&#xff08;You Only Lo…...

【Python】使用Selenium 操作浏览器 自动化测试 记录

【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等-CSDN博客文章浏览阅读389次。【自动化】Python SeleniumUtil 工具。https://blog.csdn.net/G971005287W/article/details/144565691?spm1001.2014.3001.5501【学习记录】浏览器指纹相关学习记录&am…...

GDPU软件工程习题(挖空版)

答案&#xff1a; GDPU软件工程24期末复习-CSDN博客 1.8 练习题 一、填空题 软件工程是一门综合性的交叉学科&#xff0c;它涉及计算机学科、( )学科、( )学科和( )学科。软件工程研究的主要内容是 ( )、( )、( ) 三个方…...

【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap

re:Invent 是全球云计算领域的顶级盛会&#xff0c;每年都会吸引来自世界各地的技术领袖、创新者和实践者汇聚一堂&#xff0c;分享最新的技术成果和创新实践&#xff0c;深圳 UG 作为亚马逊云科技技术社区的重要组成部分&#xff0c;将借助 re:Invent 的东风&#xff0c;举办此…...

Hutool工具包的常用工具类的使用介绍

前言 Hutool 是一个轻量级的 Java 工具类库&#xff0c;提供了非常丰富的工具方法&#xff0c;可以大大减少开发时的重复性工作。它的目标是让 Java 开发更简单、更高效。Hutool 提供了多种常用功能&#xff0c;以下是一些常用工具类的使用介绍&#xff1a; 1. StrUtil - 字符…...

C++简明教程(文章要求学过一点C语言)(2)

一、什么是代码文件&#xff08;头文件和源文件&#xff09; 想象你在写一篇很长的故事&#xff08;这就好比是一个 C 程序&#xff09;&#xff0c;你可能会把故事分成不同的章节&#xff08;类似于 C 中的文件&#xff09;。 头文件&#xff08;.h&#xff09;&#xff1a;它…...

防火墙技术与网络安全

网络已经成为了人类所构建的最丰富多彩的虚拟世界&#xff0c;网络的迅速发展&#xff0c;给我们的工作和学习生活带来了巨大的改变。我们通过网络获得信息&#xff0c;共享资源。如今&#xff0c;Internet遍布世界任何一个角落&#xff0c;并且欢迎任何一个人加入其中&#xf…...

html 中 表格和表单的关系与区别

在 HTML 中&#xff0c;表格 (<table>) 和表单 (<form>) 是两种常用于展示数据和收集用户输入的元素。它们具有不同的功能和结构。以下是关于这两者的详细介绍&#xff1a; 1. HTML 表格&#xff08;<table>&#xff09; 表格用于展示结构化的数据&#xf…...

基于Java的购物网站毕业论文

标题:基于 Java 的购物网站 内容:1.研究背景 1.1.国内研究进展 近年来&#xff0c;随着我国电子商务市场的不断发展&#xff0c;越来越多的企业开始涉足电子商务领域。其中&#xff0c;基于 Java 的购物网站成为了众多企业的首选。Java 语言具有跨平台、安全性高、稳定性好等优…...

Redis——缓存预热+缓存雪崩+缓存击穿+缓存穿透

文章目录 1、 缓存预热2、 缓存雪崩3、 缓存击穿4、 缓存穿透总结 1、 缓存预热 什么是预热&#xff1a; mysql加入新增100条记录&#xff0c;一般默认以mysql为准作为底单数据&#xff0c;如何同步给redis&#xff08;布隆过滤器&#xff09;这100条新数据。 为什么需要预热…...

wxWidgets使用wxStyledTextCtrl(Scintilla编辑器)的正确姿势

开发CuteMySQL/CuteSqlite开源客户端的时候&#xff0c;需要使用Scintilla编辑器&#xff0c;来高亮显示SQL语句&#xff0c;作为C/C领域最成熟稳定又小巧的开源编辑器&#xff0c;Scintilla提供了强大的功能&#xff0c;wxWidgets对Scintilla进行包装后的是控件类&#xff1a;…...

【ETCD】【实操篇(二)】如何从源码编译并在window上搭建etcd集群?

要在 Windows 上编译 etcd 及 etcdctl 工具&#xff0c;并使用 bat 脚本启动 etcd 集群&#xff0c;首先需要准备好开发环境并确保依赖项正确安装。下面是从 etcd 3.5 源码开始编译和启动 etcd 集群的详细步骤&#xff1a; 目录 1. 安装 Go 环境2. 获取 etcd 源码3. 编译 etcd…...

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台V7000存储上共12块SAS机械硬盘&#xff08;其中1块是热备盘&#xff09;&#xff0c;组建了2组Mdisk&#xff0c;创建了一个pool。挂载在小型机上作为逻辑盘使用&#xff0c;小型机上安装的AIXSybase。 服务器存储故障&#xff1a; V7…...

冯诺依曼架构与哈佛架构的对比与应用

冯诺依曼架构&#xff08;Von Neumann Architecture&#xff09;&#xff0c;也称为 冯诺依曼模型&#xff0c;是由著名数学家和计算机科学家约翰冯诺依曼&#xff08;John von Neumann&#xff09;在1945年提出的。冯诺依曼架构为现代计算机奠定了基础&#xff0c;几乎所有现代…...

Hive其四,Hive的数据导出,案例展示,表类型介绍

目录 一、Hive的数据导出 1&#xff09;导出数据到本地目录 2&#xff09;导出到hdfs的目录下 3&#xff09;直接将结果导出到本地文件中 二、一个案例 三、表类型 1、表类型介绍 2、内部表和外部表转换 3、两种表的区别 4、练习 一、Hive的数据导出 数据导出的分类&…...

CMake function使用

在 CMake 中&#xff0c;function 用于定义一个可复用的代码块&#xff0c;可以在 CMake 脚本中多次调用。它类似于其他编程语言中的函数。函数内的变量默认是局部的&#xff0c;不会影响外部的变量&#xff0c;除非显式地使用 PARENT_SCOPE 来修改父级作用域中的变量。 基本语…...

【AI学习】Huggingface复刻Test-time Compute Scaling技术

OpenAI ChatGPT o1 背后的关键技术Test-time Compute Scaling&#xff0c;Huggingface实现并开源了&#xff01; Hugging Face 团队发布了一篇关于“开源模型中的推理阶段计算扩展”&#xff08;Test-time Compute Scaling&#xff09; 的研究文章。Hugging Face 团队通过复现…...

前端导出PDF的组件及方法

前端导出PDF的组件及方法 在Web应用程序中&#xff0c;导出PDF文件是一项常见的需求。无论是为了打印、分享还是存档&#xff0c;能够将网页内容转换为PDF格式都非常有用。幸运的是&#xff0c;前端开发者有多种方法和组件可以实现这一功能。在本文中&#xff0c;我们将详细介…...

Mac升级macOS 15 Sequoia后,无法ssh连接本地虚拟机

现象 macOS 15后&#xff0c;无法ssh连接本地启动的虚拟机&#xff0c;提示错误&#xff1a; No route to host&#xff0c;也ping不通。包括UTM、Parallels Desktop这两个虚拟机软件。之前都是没问题的&#xff0c;通过一些简单排查&#xff0c;目前没发现什么问题。 在虚拟…...

Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集MI-FGSM介绍背景算法原理 MI-FGSM代码实现MI-FGSM算法实现攻击效果 代码汇总mifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR10进行…...

linux 无网络安装mysql

下载地址 通过网盘分享的文件&#xff1a;mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz 链接: https://pan.baidu.com/s/1qm48pNfGYMqBGfoqT3hxPw?pwd0012 提取码: 0012 安装 解压 tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz mv /usr/mysql-5.7.33-linux-glibc2.1…...