目标管理(Management By Objectives)这个概念出自德鲁克的《管理的实践》。书读于2016年51假期,理论记住的甚少,但仍奉之为我人生的启蒙。只因目标管理这个词从此深植于心中,野蛮生长。于是,18年初决定实践之,要以目标来驱动人生。如今一年已经过去了,无论结局有多尴尬,年终总结还是必要的。
MongoDB从选型到落地到性能调优
目标数据
数据量
20万条数据,总大小5G
部分数据会达到1.5M~2M/条
每条数据的内容包含:
1个基本信息
60个dailyInfo
数据相对独立,无关联
读写:
夜里有尽5个小时的全量覆盖写
增量数据更新造成的不定时随机写<QPS未知>
每小时会有一次遍历读
...
怎样才能生活得更好-读奇特的一生
《奇特的一生》以个人传记的方式讲述了柳比歇夫的时间管理法。按照作者的逻辑去读这本书的话,很难抓住重点,
正如作者自己所言”作者仍然不能做出最后的结论,给读者出点什么主意”。
比如,全书的中心是”怎样才能生活的更好”,但是全文又都是在写柳比歇夫的”时间统计法”,他们之间的逻辑是什么样的?
“时间统计法”本质上是时间管理的一种方式和工具,它服务于目标管理,帮助我们更好的完成我们的人生目标。
下面本文就将以倒退的逻辑来重新梳理《奇特的一生》,弄明白”怎样才能生活的更好”。
RocketMq实战
将RocketMQ的producer和listner封装成sender和consumer,力求简单实用。
源码:https://github.com/jisumanbu/RocketMqInAction.git
发送消息
封装类为:MqMessageSender,支持以下多种发送方式及异常处理
- 同步和异步发送消息
- 发送有序消息
- 延迟发送消息
- 异常处理
失败重试
接收并消费消息
分为ConcurrentlyConsumer和OrderlyConsumer。
- 有序消息 -> 继承OrderlyConsumer
- 非有序消息 -> 可认为支持多线程, 继承ConcurrentlyConsumer
自动过滤重复消息,避免重复消费问题
具体实现:AbstractConsumer.isAlreadyConsumed(…)方法。 - 利用redisson的RSetCache类的add特性来判断消息是否已经消费过了
true if value has been added. false if value already been in collection.
1
isAlreadyConsumed = !FedisClient.getClient().getSetCache(hashKeyOfRedis).add(messageKey, 1L, TimeUnit.DAYS);
注意:FedisClient为未实现单例,用户得自行修复以上代码。
以企业的方式经营家庭
想法的产生16年看着《管理的实践》却不知道何为公司;认识老婆后便萌生了以企业的方式经营家庭的想法。想着”以企业的方式经营家庭”可以
促使我去了解”企业”到底是什么,为以后的创业做铺垫
目标管理的实践:家庭目标 & 个人目标的平衡
从一个人变成了一家人,从而必须以组织的角度重新审视”家”
...
HTTP、HTTPS、TOKEN的比较 以及 如何选择
HashMap的工作原理【译文】
绝大多数JAVA开发者无时无刻不在使用Maps,特别是HashMaps。HashMap提供了即简单又强大的存储和获取数据的方式。但是又有多少人了解Hashmap的内部运行机制呢?
最近一段时间,为了深入了解HashMap这一重要的数据结构我阅读了绝大部分java.util.HashMap的源码, 先是基于java 7然后java 8。
在这篇博文里,我将为大家展示HashMap的实现原理,在java 8中的新特性在使用中要注意的关于性能和内存的问题,以及一些常见问题。
Contents
- 内部存储
- 自适应大小
- 线程安全
- Key的不可变性
- JAVA 8中的提升
- 内存负载
- JAVA 7
- JAVA 8
7 性能问题- Skewed HashMap vs well balanced HashMap
- 自适应大小带来的开销
8 总结
