28. 用swoole_process写一个跑数平台

还是在上家公司的时候,同事在群里突然发了这个Swoole连接,才看到原来PHP还有这么一个扩展,顺便了也发Workerman,说也是PHP新的通信框架,而swoole则重新定义了PHP,那时候项目中还没使用这些扩展,就没去看过文档。前不久,这家公司当时带我的这位小伙伴突然告诉说,他们在准备要用swoole重构下一版接口了。

刚好这段时间我们也在准备街电的财务项目,用了Laravel框架,顺便也提前重新写一下跑数平台。以前没做过类似的工具,不知道怎么设计好,就借鉴了原来项目的跑数平台,完全是迁移过来的,并没有自己多的独特创造。

1. 起因

Laravel框架提供了非常丰富的控制台Artisan 命令行工具任务调度功能Task应用,对于测试通过和已经运行正常的脚本来说,直接添加不需要观察就可以很好的得到执行,但是线上项目我没有权限登陆控制台手动去运行命令,也不想申请这些权限,故只能依赖后台网页端来输入命令,让它自动执行,收集每一个脚本的输出结果,执行完毕后直接发邮件给我就行。

Read More

27. Go在函数和切片间传递数组

该部分笔记来源于:

Go语言实战 [美]威廉·肯尼迪(William Kennedy)布赖恩·克特森(Brian Ketelsen)埃里克·圣马丁(Erik St. Martin). Go语言实战 (Kindle Location 69). 人民邮电出版社. Kindle Edition.

在函数间传递数组和在函数间传递切片部分摘要

根据内存和性能来看,在函数间传递数组是一个开销很大的操作。在函数之间传递变量时,总是以值的方式传递的。如果这个变量是个数组,意味着整个数组,不管有多长,都会完整复制,并传递给函数。

Go语言圣经这本书中介绍到,数组属于复合数据类型,而切片属于引用类型。

当调用一个函数的时候,函数的每个调用参数将会被赋值给函数内部的参数变量,所以函数参数变量接收的是一个复制的副本,并不是原始调用的变量。因为函数参数传递的机制导致传递大的数组类型将是低效的,并且对数组参数的任何的修改都是发生在复制的数组上,并不能直接修改调用时原始的数组变量。在这个方面,Go语言对待数组的方式和其它很多编程语言不同,其它编程语言可能会隐式地将数组作为引用或指针对象传入被调用的函数。

from: 数组

Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。基础类型,包括:数字、字符串和布尔型。复合数据类型——数组和结构体——是通过组合简单类型,来表达更加复杂的数据结构。引用类型包括指针、切片、字典、函数、通道,虽然数据种类很多,但它们都是对程序中一个变量或状态的间接引用。这意味着对任一引用类型数据的修改都会影响所有该引用的拷贝。

from: 基础数据类型

Read More