其他

MQ系列7:消息通信,追求极致性能

1 介绍 前面的章节我学习了 NameServer的原理,消息的生产发送,以及消息的消费的全过程。 我们来回顾一下: RocketMQ 消息队列架构主要包括NameServe、Broker(Master/Slave)、Producer、Consumer 4个核心部件,基本执行流程如下: NameServer 优先启动。NameServer 是整个 RocketMQ 的“中央大脑” ,作为 RocketMQ 的服务注册中心,所以 RocketMQ 需要先启动 NameServer 再启动 Rocket 中的 Broker。 Broker 启动后,需要将自己注册至NameServer中,并 保持长…

Redis系列8:Bitmap实现亿万级数据计算

1 前言 我们在第一篇 深刻理解高性能Redis的本质 的时候就介绍过Redis的几种基本数据结构,它是基于不同业务场景而设计的: 动态字符串(REDIS_STRING):整数(REDIS_ENCODING_INT)、字符串(REDIS_ENCODING_RAW) 双端列表(REDIS_ENCODING_LINKEDLIST) 压缩列表(REDIS_ENCODING_ZIPLIST) 跳跃表(REDIS_ENCODING_SKIPLIST) 哈希表(REDIS_HASH) 整数集合(REDIS_ENCODING_INTSET) 除了这常见数据类型,还有一些不常用的数据类型,如 BitMap、G…

Redis系列9:Geo 类型赋能亿级地图位置计算

Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5:深入分析Cluster 集群模式 追求性能极致:Redis6.0的多线程模型 追求性能极致:客户端缓存带来的革命 Redis系列8:Bitmap实现亿万级数据计算 1 前言 我们在第一篇 深刻理解高性能Redis的本质 的时候就介绍过Redis的几种基本数据结构,它是基于不同业务场景而设计的: 动态字符串(REDIS_STRING):整数(REDIS_ENCODING_INT)、字符串(REDIS…

使用 cookie 的身份验证和授权

前言 在上一章 学学 dotnet core 中的身份验证和授权-1-概念 中,我们大致明白了身份验证和授权两者的关系。那么在本文中,我们将使用 cookie 来做一个简单的身份验证和授权。 本文中我使用的是 .net core6,并用 MiniApi 的方式编写。 下发凭证 在上一章中,我们得知客户端必须先从服务器上得到凭证,才能够这个凭证去进行身份验证和授权。所以我们的第一步就是:从服务器得到凭证。 这种下发凭证的接口一般是登录接口,所以,我们来弄一个登录的接口吧。 在 MiniApi 中写一个 Login 接口: [crayon-68a9ca79096be521505224...

跨域问题和使用 cookie 的限制

前言 在我的文章 使用 cookie 的身份验证和授权 的最后,讲到了跨域问题,这篇文章就简单介绍跨域的相关知识,并说明在 net core 中怎么设置跨域。 使用的版本为 net6,并使用 MiniApi 演示。 XSS 攻击 跨域的由来不得不提到 XSS 攻击。 全名:Cross-site scripting(跨站脚本攻击)。这是一种安全漏洞,攻击者可以利用这种漏洞在网站上注入恶意的客户端代码。若受害者运行这些恶意代码,攻击者就可以突破网站的访问限制并冒充受害者。简单地说,就是我可以在你的网站偷偷上运行我的代码,那有多危险。 为了应对这种情况,便有了浏览器的同源策略。 同源策略 这个策略是…