Jump to Navigation

Document

Programming articles and books.

hyperdex 不同数据类型hash算法

hyperdex使用hyperspace hashing算法对记录的每个字段做哈希, 并且所有字段的哈希值作为每个维度的值映射到多维度空间中的一个点上。

通过化分多维空间的方式,把所有的记录分布到不同的存储节点上,实现hyperdex的分布式NoSQL功能。

对于hyperdex的实现,它所支持的土原子数据类型各自有不同的哈希算法,

原子类型有float,int64,string,每种类型的哈希算法如下:

一、hyperdex数据类型

字符串,长度限制???

int64类型,

float类型,

二、hyperdex容器数据类型

list列表类型,

set集合类型,

map映射类型,

三、不同数据类型的hash值计算

字符串类型hash算法

使用cityhash算法计算该字段值的hash值。

int64类型hash算法

unpack64le 把值高字节与低字节交换位置,64位为8个字节,即1,8交换,2,7交换,3,6交换,4,5交换

配置系统进化

系统就像生物进化,从原始粗糙进化的强大灵巧。

一、从配置的起源说起

二、配置的最初阶段

三、配置的变异阶段

四、配置的变异后优化

五、配置的归类隐藏

六、配置去哪儿

平台化建设步伐

hehhe

Category:

Tox API - 开始C API

开始C API

现在给出一个简单的C客户端程序的基本结构,后面详细解释每个重要的部分。

Category:

Tox核心概念

核心概念

Tox ID

public key

以下是一个典型Tox ID,你可以把他给一个好友。它是一个public key,nospan 值和校验值连接起来的十六进制格式字符串。最终结果就是上显示的76个字符的字符串。 public key bd

Public Key

public key 是由NaCl的crypto_box_keypair函数生成的。

它的介绍在这儿 。在当前的NaCl实现中,它是32个字节(64个16进制字符)。

nospan值

nospan值是一个随机生成的追加到public key上的数字。一个未带nospan值的好友请求会被忽略。

Category:

Linux桌面添加新的分辨率

xrandr --newmode "1680x1050" 147.1 1680 1784 1968 2256 1050 1051 1054 1087 +Hsync -Vsync
xrandr --addmode LVDS1 1680x1050

原来的和控制中没有这个分辨率,通过这两个命令,添加新的分辨率
然后可在KDE的"显示与监控”配置项中找到这个新的分辨率可以使用。

也可以继续使用xrandr命令,设置当前的显示分辨率,
xrandr --output LVDS1 --mode "1680x1050"
或者,
xrandr --output LVDS1 --mode "1920x1200"

原来的1920x1200的字段实在太小了。

16:10比例的其他分辨率:
"1440x900" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync

当前环境使用IPv6的完全解决方案

目前IPv6已经有小范围的应用。
但国内除了几所高校有IPv6网络之外,互联网上的使用范围还非常少。
现在的操作系统都已经支持IPv6协议,可以使用标准的6over4协议,
实现现在就用IPv6的功能。
现在的网络软件也大多数支持IPv6协议,不过优先支持使用IPv4地址。

除了操作系统之外,还需要DNS的支持,服务器的支持。

这里讨论一种可尽量使用 IPv6协议的客户端系统配置。
这一配置包括以下几项:
1、查看当前的操作系统是否支持IPv6并开启IPv6
2、6over4 隧道的实现程序安装
3、支持IPv6的公用DNS服务器
4、本地DNS缓存服务器,dnsmasq
5、本地DNS劫持服务器,kdns
6、软件的IPv6参数
7、测试与测试工具
8、注意事项

总结P2P程序中UDP穿透难点

最难的一种NAT,这是从对称型NAT演变过来折和中NAT,叫做动态类型NAT。

使用traceroute/tcptraceroute确定动态NAT网络到目标主机的出口IP,为对方的NAT打洞提供目标IP信息。

有一种动态类型的NAT,这种NAT的网络出口IP是一个出口IP池中选出来的。

Category:

自己实现类RUDP协议

UDP协议是一种无状态,不可靠协议,这个描述指的是UDP包之间没有前后顺序关系,也不一定所有的包都能达到目标地址。
在UDP协议由于附带额外包数据小,不需要做包验证等特点,UDP协议效率还是比较高的。
所以,RFC结合TCP和UDP两种协议的优点,制订了RUDP协议标准。

RUDP的核心部分包括,加入包编号,包重传,包确认机制,模拟连接操作与断开连接操作。
标准RUDP协议为UDP包加了8字段的状态数据。

我在实现可靠UDP的时候,参考这RFC RUDP协议同标准,实现了包编号,包重传,包确认机制,
但没有实现模拟连接操作与断开操作。

之所以没有实现模拟三次握手连接,是发现连接包与其他数据包发送接收方式并不一致,
需要额外的方式保证连接包的可靠性。因为连接包参与编号和重传的话,控制上比较复杂,
还不如直接发送数据包,加上编号和和重传、确认,系统的可靠性就已经非常好了。

对stun/turn协议的认识与理解过程笔记

stun协议的全称是 Session Traversal Utilities for NAT,NAT会话传输应用程序

页面

订阅 RSS - Document


Main menu 2

by Dr. Radut