0基础五分钟学会使用shardingJDBC实现分表 及测试

使用shardingJDBC中的雪花算法生成id 使用sharding-jdbc中的使用IP后几位来做workId,但在某些情况下会出现生成重复ID的情况。分布式部署就需要分配不同的workId, 如果workId相同,可能会导致⽣成的id相同。分布式情况下,需要保证各个系统时间⼀致,如果服务器的时钟回拨,就会导致⽣成的 id 重复。方式二:使用Sharding-Jdbc配置文件,注释DO类里面的id分配策略。生成的 id 中包含有时间戳,所以生成的 id按照时间递增。部署了多台服务器,需要保证系统时间⼀样,机器编号不⼀样。 阅读详情

1.引入相关依赖

<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.1.1</version>
</dependency>

2.添加配置 

不懂的地方自己看注释 

主要就是配置了

2.1数据源

记得把原本的数据源配置去除

2.2分表策略

根据account_no分表 这里只简单分了两张traffic 流量表,表名分别是

traffic_0,traffic_1 然后account_no 为偶数的在一张 account_no为奇数的在另一张

2.3id生成策略

这里使用了雪花id生成器  记得配置workId 不然有极小概率ID重复

  # 数据源 ds0 第一个数据库
  shardingsphere:
    datasource:
      #数据源名称
      names: ds0
      ds0:
        connectionTimeoutMilliseconds: 30000
        driver-class-name: com.mysql.cj.jdbc.Driver
        idleTimeoutMilliseconds: 60000
        jdbc-url: jdbc:mysql://101.227.52.230:3306/dcloud_account?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
        maintenanceIntervalMilliseconds: 30000
        maxLifetimeMilliseconds: 1800000
        maxPoolSize: 50
        minPoolSize: 50
        password: xxx
        type: com.zaxxer.hikari.HikariDataSource
        username: root

    props:
      # 打印执行的数据库以及语句
      sql:
        show: true

    sharding:
      tables:
        traffic:
          # 指定traffic表的数据分布情况,配置数据节点,行表达式标识符使用 ${...} 或 $->{...},但前者与 Spring 本身的文件占位符冲突,所以在 Spring 环境中建议使用 $->{...}
          actual-data-nodes: ds0.traffic_$->{0..1}
          #水平分表策略+行表达式分片
          table-strategy:
            inline:
              algorithm-expression: traffic_$->{ account_no % 2 }
              sharding-column: account_no
          #id生成策略
          key-generator:
            column: id
            props:
              worker:
                id:  ${workId}
            #id生成策略
            type: SNOWFLAKE

3.具体相关代码

雪花id生成类

package net.xdclass.util;

import org.apache.shardingsphere.core.strategy.keygen.SnowflakeShardingKeyGenerator;

/**
 * 小滴课堂,愿景:让技术不再难学
 *
 * @Description
 * @Author 二当家小D
 * @Remark 有问题直接联系我,源码-笔记-技术交流群
 * @Version 1.0
 **/

public class IDUtil {

    private static SnowflakeShardingKeyGenerator shardingKeyGenerator = new SnowflakeShardingKeyGenerator();

    /**
     * 雪花算法生成器
     * @return
     */
    public static   Comparable<?> geneSnowFlakeID(){

        return shardingKeyGenerator.generateKey();
    }

}

workId配置类

package net.xdclass.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;

import java.net.InetAddress;
import java.net.UnknownHostException;

@Configuration
@Slf4j
public class SnowFlakeWorkIdConfig {

    /**
     * 动态指定sharding jdbc 的雪花算法中的属性work.id属性
     * 通过调用System.setProperty()的方式实现,可用容器的 id 或者机器标识位
     * workId最大值 1L << 100,就是1024,即 0<= workId < 1024
     * {@link SnowflakeShardingKeyGenerator#getWorkerId()}
     *
     */
    static {
        try {
            InetAddress inetAddress = InetAddress.getLocalHost();
            String ip = inetAddress.getHostAddress();
            String workId = Math.abs(ip.hashCode()) % 1024 + "";

            System.setProperty("workId",workId);
            log.info("workId:{}",workId);
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        }
    }
}

测试类

package net.xdclass.biz;

import lombok.extern.slf4j.Slf4j;
import net.xdclass.AccountApplication;
import net.xdclass.mapper.TrafficMapper;
import net.xdclass.model.TrafficDO;
import net.xdclass.util.IDUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Random;

/**
 * 小滴课堂,愿景:让技术不再难学
 *
 * @Description
 * @Author 二当家小D
 * @Remark 有问题直接联系我,源码-笔记-技术交流群
 * @Version 1.0
 **/

@RunWith(SpringRunner.class)
@SpringBootTest(classes = AccountApplication.class)
@Slf4j
public class AccountTest {


    @Autowired
    private TrafficMapper trafficMapper;


    @Test
    public void testSaveTraffic() {

        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            TrafficDO trafficDO = new TrafficDO();
//            trafficDO.setAccountNo(Long.valueOf(random.nextInt(100)));
            trafficDO.setAccountNo(Long.valueOf(IDUtil.geneSnowFlakeID().toString()));
            trafficMapper.insert(trafficDO);
        }

    }


}

数据库效果如下 可以看到分表并插入成功 记得要提前创建traffic_0 到 traffic_N 几张表

 

 

YOLO26算法车道线检测+训练好的模型+360张数据集+pyqt可视化界面.zip 附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 55 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9512** mAP50-95 | 0.6746 Precision | 0.8796 Recall | 0.8825 train/box_loss | 0.8608 train/cls_loss | 0.7232 val/box_loss | 0.9955 val/cls_loss | 0.5511 【训练过程分析】 这轮训练我经历了从初始到稳定的曲折过程。前 20 个epoch,loss 曲线呈现了陡峭的下降趋势,mAP50 指标从 0.8 开始逐步攀升,仿佛在寻找一个合适的平衡点。然而,从第 21 个epoch 开始,mAP50 的提升速率显著放缓,整体曲线显得有些曲折,有时甚至停滞不前,让我一度以为训练出现了问题。直到第 35 个epoch,loss 开始逐渐趋于平稳,这标志着模型已经找到了一个较好的收敛区间。到了最后的 20 个 epoch,尽管 mAP50 依旧在稳步上升,但提升幅度已经不大,这意味着模型已经接近其性能天花板。 在这个过程中,我重点关注了 box_loss 和 cls_loss 的变化。初期阶段,box_loss 快速下降,从 0.9 逐渐降至 0.86,而 cls_loss 则从 0.75 逐步下降至... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载

相关推荐

IEC 61851-23:2023 电动汽车导电充电系统 - 第23部分:直流电动汽车供电设备 - 完整英文电子版(388页)

IEC 61851-23:2023适用于用于在供电网络与电动汽车(EV)之间实现能量传输的电动车供电设备,A侧额定最大电压可达1000伏交流电或最高1500伏直流电,B侧额定最大电压最高可达1500伏直流电。 本文件规定了系统A、系统B和系统C的电动车供应设备,定义见附件AA、附件BB和附件CC。

Sharding-JDBC(二)- Sharding-JDBC介绍

Sharding-JDBC(二)- Sharding-JDBC介绍

及时当勉励,岁月不待人 4067

关于AI开发方法论-以文档为索引的高质量协作开发:让一次现象描述精准命中几个代码块

对AI的编码规范进行约束

ShardingSphere系列01:Shardingjdbc实现分表(含项目实践)

Springboot系列:整合Shardingjdbc实现分表、含项目实践!

Think_and_work的博客 4839

数字雕刻基于CatmulI-Clark细分与笔刷位移场的ZBrush流程建模:月哨兵角色精细度上限分析

内容概要:本文以“月哨兵”科幻角色数字雕刻工程为实例,系统构建了从程序化粗模到高精度雕刻的完整数学模型。研究涵盖重拓扑、Catmul-Clark细分、笔刷位移场建模、多部件组装及精细度上限分析等核心环节。通过ZRemesher将304,050顶点粗模重拓扑为28,600顶点的全四边形网格,并逐级细分至732万面,实测面数递推F(k)=F₀·4ᵏ完全符合理论。利用ZBrush Python接口注入Standard笔刷操作,首次通过同拓扑OBJ逐顶点差分获得真实位移场数据,实测最大位移0.454873,8.756%顶点发生显著位移。提出“理论-内存-拓扑-视觉”四层精细度上限模型,指出在24GB内存条件下工程合理上限为10⁷~10⁸面,视觉收益受渲染分辨率制约趋于饱和。最终完成755万面的组装网格并经工程文件回读验证一致性。; 适合人群:具备三维建模与数字雕刻基础,熟悉ZBrush工作流,从事角色资产开发或程序化内容生成的技术美术、图形学研究人员及高阶数字艺术家。; 使用场景及目标:①理解Catmul-Clark细分曲面在工业级雕刻流程中的数学机制;②掌握基于脚本驱动的可复核雕刻工程构建方法;③评估高面数模型的内存代价与视觉收益平衡;④学习重拓扑、位移场量化、多部件合并等关键技术的工程实现。; 阅读建议:本文强调数学建模与实证闭环,建议结合附录中的脚本与数据文件进行复现实践,重点关注逐顶点差分、细分递推验证与四层上限模型的构建逻辑,以深入掌握高精度数字雕刻的系统性工程方法。

公司内网软件下载站,公司内网软件下载站

公司内网软件下载站,公司内网软件下载站

Sharding-Jdbc水平分库及公共表

文章目录前言创建数据库分片规则配置数据操作测试公共表创建数据库数据操作字典操作测试 前言 垂直分库是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器 上,它的核心理念是专库专用。接下来看一下如何使用Sharding-JDBC实现垂直分库。 创建数据库 创建数据库user_db CREATE DATABASE `user_db` CHARACTER SET 'utf8' ...

batman 794

syslog_test.py

syslog_test.py

第3篇:Sharding-JDBC(版本3.0) 入门demo,纯java 代码 【了解】

同时在两个数据库中创建表t_order_0,t_order_1两个表。

小哇 847

Simulink “双碳”背景下汽车减少碳排放建模与仿真

内容概要:本文围绕“双碳”战略背景,系统阐述了基于Simulink的汽车碳排放建模与仿真技术,重点引入模糊PID控制优化动力系统性能,以实现节能减排目标。文档整合了多个Matlab/Simulink科研仿真案例,涵盖无刷直流电机(BLDC)控制、三相PWM整流器、电池管理系统、路径规划、信号处理、智能优化算法及图像处理等领域,全面展示Matlab在智能控制与绿色能源系统中的应用价值。同时强调科研应兼具严谨逻辑、创新思维与工具赋能,并提供完整的仿真资源链接与学习路径支持实践落地。; 适合人群:具备Matlab/Simulink基础,从事自动化、电气工程、车辆工程、控制科学、电力电子及智能制造等相关领域的科研人员或高年级本科生、研究生;适用于开展节能减排、新能源系统优化、智能控制算法研究等课题的研究者。; 使用场景及目标:①学习在Simulink中构建汽车能耗与排放仿真模型并应用模糊PID进行动态优化;②掌握BLDC、PWM整流器等关键部件的建模与控制策略设计;③借鉴丰富案例提升科研效率,拓展在智能控制、路径规划、信号处理等方向的应用能力;④通过提供的网盘资源获取完整代码与资料,支撑论文写作与项目开发。; 阅读建议:建议按照资源目录顺序系统学习,结合百度网盘提供的Matlab/Simulink代码动手实践,重点关注控制策略的设计、仿真结果的分析与优化过程,同时注重培养科研思维与工程实际问题的结合能力。

西部牛仔_1794033330851.apk

西部牛仔_1794033330851.apk

sharding-jdbc分库分表和全局ID(雪花算法)最简单配置

sharding-jdbc分库分表和全局ID(雪花算法)最简单配置

qq_19891197的博客 1136

状态估计变分贝叶斯近似的递归噪声自适应卡尔曼滤波(Matlab代码实现)

内容概要:本文详细介绍了一种基于变分贝叶斯近似的递归噪声自适应卡尔曼滤波方法,并配套提供了完整的Matlab代码实现。该方法旨在解决传统卡尔曼滤波在面对过程噪声和观测噪声统计特性未知或时变情况下性能退化的问题,通过引入变分贝叶斯推断技术,实现对噪声协方差的在线联合估计与动态更新,从而提升滤波器在非平稳环境中的状态估计精度与鲁棒性。文中系统阐述了算法的理论基础、数学推导流程、递归计算结构及关键实现步骤,涵盖了概率图模型构建、似然函数近似、变分迭代优化等核心技术环节,适用于复杂动态系统中的自适应信号处理与状态估计任务。; 适合人群:具备良好线性系统理论、概率统计与贝叶斯估计基础,并熟悉Matlab编程的研究生、科研人员及从事导航、控制、传感融合等相关领域的工程技术人员; 使用场景及目标:①应对实际工程中因噪声先验信息缺失或环境变化导致的标准卡尔曼滤波失效问题;②应用于无人机导航、智能驾驶、工业状态监测、传感器融合等高精度自适应估计场景,提升系统在不确定环境下的稳定性和准确性; 阅读建议:建议读者结合所提供的Matlab代码逐模块研读,重点理解变分贝叶斯迭代过程中噪声协方差矩阵的后验更新机制,并通过仿真实验对比所提方法与标准KF/EKF/UKF的估计性能差异,深入掌握噪声自适应滤波的设计思想与实现技巧。

解读分库分表中间件Sharding-JDBC

【编者按】数据库分库分表从互联网时代开启至今,一直是热门话题。在NoSQL横行的今天,关系型数据库凭借其稳定、查询灵活、兼容等特性,仍被大多数公司作为首选数据库。因此,合理采用分库分表技术应对海量数据和高并发对数据库的冲击,是各大互联网公司不可避免的问题。 虽然很多公司都致力于开发自己的分库分表中间件,但截止目前,仍无完美的开源解决方案覆盖此领域。 分库分表适用场景 分库分表用于应对当前互联...

weixin_33918114的博客 1188

PUMA:DOA估计模式的改进实现(Matlab代码实现)

内容概要:本文围绕PUMA(Propagator Method-based DOA Estimation)算法在波达方向(DOA)估计中的改进实现展开,重点在于通过Matlab编程对算法进行仿真与性能验证。作为阵列信号处理领域的高分辨率DOA估计算法,PUMA在传统方法基础上提升了估计精度与鲁棒性,尤其在低信噪比、小样本等恶劣条件下仍能保持优异性能。文中系统阐述了PUMA算法的理论基础、数学模型及其相较于MUSIC、ESPRIT等经典算法的优势,并通过仿真实验进行对比分析,展示其在分辨力、稳定性和计算效率方面的综合优势,适用于实际雷达、无线通信与电子侦察等应用场景。; 适合人群:具备信号处理、通信工程、电子信息或雷达系统等相关专业背景的研究生、科研人员及工程技术人员,熟悉阵列信号处理理论与Matlab编程环境者尤佳; 使用场景及目标:①用于学术研究中DOA估计算法的性能优化与新方法对比验证;②应用于雷达系统、5G/6G通信、智能天线、电子对抗等领域的高精度空间谱估计任务;③作为Matlab仿真实践资源,支持课程设计、学位论文复现与科研项目开发; 阅读建议:建议结合阵列信号处理基础知识体系学习本资源,重点关注PUMA算法的改进机制与核心代码实现逻辑,建议动手运行并调整仿真参数以深入理解不同因素(如阵元数、信噪比、快拍数)对估计性能的影响。

EndNote全文检索实战:如何快速配置学校图书馆资源并精准查找文献

本文详细介绍了EndNote全文检索功能的实战配置方法,核心在于通过正确设置OpenURL链接解析器,无缝对接学校图书馆资源,实现一键精准获取文献全文。文章提供了从理解机制、四步配置法到进阶技巧的完整指南,帮助科研人员高效管理海量PDF,构建个人知识体系,大幅提升文献调研与写作效率。

weixin_29228781的博客 278

sharding-jdbc分表压测报告

1、压测方案概述 在硬件完全相同的情况下,模拟线上数据量,插入370万条订单,横向对比改造前、sharding-jdbc方案、mysql分区表三者的效率。 压测接口:/order/create 数据表:order_info、order_detail 索引情况:order_info.AK_ORDER_INFO、order_info .IN_ORDER_INFO_UPDATE_TIME、ord...

liuyu2783的博客 986

ABAQUS应用15——Abaqus软件中边界条件与力学中自由度的关系

核心关系:Abaqus通过约束自由度实现边界条件,自由度类型由单元决定。正确设置步骤:确定模型类型(实体/梁/壳)。识别节点的自由度(平动或转动)。根据实际约束施加对应的自由度限制。验证:通过检查变形模式、反力分布等确认边界条件合理性。正确理解自由度与边界条件的关系,是确保有限元模型准确模拟实际物理行为的关键。

George的博客 1540

Sharding-JDBC 实战(史上最全)

文章很长,而且持续更新,建议收藏起来,慢慢读! Java 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 免费赠送 经典图书 : 极致经典 + 社群大片好评 《 Java 高并发 三部曲 》 面试必备 + 大厂必备 + 涨薪必备 免费赠送 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 大厂必备 +涨薪必备 (加尼恩领取) 免费赠送 经典图书 : 《SpringCloud、Nginx高并发核心编程》 面试必备 + 大

架构师尼恩 5万+

抖音无水印视频解析全攻略:从原理到2025实战工具推荐

短视频创作和素材整理绕不开一个基础需求:如何从抖音等平台获取不带水印的清晰视频。这背后涉及的其实是常见的链接解析与播放地址还原技术——平台对外分发带水印的地址,但源视频文件往往存在可访问的公开入口。理解这一原理,不仅能帮我们判断工具是否安全,也能避免在搜索“抖音视频解析”、“无水印视频下载”时踩坑。无论是剪辑师收集二创素材、运营人员备份品牌内容,还是普通用户保存高清视频,掌握一套稳定、合规的下载方法都很有价值。本文从水印生成机制讲起,梳理了网页工具、插件、脚本等不同实现形态的优缺点,并给出2025年仍然有效

weixin_42666036的博客 440

B站DRM视频解密流程实战解析:从密钥获取到播放全流程

本文详细解析了B站DRM视频的解密全流程,从识别加密视频、捕获关键网络请求(如playurl接口的widevine_pssh数据),到逆向分析DRM SDK的JavaScript执行逻辑,最终手动模拟EME流程获取解密密钥,并使用mp4decrypt和ffmpeg工具完成视频文件的解密与合并。文章为开发者提供了从密钥获取到播放的完整实战指南。

weixin_29290379的博客 837

记录一次使用sharding-jdbc分库分表下的压力测试过程

背景介绍: 最近我们在竞标一个项目,对方IT有几个压测要求: 1.系统用户量4亿+; 2.用户注册场景下TPS达到2000; 3.用户查询场景下TPS达到8000; 4.用户抢券秒杀场景下TPS达到8000; 5.数据库单表数据量均不能超过5000w; 6.上述所有接口响应时间不超过500ms; 拿到这个需求之后boss就找我,让我一个星期内把这个压测报告提供给对方,废话不多说,开始干活。 解决方法: 在介绍一下我的思路 1.拿到这个需求之后,我首先...

yfz792178428的专栏 776

IFIX往Mysql数据库同步数据方法

通过IFix数据库向Mysql数据库同步数据

仙人掌 1594
上一篇: 图形验证码生成及短信验证码发送流程及相关代码
下一篇: go语言从0基础到安全项目开发实战
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值