原文链接:http://blog.csdn.net/tbkken/article/details/8210952
在优化关系数据库的关联查询的时候,ON的字段选择为数值型,必须是会比字符型的数据快很多的,那么如何将一个字符型的数据,唯一性地转为数值型呢?
 
一般我们会采用CRC32函数进行这个转换,CRC32会把字符串,生成一个long长整形的唯一性ID(虽然科学证明不绝对唯一,但是还是可用的)。
 
下面提供Java、Python以及MySQL的转换方法:
 
在MySQL数据库中,可以使用CRC32直接对字符串进行编码:
 
SELECT CRC32('hello-world')
 
2983461467
 
在Java中,也是使用CRC32类,进行字符串编码:
 
CRC32 crc32 = new CRC32();
crc32.update("hello-world".getBytes());
System.out.println(crc32.getValue());
 
2983461467
 
经过测试,和MySQL返回的值一致。
 
最后是Python,使用binascii包的crc32方法:
 
import binascii
print(binascii.crc32(b"hello world"))
 
222957957

java crc32的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. CRC32 vs Java.HashCode

    找了容量为27万中文词库进行试验    CRC32 中冲突率 < 0.01%    而 Java.HashCode 有 4%    hashCode 的速度 应该比 CRC 快 2-3 倍 CR ...

  3. JAVA计算文件的crc32校验码

    import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java ...

  4. 将C语言的CRC32 代码转成JAVA的CRC32 代码

    public class CustomerCRC32 { private static long[] crc32Table = new long[256]; static { long crcValu ...

  5. 20个非常有用的Java程序片段

    下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...

  6. 负载均衡-基础-一致性哈希算法及java实现

    一致性hash算法,参考: http://www.blogjava.net/hello-yun/archive/2012/10/10/389289.html 针对这篇文章,加入了自己的理解,在原有的代 ...

  7. Java程序员的日常—— FileUtils工具类的使用

    package cn.xingoo.learn.commons; import org.apache.commons.io.FileUtils; import org.apache.commons.i ...

  8. Java程序片段

    下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 ? 1 2 String a = String.valueOf(2);   //integer to numer ...

  9. java ZipOutputStream压缩文件,ZipInputStream解压缩

    java中实现zip的压缩与解压缩.java自带的 能实现的功能比较有限. 本程序功能:实现简单的压缩和解压缩,压缩文件夹下的所有文件(文件过滤的话需要对File进一步细节处理). 对中文的支持需要使 ...

随机推荐

  1. Confluence 6 上传一个附加文件的新版本

    有下面 2 种方法来上传一个附加文件的新版本,你可以: 上传与已有附件具有相同文件名的版本. 使用 上传一个新版本(Upload a new version)   按钮来进行上传(这个在文件预览界面中 ...

  2. element-ui多重下拉列表的使用

    template <div class="block"> <span class="demonstration">默认 click 触发 ...

  3. Linux之vnc启动及异常处理

    1)启动桌面1的服务 [root@testdb ~]# vncserver :1 New 'testdb:1 (root)' desktop is testdb:1 Starting applicat ...

  4. super 和 this 的区别

    一 this和super关键字区别 1.子类的构造函数如果要引用super的话,必须把super放在函数的首位.2.super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)3.t ...

  5. Vue 新手学习笔记:vue-element-admin 之安装,配置及入门开发

    所属专栏: Vue 开发学习进步 说实话都是逼出来的,对于前端没干过ES6都不会的人,vue视频也就看了基础的一些但没办法,接下来做微服务架构,前端就用 vue,这块你负责....说多了都是泪,脚手架 ...

  6. HTTP服务器(2)

    import socket import re import multiprocessing def service_client(new_socket): """为这个 ...

  7. 关于MongoDB在windows下安装【解压版】

    一.首先创建数据库存储文件夹和日志文件夹,在mongodb下创建即可,找起来也方便,日志文件:mongo.log,安装出错方便查阅问题: 二.启动MongoDB服务:注意:一定要用管理员身份运行DOS ...

  8. win10无法连接windows服务器,无法连接SENS服务

    本文链接:https://blog.csdn.net/weixin_38374974/article/details/80475566 膜拜大佬 首先,进入windows界面的时候,前期加载速度变得极 ...

  9. Nexus3.x帐号权限配置

    一.使用admin登录后,点击上方齿轮图标 二.打开左侧导航,Security Privileges:具体的权限明细,比如我创建一个test仓库,这里就会生成 Roles:添加角色,设置每个角色可看到 ...

  10. rocketmq的以集群模式MessageModel.CLUSTERING实现消费者集群消费消息,实现负载均衡

    package com.bfxy.rocketmq.model; import java.util.List; import org.apache.rocketmq.client.consumer.D ...