pastgift

pastgift

V2EX 第 426318 号会员,加入于 2019-07-02 17:54:32 +08:00
pastgift 最近回复了
312 天前
回复了 golangggg 创建的主题 Redis 关于 redis 一个小问题(随机性)
127.0.0.1:6379> lpush test a
(integer) 1
127.0.0.1:6379> lpush test b
(integer) 2
127.0.0.1:6379> lpush test c
(integer) 3
127.0.0.1:6379> lrange test 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> lrem test 0 b
(integer) 1
127.0.0.1:6379> lrange test 0 -1
1) "c"
2) "a"
127.0.0.1:6379>
312 天前
回复了 golangggg 创建的主题 Redis 关于 redis 一个小问题(随机性)
list 也可以移除 ip 吧
虽然我不喜欢用 Electron 开发的应用
...
...
...
但是让我自己开发,我还是选 Electron
2023-01-04 13:20:46 +08:00
回复了 t202201 创建的主题 程序员 后端是不是很难做独立开发啊?
是的,纯后端只能做框架、库等「底层」用户看不到的东西
想要做点用户能直接用的东西,必须得有广义上的「前端」

可以上招聘网站搜搜前端的一般用什么技术,照着学习即可
Session 一般指的是,通过在 Cookies 里保存的一个 SessionID 实现鉴别用户的处理方式
好处是对 Web 前端,也就是浏览器基本上是透明的,前端开发不用管

Token 一般指的是,登录成功后,通过 JWT 等方式把少量信息编码成一串字符串返回给客户端,客户端在请求时一般将其附带在 HTTP Header 上,供服务端鉴别用户的处理方式
好处是任何客户端都能方便处理,并且 JWT 方式客户端本身也能获取字段信息

> 使用 token,由于 token 存储的是少量信息,是不是每次都还需要在拦截器中验证并去数据库加载用户信息
> 如果一个前端页面包含多个请求,每个请求都需要鉴权数据库压力不是很大么
> 解决是不是可以用 redis 集群做信息缓存,但是这样和传统 session 操作方式不是类似么

是这样的,如果 Token 中保存的信息少到只有 Token ID,那和传统 Session 的唯一差别就在于是不是依赖 Cookies 了

> 所以说 token 和传统 session 优势是什么,token 概念上是无状态,但是不可能真的把用户所有信息都存上呀

没有必要严格按照概念、范式,要面对实际问题

我实践下来的感受是有状态的 Token 比严格的无状态 Token 更好用,主要还是用在服务器端作废 Token,用户权限变更需要及时生效之类的处理上。

此外,Token 附带的信息并不限定「用户信息」

比如,要实现客户端发生变化( IP 、UserAgent 等)后,强制退出的功能,可以在 Token 发行时将客户端相关信息 MD5 后加入 Token,后续收到 Token 之后拿 Token 中附带的客户端信息 MD5 值和本次请求实际的客户端信息 MD5 值进行比对,有变化就拒绝,从而加强一定安全性,且操作完全不经过数据库、Redis 等其他组件。

再比如,要实现服务器端升级后,要求所有用户重新登录(重新发行 Token ),那么同理,发行时把服务器端的版本号写入 Token,收到 Token 时进行比对,这同样不需要额外查询数据库、Redis 。

也可以实现按照业务的请求转发。
比如 VIP 用户可以在 Token 中写入 VIP 标记,那 API 网关就可以将此请求转发到不同的服务器 /集群上处理,也能避免 API 网关去直接去数据库查询业务数据。

其他的那种比较直观的,比如展示在页面上的用户昵称如果写入 Token,那前端可能就可以不用额外请求用户信息接口。但这些都不太重要
2021-09-05 04:39:58 +08:00
回复了 onice 创建的主题 Linux 为什么你要用 Linux 当桌面呢?
人家用 Linux 桌面同时也能用好,说明人家比较能折腾,也能折腾好呗
我就是反过来,不喜欢折腾,本机 Windows/macOS + 虚拟机里装 Ubuntu Server
开发环境都在虚拟机里,可以随便造,大不了一个快照回滚,也方便做测试,可以分叉出各种不同的系统环境
代码在本机,共享到虚拟机里,也不怕丢

Linux 好的在 Linux 里用,Windows/macOS 好的在本机里用就行了
要说方便,肯定是 Windows 最方便,macOS 虽说和 Linux 接近,但终究也不是 Linux,我一样还是要虚拟机 Ubuntu 的

至于有人说 Linux 桌面比 Windows 还方便,看看就好,要有自己的判断人家为什么这么说
比如说人家那是什么场景?人家平时都在干啥?
相反,你如果都自己亲自用下来觉得 Linux 桌面没 Windows 方便了,那就是 Linux 桌面不适合你,和菜不菜没什么关系。
就好像还有说 Vim/Emacs 方便的,说 VS Code 好的,人家也没说谎。
但我就喜欢 Sublime,我也不见得就因为一个编辑器就比别人差,对吧

这些东西说到底还是算作工具器材
一个人牛不牛,关键在于他创造了什么财富价值,而不是他手里拿的是大厂出品的锤子还是自己组装的锤子
2021-07-21 16:31:24 +08:00
回复了 asanelder 创建的主题 程序员 求问测试大佬, HTTP 接口的自动化测试如何解决数据污染问题
肯定要有一开始的测试环境构建和最后的环境清理的
自动化测试启动前,必要的数据导入数据库
跑完测试,把相关的测试数据全部清理掉

有条件的应该是新开一个完全独立的自动化测试环境,跑完删了就行,不和开发环境混在一起
没条件的可以给自动化测试时创建的记录加上前缀(比如,新建用户的时候,用户名起成「 autotest_user 」,最后统一根据前缀删除
2021-03-17 21:22:13 +08:00
回复了 yezheyu 创建的主题 Python 请教下老哥,实际开发中哪些地方必须使用 try...except...
也有取深层 json 字段,但结构可能不正确的时候

try:
data = j['a']['b']['c']
except KeyError as e:
data = None

if data is None:
pass
2021-03-14 21:22:37 +08:00
回复了 fxjson 创建的主题 程序员 有没有用 node 写后端的?
还在用 Express... 做久了一大堆现成的代码,开发起来很快,也懒得换
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2883 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 13:29 · PVG 21:29 · LAX 06:29 · JFK 09:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.