V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  anytk  ›  全部回复第 9 页 / 共 14 页
回复总数  275
1  2  3  4  5  6  7  8  9  10 ... 14  
2022-01-23 10:22:27 +08:00
回复了 EyebrowsWhite 创建的主题 Linux 有没有用 chromium 的
好像是 Google 的政策问题,直接 firefox 挺好
2022-01-07 11:27:26 +08:00
回复了 Carver9527 创建的主题 Node.js faker.js 作者删除了所有的代码
能以道德责备作者,却不能以道德责备各大公司,开源公开也并非圣人倾向。这事就是一个公平与否的问题
2022-01-07 11:22:16 +08:00
回复了 kanhongj 创建的主题 Lua 有关 Lua 调用 C++ 编译动态库程序
@kanhongj lua 的 c api 编程,其实就是利用 api 去仿照 lua 语法语义组织执行语句,尤其是 gc 相关。
2022-01-07 11:19:25 +08:00
回复了 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 方法,不是元表的。
2022-01-06 11:32:58 +08:00
回复了 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;
}

```
2021-12-31 15:02:35 +08:00
回复了 cw2k13as 创建的主题 Linux 求推荐一个小白入手的 Linux 桌面版
Debian sid/unstable + KDE Plasma
2021-12-14 08:35:05 +08:00
回复了 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.
2021-12-13 17:04:09 +08:00
回复了 kingofzihua 创建的主题 Linux 问一个协程方面的问题
@kingofzihua 协程的另一个用法是用在插件系统开发中,插件部分是一个小的 context ,但是使用又是受限的,可以由主程序提供多个接口,配合主程序的 eventloop 来实现插件的受限自定义开发工作,降低插件开发的难度要求。
2021-12-13 16:41:51 +08:00
回复了 kingofzihua 创建的主题 Linux 问一个协程方面的问题
@kingofzihua
IO 的模型:
以买餐为例,忽略细节
1. 阻塞:经典模式接口。你到餐馆买餐,在餐馆一直等到做好打包,拿了带回来。
2. 非阻塞:电话订餐,每隔小段时间重新打电话问餐馆做好没(其他时间有自由时间处理其他事情),做好了就去拿回来。这电话就是非阻塞调用,但是依然是操作系统调用,会有内核陷入。
3. 异步:操作系统提供接口支持,也就是 event loop 模式。电话订餐,餐做好了餐馆直接电话给你通知好了,你去取餐。

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

#5 可以这么理解,都是内核的 tcp 栈在处理,不暴露给应用层
#6 按照 tcp 断开的逻辑,如果对端遵从协议就按照协议交互发包,如果出现意外,得看内核如何处理来保证安全,不然就会被 ddos
2021-12-07 10:36:38 +08:00
回复了 amiwrong123 创建的主题 程序员 关于 socket 的 shutdown close 函数的几个疑问?
FIN 包是 tcp 协议的要求,tcp 连接断开有 4 次包交互;
socket 只是操作系统抽象出来管理的,多进程共享 socket 是常见的,比如 fork 的子进程会共享复制父进程的 socket ,但实际上都只是引用计数到同一个对象上;
试着把 tcp 协议握手部分跟 bsd socket 实现先分开理解。
2021-11-05 08:51:04 +08:00
回复了 anytk 创建的主题 Google Google One 手机备份总是失败
@cst4you 我需求主要就是备份 WIFI 密码之类的,应用没考虑过,而且仔细看了下备份说明,超过 57 天没有使用备份就会删除,所以还是鸡肋
2021-11-04 15:04:25 +08:00
回复了 anytk 创建的主题 Google Google One 手机备份总是失败
@dingwen07 好的
@cxh116 好的,感谢
@BurneJones 应该不是线路问题
带日志的文件系统都没这个问题

Debian 安装应该都支持这些文件系统,但是某些文件系统需要单独的 ESP 分区或者 BOOT 分区
2021-09-28 17:37:42 +08:00
回复了 InDom 创建的主题 Linux 迫于可能无法黑苹果,求推荐你在用的 Linux 发行版与桌面。
Debian unstable + KDE Plasma
2021-08-26 08:32:50 +08:00
回复了 onice 创建的主题 新手求助 C/C++是两种不同的语言吗?
是,现代规范而言,基本已经分道扬镳了,两种语言中,某些方面甚至有相悖的约束。

喜欢享受纷繁设计乐趣、某种程度的自虐,以及水平风格千差万别的友军,选 C++
否则,还是 C
2021-08-24 16:14:33 +08:00
回复了 em2046 创建的主题 Edge Edge 浏览器可以的,看来是换回 Firefox 的时候了
Firefox 真香
2021-08-06 09:04:33 +08:00
回复了 James369 创建的主题 程序员 有了解 GIS 的么,请教个经纬度的问题?
参考: https://geographiclib.sourceforge.io/html/python/geodesics.html#introduction
先 Geodesic.Inverse 然后距离平分再 Geodesic.Direct
2021-07-22 15:22:28 +08:00
回复了 abc0123xyz 创建的主题 宽带症候群 联通宽带的限速有问题
用 iperf3 测速也一样的,TCP 速率跟带宽限制差不多一致,但是 UDP 可以跑到更高的传输速率。BT 传输主要用的是 UDP
1  2  3  4  5  6  7  8  9  10 ... 14  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2639 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 03:48 · PVG 11:48 · LAX 19:48 · JFK 22:48
Developed with CodeLauncher
♥ Do have faith in what you're doing.