MySQL存储整数ip地址的优势

ipv4的地址字符串分布为0.0.0.0->255.255.255.255,其中最小长度为7,最大长度为15。
假设其均匀分布,则需要平均占用13.28125字符,计算方法如下,如果将这些字符串存储在数据库中,则还需要一个字符记录字符串的长度,则平均需要占用14.28字符。
相比使用无符号的int(4个字符),其需要多占用10个字符,而且这个只是先对一条记录的情况下,这是一个累积的过程。

public class AddUtil {public static void main(String[] args) {List<Long> list = new ArrayList<>();// 4 1111list.add(10L * 10 * 10 * 10 * 7);// 5 2111(4)list.add(90L * 10 * 10 * 10 * 4 * 8);// 6 3111(4) 2211(6)list.add(156L * 10 * 10 * 10 * 4 * 9);list.add(90L * 90 * 10 * 10 * 6 * 9);// 7 3211(12) 2221(4)list.add(156L * 90 * 10 * 10 * 12 * 10);list.add(90L * 90 * 90 * 10 * 4 * 10);// 8 2222 3311(6) 3221(12)list.add(90L * 90 * 90 * 90 * 11);list.add(156L * 156 * 10 * 10 * 6 * 11);list.add(156L * 90 * 90 * 10 * 12 * 11);// 9 2223(4) 1233(12)list.add(90L * 90 * 90 * 156 * 4 * 12);list.add(10L * 90 * 156 * 156 * 12 * 12);// 10 2233(6) 1333(4)list.add(90L * 90 * 156 * 156 * 6 * 13);list.add(10L * 156 * 156 * 156 * 4 * 13);// 11 2333(4)list.add(90L * 156 * 156 * 156 * 4 * 14);// 12 3333list.add(156L * 156 * 156 * 156 * 15);Long result = 0L;for (Long temp : list) {//System.out.println(temp);result += temp;}long target = 256L * 256 * 256 * 256;System.out.println(result);System.out.println(target);System.out.println(average(result, target));}public static BigDecimal average(long result, long times){BigDecimal dividend = new BigDecimal(result);BigDecimal divisor = new BigDecimal(times);for (int i = 0; i < 7; i++) {System.out.println(i + " : " + dividend.divide(divisor.negate(),2,i));System.out.println(i + " : " + dividend.divide(divisor,2,i));}return dividend.divide(divisor,2,5);}
}

在这里插入图片描述
BigDecimal保留小数的计算格式

roundingMode作用
0去掉后面的直接+1
1直接截断指定的小数位,例如1.555保留2位,结果为1.55
2去掉后面(向大舍入),+1或不变取决于值的正负,正+1,负不变
3去掉后面(向小舍入),+1或不变取决于值的正负,正不变,负+1
4标准的四舍五入
5只有当舍去的部分>0.5时,才会+1,例如1.555的保留2位小数的结果时1.55
6当最后一位为奇数时,走4的舍入逻辑;当最后一位为偶数时,走5的逻辑,例如1.555、1.545保留2位小数的结果是:1.56、1.54
7计算的结果是确切的,会有指定的小数结果,否则抛出异常

执行性能分析

原文:https://bafford.com/2009/03/09/mysql-performance-benefits-of-storing-integer-ip-addresses/
在这里插入图片描述
MySQL的INET_ATON会将ipv4字符串分为4个整数,再依次将这些整数转换成对应的8位二进制,将这个4个8位二进制按照顺序连接起来,形成一个32位的二进制,一个无符号整数。
192.168.1.1
1100 0000
1010 1000
0000 0001
0000 0001
11000000101010000000000100000001
3232235777
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492608.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wagtail安装运行并结合内网穿透实现公网访问本地网站界面

文章目录 前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xf…

普中51单片机学习(LCD1602)

LCD1602 1602液晶也叫1602字符型液晶&#xff0c;它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成&#xff0c;每个点阵字符位都可以用显示一个字符&#xff0c;每位之间有一个点距的间隔&#xff0c;每行之间也有间隔&#…

亿道丨三防平板丨手持平板丨加固平板丨助力地震救援

自土耳其发生7.8级大地震以来&#xff0c;一直都牵动着世人的心。2023年2月10日&#xff0c;据法新社最新消息&#xff0c;强震已造成土耳其和叙利亚两国超2万人遇难。报道称&#xff0c;相关官员和医护人员表示&#xff0c;地震造成土耳其17674人死亡&#xff0c;叙利亚则有33…

面试总结之JVM入门

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;你为什么要学习JVM&#xff1f;&#x1f380;JVM的作用 &#x1f380;JVM的构成&#xff08;5大类&#xff09;&#x1f3e8;1.类加载系统&#x1f415;类什么时候会被加…

游戏配置内存“瘦身”策略

背景 游戏配置数据绝对是游戏服务器进程的内存大头,有些游戏服务器单纯数据配置的容量就超过一个G。因此,这部分内存优化也就放在首要位置了。 优化策略 在《服务器进程如何降低内存》一文中,我们讲述了可以通过“优化游戏配置缓存”来降低游戏服务器进程的内存使用量。本…

linux系统---nginx基础

目录 一、Nginx的概念 二、Nginx常用功能 1、HTTP(正向)代理&#xff0c;反向代理 1.1正向代理 1.2 反向代理 2、负载均衡 2.1 轮询法&#xff08;默认方法&#xff09; 2.2 weight权重模式&#xff08;加权轮询&#xff09; 2.3 ip_hash 3、web缓存 三、基础特性 四…

品牌营销如何打破内卷?从价值出发

说起品牌营销&#xff0c;大家的想法是什么&#xff1f;有人认为最难的模块在推广&#xff0c;而说到推广&#xff0c;默认就是几个主流社媒的组合。然而在当下大家推广都陷入到同一个困境&#xff1a;那就是流量成本越来越高&#xff0c;转化率低等问题&#xff0c;媒介盒子认…

五招促进AI和ML实现自动化测试

近年来&#xff0c;人工智能(AI)和机器学习(ML)技术正在蓬勃发展&#xff0c;诸如&#xff1a;自动驾驶汽车、机器人、以及Amazon的Alexa等应用&#xff0c;都深刻地影响和改变着我们的日常生活。当然&#xff0c;随着此类智能应用和设备使得我们的生活越来越轻松&#xff0c;大…

鸿蒙开发 之 ArkTsUI基础组件

介绍 ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开发者可以以更…

vue2和vue3 setup beforecreate create生命周期时间比较

创建一个vue程序&#xff0c;vue3可以兼容Vue2的写法&#xff0c;很流畅完全没问题 写了一个vue3组件 <template><div></div> </template><script lang"ts"> import {onMounted} from vue export default{data(){return {}},beforeCr…

044-WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式

044-WEB攻防-PHP应用&SQL盲注&布尔回显&延时判断&报错处理&增删改查方式 #知识点&#xff1a; 1、PHP-MYSQL-SQL注入-方式增删改查 2、PHP-MYSQL-SQL注入-布尔&延迟&报错 3、PHP-MYSQL-SQL注入-数据回显&报错处理 演示案例&#xff1a; ➢PHP…

05 Flink 的 WordCount

前言 本文对应于 spark 系列的 Spark 的 WordCount 这里主要是 从宏观上面来看一下 flink 这边的几个角色, 以及其调度的整个流程 一个宏观 大局上的任务的处理, 执行 基于 一个本地的 flink 集群 测试用例 /*** com.hx.test.Test01WordCount** author Jerry.X.He* ver…