最新文章
让我们再聊聊浏览器资源加载优化 Web前端
几乎每一个前端程序员都知道应该把script标签放在页面底部。关于这个经典的论述可以追溯到Nicholas的High Performance Javasript这本书的第一章Loading and Execution中,他之所以建议这么做是因为:Put all ...
开源软件许可协议简介 开源
英文原文:A Short Guide To Open-Source And Similar Licenses 很多软件开发者和设计者都有将自己的软件作品以开源的形式公之于众的想法。他们希望其他人也可以分享自己的作品,使用自己的作品。开源社区之所以能蓬勃发展就是因为人们有这样的愿望。开源软件如此...
程序员的自我修养(2)——计算机网络 编程基础
相关文章:程序员的自我修养——操作系统篇 几乎所有的计算机程序,都会牵涉到网络通信。因此,了解计算机基础网络知识,对每一个程序员来说都是异常重要的。 本文在介绍一些基础网络知识的同时,给出了一些高质量的系列文章链接,以方便大家随时参考学习。相信通过本文的学习,你能对计算机网络有全面的认识!在...
你是否中了工程师文化的毒? 程序人生
工程师在互联网科技的发展道路上扮演着很重要的角色,如创立微软的程序员比尔·盖茨,打造 Facebook 社交网络的黑客先生扎克伯格,以及做搜索算法创建Google的佩奇和布林,这些互联网公司都是由工程师创立的。他们解决了很多难题,也因为深知工程师的重要性,所以公司不免充满了浓郁的工程师文化。甚至...
不安分的工程师 程序人生
在超级杯中,拜仁和切尔西战成平手,点球大战中,20岁的年轻的球员卢卡库站出来罚球,遗憾的是罚失点球,令整支球队失败,丢掉冠军。对于失落和愧疚的年轻人,切尔西的传奇射手德罗巴在Instagram上鼓励了他:“只有那些从不踢点球的人才不会罚失点球,罚点球你足够强大。你需要从中学习,我也有过类似的经历...
流量劫持——浮层登录框的隐患 Web前端
传统的登录框 在之前的文章流量劫持危害详细讲解了 HTTP 的高危性,以至于重要的操作都使用 HTTPS 协议,来保障流量在途中的安全。 这是最经典的登录模式。尽管主页面并没有开启 HTTPS,但登录时会跳转到一个安全页面来进行,所以整个过程仍是比较安全的 —— 至少在登录页面是安全的。 ...
Amazon前技术副总裁解剖完美技术面试 求职面试
英文原文:The Anatomy of the Perfect Technical Interview from a Former Amazon VP 编者按:本文来自First Round Review,他们准备的文章既讲故事,还同时向创业者提供可操作的建议,以助力打造优秀的公司。 Nei...
程序员的自我修养——操作系统篇 编程基础
也许,只需这一篇文章,便能让你全面的认识操作系统! 在阅读本文之前,推荐阅读“自己动手制作4位计算机”。目录:1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。5. 线程的实现方式. (用户线程与内核线程的区别)6...
五个广泛流传的对大龄程序员的误解 程序人生
最近我过了40岁生日。 一个朋友开玩笑的对我说:”嘿,我想这个意味着你已经老的不适合再去编程了吧!“,我表面上哈哈一笑,但心里却触动不少。 年龄歧视在我们这行里并不可笑。 就像今天用Java的兄弟沦落到这个地步一样,几年前,使用COBOL家伙被我们从心底里嘲笑其老旧的编码方式和缺乏新技术中的灵活...
程序员的“横向发展” 程序人生
在我小的时候,家长经常对胖孩子打趣说:哟,身体长得挺快,可惜就是横向发展了。看来在很多人的潜意识里,纵向发展是向上的,值得夸奖,横向发展则不是那么光彩的事情。但是我的工作经历和思考,却让我对“横向发展”有了新的认识。 程序员的发展,长期以来都是大家关心的问题。通常程序员的发展有两大方向,深度和...
破窗理论 程序人生
在过去的一篇文章里,我曾经提到过“破窗理论”。对于下面这个实用主义程序员的观点,你或许很熟悉: 不要放任“破窗”(不良的设计、错误的决定或者糟糕的代码)不管,一旦发现就要尽快修复。如果时间不够,那就先把它隔离起来。你可以把这些令人不快的代码注释掉,或者显示“尚未实现”的消息,或者用虚假的数据来...
模板,从服务端到客户端 Web前端
英文原文: Client-Side Templating 在浏览器中使用模板是一个日渐热门的趋势。将服务端的逻辑应用到客户端上,还有越来越多的类MVC模式(模型-视图-控制器:model-view-controller)的使用都使得在浏览器中“模板”的角色越来越重要。在过去,“模板”从来都是服...
前端架构那些事儿 Web前端
在谈前端架构之前,需要先探讨一下不同人群对前端产生的困惑。前端这个职业最近几年才逐渐被认可,之前一直是低端的代名词,所以多数高手很不屑搞这个。之前的很多项目,人们对前端这块的要求也只是能用就行,所以很少会在上面去细致、深入地建立一套完善体系。而多数产品的技术经理也会是后端出身的,往往对前端的认识...
如何系统性地保障软件的性能 软件工程
一个正在持续增加新功能的软件,尤其是类似QQ这种做为一个超大规模客户端软件,又随时需要适应用户要求和发展的需求,需要不断的做快速的更新,开发节奏非常快。而且因为我们的用户是海量用户,用户的软硬件环境非常复杂。性能作为软件的用户第一体验,如何去系统性地保障软件的性能,对于QQ来说就变得非常重要。 ...
程序员的样子(二) 程序人生
有一个 bug 我研究了三天没有解决掉,却发现一个高手轻而易举的解决了当最终决定跳槽时程序员的样子当修改一个小 bug 却把整个服务给弄宕机时的样子当其他程序员都在开会,我说我正在赶进度,不去开会了当我测试刚写完的代码时发生的事情当走进办公室看到邻座新来了一位女汉子同事时程序员的样子当老板在项目投标...
程序员必须知道的10大基础实用算法及其讲解 编程基础
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效...
扁平和简约来袭 软件设计
英文原文:Flat And Thin Are In 在过去几年里,软件和APP的界面设计风格发生了迅速变化,由3D、拟物发展到扁平、简约。尽管这一趋势普遍存在,我们还是思考下是如何发展至此的,以及它对整个界面设计领域有何影响。另外,我会分享扁平界面设计的一些技巧和注意问题。WindowsPho...
前端开发中使用”有限状态机“解决复杂的交互问题 Web前端
前端开发是有逻辑的,这点毋庸置疑。程序员的思维逻辑赋予了代码各种能力,但是前端开发中经常面对的是用户的操作。在一个比较复杂的页面中(貌似现在也很少有简单页面了),用户的操作是不可预见的,假如有很多按钮,每个按钮都会做一件自己独一无二的事,如果上帝保佑所有的这些操作,这些事件都彼此没有限制,而且结...
开发团队的效率 项目管理
我之前写过一篇叫《加班与效率》的文章,从概念上说了一些我对“效率”的认识,但是那篇文章趋于概念化,对于一些没有经历过这样的环境的同学来说,可能会觉得太抽象了。很早以前就想写一篇更具体一点的,可执行的文章与《加班与效率》这篇文章相辉映,并再把我两年前在杭州QCon上的那个“鼓吹工程师文化”的《建一...
存储系统的那些事 软件设计
存储系统从其与生俱来的使命来说,就难以摆脱复杂系统的魔咒。无论是从单机时代的文件系统,还是后来C/S或B/S结构下数据库这样的存储中间件兴起,还是如今炙手可热的云存储服务来说,存储都很复杂,而且是越来越复杂。 存储为什么会复杂,要从什么是存储谈起。存储这个词非常平凡,存储 + 计算(操作)就构...