New Boy

a new blog for a new boy

[转]深入浅出ClassLoader,你真的了解ClassLoader吗

前言 转载自并发编程网 – ifeve.com本文链接地址: 深入浅出ClassLoader 在之前的实习中,也接触到一些包依赖冲突的问题,确实非常麻烦,最近在复习jvm类加载时,看见一篇很不错的文章,9除了理论也结合了实践,故转载之。 你真的了解ClassLoader吗? 这篇文章翻译自zeroturnaround.com的 Do You Really Get Classl...

随便写随便看

本来文章是发在微博上的,不过政治原因,第二天被干掉了,于是打算把之前的文章都移到博客上。由于本人知识浅薄,只是希望记录下这段时间的所思所想,里面的一些观点也很片面,就当笑话一样随便看看吧:D 说起这篇长文,真是令人难过,昨晚文思泉涌,写了这段时间的所闻所想。奈何最近真值风口,估计渣浪的关键字库中加了很多的敏感词汇,一早起来就发现中招了,长文被渣浪干掉了。 我这人有点倔,也不喜欢做...

单例模式实现

前言 说起单例模式,应该设计模式中算是代码比较短,其主要作用是保证一个类只有一个实例,节省内存空间,也避免了频繁的创建与销毁对象,比如在spring中bean的创建时,就默认采取了单例模式。单例模式主要包括懒汉式和饿汉式。顾名思义,懒汉式就是“懒”,在你需要的时候我再给你创建对象,而对于饿汉式,则在于“饿”,在类加载时就就生成实例对象。 实现 为了不让外部类创建对象,一般是通过对构造函...

volatile详解

前言 说到volatile关键字,应该是个很古老的关键字,然而这是一个很关键的一个关键字,从暑假接触到开始,看了许多的文章,也渐渐有了一些自己的理解。就来讲讲volatile这个东西。参考:Java内存访问重排序的研究 volatile特性 总的来说,volatile具有两个特性,一个是可见性,一个是禁止指令重排序 可见性 关于可见性的,之前忘记在哪本书上截了一张图,讲的是工作内存...

[转]OAuth2.0授权管理

本文转载于OAuth2.0授权管理 注: 原文发表于2013年,所以也有一些问题,其中安全漏洞那块所引用的链接已挂,可以参考这篇文章针对近期“博全球眼球OAuth漏洞”的分析与防范建议,也是比较全面的。另外在新浪微博相关的地方,使用的也是较早的版本,建议读完此文后再去看看新浪官方授权机制,从理论到落地,必定很有收获。 最近在做第三方接入的,初步定下使用OAuth2协议,...

[转]MD5+Salt安全浅析

原文地址:https://www.server110.com/sec_news/201309/995.html 这段时间诸多爆库的新闻,里面有许多饶有趣味的事情。那些用简单密码,或者一个密码走天下的笑话就不说了,咱说点有内涵的。(这篇文章是给IT界的人看的,如果你看不懂,我会准备一个简单的“如何辨别密码安全糟糕的网站”的方法给你,另文描述。) 爆库之后哀鸿遍野,一大堆人都在里面嗷嗷...

责任链模式java实现

前言 责任链模式在过滤器相关的地方用得比较多,netty中的ChannelPipeLine也使用了责任链模式,以下是百度的介绍:“在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。”责任链模...

redis-skiplist源码学习

前言 注:以下代码基于redis-4.0.7 redis中有5种数据结构,之前面试时好几次遇到“排行榜”的问题,虽说都答了出来,不过对其底层的实现还是不清楚。抽空去了解学习了一下。也看到了一些比较好的文章,给了我比较大的帮助,为啥 redis 使用跳表(skiplist)而不是使用 red-black?,跳跃表。 具体实现 数据结构 先来看看数据结构,这对理解redis的skipl...

redis分布式锁代码解读

前言 说起锁,其实还是一个很宽泛的概念,在java中,基础的就是synchronized关键字,ReentrantLock,但是就这两个就可以引出非常多的知识点,包括操作系统层面的monitor锁,AQS,volatile等等。不过在分布式环境中,在对共享资源进行操作时(最常见的就是一个秒杀的场景),单机的锁肯定是行不通的,于是就引申出了分布式锁的概念,分布式锁的实现方式主要有3种,这篇只...

[转]Git版本控制与Git Flow工作流程

本文出处:原文 引言 编写的目的 通过规范化的流程,使得产品、开发与测试等各个部门更高效的协同工作。 通过规范化的流程使得产品高效稳定运行。 背景 在多组员,多项目等环境进行协同工作时,如果没有统一规范、统一流程,则会导致额外的工作量,甚至会做无用功。所以要减少版本冲突,减轻不必要的工作,就需要规范化的工作流程。 总则 统一使用Git作为版本控制的主要工具。 ...