0%

Android10以及以上的版本提供了分区存储机制,为了让用户更好地管理自己的文件并减少混乱,此类应用只能访问外部存储空间上的应用专属目录,以及本应用所创建的特定类型的媒体文件。简单解释就是:Android 10 开启分区存储后,应用在有权限的情况下也无法随便访问其他外部存储空间中的公有文件夹了,应该怎么办呢?

Bitmap 是一个吃内存的大家伙,所以我们需要养成一个好的习惯,才能更好的驾驭 Bitmap,让其对内存的占用变得合理起来。在这里,主要说明一下:什么时候需要释放 Bitmap,如何释放 Bitmap 占用的内存。

本篇文章来看看基于角色的权限控制 —— RBAC(Role-Based Access Control),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样就构造成了 『用户-角色-权限』的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般是多对多的关系。理解了 RBAC 之后,再通过Spring Security oAuth2来实现基于 RBAC 的自定义认证。

《Spring Security oAuth2(一)》 中主要是oAuth的一些基本概念与四种认证方式,现在就正式开始完成几个主要示例,快速上手Spring提供的Spring Security oAuth2。网上很多示例教程都是使用 JWT(JSON Web Tokens)来管理Token,于是很多人认为oAuth2就应该用JWT来管理Token,其实这是非常错误的想法,后面我会专门就使用 JWT 这个问题进行讨论,看看 JWT 的最佳使用场景。

认证与授权是所有应用都必须要实现的,也是所有后端工程师必备的技能,本篇文章旨在快速上手使用 Spring 提供的 Spring Security oAuth2 搭建一套验证授权及资源访问服务,在实现企业微服务架构时能够有效的控制多个服务的统一登录、授权及资源保护工作。主要内容是oAuth2协议,认证/授权登录的交互过程以及 oAuth 2.0 定义的四种授权模式。

Disruptor 是由 Java 编写的基于内存的高性能队列,最早由英国外汇交易公司LMAX(一种新型零售金融交易平台)开发并开源的,能够在无锁的情况下实现队列的高并发操作,用于在异步事件处理体系结构中提供低延迟,高吞吐量的工作队列。与ArrayBlockingQueue 一样,它通常用于多个线程间的消息传递(常见场景就是生产者-消费者模型),Disruptor 从功能、性能都远好于 ArrayBlockingQueue ,当多个线程之间传递大量数据或对性能要求较高时,可以考虑使用 Disruptor 作为 ArrayBlockingQueue 的替代者。

在之前的 《纯手写路由框架实现Android组件化》 中讲到了Android APT技术,并且在讲解视频中使用APT了技术,加以JavaPoet辅助代码生成实现了一个最简单的基于注解的View注入(其实就是省略了大量的findViewById方法)。如果只是单纯的想体验APT技术带来的便捷性,那么这篇文章非常适合,APT从讲是一个编译期的注解处理工具(Annotation Processing Tool)。一些主流的三方库,如ButterKnife、EventBus等都用到了这个技术来生成代码。