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;网…

c# mysql数据库查询语句_C# mysql 查询

展开全部|mysql> select * from test_book1;-------------------------------------------------|e68a84e8a2ad3231313335323631343130323136353331333335303534 id | name | data |-------------------------------------------------| …

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

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

运维人员mysql如何访问_mysql 运维常见操作

MySQL密码的恢复方法之一1&#xff0e;首先确认服务器出于安全的状态&#xff0c;也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间&#xff0c;MySQL数据库完全出于没有密码保护的 状态下&#xff0c;其他的用户也可以任意地登录和修改MySQL的信…

mocha 测试 mysql_node项目mocha自动化测试的疑问

测试框架&#xff1a;mocha数据库&#xff1a;mysql和mongodb疑问1. 如何控制多个测试用例的运行顺序&#xff1f;用例写多了&#xff0c;A用例把数据变成了状态1&#xff0c;有些后面的用例基于这个状态1的数据进行查询判断&#xff0c;才能使得后面的用例正常运行&#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用户可以localhost登陆_【单选题】登陆MySQL服务器,默认的用户名为 A. user B. pwd C. root D. localhost...

功能清利湿热、利胆退黄的药物是A、茵陈蒿B、猪苓C、泽泻D、滑石E、关木通舌尖上对酸味特别敏感的部位是_____。EDI的中文名称是什么&#xff1f;什么维生素能促进血液的凝固&#xff1f;当输油喷射泵故障时&#xff0c;Ⅱ组油箱是如何向Ⅲ组油箱供油的&#xff1f;A.通过溢油口…

从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、卸载任何…

mysql设置success信息_【原创】MySQL Cluster安装部署(Success)

参考&#xff1a;http://www.cnblogs.com/zhoulf/archive/2013/01/30/2883207.html安装要求安装环境&#xff1a;centos6.3(X64)软件名称 &#xff1a;mysql-cluster-gpl-7.3.8-linux-glibc2.5-x86_64.tar.gz (通用版)管理节点IP:10.61.5.51数据节点-SQL节点IP:10.61.5.52数据节…

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…

mysql怎么复制信息_mysql关于复制的一些信息参考

1.主库的复制用户密码修改后&#xff0c;在备库修改复制&#xff1a;stop slave;change master to master_user‘username‘, master_password‘password‘;start slave;2.创建复制子用户及其授权&#xff1a;GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘repl‘‘%…

java swing web_Java-JFrame-swing嵌套浏览器步骤

Java-JFrame-swing嵌套浏览器步骤一、使用swing嵌套浏览器要实现的功能&#xff1a;通过java的swing实现在一个窗体中嵌套一个浏览器&#xff0c;可以在这个浏览器中将另一个项目的内容显示出来&#xff0c;只需要回去另一个项目首页的url即可&#xff0c;这样另一个项目就可以…

java thread safe_Java 线程安全 Thread-Safety

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

java 对象复制字段_利用Java反射机制实现对象相同字段的复制

一。如何实现不同类型对象之间的复制问题&#xff1f;1、为什么会有这个问题&#xff1f;近来在进行一个项目开发的时候&#xff0c;为了隐藏后端数据库表结构、同时也为了配合给前端一个更友好的API接口文档(swagger API文档)&#xff0c;我采用POJO来对应数据表结构&#xff…

java 类确定运行时间_java回调函数实例:实现一个测试函数运行时间的工具类

下面使用java回调函数来实现一个测试函数运行时间的工具类&#xff1a;如果我们要测试一个类的方法的执行时间&#xff0c;通常我们会这样做&#xff1a;public class TestObject {/*** 一个用来被测试的方法&#xff0c;进行了一个比较耗时的循环*/public static void testMet…

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

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