本博客已经迁移到新站点: https://blog.duyidong.com

从 ThoughtWorks 到阿里巴巴

拿到阿里巴巴的 Offer,即将离开 ThoughtWorks。在刚入职 TW 的时候就有同事告诉我“入职第一天就想着离职的员工才是好员工”,我的 Sponsor 也随时在提醒我做决定的时候想想“当你离职的时候你能在你的简历上写些什么”。正是这种关注个人成长的文化激励着我即使在无聊的项目上也没有放弃学习,为随时可能到来的变化做好充分的准备。

阅读更多

变化和存在

在海边和同事闲聊,谈到父辈为何如此喜欢拍照:我父亲喜欢旅游,每到一个地方都要到景点拍照。同事的父亲参加他孩子的毕业典礼全程在用相机记录,“他根本没有在看我女儿,而是一直在盯着他那个小屏幕。” Phil 这样说。

阅读更多

再谈 DevOps

最近在北美市场掀起一阵平台化的热潮,IT 公司基本上在按照”自动化工具集->DevOps平台->数据化平台-> AI 平台“的思路向前演进。加上 k8s 和各种 CloudNative 工具推波助澜,在今年 DevOps 似乎仍是一个热度不减的次词汇。

阅读更多

领域驱动设计(DDD)实践

DDD(Domain Driven Design, 领域驱动设计)是一套原则、约束和方法。广义上的 DDD 是为了解决解决跨部门间语言沟通问题,在业务、产品、开发之间建立领域通用语言(Ubiquitous Language)以提高沟通效率。落地到开发团队,DDD 可以指导我们进行架构设计、团队划分、拆分微服务、乃至代码层面的设计。主要解决系统无法随业务演变而演变的问题。

阅读更多

被动语态与常用句式

有了上文的时态作为铺垫,日常英文交流不得不知的还有表动语态和各种句式,被动语态通常是用在强调动作承受者或者不知道动作施与者是谁的时候;而各种句式主要讲的是如何把简单句组合成表意更完整的句子。

阅读更多

英文时态详解

来 ThoughtWorks 两年了,英文使用也两年了,日常和工作中的交流几乎是没有问题,但是在说和写的时候总还觉得不地道,要么太啰嗦,要么说着说着逻辑就乱了,有时甚至感觉说英文像是在堆砌单词。最近补了一下英文语法,发现用错时态是我日常交流中最容易犯的错误,特此组织成文,方便日后查阅。

阅读更多

在 AWS 流水线中使用 CodeDeploy

AWS 为开发者提供了 CodeCommit -> CodeBuild -> CodeDeploy 三个服务分别用于管理应用的代码库、构建、部署三个环节,并使用 CodePipline 编排流水线,以及使用 CodeStar 以快速构建模板项目。

阅读更多

使用 Kcptun 加速 Shadowsocks

搭建完加强版 Shadowsocks后如果希望进一步减少延迟,或者在网络比较差的地方也想流畅使用代理,这篇文章会对你有帮助。笔者亲测可观看 Youtube 2K 视频。

阅读更多

Java系列(五)——UML类图和面向对象五大原则

最近在项目上经历了一次比较大的重构,把之前不太清晰一些类关系梳理了一下,突然发现 UML 图是个很好用的东西,特此温习一下。顺便复习一下面向对象五大原则,对 clean code 可以说是有很大的帮助。

阅读更多

Java系列(四)——类的加载与执行

清楚了 JVM 内存结构、GC、类结构,上篇文章我们知道了字节码是 JVM 实现无关性的重要设计,这篇文章我们来看一下这些字节码文件是如何被虚拟机加载和执行的。

阅读更多

Java系列(三)——类文件结构

JVM 的一大成就带来了平台无关性和日益凸显的语言无关性,而字节码(ByteCode)作为语言与平台的“中间代码”,正是构成这种无关性的基石,不同的语言经过各自的编译器编译后形成相同格式的字节码,再被 Java 虚拟机解释为平台相关的机器码并执行,从而实现了一次编写,到处运行(Write Once, Run Anywhere)。

阅读更多

Java系列(二)——JVM内存回收

GC(Garbage Collection 垃圾回收)使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。

阅读更多

Java系列(一)——JVM内存分配

成都近日气温已逾零下。让我想起在赤峰拍戏的日子,八月凌晨三点,茶水车结出一道冰溜子,18 个人抢 8 件军大衣,有人要去扒箱车,制片大喊:“别动!那是给领导穿的” —— 生活如此不易。如今我更加体会到“平凡的生活也要靠努力去争取”。

阅读更多