每月摘录202003

技术

  • kafka:同一时刻,一条消息只能被组中的一个消费者实例消费
    消费者组订阅这个主题,意味着主题下的所有分区都会被组中的消费者消费到,如果按照从属关系来说的话就是,主题下的每个分区只从属于组中的一个消费者,不可能出现组中的两个消费者负责同一个分区。
    那么,问题来了。如果分区数大于或者等于组中的消费者实例数,那自然没有什么问题,无非一个消费者会负责多个分区,(PS:当然,最理想的情况是二者数量相等,这样就相当于一个消费者负责一个分区);但是,如果消费者实例的数量大于分区数,那么按照默认的策略,有一些消费者是多余的,一直接不到消息而处于空闲状态。
    话又说回来,假设多个消费者负责同一个分区,那么会有什么问题呢?
    我们知道,Kafka它在设计的时候就是要保证分区下消息的顺序,也就是说消息在一个分区中的顺序是怎样的,那么消费者在消费的时候看到的就是什么样的顺序,那么要做到这一点就首先要保证消息是由消费者主动拉取的(pull),其次还要保证一个分区只能由一个消费者负责。倘若,两个消费者负责同一个分区,那么就意味着两个消费者同时读取分区的消息,由于消费者自己可以控制读取消息的offset,就有可能C1才读到2,而C1读到1,C1还没处理完,C2已经读到3了,则会造成很多浪费,因为这就相当于多线程读取同一个消息,会造成消息处理的重复,且不能保证消息的顺序,这就跟主动推送(push)无异。

  • 什么才算是基础技术?
    一些技术,比如程序语言,像C和C++,原理主要就是编译、内存管理、指针等。Java语言原理基本是在虚拟机JVM、垃圾回收、JVM字节码等。python基本在解释器,go语言就是并发,基本都是这些,内存是怎么管的,Java里面为什么没有指针,Java虚函数是什么意思?......
    你需要了解重要类库的事件,它的数据结构是红黑树,还是哈希表?还有代码设计,并发、异步,编程范式、设计模式。操作系统就是计算原理,Linux、网络协议、还有数据库,像数据库设计的范式,后台原理都要搞清楚。中间件Kafka是什么原理,你要了解里面的原理,还有一些东西巨耗内存。网管代理,调度系统等等,理论知识算法和数据结构......

  • 关于零拷贝。考虑这样一种常用的情形:你需要将静态内容(类似图片、文件)展示给用户。那么这个情形就意味着你需要先将静态内容从磁盘中拷贝出来放到一个内存buf中,然后将这个buf通过socket传输给用户,进而用户或者静态内容的展示。这看起来再正常不过了,但是实际上这是很低效的流程。

首先,调用read时,文件A拷贝到了kernel模式;
之后,CPU控制将kernel模式数据copy到user模式下;
调用write时,先将user模式下的内容copy到kernel模式下的socket的buffer中;
最后将kernel模式下的socket buffer的数据copy到网卡设备中传送;
从上面的过程可以看出,数据白白从kernel模式到user模式走了一圈,浪费了2次copy(第一次,从kernel模式拷贝到user模式;第二次从user模式再拷贝回kernel模式,即上面4次过程的第2和3步骤。)。而且上面的过程中kernel和user模式的上下文的切换也是4次。

Zero-Copy技术省去了将操作系统的read buffer拷贝到程序的buffer,以及从程序buffer拷贝到socket buffer的步骤,直接将read buffer拷贝到socket buffer. Java NIO中的FileChannal.transferTo()方法就是这样的实现,这个实现是依赖于操作系统底层的sendFile()实现的。

  • Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,并且创建成本非常低。
    而且 Git 有本地分支,SVN 无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,便可以创建本地分支存储没写完的代码,待问题处理完后,再回到本地分支继续完成代码。
    另外,Git是分布式的,而Svn是集中式单节点的。

  • 寻址是数据恢复技术的基础,是定位数据和扇区的关键。简单的说是磁头在盘片上定位数据的一个过程。计算机有多种寻址方式,如立即数寻址方式,寄存器寻址,存储器寻址方式,与I/0端口有关的寻址方式,又包括直接端口寻址和间接端口寻址。

  • 敏捷开发。晨会白板。需求迭代。进度显示:开发中、测试中、待发布、阻碍、已发布。

    学习

  • 程序员如何学习?
    1)作为一个技术工种,基本业务必须熟练,是必须哦。

2)平时多看书、多学习相关知识,做到日积月累。

3)没事多思考、多琢磨、多天马行空,让已有知识互相碰撞。

4)认真对待第1条,努力做到第2、3条,并长期坚持下去,是长期哦。

具体到程序员这个职业:

1)作为码农,编程能力必须强,代码一定要干净整洁,一般情况下绝对不允许出现错误。

2)经常翻看编程语言的类库API,经常翻看常用框架的官方文档,使自己掌握的越来越多、越来越熟。

3)多看编程语言类库的源码,多看常用框架的源码,不仅使我们更加透彻的理解官方文档,还能学习大牛们的思维和编程习惯。

4)认认真真对待第1条,这真的非常非常重要,努力做到第2、3条,并长期坚持下去,也是长期哦。

做到这些足以让你成为一个优秀的程序员了。

如果还不满足,可以深入研究数据结构与算法,研究操作系统,研究计算机的组成与工作原理。这任何一个都足够研究的了。

如果对这些底层不感兴趣,可以专心做业务。练习如何为特定的需求场景给出设计模型及方案,方案一定要易懂、易用、简洁、高效和易扩展。

并去思考这样的设计方案如何落地并通过代码实现,而且代码实现的复杂度要合理,既能满足目前需求,也要留有后路以便后续扩展,代码一定要是模块化、结构化和清晰化。

  • 很多人给我说工作琐碎,修修补补,很没意思。我建议看一看自己的项目,是不是符合这样的条件:业务复杂+贫血模型,如果是的话就可以学习面向对象的设计,体会一下真正的领域模型。

如果你成功了,看到清爽的、薄薄的Service层,有着充分测试用例的Domain Object,心里会很爽的。

  • 写业务代码如何成长?
    这里分三个层次来看其中的成长机会。
    第 1 个层次,让代码写得不一样。可从代码规范、可读性、可扩展性等角度着手,这也是程序员的基本功。
    第 2 个层次,考虑业务问题和技术问题的匹配。可从写业务代码中理解需求,- 并做好分析与设计。被动接收需求和实现接口,确实成长空间不大。
    第 3 个层次,总结相关方法体系,成为业务及技术双料专家。

  • 《敏捷软件开发 原则 模式和实践》

  • 技术世界是怎样组成的,最大的基础是什么?一般是理论,首先理论得突破,理论突破以后,产生质变就能到下一个层次,理论突破了,就会有产生一些技术的基础,这些短期看起来可能赚不了钱,但是没有这些东西后面就转不了。
    像操作系统,操作系统并不解决人类的业务问题,但是如果没有操作系统,没有网络,上传应用就不会存在。生存技术底层技术就像高速公路一样,是不可或缺的。

  • 很多人给我说工作琐碎,修修补补,很没意思。我建议看一看自己的项目,是不是符合这样的条件:业务复杂+贫血模型,如果是的话就可以学习面向对象的设计,体会一下真正的领域模型。

如果你成功了,看到清爽的、薄薄的Service层,有着充分测试用例的Domain Object,心里会很爽的。

领域模型,简单点说就是把业务逻辑放到业务实体,不放在service层。利用面向对象的优势,Oop,Ood。

  • 吃透才有真正的价值,那怕只是书中的一页。而蜻蜓点水式的学完,你会发现,合上书,基本就忘光了。
    如果你真的想掌握好基础知识,我觉得可以做一个长期且极有耐心的规划。比如一年为期,只看一本基础知识的书籍,并且每个月,就其中的一两个点,深入吃透。
    这种看似很慢的做法,其实特别扎实,一段时间后,你会慢慢感知到一种来自底层思维的变化。到那时候,你肯定可以获得一种巨大的满足感,你会有一种突然清晰的感觉,好像一层朦雾被拨开了。

社会

  • 工薪阶级,想在深圳买房,基本是按揭几十年,加上东凑西凑的首付,然后慢慢还。他们也都是工薪阶层而已。

哲理

  • 当我们总是用主观的经验去解释并不熟悉的领域时,就会沉溺于自己的舒适区间,失去探索和求知的动力。

如果你习惯于用邻里纠纷或者公司办公室政治的思维去理解历史和国际政治,那么你就不会再愿意去花心思阅读政治和历史的著作,去探寻其中的规律,体会历史人物的纵横捭阖。

  • “一个人到了30岁,应该要对自己了如指掌,确切知道自己有哪些优缺点,晓得自己的极限在哪里,预见自己的衰颓——做他自己。尤其是接受这些。我们会变得很积极。一切有待实践,一切也有待抛却。不再造作,但仍戴着面具。我已经见过够多的世面,几乎能够抛开一切。剩下的,是一种每天持续不断,不可思议的努力。能够守密的努力,不抱希望,亦无怨尤。再也不会去否认什么,因为一切都能够加以肯定。凌驾伤痕。”

健康

  • 久坐的危害可不少,不仅明显促使肥胖,还容易产生腰肌劳损、2 型糖尿病、心脏病,甚至是缩短寿命。"
  • 尊重、体谅、爱护自己的老婆,尽力去理解老婆的不容易。每个家庭的情况都不一样,但是在绝大多数情况下,女人要操劳的事情、吃的苦比男人要多得多,女人要怀孕、生孩子,女人要进行产后恢复,女人会有生产的后遗症,女人要喂奶,女人会有荷尔蒙的变化,这些辛苦是我们男人永远没有办法去体验的。

文艺

  • 1994这一年,全世界工诞生36部经典电影。也因为这样,1994年被称为影史奇迹年,也成为了全世界影迷膜拜的年份。

在美国,这一年有《肖申克的救赎》、《阿甘正传》、昆丁·塔伦提诺的代表作《低俗小说》、动画版的“哈姆雷特”《狮子王》和《燃情岁月》等多部电影。在欧洲,则有温情犯罪电影《这个杀手不太冷》和英式幽默片《四个婚礼和一个葬礼》等电影。

而在华语影坛,1994这一年,好的电影有《大话西游》、《饮食男女》、《活着》和《阳光灿烂的日子》。不得不说的是,在1994年,也是周星驰爆发的一年,除了《大话西游》之外,其经典无厘头喜剧电影《国产凌凌漆》和《九品芝麻官》同样也出自这一年。

1994年,不平凡的一年。

时至今日,再也没有哪一年有94年那样能有那么多的经典电影了,永远的94年。

国际

  • 20200313,英国德国等股票市场又是下跌超过8%。日股韩股下跌约4%。
    港股恒生指数下跌3.6%,A股上证指数下跌1.5%,深证成指下跌2.3%。

这些市场还算下跌小的。巴西今天下跌12%,这周四个交易日里,有三个交易日跌到熔断。

美股这周也第二次触及熔断,收盘跌幅9.99%

  • 202003中旬这几天,文娱体育界都有名人中招新冠肺炎了。娱乐圈是曾饰演阿甘的奥斯卡影帝汤姆·汉克斯及太太,NBA和意大利尤文图斯足球俱乐部也有球员确诊。现在NBA和意大利的足球比赛都暂停了。五大足球联赛里,西班牙、德国、法国的足球联赛还在继续,英超也没暂停,但空场估计免不了。

  • 此次肺炎疫情,西方媒体公然称呼为“中国肺炎”,是非常不合理的。1918 年至 1920 年、造成全世界 5 亿人感染、带走了 1.7 千万至 5 千万人的性命的甲型 H1N1 流感(史称「西班牙流感」,亦是不恰当的命名),若以出现的源头地「美国堪萨斯州芬斯顿军营」命名,是不是该被称为「美国军团流感」?

  • 石油具有三重属性——商品属性、金融属性和地缘政治属性.

油价暴跌,原因是沙特和俄罗斯等其他产油国减产谈判破裂之后发动了价格战。

由于俄罗斯最近接连受到美国制裁,经济下滑压力更大。持续减产一方面不利于自己的经济,另一方面还利好美国的能源出口,俄罗斯不愿配合。

俄罗斯拒不减产,沙特发动石油价格战:不仅要降价,还要增产。

沙特每次发动价格战,对油价的影响少则6个月,多则一年半。

石油是工业必须的消耗品,和经济周期关联很紧密。经济好石油需求增加,价格就会上涨。经济不景气,石油需求减少,价格倾向于下跌。

今年初以来,新冠肺炎疫情暴发,全球蔓延,石油需求还在下降。需求崩溃与竞相增产带来的结果就是价格的崩溃。

  • 北美的页岩油带来的巨大变化就是美国成为石油的净出口国。北美的页岩油,开采成本较高,当油价在50美元时,页岩油还可以维持收支。超过50美元后,北美很多页岩油企业就撑不住了。

石油暴跌,对北美页岩油会产生打击。

  • 很多人觉得,原油下跌有利于中国、日本等石油进口国,可以降低工业、制造业、航空业的成本。如果是经济平稳时期,确实如此。但如果经济处于快速下行趋势,油价一旦暴跌,就会带来一个更可怕的经济杀手——通缩。
    表面上看,通缩能让东西更便宜,钱也更值钱。但同时,如果所有人都预感到,企业效益不好,商品会降价,你还会急着消费吗?除了必须的消费品,很多大件都会拖一拖吧。
    所以说,通缩也会进一步压垮居民的消费和企业的投资需求。特别是在欧洲以及日本这样,经济增速接近停滞的国家,这也是市场最不想见到的一幕。

  • 2020年,百年未有之大变局。全球疫情肆虐,澳大利亚山火狂烧,蝗虫成灾。油价暴跌,全球股市暴跌,美股接连四次熔断,金融危机或许再次来袭。

猜你喜欢

转载自www.cnblogs.com/expiator/p/12544247.html