所有权是 Rust
很有意思的一个语言特性,但对于初学者却是一个比较有挑战的内容。
今天尝试用代码示例来聊聊 Rust
的所有权是什么,以及为什么要有所有权。希望能给初学的朋友一点帮助。
Tips:文中代码有相应注释,建议可以先不用纠结细节,关注整体。后边可以再挨个去研究具体代码细节
所有权是 Rust
很有意思的一个语言特性,但对于初学者却是一个比较有挑战的内容。
今天尝试用代码示例来聊聊 Rust
的所有权是什么,以及为什么要有所有权。希望能给初学的朋友一点帮助。
Tips:文中代码有相应注释,建议可以先不用纠结细节,关注整体。后边可以再挨个去研究具体代码细节
提到OAuth2
,大家多少都有些了解。
不了解的话可以先看下之前的简单聊聊鉴权背后的那些技术先回顾一下基本概念和流程。
简单来说,以google
授权为例,一般就是通过用户授权页面登录google
账号,再跳转用code
换取到相应权限的token
,就可以代表用户去发起一些google api
的请求。
直接代码实现这套授权逻辑并不复杂,不过如果还需要接入facebook
授权,instagram
授权呢,总不能挨个去实现一遍吧。
最好能有一套通用的解决方案来解放双手, 今天我们就聊聊如何用keycloak
实现一套通用的身份验证和授权管理方案。
提前说明,无法本地复刻的技术方案不利于理解,也不利于方案探讨。虽然本文章所用代码是使用了
rust
的axum
框架(为啥?因为rust
is future!)+keycloak
,但从服务启动到keycloak
服务及相关配置,都用docker-compose+terraform+shell
脚本化管理,可100%本地复刻,欢迎本地尝试。(当然我说的是Mac
下)代码地址: https://github.com/NewbMiao/axum-koans
最近开始学习《陈天 · Rust 编程第一课》,在用docker
镜像打包构建代码示例时,每次都会在更新crate.io
索引上等上一会,即便在没有修改Cargo.tomal
依赖的前提下。
想着难道没有办法缓存下更新么,于是就有了这篇新手踩坑指南。
最近弄了一个keycloak
鉴权相关demo(地址附文末), 可以让不熟悉的keycloak
的同学有一个快速、直观的了解。
今天结合背后的技术概念,简单聊聊:鉴权(authentication
)和授权(authorization
)以及Oauth2
、OpenID Connect
、JWT
和 JWKS
。
今天在修正昨天的文章《orDone的两种实现》中的压测代码时,无意发现其中的二分递归版的代码是有问题的。
主要是goroutine
泄露的问题,下边简单说明下,也参考自文章记一次学习 orDone 模式爬坑经历
最近看了鸟窝的《Go并发编程实战课》,写的挺有意思的,打算后边弄些例子再回顾下并发原语。
今天来看看cond
原语。
cond
是用于等待或通知场景下的并发原语,条件不满足时,阻塞(wait
)一组goroutine
;条件满足后,唤醒单个(signal
)或所有(broadcast
)阻塞的goroutine
.
比如10个运动员跑步,都准备好了,裁判才发令的例子:
最近看Dave Cheney的一篇文章,发现一个有趣的代码片段,里面展示了一个8byte的内存优化。
代码片段是这样的:
1 | func BenchmarkSortStrings(b *testing.B) { |