SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
文章目录1.整合MyBatis1.需求分析2.数据库表设计3.数据库环境配置1.新建maven项目2.pom.xml 引入依赖3.application.yml 配置数据源4.Application.java 编写启动类5.测试6.配置类切换druid数据源7.测试数据源是否成功切换4.Mybatis基础配置1.编写映射表的bean2.MonsterMapper.java 编写mapper接口3.MonsterMapper.xml 编写mapper.xml实现mapper接口4.application.yml 扫描mapper.xml配置文件的位置5.测试5.MyBatis高级配置1.方式一在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置2.方式二直接在application.yml中配置6.继续编写Service层和Controller层1.MonsterService.java2.MonsterServiceImpl.java3.测试4.MonsterController.java5.测试6.解决时间问题7.完整文件目录2.整合MyBatis-Plus1.MyBatis-Plus基本介绍2.数据库表设计3.数据库环境配置1.创建maven项目2.pom.xml 导入依赖3.application.yml 配置数据源4.DruidDataSourceConfig.java 配置类切换druid数据源5.编写启动类Application.java测试运行4.MyBatis-Plus基础配置1.编写映射表的bean2.MonsterMapper.java 编写Mapper接口3.测试接口方法使用5.MyBatis-Plus高级配置application.yml 进行配置6.继续编写Service层和Controller层1.MonsterService.java2.MonsterServiceImpl.java3.测试4.细节说明5.MonsterController.java7.细节说明1.MapperScan 扫描包下的所有Mapper启动类配置注解2.TableName bean的类名与表名不一致时使用image-202403172009519713.MyBatis引入了哪些依赖8.MyBatisX快速开发1.安装插件2.使用方式1.挑一个带小鸟的方法2.直接alt Enter3.生成sql语句4.查看生成的方法5.点击左边的小鸟就可以直接跳转到指定方法或者xml9.完整文件目录10.MyBatis-Plus小结1.整合MyBatis1.需求分析2.数据库表设计CREATE DATABASE springboot_mybatis; use springboot_mybatis; CREATE TABLE monster ( id INT NOT NULL AUTO_INCREMENT, age INT NOT NULL, birthday DATE DEFAULT NULL, email VARCHAR(255) DEFAULT NULL, gender char(1) DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, salary DOUBLE NOT NULL, PRIMARY KEY (id) ); SELECT * FROM monster; insert into monster values(null, 20, 2000-11-11, nmwsohu.com, 男, 牛魔王, 5000.88); insert into monster values(null, 10, 2011-11-11, bgjsohu.com, 女, 白骨精, 2000.00);3.数据库环境配置1.新建maven项目2.pom.xml 引入依赖!--导入springboot父工程-- parent artifactIdspring-boot-starter-parent/artifactId groupIdorg.springframework.boot/groupId version2.5.3/version /parent !--引入相关依赖-- dependencies !--常规依赖-- !--web场景启动器-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !--lombok-- dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency !--引入测试场景启动器-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency !--配置处理器-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-configuration-processor/artifactId optionaltrue/optional /dependency !--数据库配置-- !--引入data-jdbc数据源-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-jdbc/artifactId /dependency !--mysql依赖使用版本仲裁-- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId scoperuntime/scope /dependency !-- 引入 druid 依赖 -- dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.1.17/version /dependency !--MyBatis场景启动器-- dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version2.2.2/version /dependency /dependencies3.application.yml 配置数据源数据库名用户名密码驱动是mysql8的因为上面使用了版本仲裁server:port: 8080spring:datasource: #配置数据源url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSLfalseuseUnicodetruecharacterEncodingUTF-8username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver4.Application.java 编写启动类package com.sun.springboot.mybatis; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * author 孙显圣 * version 1.0 */ SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }5.测试package com.sun.springboot.mybatis; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ SpringBootTest public class ApplicationTest { //依赖注入 Resource private JdbcTemplate jdbcTemplate; Test public void t1() { //查看目前数据源 System.out.println(jdbcTemplate.getDataSource().getClass()); } }6.配置类切换druid数据源package com.sun.springboot.mybatis.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; import java.sql.SQLException; import java.util.Arrays; /** * author 孙显圣 * version 1.0 */ Configuration public class DruidDataSourceConfig { //注入一个德鲁伊数据源 ConfigurationProperties(spring.datasource) //读取yaml配置文件的参数获取数据源配置 Bean public DataSource dataSource() throws SQLException { DruidDataSource druidDataSource new DruidDataSource(); druidDataSource.setFilters(stat, wall); //开启sql监控 return druidDataSource; } //配置德鲁伊监控sql功能 Bean public ServletRegistrationBean statViewServlet() { StatViewServlet statViewServlet new StatViewServlet(); ServletRegistrationBeanStatViewServlet registrationBean new ServletRegistrationBean(statViewServlet, /druid/*); //配置登录监控页面用户名和密码 registrationBean.addInitParameter(loginUsername, root); registrationBean.addInitParameter(loginPassword, root); return registrationBean; } //配置webStatFilter Bean public FilterRegistrationBean webStatFilter() { WebStatFilter webStatFilter new WebStatFilter(); FilterRegistrationBeanWebStatFilter filterRegistrationBean new FilterRegistrationBean(webStatFilter); //默认对所有 URL 请求监控 filterRegistrationBean.setUrlPatterns(Arrays.asList(/*)); //排除 URL filterRegistrationBean.addInitParameter (exclusions, *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*); return filterRegistrationBean; } }7.测试数据源是否成功切换package com.sun.springboot.mybatis; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ SpringBootTest public class ApplicationTest { //依赖注入 Resource private JdbcTemplate jdbcTemplate; Test public void t1() { //查看目前数据源 System.out.println(jdbcTemplate.getDataSource().getClass()); } }4.Mybatis基础配置1.编写映射表的beanpackage com.sun.springboot.mybatis.bean; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; /** * author 孙显圣 * version 1.0 */ Data public class Monster { private Integer id; private Integer age; JsonFormat(patternyyyy-MM-dd HH:mm:ss,timezoneGMT8) private Date birthday; private String email; private String name; private String gender; private Double salary; }2.MonsterMapper.java 编写mapper接口使用注解注入容器package com.sun.springboot.mybatis.mapper;import com.sun.springboot.mybatis.bean.Monster;import org.apache.ibatis.annotations.Mapper;/**author 孙显圣version 1.0*/Mapper //将接口注入容器public interface MonsterMapper {public Monster getMonsterById(Integer id);}3.MonsterMapper.xml 编写mapper.xml实现mapper接口使用namespace指定要实现的接口?xml version1.0 encodingUTF-8 ? select * from monster where id #{id}4.application.yml 扫描mapper.xml配置文件的位置扫描类路径下mapper文件夹下的所有文件mybatis:#指定要扫描的mapper.xmlmapper-locations: classpath:mapper/*.xml5.测试package com.sun.springboot.mybatis; import com.sun.springboot.mybatis.bean.Monster; import com.sun.springboot.mybatis.mapper.MonsterMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ SpringBootTest public class ApplicationTest { //依赖注入 Resource private JdbcTemplate jdbcTemplate; //注意这里注入的是MonsterMapper的代理对象 Resource private MonsterMapper monsterMapper; Test public void t1() { //查看目前数据源 System.out.println(jdbcTemplate.getDataSource().getClass()); } Test public void t2() { //测试mybatis Monster monsterById monsterMapper.getMonsterById(1); System.out.println(monsterById); } }5.MyBatis高级配置1.方式一在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置2.方式二直接在application.yml中配置mybatis: #指定要扫描的mapper.xml mapper-locations: classpath:mapper/*.xml #配置类型别名包这样只要在这个包下的类型都可以简写 type-aliases-package: com/sun/springboot/mybatis/bean #输出日志 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl6.继续编写Service层和Controller层1.MonsterService.javapackage com.sun.springboot.mybatis.service; import com.sun.springboot.mybatis.bean.Monster; /** * author 孙显圣 * version 1.0 */ public interface MonsterService { public Monster getMonsterById(Integer id); }2.MonsterServiceImpl.javapackage com.sun.springboot.mybatis.service.Impl; import com.sun.springboot.mybatis.bean.Monster; import com.sun.springboot.mybatis.mapper.MonsterMapper; import com.sun.springboot.mybatis.service.MonsterService; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ Service public class MonsterServiceImpl implements MonsterService { Resource private MonsterMapper monsterMapper; //返回代理对象 Override public Monster getMonsterById(Integer id) { return monsterMapper.getMonsterById(id); } }3.测试package com.sun.springboot.mybatis; import com.sun.springboot.mybatis.bean.Monster; import com.sun.springboot.mybatis.mapper.MonsterMapper; import com.sun.springboot.mybatis.service.MonsterService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ SpringBootTest public class ApplicationTest { //依赖注入 Resource private MonsterService monsterService; Test public void getMonsterById() { Monster monsterById monsterService.getMonsterById(1); System.out.println(monsterById); } }4.MonsterController.javapackage com.sun.springboot.mybatis.Controller; import com.sun.springboot.mybatis.bean.Monster; import com.sun.springboot.mybatis.service.MonsterService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ Controller public class MonsterController { Resource private MonsterService monsterService; GetMapping(/getMonster/{id}) //路径参数的请求 ResponseBody //响应一个json public Monster getMonsterById(PathVariable(id) Integer id) { Monster monsterById monsterService.getMonsterById(id); return monsterById; } }5.测试6.解决时间问题7.完整文件目录2.整合MyBatis-Plus1.MyBatis-Plus基本介绍2.数据库表设计CREATE DATABASE springboot_mybatisplus; USE springboot_mybatisplus; CREATE TABLE monster ( id INT NOT NULL AUTO_INCREMENT, age INT NOT NULL, birthday DATE DEFAULT NULL, email VARCHAR(255) DEFAULT NULL, gender CHAR(1) DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, salary DOUBLE NOT NULL, PRIMARY KEY (id) ); SELECT * FROM monster; INSERT INTO monster VALUES(NULL, 20, 2000-11-11, xzjsohu.com, 男, 蝎 子 精 , 15000.88); INSERT INTO monster VALUES(NULL, 10, 2011-11-11, ytjsohu.com, 女, 玉 兔 精 , 18000.88);3.数据库环境配置1.创建maven项目2.pom.xml 导入依赖!--导入springboot父工程-- parent artifactIdspring-boot-starter-parent/artifactId groupIdorg.springframework.boot/groupId version2.5.3/version /parent !--引入相关依赖-- dependencies !--常规依赖-- !--web场景启动器-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !--lombok-- dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency !--引入测试场景启动器-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency !--配置处理器-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-configuration-processor/artifactId optionaltrue/optional /dependency !--数据库配置-- !--mysql依赖使用版本仲裁-- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId scoperuntime/scope /dependency !-- 引入 druid 依赖 -- dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.1.17/version /dependency !--引入MyBatis-Plus场景启动器会自动引入jdbc和MyBatis-- dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-boot-starter/artifactId version3.4.3/version /dependency /dependencies3.application.yml 配置数据源数据库名称用户名密码server:port: 8080spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springboot_mybatisplus?useSSLfalseuseUnicodetruecharacterEncodingUTF-8username: rootpassword: root4.DruidDataSourceConfig.java 配置类切换druid数据源package com.sun.springboot.mybatisplus.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; import java.sql.SQLException; import java.util.Arrays; /** * author 孙显圣 * version 1.0 */ Configuration public class DruidDataSourceConfig { //注入一个德鲁伊数据源 ConfigurationProperties(spring.datasource) //读取yaml配置文件的参数获取数据源配置 Bean public DataSource dataSource() throws SQLException { DruidDataSource druidDataSource new DruidDataSource(); druidDataSource.setFilters(stat, wall); //开启sql监控 return druidDataSource; } //配置德鲁伊监控sql功能 Bean public ServletRegistrationBean statViewServlet() { StatViewServlet statViewServlet new StatViewServlet(); ServletRegistrationBeanStatViewServlet registrationBean new ServletRegistrationBean(statViewServlet, /druid/*); //配置登录监控页面用户名和密码 registrationBean.addInitParameter(loginUsername, root); registrationBean.addInitParameter(loginPassword, root); return registrationBean; } //配置webStatFilter Bean public FilterRegistrationBean webStatFilter() { WebStatFilter webStatFilter new WebStatFilter(); FilterRegistrationBeanWebStatFilter filterRegistrationBean new FilterRegistrationBean(webStatFilter); //默认对所有 URL 请求监控 filterRegistrationBean.setUrlPatterns(Arrays.asList(/*)); //排除 URL filterRegistrationBean.addInitParameter (exclusions, *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*); return filterRegistrationBean; } }5.编写启动类Application.java测试运行package com.sun.springboot.mybatisplus; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * author 孙显圣 * version 1.0 */ SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }4.MyBatis-Plus基础配置1.编写映射表的beanpackage com.sun.springboot.mybatisplus.bean; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; /** * author 孙显圣 * version 1.0 */ Data public class Monster { private Integer id; private Integer age; JsonFormat(pattern yyyy-MM-dd HH:mm:ss, timezone GMT8) private Date birthday; private String email; private String name; private String gender; private Double salary; }2.MonsterMapper.java 编写Mapper接口package com.sun.springboot.mybatisplus.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sun.springboot.mybatisplus.bean.Monster; import org.apache.ibatis.annotations.Mapper; /** * author 孙显圣 * version 1.0 */ //直接继承BaseMapper接口 Mapper //注入容器 public interface MonsterMapper extends BaseMapperMonster { //如果提供的方法不够用再自定义方法 }3.测试接口方法使用package com.sun.springboot.mybatisplus; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.mapper.MonsterMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ SpringBootTest public class MonsterMapperTest { //注入针对Mapper接口的代理对象 Resource private MonsterMapper monsterMapper; Test public void t1() { Monster monster monsterMapper.selectById(1); System.out.println(monster); } }5.MyBatis-Plus高级配置application.yml 进行配置#进行mybatis-plus配置 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl6.继续编写Service层和Controller层1.MonsterService.javapackage com.sun.springboot.mybatisplus.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.mapper.MonsterMapper; import com.sun.springboot.mybatisplus.service.MonsterService; import org.springframework.stereotype.Service; /** * 这里 * author 孙显圣 * version 1.0 */ Service public class MonsterServiceImpl extends ServiceImplMonsterMapper, Monster implements MonsterService { //自定义方法实现 }2.MonsterServiceImpl.javapackage com.sun.springboot.mybatisplus.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.mapper.MonsterMapper; import com.sun.springboot.mybatisplus.service.MonsterService; import org.springframework.stereotype.Service; /** * 这里 * author 孙显圣 * version 1.0 */ Service public class MonsterServiceImpl extends ServiceImplMonsterMapper, Monster implements MonsterService { //自定义方法实现 }3.测试package com.sun.springboot.mybatisplus; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.mapper.MonsterMapper; import com.sun.springboot.mybatisplus.service.MonsterService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ SpringBootTest public class MonsterServiceTest { Resource private MonsterService monsterService; Test public void t1() { Monster byId monsterService.getById(2); System.out.println(byId); } }4.细节说明简单来说就是MonsterServiceImpl只需要实现MonsterService接口的方法可以调用IService接口的方法,也可以调用MonsterService接口的方法5.MonsterController.javapackage com.sun.springboot.mybatisplus.controller; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.service.MonsterService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; /** * author 孙显圣 * version 1.0 */ Controller public class MonsterController { Resource //注入的是MonsterServiceImpl的bean对象可以直接调用IService接口的方法 private MonsterService monsterService; GetMapping(/getMonster/{id}) ResponseBody public Monster getMonsterById(PathVariable(id) Integer id) { Monster byId monsterService.getById(id); return byId; } }7.细节说明1.MapperScan 扫描包下的所有Mapper启动类配置注解2.TableName bean的类名与表名不一致时使用3.MyBatis引入了哪些依赖8.MyBatisX快速开发1.安装插件2.使用方式1.挑一个带小鸟的方法2.直接alt Enter3.生成sql语句4.查看生成的方法5.点击左边的小鸟就可以直接跳转到指定方法或者xml9.完整文件目录10.MyBatis-Plus小结

相关新闻

Redis 缓存击穿防护策略

Redis 缓存击穿防护策略

Redis缓存击穿防护策略解析 在高并发系统中,缓存击穿是常见的性能瓶颈之一。当某个热点数据在缓存中过期,同时有大量请求涌入查询该数据,会导致请求直接穿透缓存,压垮数据库。如何有效防护Redis缓存击穿,成为提升系统…

2026/7/6 6:04:16 阅读更多 →
AI时代的认知抉择:答案变便宜之后,什么变昂贵?

AI时代的认知抉择:答案变便宜之后,什么变昂贵?

当我们谈论AI时,我们在谈论什么?是冷冰冰的算法,还是改变世界的新质生产力?在同元软控,我们选择了一种更纯粹的方式:原生拥抱,深度进化。【AI-ing 同元】系列专题,记录这场由内而外的…

2026/7/7 6:22:23 阅读更多 →
大数据领域数据中台的创新应用案例

大数据领域数据中台的创新应用案例

大数据领域数据中台的创新应用案例 关键词:数据中台、数据治理、数据服务、行业解决方案、数字化转型、数据资产、智能决策 摘要:本文深度解析数据中台在企业数字化转型中的创新应用,通过零售、金融、制造等行业的真实案例,揭示数据中台如何打破数据孤岛、构建统一数据资产…

2026/5/17 10:29:57 阅读更多 →

最新新闻

R语言实现COVID-19有效再生数R_t实时贝叶斯估算

R语言实现COVID-19有效再生数R_t实时贝叶斯估算

1. 项目概述:用R语言实时估算COVID-19有效再生数 $R_t$ 的完整复现指南你有没有在疫情高峰期刷到过那种“某地$R_t$跌破1.0”的新闻图?那个数字背后,不是拍脑袋的判断,而是一套严谨的统计推断框架。今天我要带你亲手用R语言&#…

2026/7/7 22:30:12 阅读更多 →
真实业务场景下的Python EDA实战框架

真实业务场景下的Python EDA实战框架

1. 这不是“教科书式”的EDA教程,而是一份我用三年时间在真实业务场景中反复打磨出来的实战手记你点开这个标题,大概率正面临这样几个现实困境:刚拿到一份销售数据表,字段有87列、23万行,但不知道从哪下手;…

2026/7/7 22:28:11 阅读更多 →
Squirrel-RIFE:3步实现专业级AI视频补帧,让老旧视频秒变流畅大片

Squirrel-RIFE:3步实现专业级AI视频补帧,让老旧视频秒变流畅大片

Squirrel-RIFE:3步实现专业级AI视频补帧,让老旧视频秒变流畅大片 【免费下载链接】Squirrel-RIFE 效果更好的补帧软件,显存占用更小,是DAIN速度的10-25倍,包含抽帧处理,去除动漫卡顿感 项目地址: https:/…

2026/7/7 22:28:11 阅读更多 →
VS Code本地AI编程工作流:用Caddy代理对接Ollama实现OpenAI兼容

VS Code本地AI编程工作流:用Caddy代理对接Ollama实现OpenAI兼容

1. 项目概述:这不是一个“插件更新修复帖”,而是一次对本地AI开发工作流底层逻辑的重新校准在VS Code里点下“Continue”插件的Continue按钮,结果弹出一个干净利落的404页面——路径不存在,服务未响应,模型调用直接卡死…

2026/7/7 22:28:11 阅读更多 →
Python面向对象设计实战:鸭子类型、协议与组合式架构

Python面向对象设计实战:鸭子类型、协议与组合式架构

1. 这不是又一本“类和对象”的入门课——它是一份你写Python时真正会翻的案头手册我带过几十个从零起步的Python学习小组,也给三年以上经验的工程师做过代码评审。每次聊到面向对象,总有人皱着眉头说:“我知道class怎么写,__init…

2026/7/7 22:26:11 阅读更多 →
Python对象序列化实战:Pickle原理、安全与生产级应用

Python对象序列化实战:Pickle原理、安全与生产级应用

1. 这不是“存个变量”那么简单:Pickle到底在解决什么真实问题?你写完一个训练好的机器学习模型,用model.fit(X_train, y_train)跑完,内存里那个model对象活得好好的——但关掉Python解释器,它就彻底消失了。下次想预测…

2026/7/7 22:26:11 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻