定义问题的能力

以前觉得解决问题的能力是最重要的,但是近来又觉得有时候,定义问题的能力比解决问题的能力重要。 为什么呢? 因为正确解决问题的第一步是定义问题。 思考问题本身 该问题是否客观存在? 是否真的值得被解决?

从一种编程语言切换到另一种编程语言

最近在思考一个问题,从一种编程语言切换到另一种编程语言,大概需要需要多久?有什么门槛,怎么迁移过去? 比如,如果因为项目需要,从Java迁移到Go,或者Java 转到Rust,大概需要多久?网上对此有很多的讨论,比较主流的观点是,只要一门语言学得深入,很快就能迁移到另外一门语言的。 赞同的部分 以web为例,业务系统: 归根结底,大多数非面向基础设施的开发工作内容,其实都是数据密集型的,也就是读写 … 继续阅读

RabbitMQ的延迟消息

之前使用了ActvieMQ的延迟消息,最近看了一些RabbitMQ的延迟消息。RabbitMQ中提供了关于延迟消息的插件RabbitMQ通过插件的形式来支持延迟消息。 实现开始时间不确定的定时任务触发,我们可以引入延迟消息的使用。 注意:只有RabbitMQ 3.6.x以上才支持延迟消息 插件安装 安装方式很简单,在这个页面:http://www.rabbitmq.com/community-pl … 继续阅读

ActiveMQ 延迟消息与定时任务

最近在实现一个定时发送推送消息的功能,用到了延迟消息,想整理一下延迟消息消息相关的东西。 实现定时发送这个需求通常有两种方式: 轮询定时任务:给定周期内扫描数据表,查看是否有认为还没执行。 这种实现可以很简单,只需要启动一个定时任务即可;但缺点同样也很明显,这个间隔扫描的时间不好控制。 给短了会造成很多无意义的扫描,增大数据库压力,给长了又会使得误差较大。 延时消息:创建定时任务的时候,发送 N … 继续阅读

变量命名问题

写出机器能理解的代码难度不大, 但是能写出容易被大多数人理解并且容易维护的的代码,就不容易了。写出容易理解又容易维护的代码,包括很多方面。这包括,代码组织、程序结构、函数结构、函数、变量命名等等。 这里主要关注命名问题。 Phil Karlton: There are only two hard things in Computer Science:Cache invalidation and n … 继续阅读

莫扎特的音乐风格

在路上坐地铁的时候,想找几首带点新鲜感的音乐。想找巴赫的,但是不怎的还是翻了莫扎特的。最爱的还是莫扎特的K482的第三乐章。第一次接触这首曲子,是多年前看电影《莫扎特传》时里面的一个背景音乐。音乐响起的时候,就被前面明丽、畅快的开头所吸引。lumenlearning里面是这么介绍莫扎特的音乐特点:The central traits of the classical style are all p … 继续阅读