上一页 1 2 3 4 5 6 ··· 11 下一页
摘要: 一、编程规约(一) 命名风格1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例: _name / __name / $name / name_ / name$ / name__2. 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 阅读全文
posted @ 2019-06-24 19:23 BarryW 阅读(1086) 评论(0) 推荐(0) 编辑
摘要: 引言 我们来看一下几类在程序员成长、发展的常见问题,如果你或多或少存在一些,那么恭喜你,这篇文章值得你仔细往下看了: 你自认为付出了跟别人同样的努力,但是你的成长确实更慢一些,比如学得比别人慢,排查问题比别人慢,出方案老是有漏洞等等; 你自认为付出了跟别人同样的努力,但是你的成长确实更慢一些,比如学 阅读全文
posted @ 2019-06-22 23:59 BarryW 阅读(1633) 评论(4) 推荐(4) 编辑
摘要: 在服务化之前,业务通常都是本地API调用,本地方法调用性能损耗较小。服务化之后,服务提供者和消费者之间采用远程网络通信,增加了额外的性能损耗,业务调用的时延将增大,同时由于网络闪断等原因,分布式调用失败的风险也增大。如果服务框架没有足够的容错能力,业务失败率将会大幅提升。 除了性能、可靠性等问题,跨 阅读全文
posted @ 2019-06-08 00:25 BarryW 阅读(3132) 评论(0) 推荐(0) 编辑
摘要: 我的上一篇博客介绍了什么是灰度发布 灰度发布 本文将介绍分布式框架如何做到灰度发布。 在介绍具体实现步骤前,让我们先看下分布式框架下实现灰度发布的实现结构图: 一、灰度策略及规则定义 1. 通常灰度策略 1.支持根据 服务名(serviceName),方法名(methodName),版本号(vers 阅读全文
posted @ 2019-06-07 23:43 BarryW 阅读(925) 评论(0) 推荐(0) 编辑
摘要: 1.什么是灰度发布灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初 阅读全文
posted @ 2019-06-07 22:57 BarryW 阅读(2339) 评论(0) 推荐(0) 编辑
摘要: 阿里Canal项目请先了解:canal 考虑可能binlog大批量变更,如果直接通过Canal订阅binlog变动,会造成CanalClient会瞬间爆掉。为了解决这个问题,我们可以引入kafka做一层封装,可以解决这个问题。 公司实现一套框架,拿来分享大家。感谢原作者. 1. 服务端-封装Cana 阅读全文
posted @ 2019-05-11 23:53 BarryW 阅读(3571) 评论(0) 推荐(0) 编辑
摘要: 用过Scala的模式匹配,感觉Java的弱爆了。Scala几乎可以匹配任何数据类型,如果默认的不能满足你的要求,你可以自定义模式匹配。 介绍Scala的模式匹配前,我们先了解清楚unapply()与unapplySeq()两个方法: 名字叫做unapply和unapplySeq的方法在Scala里也 阅读全文
posted @ 2019-05-11 23:08 BarryW 阅读(2970) 评论(0) 推荐(0) 编辑
摘要: Simplified Http This is a fully featured http client for Scala which wraps java.net.HttpURLConnection Features: Zero dependencies Cross compiled for S 阅读全文
posted @ 2019-05-11 22:14 BarryW 阅读(12088) 评论(0) 推荐(0) 编辑
摘要: 我以前的博客(Java Scala获取注解的类信息)介绍过通过Reflections工具通过使用特定注解的类的信息,其实本工具也可以获取接口,抽象类,类等的所有子类信息。使用方法如下: 下面实例来说明如何使用的: 定义接口: 定义子类1: 定义子类2: 测试获取所有Base的子类信息: 结果输出如下 阅读全文
posted @ 2019-05-04 22:29 BarryW 阅读(16214) 评论(0) 推荐(0) 编辑
摘要: 要想获取使用指定注解的类信息,可借助工具: 此工具将Java反射进行了高级封装,Reflections 通过扫描 classpath,索引元数据,允许在运行时查询这些元数据,也可以保存收集项目中多个模块的元数据信息。 使用 Reflections 可以查询以下元数据信息: Reflections 依 阅读全文
posted @ 2019-05-04 21:59 BarryW 阅读(3427) 评论(0) 推荐(0) 编辑
摘要: 通常我们需要枚举参数不止两个,Scala提供的枚举类最多定义两个参数:id:Int与name:String。不能满足我们通常要求。 如下enumeratum包可以满足我们需求,可以定义任意参数。 引入如下包 定义复杂枚举: 阅读全文
posted @ 2019-05-04 09:28 BarryW 阅读(1876) 评论(1) 推荐(0) 编辑
摘要: 翻译自:STRING INTERPOLATION 简介 自2.10.0版本开始,Scala提供了一种新的机制来根据数据生成字符串:字符串插值。字符串插值允许使用者将变量引用直接插入处理过的字面字符中。如下例: val name="James" println(s"Hello,$name")//Hel 阅读全文
posted @ 2019-05-03 22:55 BarryW 阅读(1826) 评论(1) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2019-05-03 11:04 BarryW 阅读(1296) 评论(0) 推荐(0) 编辑
摘要: 最近一直在学习Scala语言,偶然发现其Parser模块功能强大,乃为BNF而设计。啥是BNF,读大学的时候在课本上见过,那时候只觉得这个东西太深奥。没想到所有的计算机语言都是基于BNF而定义的一套规范。词法,语法,词法,语法。。。下面看看解析C++类声明的一个简单例子吧。 class CPlusP 阅读全文
posted @ 2019-05-02 23:57 BarryW 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 平台公式及翻译后的SparkSQL 平台公式的样子如下所示: 这里面字段值"邢おb7肮α䵵薇"为这个的目的是为了测试各种字符集是否都能匹配满足。那么对应的SparkSQL应该是这个样子的,由于是使用的Hive on Spark,因而长得跟Oracle的SQL语句差不多: 总体而言比较简单,因为我只是 阅读全文
posted @ 2019-05-02 23:54 BarryW 阅读(816) 评论(0) 推荐(0) 编辑
摘要: BNF 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。 在BNF中,双引号中的字("word")代表着这些 阅读全文
posted @ 2019-05-02 23:41 BarryW 阅读(1587) 评论(0) 推荐(0) 编辑
摘要: 我们知道,scala编译器会将scala代码编译成JVM字节码,编译过程中会擦除scala特有的一些类型信息,在scala-2.10以前,只能在scala中利用java的反射机制,但是通过java反射机制得到的是只是擦除后的类型信息,并不包括scala的一些特定类型信息。从scala-2.10起,s 阅读全文
posted @ 2019-05-02 23:00 BarryW 阅读(1388) 评论(0) 推荐(0) 编辑
摘要: 本文详细地总结了Scala枚举的几种实现方式,对我们更好地进行函数式编程有很好地指导和帮助。 Scala 枚举示例和特性 枚举(Enumerations)是一种语言特性,对于建模有限的实体集来说特别有用。一个经典的例子是将工作日建模为一个枚举:每个七天都有一个值。Scala和许多其他语言一样,提供了 阅读全文
posted @ 2019-04-29 17:15 BarryW 阅读(3257) 评论(0) 推荐(0) 编辑
摘要: 在Java开发中,经常会有一个需求,将一个 Bean 复制到另外一个 Bean,尤其是在后台分层的场景下,在不同的层之间传递信息,经常需要进行 这样的一个对象复制工作,类似于: 因为这样的代码过于冗长,大量的这样的代码,大大的提升了代码的复杂性,不仅工作无趣,而且很容易遗漏,代码可阅读性差。万能的程 阅读全文
posted @ 2019-04-27 17:22 BarryW 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 在上一篇中,我们示范了使用macro来重写 Log 的 debug/info 方法,并大致的介绍了 macro 的基本语法、基本使用方法、以及macro背后的一些概念, 如AST等。那么,本篇中,我们将结合作者在 scala-sql 项目中的一些实际应用,向你展示 macro 可以用来做什么?怎么用 阅读全文
posted @ 2019-04-27 17:19 BarryW 阅读(899) 评论(0) 推荐(0) 编辑
摘要: 优化的日志方式 在这个例子中: 我们通过隐式转换的方式,为 org.slf4j.Logger 扩展了 DEBUG 方法,使用上与 原有的debug 一致,我们期望新的 DEBUG 匹配如下的模式: 我们通过隐式转换的方式,为 org.slf4j.Logger 扩展了 DEBUG 方法,使用上与 原有 阅读全文
posted @ 2019-04-27 17:17 BarryW 阅读(1969) 评论(2) 推荐(0) 编辑
摘要: 在Lisp语言中,macro是一个神器,可以“动态的生成代码”,然后被执行,这种方式给到Lisp无限的表达能力。除Lisp之外,很少有语言支持Macro这个特性,我记得 GWT之中曾经有一个类似的Generator的概念,可以在编译期间提供一定的代码生成能力(GWT Project),很多GWT的高 阅读全文
posted @ 2019-04-27 17:10 BarryW 阅读(2853) 评论(0) 推荐(0) 编辑
摘要: 从本质上说,每一个企业都可以抽象为业务循环、管理循环和信息循环。在这三大循环中,信息循环是连接业务循环和管理循环的重要纽带,为管理循环提供决策支持。而信息循环的高效运转,则需要信息系统作为重要支撑。作为承载业务流并实现业务数据自动传递和集成的使能器,企业信息系统的目标是实现端到端的业务流覆盖,承载所 阅读全文
posted @ 2019-04-27 16:57 BarryW 阅读(9652) 评论(0) 推荐(2) 编辑
摘要: 在互联网行业中只要涉及到支付,必然就会有对账的需求,几乎所有互联网公司的业务中多多少少的都会涉及到支付,大一点的公司甚至都标配有了自己的第三方支付公司,因此对账具有普遍性。对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线。在大多数的互联网公司中,一般都会有独立的对账系统来处理, 阅读全文
posted @ 2019-04-27 16:48 BarryW 阅读(10831) 评论(1) 推荐(0) 编辑
摘要: 开始认识“认知升级” 第一次:从文章中看到认知升级,认为认知升级是洗脑,是鸡汤,我对此不屑一顾,道理谁都懂,大部分人还不是过得一样,没啥区别。 第二次:从会场里听到认知升级,一个活人站在那里讲认知升级,觉得认知升级有点意思,开始慢慢去理解认知升级,但还是不懂认知升级的价值。 第三次:从实践中觉知认知 阅读全文
posted @ 2019-04-27 16:40 BarryW 阅读(1171) 评论(0) 推荐(2) 编辑
摘要: 很多企业都将促进业务与科技的深度融合作为发展战略,也都想学学阿里的中台战略,其实,除了中台战略之外,基于企业级业务架构设计来实现组件化开发也是企业数字化转型的优选路径,是弥合业务与技术之间“数字鸿沟”的有效手段。未来,业务不再仅仅是业务,技术也不再仅仅是技术,谁先实现思维方式的改进,谁能更好地联动整 阅读全文
posted @ 2019-04-27 16:30 BarryW 阅读(2665) 评论(0) 推荐(0) 编辑
摘要: 1 概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情。 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格局 。 不同的客户端产生了不同的用户使用场景,这些场景: 综上所述,它们的身份认证方式也存在一定的区别。 本文将使用一定的篇幅对这些场景进行一些 阅读全文
posted @ 2019-04-27 16:27 BarryW 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 前情回顾 了解Scala反射介绍了反射的基本概念以及运行时反射的用法, 同时简单的介绍了一下编译原理知识, 其中我感觉最为绕的地方, 就属泛型的几种使用方式了. 而最抽象的概念, 就是对于符号和抽象树的这两个概念的理解. 现在回顾一下泛型的几种进阶用法: 上界 <: 下界 >: 视界 <% 边界 : 阅读全文
posted @ 2019-04-21 21:21 BarryW 阅读(2739) 评论(2) 推荐(0) 编辑
摘要: 本篇文章主要让大家理解什么是Scala的反射, 以及反射的分类, 反射的一些术语概念和一些简单的反射例子. 什么是反射 我们知道, Scala是基于JVM的语言, Scala编译器会将Scala代码编译成JVM字节码, 而JVM编译过程中会擦除一些泛型信息, 这就叫类型擦除(type-erasure 阅读全文
posted @ 2019-04-21 21:18 BarryW 阅读(6998) 评论(0) 推荐(0) 编辑
摘要: 整体介绍 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。Java平台的Scala于2003年底/2004年初发布 阅读全文
posted @ 2019-04-21 21:14 BarryW 阅读(695) 评论(0) 推荐(0) 编辑
摘要: 什么是隐式转换 我们经常引入第三方库,但当我们想要扩展新功能的时候通常是很不方便的,因为我们不能直接修改其代码。scala提供了隐式转换机制和隐式参数帮我们解决诸如这样的问题。 Scala中的隐式转换是一种非常强大的代码查找机制。当函数、构造器调用缺少参数或者某一实例调用了其他类型的方法导致编译不通 阅读全文
posted @ 2019-04-21 20:10 BarryW 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 简介 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如: 准备 为了接下来方便演示 EXPLAIN 阅读全文
posted @ 2019-04-20 17:38 BarryW 阅读(713) 评论(0) 推荐(0) 编辑
摘要: 原文地址 译者:许巧辉 校对:梁海舰 Java是一门安全的编程语言,防止程序员犯很多愚蠢的错误,它们大部分是基于内存管理的。但是,有一种方式可以有意的执行一些不安全、容易犯错的操作,那就是使用Unsafe类。 本文是sun.misc.Unsafe公共API的简要概述,及其一些有趣的用法。 Unsaf 阅读全文
posted @ 2019-04-20 17:17 BarryW 阅读(1775) 评论(0) 推荐(0) 编辑
摘要: Hash函数是指把一个大范围映射到一个小范围。把大范围映射到一个小范围的目的往往是为了节省空间,使得数据容易保存。 除此以外,Hash函数往往应用于查找上。所以,在考虑使用Hash函数之前,需要明白它的几个限制: 1. Hash的主要原理就是把大范围映射到小范围;所以,你输入的实际值的个数必须和小范 阅读全文
posted @ 2019-04-20 09:09 BarryW 阅读(24002) 评论(0) 推荐(1) 编辑
摘要: MaxCompute 是阿里EB级计算平台,经过十年磨砺,它成为阿里巴巴集团数据中台的计算核心和阿里云大数据的基础服务。去年MaxCompute 做了哪些工作,这些工作背后的原因是什么?大数据市场进入普惠+红海的新阶段,如何与生态发展共赢?人工智能进入井喷阶段,如何支持与借力?本文从过去一年的总结, 阅读全文
posted @ 2019-04-20 08:36 BarryW 阅读(9531) 评论(1) 推荐(0) 编辑
摘要: 背景 互联网公司的技术团队管理通常分为2个方向:技术管理和团队管理,互联网公司的技术TL与传统软件公司的PM还是有很大的区别,传统软件公司的PM更多注重于对项目的管理包括项目任务拆解、项目进度以及风险等。对于多数互联网公司而言,技术TL更多的职责不再局限于项目角度,而是对业务与技术都要有深入的了解, 阅读全文
posted @ 2019-04-20 08:17 BarryW 阅读(3151) 评论(0) 推荐(1) 编辑
摘要: 1. 不用var。var是可以被不断修改的,而val是不能被修改的。使用val而不是var能让你的程序更强壮,bug更少,更好调试,更容易测试,在并发条件下,更容易调优而获得更好的性能。数学证明我们不用var是没问题的。2. 不用mutable的collection,和var同样的道理。3. 不用n 阅读全文
posted @ 2019-04-18 19:54 BarryW 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 1. x.purchaseIntax.getOrElse(BigDecimal(0.00)) 可以直接写成 x.purchaseIntax.getOrElse(0)自动转换的 2. srcDataList.foldLeft(0.0)((s, v) => s+v.firstCostTax.toDoub 阅读全文
posted @ 2019-04-18 19:38 BarryW 阅读(941) 评论(0) 推荐(0) 编辑
摘要: 首先用自己的钉钉账号注册一个企业: https://oa.dingtalk.com/index.htm 一、获取应用APPKEY及APPSECRET方法: 1.登录钉钉开放平台创建应用: https://open-dev.dingtalk.com 2.设置外网IP地址: 3.打开创建应用获取APPK 阅读全文
posted @ 2019-04-16 13:53 BarryW 阅读(19983) 评论(1) 推荐(1) 编辑
摘要: 大家可能都听说说 Java 中的并发包,如果想要读懂 Java 中的并发包,其核心就是要先读懂 CAS 机制,因为 CAS 可以说是并发包的底层实现原理。 今天就带大家读懂 CAS 是如何保证操作的原子性的,以及 Java8 对 CAS 进行了哪些优化。 synchronized:大材小用 我们先来 阅读全文
posted @ 2019-04-13 11:08 BarryW 阅读(2477) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 11 下一页