HTTPS 到底加密了什么? (tech.upyun.com)
先跟大家讲个故事,我初恋是在初中时谈的,我的后桌。那个时候没有手机这类的沟通工具,上课交流有三宝,脚踢屁股、笔戳后背以及传纸条,当然我只能是那个屁股和后背。

说实话传纸条真的很危险,尤其是这种早恋的纸条,被抓到就是一首《凉凉》。
by @又拍云 4小时前 分享 查看详情
一文读懂 HTTP/2 特性 (tech.upyun.com)
HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 发布后的首个更新,主要基于 SPDY 协议。相比较 HTTP, HTTP /2 到底有哪些具体变化呢?
by @又拍云 2019-01-16 10:46 分享 查看详情
Android-图片的选择,裁剪,压缩,适配高版本 (mp.weixin.qq.com)
我们之前设置拍照保存的文件地址的 Uri,都是直接Intent.putExtra(MediaStore.EXTRA_OUTPUT,文件保存的Uri路径),但是 7.0之后,对用户权限提高了保护,之前那种方式行不通了,所以我们要做7.0的判断,用 FileProvider 获取设置保存的文件 Uri,然后放到Intent.putExtra(MediaStore.EXTRA_OUTPUT,文件保存的Uri路径)中,代码如下:
by @code小生 2019-01-15 09:29 分享 查看详情
收集老是忘的 kotlin 代码片段 (mp.weixin.qq.com)
这里的核心是 kotlin 对 list 的写法和 Sequence 序列的应用,Sequence 序列会大大提升 list 处理速度,rxjava 式的调用感官是很 Nice 的。
by @code小生 2019-01-15 09:28 分享 查看详情
Java 面试题散列知识点 (mp.weixin.qq.com)
静态方法只与类相关,不与具体实现相关。并且 static 方法不是后期绑定的,它在编译期就绑定了。所有引用到该方法的对象(父类的对象也好子类的对象也好)所指向的都是同一块内存中的数据,也就是该静态方法。父类的静态方法不能被子类继承,更谈不上重写;
by @code小生 2019-01-15 09:26 分享 查看详情
Android 框架思考--界面 View 封装 (mp.weixin.qq.com)
Android 项目不管使用什么框架结构,承载界面的必然少不了 Activity 或者Fragment,而对于一个用户界面来说,有一些业务逻辑的处理是通用的,比如请求网络时需要有 loading 框,比如网络错误时需要界面有对应提示,比如通用的导航栏,比如每个界面都用 activity 就需要在 Manifest.xml 文件中配置等等,这些能否做一些封装,可以让开发者只关注具体界面的具体逻辑,快速实现一个界面?
by @code小生 2019-01-15 09:25 分享 查看详情
Google 工程师:为什么 CDN 对移动客户端加速“没有”效果 (zhuanlan.zhihu.com)
Google Web 性能优化工程师和开发大使、《High-Performance Browser Networking》作者 Ilya Grigorik 近日发布了一篇名为《为什么 CDN 对移动客户端加速“没有”效果》的博客,让我们来看看他在文中讲了什么……
by @又拍云 2019-01-11 10:28 分享 查看详情
《从0到1学习Flink》—— Flink 写入数据到 Kafka (www.54tianzhisheng.cn)
之前文章 《从0到1学习Flink》—— Flink 写入数据到 ElasticSearch 写了如何将 Kafka 中的数据存储到 ElasticSearch 中,里面其实就已经用到了 Flink 自带的 Kafka source connector(FlinkKafkaConsumer)。存入到 ES 只是其中一种情况,那么如果我们有多个地方需要这份通过 Flink 转换后的数据,是不是又要我们继续写个 sink 的插件呢?确实,所以 Flink 里面就默认支持了不少 sink,比如也支持 Kafka sink connector(FlinkKafkaProducer),那么这篇文章我们就讲讲如何将数据写入到 Kafka
by @zhisheng_tian 2019-01-11 00:11 分享 查看详情
《从0到1学习Flink》—— Flink 项目如何运行? (www.54tianzhisheng.cn)
之前写了不少 Flink 文章了,也有不少 demo,但是文章写的时候都是在本地直接运行 Main 类的 main 方法,其实 Flink 是支持在 UI 上上传 Flink Job 的 jar 包,然后运行得。最开始在第一篇 《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 中其实提到过了 Flink 自带的 UI 界面,今天我们就来看看如何将我们的项目打包在这里发布运行。

准备
编译打包
项目代码就拿我之前的文
by @zhisheng_tian 2019-01-11 00:10 分享 查看详情
《从0到1学习Flink》—— Flink 写入数据到 ElasticSearch (www.54tianzhisheng.cn)
前言
前面 FLink 的文章中我们已经介绍了说 Flink 已经有很多自带的 Connector。

1、《从0到1学习Flink》—— Data Source 介绍

2、《从0到1学习Flink》—— Data Sink 介绍

其中包括了 Source 和 Sink 的,后面我也讲了下如何自定义自己的 Source 和 Sink。

那么今天要做的事情是啥呢?就是介绍一下 Flink 自带的 ElasticSearch Connector,我们今天就用他来做 Sink,将 Kafka 中的数据经过 Flink 处理后然后存储到 ElasticSearch。

准备
安装 ElasticSearch,这里就忽略,自己找我以前的文章,建议安装 ElasticSearch 6.0 版本以上的,毕竟要跟上时代的节奏。

下面就讲解一下生产环境中如何使用 Elasticsearch Sink 以及一些注意点,及其内部实现机制。
by @zhisheng_tian 2019-01-11 00:10 分享 查看详情
《从0到1学习Flink》—— Flink 中几种 Time 详解 (www.54tianzhisheng.cn)
前言
Flink 在流程序中支持不同的 Time 概念,就比如有 Processing Time、Event Time 和 Ingestion Time。

下面我们一起来看看这几个 Time:

Processing Time
Processing Time 是指事件被处理时机器的系统时间。

当流程序在 Processing Time 上运行时,所有基于时间的操作(如时间窗口)将使用当时机器的系统时间。每小时 Processing Time 窗口将包括在系统时钟指示整个小时之间到达特定操作的所有事件。

例如,如果应用程序在上午 9:15 开始运行,则第一个每小时 Processing Time 窗口将包括在上午 9:15 到上午 10:00 之间处理的事件,下一个窗口将包括在上午 10:00 到 11:00 之间处理的事件。

Processing Time 是最简单的 “Time” 概念,不需要流和机器之间的协调,它提供了最好的性能和最低的延迟。但是,在分布式和异步的环境下,Processing Time 不能提供确定性,因为它容易受到事件到达系统的速度(例如从消息队列)、事件在系统内操作流动的速度以及中断的影响。
by @zhisheng_tian 2019-01-11 00:08 分享 查看详情
《从0到1学习Flink》—— 介绍Flink中的Stream Windows (www.54tianzhisheng.cn)
目前有许多数据分析的场景从批处理到流处理的演变, 虽然可以将批处理作为流处理的特殊情况来处理,但是分析无穷集的流数据通常需要思维方式的转变并且具有其自己的术语(例如,“windowing(窗口化)”、“at-least-once(至少一次)”、“exactly-once(只有一次)” )。

对于刚刚接触流处理的人来说,这种转变和新术语可能会非常混乱。 Apache Flink 是一个为生产环境而生的流处理器,具有易于使用的 API,可以用于定义高级流分析程序。

Flink 的 API 在数据流上具有非常灵活的窗口定义,使其在其他开源流处理框架中脱颖而出。

在这篇文章中,我们将讨论用于流处理的窗口的概念,介绍 Flink 的内置窗口,并解释它对自定义窗口语义的支持
by @zhisheng_tian 2019-01-10 23:55 分享 查看详情
《从0到1学习Flink》—— Flink Data transformation(转换) (www.54tianzhisheng.cn)
Flink 应用程序结构就是如上图所示:

1、Source: 数据源,Flink 在流处理和批处理上的 source 大概有 4 类:基于本地集合的 source、基于文件的 source、基于网络套接字的 source、自定义的 source。自定义的 source 常见的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,当然你也可以定义自己的 source。

2、Transformation:数据转换的各种操作,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,操作很多,可以将数据转换计算成你想要的数据。
by @zhisheng_tian 2019-01-10 23:54 分享 查看详情
《从0到1学习Flink》—— 如何自定义 Data Sink ? (www.54tianzhisheng.cn)
前篇文章 《从0到1学习Flink》—— Data Sink 介绍 介绍了 Flink Data Sink,也介绍了 Flink 自带的 Sink,那么如何自定义自己的 Sink 呢?这篇文章将写一个 demo 教大家将从 Kafka Source 的数据 Sink 到 MySQL 中去。

准备工作
我们先来看下 Flink 从 Kafka topic 中获取数据的 demo,首先你需要安装好了 FLink 和 Kafka 。

运行启动 Flink、Zookepeer、Kafka,
by @zhisheng_tian 2019-01-10 23:53 分享 查看详情
使用 Kotlin 做开发一个月后的感想 (mp.weixin.qq.com)
有一类程序员,自己根本没体验过的东西,看了几篇哗众取宠的博文自己也来嘲讽,我称之为云程序员。就比如 Kotlin,有人蹭热度写几篇类似“我为什么从 kotlin 又回到java”的博文,就把 kotlin 一通批判。有空看看这些蹭热度博文为啥不看看Android Developer 官网所有示例代码都是 kotlin 版本在前,java 版本在后呢?
by @code小生 2019-01-07 09:48 分享 查看详情
Android 仿网易云鲸云音效动效 (mp.weixin.qq.com)
最近网易云音乐出了一个叫鲸云音效东西,效果怎么样不是很清楚,但是播放界面还带了动效,这个就比较炫酷了,感觉比较有意思,所以也想自己做一个,其中一个我觉得比较好看的效果如下(动图的来源也比较有意思,后面会讲)
by @code小生 2019-01-07 09:47 分享 查看详情
Elasticsearch 最佳性能优化 (mp.weixin.qq.com)
在 CRUD 章节,我们已经知道 ES 的数据写入是如何操作的了。喜欢自己动手的读者可能已经迫不及待的自己写了程序开始往 ES 里写数据做测试。这时候大家会发现:程序的运行速度非常一般,即使 ES 服务运行在本机,一秒钟大概也就能写入几百条数据。

这种速度显然不是 ES 的极限。事实上,每条数据经过一次完整的 HTTP POST 请求和 ES indexing 是一种极大的性能浪费,为此,ES 设计了批量提交方式。在数据读取方面,叫 mget 接口,在数据变更方面,叫 bulk 接口。mget 一般常用于搜索时 ES 节点之间批量获取中间结果集,对于 Elastic Stack 用户,更常见到的是 bulk 接口。
by @zhisheng_tian 2019-01-06 22:11 分享 查看详情
ElasticSearch 官方调优指南翻译 (mp.weixin.qq.com)
ES 发布时带有的默认值,可为 ES 的开箱即用带来很好的体验。全文搜索、高亮、聚合、索引文档 等功能无需用户修改即可使用,当你更清楚的知道你想如何使用 ES 后,你可以作很多的优化以提高你的用例的性能,下面的内容告诉你 你应该/不应该 修改哪些配置。
by @zhisheng_tian 2019-01-06 22:10 分享 查看详情
Quorum-企业级分布式账本和智能合约平台 (insights.thoughtworks.cn)
在区块链行业中,Ethereum有较高的知名度和生态成熟度,被很多人当成区块链/去中心化应用开发的首选平台。然而Ethereum是针对公有链进行设计,虽然可以单独部署私有网络,但很多特点不适合企业联盟链场景。因此一些团队选择基于Ethereum开发适合企业的区块链平台,从而充分利用Ethereum在社区和工具链等方面的优势。
by @ThoughtWorks 2019-01-11 11:15 分享 查看详情
TOP 100 大前端超棒精选列表 (www.jeffjade.com)
正值如今这信息爆炸的年代,如何能从中汲取精华,于有限时间内,成为更高效的学习者,从而在激烈的竞争中更具优势,是当下每个人或企业都该思虑的问题;先前创立的 Web 应用:「倾城之链」,就是为改善这一困扰的探索尝试,具体可参见关于 | 「倾城之链」。这份为前端开发者而精心维护的超棒列表,就是为解决信息过剩问题的具体实践:旨在为前端学习,技能提升,视野扩展,资料查找等提供价值性参考。目前选择性收录优质仓库近百个,涉及 Web 前端、后台、流行技术以及其他魔力清单。
by @杨琼璞 2018-12-21 21:27 分享 查看详情