2019-06-06 Java语法糖

       语法糖并不是Java独有的概念,而是一个计算机术语,先来看看百度百科的释义:

语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。

Syntactic Suger


       Java语言可以支持某些关键字或者语法的使用,但在编译后的字节码中,却看不到这些代码的痕迹。语法糖可以在性能无损的情况下,提高编程的效率,增加代码可读性,几乎所有的现代编程语言都含有语法糖成分。今天来简单回顾一下Java语言截止至今所包含的语法糖。 注:必须显示指定vm启动参数-ea或者-enableassertions,才可以让assert生效:

 
//以下代码为命令行启动java的范例,各个IDE也有相应修改参数的地方,这里不再赘述

java -ea Main
java -enableassertions Main

阅读全文

2016-08-14 Java的历史

       从第一代Java 1.0版本的发布至今,已有接近21年的时间了。21年里,计算机及互联网领域,出现了行业红利,出现了泡沫,出现了危机。伴随着行业起伏的大浪潮,同样出现了许许多多的市值千亿美金级别的软件、互联网公司。

       截止至目前,最新版本的Java 8的体系架构如下图所示:

Java8_structure

       接下来,从1991年~2000年(Java的古代)、2002年~2006年(Java 的近代)、2006年至今(Java的现代)3个时间段,简单介绍一下Java语言诞生至今的重要时刻的时间线。

阅读全文

2016-07-15 Java历史开篇语

       见过不少技术团队的leader,写过多年的业务,做了管理岗。说好听点叫业务,难听点就是增删改查,顶多加上mq、缓存、rpc之类的。

       如果在一家公司做了多年,晋升做管理,确实无可厚非,因为这位管理者对本公司的业务和技术架构的演变都非常熟悉。怕就怕在跳到了其他公司做管理,业务背景不同,技术架构又不适用,之前积累的深厚经验就大打折扣了。

Java

阅读全文

2016-07-11 项目总结-2016年07月11日

关于数据同步

同步流程异步化是提升程序响应、服务解耦的一个非常常用的手段。而对于某些业务来说,异步是唯一的选择,比如支付业务。当拿到某个订单的交易结果时,该结果并不代表最终的支付结果,而支付公司会通过回调或者由调用方轮询访问接口获取真实的支付结果。

笔者所涉及的项目中,同样涉及到“交易——对账——数据”这类不能实时获得数据的问题。用户的操作调用合作方的接口产生了交易之后,新的交易数据生成在合作方的数据库里(即使是合作方,也不会实时得到支付结果,最终会与银行打交道)。如何在用户无感知的情况下进行数据的同步,是提高用户体验的一个关键点。在项目研发过程中经历了许多轮的讨论与实践,现在笔者将数据同步功能的发展历程简单介绍一下。

阅读全文

2016-07-11 Project Summary 1

项目总结-2016年07月11日

线上服务健康状况监控与统计

统计与监控,个人感觉主要是离线与在线的区别。统计强调的是定时或者定量的离线数据分析,产生各项报表,用于对后续程序的优化及重构做决策。监控则对线上程序的实时状态做出反馈,需要在很短的时间间隔内对程序健康状况生成可视化的结果。一般来说,能满足监控需求的组件,也可满足统计的需求。

针对进程的监控,市面上已经有许多解决方案了。如可以通过zabbix监控PHP实例,通过JMX端口 + jConsole或者visual VM远程监控JVM实例。

对于web服务,利用nginx + zabbix(本身可监控服务器各项指标,如cpu、IO、网络等),可实现单个接口粒度的执行情况统计,如次数、平均响应时间、总响应时间等等。

对于RPC服务的程序,同样可以利用入口的负载均衡LB实现监控

阅读全文