分类目录归档:技术

flyway和jooq

在上文中,我推荐了flyway+jooq的组合。不同于我的其它推荐大多对标Google和FB这样的国际一线大厂,这个组合在国内也用的很多。不仅仅是一些创业公司(比如我前公司),诸如美团、58等很多大厂的新兴部门也会采用。
flyway,这个东西的理念平平无奇——做数据库的版本控制,但效果实际上出奇的好。DDL和DML的维护本身并不是一件复杂的事,常用的方法比如在项目中用一个sql文件记录,另开一个git仓库用来记录,都是可行的。在执行时,使用工单提交,完成线上变更。在我的实践经验中,这两种方法都有… Read the rest

类型安全

最近大家在解决sonar bug,我也看了一下,相当一部分sonar bug都是因为使用了类型不安全的库导致的。java本身是类型安全的,以java所写的代码一般也以类型安全为优美,但是我发现我们同学写的代码中有非常多的类型不安全的实现,特写一篇文章宣讲记录。

注:类型安全的定义在不同地方会有不同,本文指的是相当宽泛的类型安全。

大家都知道fastjson频繁爆出bug,而这些bug中最严重的一些,又是因为AutoType这一特性。这个事情说来话长,本文不展开,这里提供一篇文章供大家参考。AutoTyp… Read the rest

假如你的代码让公司亏了100万

虽然标题是假如,但是这种事我早就干过了,而且亏了不止一百万。今天就来聊一下这个问题,假如你的代码让公司亏了100万,最终的责任分配应该是什么样子?你会被炒吗?

我在面试中跟几家公司的面试官也讨论过这个问题,不出意料,在很多公司,被炒是大概率事件。 而同样的事情,发生在Facebook和google这样的公司,员工不仅不会被炒,甚至批评都不会有,不会被追究任何责任。有传言说在Facebook,如果你把生产环境搞挂或者造成重大损失,大家会庆祝你在Facebook成年了。这种差距的背后是什么?是这些公司有… Read the rest

Java 9-15最接近我们的特性

抛去各种各样特别牛的特性不谈,我们就说一下我们肯定会经常用到的几个特性。其实就几个,switch表达式,ZGC,var关键字,文本块,record,instanceof,还有更实用的nullpointer报错。

从简单的开始看起。

注:本文描述特性的时候包含很多直接抄来的样例,有的特性需要编译的时候开启特定开关,本文并不关注这些细节,而是关注特性本身。

1、更人性化的NullPointer报错

例如,如下代码:

var name = user.getLocation().getCity().getName();
Read the rest

项目人员的沟通语言

最近在啃Eric Evans的《领域驱动设计》。Eric Evans是DDD的创始人,这本书成书于2003年。这一点就挺有意思,现在主流编程思想,差不多都是在1995-2005这个时间段提出的,这些创始人的年龄也差不多。Martin Fowler, Kent Beck, Eric Evans,分别开创了Agile、XP、DDD,是软件开发着实绕不过的三座大山。

先说文档

字节有一个特点,文档特别多,所以自从入职以来,我对文档这种协作工具的思考从来都没有停止过。正好Eric Evans在书中也再次提到了XP对待文档的… Read the rest

ThoughtWorks敏捷培训

首先得澄清的是,本文参考了很多文章还有ThoughtWorks的《深入核心的敏捷开发》,不算原创。另外,这是本人在公司内部敏捷培训的讲稿,有地方有些口语化,见谅

如无特殊说明,本部分的敏捷实践以ThoughtWorks为准
ThoughtWorks敏捷被认为是60%scrum+40%XP,先看下scrum的部分,主要是非技术实践部分。
一、非技术实践
一些容易混淆的名词解释:

  • Sprint,这是scrum中的一个概念,通常是为期两周的一个冲刺。在TW还有很多其它公司,这个叫做Iteration,迭代,可能
Read the rest

主干开发TBD——定义篇

一、主干开发是什么?
说到开发过程,一切的源头都是从分支模式开始的。国内目前大部分公司采用的还是特性分支的开发模式,包括git-flow和github-flow等。而国外大厂却早已达成共识,用的都是主干开发。同样,主干开发也有一些变种,常见的有三种。纯粹的主干开发,带feature分支的主干开发和gitlab-flow。
那么主干开发到底是什么呢,以纯粹的主干开发为例,整个仓库中只有master和release两个分支。所有rd本地开发的代码在经过code review后,都合并到master上。在发… Read the rest

mac开发环境同步

我算是一个极简主义者,不过我这个极简主义和大家所谓的极简主义恰好相反。大家所谓的极简主义,简而言之,是尽量少买东西,保证环境整洁,我称为物质极简主义。而我是为了所有需要用的东西能在手边随时拿到,不惜重复购买东西,可以说是精力极简主义。如果你也尝试一下这种习惯,它的好处你也能体会到,再也不需要花费无用的精力在找东西这件事上,任何时候想做什么,都能快速进入状态。

比如电脑吧,我有四台左右的常用mac,因为公司要用,家里也要用。背一台电脑来回?这种方案显然不可接受,买两台,一边一台。PS4,两套房子里都… Read the rest

面试杂思

最近面试了那么几家公司,对于大多数面试官的表现,我都是不怎么满意的。只有蚂蚁金服的面试官我很满意,头条、京东、新浪金融的面试官,我统统给差评。这个问题其实由来已久,奇怪的是,企业似乎没有多大动力去解决这个问题。面试的目的是为了发现合格的候选人,与其要求每个候选人都按照面试官想要的方式去回答问题,不如培训面试官,是他们成为善于发现人才的人成本更低。

我自认为是个还不错的面试官,我一直负责最后一面,一般跟候选人沟通都很顺畅。我自吹一下,经常有候选人面完之后对我们HR说,最后这个面试官人特别好,问的问题… Read the rest

技术人:Windows vs MacOS

上大学后,忍受不了Windows难用程度突破天际的cmd,日常工作学习转向Linux和Mac,不知不觉,在shell里已经度过了差不多十年。最近,win10发布了大量的针对开发者的优化,而我在Windows下开发的体验也表明,Windows用来开发真是太好用了。因此,是时候重新审视一下,作为一个技术人,在日常开发中,到底windows更好用还是Mac更好用了。


首先当然还是是 shell。

windows下可选的terminal 并不多,比较出名是cmder。在Windows Terminal发布之前,c… Read the rest