在帝都和钱塘之间奔波的非主流程序员,前国重实验室里的基层科研工作者,现在在云栖中乘物以游心,搬砖能还房贷还能有远方。 之前专攻密码应用,认证与授权,现在在做ECS。
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
join用于多表中字段之间的联系,在数据库的DML (数据操作语言,即各种增删改查操作)中有着重要的作用。 合理使用Join语句优化SQL有利于: 增加数据库的处理效率,减少响应时间; 减少数据库服务器负载,增加服务器稳定性; 减少服务器通讯的网络流量; 1.
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。本文将概要介绍Redis的特性和语法,并以实例代码的形式介绍如何通过Jedis在java语言环境下控制Redis,帮助各位读者快速入门。
随着物联网(Internet of Things,IoT)的兴起,机器之间(Machine-to-Machine,M2M)的大规模信息沟通成为重要的课堂,之前HTTP的请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式。
JVM类加载机制,点击查看原图 所谓类加载机制,就是虚拟机把描述类的数据从Class文件加载到内存中,并对其进行校验,转换,分析以及初始化,并最终形成虚拟机可以被使用java类型的过程。
标准原文OpenID Connect Federation 1.0 OpenID-Connect针对跨域的身份鉴别请求的需求,提出了自己的解决方案——OIDC联盟(OpenID Connect Federation )。
作者在之前的文章中曾经介绍过 OAuth2.0 协议,并将其与OpenID和SAML性对比。然而,在理论上设计协议是一回事,在工程中实现协议是另一回事,由于很多开发人员没有真正理解OAuth2.0的设计意图和技术细节,导致OAuth2.0在很多项目中的实现是有问题,尤其是在移动端的开发中。
和C语言手动管理内存不同,JVM实现了自动内存管理机制,这也是Java语言的一大特点。 简而言之,JVM自动内存管理机制是JVM中面向堆(Heap)的内存管理机制,该机制包括两大部分 为对象分配合适的内存; 在合适的时机回收对象的内存; 本文以Java 7/8中JVM的设计为准来进行讲解。
Java并发的机制的背后是Java虚拟机(JVM)的工作机制,本文从几个关于并发和多线程的疑问开始,引出Java内存区域的介绍,希望能帮助大家更好的理解Java并发机制。
进年以来,并发算法领域的重点都围绕在非拥塞算法,该种算法依赖底层硬件对于原子性指令的支持,避免使用锁来维护数据一致性和多线程安全。非拥塞算法虽然在设计上更为复杂,但是拥有更好的可伸缩性和性能,被广泛应用于实现计数器、序列发生器和统计数据收集器等 1. 锁的劣势 前文中曾经对比同步方法的内置锁相比和显式锁,来说明它们各自的优势,但是无论是内置说还是显式锁,其本质都是通过加锁来维护多线程安全。
Java 5.0 加入了新的上锁工作:ReentrantLock,它和同步(Synchronized)方法的内置锁不同,这是一种显式锁。显式锁作为一种高级的上锁工作, 是同步方法的一种补充和扩展,用来实现同步代码块无法完成的功能。
前文从任务到线程:Java结构化并发应用程序中介绍了如何安排任务启动线程。 线程在启动之后,正常的情况下会运行到任务完成,但是有的情况下会需要提前结束任务,如用户取消操作等。
并发设计的本质,就是要把程序的逻辑分解为多个任务,这些任务独立而又协作的完成程序的功能。而其中最关键的地方就是如何将逻辑上的任务分配到实际的线程中去执行。
本文将简要介绍java内存模型(JMM)的底层细节以及所提供的保障,并从JMM的角度再谈如何在并发环境下正确初始化对象,这将有助于理解更高层面的并发同步机制背后的原理。
相关文章: 多线程安全性:每个人都在谈,但是不是每个人都谈地清 并发的意义在于多线程协作完成某项任务,而线程的协作就不可避免地需要共享数据。今天我们就来讨论下如何发布和共享类对象,使其可以被多个线程安全地访问。
要编写多线程安全的代码,最关键的一点就是需要对于共享的和可变的状态进行访问控制: 所谓共享的,指的是该变量可能同时被多个线程访问; 所谓可变的,指的是该变量在生命周期内其值可能放生变化。
本文将专注讨论OpenSAML中安全特性,包括如何管理密钥,如何对断言信息签名,如何对断言信息加密等。 相关阅读 SAML2.0入门指南, OpenSAML 使用引导 I : 简介 OpenSAML 使用引导 II : Service Provi...
众所周知,使用Java的HashMap数据结构时,要求正确实现hashCode(),但是为什么呢?hashCode产生的散列码到底代表什么,其在HashMap中到底有何作用?本文将为您详细道来。
前文OpenSAML 使用引导 II : Service Provider 的实现之AuthnRequest介绍从Service Provider(SP)角度出发,讲解如何使用OpenSAML如申请身份鉴别请求,并从IDP出得到断言的引用标识——SAML Artifact,本文将继续讨论Artifact的具体意义,如何使用Artifact换取断言信息,以及断言的使用方法。
前文OpenSAML 使用引导 I : 简介介绍了OpenSAML的基础概况, 本文将从Service Provider(SP)角度出发,讲解如何使用OpenSAML如申请身份鉴别请求(AuthnRequest),并从IDP出得到断言的引用标识——SAML Artifact 相关阅读SAML2.
Android Design Support Library系列第5弹,TabLayout 实现滑动选项卡 1504424076347.png 在前文Part 4 – TabLayout中我们已经使用CoordinatorLayout和其他控件配合过(比如Snackbar出现时,FAB上移),这里来重点介绍其使用方法。
Android Design Support Library系列第4弹,TabLayout 实现滑动选项卡 智能管家Tablayout.gif 如上图的滑动选项卡的效果在移动端的应用中很是常见,之前要是该效果需要利用动态加载布局技术和控制滑动技术(比如利用HorizontalScrollView),较为繁琐。
Android Design Support Library系列第三弹,NavigationView 抽屉菜单的实现 左侧弹出菜单 抽屉菜单页面是一中很常见的页面设计,虽然有很多第三方库(SlidingMenu)来帮助我们实现该功能,但是如果自己来实现的话,确实是很麻烦的工作。
Android Design Support Library系列第2弹: Snackbar “Providing lightweight, quick feedback about an operation is a perfect opportunity to use a snackbar.
Android Design Support Library系列第一弹,悬浮按钮 悬浮按钮(Floating action button ,FAB) 简单来说是一种圆形按钮,其悬浮于UI之上,四周有阴影环绕,可以用于实现一些高级操作,比如添加新的条目,或是为邮件添加附件等等。
Material Desgin 现在扁平化设计十分流行,很多应有都采用了扁平化设计的风格,尤其是在移动端应用开发上,可以已经成为一种先锋式的潮流。
无论是Web端还是移动端,现在第三方应用账户登录已经成为了标配,任意打开个网站都可以看到,QQ/微信账号登录的字样。使用第三方账户的登录的过程,既要限制用户身份只让有效注册用户才能登录,还要根据注册用户的不同身份来控制能浏览的内容,这就需要认证和授权 相关文章链接: OAuth2.
2015年的Google IO大会上,Android 团队发布了一个数据绑定框架(Data Binding Library),官方原生支持 MVVM 模型。
相关阅读SAML2.0入门指南, 此文中已经介绍了SAML协议的基本信息,今天开始将会为大家详解OpenSaml——SAML协议的一种开源实现。 SAML What's OpenSAML OpenSAML是一个便于使用SAML消息的依赖库,其提供的主要功能包括: 创建SAML消息; 解析SAML对象并导出为XML格式; 签名和加密; 对SAML消息进行编码并传输。
SAML,全称为Security Assertion Markup Language,是一种用于安全性断言的标记预压,目前的最新版本是2.0。原文地址 本系列相关文章:OAuth2.0 协议入门指南OpenID Connect 协议入门指南OpenSAML示例 SAML在单点登录中大有用处:在SAML协议中,一旦用户身份被主网站(身份鉴别服务器,Identity Provider,IDP)认证过后,该用户再去访问其他在主站注册过的应用(服务提供者,Service Providers,SP)时,都可以直接登录,而不用再输入身份和口令。
如果要谈单点登录和身份认证,就不得不谈OpenID Connect (OIDC)。最典型的使用实例就是使用Google账户登录其他应用,这一经典的协议模式,为其他厂商的第三方登录起到了标杆的作用,被广泛参考和使用。
本文希望以应用场景的角度出发,帮助大家快随了解OAuth协议流程,更为清楚明白的介绍在各种情况使用什么授权模式更为合适。OAuth2 官网原文地址 本系列相关文章:OpenID Connect 协议入门指南SAML2.0入门指南 1. 协议中各种角色:应用、API和用户 第三方应用:客户端 客户端,即尝试去获得用户账号信息的应用,用户需要先对此操作授权。
Android动画的开发中,为了达到更加酷炫的效果,常常需要自定义运动轨迹,或者绘制花式复杂的曲线,这正是Bezier曲线大显神通的地方,本文将带你了解Bezier曲线在Android开发中的一些应用。
效果图 1. 矢量图SVG简介 Android 5.0系统中引入了 VectorDrawable 来支持矢量图(SVG),同时还引入了 AnimatedVectorDrawable 来支持矢量图动画。
动画效果,卫星Button扇形展开和关闭 1. Animator和Animation Animator框架是android4.0之后添加的一个动画框架,和之前的Animation框架相比,Animator可以进行更多和更精细化的动画控制,而且比之前更简单和更高效。
有人说“Android的开发,玩的就是多线程”。从某个角度来说的确如此,现在的App被设计的越来越复杂,相信很多开发人员都因大量而又复杂的后台任务(background work)而焦头烂额:Async-Task和Activity的生命周期太过于耦合...
在前文GreenDAO 3.2 源码分析(1):查询语句与Query实例的构造中,我们分析了greenDAO是如何构建SQL语句并维护Query对象的。
greenDAO是一款优秀的对象关系映射(ORM)框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。和复杂麻烦的Android原生数据库API相比较,greenDAO可谓是简单实用,功能强大,不仅性能突出,而且有着丰富文档资料,是当前最为活跃的Android ORM框架。
随着移动终端办公化的普及,在Android手机中阅读文档已经是很普遍的事情了,但是有些文档可能是涉及到一些企业机密与敏感的内容,不希望随意扩散出去。为了防止重要的文档被截屏或者拍照而泄露,在文档中加上水印是一种常见的安全措施。
在Android开发中,不同Activity之间的跳转和切换是很常见的,这使得APP的内容更加丰富,功能更为多样,但是一个应用所能包括的功能毕竟有限,在很多的场景下需要跨应用调用,比如在应用中跳转到微信支付的页面,或者使用第三方账号登陆时跳转到QQ登陆等等。
正如前文《Java序列化心得(一):序列化设计和默认序列化格式的问题》中所提到的,默认序列化方法存在各种各样的问题,出于效率或安全等方面的考虑,往往需要开发人员自定义序列化方法生成自定义序列化格式。
最近在工作中指导新人开发,任务内容涉及到序列化,发现很多初学者对于序列化的概念以及使用的场景比较模糊,所以为他们总结了有关的Java Serialization的一些心得,这里记录出来与大家分享。
问题概述 随着项目进度不断地深入,类的设计将会越来越复杂,常常遇到这样的情况:设计的类要用到很多属性,有的是必须要有的(required fields),有些是可有可无的(optional fields),这样就要求向构造器(constructors)传递众多的参数,而如何合理构建这样需要大量参数的构造器就会成为一个棘手的问题。