zoukankan      html  css  js  c++  java
  • java 取模运算% 实则取余 简述 例子 应用在数据库分库分表

    java 取模运算%  实则取余 简述 例子 应用在数据库分库分表

    取模运算

    求模运算与求余运算不同。“模”是“Mod”的音译,模运算多应用于程序编写中。 Mod的含义为求余。模运算在数论和程序设计中都有着广泛的应用,从奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。虽然很多数论教材上对模运算都有一定的介绍,但多数都是以纯理论为主,对于模运算在程序设计中的应用涉及不多。

    取余运算区别

    对于整型数a,b来说,取模运算或者求余运算的方法都是:
    1.求 整数商: c = a/b;
    2.计算模或者余数: r = a - c*b.
    求模运算和求余运算在第一步不同: 取余运算在取c的值时,向0 方向舍入(fix()函数);而取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。
    例如:计算-7 Mod 4
    那么:a = -7;b = 4;
    第一步:求整数商c,如进行求模运算c = -2(向负无穷方向舍入),求余c = -1(向0方向舍入);
    第二步:计算模和余数的公式相同,但因c的值不同,求模时r = 1,求余时r = -3。
    归纳:当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。
    当符号不一致时,结果不一样。求模运算结果的符号和b一致,求余运算结果的符号和a一致。
    另外各个环境下%运算符的含义不同,比如c/c++,java 为取余,而python则为取模。

    java,取模运算(%)

    理论:当使用随机数生成器产生的结果时,取模运算(%)可将结果限制在上限为操作数最大值减1的范围

    解释,例如:n是随机数,那么n%10就是0~9中的一个数。无论n是多大的数,n%10只能是0~9之间的一个数,其中10就是操作数。

    JAVA取模,取余问题

    5/2=2 5%2=1对了吧????那下面的该怎么算?? 2/5=? 2%5=?

    第一个是0 第二个是2 如果不做类型转换的话结果去整数部分 所以第一个是0 第二个 0*5+2=2 所以是2

    取模MOD和求余REM……JAVA的%原来只是REM

    应用在数据库分库分表

    关于论坛数据库的设计(分表分库等-转)

    数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案

    分库分表举个简单的例子,场景mysql,目的是提高存储量,注意:表命名规范,数据库集群规范,存储查询表名获取调度程序(分了库需要先切换到对应的数据库源,再按计算出的表名去查询)。

    存储查询表名获取调度程序原理:

    分表,水平切分。比如分256张表,事先建立好user_tab0~user_tab255此命名等256张表,根据user_id取模,user_id%256=[0~255],依据取模后的值调配存储到对应的user_tab[模值] 中。

    分库,垂直切分,可以事先建立好user_db[0~19]_tab[0~255]这样命名规范的表,这个例子代表分20个库到每个库中的256张表。

     

  • 相关阅读:
    [爬虫] js
    [爬虫] appium-移动端
    如何进行代码的重构
    重写与覆盖的区别
    解决C#中FileSystemWatcher类的Changed事件触发多次的问题
    关于sqlserver 2008 远程导入表数据
    css 选择器
    前端三剑客
    前端的概述
    元类作业
  • 原文地址:https://www.cnblogs.com/svennee/p/4203977.html
Copyright © 2011-2022 走看看