不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2018-07-16 17:45:45  修改时间:2024-05-08 22:01:38  分类:Golang/Ruby  编辑

Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的。

作者:Albert.Wen  添加时间:2019-04-10 23:33:27  修改时间:2024-05-19 10:28:17  分类:OpenResty_Lua  编辑

unpack()函数

可以使用table.unpack()函数,将数组形式的table拆开。

这个函数有三个参数,第一个参数就是要拆的table,第二个参数是起始元素的下标,默认为1,第三个参数是结束元素的下标,默认为table的长度。

例如:

local tbl = { 2, 4, 6, 8 }
local a, b, c, d = unpack(tbl)
作者:Albert.Wen  添加时间:2019-03-31 00:05:58  修改时间:2024-05-14 13:48:33  分类:OpenResty_Lua  编辑

在 Lua 5.1 语言中,元表 (metatable) 的表现行为类似于 C++ 语言中的操作符重载,例如我们可以重载 "__add" 元方法 (metamethod),来计算两个 Lua 数组的并集;或者重载 "__index" 方法,来定义我们自己的 Hash 函数。Lua 提供了两个十分重要的用来处理元表的方法,如下:

  • setmetatable(table, metatable):此方法用于为一个表设置元表。
  • getmetatable(table):此方法用于获取表的元表对象。
作者:Albert.Wen  添加时间:2019-03-31 00:43:18  修改时间:2024-05-16 02:48:14  分类:OpenResty_Lua  编辑

旧式的模块定义方式是通过 module("filename"[,package.seeall])* 来显式声明一个包,现在官方不推荐再使用这种方式。这种方式将会返回一个由 filename 模块函数组成的 table,并且还会定义一个包含该 table 的全局变量。

作者:Albert.Wen  添加时间:2017-10-26 14:30:52  修改时间:2024-05-04 12:02:23  分类:Linux基础  编辑

cp 貌似没有排除目录的功能,可以使用 rsync 命令来实现了,如:

【案例】

/home/52php目录里面有data目录,data目录里面有 a、b、c、d、e 五个目录,现在要把data目录里面除过 a、b、c 目录之外的所有目录拷贝到/bak目录中。

作者:Albert.Wen  添加时间:2019-03-31 16:10:47  修改时间:2024-05-14 11:36:26  分类:OpenResty_Lua  编辑

在 OpenResty 的体系中,可以通过共享内存的方式完成不同工作进程的数据共享,可以通过 Lua 模块方式完成单个进程内不同请求的数据共享。如何完成单个请求内不同阶段的数据共享呢?最典型的例子,估计就是在 log 阶段记录一些请求的特殊变量。

作者:Albert.Wen  添加时间:2017-10-18 17:17:12  修改时间:2024-05-11 20:35:36  分类:Golang/Ruby  编辑

context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routine树。由于它使用简单,现在基本成了编写go基础库的通用规范。笔者在使用context上有一些经验,遂分享下。

作者:Albert.Wen  添加时间:2017-10-29 20:31:33  修改时间:2024-05-07 04:30:07  分类:Golang/Ruby  编辑

原文:Fundamentals of concurrent programming

译者:youngsterxyf

本文是一篇并发编程方面的入门文章,以Go语言编写示例代码,内容涵盖:

  • 运行期并发线程(goroutines)
  • 基本的同步技术(管道和锁)
  • Go语言中基本的并发模式
  • 死锁和数据竞争
  • 并行计算
作者:Albert.Wen  添加时间:2018-11-21 15:27:50  修改时间:2024-05-15 02:40:30  分类:系统设计/架构/UML建模  编辑
作者:Albert.Wen  添加时间:2016-01-17 10:48:43  修改时间:2024-05-15 00:25:43  分类:Linux软件安装/参数优化  编辑

常用命令:

$ sudo update-rc.d nginx defaults      #增加服务
$ sudo update-rc.d -f nginx remove    #移除服务

在Debian中安装新服务时,默认是开机启动的。例如,如果你安装了Nginx,Nginx服务会在下次开机时自启动。如果你不想Nginx开机自启动,你就要自己移除 /etc/rcX.d/SYYnginx 或使用 update-rc.d。而使用update-rc.d的优势很明显,它会自己移除、增加对/etc/init.d/内的链接。