repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...

在我们的开发过程中,经常会遇到ID生成的问题,那么这里就介绍一种解决方案,注意这里只适合混淆ID规则,也就是说生成的ID没有任何规则,不适用于订单ID。

一般有序自增主键的ID,极易被爬虫抓取数据,作为应用开发者,这是不应该的,你辛辛苦苦收集的数据转眼之间被其他人给抓取了,是不是很大的损失?

话说著名的Youtube网站就是这么做的。

今天我们介绍的一个支持市面上所有语言的数字编码库hashids

hashids

c3adbcf8da085fc49d9716907a18fc11.png

Hashids是一个非常小巧的跨语言的开源库,它用来把数字编码成一个随机字符串。它不同于md5这种算法这种单向映射,Hashids除了编码还会解码。

如果转换方式一样,那么同一字符串得到的结果是相同的。

Hashids hashids= new Hashids("this is my salt");//加密数字1String hashStr = hashids.encode(1);System.out.println("1加密后值为:"+hashStr);//解密数字1long[] hashNums = hashids.decode(hashStr);for (int i = 0; i < hashNums.length; i++) {    System.out.println("解密后值为:" + hashNums[i]);}

hashids自定义设置最小哈希长度

支持设置加密后的字符串长度

Hashids hashids = new Hashids("this is my salt",6);  //加密数字1String hashStr = hashids.encode(1);System.out.println("自定义哈希长度加密1后值为:"+hashStr);  //解密数字1 long[] hashNums = hashids.decode(hashStr);for (int i = 0; i < hashNums.length; i++) {    System.out.println("自定义哈希长度解密1后值为:" + hashNums[i]);  }

hashids自定义设置哈希字母表

支持设置哈希字母表,不过最少长度应该是16位,这里没有具体的测试。

Hashids hashids = new Hashids("this is my salt", 0, "0123456789ABCDEF");  String hashStr = hashids.encode(1);  System.out.println("自定义哈希字母表加密1后值为:" + hashStr);long[] hashNums= hashids.decode(hashStr);for (int i = 0; i < hashNums.length; i++) {    System.out.println("自定义哈希字母表解密1后值为:" + hashNums[i]);  }

使用

安装,npm包地址:https://www.npmjs.com/package/hashids

npm install hashids

在PHP中的使用方法:

$hashids = new HashidsHashids('this is my salt');$id = $hashids->encode(1, 2, 3);$numbers = $hashids->decode($id);

在NodeJs中使用

const Hashids = require('hashids/cjs');const hashids = new Hashids('', 11);hashids.encode(20);

在JS中使用

在使用过程中,该方法不可用来作为加密使用。

项目地址请点击扩展链接

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

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

相关文章

bootstracp实现树形列表_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性...

实现负载均衡是后端领域一个重要的话题&#xff0c;一致性哈希算法是实现服务器负载均衡的方法之一&#xff0c;你很可能已在一些远程服务框架中使用过它。下面我们尝试一下自己实现一致性哈希算法。一. 简述一致性哈希算法这里不详细介绍一致性哈希算法的起源了&#xff0c;网…

系统分析师和系统架构设计师难度比较_系统架构设计师,马上开课了!

一年只考一次的系统架构设计师7月7日通关指南开课系统架构设计师考试&#xff0c;是2009年11月计算机资格考试新增专业&#xff0c;这个级别属于高级资格考试。与该考试同级别的还有系统分析师、信息系统项目管理师、系统规划与管理师以及网络规划设计师。系统架构设计师每年考…

pythonhelloworld实例_Python基于Tkinter的HelloWorld入门实例

本文实例讲述了Python基于Tkinter的HelloWorld入门实例。分享给大家供大家参考。具体分析如下&#xff1a;初学Python&#xff0c;打算做几个Tkinter的应用来提高。刚学的HelloWorld&#xff0c;秀一下。我用Python3.2的&#xff0c;Windows版本的。源代码如下&#xff1a; #导…

tensorflow提取mel谱特征_【脑电信号分类】脑电信号提取PSD功率谱密度特征

点击上面"脑机接口社区"关注我们更多技术干货第一时间送达本文是由CSDN用户[frostime]授权分享。主要介绍了脑电信号提取PSD功率谱密度特征&#xff0c;包括&#xff1a;功率谱密度理论基础、matlab中PSD函数的使用介绍以及实验示例。感谢 frostime&#xff01;1. 序…

从mysql中取出代理ip_GitHub - lican09/IPProxyTool: 抓取大量免费代理 ip,提取有效 ip 使用...

IPProxyTool使用 scrapy 爬虫抓取代理网站&#xff0c;获取大量的免费代理 ip。过滤出所有可用的 ip&#xff0c;存入数据库以备使用。可以访问我的个人站点&#xff0c;查看我的更多有趣项目 awolfly9个人项目欢迎加微信吐槽如果在使用中有任何疑问&#xff0c;或者项目中有任…

docker卸载 windows版本_DevOps系列 006 - Docker安装

这是DevOps系列的第六节&#xff0c;我们开始安装DockerDebian 上安装可以基于最新debian10的发行版&#xff0c;我现在还用着debian9&#xff0c;不过随后&#xff0c;我会发出Windows / macOs / Ubuntu的参考。安装如果您已经是root用户&#xff0c;则无需使用sudo1、卸载任何…

tab vue 竖排_vue 实现tab切换保持数据状态

页面做tab切换&#xff0c;由于组件每一次切换都会重新实例化组件&#xff0c;我们想要页面不论怎么切换都仍然保持tab里面的内容不会刷新&#xff0c;减少页面重新渲染以及减少请求实现方法&#xff1a;使用包裹组件 列表页面跳转详情 &#xff0c;列表页面保持上一次操作状态…

multisim连接MySQL_首次使用Multisim软件进行电路仿真设计

第一次接触使用Multisim进行电路仿真设计&#xff0c;通过使用这款软件&#xff0c;从中也学习到了很多东西&#xff0c;在这里想简单介绍一下这款软件的最主要也是最重要的功能和特点。创建电路&#xff0c;必定要放置元器件&#xff0c;这就需要用到元器件工具栏&#xff0c;…

mysql到pg怎么高效_干货 | Debezium实现Mysql到Elasticsearch高效实时同步(示例代码)

题记来自Elasticsearch中文社区的问题——MySQL中表无唯一递增字段&#xff0c;也无唯一递增时间字段&#xff0c;该怎么使用logstash实现MySQL实时增量导数据到es中&#xff1f;logstash和kafka_connector都仅支持基于自增id或者时间戳更新的方式增量同步数据。回到问题本身&a…

java thread safe_Java 线程安全 Thread-Safety

在 Java 的线程安全是老生常谈的问题。经常是各种写法说法一大堆&#xff0c;感觉很多的来源都是在面试的时候&#xff0c;很多考官都喜欢问线程安全的问题。起源这个问题的起源就是 Java 是支持多线程的。如果对进程和线程是什么不太清楚的话&#xff0c;可以恶补下大学课程《…

java socket调用接口_Java中socket接口调用

最近一个项目中接口通讯这一块主要是调用银联系统的socket接口&#xff0c;我方是客户端&#xff0c;即发送请求接收返回报文的一方。在贴代码之前&#xff0c;还是要了解一下关于socket的基础知识。Socket的基本概念1&#xff0e;建立连接当需要建立网络连接时&#xff0c;必须…

protobuf java 编译_Maven项目中,编译proto文件成Java类

新建Maven项目新建一个 Maven 项目&#xff1a;pom定义了最小的maven2元素&#xff0c;即&#xff1a;groupId,artifactId,version。 groupId:项目或者组织的唯一标志&#xff0c;并且配置时生成的路径也是由此生成&#xff0c;如org.codehaus.mojo生成的相对路径为&#xff1a…

python灰色关联度分析代码_灰色关联分析法步骤 - osc_uwnmtz9n的个人空间 - OSCHINA - 中文开源技术交流社区...

https://wenku.baidu.com/view/dc356290af1ffc4fff47ac0d.html?rec_flagdefault&sxts1538121950212利用灰色关联分析的步骤是&#xff1a;1&#xff0e;根据分析目的确定分析指标体系&#xff0c;收集分析数据。设n个数据序列形成如下矩阵&#xff1a;其中m为指标的个数&a…

aio 系统原理 Java_Java新一代网络编程模型AIO原理及Linux系统AIO介绍

从JDK 7版本开始&#xff0c;Java新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了)&#xff0c;包含了众多性能和功能上的改进&#xff0c;其中最重要的部分&#xff0c;就是对异步io的支持&#xff0c;称为Java AIO(asynchronous IO)。因为AIO的实…

java请假审批怎么实现_java实现请假时间判断

笔记:需求分析:每周上班6天夏季早上8:30-12:00下午14:00-17:30冬季早上8:30-12:00下午14:30-18:00请假最低为半天按照上午8:00-12:00,下午14:00-18:00计算,包括了夏季和冬季时间,规律分布如下public String getDouble(HttpServletRequest request) throws ParseException {//参…

java原子整数_多线程(四、原子类-AtomicInteger)

案例10个线程并发累加一个整数&#xff0c;每个线程累加1000&#xff0c;保证线程安全Unsafe类&#xff0c;来源于sun.misc包。该类封装了许多类似指针操作&#xff0c;可以直接进行内存管理、操纵对象、阻塞/唤醒线程等操作。package com.jane;import java.util.ArrayList;imp…

java 极客_Java极客思维

​开篇介绍大家好&#xff0c;公众号【Java极客思维】近期会整理一些Java高频面试题分享给小伙伴&#xff0c;也希望看到的小伙伴在找工作过程中能够用得到&#xff01;本章节主要针对Java一些消息中间件高频面试题进行分享。通知&#xff1a;公众号【Java极客思维】正在送书福…

java拼三级魔方_魔方秘籍(详细解法)《三阶》

魔方根据视频理解&#xff1a;上 下 左 右先将白面变好&#xff1a;(1).变一个白十字(如图所示)(2).转好以后检查十字的四个角的颜色(蓝绿红橙)与旁边面上的中心块的颜色是否相同。(有两个相同的时&#xff0c;如果它们相邻&#xff0c;就一个放在后面&#xff0c;一个放在左面…

pHp30充电宝能用快充吗,65W快充 30分钟充满电 是时候淘汰充电宝了吗?

在过去的一年里&#xff0c;手机快充技术有了新的突破&#xff0c;OPPO推出了65W快充。无独有偶&#xff0c;联想拯救者电竞手机的预热宣传中&#xff0c;号称搭载90W快充。有评测称&#xff0c;使用65W快充&#xff0c;30分钟可以充满一块4000mAh容量的电池&#xff0c;使用90…

matlab画圆柱,Matlab 画三维圆柱体

主要学习了画空间圆柱体和空间长方形的绘制方法。有两个surface property&#xff1a;FaceColor和EdgeColor’;先讲FaceColor’&#xff0c;它指定了surface画出曲面的颜色&#xff0c;可以是[r,g,b]的一个向量&#xff0c;分别表示了红绿蓝的颜色配比&#xff1b;也可以是inte…