是否有以c#或算法生成的備用庫,以類似的方式生成唯一值vfp使用sys 2015命令。sys 2015 vfp命令的備用
回答
獨特的ID可以用許多不同的方式生成。 SYS(2015)
只有在給定的過程中才是唯一的,您可以通過將全局整數計數器放入臨界區域來獲得。
如果你想看到類似於SYS(2015)
的東西,那麼你可以使用GetSystemTimeAsFileTime()
,將最後一次分配的值存儲在受關鍵部分保護的全局變量中。如果當前值不大於最後一個值,則遞增最後一個值並返回該值。通過這種方式,如果競爭激烈,身份證可以在當前時間之前運行一段時間,但實時性會在慢速時段趕上。作爲編碼,您可以使用base64,剝離「=」並以適當的方式替換字符「/」和「+」。
如果你想創建一個有可能在給定的機器上唯一的文件名,那麼你可以比散列機器名,進程ID,線程ID和系統時間的級聯做差了不少(UNC爲FILETIME) 。你可以使用散列的base64表示的左邊八個字符(用'$'和'_'代替'/'和'+')來獲取可用作標識符,列名等的名稱。這些名稱並不是唯一的 - 它們碰撞的可能性相對較低。通過在名稱中使用更多的哈希字符,您可以獲得儘可能低的碰撞可能性。
另一種方法是直接使用上述連接,在做一些格式化和替換操作後,使其與您想要的名稱域兼容。例如。將id生成的進程ID,線程ID和UNC文件時間轉換爲十六進制,並插入合適的分隔符。然後,只要機器名稱是唯一的,就可以保證在整個網絡中唯一的ID。
如果您需要在給定機器或網絡上保證唯一的短名稱,那麼您可以使用受合適IPC機制保護的全局計數器。最簡單的方法是將計數器放到一個表中,並依靠數據庫引擎(例如FoxPro)獲取必要的IPC。
或者您可以將計數器放入.ini文件並使用Win32字節範圍鎖定或互斥文件(管理創建空專用互斥文件的人對.ini具有鎖定)。
另一種選擇是使用一個二進制文件 - 純粹的巧合 - 看起來像一個有效的.DBF文件,並使用鎖定協議 - 純粹的巧合 - 與VFP的鎖定協議兼容。這意味着甚至C#或Delphi都可以從VFP用自己的Foxy方式管理的id表中獲取整數id。我在生產中使用了這樣一個模塊,並結合共享內存訪問方法(只是一個用於獲取新ID的裸InterlockedIncrement()),可以在所有使用者都在同一臺機器上運行時使用。
可能性實際上是無止境的,但只有在知道具體要求時才能提出具體建議。
一個比SYS(2015)更妙的是:
var uniqueValue = Guid.NewGuid();
- 1. VFP擦除命令拋出錯誤1105
- 2. python sys library命令提示符
- 3. 準備更新命令使用的sed
- 4. visual studio 2015調試命令
- 5. Visual Studio 2015命令窗口
- 6. VS 2015 - EF遷移命令
- 7. Visual Studio 2015:命令「View.SynchronizeClassView」不可用
- 8. 備用命令開始
- 9. npm中的自定義命令tfs 2015
- 10. 真實,用戶和sys在Linux中time命令
- 11. visual studio 2015,android命令'run-as'失敗
- 12. 命令退出碼2在Visual Studio 2015
- 13. Visual Studio 2015命令提示問題
- 14. 在VFP中顯示備忘錄字段
- 15. 蟒蛇泥裝備命令
- 16. tar命令備份錯誤
- 17. ATA命令設備IDENTIFY
- 18. 準備命令不DBI
- 19. 增量備份Linux命令
- 20. MariaDB從命令行備份
- 21. 爲什麼在「時間命令」中sys + user> real?
- 22. 是系統(爲const char *命令)會導致CPU SYS 100%
- 23. 用Java發送命令到設備
- 24. adb設備命令不起作用
- 25. cmd命令'dir'使用什麼設備?
- 26. adb:無法從命令行向我的設備發送命令
- 27. 命令包含無法識別的短語/關鍵字VFP與SQL
- 28. 在VFP
- 29. WPF命令綁定使用備用命名空間
- 30. DUPLICATE命令的不同備份位置