2022-07-29
c++ 11 的单例模式

概述在开发过程中,Singleton 是一个非常常用的模式,例如,系统配置、内存管理等全局唯一的实例都需要使用单例。在 C++ 11 之前,实现一个线程安全的单例需要一些特别的 trick。本文介绍 C++ 11 之后的实现方式,非常的简单。实现实现的关键点: 构造函数设置为 private 拷贝和移动的构造...

Read More
 2019-09-11
流式计算中的日志时间

概述随着 Hadoop 生态的快速发展,海量数据的处理的方法已经非常成熟并且丰富了,但是这些处理方法一般都是批处理方式,也就是输入的数据是确定的,例如1小时的日志,在日志已经准备好之后再开始计算。当今产品业务的快速发展,在很多场景(反作弊等)下对数据处理的时效性提出了新的要求,要求更高的时效性。于是,流式计算就逐...

Read More
 2019-08-08
从 MapReduce 到 Dataflow 看大数据发展趋势

正文转眼已经工作了6年多了,一直从事大数据相关的工作,对整个大数据发展的趋势有个人比较浅显的理解。本文主要从Google的几篇论文来简单看一下这些年大数据的发展历程,梳理一下技术发展的脉络。Google是最早提出大数据概念,并且横空出世了三驾马车(MapReduce、GFS、BigTable),MapReduce...

Read More
 2019-03-29
泰勒展开式的简单使用

概述数学是笔者的短板,最近一直在积极恶补数学,重新学习了微积分中的泰勒展开式,对其有了一点简单的理解,所以记录在这里。简单介绍泰勒展开式是一个在函数某点对函数进行近似的方法,在几何图形上来理解就是泰勒展开式的曲线与原函数的曲线的拟合。展开式的项是无穷多的,随着项的增加拟合的程度就越好。看下面的图是 e^x 与其4...

Read More
 2019-01-16
Antlr4 简介

简介Antlr4 是一款强大的语法生成器工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。基本上是当前 Java 语言中使用最为广泛的语法生成器工具。Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询;Hadoop生态系统中的Hive、Pig、数据仓库和分析系统所使用的语言都用到了A...

Read More
 2018-12-29
Scala implicit 使用简介

前言在 Scala 中有一个强大的语言特性 implicit,提供了非常特殊并且强大的隐式转换功能。说它特殊,主要是因为在笔者目前接触到的语言中,也没有发现类似的语法,对于笔者来说这个特性非常的神秘。功能强大是因为这个特性确实好用,笔者在实际项目中进行了简单的尝试,发现对简化代码非常有帮助,可以替代默认参数,并且...

Read More
 2018-09-28
Scala 的单测框架和示例(JUnit4 & ScalaTest)

随着下一代大数据计算框架 Spark 的流行,Scala 也受到了越来越多的关注。在 Scala 开发中,免不了需要编写单元测试,这样可以提升开发效率,方便地进行回归测试。在实际业务开发中,业务需求变更会引入大量的逻辑,通过单元测试可以很好地保障现有代码的逻辑依然符合预期,前提是单元测试的 case 覆盖较为全面。

Read More
 2018-09-16
Spark 2.1 UDF length 异常问题分析(UTF8String numChars bug)

引子本文记录了一次笔者对 Spark SQL 使用中碰到的问题的分析,使用的 Spark 版本为 2.1。本文描述的是一个已经在新版本(2.2及以后)中修复的问题,记录了整个问题的代码分析过程,希望可以对碰到类似的问题的朋友一点启发。在分析过程中,也窥视了 Spark 的一些内部实现。基本结论:由于 UTF8St...

Read More
 2018-08-17
Java 中使用无符号整型(unsigned int)的使用方法

背景计算机科班出身大多学过离散数学,或者理工类专业也大多学习过 C 或 C++ 语言,从中我们了解到基本类型的整形有 short、int、long 等,还分别有无符号(unsigned)和带符号(signed)的,但是不是所有语言都支持无符号。Java 就是这样一门语言。但是,在工程实践中,我们难免会有一些场合会...

Read More
 2018-07-11
Python 日志配置总结

日志是程序调试的利器,通过日志来解析获取数据,线上问题通过日志分析和定位等,用途多种多样。Python 作为当前常用的一门开发语言,国内很多开发者对其的使用极其粗糙,写法较为随意,受开发者本身熟悉的语言有关,会参入较多其他语言的写法。

Read More
 2018-06-05
Spark 使用小结

简介本文主要介绍 Spark Application 和 Spark SQL 中比较常用的一些配置,一来方便个人检索和补充,二来希望可以帮到别人。本文不求全,只求介绍部分个人使用过程中学习到的经验和方法,本文主要以 Spark 2.1 为例,Spark 目前发展还很快,本文中的一些方法可能很快就不适用了。额外说明...

Read More
 2016-12-16
Python 2 常见陷阱

Python 语言非常强大,但是也有一些疑惑的地方,非常容易困扰新手,甚至老手。所以,对一些常见易错的地方进行总结学习非常有必要。本文大部分从参考资料中收集,也有从笔者自身实践中发现的问题,希望可以在大家碰到类似问题的时候可以从容对待。

Read More
 2016-03-29
Hive 列存储简介

背景传统的 RDBMS 大多使用的行存储方式,现如今随着大数据技术的发展,对于存储的要求越来越高,列存储相对有自己明显的优势:列数据相对来说比较类似,压缩比更高;一般的查询只涉及几列,列存储的查询性能也更高;可以方便地新增列等。在某些场景下,选择列存储是非常不错的选择,从节省存储的角度来说就非常吸引人了。目前,比...

Read More
 2016-02-20
对技术债务的一些理解

简介我们先来看看这个概念:技术债务是由 Ward Cunningham 首次提出的,是一个术语,指的是开发团队在设计或架构选型时从短期效应的角度选择了一个易于实现的方案,但从长远来看,这种方案会带来更消极的影响,亦即开发团队所欠的债务。这个债务和金融债务非常类似,如果这个项目一直持续下去,这种债务会不断地产生,如...

Read More
 2015-11-21
Python 修饰器(Decorator)简介

简介Python 的修饰器(Decorator)是一种非常便捷的修改函数的方式,不影响原函数的定义而对函数进行一些额外的封装,有点类似 AOP(Aspect Oriented Programming),增加一些小功能却不侵入原有代码,非常简洁强大。在实际使用中,常见的使用场景有日志、异常处理、计时和权限等,在很多...

Read More
 2015-10-30
编写你自己的 Python C 扩展(Extending Python)

前言Python 是一门简单强大的编程语言,非常灵活,可以极大地提升程序员的编程效率。但是,Python 本身的灵活带来了运行效率低,内存占用相对较大的问题,这限制了 Python 在某些场景下的应用。Python 的官方实现 CPython 本身提供了一个扩展机制,可以方便地编写扩展来提升效率,本文将通过一个示...

Read More
 2018-07-11
Python 日志配置总结

日志是程序调试的利器,通过日志来解析获取数据,线上问题通过日志分析和定位等,用途多种多样。Python 作为当前常用的一门开发语言,国内很多开发者对其的使用极其粗糙,写法较为随意,受开发者本身熟悉的语言有关,会参入较多其他语言的写法。

Read More
 2016-12-16
Python 2 常见陷阱

Python 语言非常强大,但是也有一些疑惑的地方,非常容易困扰新手,甚至老手。所以,对一些常见易错的地方进行总结学习非常有必要。本文大部分从参考资料中收集,也有从笔者自身实践中发现的问题,希望可以在大家碰到类似问题的时候可以从容对待。

Read More
 2015-11-21
Python 修饰器(Decorator)简介

简介Python 的修饰器(Decorator)是一种非常便捷的修改函数的方式,不影响原函数的定义而对函数进行一些额外的封装,有点类似 AOP(Aspect Oriented Programming),增加一些小功能却不侵入原有代码,非常简洁强大。在实际使用中,常见的使用场景有日志、异常处理、计时和权限等,在很多...

Read More
 2015-10-30
编写你自己的 Python C 扩展(Extending Python)

前言Python 是一门简单强大的编程语言,非常灵活,可以极大地提升程序员的编程效率。但是,Python 本身的灵活带来了运行效率低,内存占用相对较大的问题,这限制了 Python 在某些场景下的应用。Python 的官方实现 CPython 本身提供了一个扩展机制,可以方便地编写扩展来提升效率,本文将通过一个示...

Read More
 2016-02-20
对技术债务的一些理解

简介我们先来看看这个概念:技术债务是由 Ward Cunningham 首次提出的,是一个术语,指的是开发团队在设计或架构选型时从短期效应的角度选择了一个易于实现的方案,但从长远来看,这种方案会带来更消极的影响,亦即开发团队所欠的债务。这个债务和金融债务非常类似,如果这个项目一直持续下去,这种债务会不断地产生,如...

Read More
 2016-03-29
Hive 列存储简介

背景传统的 RDBMS 大多使用的行存储方式,现如今随着大数据技术的发展,对于存储的要求越来越高,列存储相对有自己明显的优势:列数据相对来说比较类似,压缩比更高;一般的查询只涉及几列,列存储的查询性能也更高;可以方便地新增列等。在某些场景下,选择列存储是非常不错的选择,从节省存储的角度来说就非常吸引人了。目前,比...

Read More
 2019-01-16
Antlr4 简介

简介Antlr4 是一款强大的语法生成器工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。基本上是当前 Java 语言中使用最为广泛的语法生成器工具。Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询;Hadoop生态系统中的Hive、Pig、数据仓库和分析系统所使用的语言都用到了A...

Read More
 2018-08-17
Java 中使用无符号整型(unsigned int)的使用方法

背景计算机科班出身大多学过离散数学,或者理工类专业也大多学习过 C 或 C++ 语言,从中我们了解到基本类型的整形有 short、int、long 等,还分别有无符号(unsigned)和带符号(signed)的,但是不是所有语言都支持无符号。Java 就是这样一门语言。但是,在工程实践中,我们难免会有一些场合会...

Read More
 2018-09-16
Spark 2.1 UDF length 异常问题分析(UTF8String numChars bug)

引子本文记录了一次笔者对 Spark SQL 使用中碰到的问题的分析,使用的 Spark 版本为 2.1。本文描述的是一个已经在新版本(2.2及以后)中修复的问题,记录了整个问题的代码分析过程,希望可以对碰到类似的问题的朋友一点启发。在分析过程中,也窥视了 Spark 的一些内部实现。基本结论:由于 UTF8St...

Read More
 2018-06-05
Spark 使用小结

简介本文主要介绍 Spark Application 和 Spark SQL 中比较常用的一些配置,一来方便个人检索和补充,二来希望可以帮到别人。本文不求全,只求介绍部分个人使用过程中学习到的经验和方法,本文主要以 Spark 2.1 为例,Spark 目前发展还很快,本文中的一些方法可能很快就不适用了。额外说明...

Read More
 2018-12-29
Scala implicit 使用简介

前言在 Scala 中有一个强大的语言特性 implicit,提供了非常特殊并且强大的隐式转换功能。说它特殊,主要是因为在笔者目前接触到的语言中,也没有发现类似的语法,对于笔者来说这个特性非常的神秘。功能强大是因为这个特性确实好用,笔者在实际项目中进行了简单的尝试,发现对简化代码非常有帮助,可以替代默认参数,并且...

Read More
 2018-09-28
Scala 的单测框架和示例(JUnit4 & ScalaTest)

随着下一代大数据计算框架 Spark 的流行,Scala 也受到了越来越多的关注。在 Scala 开发中,免不了需要编写单元测试,这样可以提升开发效率,方便地进行回归测试。在实际业务开发中,业务需求变更会引入大量的逻辑,通过单元测试可以很好地保障现有代码的逻辑依然符合预期,前提是单元测试的 case 覆盖较为全面。

Read More
 2019-03-29
泰勒展开式的简单使用

概述数学是笔者的短板,最近一直在积极恶补数学,重新学习了微积分中的泰勒展开式,对其有了一点简单的理解,所以记录在这里。简单介绍泰勒展开式是一个在函数某点对函数进行近似的方法,在几何图形上来理解就是泰勒展开式的曲线与原函数的曲线的拟合。展开式的项是无穷多的,随着项的增加拟合的程度就越好。看下面的图是 e^x 与其4...

Read More
 2019-09-11
流式计算中的日志时间

概述随着 Hadoop 生态的快速发展,海量数据的处理的方法已经非常成熟并且丰富了,但是这些处理方法一般都是批处理方式,也就是输入的数据是确定的,例如1小时的日志,在日志已经准备好之后再开始计算。当今产品业务的快速发展,在很多场景(反作弊等)下对数据处理的时效性提出了新的要求,要求更高的时效性。于是,流式计算就逐...

Read More
 2019-08-08
从 MapReduce 到 Dataflow 看大数据发展趋势

正文转眼已经工作了6年多了,一直从事大数据相关的工作,对整个大数据发展的趋势有个人比较浅显的理解。本文主要从Google的几篇论文来简单看一下这些年大数据的发展历程,梳理一下技术发展的脉络。Google是最早提出大数据概念,并且横空出世了三驾马车(MapReduce、GFS、BigTable),MapReduce...

Read More
 2022-07-29
c++ 11 的单例模式

概述在开发过程中,Singleton 是一个非常常用的模式,例如,系统配置、内存管理等全局唯一的实例都需要使用单例。在 C++ 11 之前,实现一个线程安全的单例需要一些特别的 trick。本文介绍 C++ 11 之后的实现方式,非常的简单。实现实现的关键点: 构造函数设置为 private 拷贝和移动的构造...

Read More