最近机票业务有一个比较棘手的需求,就是从供应商获取资源,要从各个供应商的资源中pk出价格最有优势的政策。乍看上去,这样的需求很简单,和之前做的酒店,景点等等价格PK类似么,无非就是从原始数据中,获取最具有优势的价格而已,然而就是这么一个任务,前前后后坑了半个月。
二层,三层交换机(转)
二层交换机:二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。
具体如下:
golang反射入门一例
Go是一个强类型的静态编程语言。然而,一些Go的特性让它看起来又像是一门动态语言。例如,如果你不确定你接收的参数的类型,你可以使用interface来接收所有类型的参数传递。
记住只有interface是有reflect属性的。
我们注意到interface允许Go实现多态。没有任何一种类型是特别需要强调的。可以是string int64 float32 甚至是集合(array/map)。但计算机运行这些代码时候,reflect帮助检查,修改其自身的结构与行为。这个过程允许我们知道对象的类型以及内存在运行时的结构。
我们为什么需要reflect?
允许提前定义参数类型(通常发生在暴露的API上)
函数能根据传参动态执行
reflect的缺点
- 影响代码可读性
- 屏蔽了代码编译时的错误检查。作为动态语言,Go的编译器可以提前检测数据类型的错误,在编译的时候。当数据在interface中没有特性指明类型的时候,服务器会有在运行代码时候出现panic的风险
- 降低了整体的性能。使用reflect需要服务端去做额外的工作去获取参数的值以及具体的类型,因此,尽量避免在一些很重要的参数上使用interface
openresty2018大会感想
2018.11.23,我有幸作为演讲嘉宾参加了openresty2018年的大会,前前后后我听了一天半的时间,感觉非常棒,感谢各位讲师带来的满满的干货。想着写一篇博客来记住和沉淀这次分享大会。
早上6点从苏州驱车赶往杭州滨江区的网易大厦,好在时间早,路上路况非常不错,在8点30分的时候准时签到,还无耻的蹭了一顿网易的免费早餐,真是不错哦。
node.js实战之坑
最近做了一个node.js的中间层项目,为了极致的性能,我们打算尽量少用第三方类库,连HttpServer我们都用原生的来做,没有使用Expressjs。
openresty实现websocket的全双工接收推送
很早就知道春哥有这个 lua-resty-websocket 的包了,可以让openresty具备websocket的通信能力,一直也以为这个包和node.js或者golang等其他语言的websocket包一样好用,可以很容易的实现全双工的操作,单播,多播,广播等功能。