V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ns09005264  ›  全部回复第 1 页 / 共 5 页
回复总数  95
1  2  3  4  5  
先用 docker0 这个虚拟网卡的 ip 试试连通性吧,也就是 172.0.0.0/24 这个网段的 ip ,这个网段不用走路由器。
没有 bug ,没人去 github 上看代码,没人看就没有星星,是有这个可能的。
@abccccabc
我重新确认了下,你问题里的代码没问题啊,也不用提取到循环外的函数里,除非在 post 回调函数里使用了 var i 变量,把关键的问题代码隐藏了。
```
var allimg = ["https://www.baidu.com/s/1.jpg", "https://www.baidu.com/s/2.jpg", "https://www.baidu.com/s/3.jpg", "https://www.baidu.com/s/4.jpg"];
var oldcontent = "<img src='https://www.baidu.com/s/1.jpg'><img src='https://www.baidu.com/s/2.jpg'><img src='https://www.baidu.com/s/3.jpg'><img src='https://www.baidu.com/s/4.jpg'>";
for (var i = 0; i < allimg.length; i++) {
post(allimg[i], function(ret) {
oldcontent = oldcontent.replace(ret['oldimgurl'], ret['newimgurl']);
console.log(oldcontent);
});
}
function post(url, callback) {
const time = Math.floor(Math.random() * 100 + 100);
setTimeout(() => callback({"oldimgurl": url, "newimgurl": url + "new"}), time);
}
```
输出:
```
<img src='https://www.baidu.com/s/1.jpgnew'><img src='https://www.baidu.com/s/2.jpgnew'><img src='https://www.baidu.com/s/3.jpgnew'><img src='https://www.baidu.com/s/4.jpgnew'>
```
https://runjs.co/s/IUEhsmWc2
你问题里的代码没有问题啊, oldContent 最终都会被正确替换呀。
有问题的是 for 循环的 var i ,但是你代码里也没有使用,除非你隐藏了和索引 i 相关的代码。
```
var str = "Hello ";
for (var i = 0; i < 5; i++) {
wait().then(() => {
str = str + "i";
console.log("index: ", i, "str: ", str);
});
}
async function wait() {
return new Promise((resolve) => {
const time = Math.floor(Math.random() * 100 + 100);
setTimeout(resolve, time);
});
}
```
这段代码和你的基本一样,输出是这样的:
```
index: 5 str: Hello i
index: 5 str: Hello ii
index: 5 str: Hello iii
index: 5 str: Hello iiii
index: 5 str: Hello iiiii
```
也就是说 var i 类似全局变量

如果把 var i 换成 let i ,输出是这样的:
```
index: 1 str: Hello i
index: 4 str: Hello ii
index: 2 str: Hello iii
index: 0 str: Hello iiii
index: 3 str: Hello iiiii
```
每次 post 完成后的回调都能正确获得自己的索引。
12 天前
回复了 YugenFring 创建的主题 程序员 问一下关于 Spring 做全栈的事情
论坛、博客之类的这套技术倒是很好,还方便 seo 。
只要页面稍微复杂点,比如实时通信、通知、列表查询之类的就不行了。
总体而言不建议学了,只要你涉及到前端的领域,总有一天要接触 node 前端工程化的。
12 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
@FYFX 只是用 user-agnet 举个例子,不想那么严格的时候可以根据 user-agent 来判断,只要别在验证不通过时明确告知原因就能阻挡一部分非法请求。想严格一点可以用浏览器指纹或设备 id 之类的。总之这是多设备识别的时间,有状态的 sessionID 能做到的,无状态的 jwt token 也能做到。
12 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
https://gateway.pinata.cloud/ipfs/QmWv2NmD5iLVTsSo3QkEsGnHKxtQqMoeZZTs76ohGz1aHC

图里这个 jwt token 是在 linux 下 firefox 中登录时生成的,如果用户把这个 token 拿到 windows 上的 chrome 去用,只需要获取请求头中的 user-agent 就可以判断它是异端登录。整个过程依旧是无状态的,根本不需要在服务器的什么地方维护用户的登录和设备信息。
12 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
我觉得,jwt 最大的意义是自带信息。

生成 jwt token 的时候除了必要的用户信息外,还可以加上登录时的设备信息,比如 ip 、user-agent 或其他识别信息等。这样 jwt token 里就包含设备信息了。
后续验证 jwt token 时,看它的请求头里和 jwt token 包含的信息是否对应得上,对不上就是多端使用 jwt token 了

比如该用户在 PC 浏览器上登录了,服务器为此生成了 jwt token ,这个 token 中包含的 user-agent 是 pc 的。
后面该用户把 jwt token 复制到 Android 浏览器上用来使用,但是请求头中的 user-agent 和 jwt token 里的对应不上,那么就是异端登录了。
有种方式可以将多维坐标线性化,用一维数组表示空间信息
https://docs.rs/ndshape/latest/ndshape/

体素游戏一般都有 chunk 概念,chunk 就是线性化坐标数组,加上 chunk 本身也有 3 维坐标,也可以将坐标线性化。
所以你说的二维坐标可能是二维数组的索引吧。
23 天前
回复了 bddxg 创建的主题 Linux 想转 manjaro 但是有几个问题困扰着我
推荐装 ArcoLinux ,注意是 Arco 。相比 ArchLinux ,它的安装程序可以帮你解决一些最基本但你可能不清楚的问题,比如字体、剪切板、蓝牙、网络管理等。
关于你的需求,1-3: 我不知道在 linux 上有没有这些比较全面的软件的替代品,根据 unix 哲学,你可以通过一系列软件组合达到类似的效果,就是很麻烦。
nvim 的这个功能是 bufferline.nvim 这个插件带来的。https://github.com/akinsho/bufferline.nvim
vim 对应的插件不知道应该是 buftabs.vim 吧。
```javascript
let f;
if (flag()) {
f = () => {
foo();
bar();
};
} else {
f = () => bar();
}
for (let i = 0; i < length; i++) {
f();
}
```
68 天前
回复了 FrankAdler 创建的主题 程序员 求教一个正则的写法
@ns09005264 倒数第二行没法了,只能用额外的判断了。
68 天前
回复了 FrankAdler 创建的主题 程序员 求教一个正则的写法
[img]https://i.imgur.com/3hEsvJ0.png[/img]

这个咋样
```
((第|s|season)\s*(\d+).*?季?)?(第|e|ep)\s*(\d+)
```
group3 就是季,group3 是空的就是第一季
group5 就是集
77 天前
回复了 Authorization 创建的主题 程序员 我用 chatgpt 写了一个密码网站
这让我想到一个问题,
一个不会编程的人通过询问 GPT 来实现需求所花的时间,和另一个直接去学习编程然后通过 Github Copilot 来实现需求所花的时间,这两者谁更有性价比。
所以你花了多久写的这个?
80 天前
回复了 lynan 创建的主题 分享发现 来说说你们认为信达雅的翻译吧
战锤四神
Khorne: 恐虐
Tzeench: 奸奇
Slaanesh: 色孽
Nurgle: 纳垢
中文译名与祂们的背景相当同步。
不知道历史缘由,个人觉得向下移动比向上移动频繁,而食指比中指更灵活,强强联合。
我用 vim 做文件[批量]重命名的,配合 lf 之类的终端文件管理器选择文件,然后在 vim 中进行操作就可以了,想用正则用正则,想用 V-Block 多行编辑就用。
由于它是基于 mv 命令进行命名的,所以可以做到给不同文件夹里的文件们同时重命名,或者将一个文件夹里的文件分发到不同的文件夹。
通过管道符导入到其他接受 stdin 的程序里试试,比如 vim 。像这样: ffmpeg command | vim ,vim 里没有输入就不是 stdin
109 天前
回复了 Dosenf 创建的主题 程序员 快被 IPV6 逼疯了
openwrt 设置 ipv6 ,有篇文章讲的比较详细,可以让你知道为什么这么设置。
https://post.smzdm.com/p/awzodmpp/
他讲了一些 Ipv6 分配相关的知识。
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   953 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 21:18 · PVG 05:18 · LAX 14:18 · JFK 17:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.