IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

开发者

共 811 篇文章

IT 2016-07-17 23:59:37 / 累计浏览 1,401

不要在和你观点不同的人身上浪费时间

这篇讲的是,作者从网络上常见的观点论战现象出发,提出一个鲜明主张:别在与你观点不同的人身上浪费时间。但这里的“不浪费”,核心意思是,把心力和专注点都放在做成事情、拿出结果上。 文章首先点出,面对不同观点,关键在于理解其背后逻辑——对方为什么这么想、推论有何盲点。如果这过程能启发你,那就“闷声发大财”;如果明显有问题,在没有特别义务时,保持沉默对双方都好。作者以自身文章较少引发撕扯为例,说明看透逻辑能平息辩解冲动。 更深一层,作者强调价值观差异不可调和。像“求同存异”一样,在不得不合作时找共同点,但根本信念不同的人,比如信奉投机取巧与勤劳扎实者,在关键时刻反应迥异。对此,既不必说服,也费劲无效,各自相安为上策。 归根结底,观点分歧在成年人世界里并不重要,重要的是你能否依托自己的价值体系持续进步,做出成果。作者举华为为例——即便被诟病加班文化,但年业绩800亿美元的实绩无可辩驳;而对比一些连房租都愁却网络论政的人,文章建议先“修好自己的身”。 最终,作者回到开头:不争论,是为了专注成长与产出。当你内心不认可他人时,要意识到,你对他而言也一样不重要。所以,大家都去好好干活吧,干出来的成果,往往自有相似的力量。

本机暂存
IT 2016-05-15 23:54:41 / 累计浏览 1,216

关于团队管理的一些思考

这篇写给中层管理者的信,源于作者从“手艺人”向“有政治觉悟的手艺人”转型的切身思考。作者坦言,这是自己在带领团队两年多时间里,被各种状况推着走、不断观察与沟通后总结出的心得。 核心观点围绕几个关键问题展开:首先,团队与个人是相互成就、双向选择的关系,必须建立“今天不努力,明天被替代”的清醒认知,甚至“快于平台成长”。其次,管理者必须敢于开除人,这是建立团队活力和对成员真正负责的第一步。此外,文章强调要建立由“旗手”引领的梯队,形成可传承的团队文化;团队在内部抱团的同时必须对外保持开放融合,避免小圈子化。 作者特别提出了“有政治觉悟的手艺人”这一概念。他认为,在具备专业技能的基础上,懂得处理人与人的关系、学会合作与竞争(即“政治觉悟”),才是管理者在职业道路上更上一层楼的关键,这比单纯的高智商更重要。 文章最后以一句直接而充满期许的话作结:“加油吧兄弟们,早日取代我!”这既是对团队的激励,也呼应了开头“相互成就”的核心理念。

本机暂存
IT 2016-04-02 12:53:14 / 累计浏览 3,765

聊聊 Apache 开源协议

作者从一次开源项目疏于声明版权的小插曲谈起,引出了对 Apache 开源协议的讨论。文章首先用几句话精准概括了 Apache License 的核心:你可以自由使用、修改代码,但若进行开源分发,必须保留原始版权声明并清晰标注改动部分;你甚至可以附加新条款,但前提是与原协议不冲突。 接着,文章将 Apache 协议与社区常见的 MIT、GPL 协议进行了对比。一个关键区别在于,Apache 协议允许衍生作品在特定条件下保持闭源,这与 GPL 的“传染性”(即使用了 GPL 代码的衍生作品也必须开源)形成鲜明对比。作者指出,这正是 Android 系统选择 Apache 协议的主要原因——它允许硬件厂商提供闭源的驱动程序,从而在商业与开源之间找到了一个平衡点。 文中还提到了作者亲自翻译 Apache 协议原文的工作,为读者提供了直接阅读理解的便利。整个讲解结合了具体案例和协议条款,把枯燥的法律文本讲得清晰易懂。

本机暂存
IT 2016-03-29 23:46:18 / 累计浏览 1,620

54chen的程序人生

这篇讲的是一位近十年经验的程序员,回溯二十年前前辈文章后,对自己职业人生的思考。作者从自身成长经历出发,提出程序员应具备的四种核心品质:坚定(对计算机的热爱不因外界枯燥而消退)、乐观(面对行业压力与温饱现实仍不放弃)、冷静(以逻辑战胜困难而非焦虑)、钻研(视排查问题为学习契机而非负担)。 文章具体提及了早期通过小霸王、BBS、外包项目接触计算机的同行共性,也分享了金山实习时“工资只够付房租”的真实窘境,对比了同事因bug焦虑失措的案例。作者最终将程序员的人生路径归结为两条:或以专业积累实现迁移,或跳出纯技术视角转向创业。 这并非一篇技术方案讨论,而是一份带着代码注释风格的职业心路记录,冷静中透着乐观,写给同样在键盘前思考去向的同行。

本机暂存
IT 2016-03-22 22:11:08 / 累计浏览 5,573

献给有裸辞想法的朋友们

这篇讲的是一位前阿里员工从自身职业经历出发,给正在考虑裸辞的技术人提供务实建议。 作者校招进入阿里做Java Web,因对Android开发产生兴趣,在职自学一年后选择裸辞,转型成为Android开发者。他详细复盘了当时的决策过程:一方面因为内部平台成就感低,另一方面确实需要整块时间学习和开发App。裸辞后他休息了两个月,骑行川藏线,之后加入了Android ROM创业公司。 不过,文章的重点在于后续的反思与建议。作者明确表示“不建议裸辞”,并深入剖析了核心原因:裸辞后作为失业者,求职和谈薪都会处于被动,尤其对于转技术方向的人,技能不熟练会成为明显短板;同时,持续的消费和收入中断会带来切实的生活压力。相比之下,他强烈建议“内部转岗”。BAT等大公司内部通常有不错的技术资源和转岗机制,这既能让你切换到感兴趣的领域,又能规避裸辞带来的职业空窗期风险。 文章最后提醒,技术学习终究要靠自己,不必过度追求“共同进步”的环境。对于“打杂”期感到不满的新人,他建议先理清自身目标与能力,对自己的职业规划负责。这是一篇带着过来人温度与理性计算的职业规划指南。

本机暂存
IT 2016-03-21 23:46:42 / 累计浏览 2,623

30条编程名言佳句: 这不是Bug只是未知的特性

不是段子,是真知灼见。这篇汇集了30条来自技术书籍开篇与大佬们(包括松本行弘、Linus Torvalds、Donald Knuth等)的经典编程名言,以一种幽默而犀利的方式,道尽了软件开发的那些事儿。 文章的核心观点是,编程远不止是编写代码,它更是关于人的艺术与复杂的学问。比如Martin Fowler与Kent Beck都在强调,写出人类能理解的“好代码”并养成良好习惯,远比炫技更重要。而控制复杂性则是贯穿始终的主题,Fred Brooks用“九个女人不能生一个孩子”的比喻点破了项目管理的误区,Brian Kernighan则直指其为编程的本质。 文中也不乏那些令开发者会心一笑的“行业真理”,如“它在我的机器上能运行”、“这不是bug,只是未列出的特性”,生动反映了日常困境。从对“过早优化”的警惕到“好代码就是最好的文档”的倡导,这些凝练的句子为技术人提供了思考的支点和会心一笑的共鸣。 这些语录不仅是技术思考的结晶,更像是一个行业文化的缩影,适合放在手边,时常翻阅。

本机暂存
IT 2016-03-18 12:37:09 / 累计浏览 3,005

Mac实用技巧——在Finder中显示文件完整路径

这篇讲的是一个让Mac Finder显示文件完整路径的实用技巧。在默认设置下,Finder只会在标题栏显示当前文件夹的名字,而不会显示完整路径,这给需要频繁导航多层目录的用户带来了不便,尤其是在处理复杂项目文件时,常常需要反复点

本机暂存
IT 2016-03-01 14:02:48 / 累计浏览 5,667

Macbook Air换电池教程

这篇教程源自作者亲身体验:一台2012款Macbook Air使用三年半后,电池从最初五六小时的续航暴跌到仅一小时,最终插电能显示充满但拔电即关机,确认电池彻底老化。 为避免官方维修的高成本,作者决定自行更换电池。在淘宝上找到匹配型号的绿巨能品牌

本机暂存
IT 2016-02-29 23:58:29 / 累计浏览 5,577

技术领导要不要写代码?

这篇讲的是技术领导到底要不要亲自动手写代码这个经典难题。作者从自己刚入行时听闻的“程序员吃青春饭,30岁转管理就不用写代码”的观念,谈到自己当上技术领导后,反而在危急关头写了比以往都多的代码来拯救系统,由此引发了深层思考。 文章没有直接给出“要”或“不要”的答案,而是通过一个具体的团队生产率计算模型来分析。模型对比了技术领导自己单干,以及将时间用于制定规范、优化流程以提升整个团队编码速度和质量后的产出差异,清晰地指出了领导者的核心价值在于“驱动团队”,而非个人贡献。 作者进而提出,在具体场景下(如填补团队能力空白、用代码说服同事)技术领导必须写代码,同时也主张“应当”写,以保持技术手感和决策依据。最终的结论是:没有统一答案,有时要忍住“让我来”的冲动,有时则要忍住“嫌他人代码差”的恶心。文章结尾颇为亲切地提到,愿意写代码的技术领导更可爱,因为这传递出“我和你们是一伙的”信号。

本机暂存
IT 2016-02-21 22:54:19 / 累计浏览 4,016

手滑的故事

这篇讲的是程序员们“手滑”引发的线上惊魂时刻。作者从自己和同行的经历出发,提到了忘带WHERE条件的UPDATE和DELETE、误执行`rm -rf`,以及误杀重要的线上Hadoop任务、误删生产文件等真实案例。那些操作失误后瞬间“浑身颤抖”的体感,相信很多工程师都似曾相识。 文章不仅罗列事故,更着重讨论了事后反应的光谱:从最糟糕的当众批评、追责到底,到更理性的对外冷处理、对内聚焦问题根因而非个人。作者认为,责任主体往往已懊悔万分,过度追责反而导致“不做不错”的消极心态;而复杂的Checklist或繁琐的审批流程,也只是笨拙且降低效率的补救。 他更推崇那些“不知不觉”规避风险的实践,例如建立不同权限的Linux用户,以及做好充分的备份与容错机制。核心观点是:在系统维护中,人远不如机器可靠。与其纠结于事后惩处,不如构建鼓励坦诚报告、聚焦系统性改进的工程文化,因为“没有手滑的人生,是不完整的”。

本机暂存
IT 2016-02-21 22:51:27 / 累计浏览 3,388

程序员如何写出一份好的文档?

程序员的工作不止是写代码,文档质量同样影响项目协作效率。这篇经验分享文章直接切入痛点,从四个实用技巧出发,教你如何写出清晰、易懂的技术文档。 作者首先强调了结构化的重要性——杂糅的信息会变成“云里雾里”,而将功能点逐条列出,逻辑立刻清晰。其次,对于socket通信这类流程性内容,一张流程图比大段文字更直观,读者能迅速把握整体逻辑。第三,当涉及连续的数据对比(如每月bug修复量)时,用图表替代文字描述,数字变化一目了然。最后,避免直接堆砌代码,转而使用伪代码或流程图来说明设计思想,能显著降低阅读门槛,让文档更具普适性。 这些技巧的核心,正如文中引用爱因斯坦的话,都指向一个原则:简单就是美。好的技术文档也应如此,用最直接的方式传递信息,让读者轻松理解复杂的内容。

本机暂存
IT 2016-02-21 22:47:37 / 累计浏览 2,277

从Java和JavaScript来学习Haskell和Groovy(DSL)

这篇讲的是如何借助Java和JavaScript的已有知识,来理解Haskell和Groovy中DSL(领域特定语言)的实现思路。文章开篇厘清了DSL的概念——它专注于特定领域,追求简洁与表达力,而非通用性。 作者首先剖析了Java实现DSL的路径与局限。Java主要依赖链式调用和嵌套函数来构建结构,但受限于冗长的语法。随后,文章深入讲解了JDK8的闭包与Lambda表达式如何让Java拥有函数式编程的可能,使代码(如排序逻辑)得以大幅简化,并解释了`@FunctionalInterface`注解背后的原理。 转向JavaScript时,文章指出其核心优势在于函数可作为“一等公民”,使得DSL能以更灵活、更具表现力的形式被编写,例如通过高阶函数实现数据流的流畅操作。 最后,文章展示了Groovy为何是DSL的“天选之语”。它不仅语法糖丰富、代码接近自然语言,更提供了`MethodMissing`等特性,能优雅地构建如HTML生成器这样可读性极强的DSL示例。通过对比这三种语言的特性,文章清晰地呈现了它们在DSL实现上各自的适用场景与表达能力。

本机暂存
IT 2016-02-20 14:16:35 / 累计浏览 1,990

[Java基础教程]第六章-Java数学运算符

这篇讲的是Java里最基础的数学运算。作者从计算机最初被设计用于计算导弹轨迹这一背景出发,引出了对基础数据类型和运算符的必要讲解。 文章首先梳理了Java的八种基本数据类型,如byte、int、long等整型,以及float、double等浮点型,并通过代码示例展示了如何利用包装类(如Integer、Double)获取它们的最小值和最大值。这部分清晰地区分了语言本身支持的类型和JDK提供的工具类。 在此基础上,文章用具体代码演示了加、减、乘、除与取模等运算符的用法。不仅展示了简单运算,还通过“混合四则运算”和“使用括号的运算”两个例子,说明了运算符的优先级规则。最后,文章提出了一个简单的习题:实现一个计算器类来处理乘法等运算,将理论知识引向实践。 整体来看,这是一篇扎实的入门级教程,它把数学运算这个看似简单的主题,与数据类型的底层细节和运算优先级的实践要点结合起来,为初学者打下了不错的基础。

本机暂存
IT 2016-02-16 21:06:25 / 累计浏览 6,248

2015中国程序员生存报告,请勿对号入座

这篇发布于2015年的文章,以一份“不负责任”的报告形式,用幽默甚至自嘲的笔触勾勒了当时中国程序员的群体画像。文章起点是Stack Overflow的数据:全球软件开发者中男性占92.1%,而文章调侃道,剩下的女性比例里“一个姑娘也没给中国同行留”。 围绕这个背景,作者从几个切面展开了对“生存报告”的描绘:从性别比例失衡导致的社交硬伤,到对“猝死”话题的下意识警觉;从与“天敌”产品经理在像素级需求上的日常博弈,到对薪资增长靠跳槽、职业天花板无形的隐晦吐槽。文章甚至将“出路”话题引向了最终与产品经理“成为最熟悉的人”的无奈又好笑的结论。 它并非一份严肃的调查报告,而更像是一次基于行业共识的集体自嘲与情绪表达。这种“别对号入座”的标题,恰恰精准击中了程序员群体在高速迭代的技术压力与相对单一的生活环境中,所共享的、复杂又难以言状的生存状态。

本机暂存
IT 2016-02-16 20:39:23 / 累计浏览 2,890

程序员为什么要学好英语

这篇文章探讨了程序员为何不应止步于“专业英语”,而需掌握真正的英语能力。作者从校园里的《计算机英语》课程切入,指出许多人误以为程序员只需背熟术语、看懂文档即可,但这导致技术概念如同“天外陨石”般生硬难记。 真正的关键在于理解英文词汇的原生语境。文章以 cache(隐蔽的储藏处)和 buffer(减震装置)为例,说明它们在计算机中“缓存”与“缓冲”的含义正是从生活经验中演化而来。同样,serialize(无间隔排列)和 flatten(打平)的生动本意,让“序列化”与“扁平化”的操作变得直观。若仅靠中文译名死记硬背,不仅易混淆,也丢失了技术术语中鲜活的逻辑。 作者强调,许多术语如同从生活土壤中生长的庄稼,英文原意能为理解提供“根系”。仅靠翻译或硬背专业词汇,难以融会贯通,甚至会使程序员显得“古怪”而无趣。真正的出路在于完整地学习英语,用英文思考和理解世界,从而让技术学习不再是机械的搬运,而是有机的生长。

本机暂存
IT 2016-02-13 23:58:27 / 累计浏览 4,042

如何写简历

这是一位资深技术面试官看了200多份简历后的经验之谈,核心就一个词:**换位思考**。作者从招聘方的视角,拆解了一份“让人想约面试”的简历该是什么样。 文章从最基础的**文件命名**说起,建议直接带上姓名、岗位和城市,比如“崔凯-UI设计-北京”,这能极大方便HR归类和安排,别用光秃秃的“个人简历”。**项目经验**部分尤其实在:直接对齐招聘需求,把相关项目放前面,有在线链接就给链接,别让人费劲去搜。作者吐槽了40多MB的设计压缩包,也庆幸自己多花功夫搜了App Store——但更多时候,面试官没这个耐心。附带**GitHub或博客**是加分项,但得有内容,四年没更新的仓库反而会减分。 最后提醒了**格式**这种魔鬼细节:请用PDF,别用自定义字体的Word;如果用HTML,记得加打印样式,不然炫酷的页面打出来可能是一团黑。整篇文章没有空泛的说教,全是来自招聘一线的细节和痛点,最终指向一个朴素的结论:让拿到简历的对方感到舒服和清晰,事情就成了一大半。对于求职者来说,这比任何模板都更有参考价值。

本机暂存
IT 2016-02-13 22:41:27 / 累计浏览 6,086

如何教会非计算机专业的女友写代码

这篇讲的是一个计算机专业男生如何系统指导金融专业女友转行前端开发并成功就业的完整经历。 作者从自身背景出发,为女友选择了适合入门且“可进可退”的前端方向,并制定了清晰的学习路径:从《Head First》系列和《JavaScript语言精粹》等书籍掌握基础语法,再通过言传身教渗透HTTP协议、网络通信等原理知识。他强调“工欲善其事”,专门为女友购置MacBook Pro以便熟悉Vim、Git等开发工具。 实践环节是关键。作者引导女友在GitHub写博客、开发小作品,并报名参加了筛选制的百度IFE前端技术学院。当基础扎实后,便鼓励她投递简历,通过面试发现不足,最终顺利获得实习Offer。过程中遇到的JS异步、闭包等难点,也被一一攻克。 文章还直面了两个常见偏见:技术是否适合女性,以及互联网行业是否过于繁忙。作者以实例论证,技术岗位对女生同样有吸引力且并不枯燥,互联网公司也存在灵活的工作选择。最后,他用自己的支持与担当,为这段转行之路画上了有温度的句号。

本机暂存
IT 2016-02-13 22:40:31 / 累计浏览 2,311

创业路上的那点事(一周年小记)

这篇是一位创业公司成员的一周年经验记录,分享了几个他观察到的典型现象。作者从“精英与接地气”的取舍谈起,指出创业初期需要的是能解决具体问题、适应不同阶段的“靠谱”人才,而非一味追求顶尖精英;接着强调个人价值最大化的重要性——选择加入的时机,应是自身能力最能匹配公司需求之时。 文章也剖析了创业心态与现状:盲目的乐观虽看似非理性,却比弥漫焦虑更利于团队奔跑;当前融资环境可能隐藏泡沫,而真正顺利的公司往往选择“闷声发大财”,低调发展。此外,从大公司带来的“无知优越感”、工具齐全环境对创造力的限制,都是需要警惕的思维陷阱。 作者最后回归朴素理解:创业就是一群人把一件事做成了,碰巧对社会有益、也对自己有回报。甩开膀子去干,享受过程,尽最大努力也做好最坏打算——这或许才是面对创业最实在的态度。

本机暂存
IT 2016-02-12 17:47:22 / 累计浏览 1,388

开源项目的那点事

作者从近期重构CppJieba、发布NodeJieba的实践出发,分享了自己在开源社区中的几点切身感受与学习开源项目的方法。 他强调,一个重视用户体验的开源项目,往往从“简陋”但无依赖的轻量版本开始,例如他早期的CppJieba和ideawu的SSDB,都坚持不依赖第三方库以实现即装即用。在学习上,他建议开发者善于积累自己的代码片段,将小实验逐步组合成项目;同时也要“站在前人的肩膀上”,优先参考现有分析文档再阅读源码,避免低效硬啃。 作者提出了一个颇具启发性的观点:开源项目的学习价值并非由star数决定,而在于其与学习者当前工作的相关性及代码的可读性。他认为,阅读与自己领域相近、核心逻辑清晰的源码,更能带来实际灵感;而一味追求明星项目或高性能代码,有时反而因牺牲可读性而难以深入。 最后,他呼吁回归开源初衷——即知识的分享与传播,而非过分功利化。整篇文章将个人开发经历与开源学习心得紧密结合,对初入社区或希望提升源码阅读能力的开发者都有切实的参考意义。

本机暂存
IT 2016-02-12 17:46:25 / 累计浏览 3,707

不要总是选择困难模式

这篇文章通过一个研究生的成功转型案例,讨论了技术初学者在职业起步阶段的策略选择。作者从一位非计算机背景、基础薄弱的同学咨询职业规划的邮件切入,该同学明确以iOS开发为切入目标,优先打造竞争力而非全面补基础,最终顺利拿到阿里和腾讯的Offer。 文章由此引出核心观点:技术学习如同游戏,存在“困难模式”(如C/C++基础架构方向)与“简单模式”(如前端、移动端等方向)。对于基础不扎实的应届生,作者建议优先考虑需求量大、机会更多的“简单模式”赛道,而非盲目挑战门槛高、竞争激烈的红海领域。文中以2010年安卓与嵌入式的选择对比为例,指出了盲目追求“高级难度”可能带来的长远遗憾。 作者进一步以多位技术大佬的实际选择为例——如鸟哥专攻PHP性能优化而非GCC、AstaXie用Go开发框架而非Erlang——说明即便是高手,也会精明地选择投入产出比更高的方向。这篇文章并非否定挑战高难度的价值,而是提醒读者:清晰的自我定位和务实的路径选择,有时比一味“迎难而上”更能通向成功。

本机暂存