Ehcache

Java 程序员如何使用 Shiro 框架

不羁的心 提交于 2020-08-18 07:14:50
微信搜索【 Java秃头哥 】,关注我,每天8点半推送技术优质文章。回复关键词“222”,领取100本架构师相关书籍。 作者:冷豪 来自:www.cnblogs.com/learnhow/p/5694876.html 一、架构 要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shiro的应用不依赖任何容器,它也可以在JavaSE下使用。但是最常用的环境还是JavaEE。下面以用户登录为例: 1、使用用户的登录信息创建令牌 UsernamePasswordToken token = new UsernamePasswordToken(username, password); token可以理解为用户令牌,登录的过程被抽象为Shiro验证令牌是否具有合法身份以及相关权限。 2、执行登陆动作 SecurityUtils.setSecurityManager(securityManager); // 注入SecurityManager Subject subject = SecurityUtils.getSubject(); // 获取Subject单例对象 subject.login(token); // 登陆 Shiro的核心部分是SecurityManager,它负责安全认证与授权。Shiro本身已经实现了所有的细节

SpringBoot2 整合Ehcache组件,轻量级缓存管理

只谈情不闲聊 提交于 2020-08-15 21:34:32
本文源码: GitHub·点这里 || GitEE·点这里 一、Ehcache缓存简介 1、基础简介 EhCache是一个纯Java的进程内缓存框架,具有快速、上手简单等特点,是Hibernate中默认的缓存提供方。 2、Hibernate缓存 Hibernate三级缓存机制简介: 一级缓存 :基于Session级别分配一块缓存空间,缓存访问的对象信息。Session关闭后会自动清除缓存。 二级缓存 :是SessionFactory对象缓存,可以被创建出的多个 Session 对象共享,二级缓存默认是关闭的,如果要使用需要手动开启,并且依赖EhCache组件。 三级缓存 :查询缓存,配置开启该缓存的情况下,重复使用一个sql查询某个范围内的数据,会进行缓存。 3、EhCache缓存特点 快速,简单,并且提供多种缓存策略; 缓存数据有两级:内存和磁盘,无需担心容量问题; 缓存数据会在虚拟机重启的过程中写入磁盘; 可以通过RMI、可插入API等方式进行分布式缓存; 具有缓存和缓存管理器的侦听接口; 支持多缓存管理器实例,以及一个实例的多个缓存区域; 提供Hibernate的缓存实现; 4、对比Redis缓存 Ehcache :直接在Jvm虚拟机中缓存,速度快,效率高,不适合处理大规模缓存数据,在分布式环境下,缓存数据共享操作复杂; Redis :作为独立的缓存中间件

缓存雪崩 和 缓存穿透 问题及解决方案----->(浅谈)

落花浮王杯 提交于 2020-08-15 12:27:38
缓存雪崩 : 缓存同一时间大面积的失败,所以后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉 解决方案: 事前:尽量保证整个redis集群的高可用性,发现机器宕机尽快补上 事中:本地ehcache缓存+hystrix限流&降级,避免MySQL崩掉 事后:利用redis持久化机制保存的数据尽快恢复缓存 缓存穿透 : 简答点说就是大量请求的Key根本不存在于缓存中,导致请求直接到了数据库上,根本没有经过缓存这一次层. 解决方案: 最基本的就是首先做好参数校验,一些不合法的参数请求直接抛出异常信息返回给客户端.比如查询的数据库id不能小于0,传入的邮箱格式不对的时候直接返回错误消息给客户端等等. 来源: oschina 链接: https://my.oschina.net/u/4234912/blog/4496696

阿里面试官问我Mybatis,我怂了吗?

三世轮回 提交于 2020-08-14 07:19:15
文章目录 前言 Mybatis入门 1. 什么是MyBatis 2. 为什么我们要用Mybatis? 3. Mybatis快速入门 3.1 导入开发包 3.2 准备测试工作 3.3 创建mybatis配置文件 3.4 编写工具类测试是否获取到连接 3.5 创建实体与映射关系文件 3.6 编写DAO 4. Mybatis工作流程 5. 完成CRUD操作 5.1 增加学生 5.2根据ID查询数据 5.3 查询所有数据 5.4 根据id删除 5.5 修改 5.6 小细节 5.7Mybatis分页 6. 动态SQL 6.1 动态查询 6.2 动态更新 6.3 动态删除 6.4 动态插入 7. 入门总结 Mybatis配置信息 1. 映射文件 1.1占位符 1.2 主键生成策略 1.2.1 UUID 1.3 主键返回 1.4 resultMap 1.5 resultMap和resultType区别 1.6 使用resultMap 1.7 resultType和resultMap用法总结 1.8Mybatis映射文件处理特殊字符 2. 配置文件 2.1别名 2.2Mapper加载 2.3延迟加载 2.4 延迟加载测试 3. 配置相关总结 关联映射 1. Mybatis【多表连接】 1.1一对一 1.1.1设计表: 1.1.2实体 1.1.3 映射文件 1.1.4 DAO层 1.2 一对多 1

Java 考试系统项目源码 springboot mybaits vue.js 前后分离跨域

馋奶兔 提交于 2020-08-12 20:53:28
------------------------------------------------- 题库管理 22 . 图片库:创建文件目录,维护图片,供题库选择调用 23 . 单选题:维护单选试题,试题题目,选项,答案,类型,级别,状态,解析 24 . 多选题:维护多选试题,试题题目,选项,答案,类型,级别,状态,解析 25 . 判断题:维护判断试题,试题题目,答案,类型,级别,状态,解析 26 . 填空题:维护填空试题,试题题目,答案,类型,级别,状态,解析 27 . 问答题:维护问答试题,试题题目,答案,类型,级别,状态,解析 28 . 复合题:维护复合试题,富文本编辑器,试题题目,答案,类型,级别,状态,解析 ------------------------------------------------- 试卷 管理 29 . 组建试卷:创建试卷,题目、类型、总分、及格分数、时长、出成绩方式、重复考试、公布答案、考试对象等 试卷题型:试卷明细,给试卷添加题型,分值,随机或者手动从题库选择试题,预览试题,自动合计试卷总分 30 . 试卷列表:维护试卷,预览试卷,操作发放试卷 ------------------------------------------------- 考试 管理 31 . 正在考试:查看正在考试的试卷信息,预览试卷内容,查看考生成绩,结束考试操作 32

【性能篇】关于Java性能调优你了解吗

 ̄綄美尐妖づ 提交于 2020-08-12 06:54:52
关于Java性能调优分为两方面的优化,一方面是针对Java虚拟机内存的调优,一方面是数据库DB的调优。 今天我们主要讲解Java虚拟机内存的调优,在实际开发中,几乎不可能通过单纯的调优来达到消除GC的目的,我们所做的内存调优只是尽可能的去减少内存消耗,进一步减少因为内存不足而影响Java程序性能。就如同我们手机内存一样,当内存不够的时候,用起来程序就特别的不顺畅导致用户体验极差,我们所能做的就是及时清理内存~ 养成良好的编码习惯能很大程度提高性能问题,以下是本人这几年的开发总结: 1.尽量缓存经常使用的对象 尽可能将经常使用的对象进行缓存,可以使用数组,或HashMap的容器来进行缓存,但这种方式可能导致系统占用过多的缓存,性能下降,推荐可以使用一些第三方的开源工具,如EhCache,Oscache进行缓存,他们基本都实现了FIFO/FLU等缓存算法。 2.尽量重用对象 之前有讲过,在String对象的使用中,出现字符串连接情况时应使用StringBuffer代替,由于系统不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理。因此生成过多的对象将会给程序的性能带来很大的影响。 3.做IO流操作的时候,在使用完毕后,及时colse以释放资源,以免造成内存泄漏,因为对这些大对象的操作会造成系统大的开销。 4. 过分的创建对象会消耗系统的大量内存 ,严重时

Redis 企业级解决方案(缓存预热、缓存雪崩、缓存击穿、缓存穿透、性能指标监控)

戏子无情 提交于 2020-08-12 00:53:31
目录 一、缓存预热 二、缓存雪崩 三、缓存击穿 四、缓存穿透 五、性能指标监控 一、缓存预热 缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓 存的问题!用户直接查询事先被预热的缓存数据! 宕机 :服务器启动后迅速宕机 问题排查: 1. 请求数量较高 2. 主从之间数据吞吐量较大,数据同步操作频度较高 解决方案: 前置准备工作: 1. 日常例行统计数据访问记录,统计访问频度较高的热点数据 2. 利用LRU数据删除策略,构建数据留存队列 例如:storm与kafka配合 准备工作: 1. 将统计结果中的数据分类,根据级别,redis优先加载级别较高的热点数据 2. 利用分布式多服务器同时进行数据读取,提速数据加载过程 3. 热点数据主从同时预热 实施: 1. 使用脚本程序固定触发数据预热过程 2. 如果条件允许,使用了CDN(内容分发网络),效果会更好 二、缓存雪崩 缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如能够有效避免过期时间集中,可以有效解决雪崩现象的出现 (约40%),配合其他策略一起使用,并监控服务器的运行数据,根据运行记录做快速调整。 现象:数据库服务器崩溃(1) 1. 系统平稳运行过程中,忽然数据库连接量激增 2. 应用服务器无法及时处理请求 3. 大量408,500错误页面出现 4.

Spring Boot 2.x基础教程:使用EhCache缓存集群

房东的猫 提交于 2020-08-10 13:54:03
上一篇 我们介绍了在Spring Boot中整合EhCache的方法。既然用了ehcache,我们自然要说说它的一些高级功能,不然我们用默认的 ConcurrentHashMap 就好了。本篇不具体介绍EhCache缓存如何落文件、如何配置各种过期参数等常规细节配置,这部分内容留给读者自己学习,如果您不知道如何搞,可以看看这里的 官方文档 。 那么我们今天具体讲什么呢?先思考一个场景,当我们使用了EhCache,在缓存过期之前可以有效的减少对数据库的访问,但是通常我们将应用部署在生产环境的时候,为了实现应用的高可用(有一台机器挂了,应用还需要可用),肯定是会部署多个不同的进程去运行的,那么这种情况下,当有数据更新的时候,每个进程中的缓存都是独立维护的,如果这些进程缓存同步机制,那么就存在因缓存没有更新,而一直都用已经失效的缓存返回给用户,这样的逻辑显然是会有问题的。所以,本文就来说说当使用EhCache的时候,如果来组建进程内缓存EnCache的集群以及配置配置他们的同步策略。 由于下面是组建集群的过程,务必采用多机的方式调试,避免不必要的错误发生。 动手试试 本篇的实现将基于 上一篇 的基础工程来进行。先来回顾下上一篇中的程序要素: User实体的定义 @Entity @Data @NoArgsConstructor public class User { @Id

最新Flowable 工作流引擎 OA办公系统 Springboot vue 前后分离 跨域

孤街浪徒 提交于 2020-08-09 17:18:00
1. 模型管理 :web在线流程设计器、预览流程xml、导出xml、部署流程 2. 流程管理 :导入导出流程资源文件、查看流程图、根据流程实例反射出流程模型、激活挂起 、 自由跳转 3. 运行中流程 :查看流程信息、当前任务节点、当前流程图、作废暂停流程、指派待办人 4. 历史的流程 :查看流程信息、流程用时、流程状态、查看任务发起人信息 5. 待办任务 :查看本人个人任务以及本角色下的任务、办理、驳回、作废、指派一下代理人 6. 已办任务 :查看自己办理过的任务以及流程信息、流程图、流程状态(作废 驳回 正常完成) 注:当办理完当前任务时,下一任务待办人会即时通讯收到新任务消息提醒,当作废和完结任务时, 任务发起人会收到站内信消息通知 1.代码生成器: [正反双向](单表、主表、明细表、树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面、建表sql脚本、处理类、service等完整模块 2.多数据源: (支持同时连接无数个数据库,可以不同的模块连接不同数的据库)支持N个数据源 3. 阿里数据库连接池 druid ,安全权限框架 shiro( 菜单权限和按钮权限 ) , 缓存框架 ehcache 4. 代码编辑器, 在线模版编辑,仿开发工具编辑器 5.调用摄像头拍照 自定义裁剪编辑头像,头像图片色度调节 6