旅游网站建设论文wordpress 去除category

张小明 2026/1/13 0:02:13
旅游网站建设论文,wordpress 去除category,导航网站模板,网站建设的内容是什么《SpringBoot整合Sharding-JDBC全面教程#xff1a;常用 API 串联与实战指南》 你想要在SpringBoot项目中规范、高效地整合Sharding-JDBC#xff0c;掌握其分库分表、读写分离等核心功能的常用API#xff0c;并遵循行业最佳实践#xff0c;这份教程会帮你系统落地。 一、核…《SpringBoot整合Sharding-JDBC全面教程常用 API 串联与实战指南》你想要在SpringBoot项目中规范、高效地整合Sharding-JDBC掌握其分库分表、读写分离等核心功能的常用API并遵循行业最佳实践这份教程会帮你系统落地。一、核心前置说明1. 版本选型最佳实践选稳定兼容版JDK1.8Sharding-JDBC 5.x对JDK8兼容性最好SpringBoot2.7.x避免3.x初期兼容性问题Sharding-JDBC5.4.0Apache ShardingSphere 5.x稳定版含JDBC模块2. 依赖引入Mavendependencies!-- SpringBoot核心 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- SpringBoot数据访问 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependency!-- Sharding-JDBC核心依赖 --dependencygroupIdorg.apache.shardingsphere/groupIdartifactIdshardingsphere-jdbc-core-spring-boot-starter/artifactIdversion5.4.0/version/dependency!-- MySQL驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scopeversion8.0.33/version/dependency!-- 数据源HikariCPSpringBoot默认性能最优 --dependencygroupIdcom.zaxxer/groupIdartifactIdHikariCP/artifactId/dependency!-- 测试 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies二、核心概念速览新手必懂分片键用于分库/分表的字段如订单ID、用户ID分片策略按规则将数据路由到指定库/表如取模、范围、哈希逻辑表分表的抽象名称如t_order物理表是t_order_0、t_order_1读写分离主库写、从库读Sharding-JDBC自动路由三、实战场景1单库分表最常用1. 数据库准备创建数据库demo_db并创建2个订单分表CREATEDATABASEIFNOTEXISTSdemo_db;USEdemo_db;-- 订单逻辑表t_order的物理表t_order_0、t_order_1CREATETABLEt_order_0(order_idBIGINTPRIMARYKEY,user_idINTNOTNULL,order_amountDECIMAL(10,2)NOTNULL,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMP);CREATETABLEt_order_1(order_idBIGINTPRIMARYKEY,user_idINTNOTNULL,order_amountDECIMAL(10,2)NOTNULL,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMP);2. 核心配置application.yml遵循最佳实践配置分层清晰、策略明确、注释完整spring:# Sharding-JDBC核心配置shardingsphere:# 数据源配置datasource:names:ds0# 数据源名称单库ds0:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/demo_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghaiusername:root# 替换为你的数据库账号password:root# 替换为你的数据库密码# 分库分表规则rules:sharding:# 分片表配置tables:t_order:# 逻辑表名actual-data-nodes:ds0.t_order_${0..1}# 物理表节点ds0库下的t_order_0/1# 分片策略按order_id取模分表table-strategy:standard:sharding-column:order_id# 分片键sharding-algorithm-name:t_order_inline# 分片算法名称# 分片算法配置sharding-algorithms:t_order_inline:type:INLINE# 行内表达式算法简单高效适合取模/范围props:algorithm-expression:t_order_${order_id % 2}# 算法规则order_id%2决定表后缀# 属性配置打印SQL调试必备生产可关闭props:sql-show:true3. 代码编写最佳实践分层解耦1实体类Order.javaimportlombok.Data;importjavax.persistence.*;importjava.math.BigDecimal;importjava.time.LocalDateTime;DataEntityTable(namet_order)// 映射逻辑表名publicclassOrder{IdprivateLongorderId;// 分片键订单IDprivateIntegeruserId;// 用户IDprivateBigDecimalorderAmount;// 订单金额privateLocalDateTimecreateTime;// 创建时间}2RepositoryOrderRepository.javaimportorg.springframework.data.jpa.repository.JpaRepository;importorg.springframework.stereotype.Repository;RepositorypublicinterfaceOrderRepositoryextendsJpaRepositoryOrder,Long{// 继承JpaRepository无需手写基础CRUD}3ServiceOrderService.javaimportorg.springframework.stereotype.Service;importjavax.annotation.Resource;importjava.util.List;ServicepublicclassOrderService{ResourceprivateOrderRepositoryorderRepository;// 新增订单Sharding-JDBC自动路由到对应分表publicOrdersaveOrder(Orderorder){returnorderRepository.save(order);}// 查询所有订单Sharding-JDBC自动聚合所有分表数据publicListOrderlistAllOrders(){returnorderRepository.findAll();}// 根据订单ID查询Sharding-JDBC自动路由到对应分表publicOrdergetOrderById(LongorderId){returnorderRepository.findById(orderId).orElse(null);}}4测试类ShardingJdbcDemoApplicationTests.javaimportorg.junit.jupiter.api.Test;importorg.springframework.boot.test.context.SpringBootTest;importjavax.annotation.Resource;importjava.math.BigDecimal;importjava.time.LocalDateTime;SpringBootTestpublicclassShardingJdbcDemoApplicationTests{ResourceprivateOrderServiceorderService;TestpublicvoidtestSaveOrder(){// 测试订单1orderId1 → 路由到t_order_1Orderorder1newOrder();order1.setOrderId(1L);order1.setUserId(1001);order1.setOrderAmount(newBigDecimal(99.99));order1.setCreateTime(LocalDateTime.now());orderService.saveOrder(order1);// 测试订单2orderId2 → 路由到t_order_0Orderorder2newOrder();order2.setOrderId(2L);order2.setUserId(1002);order2.setOrderAmount(newBigDecimal(199.99));order2.setCreateTime(LocalDateTime.now());orderService.saveOrder(order2);// 查询验证System.out.println(订单1orderService.getOrderById(1L));System.out.println(订单2orderService.getOrderById(2L));System.out.println(所有订单orderService.listAllOrders());}}4. 运行结果验证控制台会打印Sharding-JDBC路由后的SQL比如INSERT INTO t_order_1 (order_id, user_id, order_amount, create_time) VALUES (1, 1001, 99.99, ...)INSERT INTO t_order_0 (order_id, user_id, order_amount, create_time) VALUES (2, 1002, 199.99, ...)数据库中t_order_1有订单1t_order_0有订单2查询时自动聚合结果。四、实战场景2分库分表进阶若需按user_id分库、order_id分表修改配置如下核心变化spring:shardingsphere:datasource:names:ds0,ds1# 两个数据源分库ds0:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/demo_db_0?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghaiusername:rootpassword:rootds1:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/demo_db_1?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghaiusername:rootpassword:rootrules:sharding:tables:t_order:actual-data-nodes:ds${0..1}.t_order_${0..1}# 两个库每个库2个表# 分库策略按user_id取模database-strategy:standard:sharding-column:user_idsharding-algorithm-name:t_order_db_inline# 分表策略按order_id取模table-strategy:standard:sharding-column:order_idsharding-algorithm-name:t_order_table_inlinesharding-algorithms:t_order_db_inline:type:INLINEprops:algorithm-expression:ds${user_id % 2}t_order_table_inline:type:INLINEprops:algorithm-expression:t_order_${order_id % 2}props:sql-show:true五、实战场景3读写分离最佳实践主从架构spring:shardingsphere:datasource:names:master,slave0# 主库从库master:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/demo_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghaiusername:rootpassword:rootslave0:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3307/demo_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghaiusername:rootpassword:rootrules:readwrite-splitting:data-sources:demo_ds:# 读写分离数据源名称type:STATIC# 静态读写分离固定主从props:write-data-source-name:master# 写库read-data-source-names:slave0# 读库多个用逗号分隔load-balancer-name:round_robin# 负载均衡算法轮询load-balancers:round_robin:type:ROUND_ROBIN# 轮询算法简单高效props:sql-show:true六、常用API与最佳实践1. 自定义分片算法进阶场景若内置算法不满足需求可自定义分片算法importorg.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingAlgorithm;importorg.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;importorg.springframework.stereotype.Component;importjava.util.Collection;// 自定义精确分片算法按order_id范围分表ComponentpublicclassCustomOrderShardingAlgorithmimplementsPreciseShardingAlgorithmLong{OverridepublicStringdoSharding(CollectionStringavailableTargetNames,PreciseShardingValueLongshardingValue){LongorderIdshardingValue.getValue();// 自定义规则order_id1000 → t_order_0否则→t_order_1if(orderId1000){returnt_order_0;}else{returnt_order_1;}}}配置中替换算法类型为CUSTOM指定算法类sharding-algorithms:t_order_custom:type:CUSTOMprops:sharding-algorithm-class-name:com.example.demo.algorithm.CustomOrderShardingAlgorithm2. 分布式ID生成最佳实践避免主键冲突Sharding-JDBC内置分布式ID生成器配置如下spring:shardingsphere:rules:sharding:key-generators:snowflake:# 雪花算法推荐type:SNOWFLAKEprops:worker-id:1# 工作节点ID集群需唯一tables:t_order:key-generate-strategy:column:order_id# 主键字段key-generator-name:snowflake# 关联雪花算法3. 最佳实践总结避坑指南分片键选择优先选查询频繁、值均匀的字段如订单ID避免用范围字段如时间作为唯一分片键易数据倾斜。避免跨库/跨表JOIN分库分表后JOIN性能极差尽量通过业务设计规避。生产环境关闭sql-show避免日志冗余影响性能。事务支持分库事务需用Sharding-JDBC的XA事务或BASE事务单库事务无特殊配置。七、核心测试与验证功能验证通过单元测试验证数据路由是否正确如不同分片键的值是否落到指定库/表。性能验证压测分库分表后的读写性能对比单库单表确保分片后性能提升。异常验证测试分片键为空、值超出范围等场景确保程序有异常处理。总结SpringBoot整合Sharding-JDBC的核心是数据源配置分片规则算法配置优先使用INLINE算法简单高效复杂场景自定义算法。最佳实践分片键选均匀字段、避免跨库JOIN、用雪花算法生成分布式ID、生产关闭SQL打印。常见场景优先级单库分表入门→ 分库分表进阶→ 读写分离高可用按需落地。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

张店网站建设价官方网站改版建议

你是否经历过这样的场景:备份文件在传输过程中被截获,导致企业核心数据泄露?或者因为密钥管理不当,在灾难恢复时无法解密备份数据?这些问题正是传统备份方案无法解决的痛点。本文将通过问题导向的实战方法,…

张小明 2026/1/12 2:34:37 网站建设

聊城做网站的正确的网址格式怎么写

Kotaemon增长黑客策略生成:低成本获客点子 在客户咨询量持续攀升、服务人力成本居高不下的今天,越来越多企业开始寻找既能保障服务质量又能控制运营支出的智能解决方案。尤其是中小企业和初创团队,往往面临“想做AI客服但预算有限、技术储备不…

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

电力行业网站建设邯郸网站制作公司

英雄联盟回放管理难题?ReplayBook让你告别混乱的游戏记录 【免费下载链接】ReplayBook Play, manage, and inspect League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/re/ReplayBook 还在为堆积如山的英雄联盟回放文件而烦恼吗&#xff1…

张小明 2025/12/31 19:18:51 网站建设

福州网站建设自助建站徐州网络推广公司

文章深入分析了为什么一定要做Agent智能体,指出Agent相比传统开发方法具有四大优势:降低应用开发门槛,使非专业开发者也能创建应用;简化流程复杂度,作为"胶水"连接各个模块;提供多样化交互方式&a…

张小明 2025/12/31 16:28:43 网站建设

asp.net 网站启动慢网站建设技术支持牛商网

第一章:Open-AutoGLM多模态理解能力行业排名第一的里程碑意义Open-AutoGLM在最新一轮的多模态理解基准评测中,以显著优势登顶全球榜首,标志着中国自主研发的大模型在跨模态语义理解领域实现关键突破。该成就不仅体现了其在图像-文本联合建模方…

张小明 2025/12/31 21:56:36 网站建设

小企业网站建设哪些好办备案不关闭网站吗

从“听诊器”到“导航仪”:用波特图精准把脉逆变器控制性能你有没有遇到过这样的场景?一台并网逆变器在实验室测试时一切正常,可一到现场就出现高频振荡;或者客户抱怨光伏系统对云层变化响应太慢,输出功率迟迟跟不上光…

张小明 2026/1/1 0:29:47 网站建设