流式操作我们在很多地方都使用过,比如 Shell 操作时经常用到的 ps aux | grep xxx
、Python 中的 mapreduce
方法。Java 8 也引入了 Stream API,并且加入 Lambda 表达式,使得函数也可以成为像类一样的一等公民。
扔掉鼠标,开始键盘流编程
之前曾和朋友讨论,为什么很多程序员舍得买千元价位的键盘,却很少愿意买个同级别的鼠标……最后一致认为原因在于代码是键盘敲出来的,不是鼠标点出来的。如果以后编程简化到拖拽下控件就搞定,那价值天平恐怕就能向鼠标倾斜了。
Spring AOP 那些事儿
AOP 即 Aspect-Oriented Programming,面向切面编程,是对 OOP 编程思想的补充。OOP 核心是继承、封装、多态,是实现 OOP 模块化的基础。当 OOP 达到一定规模后,对于遍布各处的横向代码的处理就开始捉襟见肘,而 AOP 正好弥补了这个不足。
Thrift 学习笔记:RPC Server 和 Client
在了解 Thrift IDL 后,就能开始编写自己的 RPC 服务端和客户端了。对 Thrift 的安装过程和命令操作略过不表,主要还是关注如何利用 Thrift 实现 Java 的 RPC 服务端和客户端。
Thrift 学习笔记:IDL
上月底来到了 M 记,氛围和风格都和 J 记有很大不同,很舒服。开发工作还在按照 Mentor 定制的计划学习适应中,部分技术栈之前没接触过,比如 RPC,M 记用的是自己改写的 Thrift,这两天也在看相关的文档,汇总成学习笔记。
[译] 一个行之有效的 Git 分支模型
原文 A successful Git branching model 是 gitflow 的作者 nvie 于 2010 年撰写的,最近才看到此文,恨晚。网上和微信公众号推送的 Git 最佳实践多多少少应该从这篇文章中获得过经验值。虽然文中有些表述略显唠叨和陈旧,但不缺干货,搬运过来做个日常开发手册也是好的。
探索 Spring MVC 重定向和转发
最近参与的一个微信公众号相关项目的开发中,业务包含大量的页面跳转逻辑,以及拦截器的数据获取校验。其间也遇到一些困惑,在探究 Spring MVC 中 redirect 和 forward 的源码后,把经验归纳整理出来,遂成此文。
读 Flask 源码:源码结构
打算对 Flask 的学习做个整理,以 Flask 的 GitHub 代码库的 master
分支为参考。其实早期的 0.3
版还是单文件,整个 flask.py
加上注释也只有 1426 行代码,非常简洁,很适合作为 Python 源码学习的教材。
Spring Boot 学习笔记 1:起手式 Hello World
Spring Boot 是 Pivotal 团队开发的开源 Java Web 框架,相比同门师兄 Spring,Spring Boot 把开发者从繁重的配置中解放出来,遵循“约定大于配置”(convention over configuration)的设计范式。从零搭建 Spring Boot 项目几乎是傻瓜化的,因为框架把大量配置自动完成了。
通过反射统一 RPC 调用入口
最近项目开发中,有这样一个场景,依赖外部很多服务,每个服务从功能上彼此独立,因此各个外部服务的调用也是相对独立的。因此当时为每个调用都写了一个专属的 Porcessor 去处理服务调用的结果。当然好处就是功能区分清晰,不好的地方就是当 Processor 多了后维护起来不太方便。一种思路就是利用反射思想,为 Processor 中的 RPC 调用添加统一入口,通过服务名和方法名对调用进行定位。