guid生成

解析大型.NET ERP系统 分布式应用模式设计与实现

别等时光非礼了梦想. 提交于 2020-03-16 02:28:41
C/S架构的应用程序,将一些复杂的计算逻辑由客户端转移到服务器端可以改善性能,同时也为了其它方面的控制。.NET Remoting在局域网内调用的性能相当不错。ERP系统中基于.NET Remoting和WCF构建一个应用程序服务器(Application Server)。 分布式应用设计目标: 1 客户端的连接,服务器要能控制。服务器根据授权许可文件的内容,控制客户端并发数。 2 服务器崩溃,客户端要得到通知,挂起当前数据输入操作,当服务器可用时,客户端可自动重新连接 。 3 支持数据加密,对敏感的数据可用加密的端口和通道传输。 4 支持数据压缩,改善数据传输效率,因为要做一个压缩与解压缩动作,性能有所降低。 5 安全控制,应用程序服务器阻止未授权的或未签名的应用程序的连接。 6 客户端向服务器传送大文件,传送图片需要时性能优化 7 服务器端发现错误时,支持堆栈传回客户端以诊断原因。 8 开发和部署简单方便。 先设计服务器与客户端通信的接口,一个简单销售合同数据表的访问接口代码如下所示。 public interface ISalesContractManager { SalesContractEntity GetSalesContract(Guid sessionId, String ContractNo); SalesContractEntity

C#利用Guid实现真随机数

帅比萌擦擦* 提交于 2020-03-10 05:56:19
C#中的随机数可以利用Random类很简单地生成随机数: Random rd = new Random(); int Num = rd.Next(0,10);//指定范围 在不指定种子时,大量生成随机数时重复率会非常高。为了防止重复,有人会加入Thread.sleep(1),在线程中加入休眠,显然效率会非常低。所以在Random中需要在指定种子,可以引用GUID作为种子。 GUID特点 全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。 利用GUID生成随机数: Random rd = new Random(Guid.NewGuid().GetHashCode());//利用Guid.NewGuid().GetHashCode()返回的哈希代码得到种子 int Num = rd.Next(0, 10); 这样生成的随机数就重复率低。 需要注意的是,对于保密性事项

Oracle中生成uuid的方法

怎甘沉沦 提交于 2020-03-07 05:17:34
Oracle中生成uuid的方法 下载LOFTER客户端 在Oracle SQL 提供了一个生成uuid的函数sys_guid: http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/functions187.htm#i79194 http://en.wikipedia.org/wiki/Universally_unique_identifier SQL> select sys_guid() from dual ; SYS_GUID() -------------------------------- A8F662B86E7413FEE040970A437C6BD7 但该函数如下问题: 1.返回类型为RAW 2.没有- (dash)分隔符 3.返回的字母大写 为了使产生的uuid符合rfc 4122的标准(http://tools.ietf.org/html/rfc4122) 创建函数如下,测试通过。 CREATE OR REPLACE FUNCTION get_uuid RETURN VARCHAR IS guid VARCHAR (50); BEGIN guid := lower(RAWTOHEX(sys_guid())); RETURN substr(guid,1,8)||'-'||substr(guid

Oracle中生成UUID

一个人想着一个人 提交于 2020-03-04 09:30:08
Oracle中生成跨系统的唯一识别符UUID非常方便,比生成序列还简单,直接用sys_guid()就行,例如 select sys_guid() from dual; 会产生一个跟MAC地址、生成时间相关的一个32位16进制的随机数。 数据类型是 raw(16) 有32个字符。 它的生成机制足以保证全球所有系统产生的海量guid重复可能性非常小。这在AIXM概念中非常重要。 如果要让返回的uuid满足标准格式,可利用如下函数实现: create or replace FUNCTION GET_UUID RETURN VARCHAR AS guid VARCHAR2 (64); BEGIN guid := lower(RAWTOHEX(sys_guid())); RETURN substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12); END GET_UUID; select get_uuid from dual; 得到结果:a8f662b8-6e7a-13fe-e040-970a437c6bd7 来源: CSDN 作者: RongSen33 链接: https://blog.csdn.net/g610567970

JS生成UUID

时光毁灭记忆、已成空白 提交于 2019-12-25 03:24:27
一、UUID是什么 UUID就是Universal Unique IDentifier的缩写,它是一个128位,16字节的值,并确保在时间和空间上唯一。 它是把硬件地址、时间以及随机数结合在一起,它保证对在同一时空中的所有机器都是唯一的。 通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID (Globals Unique Identifiers)。 一般情况下,生成 算法 用计算机网卡的地址和一个60位的timestamp生成,时间是以100ns为时间间隔。 例如,一台300PL 6862的计算机,主板集成的网卡的MAC地址为00-04-AC-2E-B7-DC,而UUID的最后六个字节也会是0004AC2EB7DC 一般我们都知道使用 Java 如何创建UUID,如下: java类:java.util.UUID UUID是1.5中新增的一个类,在java

微软的COM中GUID和UUID、CLSID、IID

最后都变了- 提交于 2019-12-18 19:23:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 当初微软设计com规范的时候,有两种选择来保证用户的设计的com组件可以全球唯一: 第一种是采用和Internet地址一样的管理方式,成立一个管理机构,用户如果想开发一个COM组件的时候需要向该机构提出申请,并交一定的费用。 第二种是发明一种算法,每次都能产生一个全球唯一的COM组件标识符。 第一种方法,用户使用起来太不方便,微软采用第 二种方法,并发明了一种算法,这种算法用GUID(Globally Unique Identifiers)来标识COM组件,GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即 数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。 GUID的例子: 54BF6567--1007--11D1--B0AA--444553540000 HKEY_CLASSES_ROOT/CLSID/{002B9E07-2E10-438F-AF1E-40E6A96F1EE4} 在微软的COM中GUID和UUID、CLSID、IID是一回事,只不过各自代表的意义不同: UUID : 代表COM CLSID : 代表COM组件中的类 IID :代表COM组件中的接口 在程序中

唯一编号算法:生成GUID

旧巷老猫 提交于 2019-12-07 00:25:00
你有过生成不重复编号的想法吗?比如做一个自动保存网页图片的工具,要保证保存的图片不互相覆盖,一个想法是使用一个计数器从1开始递增,但是这样还有问题,比如我们无法保证磁盘中以前没有可能造成重复的图片文件。 那么就来看看GUID算法吧。 GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。它使用网卡MAC、地址、纳秒级时间、芯片ID码和许多可能的数字,这样保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同的计算机。 GUID长什么样呢? {C7B1AFCC-810E-46d0-8157-09FC488D4C71} 看起来挺古怪的吧。在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。 不用担心GUID的性能问题,因为它生成过程是采用MAC地址、机器时钟等计算的,没有并发问题,所以它一点都不比自增计数器的慢,有时候甚至更快。 讲了一大堆理论,在程序中怎么生成GUID呢? 非常简单,调用CoCreateGuid函数即可,它定义在objbase.h这个头文件中。 核心调用代码: //--生成GUID void generate_guid(TCHAR* guid_string) { GUID guid; strcpy(guid_string,""); if(

JavaScript生成GUID的算法

元气小坏坏 提交于 2019-12-07 00:24:34
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。 GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。 GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。 算法1 1 2 3 4 5 6 7 8 9 10 11 12 13 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(

生成guid

倖福魔咒の 提交于 2019-12-07 00:23:29
JavaScript生成GUID的算法 全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。 GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。 GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。 算法1 1 2 3 4 5 6 7 8 9 10 11 12 13 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]

JS生成GUID和传参乱码

末鹿安然 提交于 2019-12-07 00:23:06
--32位ID var id = replace (java.util.UUID.randomUUID(), "-" , "" ); 全大写: var ID = replace(java.util.UUID.randomUUID(),”-“,”“).toUpperCase(); 全小写: var id = replace(java.util.UUID.randomUUID(),”-“,”“).toLowerCase(); --36位ID var id = replace (java.util.UUID.randomUUID(), "_" , "" ); –中文乱码问题 url = encodeURI(url); –JS对汉字的编码和转码 encodeURI( encodeURI(lm. getValueByName( "name" ) ) ) decodeURI(date) 来源: CSDN 作者: 俊不见高堂明镜 链接: https://blog.csdn.net/u010758605/article/details/50944046