UUID的介绍

UUID的介绍,第1张

UUID含义是通用唯一识别码,这是一个软件构建的标准,也是被开源软件基金会的组织应用在分布式计算环境领域的一部分。

作用

UUID的目的是让分布式系统中的所有元素,都能有唯一的辨别资讯,而不需要通过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的UUID。在这样的情况下,就不需要考虑数据库建立时的名称重复问题。目前最广泛应用的UUID,即是微软的Microsoft's

Globally Unique Identifiers,而其他重要的应用,则有Linux

ext2/ext3档案系统、LUKS加密分割区、GNOME、KDE、Mac OS X等。

组成

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。

UUID由以下几部分的组合

①当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。

②时钟序列。

③全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID。在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,其格式为:xxxxxxxx-xxxx-

xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f

范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx

(8-4-4-4-12),可以从cflib下载CreateGUID() UDF进行转换。

应用

使用UUID的好处在分布式的软件系统中就能体现出来,它能保证每个节点所生成的标识都不会重复,并且随着Web服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用唯一标识符有非常大的区别。

通用唯一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球唯一标识符,这也是通用唯一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用唯一标识符是在网络计算机系统中创建,并且随后成为开放软件基金会的分布式计算环境的组件。

1利用三方库的支持 三方demo点这里

2将demo中SSKeychainh SSKeychainm文件拖入工程,桥接配置自己百度

3在工程中建一个swift文件供全局调用方法就是在创建的Global文件中直接复制过去

4在TARGETS中Capabilities中将Keychain Sharing打开就可以le

有的刚创建的swift项目找不到Keychain Sharing

这个需要自己添加,如下图:

感谢原作者,借鉴地址: >

首先,要 *** 作蓝牙,先要在AndroidManifestxml里加入权限

<uses-permissionandroid:name="androidpermissionBLUETOOTH_ADMIN" />

<uses-permissionandroid:name="androidpermissionBLUETOOTH" />

然后,看下api,Android所有关于蓝牙开发的类都在androidbluetooth包下。 而需要用到了就只有几个而已:

1BluetoothAdapter 顾名思义,蓝牙适配器,直到我们建立bluetoothSocket连接之前,都要不断 *** 作它BluetoothAdapter里的方法很多,常用的有以下几个:cancelDiscovery() 根据字面意思,是取消发现,也就是说正在搜索设备的时候调用这个方法将不再继续搜索disable()关闭蓝牙enable()打开蓝牙,这个方法打开蓝牙不会d出提示,更多的时候需要问下用户是否打开,一下这两行代码同样是打开蓝牙,不过会提示用户:Intemtenabler=new Intent(BluetoothAdapterACTION_REQUEST_ENABLE);

startActivityForResult(enabler,reCode);//同startActivity(enabler);

getAddress()获取本地蓝牙地址getDefaultAdapter()获取默认BluetoothAdapter,实际上,也只有这一种方法获取BluetoothAdaptergetName()获取本地蓝牙名称getRemoteDevice(String address)根据蓝牙地址获取远程蓝牙设备getState()获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要)isDiscovering()判断当前是否正在查找设备,是返回trueisEnabled()判断蓝牙是否打开,已打开返回true,否则,返回falselistenUsingRfcommWithServiceRecord(String name,UUID uuid)根据名称,UUID创建并返回BluetoothServerSocket,这是创建BluetoothSocket服务器端的第一步startDiscovery()开始搜索,这是搜索的第一步。 2BluetoothDevice看名字就知道,这个类描述了一个蓝牙设备createRfcommSocketToServiceRecord(UUIDuuid)根据UUID创建并返回一个BluetoothSocket这个方法也是我们获取BluetoothDevice的目的——创建BluetoothSocket

这个类其他的方法,如getAddress(),getName(),同BluetoothAdapter;

3BluetoothServerSocket如果去除了Bluetooth相信大家一定再熟悉不过了,既然是Socket,方法就应该都差不多,这个类一种只有三个方法

两个重载的accept(),accept(inttimeout)两者的区别在于后面的方法指定了过时时间,需要注意的是,执行这两个方法的时候,直到接收到了客户端的请求(或是过期之后),都会阻塞线程,应该放在新线程里运行。

还有一点需要注意的是,这两个方法都返回一个BluetoothSocket,最后的连接也是服务器端与客户端的两个BluetoothSocket的连接。

4BluetoothSocket,跟BluetoothServerSocket相对,是客户端一共5个方法,不出意外,都会用到close(),关闭connect()连接getInptuStream()获取输入流getOutputStream()获取输出流getRemoteDevice()获取远程设备,这里指的是获取bluetoothSocket指定连接的那个远程蓝牙设备 。

FreeSWITCH中的lua *** 作小结

lua中设置当前通道变量

方法一:

session:setVariable("fullName", "xxxxx");--需判断session是否为空

方法二:

local uuid =getUUID(callerid);

local res=api:executeString("uuid_setvar " uuid " fullName ""xxxxxxx")

该处设置的变量可以是通道中本没有的变量,设置完了后,在其他地方就可以引用该变量。

lua中设置全局通道变量(在varsxml中设置)

local ucall_ip = api:executeString("global_setvar qt_ucall_ip_port 192168032:9090");

获取当前的通道变量

local callee_num=session:getVariable("qt_ucall_callee");

获取全局通道变量

local ucall_ip = api:executeString("global_getvar qt_ucall_ip_port");

获取当前会话uuid

session:get_uuid()

获取当前路径

--USwitch的当前安装目录

syspath = tostring(api:execute("global_getvar", "base_dir"));

使用uuid_transfer将当前对话的两个号码同时转入会议中

local trf1="uuid_transfer " guestuuid " -both " conferenceNum;

OutputConsoleLog("info" , scriptname ": try to get guestNum to conference,command is{"trf1"}");

api:executeString(trf1);

外呼方法总结:

originate user/11103139316095XX

originate sofia/external/139316095XX@192168234 &playback(calloutmusic/welcometoyoump3)

originate loopback/139316095XX&playback(calloutmusic/20110126164156mp3)

在lua脚本中放一段录音

session:streamFile("notondutywav");

判断会话是否已建立

session:ready()==true

挂断当前会话

session:hangup();

将当前会话休眠一段时间

session:sleep(5000);

发起>

以上就是关于UUID的介绍全部的内容,包括:UUID的介绍、Swift获取UUID方法、蓝牙程序中的UUID是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9442068.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存