摘要: 背景 最近在啃《多处理器编程的艺术》,书中的7.6节介绍了时限锁——实现了tryLock方法的队列锁。 书中重点讲解了tryLock的实现,也就是如何实现在等待超时后退出队列,放弃锁请求,并且能让后继线程感知到。 在实现的过程中,我为TOLock补充了lock方法的实现。代码如下所示: public 阅读全文
posted @ 2017-04-22 11:00 活在夢裡 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 1. 背景 在工作过程中,有时候会对慢查询进行调优。对于MySQL的SQL语句调优,MySQL本身提供了强大的explain关键字用于查询分析执行计划。 本文对explain执行计划进行分析与整理,文中的内容在未特别注明情况下, 以MySQL5.7版本为例 。 2. 简介 语法:从语法角度expla 阅读全文
posted @ 2017-03-20 03:36 活在夢裡 阅读(5354) 评论(0) 推荐(4) 编辑
摘要: 记录一个遇到的隐蔽的空指针异常。 公司里的测试同事之前发现项目里有处偶现的空指针异常。 大致的代码是这样的: 对于固定的测试集,多次重跑偶现空指针出现在groupingBy中,乍一看推断是item.getInvestor()为null导致getName()出现空指针。但经过debug查看,实际上是偶 阅读全文
posted @ 2017-03-08 22:54 活在夢裡 阅读(1790) 评论(1) 推荐(0) 编辑
摘要: 这是一本什么书? 最早是在图灵社区看到今年年初这本书的问世,作者刘新宇获得清华大学自动化系学士和硕士学位,长期从事软件研发,关注基本算法和数据结构,尤其是函数式算法,目前就职于亚马逊中国的仓储和物流技术团队。 直到过年期间,和朋友一起逛上海书城,看到了实体书,便随手买了一本。至今也有十来天,稍稍有选 阅读全文
posted @ 2017-02-18 15:51 活在夢裡 阅读(2094) 评论(1) 推荐(0) 编辑
摘要: 前几天,阿里巴巴发布了《阿里巴巴Java开发手册(正式版》,第一时间下载阅读了一番。 不同于一般大厂内部的代码规范,阿里巴巴的这本Java开发手册,可谓包罗万象,几乎日常Java开发中方方面面都有所涉及。 在知乎上,也有关于这本开发手册的讨论十分热烈的帖子。 由于里面涉及的内容比较多,下面重点罗列下 阅读全文
posted @ 2017-02-13 21:51 活在夢裡 阅读(14163) 评论(0) 推荐(1) 编辑
摘要: 公司项目代码中,某枚举字段数据库表中类型是char(1),在代码中,误以为是TINYINT,所以用数字筛选,后来发现结果不对。发现了一个现象,用数字0筛选会把所有的记录给筛选出来。 经过排查发现是在MySQL查询语句中,'abc'如果和'0'比较结果显然是不等的,但如果'abc'和0比较呢?结果居然 阅读全文
posted @ 2017-01-31 10:09 活在夢裡 阅读(29451) 评论(1) 推荐(7) 编辑
摘要: 笔者在自己的Mac上安装的是Docker for Mac,而不是Docker Toolbox。 这两者最主要的区别在于Docker for Mac用HyperKit作为虚拟化解决方案而不是VirtualBox,相比Docker Toolbox,Docker for Mac更加native些。 Doc 阅读全文
posted @ 2016-12-13 14:51 活在夢裡 阅读(739) 评论(0) 推荐(0) 编辑
摘要: 昨天在做公司项目时,我在一处地方加了一个逻辑校验,之后测了下发现在方法调用深处有一处NPE,来源于另一个同事的代码。 其实NPE本应该是个Java编程中老掉牙的问题,但我觉得这一处错误还是比较典型的,值得一提。 这里的 是一个枚举类型,code是枚举中的一个int类型。而条件表达式右边的cycleT 阅读全文
posted @ 2016-12-02 02:36 活在夢裡 阅读(1793) 评论(0) 推荐(0) 编辑
摘要: 问题 在项目中,有一处地方需要对日期区间进行排序 我需要以日期区间的开始日为第一优先级,结束日为第二优先级进行排序 代码 我当时写的代码如下: 这段看上去很正确的代码,居然是没办法编译的。 做了一些试验 当仅以日期开始日排序,可以编译没问题 那么把Comparator单独提取出来呢 这样当然是没有问 阅读全文
posted @ 2016-11-23 02:37 活在夢裡 阅读(3352) 评论(0) 推荐(0) 编辑
摘要: 有一个Java Web的系统,原来只是一个普通的Spring MVC项目。但是因为后期会有多个迭代,在二期的时候,设计者考虑用CQRS来组织项目。但有一个问题设计者当时没考虑到,直接新开一个库地址进行开发,认为一个前端不同页面对应两个后台很容易。然而事实证明,这会存在跨域访问的问题。处理办法就是需要 阅读全文
posted @ 2016-09-30 13:10 活在夢裡 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "D. Mishka and Interesting sum" 的意思就是给出一个数组,以及若干询问,每次询问某个区间[L, R]之间所有出现过偶数次的数字的异或和。 这个东西乍看很像是经典问题,一列数字中所有数字出现偶数次,除了一个数字只出现一次,找出那个只出现过一次的数字。然而这个问题 阅读全文
posted @ 2016-08-06 22:32 活在夢裡 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "Brain Network (hard)" 这个问题就是给出一个不断加边的树,保证每一次加边之后都只有一个连通块(每一次连的点都是之前出现过的),问每一次加边之后树的直径。 算法 每一次增加一条边之后,树的直径长度要么不变,要么会增加1,并且如果树的直径长度增加1了,新的直径的端点其中一 阅读全文
posted @ 2016-08-05 13:01 活在夢裡 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 这里介绍Hadoop在mac下的安装与配置。 安装及配置Hadoop 首先安装Hadoop 配置ssh免密码登录 用dsa密钥认证来生成一对公钥和私钥: 将生成的公钥加入到用于认证的公钥文件中: 接下来测试一下是否配置成功 如果遇到connection refused之类的错误,检查一下mac是否开 阅读全文
posted @ 2016-07-29 00:35 活在夢裡 阅读(16066) 评论(1) 推荐(3) 编辑
摘要: 什么是pyenv python2和python3虽然都是python,但是有非常大的差别。有时候不同项目用的python版本不一致,切来切去很烦。不知道怎么的就发现了 "pyenv" 这个东西。这个将近5000星的项目,完美地解决了我的问题,python版本的管理。 pyenv的安装 其实在项目的r 阅读全文
posted @ 2016-07-22 00:13 活在夢裡 阅读(2507) 评论(0) 推荐(0) 编辑
摘要: 什么是tmux tmux全称terminal multiplexer,是一个终端复用软件。它可以帮助我们方便地管理多个终端会话。 下面介绍tmux中涉及到的一些名词 window 窗口 pane 窗格(面板) session 会话 如何使用tmux 安装tmux 对于安装tmux,因为不同系统安装方 阅读全文
posted @ 2016-07-13 00:52 活在夢裡 阅读(727) 评论(0) 推荐(0) 编辑