当前位置: 首页 > article >正文

java常用技术总结

Redis 如何做内存优化?

1 、缩短键值的长度
缩短值的长度才是关键,如果值是一个大的业务对象,可以将对象序列化成二进制数组;首
先应该在业务上进行精简,去掉不必要的属性,避免存储一些没用的数据;其次是序列化的
工具选择上,应该选择更高效的序列化工具来降低字节数组大小;以 JAVA 为例,内置的序
列化方式无论从速度还是压缩比都不尽如人意,这时可以选择更高效的序列化工具,如 :
protostuff kryo
2 、共享对象池
对象共享池指 Redis 内部维护 [0-9999] 的整数对象池。创建大量的整数类型 redisObject 存在
内存开销,每个 redisObject 内部结构至少占 16 字节,甚至超过了整数自身空间消耗。所以
Redis 内存维护一个 [0-9999] 的整数对象池,用于节约内存。 除了整数值对象,其他类型如
list,hash,set,zset 内部元素也可以使用整数对象池。因此开发中在满足需求的前提下,尽量使
用整数对象以节省内存。
3 、字符串优化
4 、编码优化
5 、控制 key 的数量
 

 Redis的同步机制了解么?

Redis 可以使用主从同步,从从同步。第一次同步时,主节点做一次 bgsave ,并同时将后续
修改操作记录到内存 buffer ,待完成后将 rdb 文件全量同步到复制节点,复制节点接受完
成后将 rdb 镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复
制节点进行重放就完成了同步过程。

是否使用过 Redis 集群,集群的原理是什么?

Redis 集群实现了对 Redis 的水平扩容,即启动 N Redis 节点,将整个数据库分布存储在
N 个节点中,每个节点存储总数据的 1/N
Redis 集群通过分区( partition )来提供一定程度的可用性( availability ): 即使集群中有一
部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。
具体的原理:
- 哨兵机制 Sentinal 着眼于高可用,在 master 宕机时会自动将 slave 提升 为 master ,继
续提供服务。
- 集群分片, Cluster 着眼于扩展性,在单个 redis 内存不足时,使用 Cluster 进行分片存储。

Shiro 框架

Apache Shiro 是一个强大易用的 java 安全框架,提供了认证、授权、加密和会话管理功能,
可为任何应用提供安全保障 - 从命令应用、移动应用到大型网络及企业应用。
Shiro 已将安全认证相关的功能抽取出来组成一个框架,使用 Shiro 就可以非常快速的完成认
证、授权等功能,降低系统开发成本。
Shiro 使用广泛, Shiro 可以运行在 web 应用、非 web 应用、集群分布式应用中越来越多的
用户开始使用 Shiro
java 领域中 Spring Security 也是一个开源的权限管理框架,但是 Spring Security 依赖 Spring
运行,而 Shiro 就相对独立,最主要因为 Shiro 使用简单、灵活。

Shiro  的运行流程

比如一个登陆流程:
1 、首先调用 Subject.login(token) 进行登录,他会委托给 SecurityManager
2 SecurityManager 负责真正的身份验证逻辑;它会委托给 Authenticator 进行身份验证;
3 Authenticator 会把相应的 token 传入 Realm ,从 Realm 获取身份验证信息,如果没有就返
回认证失败,有的话就继续执行操作。

如何对密码进行加密?

Spring Security 中对密码进行加密通常使用的是密码编码器( PasswordEncoder )。
PasswordEncoder 的作用是将明文密码加密成密文密码,以便于存储和校验。 Spring Security
提供了多种常见的密码编码器,例如 BCryptPasswordEncoder SCryptPasswordEncoder
StandardPasswordEncoder 等。
Shiro 提供了 PasswordService CredentialsMatcher 用于提供加密密码及验证密码服务。

 


http://www.kler.cn/a/385591.html

相关文章:

  • 云计算:定义、类型及对企业的影响
  • vue2面试题6|[2024-11-11]
  • 【大数据学习 | HBASE高级】region split机制和策略
  • c语言数据结构与算法--简单实现队列的入队和出队
  • 数据库管理-第260期 业务向前,数据库向后(20241111)
  • 深度学习-图像评分实验(TensorFlow框架运用、读取处理图片、模型建构)
  • vue3中利用路由信息渲染菜单栏
  • 动手学深度学习9.8. 束搜索-笔记练习(PyTorch)
  • 图像手动标注-labelme+yolo格式导出
  • 开源模型应用落地-glm模型小试-glm-4-9b-chat-压力测试(六)
  • 自动化测试工具Ranorex Studio(二十六)-对象库设置对话框
  • Python实战:调用淘宝API以抓取商品页面数据
  • 易考八股文之docker常用命令
  • 【Flutter 内嵌 android 原生 View以及相互跳转】
  • ELK实现前台单显示ip/host等日志信息
  • 向日葵远程桌面Visual Studio白屏
  • 如何在Typora中使用copilot
  • HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)本地搜索方案概述
  • 【已解决】Windows11 24H2 (家庭版)无法访问无密码SMB共享的问题;
  • 您与此网站之间建立的连接不安全解决方法
  • Node.js——fs模块-文件删除
  • # VMwareWorkstation虚拟机,如何下载安装 VMware Tools
  • Service Worker 缓存未更新的原因与解决方案
  • 使用 C# `Stopwatch` 实现函数 `Test01`的运行时间计算
  • 无人车之路径规划篇
  • R language 关于二维平面直角坐标系的制作