自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

转载 从单机应用到微服务,用户认证走几步?

用户认证指在用户访问服务的时候确认用户的身份,受限于HTTP无状态的特性,应用开发者需要自行实现用户认证相关功能。通常是用户登录时服务端生成通行证返回给客户端,客户端在接下来的请求中携带通行证,然后服务端通过校验该通行证实现用户认证。不管具体的业务是什么,如果用户认证失败,那么所有的后续操作都无法执行,需要返回给客户端用户认证失败,对应到HTTP Status Code是401。本...

2019-09-23 13:51:00 218

转载 JWT简明介绍

JSON Web Token一种数据格式,用来表示Token。具有可扩展、防篡改、能够在URL中安全传输的特性,已经形成标准,定义在rfc7519。JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.JWT的发音...

2019-09-20 18:25:00 177

转载 图解Nginx限流配置

本文以示例的形式,由浅入深讲解Nginx限流相关配置,是对简略的官方文档的积极补充。Nginx限流使用的是leaky bucket算法,如对算法感兴趣,可移步维基百科先行阅读。不过不了解此算法,不影响阅读本文。空桶我们从最简单的限流配置开始:limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;ser...

2019-09-05 13:11:00 315

转载 危险的Hystrix线程池

本文介绍Hystrix线程池的工作原理和参数配置,指出存在的问题并提供规避方案,阅读本文需要对Hystrix有一定的了解。文本讨论的内容,基于hystrix 1.5.18: <dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hys...

2019-08-23 10:31:00 199

转载 分析Jackson的安全漏洞CVE-2019-12086

CVE-2019-12086 DescriptionA Polymorphic Typing issue was discovered in FasterXML jackson-databind 2.x before 2.9.9. When Default Typing is enabled (either globally or for a specific property) f...

2019-06-11 18:54:00 926

转载 从 Secure Element 到 Android KeyStore

忽如一夜春风来,智能手机来到每个人的手上,我们用它支付、理财、娱乐、工作、记录生活、存储私密信息、乘坐公共交通、开启家门、控制汽车...。智能手机是如此的重要,不知天天把它拿在手上的你,是否关心过它是否足够安全。本文从Secure Element(安全单元)说起,介绍手机设备上若干重要的安全角色和概念。为后续文章介绍如何基于手机安全地实现认证、支付、DRM等业务流程打下基础。SE(S...

2018-07-16 19:05:00 1262

转载 跨域名登录态传递

很多互联网公司会有多个域名。这可能是因为公司并购,比如百度持有baidu.com、nuomi.com、qianqian.com等;也可能是为不同业务启用了不同的域名,比如阿里持有taobao.com、tmall.com等。如果我们将用来实现登录接口的域名称之为主域名,其它域名称之为从域名,比如对百度来讲主域名是baidu.com,对阿里来讲主域名是taobao.com。那么用户在主域名...

2018-05-25 18:57:00 711

转载 ECC公钥格式详解

本文首先介绍公钥格式相关的若干概念/技术,随后以示例的方式剖析DER格式的ECC公钥,最后介绍如何使用Java生成、解析和使用ECC公钥。ASN.1Abstract Syntax Notation One (ASN.1)是一种接口描述语言,提供了一种平台无关的描述数据结构的方式。ASN.1是ITU-T、ISO、以及IEC的标准,广泛应用于电信和计算机网络领域,尤其是密码学领域。AS...

2018-04-27 17:52:00 4089

转载 动态添加Redis密码认证

如果redis已在线上业务使用中,但没有添加密码认证,那么如何在不影响业务服务的前提下给redis添加密码认证,就是一个需要仔细考虑的问题。本文描述一种可行的方案,适用于客户端使用了jedis连接池,服务端使用了redis master-slave集群的情况。1.定制jedis对redis返回的错误的处理,做两处修改:忽略 (error) ERR Client sent AUTH...

2017-06-08 19:04:00 86

转载 扫码登录的安全性分析

时至今日,各大互联网公司都已提供并鼓励使用扫码登录功能。扫码登录通过二维码在设备之间传递信息,使得用户可以使用安全可信任的设备(比如自己的手机)来控制不可信任的设备上的登录行为。其省去了在不便手动输入的设备(比如电视)上输入的环节,所以更方便;避免了在安全等级低的设备和环境(比如公共电脑、Web页面)中输入密码,因此更安全。本文分析二维码扫码登录功能通常的实现方式,并重点总结实现过程中...

2017-04-28 18:59:00 960

转载 Cookie与Passport安全

对于web系统而言,由于HTTP协议无状态的特性,用户登录时需要服务端生成通行证返回给浏览器。浏览器保存该通行证并在接下来的请求中携带该通行证。通常来讲,web系统使用http cookie来保存和传输通行证。本文介绍http cookie的原理、特性、并分析用其保存通行证可能遇到的安全问题。本文假设使用cookie的客户端是浏览器,虽然还有其它客户端也使用cookie,但普通用户使用...

2017-02-13 19:54:00 170

转载 Http压测工具wrk使用指南

用过了很多压测工具,却一直没找到中意的那款。最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好。安装wrk支持大多数类UNIX系统,不支持windows。需要操作系统支持LuaJIT和OpenSSL,不过不用担心,大多数类Unix系统都支持。安装wrk非常简单,只要从github上下载wrk源码,在项目路径下执行make命令即可。git clone htt...

2016-12-29 14:55:00 1021

转载 用户密码加密存储十问十答,一文说透密码安全存储

我们数据库的权限管理十分严格,敏感信息开发工程师都看不到,密码明文存储不行吗?不行。存储在数据库的数据面临很多威胁,有应用程序层面、数据库层面的、操作系统层面的、机房层面的、员工层面的,想做到百分百不被黑客窃取,非常困难。如果密码是加密之后再存储,那么即便被拖库,黑客也难以获取用户的明文密码。可以说,密码加密存储是用户账户系统的底裤,它的重要性,相当于你独自出远门时缝在内衣里钱,虽然...

2016-11-06 18:10:00 154

转载 HashMap和HashTable到底哪不同?

HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案。代码版本JDK每一版本都在改进。本文讨论的HashMap和HashTable基于JDK 1.7.0_67。源码见这里1. 时间HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2。从时间的维度上来看,HashM...

2016-07-05 16:35:00 449

转载 MySQL的多存储引擎架构

支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一。如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构。本文将首先介绍MySQL的整体逻辑架构,然后分析MySQL的存储引擎API并介绍如何编写自己的MySQL存储引擎。MySQL逻辑架构MySQL作为一个大型的网络程序、数据管理系统,架构非常复杂...

2016-06-24 17:50:00 120

转载 Spring Boot启动流程详解(一)

环境本文基于Spring Boot版本1.3.3, 使用了spring-boot-starter-web。配置完成后,编写了代码如下:@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run...

2016-06-02 09:03:00 345

转载 讨论系统高可用时,我们在讨论什么?

系统高可用,或者说系统的可用性,在计算机领域是一个相当久远并且重要的概念。小到CPU芯片、内存、硬盘等硬件组件,大到支付宝、微信等日常互联网服务,在设计、开发、维护的时候,都离不开对它的考量。本文首先介绍跟系统可用性相关的关键概念,然后讨论高可用系统的评价指标。系统和模块一个系统的可用性,由组成这个系统的模块的可用性,以及模块之间的关系决定。模块可以看成一个系统,由更小的子模块组成,...

2016-06-01 17:16:00 84

转载 图片格式那么多,哪种更适合你?

本文介绍和比较几种常见图片文件格式的优缺点,并介绍不同的文件格式对Web应用程序性能的影响。有损vs无损图片文件格式有可能会对图片的文件大小进行不同程度的压缩,图片的压缩分为有损压缩和无损压缩两种。有损压缩。指在压缩文件大小的过程中,损失了一部分图片的信息,也即降低了图片的质量,并且这种损失是不可逆的,我们不可能从有一个有损压缩过的图片中恢复出全来的图片。常见的有损压缩手段,是按...

2016-01-14 15:25:00 103

转载 写给后端程序员的HTTP缓存原理介绍

There are only two hard things in Computer Science: cache invalidation and naming things.-- Phil Karlton通过Internet获取资源既缓慢,成本又高。为此,Http协议里包含了控制缓存的部分,以使Http客户端可以缓存和重用以前获取的资源,从而优化性能,提升体验。虽然Htt...

2016-01-04 17:52:00 152

转载 每个程序员都应该了解的内存知识(开篇)

注:本文多数内容来自对What Every Programmer Should Know About Memory一文的理解和翻译。但这不是一篇严格的译文,只摘取我读了有心得的部分,并尽量加上自己的理解和自己收集的资料。开篇早期计算机系统的架构要比现在的简单多了,CPU、内存、外存、网卡等几个重要部件一组合就成了鼎鼎大名的计算机。每个部件自身结构相对简单,各部件的工作能力也旗鼓相当,...

2015-12-31 15:49:00 441

转载 编写.gitignore文件的几个小技巧

记录几个编写.gitignore文件的小技巧,可能你早就知道了,但我是google了一番才找到写法。忽略所有名称为bin的文件夹bin/只忽略第一级目录中,名称为bin的文件夹/bin/忽略所有后缀名为.o的文件*.o忽略所有deps文件夹,除了第一级deps目录下的test文件夹deps/!/deps/test/加!表示白名单。.gitignore文件中的内容,...

2015-12-04 16:45:00 405

转载 在Spring Boot中使用Https

本文介绍如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https。Https证书巧妇难为无米之炊,开始的开始,要先取得Https证书。你可以向证书机构申请证书,也可以自己制作根证书。如果你对于Https的原理和证书制作还不清楚,可以看一下Https原理介绍和自制Https证书。创建Web配置类在代码中创建一个使用了Configuration注...

2015-11-10 14:13:00 178

转载 自制Https证书并在Spring Boot和Nginx中使用

白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环境中服务器端的配置。如果你还没有读过白话Https,我强烈建议你先去读一下。按照白话Https中的介绍,Https协议涉及到的主体主要有三个:客户端、服务端、以及CA机构。如下图所示:...

2015-11-09 18:06:00 137

转载 白话Https

本文试图以通俗易通的方式介绍Https的工作原理,不纠结具体的术语,不考证严格的流程。我相信弄懂了原理之后,到了具体操作和实现的时候,方向就不会错,然后条条大路通罗马。阅读文本需要提前大致了解对称加密、非对称加密、信息认证等密码学知识。如果你不太了解,可以阅读Erlang发明人Joe Armstrong最近写的Cryptography Tutorial。大牛出品,通俗易懂,强力推荐。H...

2015-11-09 10:59:00 199

转载 Spring Boot异常处理详解

在Spring MVC异常处理详解中,介绍了Spring MVC的异常处理体系,本文将讲解在此基础上Spring Boot为我们做了哪些工作。下图列出了Spring Boot中跟MVC异常处理相关的类。Spring Boot在启动过程中会根据当前环境进行AutoConfiguration,其中跟MVC错误处理相关的配置内容,在ErrorMvcAutoConfiguration这个类中...

2015-11-03 20:08:00 167

转载 解决erlang节点启动失败报["inet_tcp",econnrefused]的问题

今天有同事说他机器上的leofs启动不了。我用console起了一下,发现报如下错:{error_logger,{{2015,11,3},{6,23,6}},"Protocol: ~tp: register/listen error: ~tp~n",["inet_tcp",econnrefused]}{error_logger,{{2015,11,3},{6,23,6}},crash...

2015-11-03 14:52:00 1357

转载 REST API出错响应的设计

REST API应用很多,一方面提供公共API的平台越来越多,比如微博、微信等;一方面移动应用盛行,为Web端、Android端、IOS端、PC端,搭建一个统一的后台,以REST API的形式提供服务,也成为常见的开发模式。只是一个服务做得久了,就发现API的接口设计,如果能在一开始就好好设计一下,实在是功德无量的事。讨论API接口设计的文章已有不少,本文重点谈一谈当请求处理出现异常的时...

2015-10-23 12:56:00 88

转载 Spring MVC异常处理详解

Spring MVC中异常处理的类体系结构下图中,我画出了Spring MVC中,跟异常处理相关的主要类和接口。在Spring MVC中,所有用于处理在请求映射和请求处理过程中抛出的异常的类,都要实现HandlerExceptionResolver接口。AbstractHandlerExceptionResolver实现该接口和Orderd接口,是HandlerExceptionR...

2015-10-22 18:09:00 188

转载 MAC与HMAC的介绍及其在AWS和Azure中的应用

MAC在密码学中,(消息认证码)Message Authentication Code是用来认证消息的比较短的信息。换言之,MAC用来保证消息的数据完整性和消息的数据源认证。MAC由消息本身和一个密钥经过一系列计算产生,用于生成MAC的算法,称为MAC算法。MAC算法应能满足如下几个条件:在仅有消息本身没有密钥的情况下,无法得到该消息的MAC;同一个消息在使用不同密钥的情况下,...

2015-10-21 16:52:00 294

转载 isDebugEnabled有什么用?

这几天在读Spring MVC源码时,发现了如下代码:if (logger.isDebugEnabled()) { logger.debug("Using ThemeResolver [" + this.themeResolver + "]");}初看有些不解,觉着在设置了高于debug级别的log输出时,logger.debug(...)原本就不会输出,为什么还需要log...

2015-10-14 10:32:00 220

转载 在Mysql中Using filesort代表什么意思?

在Mysql中使用explain来查看sql执行信息时,经常会看到Using filesort。那么Using filesort在MySQL中代表什么意思呢?有人会说是外部排序,其实是不对或者不准确的。事实上Using filesort是一个非常差的命名。真实的情况是,如果一个排序操作不能通过索引来完成,那这次排序操作就叫做filesort,这跟file没有任何关系。filesort应...

2015-09-07 17:06:00 444

转载 读Java Concurrency in Practice. 第六章.

这一章开讲任务执行。绝大多数并发程序的工作都可以分解为抽象的、互不相关的工作单元,称之为任务(Task)。使用java线程来执行任务以web服务器的实现举例, 此时将用户的一次连接,当做一个独立的任务。单线程顺序执行所有任务。ServerSocket socket = new ServerSocket(80);while(true) { Socket connect...

2015-08-21 18:16:00 67

转载 读Avoiding the Disk Bottleneck in the Data Domain Deduplication File System

最近在思考和实践怎样应用重复数据删除技术到云存储服务中。找了些论文来读,其中《Avoiding the Disk Bottleneck in the Data Domain Deduplication File System》是鼎鼎大名的李凯教授出品,读来收益匪浅。论文主要内容Data Domain的去重存储系统是商业上大获成功的产品,从产品的角度来讲非常完善,其架构图如下:去重...

2015-08-17 14:51:00 205

转载 数据去重技术原理分析

数据去重又称重复数据删除,是指在一个数字文件集合中,找出重复的数据并将其删除,只保存唯一的数据单元。在删除的同时,要考虑数据重建,即虽然文件的部分内容被删除,但当需要时,仍然将完整的文件内容重建出来,这就需要保留文件与唯一数据单元之间的索引信息。应用数据去重技术的好处节省存储空间。通过重复数据删除,可以大大降低需要的存储介质数量,进而降低成本。甚至可以使基于硬盘的存储系统成本低于...

2015-08-14 11:14:00 801

转载 hash函数为什么要选择对素数求余?

常用的hash函数是选一个数m取模(余数),这个数在课本中推荐m是素数,但是经常见到选择m=2^n,因为对2^n求余数更快,并认为在key分布均匀的情况下,key%m也是在[0,m-1]区间均匀分布的。但实际上,key%m的分布同m是有>关的。证明如下:key%m = key - xm,即key减掉m的某个倍数x,剩下比m小的部分就是key除以m的余数。显然,x等于key/m的...

2015-06-29 12:42:00 287

转载 Java序列化中的serialVersionUID有什么用?

如果一个实现了Serializable的类没有serialVersionUID属性,IDE(比如Eclipse)通常会报这样一个warning:The serializable class Foo does not declare a static finalserialVersionUID field of type long那这个serialVersionUID是做什么用的...

2015-06-04 17:57:00 90

转载 Erlang进程的Link机制

这篇文章还不是最终版,有时间时,我会再来补充完善。什么是linkErlang程序基于进程建模,进程之间的交互机制有收发消息,link和monitor。其中,收发消息通常用于正常的进程间通讯,而link和monitor多用于异常情况处理,本文从应用的角度介绍和分析link机制。link是双向全联通的,用来将两个或多个进程绑定在一起,绑定在一起之后,VM会保证在有进程退出时,对与其绑定在...

2014-12-13 10:10:00 162

转载 Java 8的新并行API - 魅力与炫目背后

这是一篇译文,原文链接见这里。本文同时发表在ImportNew上,转载请注明出处。我很擅长同时处理多项任务。就算是在写这篇博客的此刻,我仍然在为昨天在聚会上发表了一个让大家都感到诧异的评论而觉得尴尬。好吧,好消息是我并不孤单——Java 8在多任务处理方面同样很优秀。让我们来看看它是怎么做的。在Java 8引入的新功能中,有很重要的一项是并行数组处理。这项新功能使得我们能够使用可...

2014-10-08 22:52:00 147

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除