三不朽

关系模型关键概念介绍

Publish: February 5, 2017 Category: 编程 3 Comments

数据模型是描述数据、数据关系、数据语意以及一致性约束的的概念工具的集合,关系模型利用表的集合来表示数据和数据之间的联系,关系模型在逻辑层和视图层描述数据。通过对概念的重新准确理解,方便后期在学习数据库过程加深认识。

关系数据库的结构

关系数据库由表集合构成,每个表有一个唯一的名字。一般来说表中一行代表了一组值之间的一种联系,由于一个表就是这种联系的一个集合,表这个概念在数学上的关系这个概念是密切相关的,这个正是关系数据模型名称的由来。
在关系模型术语中,关系表示表,元组表示行,属性表示表中的列。我们用关系实例这个术语表示一个关系的特定实例,也就是锁版喊的一组特定的行。
对于关系的每个属性,都存在一个允许取值的集合,成为该属性的域。 我们要求对所有关系也就是表而言,关系的所有属性都是原子的。如果域中元素被看作是不可再分的单元,则域是原子的。空null是一个特殊的值,表示值未知或者不存在。



阅读剩余部分...

关于同步和异步在架构实践中的总结(微服务架构一)

Publish: November 25, 2016 Category: 编程 No Comments

软件架构的一个原则就是高内聚低耦合,同样微服务也是这样。将各个模块单独划分,模块内实现“高度自制”,那么就带来一个问题,如何实现个微服务模块之间高效的通信呢?有两种基本方向即:同步方式和异步方式。直白一点来讲,同步通信就是发起一个远程服务调用后,调用方会阻塞自己等待整个操作的完成;异步通信调用方不需要等待操作的完成就可以返回,甚至不需要关心这个操作的完成与否。

阅读剩余部分...

ibeacon协议简单分析

Publish: November 7, 2016 Category: 小玩具 No Comments

什么是Bluetooth LE,简写BLE

Bluetooth Low Energy(BLE)是2010年发布的蓝牙4.0技术规范的一部分。它起源于2006年Nokia的Wibree技术,但最终被整合进了蓝牙。这是一组与传统蓝牙不同的协议,并且使用的设备上也不会向后兼容。因此,现在市面上你可以看到三种类型的设备:

  1. Bluetooth设备:只支持传统蓝牙的设备。
  2. Bluetooth Smart Ready设备:同时支持传统蓝牙和LE模式的设备。
  3. Bluetooth Smart设备:只支持LE模式的设备。

最新的手机(iPhone 4s+, SG3+)、笔记本、平板电脑等,基本上都已经支持蓝牙4.0,也就是Bluetooth Smart Ready设备。Beacon,从另一方面来说,这种设备只支持low energy protocols(LE低功耗协议),属于上面说所的“Bluetooth Smart”设备,这也是它们靠一颗纽扣电池就能运行很长时间的原因。老式设备,比如外设、汽车系统、旧手机等通常只支持传统蓝牙协议。

BLE最重要的特点当然在于它的低能耗。举个例子,一些beacon设备靠一颗微型电池就能够持续发送一个信号两年左右(这种电池一般是不可拆卸的,你可能需要在beacon停止工作之后替换一个新的beacon)。传统蓝牙和LE蓝牙使用的都是相同的波段(2.4GHz-2.4835GHz)。BLE协议的传输速率比较低,因此除了用于发现设备和做一些简单通信之外,不太适合用于传输大量的数据流。在协议条款上,LE和传统蓝牙的信号都能够覆盖到100米的范围。

阅读剩余部分...

MQTT协议分析

Publish: November 3, 2016 Category: 小玩具,编程 2 Comments

<div class=WordSection1 style='layout-grid:15.6pt'>

<p class=MsoNormal>比较全面的<span
lang=EN-US>MQTT</span>协议分析文档</p>

<p class=MsoNormal>目录</p>

<p class=MsoNormal><span lang=EN-US> </span></p>

<p class=MsoNormal><span style='font-size:14.0pt;
font-family:宋体;color:red'>使用研究</span></p>

<p class=MsoNormal><span style='font-size:14.0pt;
font-family:宋体;color:red'>协议分析</span></p>

<p class=MsoNormal><span style='font-size:14.0pt;
font-family:宋体;color:red'>连接和心跳</span></p>

<p class=MsoNormal><span style='font-size:14.0pt;
font-family:宋体;color:red'>发布流程</span></p>

<p class=MsoNormal><span style='font-size:14.0pt;
font-family:宋体;color:red'>消息流</span></p>

<p class=MsoNormal><span style='font-size:14.0pt;
font-family:宋体;color:red'>订阅流程</span></p>

<p class=MsoNormal><span lang=EN-US> </span></p>

<p class=MsoNormal><span style='font-size:14.0pt;
font-family:宋体;color:red'>使用研究</span>:</p>

<p class=MsoNormal>服务端:<span lang=EN-US><a
href="http://mosquitto.org/download/"><span style='color:blue'>http://mosquitto.org/download/<;/span></span></p>

<p class=MsoNormal>编译安装:<span lang=EN-US><a
href="http://blog.csdn.net/xukai871105/article/details/39252653"><span
style='color:blue'>http://blog.csdn.net/xukai871105/article/details/39252653<;/span></span></p>

<p class=MsoNormal><span lang=EN-US> </span></p>

<p class=MsoNormal>配置说明</p>

<p class=MsoNormal><span lang=EN-US><a
href="http://cswei.blog.51cto.com/3443978/1225617"><span style='color:blue'>http://cswei.blog.51cto.com/3443978/1225617<;/span></span></p>

<p class=MsoNormal><span lang=EN-US> </span></p>

<p class=MsoNormal><span lang=EN-US>PHP</span>实现</p>

<p class=MsoNormal><span lang=EN-US><a
href="https://github.com/mgdm/Mosquitto-PHP"><span style='color:blue'>https://github.com/mgdm/Mosquitto-PHP<;/span></span></p>

<p class=MsoNormal><span lang=EN-US> </span></p>

<p class=MsoNormal><span lang=EN-US>LUA</span>实现</p>

<p class=MsoNormal><span lang=EN-US><a
href="https://github.com/flukso/lua-mosquitto"><span style='color:blue'>https://github.com/flukso/lua-mosquitto<;/span></span></p>















阅读剩余部分...

HTTP中几个压缩算法的PHP实现分析

Publish: September 14, 2016 Category: WEB,编程,代码分享 No Comments

HTTP 协议中的 Accept-Encoding/Content-Encoding 机制。它可以很好地用于文本类响应正文的压缩,减少网络数据传输,所以一直被广泛使用。但 HTTP 请求的发起方浏览器,无法事先知晓要访问的服务端是否支持解压,所以现阶段的浏览器没有压缩请求正文。
有一些通讯协议基于 HTTP 做了扩展,他们的客户端和服务端是专用的,完全可以针对请求正文进行压缩,例如 WebDAV 客户端就是这么做的。

HTTP中各压缩算法

实际的 Web 项目中,会存在请求正文非常大的场景,例如发表长篇博客,上报用于调试的网络数据等等。这些数据如果能在本地压缩后再提交,就可以节省大量流量、减少传输时间。本文介绍如何对 HTTP 请求正文进行压缩,包含如何在服务端解压、如何在客户端压缩两个部分。

开始之前,先来介绍本文涉及的三种数据压缩格式:

  • DEFLATE,是一种使用 Lempel-Ziv 压缩算法(LZ77)和哈夫曼编码的压缩格式。详见 RFC 1951;
  • ZLIB,是一种使用 DEFLATE 的压缩格式,对应 HTTP 中的 Content-Encoding: deflate。详见 RFC 1950;
  • GZIP,也是一种使用 DEFLATE 的压缩格式,对应 HTTP 中的 Content-Encoding: gzip。详见 RFC 1952;
    Content-Encoding 中的 deflate,实际上是 ZLIB。为了清晰,本文将 DEFLATE 称之为 RAW DEFLATE,ZLIB 和 GZIP 都是 RAW DEFLATE 的不同 Wrapper。


阅读剩余部分...