① 如何快速生成 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並列印到標准輸出的控制台上。
方法一: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
操作鏈接:網頁鏈接
③ 什麼是SSIDand UUID
看似一樣,其實不一樣,很讓人混淆的,一個ESS的多個AP可分屬於不同的SSID,故SSID不應該稱為ESSID。SSID(Service Set Identifier),用來區分不同的網路,最多可以有32個字元,無線網卡設置了不同的SSID就可以進入不同網路,SSID通常由AP廣播出來,通過XP自帶的掃描功能可以相看當前區域內的SSID。出於安全考慮可以不廣播SSID,此時用戶就要手工設置SSID才能進入相應的網路。簡單說,SSID就是一個區域網的名稱,只有設置為名稱相同SSID的值的電腦才能互相通信。 禁用SSID廣播 通俗地說,SSID便是你給自己的無線網路所取的名字。需要注意的是,同一生產商推出的無線路由器或AP都使用了相同的SSID,一旦那些企圖非法連接的攻擊者利用通用的初始化字元串來連接無線網路,就極易建立起一條非法的連接,從而給我們的無線網路帶來威脅。因此,筆者建議你最好能夠將SSID命名為一些較有個性的名字。 無線路由器一般都會提供「允許SSID廣播」功能。如果你不想讓自己的無線網路被別人通過SSID名稱搜索到,那麼最好「禁止SSID廣播」。你的無線網路仍然可以使用,只是不會出現在其他人所搜索到的可用網路列表中。 小提示:通過禁止SSID廣播設置後,無線網路的效率會受到一定的影響,但以此換取安全性的提高,筆者認為還是值得的。 測試結果:由於沒有進行SSID廣播,該無線網路被無線網卡忽略了,尤其是在使用Windows XP管理無線網路時,達到了「掩人耳目」的目的。UUID(Universal Unique Identifier)是這幾單詞的簡寫罷了,我們就譯它全球唯一標識這個名稱。它真的永遠能唯一標識嗎?它是如何生成的呢?生成的工具有哪些呢?是由何而來呢?下面我來談一下我的認識。 能永遠唯一標識嗎?對於這個問題。我們還是先來認識一下UUID,UUID其實就是一個字元串,它是一個有且僅有128位的字元串,也就是則殲團16個位元組了,如uuid(c37c9ab7-9fc5-4ecb-9e9f-71ae06156f74)。它的表現形式(就是說寫法)上有幾種。表示的字元是0~f。共有32個這樣的字元,那麼32的16次方可供使用,所以肯定不能永遠的唯一,隨著發展肯定會有更好表示了。 生成的工具有哪些呢?就Visual studio 這個集成開發環境,它帶了兩個生成UUID的工具,一個是界面形式的,一個是CONSOLE形式的。可以VS安裝目錄下的BIN文件夾下找到這兩個工具,GUIDGEN.exe這個帶有界面形式的工具,它可以根據你的要求生成指定格式的UUID。還有一個UUIDGEN.exe這個是CONSOLE形式的生成工具,它可以直接輸出UUID到一個文件中去。看看幫助都會用。這里不詳述。 如何生成的呢?很多是根據計算機上的網卡地址(不同計算機上的網卡地址是唯一的),再根據生成的時間來產生的(這就本機上生成的GUID不會重孫橘復)。網卡地址佔用48位,而時間標戳佔用60位。或許有的生成UUID的計算機沒有網卡,那就會用另一套演算法來生成了。就上面介紹的這改棗兩個工具來說它們的生成都會調用COM庫中的CoCreateGuid這個函數,這個函數最終又調用UuidCreate函數來生這個UUID標識串。 UUID最初是由OSF(開放軟體基金會提出來的)當時也出於DCE的需求而定義。它是用來標識一個唯一的被調用者。
④ 電腦uuid可以當windows激活碼
uuid是生成電腦唯一識別碼工具,uuid它和windows激活碼互不相干。
如果你要安裝win8專業版//企業版網上現在就有在線聯網激活密鑰MAK
⑤ 怎麼使用kettle進行增量數據的抽取
使用工具:
kettle
首先需要考慮的問題是不可能是全量進行數據的拷貝,數據量如此龐大!
那麼就得考慮增量,何為增量去網路。。哈哈哈
至於如何增量抽取數據,有很多種辦法,我這里示範的是通過時間去增量抽取(因為剛好別人的庫中每條記錄的時間記錄的都相當詳細,所以我認為這個比較好)。
首先創建好實例庫:
SQL> desc timejob; Name Type Nullable Default Comments --------- ------------ -------- ------- -------- UUID VARCHAR2(36) Y BEGINTIME DATE Y
1
2
3
4
5
SQL> desc timejob_bak; Name Type Nullable Default Comments --------- ------------ -------- ------- -------- UUID VARCHAR2(36) Y BEGINTIME DATE Y
1
2
3
4
5
kettle中有自動生成UUID的功能,所以直接拿過來耍,為了簡潔方便,欄位使用比較少。
首先利用kettle自動生成測試數據:
主要生成UUID和當前系統時間到timejob表中(每隔2s執行一次),我們後續的操作都是對這張表中的數據進行一個備份。
下面第二步就是抽取該表中的數據到一個備份表中,timejob_bak。
這里由於是我第一次操作,比較簡單,就直接上圖了。。
獲得上次操作時間和系統時間存到變數中:
這里的開始時間是通過表數據選項獲得上一次操作的最終結束時間,以作為我此次增量抽取的開始時間。第二個變數是獲得系統的當前時間。
根據時間抽取timejob表中的數據:
獲取變數的寫法:
此處獲取的變數就是上一步存入的變數,下面的抽取增量數據就是一個sql,從timejob表中抽取數據,存數據就是一個表輸出。
抽取數據sq