技术阅读周刊第第7️⃣期

技术阅读周刊,每周更新。

历史更新

What is a JWT? Understanding JSON Web Tokens

URL: https://supertokens.com/blog/what-is-jwt

本文主要讲了一些 JWT 的基本原理,以及优缺点e55fb2bf5df352150829515d8a340cae.png

  • JWT 的生成规则 <header>.<body>.<signature>

    • 使用证书+签名算法创建签名 Key

    • 将 header 和 body 的空格换行都去掉后进行 base64,然后使用 . 拼接起来。

    • 将刚才拼接的字符串使用 Base64 + HMACSHA256 生成签名。

    • 最终将 <header>.<body>.<signature> 拼接成 JWT

Base64URLSafe(   HMACSHA256("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJhYmNkMTIzIiwiZXhwaXJ5IjoxNjQ2NjM1NjExMzAxfQ", "NTNv7j0TuYARvmNMmWXo6fKvM4o6nv/aUi9ryX38ZH+L1bkrnD1ObOQ8JAUmHCBq7Iy7otZcyAagBLHVKvvYaIpmMuxmARQ97jUVG16Jkpkp1wXOPsrF9zwew6TpczyHkHgX5EuLg2MeBuiT/qJACs1J0apruOOJCg/gOtkjB4c=")
)
Results in:
3Thp81rDFrKXr3WrY1MyMnNK8kKoZBX9lg-JwFznR-M
  • 验证 JWT

    • 先获取 header,校验头里的签名类型和算法

    • 获取 body,然后按照之前的方式 Base64 + HMACSHA256 生成签名

    • 判断两者签名是否相同,不同则验证失败

    • 判断过期时间是否过期

  • JWT 的优点

    • 安全性:使用非对称加密保证数据不被篡改

    • 高效,无状态:不需要单独使用数据库存储数据,只使用算法就能验证

  • 缺点

    • 因为他的独立性和无状态,除非是 token 过期了,不然很难撤销

    • 依赖于第一步里生成的签名 Key,一旦这个 Key 被泄露就会被伪造。

Go 开发中的十大常见陷阱[译]

URL: https://tomotoes.com/blog/the-top-10-most-common-mistakes-ive-seen-in-go-projects/

最近在  Reddit 上看到一个帖子,让推荐一本 Go 相关的书籍,大部分都是推荐的 “100 Go Mistakes and How to Avoid Them”,目前还没有中译版本,不过作者之前写过一个十个错误的博客,也可以预先看看。

  • 未知的枚举值,将枚举的未知值设置为 0

  • 自动优化的基准测试

  • 被转移的指针,日常开发中建议传值,速度会更快。

loop:  
  for {  
    select {  
    case <-ch:  
    // Do something  
    case <-ctx.Done():  
      break loop  
    }  
  }
  • 出乎意料的 break,在 select 语句中想要退出 for 循环,可以使用标签。

  • 正确传递错误上下文,使用 https://github.com/pkg/errors

  • 扩容切片有性能损耗,如果知道长度可以在初始化时指定长度。

  • 正确使用 context

  • 做好函数抽象,可以参考 io.Reader/io.Writer

  • 在 goroutine 中使用循环调用的时候需要额外赋值,这个在  1.22 已经修复了。

Dapr: A Portable, Event-Driven Runtime for Building Distributed Applications | by Seifeddine Rajhi | Nov, 2023 | Medium

URL: https://medium.com/@seifeddinerajhi/dapr-a-portable-event-driven-runtime-for-building-distributed-applications-c2ea8254406c

本文介绍了 Dapr 是什么,以及给了一个入门示例

95d3dfa3fecf42c767a9ac51b89ab621.png
image.png
  • Dapr 是 Distributed Application Runtime 的简称,翻译过来就是分布式应用运行时。

  • 你可以使用任何语言,任何框架、运行在任何地方构建你的分布式应用程序

  • Dapr 抽象了我们应用开发中所需要的大部分 API,所有与这些 API 交互的 SDK 都是由 Dapr 提供,所以我们不需要关系他的底层是什么。

3 years managing Kubernetes clusters, my 10 lessons. | by Herve Khg | Nov, 2023 | Medium

URL: https://hervekhg.medium.com/3-years-managing-kubernetes-clusters-my-10-lessons-b565a5509f0e

作者描述他三年的 kubernetes 集群管理的十条经验

  • 在云环境使用 kubernetes,这会比自己维护要简单很多,即便是自己维护也不会让自己的业务能力得到成长,或者收益性价比不高

  • 使用代码来部署应用,避免直接在控制台用命令操作,这样难以记录操作。

  • 避免过度使用 helm,同时要对充分理解其中的配置项;这个也很重要。

  • 不要直接迁移应用到 kubernetes,往往需要做相关的适配。

  • 非必要不要使用 Mesh

  • 避免过多的使用管理工具,kubernetes 的管理工具有很多,但大部分操作就靠 kubectl 就够用了。

  • 一定要记得定义资源的限制(内存和 CPU),避免程序 bug 导致 kubernetes 集群出现问题

  • 尽量不要在 Pod 中存储数据,推荐使用 NAS、云存储

  • 配置 HPA,可以根据负载自动扩容 Pod

  • 不要畏惧改变,每年需要对 kubernetes 进行升级,升级前需要充分阅读 ReleaseNote.

Ten Optimization Tricks to Make Your Java Application Run Faster | by lance | Javarevisited | Medium

URL: https://medium.com/javarevisited/ten-optimization-tricks-to-make-your-java-application-run-faster-9742f568ed6f

十个优化让 Java 应用更快

  1. 循环拼接字符串使用 StringBuilder

  2. 线程池代替自定义线程

  3. 容器类预先分配大小

  4. 用枚举代替常量

  5. 用 NIO 代替传统 IO

  6. 用位移操作

  7. 多使用单例模式

  8. 减少锁的范围

  9. 尽量少使用全局变量

  10. 多使用基础数据类型

文章链接:

  • https://supertokens.com/blog/what-is-jwt

  • https://tomotoes.com/blog/the-top-10-most-common-mistakes-ive-seen-in-go-projects/

  • https://medium.com/@seifeddinerajhi/dapr-a-portable-event-driven-runtime-for-building-distributed-applications-c2ea8254406c

  • https://hervekhg.medium.com/3-years-managing-kubernetes-clusters-my-10-lessons-b565a5509f0e

  • https://medium.com/javarevisited/ten-optimization-tricks-to-make-your-java-application-run-faster-9742f568ed6f

PS:最近也在更新视频号,也会有一些技术干货,动动小手帮主播点播关注c339fa310e770f1e8c589993f3ef48c5.jpeg

275f7552998c81c64c6d29671b7c89e6.jpeg

往期推荐

升级到 Pulsar3.0 后深入了解 JWT 鉴权

五分钟k8s实战-Istio 网关

k8s-服务网格实战-配置 Mesh(灰度发布)

k8s-服务网格实战-入门Istio

如何优雅重启 kubernetes 的 Pod 

38e422b123ad6f315f2e741a54841732.gif

点分享

d78bd03f235ba3034fbba44a6ca8d08b.gif

点收藏

429fa14678cab69d26a7b50fcf46b20a.gif

点点赞

3fd6504e578a0fb32795d442909057ef.gif

点在看

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值