05 2019 档案
摘要:阿里Canal项目请先了解:canal 考虑可能binlog大批量变更,如果直接通过Canal订阅binlog变动,会造成CanalClient会瞬间爆掉。为了解决这个问题,我们可以引入kafka做一层封装,可以解决这个问题。 公司实现一套框架,拿来分享大家。感谢原作者. 1. 服务端-封装Cana
阅读全文
摘要:用过Scala的模式匹配,感觉Java的弱爆了。Scala几乎可以匹配任何数据类型,如果默认的不能满足你的要求,你可以自定义模式匹配。 介绍Scala的模式匹配前,我们先了解清楚unapply()与unapplySeq()两个方法: 名字叫做unapply和unapplySeq的方法在Scala里也
阅读全文
摘要:Simplified Http This is a fully featured http client for Scala which wraps java.net.HttpURLConnection Features: Zero dependencies Cross compiled for S
阅读全文
摘要:我以前的博客(Java Scala获取注解的类信息)介绍过通过Reflections工具通过使用特定注解的类的信息,其实本工具也可以获取接口,抽象类,类等的所有子类信息。使用方法如下: 下面实例来说明如何使用的: 定义接口: 定义子类1: 定义子类2: 测试获取所有Base的子类信息: 结果输出如下
阅读全文
摘要:要想获取使用指定注解的类信息,可借助工具: 此工具将Java反射进行了高级封装,Reflections 通过扫描 classpath,索引元数据,允许在运行时查询这些元数据,也可以保存收集项目中多个模块的元数据信息。 使用 Reflections 可以查询以下元数据信息: Reflections 依
阅读全文
摘要:通常我们需要枚举参数不止两个,Scala提供的枚举类最多定义两个参数:id:Int与name:String。不能满足我们通常要求。 如下enumeratum包可以满足我们需求,可以定义任意参数。 引入如下包 定义复杂枚举:
阅读全文
摘要:翻译自:STRING INTERPOLATION 简介 自2.10.0版本开始,Scala提供了一种新的机制来根据数据生成字符串:字符串插值。字符串插值允许使用者将变量引用直接插入处理过的字面字符中。如下例: val name="James" println(s"Hello,$name")//Hel
阅读全文
摘要:Quasiquotes are a neat notation that lets you manipulate Scala syntax trees with ease: scala> val tree = q"i am { a quasiquote }" tree: universe.Tree
阅读全文
摘要:最近一直在学习Scala语言,偶然发现其Parser模块功能强大,乃为BNF而设计。啥是BNF,读大学的时候在课本上见过,那时候只觉得这个东西太深奥。没想到所有的计算机语言都是基于BNF而定义的一套规范。词法,语法,词法,语法。。。下面看看解析C++类声明的一个简单例子吧。 class CPlusP
阅读全文
摘要:平台公式及翻译后的SparkSQL 平台公式的样子如下所示: 这里面字段值"邢おb7肮α䵵薇"为这个的目的是为了测试各种字符集是否都能匹配满足。那么对应的SparkSQL应该是这个样子的,由于是使用的Hive on Spark,因而长得跟Oracle的SQL语句差不多: 总体而言比较简单,因为我只是
阅读全文
摘要:BNF 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。 在BNF中,双引号中的字("word")代表着这些
阅读全文
摘要:我们知道,scala编译器会将scala代码编译成JVM字节码,编译过程中会擦除scala特有的一些类型信息,在scala-2.10以前,只能在scala中利用java的反射机制,但是通过java反射机制得到的是只是擦除后的类型信息,并不包括scala的一些特定类型信息。从scala-2.10起,s
阅读全文