① 如何快速生成 UUID GUID
通用的GUID的結構如下
typedef struct _GUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} GUID;
舉一個例子:
假設一個GUID的格式是這樣的 6B29FC40-CA47-1067-B31D-00DD010662DA
其中Data1 是32位,可以看做8個四位十六進制數,對應於上面的6B29FC40
其中Data2 是16位,可以看做4個四位十六進制數,對應於上面的CA47
其中Data3 是16位,可以看做4個四位十六進制數,對應於上面的1067
其中Data4 比較特殊,是8個位元組也就可以看做16個四位十六進制數
取其Data4[0],Data4[1]來組成4個四位十六進制數,對應於上面的B31D
取其Data4[2],Data4[3]來組成4個四位十六進制數,對應於上面的00DD
取其Data4[4],Data4[5]來組成4個四位十六進制數,對應於上面的0106
取其Data4[6],Data4[7]來組成4個四位十六進制數,對應於上面的62DA
*注意:四位十六進制數對應一個GUID字元。
在Windows下提供了一個函數可以生成一個GUID。需要使用的頭文件 "objbase.h",需要鏈接的庫ole32.lib。
HRESULT CoCreateGuid(GUID * pguid);
在Linux下首先需要下載到相應的庫文件和頭文件
如果是Debian用戶可以方便的通過apt命令來獲取相關資源。
apt-get install uuid-dev
安裝完成後會發現
在/usr/include/ 下有一個uuid文件夾,其中則包含了uuid.h頭文件。
在/usr/lib/ 下有幾個libuuid*的鏈接庫文件,包括靜態和動態鏈接庫。
打開uuid.h你會發現有一個uuid_generate(uuid_t out) 的函數聲明。我們可以通過調用這個函數來生成UUID。
uuid_generate(reinterpret_cast<unsigned char *>(&guid));
生成GUID是不是很簡單!是的,因為生成的演算法不用我們去實現,我們是站在前人的肩膀所以我們要感謝他們。
下面給出一個WINDOWS和LINUX下通用的程序。
// uuid_test.cpp
#include <string>
#include <stdio.h>
#include <iostream>
#include "uuid_test.hpp"
#ifdef WIN32
#include <objbase.h>
#else
#include <uuid/uuid.h>
#endif
using namespace std;
namespace ChinuxTeam
{
GUID CreateGuid()
{
GUID guid;
#ifdef WIN32
CoCreateGuid(&guid);
#else
uuid_generate(reinterpret_cast<unsigned char *>(&guid));
#endif
return guid;
}
std::string GuidToString(const GUID &guid)
{
char buf[64] = {0};
#ifdef __GNUC__
snprintf(
#else // MSVC
_snprintf_s(
#endif
buf,
sizeof(buf),
"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
guid.Data1, guid.Data2, guid.Data3,
guid.Data4[0], guid.Data4[1],
guid.Data4[2], guid.Data4[3],
guid.Data4[4], guid.Data4[5],
guid.Data4[6], guid.Data4[7]);
return std::string(buf);
}
}
對應的頭文件
// uuid_test.hpp"
#include <string>
#include <stdio.h>
#include <iostream>
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID, UUID;
namespace ChinuxTeam
{
GUID CreateGuid();
std::string GuidToString(const GUID &guid);
}// namespace ChinuxTeam
最後一個 GuidToString()稍微解釋一下,作用就是把GUID以固定的格式輸出到標准string字元串中,
根據編譯器的不同調用分別調用了不同的字元串列印函數。
另外附一個簡單的測試函數
#include <string>
#include <stdio.h>
#include <iostream>
#ifdef WIN32
#include "objbase.h"
#else
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID, UUID;
#endif
namespace ChinuxTeam{
GUID CreateGuid();
std::string GuidToString(const GUID &guid);
}
運行後會生成一個GUID並列印到標准輸出的控制台上。
② 如何用javascript獲取UUID
有很多辦法, 例如下面的代碼
演算法一:
js">functionuuid(){
vars=[];
varhexDigits="0123456789abcdef";
for(vari=0;i<36;i++){
s[i]=hexDigits.substr(Math.floor(Math.random()*0x10),1);
}
s[14]="4";//bits12-15ofthetime_hi_and_versionfieldto0010
s[19]=hexDigits.substr((s[19]&0x3)|0x8,1);//bits6-7oftheclock_seq_hi_and_reservedto01
s[8]=s[13]=s[18]=s[23]="-";
varuuid=s.join("");
returnuuid;
}
演算法二:
functionguid(){
return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){
varr=Math.random()*16|0,v=c=='x'?r:(r&0x3|0x8);
returnv.toString(16);
});
}
演算法三:
functionguid(){
functionS4(){
return(((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
return(S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
等等
③ js中如何產生uuid
UUID(Universally Unique IDentifier) 全局唯一標識符。
UUID是一種由演算法生成的二進制長度為128位的數字標識符。UUID
的格式為「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」,其中的 x 是 0-9 或 a-f
范圍內的一個32位十六進制數。在理想情況下,任何計算機和計算機集群都不會生成兩個相同的UUID。
UUID的總數達到了2^128(3.4×10^38)個,所以隨機生成兩個相同UUID的可能性非常小,但並不為0。
演算法如下:
function uuid() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
}
④ 什麼是UUID,Java中怎麼產生UUID
GUID是一個128位長的來數字,一源般用16進製表示。演算法的核心思想是結合機器的網卡、當地時間、一個隨機數來生成GUID。從理論上講,如果一台機器每秒產生10000000個GUID,則可以保證(概率意義上)3240年不重復。
UUID是1.5中新增的一個類,在java.util下,用它可以產生一個號稱全球唯一的ID。
import java.util.UUID;
public class Test {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println (uuid);
}
}
⑤ JS調用COM組件是什麼意思
在js下面直接將function傳給這個屬性,com組件裡面調用這個IDispatch的函數即可。
idl文件,注意onevent1這里。
[plain] view plain
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(6A6140E8-9356-4FBD-B0FD-04508D336B17),
al,
nonextensible,
pointer_default(unique)
]
interface IComClassTest : IDispatch{
[id(1)] HRESULT Method1(BSTR arg1);
[propget, id(2), bindable, displaybind] HRESULT onevent1([out, retval] VARIANT* pVal);
[propput, id(2), bindable, displaybind] HRESULT onevent1([in] VARIANT newVal);
};
[
uuid(97157E1C-637C-4962-B069-96E70F572A99),
version(1.0),
]
library ATLProject3Lib
⑥ js中src這句話代表什麼意思啊
代表引入的js文件的路徑。
#uuid=<你注冊的分享 ID>&style=3&fs=3&textcolor=#fff&bgcolor=#F60&text=分享到..
這幾個都是傳遞的參數值,類似於函數裡面的入參。
⑦ 微信小程序 怎麼用第三方js庫 jquery
方法一:rpn.js:使用rpn.js實現eval函數功能
操作鏈接:網頁鏈接
方法二:
(1)使用Underscore.js:操作鏈接:網頁鏈接
(2)使用Immutable.js:操作鏈接:網頁鏈接
(3)使用UUID、Base64、Chance:操作鏈接:網頁鏈接
擴展微信小程序框架功能(1)——Promise
ES6 對 Promise 有了原生的支持,但微信開發者工具更新版本(0.11.112200)後, 移除了開發者工具對 ES6 中Promise 特性原生的支持, 需要引入第三方的 Promise 庫。
擴展微信小程序框架功能(2)——Generator
Generator函數是ES6提供的一種非同步編程解決方案,語法行為與傳統函數完全不同。
擴展微信小程序框架功能(3)——函數功能增強
Underscore.js 和 Lodash 是最常用的JavaScript庫。
擴展微信小程序框架功能(4)——Immutable.js
Immutable.js 是 Facebook 開發的不可變數據集合。Immutable
Data(不可變數據)一旦創建就不能被修改。通過使用Immutable
Data,可以更容易的處理緩存、回退、數據變化檢測等問題,應用開發更簡單。
擴展微信小程序框架功能(5)——Rex
Rex 是 JavaScript 狀態容器,提供可預測化的狀態管理。
擴展微信小程序框架功能(6)—日期時間
Moment.js是一個JavaScript的日期、時間處理工具類,其對於JavaScript的日期時間處理功能非常強悍和全面。可以用在瀏覽器環境中使用,也可以在Node.js中。
擴展微信小程序框架功能(7)——正則表達式
XRegExp 是一個開源的 JavaScript庫,提供一個參數化、可擴展的支持各種瀏覽器的正則表達式的實現庫,支持附加語法、標志以及方法。
擴展微信小程序框架功能(8)——Xml處理
x2js是一個 實現 XML 與 JavaScript 對象之間相互轉換的工具庫。
擴展微信小程序框架功能(9)——加解密
node-uuid可以快速地生成符合規范 的 UUID。js-base64可以實現Base64編碼和解碼。crypto-js可以非常方便地在 JavaScript 進行加解密。
擴展微信小程序框架功能(10)——測試輔助
Chance是一個 JavaScript 隨機數生成工具。Mock.js可以生成隨機數據,攔截 Ajax 請求。
方法三:moment
操作鏈接:網頁鏈接
⑧ js如何生成唯一標識符UUID
可以用這個方法
functiongenerateUUID(){
vard=newDate().getTime(),
uuid='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){
varr=(d+Math.random()*16)%16|0;
d=Math.floor(d/16);
return(c=='x'?r:(r&0x3|0x8)).toString(16);
});
returnuuid;
};