美团技术博客学习笔记--持续更新


一、工作中的八条原则

源自:https://tech.meituan.com/2018/08/16/10-principles-for-engineers.html

1、主人翁意识
认真负责的态度,之前一直是想着完成需求就好,丝毫没有把自己当作项目的负责人,能甩的就甩,这导致自己在工作时总是消极被动,写的代码质量平平。之后有了目标之后,心里才开始慢慢有更多的精力和动力去专研。认真负责不会耗费你的精力,反而更多地激发自身潜能,去推进项目在前进,而不再是在骂声中被推着走。编码时可以多往易读性(代码即文档)、可用性、高效性、复用性(抽出共同方法)、扩展性(设计模式)。积极发现问题、记录问题、反馈问题、解决问题。
2、时间观念
核心就是分主次、任务无缝切换、阶段不中断性(不到一定的阶段就不允许被中断,否则恢复现场很困难)、任务最细化(越是精细越是减少沟通、恢复的成本)。紧急重要四象限,优先重要紧急,持续重要不紧急,委托紧急不重要、推辞不重要不紧急
3、以终为始
带着目标做事。比如带着目标学习,比如精细地学习effective java。
4、闭环思维
事事有反馈,比如这次的短链接分享就应该及时反馈说最近忙碌,可能稍晚才能修改一下文档,不要时时刻刻盯着电脑不说话。重点在于主动,其次是持续不断。一定要时不时反馈,坚决避免埋头做事,以为leader知道自己的情况和处境。
5、错误不过二
每次错误,尤其是重大的错误,一定要花时间进行review。哪怕只有五分钟,都要比没有强。每次的错误都很珍贵,因为它就是你进步的导向。
6、设计优先
尤其是重大的功能,一定是优先设计完全,尽可能考虑易读性、可用性、稳定性、复用性、高效性、扩展性,所有的一切都是为了减少成本,包括入手成本、排错成本、重复开发成本、硬件成本、二次开发成本。
7、善于提问,辩论才能最大程度考虑
批判性思维(太抽象,这个得多学习),深挖细节,不要怕被取笑理解力差。所谓理解就是在已知的基础上多想一想,并不是有的人悟性比你强,而是有的人已知的基础比你多。
8、善于学习
学习如果不是认真细致深刻,那就是伪学习。
读书如果没有笔记和个人见解,那就是假看书,或者享受式读书。

二、Unsafe的解析

原文链接:https://tech.meituan.com/2019/02/14/talk-about-java-magic-class-unsafe.html

Unsafe的应用为内存操作、CAS、Class、对象操作、线程调度、系统信息获取、内存屏障、数组操作。主要分为IO(为NIO打下基础)、并发(CAS、线程调度、内存屏障)。

堆外内存:直接受操作系统的管理,而不是JVM。本质是为了补充JVM,缩小JVM的内存管理空间,减少STW的时间。堆外内存的回收,是结合虚引用(PhantomReference)和引用队列(RefenceQueue)进行回收.

 CAS:指令级别的乐观锁。

内存屏障:为了让性能更加优化,CPU通常是会进行指令重排的。而内存屏障就相当于一个同步点,在这个点之前的指令一定是要在之后的指令之前执行,也就是禁止一部分指令重排。这也是为了减少并发情况下读写错误的情况。

相关