Java30:SpringBoot3
一SprintBoot3简介到目前为止已经学习了多种配置 Spring 程序的方式。但是无论使用 XML、注解、Java 配置类还是他们的混合用法你都会觉得配置文件过于复杂和繁琐让人头疼!SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot底层是 Spring)大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术!SpringBoot 的主要目标是:为所有 Spring 开发提供更快速、可广泛访问的入门体验。开箱即用设置合理的默认值但是也可以根据需求进行适当的调整提供一系列大型项目通用的非功能性程序(如嵌入式服务器、安全性、指标、运行检查等)约定大于配置甚本不需要主动编写配置类、也不需要 XML 配置文件。总结:简化开发简化配置简化整合简化部署简化监控简化运维。二快速入门程序步骤1创建工程并导入配置和依赖parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.0.5/version /parentdependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency步骤2创建启动类//SpringBootConfiguration 配置类 //EnableAutoConfiguration 自动加载配置 //ComponentScan 默认是当前类所在包 SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args);//自动创建ioc容器启动tomcat服务器软件 } }步骤3创建controllerRestController RequestMapping(boot) public class HelloController { GetMapping(hello) public String hello(){ return hello spring boot3; } }步骤4测试运行步骤3的main方法并在浏览器输入访问地址三统一配置管理1.说明SpringBoot 工程下进行统一的配置管理你想设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(application.properties 或application.yml)中!配置文件应该放置在 Spring Boot 工程的 src/main/resources 目录下。这是因为src/main/resources 目录是Spring Boot默认的类路径(classpath)配置文件会被自动加载并可供应用程序访问。2.properties实例步骤1在resources目录下创建配置文件application.properties#使用springboot提供的配置修改程序参数key是固定的 server.port80 server.servlet.context-path/zhangsan #自定义配置 zzx.info.namezhangsan zzx.info.age18步骤2创建项目并添加依赖parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.0.5/version /parentdependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency步骤3创建controllerpackage com.cn.boot.contrloller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(boot) public class HelloController { //读取配置文件并给属性赋值 Value(${zzx.info.name}) private String name; Value(${zzx.info.age}) private int age; GetMapping(hello) public String hello(){ return hello springboot3; } GetMapping(hello2) public String hello2(){ System.out.println(name); System.out.println(age); return hello2nameage; } }步骤4设置启动类package com.cn.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤5使用新的地址访问3.yaml实例yaml 语法说明a.数据结构用树形结构呈现通过缩进来表示层级b.连续的项目(集合)通过减号”。”来表示c.犍值结构里面的 key/value 对用冒号 ”:”来分隔。d. YAML 配置文件的扩展名是 yaml 或 ymlyaml配置文件# server.port80 # server.servlet.context-path/zhangsan #yaml 有层次可以继承的配置文件格式 server: port: 80 servlet: context-path: /boot # zzx.info.namezhangsan # zzx.info.age18 # zzx.info.usernameroot # zzx.info.password123456 zzx: info: name: zhangsan #key:空格值 age: 18 username: root password: 1234564.批量读取配置文件批量配置读取 ConfigurationProperties(prefix zzx.info)通用的前缀步骤1创建项目和导入依赖后创建yaml文件 application.yamlzzx: info: name: zhangsan age: 20 hobbies: - sing - jump - basketball - music步骤2创建实体类package com.cn.boot.pojo; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; /* * 读取配置文件方式1Valule * 直接在属性上添加即可 * Valuekey必须写全了 * Value只能读取单个值 * 批量配置读取 ConfigurationProperties(prefix zzx.info)通用的前缀 * 实体类 * 属性名等于最后一个key的值 * 优势1方便不用一个一个读取 * 优势2可以给集合类型赋值 * * */ Component Data ConfigurationProperties(prefix zzx.info) public class User { private String name; private int age; private ListString hobbies; }步骤3创建controller类package com.cn.boot.controller; import com.cn.boot.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(user) public class UserController { Autowired private User user; GetMapping(show) public User show(){ return user; } }步骤4创建启动类package com.cn.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤5测试5.多环境配置和激活多个yaml 文件格式 application-{key}.yaml激活多配置在application.yaml 加如下配置spring: profiles: active: test,dev #application的{key}值步骤1创建项目并导入依赖同上步骤2创建实体类同上步骤3创建controller类同上步骤4创建启动类同上步骤5创建多个yaml文件application-test.yamlzzx: info: name: zhangsantestapplication-dev.yamlzzx: info: age: 5application.yamlzzx: info: hobbies: - sing - jump - basketball - music spring: profiles: active: test,dev #激活外部配置 application-test|application-dev #外部配置的key和application key 重复外部覆盖内部步骤6测试四整合SpringMvc1.配置服务器端口号和根路径2.修改静态资源访问地址3.配置过滤器步骤1创建项目并添加依赖parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.0.5/version /parentdependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency步骤2创建启动器package com.cn.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤3创建controllerpackage com.cn.boot.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class UserController { GetMapping(hello) public String hello(){ return hello; } }步骤4创建applicaton.yaml 配置文件#配置端口号和根路径 server: port: 8081 servlet: context-path: /boot spring: web: resources: static-locations: classpath:/webapp #改变静态资源访问路径,默认为static文件夹步骤5创建配置类和过滤器实现类package com.cn.boot.config; import com.cn.boot.Intecepter.MyIntercetper; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; Configuration public class MvcConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyIntercetper()); } }package com.cn.boot.Intecepter; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; public class MyIntercetper implements HandlerInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(request request , response response , handler handler); return true; } }步骤6测试实现过滤器修改静态资源文件夹五整合Druid连接池整合druid连接池并查询所有雇员信息步骤1创建项目并导入依赖parent artifactIdspring-boot-starter-parent/artifactId groupIdorg.springframework.boot/groupId version3.0.5/version /parentdependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.28/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-3-starter/artifactId version1.2.20/version /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.28/version /dependency /dependencies步骤2创建启动器package com.cn.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤3创建实体类package com.cn.boot.pojo; import jdk.jfr.DataAmount; import lombok.Data; Data public class Employee { private int empId; private String empName; private Double empSalary; }步骤4创建contrloller类package com.cn.boot.controller; import com.cn.boot.pojo.Employee; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; RestController RequestMapping(emp) public class EmpController { Autowired private JdbcTemplate jdbcTemplate; GetMapping(list) public ListEmployee findAll(){ String sql select * from t_emp; ListEmployee query jdbcTemplate.query(sql, new BeanPropertyRowMapper(Employee.class)); return query; } }步骤5创建application.yaml配置文件spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/studb?useUnicodetruecharacterEncodingutf-8 server: port: 8082 servlet: context-path: /boot步骤6测试六整合Mybatis步骤1 创建项目并导入依赖parent artifactIdspring-boot-starter-parent/artifactId groupIdorg.springframework.boot/groupId version3.0.5/version /parent dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.28/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-3-starter/artifactId version1.2.20/version /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.28/version /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version3.0.1/version /dependency /dependencies步骤2在配置文件applicaiton.yaml中配置数据库连接信息及mybatis配置信息#druid配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/studb?useUnicodetruecharacterEncodingutf-8 #mybatis配置 #彻底抛弃mybatis-config.xml mybatis: mapper-locations: classpath:/mapper/*.xml #指定mapper.xml文件位置 type-aliases-package: com.cn.boot.pojo configuration: map-underscore-to-camel-case: true #启用驼峰映射 auto-mapping-behavior: full #启用完全自动映射行为 log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl步骤3创建实体类及对应的数据库表package com.cn.boot.pojo; import lombok.Data; Data public class Employee { private int empId; private String empName; private Double empSalary; }create table t_emp(emp_id int auto_increment,emp_name varchar(20),emp_salary double(10,5),primary key(emp_id));insert into t_emp (emp_name,emp_salary)values(zhangsan,2000.00),(students ,3000.00),(wanger,4000.00)步骤4:创建mapper接口package com.cn.boot.mapper; import com.cn.boot.pojo.Employee; import java.util.List; public interface EmpMapper { public ListEmployee querryAll(); }步骤5创建mapper.xml?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN https://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.cn.boot.mapper.EmpMapper select idquerryAll resultTypeemployee select * from t_emp /select /mapper步骤6:创建启动类并添加注解MapperScan(com.cn.boot.mapper)扫描mapper接口package com.cn.boot; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; MapperScan(com.cn.boot.mapper) SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤7创建controller类并调用mapper接口实现数据库操作package com.cn.boot.controller; import com.cn.boot.mapper.EmpMapper; import com.cn.boot.pojo.Employee; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; RestController RequestMapping(emp) public class EmpController { Autowired private EmpMapper empMapper; GetMapping(list1) public ListEmployee findAll(){ ListEmployee empMappers empMapper.querryAll(); return empMappers; } }步骤8测试七TX和aop整合1.整合事务步骤1创建项目并导入依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency步骤2创建service方法并添加事务package com.cn.boot.service; import com.cn.boot.mapper.EmpMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; Service public class EmpService { Autowired private EmpMapper empMapper; Transactional public int delete(){ int rows empMapper.remove(1); System.out.println(rows rows); int i1/0; return rows; } }步骤3创建mapper接口和mapper.xmlpublic interface EmpMapper { int remove(int id); }?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN https://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.cn.boot.mapper.EmpMapper delete idremove delete from t_emp where emp_id#{emp_id} /delete /mapper步骤4创建controller类调用package com.cn.boot.controller; import com.cn.boot.mapper.EmpMapper; import com.cn.boot.pojo.Employee; import com.cn.boot.service.EmpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; RestController RequestMapping(emp) public class EmpController { Autowired private EmpService empService; GetMapping(delete) public int delete(){ int rows empService.delete(); return rows; } }步骤6启动类同上测试数据库第一条信息未删除出现异常回滚2.整合aop实现方法执行前打印执行日志步骤1创建项目并导入依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-aop/artifactId /dependency步骤2创建增强package com.cn.boot.Advice; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.stereotype.Component; Component Aspect public class LogAdvice { Before(execution(* com..service.*.*(..))) public void before(JoinPoint point){ String simpleName point.getTarget().getClass().getSimpleName(); String method point.getSignature().getName(); System.out.println(simpleName::method开始执行了); } }步骤3启动类服务类方法注释异常控制层和事务增强相同步骤4测试八工程打包和快速部署命令步骤1添加插件build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId version3.3.1/version /plugin /plugins /build步骤2: 执行打包在idea点击package进行打包可以在编译的target文件中查看jar包步骤3启动命令和参数java -jar命令用于在Java环境中执行可执行的JAR文件。下面是关于java -jar命令的说明XML命令格式java -jar [选项] [参数] jar文件名1. -Dnamevalue设置系统属性可以通过System.getProperty()方法在应用程序中获取该属性值。例如java -jar -Dserver.port8080 myapp.jar。2. -X设置JVM参数例如内存大小、垃圾回收策略等。常用的选项包括- -Xmxsize设置JVM的最大堆内存大小例如 -Xmx512m 表示设置最大堆内存为512MB。- -Xmssize设置JVM的初始堆内存大小例如 -Xms256m 表示设置初始堆内存为256MB。3. -Dspring.profiles.activeprofile指定Spring Boot的激活配置文件可以通过application-profile.properties或application-profile.yml文件来加载相应的配置。例如java -jar -Dspring.profiles.activedev myapp.jar。步骤4:测试命令参数java -jar springboot-mybatis-07-1.0-SNAPSHOT.jar

相关新闻

集中式数据库选型实战:分布式与集中式对比、缓冲池调优与信创迁移兼容评估

集中式数据库选型实战:分布式与集中式对比、缓冲池调优与信创迁移兼容评估

大家好,我是数据库小学妹 👋 上周有个朋友找到我,说公司要上新系统,CTO拍板用分布式数据库,理由是"集中式太老了,迟早被淘汰"。我问他日均多少笔交易、数据量多大、需不需要跨地域部署&#xff0…

2026/10/4 20:59:35 阅读更多 →
常见问题与解决方案:jQuery.Flipster插件调试与优化指南

常见问题与解决方案:jQuery.Flipster插件调试与优化指南

常见问题与解决方案:jQuery.Flipster插件调试与优化指南 【免费下载链接】jquery-flipster Responsive, CSS3, touch-enabled jQuery Coverflow plugin. 项目地址: https://gitcode.com/gh_mirrors/jq/jquery-flipster jQuery.Flipster是一款响应式、支持CSS…

2026/10/4 10:45:24 阅读更多 →
蔚蓝档案自动化脚本终极指南:10分钟实现游戏全自动,解放你的双手

蔚蓝档案自动化脚本终极指南:10分钟实现游戏全自动,解放你的双手

蔚蓝档案自动化脚本终极指南:10分钟实现游戏全自动,解放你的双手 【免费下载链接】blue_archive_auto_script 支持按轴凹总力战, 无缝制造三解, 用于实现蔚蓝档案自动化的程序( Steam已适配 ) 项目地址: https://gitcode.com/gh_mirrors/bl/blue_archi…

2026/10/3 9:53:41 阅读更多 →

最新新闻

做全屋定制10年+,我把最常被忽略的几点说清楚

做全屋定制10年+,我把最常被忽略的几点说清楚

关键词:做全屋定制10年、全屋定制企业、立心木作 一、开头先交个底 我做全屋定制这行十来年,从量尺、画图、盯工厂到跟安装,基本每个环节都干过。 这行说复杂也复杂,说简单也简单——大部分翻车的单子,问题不在工艺&am…

2026/10/7 8:02:56 阅读更多 →
REST API封装成MCP服务:从零到生产级的完整实战指南

REST API封装成MCP服务:从零到生产级的完整实战指南

搞过系统集成的老哥都知道,把API暴露给AI模型这件事,最原始的做法是写一堆提示词,告诉模型“你要调用某某接口,参数格式是xxx”。但这种方式又脆又难维护,模型理解稍有偏差,参数就对不上,整条链…

2026/10/7 8:02:56 阅读更多 →
C#上位机集成SECS/GEM协议:从报文解析到WinForm界面完整实战

C#上位机集成SECS/GEM协议:从报文解析到WinForm界面完整实战

简介:面向半导体行业C#上位机开发工程师,这是一份以SECS/GEM协议为核心、WinForm为界面的集成资源,适用于晶圆制造、封装测试等设备通信场景,专门解决协议对接难、业务逻辑杂、开发周期长等痛点。资源不是零散示例,而是…

2026/10/7 8:02:56 阅读更多 →
综合实力碾压单点工具!Paperxie 一站式 AI 论文平台,覆盖毕设全生命周期

综合实力碾压单点工具!Paperxie 一站式 AI 论文平台,覆盖毕设全生命周期

前言 很多同学在准备毕业论文的时候,都会陷入工具碎片化的困境。读外文文献要用翻译软件,整理参考文献要单独文献管理工具,写初稿靠通用大模型,绘图要啃 Origin,查重、润色、排版、答辩 PPT 各自使用不同网站。 多平…

2026/10/7 8:02:56 阅读更多 →
使用lx-ikun-music-sources音源前必读:封号风险、第三方解析陷阱与5条安全使用守则

使用lx-ikun-music-sources音源前必读:封号风险、第三方解析陷阱与5条安全使用守则

使用lx-ikun-music-sources音源前必读:封号风险、第三方解析陷阱与5条安全使用守则 【免费下载链接】lx-ikun-music-sources LX_music & IKUN_music 音源收集 项目地址: https://gitcode.com/gh_mirrors/lx/lx-ikun-music-sources lx-ikun-music-sources…

2026/10/7 8:02:56 阅读更多 →
2026年郑州尼龙扎带有哪些?类型、规格与用途全解析

2026年郑州尼龙扎带有哪些?类型、规格与用途全解析

2026年,制造业的节奏明显变了。郑州及周边城市的新能源、智能装备、汽配产业越跑越快,连带着尼龙扎带这种“小五金”的采购逻辑也在变。做了二十多年扎带生意,我最大的感受是:客户不再只问“多少钱一包”,而是开口就问…

2026/10/7 8:01:56 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 6:26:51 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 4:21:51 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →