淘宝客网站建好了没有数据库韩都衣舍的网站建设

张小明 2026/1/11 7:38:36
淘宝客网站建好了没有数据库,韩都衣舍的网站建设,网站留言短信提醒,在微信上做彩票网站吗目录 MyBatis-Plus 进阶实战 Druid 数据源深度整合#xff1a;企业级方案详解 一、核心价值#xff1a;为什么选择 MP Druid#xff1f; 1. MyBatis-Plus 相比 MyBatis 的核心优势 2. Druid 相比默认数据源#xff08;HikariCP#xff09;的核心优势 3. MP Druid …目录MyBatis-Plus 进阶实战 Druid 数据源深度整合企业级方案详解一、核心价值为什么选择 MP Druid1. MyBatis-Plus 相比 MyBatis 的核心优势2. Druid 相比默认数据源HikariCP的核心优势3. MP Druid 整合的核心价值二、基础整合Spring Boot MP Druid 环境搭建1. 版本选型兼容关键2. 依赖配置pom.xml3. 核心配置application.yml4. MP 核心配置类三、MyBatis-Plus 进阶特性企业级用法实战1. 条件构造器QueryWrapper LambdaQueryWrapper重点1实体类准备2Mapper 接口继承 BaseMapper3条件构造器实战2. 乐观锁解决并发更新冲突实战代码3. 逻辑删除避免数据物理删除实战代码4. 自定义 SQL 结合条件构造器1Mapper 接口添加自定义方法2XML 实现多表关联查询UserMapper.xml5. 代码生成器一键生成 CRUD 代码1添加生成器依赖2生成器配置类四、Druid 数据源进阶性能优化与监控1. 连接池参数优化核心2. 监控功能使用运维必备3. 安全防护防 SQL 注入4. 数据库密码加密五、实战案例企业级用户管理模块1. Controller 层RESTful 接口2. 测试效果六、常见问题与解决方案1. 版本兼容问题2. Druid 监控页面无法访问3. 乐观锁更新失败返回 04. SQL 注入拦截失效七、总结MyBatis-Plus 进阶实战 Druid 数据源深度整合企业级方案详解在 Java 企业级开发中MyBatis-PlusMP作为 MyBatis 的增强工具以 “无侵入式” 设计简化 CRUD 操作、条件构造、分页等核心场景而 Druid 作为阿里巴巴开源的高性能数据源不仅提供稳定的连接池能力更具备 SQL 监控、防注入、加密等企业级特性。两者深度整合既能发挥 MP 的开发效率优势又能借助 Druid 保障系统性能与安全成为企业级项目数据访问层的优选方案。本文将从核心价值、环境搭建、进阶特性、实战应用到问题排查全面拆解这一组合的落地实践。一、核心价值为什么选择 MP Druid1. MyBatis-Plus 相比 MyBatis 的核心优势MyBatis-Plus 完全兼容 MyBatis 语法现有项目可无缝迁移同时通过 “增强” 特性大幅提升开发效率内置BaseMapper和ServiceImpl无需编写基础 CRUD SQL直接调用save、list、removeById等接口提供QueryWrapper、LambdaQueryWrapper等强大的条件构造器避免字符串拼接 SQL 带来的注入风险与语法错误内置物理分页插件支持多数据库适配无需手动编写LIMIT语句开箱即用乐观锁、逻辑删除、主键策略、代码生成器等企业级特性覆盖大部分业务场景。2. Druid 相比默认数据源HikariCP的核心优势Druid 作为专为企业级场景设计的数据源在功能完整性上远超默认的 HikariCP内置 SQL 执行监控、连接池状态监控、慢 SQL 统计支持 Web 可视化界面运维排查更高效自带 SQL 注入拦截器可拦截恶意 SQL 语句提升数据安全支持动态调整连接池参数、空闲连接回收、超时重试等精细化优化适配高并发场景提供数据库密码加密、SQL 日志打印、分布式事务适配等附加功能且经过阿里内部长期验证稳定性更有保障。3. MP Druid 整合的核心价值两者整合实现 “112” 的效果MP 简化 CRUD 与条件查询Druid 简化数据源配置与监控共同提升开发效率Druid 连接池优化搭配 MP 分页 / 查询优化保障高并发场景下的响应速度Druid 防 SQL 注入结合 MP 参数绑定双重防护避免数据安全风险Druid 可视化监控与 MP 日志打印联动问题排查更直观高效实现 “开发高效、运行稳定、监控可控” 的企业级目标。二、基础整合Spring Boot MP Druid 环境搭建1. 版本选型兼容关键为避免版本冲突推荐稳定兼容组合Spring Boot 2.7.x稳定版、MyBatis-Plus 3.5.3.1兼容 Spring Boot 2.7.x、Druid 1.2.18支持 Spring Boot 自动配置。2. 依赖配置pom.xml核心依赖需引入 Spring Web、MyBatis-Plus starter、Druid starter、MySQL 驱动与 Lombok具体配置如下parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.10/version relativePath/ /parent dependencies !-- Spring Web接口测试用 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- MyBatis-Plus 核心依赖替代 MyBatis -- dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-boot-starter/artifactId version3.5.3.1/version /dependency !-- Druid 数据源依赖Spring Boot 自动配置版 -- dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-starter/artifactId version1.2.18/version /dependency !-- MySQL 驱动 -- dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency !-- Lombok简化 POJO -- dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency !-- 单元测试 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration excludes exclude groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /exclude /excludes /configuration /plugin /plugins /build3. 核心配置application.yml整合的关键配置集中在application.yml包含 Druid 数据源配置、MP 核心配置具体如下server: port: 8080 servlet: context-path: /demo # 数据源配置Druid spring: datasource: type: com.alibaba.druid.pool.DruidDataSource # 指定 Druid 数据源 druid: # 数据库连接信息 url: jdbc:mysql://localhost:3306/test_mp_druid?useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver # 连接池参数优化核心 initial-size: 5 # 初始化连接数建议5-10 max-active: 20 # 最大连接数根据 CPU 核心数调整10-30为宜 min-idle: 5 # 最小空闲连接数 max-wait: 60000 # 获取连接的最大等待时间毫秒 time-between-eviction-runs-millis: 60000 # 连接检测间隔毫秒 min-evictable-idle-time-millis: 300000 # 连接最小空闲时间30分钟 validation-query: SELECT 1 FROM DUAL # 连接有效性检测 SQL test-while-idle: true # 空闲时检测连接有效性 test-on-borrow: false # 借出连接时不检测避免性能损耗 test-on-return: false # 归还连接时不检测 pool-prepared-statements: true # 开启预编译语句池PSCache max-pool-prepared-statement-per-connection-size: 20 # 每个连接的预编译语句缓存大小 # 监控配置 filters: stat,wall,log4j2 # 启用监控stat、防 SQL 注入wall、日志log4j2 web-stat-filter: enabled: true url-pattern: /* exclusions: *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* # 排除静态资源和监控页面 stat-view-servlet: enabled: true url-pattern: /druid/* # 监控页面访问路径http://localhost:8080/demo/druid login-username: druid-admin # 监控页面登录用户名 login-password: druid-123456 # 登录密码 reset-enable: false # 禁用重置按钮 allow: 127.0.0.1 # 允许访问的 IP # 日志配置 filter: stat: log-slow-sql: true # 记录慢 SQL slow-sql-millis: 2000 # 慢 SQL 阈值2秒 merge-sql: true # 合并相同 SQL 统计 wall: config: multi-statement-allow: true # 允许批量执行 SQL # MyBatis-Plus 配置 mybatis-plus: mapper-locations: classpath:mapper/**/*.xml # Mapper XML 文件路径 type-aliases-package: com.example.demo.entity # 实体类别名包 configuration: map-underscore-to-camel-case: true # 下划线转驼峰 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台打印 SQL开发环境 global-config: db-config: id-type: AUTO # 主键策略自增 logic-delete-field: isDeleted # 逻辑删除字段名全局配置 logic-delete-value: 1 # 逻辑删除值1删除 logic-not-delete-value: 0 # 未删除值0正常4. MP 核心配置类若需自定义 MP 插件如分页插件、乐观锁插件可创建配置类package com.example.demo.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration MapperScan(com.example.demo.mapper) // 统一扫描 Mapper 接口替代 Mapper 注解 public class MyBatisPlusConfig { /** * 注册 MP 插件分页 乐观锁 */ Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor new MybatisPlusInterceptor(); // 分页插件适配 MySQL interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 乐观锁插件处理并发更新 interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return interceptor; } }三、MyBatis-Plus 进阶特性企业级用法实战1. 条件构造器QueryWrapper LambdaQueryWrapper重点条件构造器是 MP 替代 XML 条件查询的核心推荐使用LambdaQueryWrapper类型安全避免字段名拼写错误。1实体类准备package com.example.demo.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.Version; import lombok.Data; import java.time.LocalDateTime; Data public class User { TableId(type IdType.AUTO) // 主键自增 private Long id; private String name; // 用户名 private Integer age; // 年龄 private String email; // 邮箱 private LocalDateTime createTime; // 创建时间 Version // 乐观锁版本号字段 private Integer version; // 版本号初始值 0 TableLogic // 逻辑删除字段全局已配置字段名 private Integer isDeleted; // 0正常1删除 }2Mapper 接口继承 BaseMapperpackage com.example.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.demo.entity.User; import org.springframework.stereotype.Repository; // 继承 BaseMapper获得内置 CRUD 方法 Repository public interface UserMapper extends BaseMapperUser { // 无需编写基础 CRUD 方法BaseMapper 已提供 }3条件构造器实战在 Service 层使用LambdaQueryWrapper实现复杂条件查询package com.example.demo.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.demo.entity.User; import com.example.demo.mapper.UserMapper; import com.example.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; Service public class UserServiceImpl implements UserService { Autowired private UserMapper userMapper; /** * 复杂条件查询 分页 * 需求查询年龄 20-30 岁、姓名包含张、未删除的用户按创建时间倒序 */ Override public IPageUser pageUser(Integer pageNum, Integer pageSize, String name) { // 创建分页对象 IPageUser page new Page(pageNum, pageSize); // 构建 Lambda 条件构造器 LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapperUser() .between(User::getAge, 20, 30) // 年龄 between 20 and 30 .like(name ! null, User::getName, name) // 姓名包含 name非空时生效 .eq(User::getIsDeleted, 0) // 未删除 .orderByDesc(User::getCreateTime); // 按创建时间倒序 // 分页查询MP 自动拼接 SQL 物理分页 return userMapper.selectPage(page, queryWrapper); } /** * 多条件组合查询and or * 需求姓名张三 且 邮箱包含qq.com 或 年龄30 且 未删除 */ Override public ListUser listUserByComplexCondition() { LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapperUser() .and(w - w.eq(User::getName, 张三).like(User::getEmail, qq.com)) .or(w - w.gt(User::getAge, 30).eq(User::getIsDeleted, 0)); return userMapper.selectList(queryWrapper); } }2. 乐观锁解决并发更新冲突乐观锁基于 “版本号机制”适用于并发更新场景如用户余额修改、订单状态更新无需加锁性能更高。实战代码/** * 乐观锁更新示例修改用户年龄 * 原理更新时自动拼接 where id? and version?更新成功后 version1 */ Override public boolean updateUserAge(Long id, Integer newAge) { User user new User(); user.setId(id); user.setAge(newAge); user.setVersion(1); // 实际应从数据库查询获取当前版本号 // MP 自动生成 SQLUPDATE user SET age?, versionversion1 WHERE id? AND version? int rows userMapper.updateById(user); return rows 0; // rows0 表示版本号不匹配更新失败并发冲突 }3. 逻辑删除避免数据物理删除逻辑删除是 “标记删除”如is_deleted1而非物理删除便于数据恢复与审计。实战代码/** * 逻辑删除MP 自动拼接 update user set is_deleted1 where id? and is_deleted0 */ Override public boolean removeUserById(Long id) { return userMapper.removeById(id); // 调用 BaseMapper 方法MP 自动处理逻辑删除 } /** * 逻辑删除后查询自动过滤已删除数据拼接 where is_deleted0 */ Override public User getUserById(Long id) { return userMapper.selectById(id); }4. 自定义 SQL 结合条件构造器复杂场景如多表关联、聚合查询需自定义 SQLMP 支持在 XML 中结合Wrapper动态拼接条件。1Mapper 接口添加自定义方法package com.example.demo.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.example.demo.entity.User; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; public interface UserMapper extends BaseMapperUser { /** * 自定义 SQL Wrapper 条件注解式 */ Select(SELECT COUNT(*) FROM user ${ew.customSqlSegment}) Long selectUserCount(Param(Constants.WRAPPER) WrapperUser wrapper); /** * 自定义 SQL 分页 WrapperXML 式 */ IPageUser selectUserWithOrderCount(IPageUser page, Param(Constants.WRAPPER) WrapperUser wrapper); }2XML 实现多表关联查询UserMapper.xml?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.demo.mapper.UserMapper !-- 多表关联 分页 Wrapper 条件 -- select idselectUserWithOrderCount resultTypecom.example.demo.entity.User SELECT u.id, u.name, u.age, COUNT(o.id) AS order_count FROM user u LEFT JOIN order o ON u.id o.user_id where ${ew.customSqlSegment} !-- 拼接 Wrapper 条件 -- /where GROUP BY u.id, u.name, u.age ORDER BY u.create_time DESC /select /mapper5. 代码生成器一键生成 CRUD 代码MP 提供mybatis-plus-generator工具可根据数据库表结构一键生成 Entity、Mapper、Service、Controller 代码。1添加生成器依赖!-- MyBatis-Plus 代码生成器 -- dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-generator/artifactId version3.5.3.1/version /dependency !-- 模板引擎Velocity -- dependency groupIdorg.apache.velocity/groupId artifactIdvelocity-engine-core/artifactId version2.3/version /dependency2生成器配置类package com.example.demo.generator; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; import java.util.Collections; public class CodeGenerator { public static void main(String[] args) { // 数据库连接信息 String url jdbc:mysql://localhost:3306/test_mp_druid?useSSLfalseserverTimezoneAsia/Shanghai; String username root; String password 123456; // 生成代码配置 FastAutoGenerator.create(url, username, password) // 全局配置 .globalConfig(builder - { builder.author(demo) .outputDir(System.getProperty(user.dir) /src/main/java) .commentDate(yyyy-MM-dd) .disableOpenDir(); }) // 包配置 .packageConfig(builder - { builder.parent(com.example.demo) .entity(entity) .mapper(mapper) .service(service) .controller(controller) .xml(mapper.xml) .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty(user.dir) /src/main/resources/mapper)); }) // 策略配置 .strategyConfig(builder - { builder.addInclude(user, order) // 要生成的表名 .addTablePrefix(t_) // 忽略表前缀 // 实体类策略 .entityBuilder() .enableLombok() .enableTableFieldAnnotation() .versionColumnName(version) .versionPropertyName(version) .logicDeleteColumnName(is_deleted) .logicDeletePropertyName(isDeleted) // Controller 策略 .controllerBuilder() .enableRestStyle() // 生成 RESTful 风格 Controller .enableHyphenStyle(); // URL 路径连字符格式 }) .templateEngine(new VelocityTemplateEngine()) .execute(); } }运行main方法后会自动在指定包下生成完整的 CRUD 代码无需手动编写。四、Druid 数据源进阶性能优化与监控1. 连接池参数优化核心连接池参数直接影响系统性能需根据服务器配置调整关键参数说明如下initial-size: 5启动时创建 5 个连接避免首次请求的连接创建延迟max-active: 20最大连接数避免连接过多导致数据库压力过大建议 CPU 核心数 * 2 1min-idle: 5保留足够空闲连接减少连接创建 / 销毁开销max-wait: 60000请求获取连接的超时时间避免无限阻塞test-while-idle: true空闲时检测连接有效性避免使用无效连接pool-prepared-statements: true开启预编译语句池PSCache提升 SQL 执行效率。2. 监控功能使用运维必备Druid 提供 Web 可视化监控页面启动应用后访问http://localhost:8080/demo/druid输入配置的用户名druid-admin和密码druid-123456即可登录。核心监控模块包括SQL 监控查看所有 SQL 执行语句、执行次数、耗时、行数快速定位慢 SQL连接池监控查看活跃连接数、空闲连接数、等待连接数评估连接池配置合理性Web 应用查看请求 URL、请求次数、耗时等SQL 防火墙查看被拦截的恶意 SQL 注入语句。3. 安全防护防 SQL 注入Druid 的wall过滤器已在配置中启用filters: stat,wall可拦截 SQL 注入攻击。关键配置spring: datasource: druid: filter: wall: config: none-base-statement-allow: false # 禁止非预编译语句防止 SQL 注入若前端传入恶意参数如name or 11 --Druid 会拦截并抛出异常避免数据泄露。4. 数据库密码加密生产环境中数据库密码明文配置存在安全风险Druid 支持加密存储下载 Druid jar 包执行命令生成加密密码java -cp druid-1.2.18.jar com.alibaba.druid.filter.config.ConfigTools your_password输出publicKey和加密后的password配置文件中替换密码spring: datasource: druid: username: root password: 加密后的密码 filter: config: enabled: true connection-properties: config.decrypt: true config.decrypt.key: 生成的 publicKey公钥五、实战案例企业级用户管理模块1. Controller 层RESTful 接口package com.example.demo.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.example.demo.entity.User; import com.example.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; RestController RequestMapping(/api/users) public class UserController { Autowired private UserService userService; // 新增用户 PostMapping public ResponseEntityUser save(RequestBody User user) { User savedUser userService.save(user); return new ResponseEntity(savedUser, HttpStatus.CREATED); } // 分页查询 GetMapping(/page) public ResponseEntityIPageUser page( RequestParam(defaultValue 1) Integer pageNum, RequestParam(defaultValue 10) Integer pageSize, RequestParam(required false) String name) { IPageUser page userService.pageUser(pageNum, pageSize, name); return ResponseEntity.ok(page); } // 复杂条件查询 GetMapping(/complex) public ResponseEntityListUser listComplex() { ListUser userList userService.listUserByComplexCondition(); return ResponseEntity.ok(userList); } // 乐观锁更新年龄 PutMapping(/{id}/age) public ResponseEntityString updateAge(PathVariable Long id, RequestParam Integer newAge) { boolean success userService.updateUserAge(id, newAge); if (success) { return ResponseEntity.ok(更新成功); } return ResponseEntity.status(HttpStatus.CONFLICT).body(并发冲突更新失败); } // 逻辑删除 DeleteMapping(/{id}) public ResponseEntityVoid remove(PathVariable Long id) { boolean success userService.removeUserById(id); if (success) { return ResponseEntity.noContent().build(); } return ResponseEntity.notFound().build(); } }2. 测试效果启动应用后可通过 Postman 测试接口分页查询GET http://localhost:8080/demo/api/users/page?pageNum1pageSize5name张监控查看访问http://localhost:8080/demo/druid在 SQL 监控中查看查询语句的执行情况。六、常见问题与解决方案1. 版本兼容问题现象启动报错NoSuchMethodError或ClassNotFoundException解决方案使用本文推荐的版本组合MP 3.5.3.1 Druid 1.2.18 Spring Boot 2.7.x避免版本冲突。2. Druid 监控页面无法访问现象访问/druid报 404解决方案确认stat-view-servlet.enabledtrue排除 Druid 监控页面的拦截web-stat-filter.exclusions包含/druid/*访问路径需包含上下文路径。3. 乐观锁更新失败返回 0现象updateById返回 0更新未生效解决方案实体类添加Version注解配置类注册乐观锁插件更新前查询获取最新版本号。4. SQL 注入拦截失效现象恶意 SQL 未被拦截解决方案确认filters包含wall配置wall.config.none-base-statement-allow: false。七、总结MyBatis-Plus 与 Druid 的整合是企业级 Java 项目数据访问层的 “黄金组合”。MP 通过条件构造器、乐观锁、逻辑删除、代码生成器等特性大幅降低开发成本Druid 则通过连接池优化、监控、防注入等功能保障系统性能与安全。掌握这一组合的关键在于熟练运用 MP 进阶特性提升开发效率合理配置 Druid 参数优化性能利用监控工具实现问题快速排查。无论是中大型分布式系统还是小型接口服务这一组合都能适配需求是 Java 后端开发的必备技能
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

深圳开发网站开发费用建设部颁发的证书网站

插座工程量一键识别-图块统计告别人工点数 电气图纸中插座数量种类繁多,传统人工逐个点数易疲劳、易出错。借助CAD快速看图的【图形识别】,可自动识别并分类统计各类插座工程量,一键生成工程量汇总表,实现插座工程量的高效精准计…

张小明 2026/1/9 19:44:15 网站建设

网站域名在哪里备案网站制作报价优惠

Linly-Talker谷歌WaveNet语音效果对比实验 在虚拟主播、AI客服和数字员工逐渐走入日常的今天,一个“像人一样说话”的数字人早已不再是科幻电影里的桥段。但要让机器发出自然、有情感、口型还对得上的声音,背后的技术挑战远比表面看起来复杂得多。其中最…

张小明 2026/1/11 6:01:42 网站建设

wordpress 5.3优化专业的公司

FaceFusion在新闻播报虚拟化中的实践探索 在一场突如其来的台风天气中,某省级电视台的主播因交通中断无法到岗。然而当晚的晚间新闻却准时播出——画面中熟悉的面孔正沉稳播报灾情动态,语气坚定、表情自然。实际上,这位“主播”是由AI驱动的虚…

张小明 2026/1/10 23:48:00 网站建设

成都网站搜索引擎优化wordpress付费下载破解版

AI与网络安全:迈向未来之路 1. 引言 21世纪,网络安全和人工智能(AI)在为世界带来众多机遇的同时,也面临着诸多挑战。为应对网络威胁,人们开始借助AI和机器学习(ML)的力量。美国政府正采用新方法,在全新环境中对抗新型恐怖主义。尽管网络安全和AI面临重重挑战,但它们…

张小明 2026/1/9 19:38:07 网站建设

手机怎么做销售网站2018年主流网站开发语言

当小智与大程在数据沼泽中挣扎、彼此指责时,他们都以为问题出在对方身上。然而,真正的转机,始于一次触及本质的反思——“我们到底哪里错了?” 这不是一场关于技术的争吵,而是一次关于协作模式的觉醒。他们发现&#x…

张小明 2026/1/11 1:32:20 网站建设

怎么下载网站模板俄语网站

RePKG完整教程:5分钟学会Wallpaper Engine资源提取与转换 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专门为Wallpaper Engine设计的开源工具&#xff0c…

张小明 2026/1/10 20:56:40 网站建设