Welcome to Triffic Site

Simple rules of serialization and deserialization in Java

关于Java序列化和反序列化的原理机制和几种常见的实现方式网络上已经很多了,比如这篇 Java序列化进阶:Java内置序列化的三种方式

本文注重归纳关于序列化&反序列化的几条规则,做个简单备忘参考。

  • 一个Java对象能被序列化==当前对象或者父类实现了Serializable or Externalizable接口;
  • 某个子类是可序列化的[实现了Serializable or Externalizable,其父类是不可序列化的,那么这个父类在定义的时候必须带上一个no-argu constructor[无参构造函数],否则在运行时,readObject()方法会抛出java.io.InvalidClassException;
  • 父类[不可序列化]的无参构造函数在子类对象进行反序列化的时候会被调用,然而子类对象本身的构造函数并不会被调用;
  • Transient和Static修饰的属性不会被序列化,但对于Static来说有一个特殊情况,如果再加上final修饰符那么这个属性就是可以序列化的,这个时候这个属性就变成了一个常量;
  • 如果一个可序列化对象的成员变量引用了不可序列化的对象,那么编译能通过,但是会抛出运行时异常。

参考文献

  1. http://www.xyzws.com/Javafaq/what-are-rules-of-serialization-in-java/208
  2. https://baijiahao.baidu.com/s?id=1568611161638053&wfr=spider&for=pc

部署在ECS上的WordPress全站启用HTTPS

前提条件
首先说明本次操作的软硬件环境,若有需要,请针对性参考。

  • WordPress 4.8.1
  • 阿里云ECS服务器
  • 万网已备案域名 [万网已与阿里云官网融合]

申请免费CA证书
云盾证书服务_数字证书管理_CA中心-阿里云

点击上方连接,根据操作步骤进行信息填写,官方说明免费CA证书用于个人测试使用,有效期一年,申请过程无须人工介入审核,等待几分钟之后,会通知你「审核通过」,状态变成「已签发」,如下图所示,进入「下载」环节。


安装OpenSSL
需明确把CA证书安装在哪个web服务器上,官方提供Nginx,Apache,Tomcat,IIS等证书配置说明。
笔者把CA证书安装在Apache上,接着检查Apache上是否已加载mod_ssl module,如无,请前往OpenSSL下载源码,进入安装流程:

或者直接使用yum命令进行安装

借助apxs安装mod_ssl模块
如何把已安装好的OpenSSL模块加载到Apache中着实花了一点时间,在网上搜索了一把,提到的方法基本上倾向于用Apache源码安装mod_ssl模块,显然这种方法会比较繁琐,也比较费时。
找到一种无须编译Apache也可安装mod_ssl模块的方法,但Apache源码也是需要的,安装步骤如下:

  1. 执行whereis openssl,定位openssl的lib和include路径;
  2. 切换到当前目录到/module/ssl;
  3. 执行/etc/httpd/bin/apxs -i -a -D HAVE_OPENSSL=1 -I/usr/include/openssl/ -L/usr/lib64/openssl/ -c *.c -lcrypto -lssl -ldl

安装证书
前面三个步骤来自官方说明。
1. 在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为214242643870408.key;
2. 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”:

3. 打开 apache 安装目录下 conf/extra/httpd-ssl.conf 文件 (也可能是conf.d/ssl.conf,与操作系统及安装方式有关), 在配置文件中查找以下配置语句:

4. 修改DocumentRoot,打开conf/extra/httpd-ssl.conf,修改里面的DocumentRoot:
/etc/httpd/htdocs修改成/var/www/html,根据站点内容具体存放位置而定。

批量修改图片路径
在完成以上所有步骤之后,我们在访问站点时,打开浏览器的开发者工具->console,我们会看到大量的图片路径报警信息,原因是在配置https之前,所有站点文章中涉及的图片都以http打头的路径保存,现在切换到https,WordPress会提醒你图片应该以https打头的路径进行保存。
那么如何进行修改,网上主流的有两种方法:

  1. 修改站点主题中的functions.php文件,在文件末尾加上替换函数,把对图片的访问经过字符串替换之后,切换到https访问;
  2. 使用phpMyadmin登录站点mysql数据库,对图片路径进行批量更新;
    以上两种方法,网上一搜一大把,请自行前往。

这里介绍第三种,安装插件 点击下载WP Migrate DB ,操作界面干净简单,如下图所示:


操作简单,Find栏目填写源字符串,Replace填写目标字符串,点击执行即可。

以上所有就是实践全站启用https过程中所执行的步骤以及碰到的一些问题一并在步骤里面进行说明,但每个人碰到的情况不一样,欢迎各位进行交流。

玩转大数据也许真的可以离开Hadoop?

之前在学习大数据相关的内容,技术坑很多,水很深。偶然间在一位博主的博客中看到了Tablesaw这款开源工具,号称「MAKING BIGDATA SAMLL AGAIN」,觉得很神奇,遂前去一探究竟。

Tablesaw简介
引用官网的一段介绍:

Tablesaw is a high-performance, in-memory data table in Java.
Tablesaw’s design is driven by two ideas: First, few people need distributed analytics. On a single server, Tablesaw lets you work interactively with a 2,000,000,000 row table. (I plan to raise that ceiling, btw.) Second, it should be super easy to use: To that end I happily steal ideas from everything from spreadsheets to specialized column stores like KDB.

我们来总结下,Tablesaw设计初衷有以下两条:

  1. 作者认为很少有人真的需要进行分布式计算分析,在单台服务器上「Tablesaw」能支持最多20亿条数据,似乎在大多数情况下都能满足用户的计算需求;
  2. 大数据工具应该简单易用,费大把劲去搭建大数据集群估计已经吓退一拨人。

从本质上而言,我们发现「Tablesaw」就是一款基于内存,使用纯java实现的big spreadsheet。嗯,我相信你一定使用过Excel。

Tablesaw主要功能
既然Tablesaw宣称自己简单好用,那到底支持哪些功能呢,笔者新建了一个Maven工程玩了一把,貌似有以下功能:

  • Import data from RDBMS and CSV files, local or remote (http, S3, etc.)
  • Add and remove columns
  • Sort
  • Filter
  • Group
  • Map and reduce operations
  • Descriptive stats (mean, min, max, median, etc.)
  • Plotting for exploratory data analysis and model checking
  • Store tables in a very-fast, compressed columnar storage format

在试用过程中有几点 事项说明 下:

  1. 在数据量不大的情况下,执行简单的查询操作速度很快,不像在Hive中做一个非常简单的查询都会转化成一个MapReduce作业在Hadoop集群上跑几十秒时间(当然你可以通过set hive.fetch.task.conversion=more ,使得简单的查询不会被转化成MapReduce作业);
  2. Tablesaw支持的功能还非常有限,对于复杂的组合查询会很吃力,甚至可能都做不到,Tablesaw作者在博客中强调未来会支持更多的列类型,支持更多的操作,同时把常用的机器学习算法的实现也引入进来,对于未来的设想我们拭目以待;
  3. 在借助Tablesaw做数据展示的时候,使用的是XCharts

Tablesaw适用场景
简单介绍了Tablesaw的主要功能以及未来的设想,其实我更关注的是如何与我们现有的应用场景进行结合,或者说Tablesaw在哪些场景下会比较适用,大致能想到的有以下两个领域:

  1. 作为缓存器,对于热点数据我们从持久化的关系型数据库读到内存之后,可以马上对外提供计算查询的API;
  2. 对于数据分析师,数据科学家等以实验论证形式展开工作的一类人,对他们来讲有一款简单易用的大数据工具绝对是福音。

浅谈大数据技术与人工智能技术之间的关系

重读吴军博士的“智能时代-技术的拐点”章节有感,以及自己的一些思考。

大家似乎都有这样一个直观的感性认识,人工智能从2015,16年开始似乎又进入了一个快速的发展阶段,各种人工智能的概念性产品纷纷涌现,遍地开花,尤其是创业者,感觉到特别兴奋,纷纷想要打造出革命性的产品,改变世界,这个时候其实我们有一点纳闷,有一点疑惑,为什么一项已经发展了半个多世纪之久的人工智能技术在今天这个时间点能够被大家普遍接纳和采用,大家开始有能力去构建一个人工智能学习系统,呈现一种突破性的发展态势,我们肯定在想这背后发生了什么,是的!

这十几年来,还有一门技术非常火,那就是大数据技术,有人曾经这样形容大数据技术与人工智能技术的关系,说:

人工智能就像潜力无限的婴儿,而大数据是喂养婴儿的奶粉,奶粉的数量和质量决定了婴儿的智力发育水平。

那么这十几年以来,大数据技术取得了哪些突破性的进展,我们分成四个维度来分别看一下,如下图所示:

 

数据采集
数据采集说的是数据源的问题,分以下几点进行说明:
1. 随着全球软件业的蓬勃发展,越来越多的应用系统投入生产运行,系统本身产业的交易,日志等等数据是庞大的,这是第一个来源;
2. 随着各种智能设备以及可穿戴设备的普及,设备中部署的一个个sensor无时无刻不在自发的采集数据,这是其二;
3. 进入web2.0时代,尤其是在社交网络如此发达的今天,用户ugc产生的数据量呈指数级增长。

所以在今天这个时间点看来,数据已经不是多少的问题,而是如何好好利用的问题。

数据存储
数据存储分两点来看:
1. 根据摩尔定律,存储设备每隔18个月存储容量上升,成本下降。越来越多的服务提供商开始铺机器,建设一个个数据中心;
2. 存储设备更新迭代,由磁带过渡到机械硬盘,在发展到现今的固态硬盘,这里体现出来的是存储设备数据存取速度的极大提升。

数据传输
数据传输讨论的是如何把众多的数据源聚合到数据服务器上的问题,随着网络传输技术的发展,各种数据源通过千兆/百兆光纤网络,WiFi,4g网络等等完成数据的传递。

数据处理
这是我个人认为具有深刻意义的突破性进展,出现了并行计算框架,你很难想象Deepmind公司在训练AlphaGo的时候如果只用了一台服务器来跑他们的神经网络算法,那么试想完成一轮神经网络的迭代运算需要多久?一天、一星期、一个月、一年还是直接就趴下了,无论如何,至少我们会达成这样的共识:AlphaGo大胜李世石的局面不会这么早被我们见证,对吗?

所以,总结起来看,围绕大数据技术的这四个维度在各自方向上的突破性进展合力把大数据带到了一个技术拐点,同时再加上更优化的算法模型和更完备的海量数据共同推进了人工智能往前迈出了一大步,取得了突破性进展。

「智能时代」读书笔记

我们这一代人也是幸运的,见证不了由蒸汽机和电开创的工业时代,却能见证更伟大时代的来临,以大数据为核心的智能时代正在扑面而来,犹如翻腾的浪潮一波一波的起起伏伏,我们是要做这个时代的弄潮儿还是被这波浪潮拍死在沙滩上,这不是一个艰难的选择,而这恰恰又是一个必须下定决心要做的事。

读完吴军老师的「智能时代-大数据与智能革命重新定义未来」,犹如暗夜中的指路明灯,相见恨晚,久违的感觉。通过思维导图进行了简单梳理,以作备忘。

(更多…)

Evaluation Metrics of Spark Machine Learning

众所周知,SparkML组件提供了当前主流的机器学习算法实现,便于开发者在各个应用场景中选择合适的机器学习算法进行快速迭代验证。

当然在每个场景下我们都绕不过尝试多种机器学习算法,这就涉及到算法之间的横向比较,自然的我们会参考各类评测指标。

在有监督的学习下,对于每条输入数据<x1,x2,x3,…,xn>,算法模型都能给我们一个正样本或者负样本[二元分类]的预测输出值,结合测试样本中该条输入数据对应的label[正样本/负样本],我们一共能得到以下四种情况的组合:

  • True Positive (TP) – label is positive and prediction is also positive
  • True Negative (TN) – label is negative and prediction is also negative
  • False Positive (FP) – label is negative but prediction is positive
  • False Negative (FN) – label is positive but prediction is negative

 ps:在本文中我们主要讨论二元分类。

Binary Classification

二元分类旨在尽可能的把样本正确地分成两类,比如我们有一份关于病人是否患有癌症的数据集,在这样的应用场景中,借助二元分类算法模型,尽可能的把样本数据集一份为二,分别是患癌症的样本数据和不患癌症的样本数据。

如前所述,我们可能会选用多种分类算法,什么支持向量机/决策树/朴素贝叶斯/逻辑回归等等,那么如何来衡量这些分类算法模型哪个分类分的更好,这时我们就要借助以下指标进行衡量:


下面分别用文字来解释以上每个评测指标的含义,对于二元分类,我们首先约定用0代表负;1代表正[当然你也可以用-1代表负样本,1代表正样本,或者其他]。

Precision (Positive Predictive Value)

我们经常听到的查准率,即模型预测出正确1的个数在预测出1的个数中的比重。ps:如何来理解什么是正确的1,对于输入的每条测试样本,模型算法预测出1且在测试样本中该条输入对应的label也为1。

Recall (True Positive Rate)

我们经常听到的查全率,很好理解,即模型预测出正确1的个数在测试样本label为1的个数中的比重。正确1的理解同上。

F-measure

Precision和Recall经常会出现矛盾的地方,比如Precision很高,结果Recall很低,或者反之,这个时候我们会陷入评测困境,不知道选择哪个模型,这时我们可以引入另一个评测指标,F-measure也叫F-score,这个指标综合考虑了Precision和Recall,是这两个指标的调和平均值。

Receiver Operating Characteristic (ROC)

根据Wikipedia定义:

In statistics, a receiver operating characteristic curve, or ROC curve, is a graphical plot that illustrates the performance of a binary classifier system as its discrimination threshold is varied. The curve is created by plotting the true positive rate (TPR) against the false positive rate (FPR) at various threshold settings

官方定义中提到ROC曲线是关于TPR[TPR=TP/(TP+FN)]和FPR[FPR=FP/(FP+TN)]随着threshold(阈值)变化而变化形成的曲线图,如下图所示(来自wiki):


现在来认识下上图所示的ROC曲线,首先来了解这幅图中的四个点,分别是(0,1)、(0,0)、(1,0)和(1,1)。
(0,1)表示FPR=0,TPR=1表明这个二元分类模型是一个完美的分类器,能把测试样本中的样本数据完全正确的分类;
(0,0)表示FPR=0,TPR=0表明该模型把所有的测试样本全划分为负样本,即TP=FP=0;
(1,0)表示FPR=1,TPR=0表明该模型在测试样本中进行预测的时候完全预测错了,都预测出了跟样本label完全相反的结果,即TP=TN=0,是一个非常糟糕,完全不能用的模型;
(1,1)表示FPR=1,TPR=1表明该模型在预测时把所有的测试样本全划分为正样本,即TN=FN=0;

对上图中四个点进行分析可知,ROC曲线越往左上角靠近,模型分类的效果越好。

再来看y=x这条直虚线,它表明的含义是在没有分类模型的情况下,我们猜测某个样本属于某个分类的概率有多大,根据经验判断,在随机猜测的前提下,我们认为某个样本属于正样本/负样本的概率分别是0.5。

这样我们在判断模型分类效果好坏的时候有了一个基准线,如果ROC曲线在y=x的右下方,则直接可以认为这个分类模型完全不可用,还不如随机猜测的分类效果好,所以ROC曲线在y=x的左上方才有在实际生产中应用分类模型的意义,即由True Positive Rate轴, False Positive Rate轴和曲线形成的面积越大越好,更一般地,我们对模型分类效果的好坏有以下的一般划分标准。

  • 0.90-1.00 = excellent (A)
  • 0.80-0.90 = good (B)
  • 0.70-0.80 = fair (C)
  • 0.60-0.70 = poor (D)
  • 0.50-0.60 = fail (F)

如果我们考虑的是Precision和Recall随着Threshold变化而变化的情况,则我们得到如下图所示的曲线:


同样对上图中的四个点以及直线x+y=1进行分析可知,P-R曲线越靠近右上角,即Area Under Precision-Recall Curve越大,模型的分类效果越好。

ROC曲线和P-R曲线比较

既然现在我们有这么多的基础评测指标[Precision, Recall和F-Score],那为什么还要使用ROC和P-R曲线,尤其是我们倾向于使用ROC曲线,因为当测试样本中正负样本比例发现变化的时候,ROC曲线能够相对保持稳定,随着时间的推移,正负样本比例发现变化[正样本比负样本多很多,或者相反]更符合实际情况,摘取Fawcett, T. 在2006年发表的一篇文章[An introduction to ROC analysis. Pattern recognition letters]的一张实验比较图:


(a)和(c)表示ROC曲线,(b)和(d)表示P-R曲线,(a)和(b)表示在原始测试数据集[正负样本比较平衡]上的ROC和P-R曲线图;当把测试样本中的负样本扩大10倍之后,得到如图(c)和(d)所示的曲线图,我们能观察到(a)和(c)图中的ROC曲线相对保持不变,而(b)和(d)曲线变化非常大。
所以我们得出的结论是用ROC曲线来评测模型更加稳定,不会因为正负样本比例的变化而剧烈波动,从而导致我们可能考虑选用其他的模型。

下面我们以ROC曲线为例来说明曲线是如何画出的。

ROC曲线如何绘制

假设我们的分类模型在数据集大小为10[当然实际情况远远大于此]的测试样本上做预测,得到了如下图所示的预测结果:


上图中labeledPoint代表测试样本中的每条输入数据,label表示该条输入数据在测试样本中的值[1代表正样本,0代表负样本],prediction代表我们的分类模型根据每条输入数据计算出的评分值,数值越大表示它属于正样本的概率越大。
接下来取prediction中的每个值作为Threshold,假设我们现在选择prediction=0.341作为Threshold,那么prediction>=Threshold=0.341的样本则被认为是正样本,即编号1,2,3,4和5的样本为正样本,这时我们可以计算出一组(FPR, TPR),也即得到平面上的一个点,继续选择prediction=-0.769和-0.982作为Threshold,又得到两组新的(FPR, TPR)坐标点,如下图所示:


当我们完成所有prediction作为Threshold的遍历,就得到如下图所示的ROC曲线,在现实预测情况下,实际的测试样本数据集会多很多,得到的(FPR, TPR)点会相应的多很多,得到的ROC Curve会更平滑。


这样我们就完成了ROC曲线的绘制。

Area Under ROC Curve计算

至于如何计算由False Positive Rate轴,True Positive Rate轴和ROC曲线形成的曲面面积则比较简单,通过以下微积分公式即可求解:

面积越大表明我们分类模型的分类效果越好。

ps:文中除了[ROC曲线如何绘制]这一节的三张图之外,其余图片均出自参考资料,若有侵犯,联系删除!

参考资料:

  1. http://gim.unmc.edu/dxtests/roc3.htm
  2. [ROC和AUC介绍以及如何计算AUC](http://alexkong.net/2013/06/introduction-to-auc-and-roc/#fn:6)
  3. https://en.wikipedia.org/wiki/Receiver_operating_characteristic
  4. https://spark.apache.org/docs/latest/mllib-evaluation-metrics.html
  5. http://www.sciencedirect.com/science/article/pii/S016786550500303X

「改变命运的演讲能力」听课笔记

本周一晚听了一场老罗主持的讲课「改变命运的演讲能力」,有一些收获,在这里提炼摘要分享给大家,内容非常丰富,逻辑层次感强。

[1]关于如何克服演讲的恐惧
克服演讲恐惧的唯一途径就是**多讲**,在练习演讲的时候,为了避免让自己太难堪,可以选择在那些能够对你说实话,同时又不会让你觉得太尴尬的人面前演讲,但是有些人,比如说亲戚朋友, 也有可能为了避免伤害你,假装认可你的演讲,说你讲的不错不错,进步还很大,但是这个时候,你就要有判断他们的这个说法的能力,如果你连这个也判断不了的话,基本上大家也不知道该怎么办了。
关于恐惧,我想说的是,希望大家记住这样一句心灵鸡汤,这句话其实是很真实也很重要的,**就是那些成功的人都是不怕去做自己害怕做的事情的人**。这句话有点绕,希望你听明白了。

[2]关于演讲的本质
演讲的本质呢其实它不是一个正常的交流和沟通,其实是一场表演,一定不要指望它可以最终经过训练,最后变得很自然,就跟朋友聊天似的。如果你看某些人的演讲,能做到像跟朋友闲聊一样那样的人,那也是表演出来的,某种程度上,在生活中,我们都是在表演,只是你没有想到而已。比如说在老板面前,在上司面前,再到丈人丈母娘公公婆婆面前,我们都努力地表现的好一些,这些东西其实都是在表演,表演,可以是真诚的,但千万不要把表演理解成弄虚作假。

[3]关于演讲的天分和后天努力之间的关系
总有人会问做一个好的演讲者,天分占多少后天的努力占多少?嗯,这个问题其实本身是有一点点问题,这取决于最终你要通过演讲来实现一个怎样的效果,取决于这个东西,你要把自己训练成一个职业的演讲家,如果是这样的一个需求的话呢?天分还是很重要的,至少要占50%以上的重要性,而不是每个人都能通过训练把自己练成一个一流的职业的演讲家,当然职业演讲家也有很多讲的非常烂。如果你只是需要把演讲作为练习对象,想比身边大多数没有受过训练的人都做得更好,那其实对天分要求并不是很高,就是说你只要这方面不是特别低能,不要比普通人差太多,基本上靠努力和训练就足够了。好消息是,你也不要太迷信什么演讲天才之类的,嗯,这件事情本质上是训练的越充分,学习的越充分,准备的越充分越好,今天有一些人靠着临阵磨枪也能获得一些小成功,但是他们也比较承认演讲这个东西归根结底都是准备的越充分越好。

[4]关于演讲的准备时间
下面要讨论另外一个话题,这对没有演讲天分,并且羡慕别人有演讲天分的人来说心情可能会好一些,也就是关于演讲的一个准备时间,这个是针对已经掌握了演讲能力的人讲,你首先需要明确这个前提。如果你要准备一场正式的大型的演讲,时长大约在一个多小时,这个时候你该怎么办呢?从准备大纲、充实内容、制作幻灯片、反复彩排等等这些事情整个积累下来的总的工作时间,不应该少于100个小时。也就是说,差不多一个小时的演讲要用演讲时长的100倍左右的时间来准备是比较合理和稳妥的,嗯,你没有听错就是100倍。比如说你想在公司例会上作报告,时长大约在十五分钟,你可能差不多也需要一整天的时间来准备,8到10个小时的样子,除非你完全不在意在公司会议上的表现。你可能觉得自己有一些天分,完全不需要那么长的准备时间,但事实上没有不付出努力就能创造奇迹的天才。

[5]关于ppt的准备
需要大家明白,现在我们有这么好的一个手段作为辅助,帮我们解决很多演讲的问题,在这方面你一定要舍得下点功夫,把这个东西学习好,它非常值得投入精力去学习。同时也希望大家明白,因为我们身边有一些学习演讲的人最后走火入魔,演讲能力提高并不多,但是他ppt做得特别好,额,这个有点本末倒置了,因为你始终都要明白一个演讲的基本道理,就是说所有其他的辅助手段,技巧训练等等,都替代不了内容和思想本身。

[6]为了一场有效传达信息的优秀演讲,你需要掌握的要点总结如下:

要有数据
要吹牛逼
要会装逼
要开玩笑
要讲故事
要有画面
要提问题
要三段式
要有境界
要讲逻辑
要有情感
要标题党

 

取关公众号=提升时间质量?

常想活着是为了什么,为了钱,这个很好理解,也很容易接受,因为活着需要成本,成本靠钱来垫付,这个时候就会发现求财非常的正确且迫不及待。

事情的转折在于有钱就真的让我们能感觉到生活的意义了吗,或者你认为赚钱就是活着的意义,如果是这样,认真工作,埋头苦干,一生也许很快就过去了,这其实也是一种非常节省脑细胞的方法;但如果你不怎么认为呢,这个时候你该怎么说服自己,如何过这一生?

听完「时间的朋友」,总体感觉老罗讲的很吃力,是呀,就这么巴拉巴拉讲完四个小时,不「口干舌燥」才怪,但你也知道其实我说的是他的演讲内容,干货很少,但有一个观点是认同的:用户的时间感越来越强烈,没点好内容的服务,一定会瞬间被淹没在汪洋大海中。

所以纯粹是想说「时间」这个东西对于现代人来讲是一件奢侈品。「时间宝贵,抓紧享受」就是现在生活的基本状态,「享受」这个词肯定会引来骂声,又是因为思维定式,我们对其自然而然产生负面的理解,事实上我们是想说:享受一切美好的事物,它有可能来自我们喜欢的器物,也有可能来自某种精神上的碰撞。

既然说「时间」很宝贵,那换个方向,我们如何来节约时间,抓紧时间去享受更多美好的事物,这个时候不妨来举个例子,每个人微信App中都订阅了一大堆的公众号,但事实是你每天真的有时间逐一去看吗?能做到认真看吗?能有什么收获吗?问过这些问题之后,不那么懒惰的人则马上拿起手机,进入「订阅号」,开始仔细甄别,WTF,我什么时候订阅了这么多公众号,还全是讨厌的红点,「删」好像是当前唯一正确的选择,这就对了,你肯定感觉到某种焦虑感在消失,幸福感提升了不少。

可是过不了多久,我们的焦虑感又开始慢慢积聚,原因在于我们会觉得自己慢慢与这个世界发生脱节,错过了很多东西,好像跟不上这个时代了。有这种焦虑感再正常不过,说明我们心里一直是想要鞭笞自己进步的,订阅一些公众号似乎让我们觉得心里好受一些,就想很多人看到了很好的文章,会收藏,然后留言一句「先收藏,以后再看」,但我认为TA很可能不会真的去看,纯粹给自己心里一个安慰,本质上而言,是这篇文章没有戳中TA的兴奋点或者比较懒,这都说远了。现在回过头来,在动手订阅公众号时再暂定一下,然后问一声:不订阅我真的会错过很多东西吗,也许错过的都是一些噪声,本该就被过滤掉。我们要的是干货,要的是好内容和好服务,不在多在于精,然后真的会去仔细阅读和思考,这个时候我们是否能感受到时间在慢慢为我们注入能量。因为我知道时间是怎么被消费掉的,我也知道在哪段时间我做了些什么。

以上啰里啰嗦说了一坨,愿带给各位一点小小的时间洞察力,不负年华。

AnotherKafkaMonitor: Kafka性能监控平台

开源了一款Kafka监控工具 AnotherKafkaMonitor ,直接贴上README.me。
===========

Inspiration
AnotherKafkaMonitor is an app which used to monitor kafka producer and consumer progress inspried by KafkaOffsetMonitor. It aims to help you figure out what’s going on in your kafka cluster, that’s to say, to understand how fast the producer send message to the kafka or whether the consumer is far behind the producer or not, if lag exceeds threshold, you will be noticed through alarm email.

How To Install
Several ways can be taken if you want to try

  1. Extract AnotherKafkaMonitor.war into default folder called AnotherKafkaMonitor;
  2. Edit file which located in path of  \AnotherKafkaMonitor\WEB-INF\classes\system-config.properties, In corresponding with your Zookeeper and Kafka Cluster Environment;
  3. Move folder AnotherKakfaMonitor to <TOMCAT_HOME>\webapp;
  4. Start tomcat, type http://localhost:<TOMCAT_HTTP_PORT>/AnotherKafkaMonitor into browser, please enjoy.
  • Maybe you want to make some change for your taste
  1. Download the zip file;
  2. Import into your IDE, like Eclipse or others as you like.

(更多…)

VR在手机银行中的场景探索

VR技术概念提出由来已久,在2015年开始逐渐进入大众视野,似乎一夜之间人们对VR的好奇心开始被激发,VR关键词频频见诸新闻和各产业经济报道的热搜中,我们得以慢慢开始了解这项技术,并在碎片化的信息中去拼凑和预测VR在未来各领域所可能带来的改革。理论派,工业界和科技巨头都开始纷纷涉足和布局VR战略,希望在下一代重大计算平台(VR/AR)上领跑。

本文限于篇幅,对VR技术概念,发展现状,生态布局,核心发展趋势以及面临的挑战不作介绍,这部分内容请参考[2016年德意志银行VR/AR报告中文完整版],报告详尽地阐述了前文中提及的这几部分内容。而本文旨在进行VR技术如何与手机银行亦或是网点进行有效结合的探索研究上。

(更多…)