集群设计本质只有几个核心,本质只有几个东西,
文件,并发,算法和网络
任何一个方案在实施前至少要有个数学模型把他们串联起来,然后才是写代码的事情。
几乎所有的中间件结构都可以用这些东西进行简单的描述
gc只是不复杂的算法而已
cpu调度也不过是多个线程列表的循环分配
cpu的指令多级缓存很难理解?
内存条双通道不过和cpu多核一样,增加了并行
redis作为缓存和cpu多级缓存看着不类似吗?
mongo和mysql真的区别就那么大吗?
kafka和mysql,持久化的东西,他们的实现重合度真的很高。
算法用来用去,数据结构变形再变形
redis和我们专用内存存储考虑也只是更加通用,实际性能比不上的符合自己业务场景专用内存数据库
以至于很少有东西能打动我了,因为你说一个人100米能跑9.5简直就是神,但是你并没有超脱人的领域,程序也一样,他们依然运行在冯诺依曼的架构下,fsync性能很笨很傻,但是你要数据路绝对不丢也跨不过他。一个cpu核心这么多年了,也不过2ghz,3ghz+,内存条频率也就几千Mhz,加减乘除,mov,位运算,能完成多少指令,口算都算的出来。
你说要从1亿个数据里面找出最大的一个,你也不可能只从内存里面只需要读出99999999个数
gc算法再厉害,用了它,每个对象被分配后也得乖乖去扫一次
程序无法超脱既有的物理限制,使得它的运行无法像魔法一样不可琢磨,他们在被设计以后就会沿着极易可量的轨迹运行。你真的从这4个角度去了解一个东西后,推推理,你会发现好多库也好,驱动也好,系统也好,他们的文档翻来覆去都是围绕这个。最后你会发现,貌似那些曾经你所望而生畏的东西都如此的直白。
某天,你悟了,丢掉了你多年以来都让你喜不自禁的设计模式,语法糖,编程哲学,面相对象哲学,golang布道者,redis源码解析,丢下你写到一半的php是世....,而后
深入浅出
然后,你会发现数学和物理才是真正魔法。
面向离职编程,把你每一行代码,每个文档,都当做离职交接文档。配置文件的详细描述,代码的打包,部署,测试环境和正式环境的配置,TODO,如何扩展,如何让下一个接手你代码的人看你的代码的时候被你的代码惊艳到哭。
汇总一些概念和技术,助力各位常在江湖飘的程序员们早日打开任督二脉。
1、理解OOP(面向对象)编程
OOP编程是很多现代程序语言的设计理念和基本技术,所以理解什么是OOP相当重要。OOP基本概念就是类(Class),Class基本是一些变量和一些函数的综合体。理解OOP编程需要深入研究,推荐一本书,可以帮助你理解OOP编程:
英文版:《Head First Objects-Oriented Analysis and Design: The Best Introduction to Object Orientated Programming》
这本书的作者是位大牛,有中文版——《Head First 深入浅出面向对象分析与设计(中文版)》,不过中文版可能已经绝版了,但是网上应该有二手或者相关资源。
2、不要低估代码质量的重要性
如果只能关注编写代码的一个方面,那么应该是它的可读性,将编码看作沟通实现的一种方式,作为编码人员,主要工作是清楚地传达正在处理的任何解决方案的实施。
以下是与代码质量相关的一些错误:
3、不要痴迷于最佳实践
很多完美主义者总是苦苦寻找最佳实践!但是,解决编程问题有很多方法,痴迷于寻找最佳实践、最佳解决方案有时候是浪费时间。不要将时间消耗在原地徘徊。
4、挑选合适的工具
许多编程新手认为使用记事本或者VIM编程是编程的最高的境界,并花费了不少时间在这些简陋的工具上面。实际上对大多数人来说,功能强大的IDE更适合普通工作,比如强大的JetBrain系列IDE工具已经成为业界流行的标准:https://www.jetbrains.com。
工具在不断改进,这一点程序员们可不要“恋旧”。
5、使用Git
新手有时会低估一个好的源代码版本管理系统的力量,比如Git。
版本管理系统可以给工作和学习带来很多便利,你可以放心大胆的进行修改,而不用担心毁掉之前的心血;你可以尝试不同的解决方案,从现有版本延伸出不同的作品……总之,接好Git这一“守护神”,安下心来码代码。
1、提高工作效率
无论处在什么岗位,提升工作效率是首要问题。效率的提升可以为成长提供充足的时间和空间,程序员们可以从以下几点入手:
• 奥卡姆剃刀原则:如无必要,勿增实体。
在日常工作中,尤其是新手营的程序员,容易存在过度考虑的问题,将一些功能模块的复杂度无限考虑,不仅造成时间浪费,而且会给开发人员带来困扰。所以把握住奥卡姆剃刀原则非常重要,如无必要,勿增实体。
• 用户体验原则
把极简的产品体验留给用户,把最复杂的业务逻辑留给自己。理解和掌握了这句话将会让程序员突飞猛进。改变思维模式,切实立足用户需求,这才是程序员成长蜕变的最重要思想。
• 从最硬的骨头开始啃
在实际开发工作中,会遇到各式各样的问题,很多人喜欢采用鸵鸟原则,先把边角的开发工作都做完了才去啃最难的骨头。其实这种方式并不值得提偿,因为通常这种核心问题正是整个开发方案的核心,当你并不能确定“最硬的骨头”是否能够解决时,就很可能造成最后开发方案的否定,使之前的边角工作都成为无用功。
2、遵循规范化操作,提高测试能力
规范化操作包括规范化编程和规范化流程。为什么要强调规范化编程呢?因为据统计,有7成以上的bug都是由不规范的编程造成的,比如变量的作用域、函数的输出格式等等。
规范化测试流程,在模块编写完成时就进行单元测试、模块测试,通过这种规范化的流程确保每一个小的单元以及功能模块都是正确的,在最终的系统测试时才能保证一次跑通。如果等到程序全部完成了才最终进行系统测试,一次跑通则万事大吉,但大概率都是跑不通,出了问题需要从头排查,费时费力还无法定位。
3、广泛涉猎
前面我们说了要把简单的招式练到极致,但这一定不是作茧自缚,闭塞视听。对于新兴的技术还是要有所涉猎,因为全盘视野对于程序员的职业生涯发展非常重要。
• 多读好书是开阔视野的重要途径,这里说一些挑书的Tips:
1)先看作者,再看书名。一本书的质量,不在于它的名字多么酷炫,而在于它的作者是谁。没有实名作者的,往往可能是粗制滥造的图书代名词,千万别买;有实名作者署名的,还要进一步确认他是不是相关领域的大牛或者专家学者,有什么拿得出手的成就。
2)看出版社。靠谱的出版社同样也非常重要,比如OReilly的编程与技术图书,水准都很高,可以说是业界标杆。
3)看AMAZON美国排行榜。可以登录美国亚马逊,选择相应的图书类目,了解相应的图书在美国的流行程度和评价。
4)看英文原版书。建议直接看英文原版书,因为很多图书由于其译者不是编程专业的,有可能会把很多简单的专业术语翻译得晦涩难懂,反而加大了理解的难度。
• 多浏览网站是开阔视野的便捷途径,因此你要知道该上哪些网站:
不夸张地说,使用Google搜索+Stack Overflow,可以解决99%的编程问题。
使用Google英文搜索,需要你具备一定的英文基础,最起码是一些编程相关的英文专业词汇;Stack Overflow则是一个更为神奇的网站,这个网站可以解决绝大部分编程问题,甚至是直接、明确的答案和代码,不能Google的话,至少应该学会用Stack Overflow。
当你在不断重复造轮子时,应该想到你要做的项目很可能有人已经做过了,而且还开源放在了Github上,所以在项目开始之前,不如上Github上搜索一下,也许根本不需要你重新编写,Fork下来改改就能用。即使需要改动,有前人的思路和代码,也会给你带来很多启发,提高工作效率。
愿每位程序员早日打开任督二脉,技术噌噌进步,看到别样风景~
推荐阅读:
找到合适的搜索关键词。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有