anytk 最近的时间轴更新
anytk

anytk

V2EX 第 79754 号会员,加入于 2014-11-02 11:24:07 +08:00
Google One 会员赠送 5 刀 Google Play 余额
Google  •  anytk  •  39 天前  •  最后回复来自 anytk
6
Google One 手机备份总是失败
Google  •  anytk  •  78 天前  •  最后回复来自 anytk
6
搬瓦工年付$19.9 的套餐上货了
VPS  •  anytk  •  2018-01-18 11:57:42 AM  •  最后回复来自 emmm
1
CGN 内网下电骡替代
问与答  •  anytk  •  2015-01-12 17:12:22 PM  •  最后回复来自 anytk
1
anytk 最近回复了
14 天前
回复了 Carver9527 创建的主题 Node.js faker.js 作者删除了所有的代码
能以道德责备作者,却不能以道德责备各大公司,开源公开也并非圣人倾向。这事就是一个公平与否的问题
14 天前
回复了 kanhongj 创建的主题 Lua 有关 Lua 调用 C++ 编译动态库程序
@kanhongj lua 的 c api 编程,其实就是利用 api 去仿照 lua 语法语义组织执行语句,尤其是 gc 相关。
14 天前
回复了 kanhongj 创建的主题 Lua 有关 Lua 调用 C++ 编译动态库程序
@kanhongj
1. 元表是给对象准备的,设置 __index 实现面向对象,所有的方法都绑定到元表中,对象的方法通过 __index 去执行元表内的方法。luaL_newmetatable 这个 api 会将元表加到 REGISTRY 中,这是个全局 table , 所以设定好后,这个元表就可以 pop 掉了,因为 REGISTRY 保存了引用,所以不用担心被回收。
luaL_setmetatable API 同样是从 REGISTRY 中用名称获取元表并绑定对象,可以看看这几个 luaL_ 开头的 api 注释。
2. new 方法是 luaL_newlib 出来的模块 table 方法,不是元表的。
15 天前
回复了 kanhongj 创建的主题 Lua 有关 Lua 调用 C++ 编译动态库程序
元表是对象,也就是你的 worker 的元表,包含对象的方法,在方法中检查第一个参数为对应元表名的 userdata, 其他为参数。
模块本身只提供创造对象的方法和必要全局参数。
参考:

```c
#include <lua.h>
#include <lauxlib.h>

static int xxx_read(lua_State *L)
{
struct XXX **xxx = luaL_checkudata(L, 1, "xxx.xxx");
// ...
}

static int xxx_write(lua_State *L)
{
struct XXX **xxx = luaL_checkudata(L, 1, "xxx.xxx");
// ...
}

static int xxx_close(lua_State *L)
{
struct XXX **xxx = luaL_checkudata(L, 1, "xxx.xxx");
if (*xxx) {
// ...
}
return 0;
}

static luaL_Reg XXX_METHODS[] = {
{ "read", xxx_read },
{ "write", xxx_write },
{ "close", xxx_close },
{ "__gc", xxx_close },
{ NULL, NULL },
};

static int xxx_new(lua_State *L)
{
lua_Integer type = luaL_checkinteger(L, 1);
const char *url = luaL_checkstring(L, 2);

int err = 0;
struct XXX *xxx = create_xxx(...);
if (!xxx) {
lua_pushnil(L);
return 1;
} else {
struct XXX **udata = lua_newuserdata(L, sizeof(struct XXX *));
*udata = NULL;
luaL_setmetatable(L, "xxx.xxx");
*udata = xxx;
return 1;
}
}

static luaL_Reg XXX_LIBS[] = {
{ "new", xxx_new },
{ NULL, NULL },
};

int luaopen_xxx.xxx(lua_State *L)
{
luaL_newmetatable(L, "xxx.xxx");
lua_pushvalue(L, -1);
lua_setfield(L, -2, "__index");
luaL_setfuncs(L, XXX_METHODS, 0);
lua_pop(L, 1);
luaL_newlib(L, XXX_LIBS);
return 1;
}

```
21 天前
回复了 cw2k13as 创建的主题 Linux 求推荐一个小白入手的 Linux 桌面版
Debian sid/unstable + KDE Plasma
39 天前
回复了 anytk 创建的主题 Google Google One 会员赠送 5 刀 Google Play 余额
@kebamt 可能是的
@tiramice 我是在 App 中看到的
@Buges 可以买游戏,相当于充值到付款方式里了
@LxnChan 只能在历史记录看到了
看了详细说明,美区专享的:

Valid for one $5.00 Google Play credit. Limit 1 redemption per Google One plan. Open to participants who receive a promotional code from Google One. Not reloadable; no cash value. Offer ends Apr 1, 2022 and must be added to a Google Payments account by Apr 1, 2022. Once added, credit must be used on Google Play by Jul 1, 2022. Certain subscriptions excluded. Valid in United States only. Must be United States resident, have Internet access on a compatible device, and have or activate a Google Payments account. Age restrictions apply. See Promotional Balance Terms and Google Play Terms for more information. Promoter: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA.
39 天前
回复了 kingofzihua 创建的主题 Linux 问一个协程方面的问题
@kingofzihua 协程的另一个用法是用在插件系统开发中,插件部分是一个小的 context ,但是使用又是受限的,可以由主程序提供多个接口,配合主程序的 eventloop 来实现插件的受限自定义开发工作,降低插件开发的难度要求。
39 天前
回复了 kingofzihua 创建的主题 Linux 问一个协程方面的问题
@kingofzihua
IO 的模型:
以买餐为例,忽略细节
1. 阻塞:经典模式接口。你到餐馆买餐,在餐馆一直等到做好打包,拿了带回来。
2. 非阻塞:电话订餐,每隔小段时间重新打电话问餐馆做好没(其他时间有自由时间处理其他事情),做好了就去拿回来。这电话就是非阻塞调用,但是依然是操作系统调用,会有内核陷入。
3. 异步:操作系统提供接口支持,也就是 event loop 模式。电话订餐,餐做好了餐馆直接电话给你通知好了,你去取餐。

协程用在 IO 密集的场景中,通常都是和 event loop 配合,简化复杂的 callback 序列。
39 天前
回复了 kingofzihua 创建的主题 Linux 问一个协程方面的问题
1. 协程是用户自己调度,切换开销堪比函数调用,比线程轻量
2. 协程可以对逻辑解耦简化,异步操作“同步”化,比如解决 callback hell
@amiwrong123
#2 就跟楼上说的一样,close 是针对 fd 资源的,以及必要的其他操作,如果 socket 没有调用过 shutdown ,那么 close 调用的同时也会调用操作。shutdown 是针对 tcp 协议的操作,因为某些应用可能要使用独特的协议特征,那么这里不同操作的接口就更加简便。

#5 可以这么理解,都是内核的 tcp 栈在处理,不暴露给应用层
#6 按照 tcp 断开的逻辑,如果对端遵从协议就按照协议交互发包,如果出现意外,得看内核如何处理来保证安全,不然就会被 ddos
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2366 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 02:37 · PVG 10:37 · LAX 18:37 · JFK 21:37
♥ Do have faith in what you're doing.