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.pswp.cn/news/533076.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533076.shtml
英文地址,請注明出處:http://en.pswp.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;必須…