09 redis
参考博文:http://blog.csdn.net/u013142781/article/category/6067864
redis是一个key-value存储系统 。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型) 。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的 。
在此基础上,redis支持各种不同方式的排序 。与memcached一样,为了保证效率,数据都是缓存在内存中 。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步 。
Redis数据库完全在内存中,使用磁盘仅用于持久性 。相比许多键值数据存储,Redis拥有一套较为丰富的数据类型 。Redis可以将数据复制到任意数量的从服务器 。
1.2、Redis优点:
- 异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录 。
- 支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型 。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好 。
- 操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值 。
- 多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等 。
1.3、Redis缺点:
- 单线程
- 耗内存
10 Shiro
参考博文:http://blog.csdn.net/u013142781/article/details/50629708
- Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权 。Shiro在JavaSE和JavaEE项目中都可以使用 。它主要用来处理身份认证,授权,企业会话管理和加密等 。Shiro的具体功能点如下:
- 身份认证/登录,验证用户是不是拥有相应的身份;
- 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色 。或者细粒度的验证某个用户对某个资源是否具有某个权限;
- 会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
- 加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
- Web支持,可以非常容易的集成到Web环境;
- Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
- shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
- 提供测试支持;
- 允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
- 记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了 。
文字描述可能并不能让猿友们完全理解具体功能的意思 。下面我们以登录验证为例,向猿友们介绍Shiro的使用 。至于其他功能点,猿友们用到的时候再去深究其用法也不迟 。
11 设计模式
这个算不上框架,可自行忽略,不过博主认为设计模式的思想很有必要了解一下 。
参考博文:http://blog.csdn.net/u013142781/article/details/50816245 http://blog.csdn.net/u013142781/article/details/50821155 http://blog.csdn.net/u013142781/article/details/50825301
思想:
开闭原则:开闭原则就是说对扩展开放,对修改关闭 。在程序需要进行拓展的时候,不能去修改原有的代码 。
针对接口编程,依赖于抽象而不依赖于具体 。
尽量使用合成/聚合的方式,而不是使用继承 。
一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立 。
推荐阅读
- 快速弄懂Java 11 中的NIO 2.0
- java NIO 的最佳实践
- 今年很火的五大Python框架
- Java程序员须知的七个日志管理工具
- JavaScript生成一个不重复的ID
- Android NDK-深入理解JNI
- Java 13 明天发布,最新最全新特性解读
- Spring Boot集成极光推送Java-SDK
- Java类的加载机制
- 提高 JavaScript 性能的 12 个技巧
