My Avatar

Shadow

I love bleak day, like something will happen

二维码登录技术研究

2016年08月25日 星期四

好久没更博了,最近正好在研究二维码登录技术,借此记录下最近的研究结果

我将从以下三个方面进行介绍:

  • 微信、钉钉二维码扫描登录
  • 自实现二维码扫描登录
  • 完整的二维码扫描登录方案

阅读全文

volatile关键字详解

2016年06月16日 星期四

之前一直对java中的volatile关键理解不够透彻,今天看到一篇文章讲的非常好,特转帖过来

原文地址如下:

http://www.cnblogs.com/dolphin0520/p/3920373.html

阅读全文

Git原理详解

2016年06月14日 星期二

虽然一直在用Git,但是对Git的原理一直都不太理解,最近看了官网的原理讲解,觉得大有收获,下面贴出官网关于Git原理的原文。

官方介绍地址


不过在贴出原文之前,我先谈谈自己看完之后的理解:

Git中所有对象都以key value形式保存在文件系统中,key是一个对存储内容+header进行散列后的值

Git保存了文件的每一个版本,也就是每一次commit中,对所有更新的文件,Git都会完整保存其新的副本,而不是保存和上个版本的差异。

每一次提交也是一个提交对象,也同样保存了下来,一个提交对象会指向一个树对象,而树对象则维护着你的项目的全部文件对象。树对象就像是目录。这样通过一个提交对象,就能找到树对象,通过树对象找到所有文件在该次提交时的副本对象,从而获得某次提交的版本。

不同commit下的树对象是不同的,但是树对象下的文件对象有可能相同,也就是对那些在两次commit下没有改变过的文件,那么他们的对象在两个树对象下是相同的,但是那些更新过的文件,在这两个树对象下他们的存储对象也是不一样的,分别对应着自己的版本的存储对象。

每次commit之所以要指定父commit,是因为有了父commit我们就能知道这次commit和上次commit之间的差异。通过commit对象下的树对象维护的所有文件对象,来判断有哪些文件是新增的,有哪些是删除的。


阅读全文

简单性能监控

2016年05月31日 星期二

分享一个最近写的用于收集系统以及jvm性能指标数据的JAVA代码

有时候我们有需要监控节点的磁盘、内存、cpu以及JVM的内存使用情况等性能指标的需求,不想用复杂的框架或APM工具,可以试试下面这个:

阅读全文

Chrome

2016年05月25日 星期三

作为一个崇尚diversity的人类,我从来都不赞同别人说:什么什么样的人就该怎么怎么样,例如,程序猿就该用Github而不能用国内的CSDN,程序猿就该用Chrome而不能用360浏览器(当然确实不想用 = =),女人就该柔弱,男人就该强势等等balabala,懂什么叫存在即合理吗,碰到说这样的话的人,下面的表情送给你

想我之前一直都在使用firefox,也没觉得有啥不好,不过今天我还是要来分享下我使用chrome的一些心得,毕竟确实好用,就是这么没原则 = =

阅读全文