V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ns09005264  ›  全部回复第 1 页 / 共 6 页
回复总数  103
1  2  3  4  5  6  
20 小时 33 分钟前
回复了 qinfengge 创建的主题 Windows 微软到底在干什么啊
诚挚地邀请你:Linux ,启动!
4 天前
回复了 whnoob 创建的主题 Java 功能设计思路
省-市-区:可以用地区编号拼接来表示,省的编号 2 位,市的编号 2 位,区的编号 5 位,比如直辖北京市海淀区:000100005 ,广东省广州市没有区:1001 ,这样数据的地点信息可以放在一个字段里,查询也好查,也支持市或区的缺省。
功能点 2 是指数据有多种类型,每种类型的字段都不一样是吧,用商品信息举例:
{类型:手机,名称:小米,CPU:骁龙,Memory:12G},
{类型:手机,名称:华为,CPU:麒麟,Memory:12G},
{类型:键盘,布局:75,按键轴:青轴},
{类型:水果,名称:苹果,重量:15g}
如果数据类似这种的话,可以用字段映射表来解决,
数据的表的格式像这样:
类型: enum; field01: varchar, filed02:varchar,boolField01:boolean;

还需要几张表来描述字段之间的映射关系,比如类型为手机时,将名称字段映射为 field01 字段,略微有些复杂,涉及到反射、映射查询、前端映射展示等。
> 这让我想起《这个杀手不太冷》里的杀手说,他杀人的秘诀是用匕首,而菜鸟新人一般先学狙击。高手用匕首确实有很多优点,但缺点也很明显:你要先成为高手。
@ChrisFreeMan 这句话我的理解是菜鸟应该学 Typescript ,类型安全+丰富的自动补全能减少很多基础错误,高手可以用 Javascript ,经验丰富,长期积累下来的编程范式会避免一些错误。
Webassembly+WebGPU ,能当多平台客户端用,也能在浏览器中运行。
像这样: https://mvlabat.github.io/bevy_egui_web_showcase/index.html
6 天前
回复了 lucasj 创建的主题 程序员 推荐几个你一直在用的开源项目工具
i18n, Internationalization, 本地化
先用 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 完成后的回调都能正确获得自己的索引。
39 天前
回复了 YugenFring 创建的主题 程序员 问一下关于 Spring 做全栈的事情
论坛、博客之类的这套技术倒是很好,还方便 seo 。
只要页面稍微复杂点,比如实时通信、通知、列表查询之类的就不行了。
总体而言不建议学了,只要你涉及到前端的领域,总有一天要接触 node 前端工程化的。
39 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
@FYFX 只是用 user-agnet 举个例子,不想那么严格的时候可以根据 user-agent 来判断,只要别在验证不通过时明确告知原因就能阻挡一部分非法请求。想严格一点可以用浏览器指纹或设备 id 之类的。总之这是多设备识别的时间,有状态的 sessionID 能做到的,无状态的 jwt token 也能做到。
39 天前
回复了 junwind 创建的主题 程序员 大佬们好, JWT 如何防止多端登录 ?
https://gateway.pinata.cloud/ipfs/QmWv2NmD5iLVTsSo3QkEsGnHKxtQqMoeZZTs76ohGz1aHC

图里这个 jwt token 是在 linux 下 firefox 中登录时生成的,如果用户把这个 token 拿到 windows 上的 chrome 去用,只需要获取请求头中的 user-agent 就可以判断它是异端登录。整个过程依旧是无状态的,根本不需要在服务器的什么地方维护用户的登录和设备信息。
39 天前
回复了 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 维坐标,也可以将坐标线性化。
所以你说的二维坐标可能是二维数组的索引吧。
49 天前
回复了 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();
}
```
1  2  3  4  5  6  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5808 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 44ms · UTC 06:24 · PVG 14:24 · LAX 23:24 · JFK 02:24
Developed with CodeLauncher
♥ Do have faith in what you're doing.