程序员

顶级架构师应该具备哪些思维模型?

☆樱花仙子☆ 提交于 2020-02-26 01:45:42
什么是系统架构师? 系统架构师是一个既需要掌控整体,又需要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师需要有足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。 架构师一直是程序员「羡慕且追求」的高度,今天来说说我眼里优秀的架构师该如何定义。毕竟我也曾经是一名架构师:) 在开始今天的话题之前我说一个和我前公司P9现在已经是P10的对话。 问题是这样的他说公司中间件架构师不熟悉公司业务,很多事落地不了,非常的疑惑。他最近主要任务就是和这些架构师聊天解惑:) 接着他说了一个类比的故事大概是这样的, 我们(架构师)要建设一条高速公路,来分别看看公路建造者(架构师)和司机(业务研发)的视角。 1,建造者 他们选用最好的沙子 水泥 更好的设计图纸和操作流程保证质量和处理异常情况(比如出入口提示,超车,紧急停车带) 2,司机同志 他们关心什么? 司机关心路宽么,有堵车可以提前告知么。 司机关心路平整么?当然关心,关心。 引出一个的问题:司机(业务研发)关心用最好的水泥么 ? 想象你是司机(业务研发)你你关心吗? A,关心 B,不关心 欢迎留言留下你的思考。 系统架构师应具备哪些能力? 我觉得一名优秀的架构师,在设计系统时需要有以下这四项关键能力:「平衡取舍、预判未来、抽象思维、容错机制」。 1.平衡取舍 一个架构本质上总会有优有劣

程序员内功修炼(四)计算机网络之网络层

元气小坏坏 提交于 2020-02-26 01:27:21
1、网络层功能 2、路由算法与路由协议 3、IP数据报格式 4、IP数据报分片 5、IPV4地址 6、网络地址转换NAT 7、子网划分与子网掩码 8、无分类编址CIDR(构成超网) 9、ARP协议 10、DHCP协议 11、ICMP协议 12、IPV6 13、RIP协议与距离向量算法 14、OSPF协议及链路状态算法 15、BGP协议 16、IP组播 17、移动IP 18、网络层设备 本文参考 https://www.bilibili.com/video/av70228743 来源: oschina 链接: https://my.oschina.net/u/4451096/blog/3166059

程序员必备:那些GitHub上最受欢迎的框架你收藏了几个?

余生长醉 提交于 2020-02-26 01:18:52
转眼间2020年已经过去了近两个月,在祈祷疫情尽快消散的同时,大家也不要忘了学习啊! 众所周知前端开发是一个综合性比较强的编程工作,前端开发人员不仅需要一定的审美观和设计观,同时还需要精通诸如HTML、CSS、JavaScript等错综复杂的技术。因此,在前端开发工作中,借用一些开发框架往往能达到事半功倍的效果。 今天的文章小渡为大家搜罗了数十款目前最受程序员欢迎的前端CSS框架,其中有的霸榜已久,也有不少后起之秀,有的是单纯的CSS框架,也有的结合了JavaScript以提供更丰富的功能。一起来看看有没有你的菜吧! 01Bootstrap Bootstrap无疑是目前使用最广泛的CSS框架,GitHub上近14万的Star数就足以说明问题。 Bootstrap是一款由Twitter推出的开源CSS框架,它的核心是由一系列用于Web前端开发的工具包组成。Bootstrap基于HTML、CSS和JavaScript,是一款非常适合敏捷Web开发的CSS框架。 它的优点有很多,比如响应式设计,可以智能识别客户端浏览器的类型,从而构造适应当前设备前端布局,这一切都是全自动的。还比如拥有海量资源且简单易学。无论你是高级的前端设计师,还是普通的程序员,都能够很快地掌握Bootstrap的开发流程和开发方式。 不过也有人吐槽Bootstrap稍显臃肿,而且在使用人数太多且不定制化的情况下

聊聊前端技术的发展史

旧巷老猫 提交于 2020-02-26 00:09:12
web的起源 给大家讲一个故事,在很久以前,互联网还没有出现,电脑虽然可以与另一台电脑通信,但是也就只能做一些发发邮件或者是用FTP传输一些文件的事情。 有个喜欢每天捣鼓新技术的程序员,名字我们暂且叫他小强吧。小强是一个球迷,每天都要看一些关于NBA球赛的新闻,而且搜集了很多有关球队介绍的资料保存在电脑的硬盘上。硬盘上的球队资料大概就是下图的效果。 这样的文件有成百上千个,小强每天都要打开这些文件来欣赏各个球队的风采。有一天晚上,小强打开了“洛杉矶湖人队.txt”,文件中在介绍球队的时候,出现了一个词“科比·布莱恩特”,他灵机一动:这几个字上要是有个链接该多好啊!这样只需要轻轻一点,“科比·布莱恩特.txt”这个文件就能打开了,省的在硬盘上找来找去那么麻烦。对于程序员小强来说,这并不是什么难事,经过思考终于有了解决方案。 定义一个协议,让这些文件之间可以通过一些词链接起来,比如原来的文本是这么显示的:洛杉矶湖人队曾打造出两个“湖人王朝”,明星队员有科比·布莱恩特、奥尼尔等。 现在给这个纯文本的文字加一些标记: 洛杉矶湖人队曾打造出两个“湖人王朝”,明星队员有<a href='科比·布莱恩特.txt'>科比·布莱恩特`</a>、<a href='奥尼尔.txt'>奥尼尔</a>等。 上面这些标记虽然能读懂,但是显示出来没什么用,于是小强就开发了一个软件

Delphi/C#之父Anders Hejlsberg

隐身守侯 提交于 2020-02-25 22:03:31
Delphi、C#之父Anders Hejlsberg 近日首次访华,并在10月24日和27日参加了两场见面会,分享了他目前领导开发的TypeScript项目,并与国内前端开发者近距离交流。本文就为读者描述一下近距离接触大师的印象,以及Anders对TypeScript的设计理念和想法。 Anders Hejlsberg(安德斯·海尔斯伯格)于1960年出生于丹麦,在Borland公司开发出Turbo Pascal和Delphi之后加入微软,主持微软下一代开发工具的研发。 他为微软开发和设计出Visual J++、.NET平台以及C#语言,可以说他开发出的软件和语言影响全世界整整一代程序员。 目前,他是C#语言的首席架构师和TypeScript的核心开发者与TypeScript开源项目的重要领导人。 Anders印象 Anders现年55岁,在软件开发的道路上已经走过30余年,但仍然对工作充满热情。他性格和善而风趣,同时,还是个纯粹的程序员,每天仍然有很多时间花在编程上。 虽然相处时间不长,但大家纷纷围着他舍不得分开,这是一位让人愿意亲近的长者、前辈和大师。 笔者将他的印象总结为三点:终身编程、开源信徒、语言大师。 终身编程 Anders现在每天仍然花大量的时间实际写代码,并且未来会一直写下去。 他很清醒的知道自己长处:“相比起管理,我还是更擅长于编程。” 事实上

放弃了程序员互联网高薪,跑去事业单位做IT的尴尬

自古美人都是妖i 提交于 2020-02-25 22:02:18
“你是程序员对吧?” “是啊,怎么了?” “那你帮我修一下电脑吧。” 我原来也是一个重点大学毕业,基本上事业里面搞IT就干这些事情,要是以前,我肯定会想,我是程序员和修电脑有啥关系。 但是自从进了事业单位,下面是我的工作日常: 小李啊,你帮我看看为啥这个视频我下载不起啊 小李啊,你帮我看看为啥这个视频我的手机放不起,他们的手机都放的起 小李啊,你帮我看看咋个我的PPT投影不上啊 小李啊,你来帮我看看啊,(看:桌面堆满文件,程序都在C盘),你说我的电脑怎么这么慢啊是不是该换新的了啊买个什么好啊 一般事业单位也没有大的开发项目,平时基本还是很闲的。可是前不久,单位领导提出做信息化建设,因为传统的纸质办公已经远远不能满足工作需要,准备上一套真正贴合他们单位且有自主知识产权的OA系统,最好手机端电脑端都有。 这个任务紧,可是我们信息科就3个不让加人,可把我们难到了。但是想想自己也是重点大学毕业做了几年才来的事业单位,有大的开发项目经验。应该不会很难。 我和同事们破天荒地加了两三天班,把业务逻辑理清。但是接下来这个开发需要专业的美工、前端去哪找? 幸好现在都是互联网时代,平时还关注开发这块。于是百度搜索快速开发平台,看看有没有可二次开发的产品减少我们人力和时间的投入。一搜找到一个xjr快速开发平台,可以开发企业各种业务功能系统。通过xjr快速开发平台的体验发现真的好,不用专业的架构师、美工

《程序员的办公室日常》第一回 相识

空扰寡人 提交于 2020-02-25 21:34:31
今天阿中像平常一样,又是最后一个进了办公室。 这要是在以前,腼腆的阿中肯定会像是小学生犯了错一样,满脸羞红的悄悄溜进办公室,生怕弄出一点动静而被其它同事发现。但现在不一样了,现在阿中已经在这家大企业度过了8年的时光,虽然现在不是什么领导,但他的资历辈分却比很多领导都要大,所以领导平时也会很给这个老同事面子,包括经常迟到这件事 。。。 “哎,你们听说了没有?” “什么啊?” “今天咱们部门入职的妹子里面有位大美女!” 同事这么一说,整个办公室瞬间开始吵杂了起来。阿中的部门是这家国企中的 IT技术部门,向来一直是男多女少,而且程序员的形象,大家也都懂的,能简洁就简洁,平时爱好代码胜过于爱自己的妆容。包括部门里面的少数女生程序员,本身没有化妆的爱好,加上整天被4K液晶电脑屏幕散发出的光束侵蚀着,导致部门中大家向来一直是哥们兄弟相称。 阿中听到有美女一来,也心动了一下,毕竟自己已经过了30岁的生日了,但至今还是单身。家里也没少为他的事儿操心,而阿中却一副无所谓的样子,整天把时间用在学习各种技术资料和敲代码身上,似乎还没有意识到自己已经慢慢成为一名中年油腻男的现实。 “有照片没有啊?” “一会儿来部门的时候不就能见到了呀!!” 听到没有照片,阿中也不想再参考讨论这个话题,又将精力收回到了自己的电脑屏幕上。 “怎么咱们公司也要搞中台了啊,现在有人能讲清楚中台是个什么东西吗?”

为什么都在说:程序员千万不要重写代码?

戏子无情 提交于 2020-02-25 19:30:18
你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根。 前言 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来。是的,他们决不会满足于简单的增量劳动。 或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟。 但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难。 一 为什么你觉得旧代码异常混乱?因为读代码更难 这大概就是代码Reuse难以实现的原因,也可以解释为什么你组里的每个人都喜欢用不同的功能将分割的字符串转换成一个数组。比起猜测旧的功能是怎样实现的,重新写一个自己的功能要简单和有趣多了。 作为这个公理的推论,你可以问问身边的程序员他们正在奋战的代码怎么样?“简直是一塌糊涂!”他们肯定会这样说。“我简直想推倒重来!” 为什么认为代码这么糟糕呢?“额,看看这个功能,竟然有两页长!完全不知道这些东西为什么在这里!完全不知道这些API是干什么的。”他们会这样回答你。 曾经,Borland的创始人 Philippe Kahn当初就是向记者们吹嘘:Quattro Pro会比Microsoft Excel要好用得多,因为它是从头开始编写的,全部都是新的源代码! 但是

小白程序员最容易踩的“坑”,你踩过几个?

时光毁灭记忆、已成空白 提交于 2020-02-25 19:27:06
人生,就是一边踩“坑”,一边上升的过程。而程序员的一生,不仅要改无数的BUG,也要越过很多的“坑”。今天,下面为大家分享一些开发人员常见的“坑”,希望同学们能够从中受益。 1、重新实现API中已有的代码 大多数开发人员都会利用某种框架来减轻工作的负担。对于没有使用该框架经验的开发人员来说,掌握框架的API提供的所有功能非常困难。 因此,他们常常会重新实现API中已有的某些代码。没有经验的开发人员更有可能踩这个坑的原因有两个: 第一,由于缺乏经验,这些开发人员不了解API中有哪些开箱即用的功能。所以他们会白白浪费时间来编写框架中已有的代码。由于缺乏经验,所以他们无法充分地利用框架。 第二,缺乏经验的开发人员不知道去哪儿找相应的文档。更有甚者,有人根本不看文档。 对于没有经验的开发人员来说,这是一个陷阱,因为重新创建相同的功能似乎很诱人。有些函数只需重写几行代码即可。 另外,重写这几行代码也不需要花费太多时间。但重写相同的代码有一定的弊端:造成代码库持有重复且未经测试的代码;由于新函数的引入,代码会更加复杂。 其他开发人员不熟悉这个函数,而且也不理解你为什么要引入这个函数。从整体来看,你的这一举动增加了复杂性,却没有充分的理由。 2、简单的问题不要复杂化 有时开发人员会遇到力所能及范围之外的工作。问题在于经验丰富的开发人员知道何时承认这一点。 有经验的开发人员会想方设法的尽量简化工作

必读丨新手程序员最容易踩的“坑”,你踩过几个?

早过忘川 提交于 2020-02-25 19:18:41
人生,就是一边踩“坑”,一边上升的过程。而程序员的一生,不仅要改无数的BUG,也要越过很多的“坑”。今天,小千为大家分享一些开发人员常见的“坑”,希望同学们能够从中受益。 1、重新实现API中已有的代码 大多数开发人员都会利用某种框架来减轻工作的负担。对于没有使用该框架经验的开发人员来说,掌握框架的API提供的所有功能非常困难。 因此,他们常常会重新实现API中已有的某些代码。没有经验的开发人员更有可能踩这个坑的原因有两个: 第一,由于缺乏经验,这些开发人员不了解API中有哪些开箱即用的功能。所以他们会白白浪费时间来编写框架中已有的代码。由于缺乏经验,所以他们无法充分地利用框架。 第二,缺乏经验的开发人员不知道去哪儿找相应的文档。更有甚者,有人根本不看文档。 对于没有经验的开发人员来说,这是一个陷阱,因为重新创建相同的功能似乎很诱人。有些函数只需重写几行代码即可。 另外,重写这几行代码也不需要花费太多时间。但重写相同的代码有一定的弊端:造成代码库持有重复且未经测试的代码;由于新函数的引入,代码会更加复杂。 其他开发人员不熟悉这个函数,而且也不理解你为什么要引入这个函数。从整体来看,你的这一举动增加了复杂性,却没有充分的理由。 2、简单的问题不要复杂化 有时开发人员会遇到力所能及范围之外的工作。问题在于经验丰富的开发人员知道何时承认这一点。 有经验的开发人员会想方设法的尽量简化工作