三不朽

PHP源码加密之ionCube加密

Publish: December 12, 2017 Category: 运维 No Comments

生产服务器部署解密环境

加密操作分为两部分,首先要在生产环境中部署解密扩展.具体操作流程可以参考:
一、下载loader-wizard.php(支持php5.3、php5.4、php5.5、php5.6、php7.0版本)
ioncube提供了一个安装的向导程序,可以非常方便的帮助检测php的运行环境,自动给出提示。
1.1 通过下面的地址下载loader-wizard:http://www.ioncube.com/loader-wizard/loader-wizard.zip
1.2 下载之后,将其解压缩,到apache的www或者htdoc目录。





阅读剩余部分...

Workerman中TCP网络粘包问题处理

Publish: November 22, 2017 Category: 编程,代码分享 No Comments

在网络编程中TCP协议相关的肯定会遇到粘包问题,具体原因可查看相关资料,这里仅作简单叙述。着重在workerman中对TCP中消息封包和解包问题的实际处理。

粘包与拆包的概念

在TCP/IP协议中,由于传输层并不了解应用层数据的含义,发送端传输层可能会对应用层数据进行拆分或者合并,在接收端也同样如此。由此而产生的问题就是常常会听说的“粘包与拆包”的问题。“粘包拆包”的问题在“短报文”和“一问一答”的场景下其实并不会出现。短报文是指报文长度远小于MSS的情况,应用层的报文在TCP报文中完全可以放下。另一方面,“一问一答”的通信模式可以保证报文会以单一的TCP包发送出去。在这两个条件下都满足时,我们不需要考虑“粘包拆包”问题。

反之,如果这两个条件不同时满足,就很可能会出现“粘包拆包”问题。

阅读剩余部分...

Python多线程实现web端远程实时控制嵌入式设备

Publish: October 27, 2017 Category: 编程 No Comments

最近接到一个小任务,要为客户实现“web端实时控制嵌入式设备”的项目。主要要求是通过在公网部署,客户通过web页面操控,触发远程设备的相关指令,完成相应操作。

项目结构

项目设计的初期目标是,实现一个类似通道的通过,程序只负责转发数据,具体的业务由远程设备和web端协商。下面是项目的结构图

http2tcp.png

服务启动,实施对应用层http和传输层tcp的监听,远程设备此时可以通过TCP建立双向连接。HTTP服务收到web请求,解析请求数据,然后将请求数据转发给TCP服务,由于TCP服务和远程设备是双向通信,因此web请求的数据就转发到远程设备,完成这个简单的传输过程。

阅读剩余部分...

围栏算法研究与实现

Publish: April 18, 2017 Category: 编程,代码分享 No Comments

实际应用中常用的解决方法。

1.1 方法选择

实现电子围栏的方法选择 判断点是否在电子围栏内/外,用数学来描述就是判断一个点是在多边形内/外部,为 了方便,这里的多边形默认为有向多边形,规定沿多边形的正向,边的左侧为多边形的外侧 域,即多边形边按顺时针方向遍历。比较常见的判断点与多边形关系的算法有射线法、点线判断法、夹角和法等[3],不过只有射线法可以正确用于凹多边形,其他 2 个只可以用于凸多 边形。

点线判断法 把多边形的每条边看作首尾相连的有向线段。如果一个点相对于多边形的每条边(有向 线段)的方向(左侧还是右侧)都相同,那么这个点就在这个多边形内部。这种方法只适用于凸多边形,而不适用于凹多边形。定义点在有向线段的一侧,定义有向线段(x1,y1),(x2,y2), 对于点(x, y)计算:

v = (x2-x1)*(y-y1) - (y2-y1)*(x-x1)

v=0 表示点在线段所在的直线上,v>0 表示点在线段的左侧,v<0 表示点在线段的右侧。 上面的计算式也可以表示比较斜率的大小:

 (y-y1)/(x-x1) > (y2-x1)/(x2-x1) 

阅读剩余部分...

关系模型关键概念介绍

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

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

关系数据库的结构

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



阅读剩余部分...