设计的改进|学习笔记

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习设计的改进

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术设计的改进学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15974


设计的改进

 

代码里有很多跟 java1 有关的技术,所以除了有看设计是怎样落实到代码上的还有很多 java1 中间可能之前没有碰到过的技术

1、Redis 存储设计

(1)在 Redis 中存储用户的权限位信息

(2)Key:"p_"+ 用户 ID·Value: BitMap

设计做了更新,需求没有变化,数据库的结构有发生一些变化主要的变化在于 Redis 的存储。

Redis 存储打算用 bitmap 来存,把每一个用户权限用二进制的 value ,角色也用一个 value 来存。对于单个的权限只有一个 value 是1的 value 来存,然后做 value 操作来完成权限的较练,发现没有必要用 bitmap 来存。

代码可以改成一个集合,因为集合的操作更加方便,写代码做一个决定不是因为好写、方便才这样做,主要的原因是集合做法的好处是写起来方便一些,坏处是比较

占空间。

用集合不用 bitmap 是因为权限 value 不是特别多,在系统中间最多有五六百个权限,每一个人拥有的权限是不同的。假如系统里面最多有500或者600个权限,一个

人最多是500或600个权限,不会弄出七百、八百个,没有很多。

500乘8才 4000个bit,500或600个字节就能把一个人的权限,或者一个角色的权限存完。假如同时在线有1万人是五兆的数据,用五兆的数据把1万个人的权限至全部充完。

五兆的数据对于内存不是问题,如果用 bitmap 来存会要除8,所以 bitmap 会更加

节约空间。

对于需求量不是特别大没必要用到 bitmap 这种高级的东西,所以最后的代码是用集合方式来做的,集合方式做还更加简单,代码会更加简洁,这是设计和实现的差异。设计上做的东西,但在实现的时候会发现有更好的方案,所以进行改变。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
10月前
|
数据库 Nacos
【项目实战典型案例】08.用户成为设计者的正例
【项目实战典型案例】08.用户成为设计者的正例
|
10月前
项目实战8—用户成为设计者
项目实战8—用户成为设计者
39 0
|
10月前
|
C++
C++学习笔记_01基础 2021-04-15
C++学习笔记_01基础 2021-04-15
【项目实战典型案例】22.原型图的面向对象
【项目实战典型案例】22.原型图的面向对象
【项目实战典型案例】22.原型图的面向对象
|
存储 C++
C++基础学习笔记
C++基础学习笔记
|
编解码 算法 C#
计算机动画基础 | 学习笔记
快速学习计算机动画基础,介绍了计算机动画基础系统机制, 以及在实际应用过程中如何使用。
203 0
计算机动画基础 | 学习笔记
|
存储 运维 Cloud Native
OpenKruiseGame 的设计理念详解| 学习笔记(二)
快速学习 OpenKruiseGame 的设计理念详解
223 0
OpenKruiseGame 的设计理念详解| 学习笔记(二)
|
弹性计算 运维 Kubernetes
OpenKruiseGame 的设计理念详解| 学习笔记
快速学习 OpenKruiseGame 的设计理念详解
639 0
OpenKruiseGame 的设计理念详解| 学习笔记
|
前端开发 JavaScript 开发者
前端技术-模块化概念说明 | 学习笔记
快速学习 前端技术-模块化概念说明
69 0
|
开发者 Python
基础题| 学习笔记
快速学习基础题
66 0