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

开发者

共 800 篇文章

IT 2014-11-23 21:33:03 / 累计浏览 2,346

小心 int 乘法溢出!

这篇讲的是 C/C++ 编程中一个隐蔽却危害巨大的陷阱:32 位 `int` 类型在进行乘法运算时可能发生的溢出问题。作者从一个实际场景切入——试图用 `malloc()` 分配 3000MB 内存时,代码 `mb * 1024 * 1024` 由于 `int` 只有 32 位,其计算结果早已溢出为负值 `-1073741824`。这个负值作为 `size_t`(64位系统中是64位无符号整数)参数传入 `malloc`,会被解释成一个天文数字(约 1844 亿亿),导致分配请求远超预期,引发程序崩溃或内存损坏。 文章特别点明,这种错误非常具有迷惑性,因为无论操作系统是 32 位还是 64 位,`int` 通常是 32 位的。作者以亲身在 SSDB 项目中多次踩坑的经历作为佐证,强调了问题的普遍性与现实危害。核心告诫在于:当运算结果可能超出 `int` 范围,尤其是作为内存大小等参数时,必须显式地进行类型转换或选用合适的数据类型(如 `size_t`),以确保计算的正确性与安全性。对于处理大数据的系统开发者而言,这是个值得时刻警惕的细节。

本机暂存
IT 2014-11-23 21:17:05 / 累计浏览 2,413

和 geek 男谈恋爱的好处若干

这篇讲的是作者从观察身边geek男友出发,总结和这类“技术宅”恋爱的独特体验。文章以Geek Pride Day为契机,为之前一篇《和geek女谈恋爱的好处》写了姊妹篇,核心在于揭示geek男那些常被忽视的浪漫特质与恋爱优势。 作者提炼出五个具体亮点:他们对待热爱之事全情投入的专注极具魅力,恋爱中会将这份执着转移给你;他们追求独特的“极客式浪漫”,比如用代码或技术手段准备耗费心力的惊喜礼物;他们像“行走的谷歌”,拥有海量知识并总能执着地找出答案,成为伴侣身边的百科全书;他们内心往往简单纯粹,像孩子般容易满足,也像“小计算机程序”一样反应可预测;此外,他们还会用高精尖设备和DIY精神,共同打造一个充满智能元素的完美家。 文章最后也以FAQ形式幽默地回应了常见顾虑,指出geek男其实本质也是需要理解与呵护的普通男人,而他们的高智商与深情有时恰恰需要一颗温暖的心去呵护。整体而言,这篇文章并非单纯“安利”,而是透过技术爱好者的外壳,呈现其背后真实、可爱且值得珍惜的人格切面。

本机暂存
IT 2014-11-23 21:06:37 / 累计浏览 2,266

熬夜

作者回顾了自己在北京近二十年来,几种不同性质的“熬夜”经历。从学生时期为赚取生活费、在机房“偷电”学习计算机的被动熬夜,到初入IT行业为掌握新技术而如饥似渴的主动学习,再到后来出入三里屯工体、社交饮酒带来的“模糊”熬夜,最终在创业阶段,熬夜成为伴随日常的“理所当然”。 文章并非讨论健康建议,而是通过个人时间线,呈现了一个技术人生活状态的变迁缩影:初期是生存与求知驱动,中期混杂着社交惯性,后期则是被事业责任与焦虑裹挟。作者坦言,熬夜早已成为难以摆脱的习惯,并坦诚表达了对未来的担忧。 这篇分享的动人之处在于其真实性,它映照出许多同龄人相似的矛盾——一边熬夜,一边焦虑。最终,作者送上了朴素的祝福,希望所有熬夜的朋友都能身体健康。

本机暂存
IT 2014-11-19 23:28:38 / 累计浏览 3,926

说说招人的事儿

这篇文章讲述了一位创业者从零开始组建团队时的招聘实践与思考。作者从自己进入汽车后市场的经历出发,坦率地讨论了初创企业招人面临的独特挑战:当品牌尚无名气时,如何吸引并识别靠谱的人才。 文章的核心观点直指当前招聘中的痛点:企业习惯直接复制千篇一律的岗位描述(JD),却忽略了团队构建需要考虑性格、经验的互补;而许多公司仍将年轻员工视为单纯执行的“工具”,未能理解新一代职场人(尤其是90后)的核心诉求——他们更看重工作的意义、能否学到东西以及与共事的人是否合拍。 作者通过观察和亲身实践发现,年轻人在招聘中往往“广撒网”,只有对真正感兴趣的公司才会用心。因此,企业招聘的关键在于激发他们的兴趣,而非仅仅罗列硬件福利。在管理上,作者也提倡用“以德服人”的方式赢得年轻员工的尊重,并通过给予成长机会来提升他们的能动性。 最后,文章结合社交媒体时代的特点,提出招聘信息应设计得足够具象,以便引发社交传播和共鸣。作者也借此机会,用极具画面感的语言描述了他正在寻找的团队伙伴——热爱汽车、年轻、靠谱、有激情,并给出了具体的联系途径。

本机暂存
IT 2014-10-21 19:32:45 / 累计浏览 4,231

谈谈面试技巧

这篇文章从一位技术面试官的视角出发,分享了如何从面试细节中洞察结果,并高效考察候选人的软技能。 作者首先指出,面试者可以通过几个关键节点自我判断:是否进入最后一轮、是否被谈及薪资期望,以及最终面试官的直接反馈。例如,若面试官回避确定性答复或不谈薪,通常希望不大;反之,若对方直接表达认可或询问最快到岗时间,则是积极信号。 文章的重点在于面试官的考察方法。在终面阶段,作者通常会问几个精心设计的问题来评估为人:例如让候选人评价自己并列举优缺点,考察其自省能力;询问他人会如何评价自己,洞察其社交认知;以及通过“最感激与最厌恶的人”这类问题,测试其感恩之心与胸怀。这些提问并非寻求标准答案,而是观察候选人的反应与思考。 作者强调,面试不仅是技术考核,更是情商与软技巧的博弈。他建议从“眼光、胆魄、胸怀和忍耐”等维度设计问题,通过捕捉候选人的眼神、肢体语言等细节,能更全面地判断其综合素质。这篇文章提醒我们,高情商与良好的自我认知,在求职中往往与专业能力同等重要。

本机暂存
IT 2014-10-15 22:42:27 / 累计浏览 3,345

程序员的复仇方式

这是一篇充满极客幽默的技术复仇实录。故事背景很简单:作者总被公司一位擅长“防守”的同事捉弄,于是决定利用对方不太懂电脑的弱点,发起一场悄无声息的技术反击。 作者的核心武器是一些轻巧却诡谲的脚本与命令。他趁同事离开时,在其Mac电脑上部署了远程访问密钥,并植入了一段Shell脚本。这个脚本会让电脑随机间隔、用低沉的语音悄声说出字母“i”(我),制造灵异感。更妙的是后续升级版脚本,它能主动调高电脑音量播放“i”,随后立刻静音,即便对方在听音乐也会被诡异打断。 但这只是开始。作者还远程执行了 `open` 命令,让对方电脑不断打开一个怪异的网页;偷偷将同事桌面上待评审的所有照片,替换成一张老人打瞌睡的滑稽图片。终极一击是预设了一个AppleScript,在电脑发出怪声前,桌面会瞬间闪现一张经典的恐怖动画图,然后再恢复正常。整个系列操作环环相扣,充分展现了命令行与脚本在“非技术用途”上的惊人灵活性。 文章的魅力在于,它将枯燥的Shell、AppleScript命令融入了一个具体的、充满张力的生活化叙事中,读者能清晰看到每一行代码带来的戏剧性效果。作者在结尾的“求助”也为这场技术复仇增添了互动与开放的余味。

本机暂存
IT 2014-09-17 13:34:44 / 累计浏览 2,304

雪崩时,每一片雪花,都不认为自己有责任

这篇从诺基亚裁员这一具体事件切入,探讨的却是一个更普遍的现代企业困境。作者指出,问题并非始于某个决策或个人,而是系统本身:一个庞大企业逐渐演变为一个自我循环、追求“维稳”的闭环系统,它天然地排斥任何额外的创新与风险担当。基层或许有变革的萌芽,但在层层向上的流程与“领导交办最重要”的现实面前,这些声音最终收敛于对指令的服从。 文章最有力的观点在于那个比喻——“雪崩时,每一片雪花,都不认为自己有责任”。每个员工都在兢兢业业地完成手头任务,管理层也在忙于现有体系的运转,所有人都规避风险、拒绝冒险。然而,当外部环境剧变,整个系统便无力转身,最终导致个体与组织共同滑向终局。作者借这一分析提醒我们:在加速变化的时代,满足于做好体系内的一颗“螺丝钉”并自认无责,或许正是最大的风险所在。它让我们思考,在尽职尽责之外,对变化的敏感与担当的勇气同样不可或缺。

本机暂存
IT 2014-09-17 12:33:46 / 累计浏览 2,087

关于回调函数和this指针探讨

这篇讲的是C++回调函数中一个经典又微妙的陷阱:当类的非静态成员函数作为回调时,其隐含的this指针如何传递。作者从C语言的回调机制出发,对比了Java等面向对象语言直接注册对象的不同,聚焦于C++必须面对函数指针的问题。 文章的核心是解决一个实际困境:我们希望成员函数既能作为回调,又能访问类的非静态成员。作者梳理并对比了几种可行方案。最直接的方法是使用静态成员函数,但它不能直接访问非静态成员。由此引出两种变通:一是将对象指针存在全局变量中,但这破坏了封装;二是将this指针作为参数显式传入静态回调函数,这是目前的主流做法。作者也尝试了直接将非静态成员函数指针强转为普通函数指针,但编译和运行时都会出错,这揭示了this指针并非简单地作为第一个参数在栈上传递。 最终,文章回归到最实用且正统的解决方案:将回调声明为静态成员函数,并在注册时将this指针作为参数传入。这种方式在封装性和易用性之间取得了平衡。作者通过代码实例逐步演进,清晰地展示了从“能工作”到“更优雅”的优化路径,对于理解C++对象模型和底层回调机制很有启发。

本机暂存
IT 2014-09-17 12:22:53 / 累计浏览 3,046

第一代程序员王小波

这篇讲的是作家王小波一个鲜为人知的身份:中国第一代程序员。文章从作者偶然读到的信息切入,揭示了这位文学天才在上世纪90年代初,自学汇编、C语言等,独立开发出中文编辑器与输入法的经历。 文中呈现了大量细节。王小波为解决统计工作需要和对软件的好奇,钻研数据结构、算法乃至编译原理,甚至为了优化自己的286电脑而深入内存管理。他与友人的书信往来里,详细讨论了软件开发、B树结构、递归算法等技术话题,其专注与钻研程度不亚于专业工程师。 更有趣的是,他小说中诸多充满想象力的理工男形象和荒诞发明(如开根号机器),正源于这份极客精神。文章通过还原一个在代码世界里同样追求“特立独行”的王小波,让我们看到独立之精神如何贯通于他的文字与算法之中。

本机暂存
IT 2014-08-15 14:06:44 / 累计浏览 2,109

教你如何在Windiws平台上创建以点(.)开头的文件名

Windows系统有个小脾气:当你想创建像.gitignore这样以点开头的配置文件时,如果直接输入文件名,系统会弹出“文件名不能以点开头”的错误提示。这给需要管理隐藏配置文件的开发者带来了困扰。 这篇教程分享了一个非常巧妙的解决方法:在命名时,在期望的文件名(例如.gitignore)末尾**再添加一个点**,将其输入为“.gitignore.”。这样,文件就能成功创建,并且系统会自动识别并保留真正的“.gitignore”这个文件名。这个技巧利用了Windows文件命名规则中的一个小盲区,虽然简单,却有效解决了实际问题。 需要注意的是,这个方法在Windows资源管理器中操作有效,但更适合需要看到文件扩展名的程序员用户。对于普通用户,通常可以通过命令行或其他方式达到目的。这个小技巧体现了在技术实践中,有时绕过表面限制、理解系统底层行为,能找到意想不到的简便解法。

本机暂存
IT 2014-08-15 12:31:42 / 累计浏览 2,070

Python中的闭包

这篇讲的是Python中一个既基础又容易模糊的概念——闭包。作者从一个实际的读者提问出发,用维基定义的“词法闭包”和“自由变量”两个关键词引入,并巧妙地将其比喻为一个“封闭的包裹”,包裹(函数)内部装着随身携带的自由变量。 文章的核心对比在于闭包与类:两者都实现数据封装,但闭包粒度更细,是一个只读的“函数对象”。作者接着深入剖析了闭包在Python中最常见的三个应用场景:一是构建装饰器,通过闭包持有被装饰函数并扩展其功能;二是实现类似“惰性求值”的效果,推迟某些操作(如数据库查询)的执行;三是作为`functools.partial`的原理示范,用于函数参数的提前绑定。 通过这些代码示例,文章清晰地展示了闭包如何作为函数式编程的重要工具,解决代码复用和状态保持的问题。对于想真正理解Python装饰器机制或函数式编程特性的开发者来说,这篇从概念辨析到实战落地的讲解是个不错的起点。

本机暂存
IT 2014-07-28 12:45:00 / 累计浏览 3,384

那些让工作更美好的设备们

这篇文章分享了作者在办公室和家里使用各种设备的体验与推荐。作者从自己的办公桌面和家里环境出发,列举了包括DELL U2412m显示器、Noppoo Lolita机械键盘、罗技G1鼠标以及SteelSeries QcK+鼠标垫等在内的一系列日常装备,并详细解释了选择它们的理由。 核心观点在于:每天高频使用的设备,值得投资好一些的。作者认为,这能换来持续的高效率和好心情,这笔钱花得其所。比如,他盛赞了IPS屏幕的色彩与可视角度,以及可升降旋转支架带来的舒适姿势;在键盘选择上,则分享了对87键布局、红轴手感以及走线设计的个人偏好。 文章不仅是单纯的产品罗列,更融入了作者对于“好设备如何提升幸福感”的切身思考。例如,他提到一些功能“没用前不觉得,用了再退回没有时就会很不爽”,道出了升级体验的本质。对于那些觉得公司设备不佳的读者,作者也提出了务实的建议:如果是自己干活必需的,不妨自费购买,毕竟这些设备未来还能带走。 对于关注日常工作效率与幸福感的读者,这篇结合了个人实践与详细点评的分享,提供了许多具体而实用的升级思路。

本机暂存
IT 2014-07-15 22:32:33 / 累计浏览 2,766

如果代码审查时你忘记了拿近视眼镜

这篇讲的是代码审查中那些破坏可读性的常见“坏味道”。作者用了一个有趣的比喻:当你忘记戴近视眼镜时,看代码就只能依赖整体的“形态”和“结构”。这恰恰点出了代码审查的本质——我们有时需要暂时忽略实现细节,去审视代码的骨架是否健康。 文章通过六个生动的代码片段示例,具体演示了哪些设计会让“模糊的你”一眼就觉得不对劲。比如,把 `UserCreator` 的职责过分简化,导致创建一个简单的对象都需要在一堆小文件中寻觅;或者反其道而行之,让一个类塞进太多无关的方法,伪装成一个“全能”类。再比如,方法被拆得过于碎片化,使得逻辑追踪令人头疼;以及命名空间嵌套深达六层,让代码定位变得曲折。 作者指出,这些做法虽然在技术上可能“能运行”,却为人脑的理解设置了不必要的障碍。一个拥有8个参数的方法、一段需要长篇注释才能理解的逻辑,都在无声地增加协作与维护的成本。 最终,文章的落点在于:清爽、简洁、结构良好的代码是高效团队协作的基石。忽视代码的“可读性设计”,无论初衷多么良好,终将反噬项目本身。

本机暂存
IT 2014-06-10 12:31:41 / 累计浏览 1,670

开发团队的效率

这篇文章来自一位有多年经验的技术作者,他结合自己的观察与实践,剖析了软件开发团队中几种典型的低效工作模式。 作者坦诚自己最初的观点常基于特定经历,为更全面地探讨效率问题,他主动去理解不同的开发环境。文章聚焦于软件工程自身的效率,而非业务层面。核心内容列举并批判了五种常见的“反效率”开发方式:因技能或模块划分导致的“锁”;上下游团队像“接力棒”一样串行交付的低效流程;开发人员依赖测试与运维“保姆”的被动模式;为修补系统缺陷不断新增监控子系统的“WatchDog”架构;以及以线上故障为驱动力的被动修复式开发。 针对每种问题,文章都给出了具有工程思维的解决方案。例如,强调程序员应掌握多语言与模块以减少协作锁,主张用服务化框架替代“接力棒”式交付,提倡培养工程师而非“码农”以根除保姆式依赖,以及呼吁在设计阶段就力求简化、残酷偿还技术债务。 整篇文章的论述扎实,充满了从实践中总结出的锐利观察,对反思团队协作与工程文化有直接的启发。

本机暂存
IT 2014-06-10 12:26:47 / 累计浏览 2,232

给代码多留一些空间

这篇文章探讨了代码格式中一个看似微小但影响深远的细节——空格的使用。作者从观察到不同团队编码规范差异入手,对比了括号内外不加空格的常见紧凑风格,与括号、花括号内侧统一留空的宽松风格。他并未简单评判优劣,而是引发思考:在开源项目(以Ceylon语言为例)缺乏统一规范时,混乱的风格混杂是否会真正影响代码的可读性与协作效率? 作者将代码格式与经过数千年演进的普通文字书写规范进行类比,指出在符号两侧保持空格,能让代码阅读更接近自然语言的认知习惯。文章的核心观点在于:虽然团队可以基于成员习惯或开源社区影响选择具体风格,但一套统一的格式规范至关重要。最后,作者结合IDE自动格式化的便利,强调有意识地多使用空格,是提升代码长期可维护性与阅读体验的简单而有效的实践。

本机暂存
IT 2014-05-27 23:00:16 / 累计浏览 3,065

客服趣事

这篇讲的是技术团队成员临时顶替客服岗位时遇到的那些令人啼笑皆非的真实片段。作者从一次团队内部的人员轮换出发,记录了技术“门外汉”代班客服时,与形形色色的淘宝卖家沟通中产生的各种误会与趣事。 文中细节颇有趣味:有客户把“在吗”打成“阿紫”让人联想到武侠剧;有客户执着于让“美艳艳”的男性技术员证明价格;有使用疑似Windows 2000古老系统却质疑浏览器过时的卖家;更有妈妈卖家在沟通中因孩子放学而突然中断的日常。这些片段不仅展现了客服工作的多面性,也揭示了技术支持中一个常见的现象:很多问题根源在于用户端的环境(如过时的浏览器、缺失的字库)或对系统规则的误解。 最生动的是,作者描述了一位爱钻研的卖家花费一周时间分析对手的“价格显示玄学”,而最终很可能只是系统的一个显示bug。这些看似琐碎的互动,实则勾勒出电商技术支持生态中,技术思维与用户日常操作之间的有趣落差,以及一线沟通中不可或缺的耐心与幽默感。

本机暂存
IT 2014-05-11 21:29:20 / 累计浏览 2,807

工作与价值观

这篇文章探讨了一个看似简单实则深刻的问题:我们工作究竟是为了什么。作者以观察到的三种典型选择为起点——有人为了薪水支持自己的生活方式,有人为了证明和提升个人能力,有人则是为了实践自己信奉的价值观。文章明确指出,这三者并非递进关系,而是相互排斥,你只能选择一个作为核心驱动力。 作者着重阐述了第三种选择:在日常工作中,通过选择“做”与“不做”来体现并践行个人价值观。文中引用了Sam Altman的观点以及对代码质量、技术实践的容忍度等具体细节,说明当个人对事业的认同感足够强烈时,许多技术琐事都显得微不足道。 延伸到创业层面,文章对比了“选对人”、“选对方向”与“选对事(共同认可)”三种不同理念。作者明确倾向于后者,认为基于对事业本身的共同认可而组建的团队,其根基更为稳固。他以土豆网为例,说明推动公司前进的可能不是某个创始人,而是一个被广泛认可的价值主张。 读完此文,你或许也会开始重新审视,支撑自己日复一日工作的,究竟是什么。

本机暂存
IT 2014-04-21 12:38:20 / 累计浏览 1,689

20年的C2C之路

这篇讲的是中国互联网长达20年的“C2C”发展路径,即从美国复制商业模式的历程。作者深入剖析了这一现象背后的深层逻辑,指出其核心驱动力是风险投资(VC)的运作需求——通过对标一个已被验证的美国成功案例(如“中国的Facebook”),来降低投资者的风险感知并为最终的赴美上市铺平道路。 但文章并未止步于“简单抄袭”的论断。作者进一步指出,成功的C2C实践都伴随着深度的“Glocalization”(全球本土化)。从门户网站为适应中国网民习惯而开创的“海量快速”编辑模式,到百度依赖线下代理和网吧预装的地推打法,再到淘宝基于中国零售业现状对eBay模式的颠覆性改造,乃至QQ在虚拟道具盈利上的原创,这些案例无不体现了基于本土环境的微创新甚至彻底重构。 最终,随着互联网从“信息”深化到“人”,中美用户行为的差异愈发显著。作者观察到,纯粹的复制已难以为继,反而是具备强本地化能力或原生创新的模式(如微信生态、互联网金融)开始引领新阶段。这篇文章为我们理解中国互联网的商业基因提供了一个历史视角,也启发我们思考:在今天的出海或本土竞争中,单纯的模式借鉴已远远不够,对用户与市场的深刻理解才是关键。

本机暂存
IT 2014-04-13 22:36:23 / 累计浏览 5,121

从Code Review 谈如何做技术

这篇讲的是作者在微博上发起的一场关于“Code Review是否重要”的讨论,以及由此引发的对技术实践和工程师责任的深入思考。 作者观察到,Code Review在偏技术的团队推行较好,但在很多业务团队却难以落地,后者常以“工期紧、需求变”为由认为其价值不大。作者对此强烈反对,他认为程序员应有“做漂亮”而非仅仅“做出来”的工程修养,这正是“山寨”与“工业”的差别。文章厘清了几个常被混为一谈的问题:Code Review本身对提升代码可读性、可维护性和知识共享的好处毋庸置疑;而它“做不起来”往往源于人员能力、团队态度或项目管理问题,不应归咎于方法本身。 更关键的是,面对业务压力,作者用自己在聚石塔的经验指出,工程师不应疲于奔命,而应主动审视需求、定义产品边界、推动标准化,从而从根源上减少无效需求。他总结道,当你忙得像牲口时,恰恰需要停下来思考这种忙碌的根源。Code Review不是解决一切问题的银弹,但它代表了对代码质量和自身成长的一种坚持。

本机暂存
IT 2014-04-07 22:57:48 / 累计浏览 3,167

Linux大棚版vimrc配置—V2.0版本

这篇讲的是Linux大棚博客更新的Vim编辑器配置方案V2.0。作者基于V1.0版本一年来的用户反馈与自身实践,对原有的vimrc配置进行了五项关键升级,旨在为中文开发者提供一个更顺手、更智能的编码环境。 核心改动聚焦于实战体验的优化:一是新增了对Go语言的原生支持,让使用Vim编写Go代码的开发者开箱即用;二是调整了文本格式化策略,通过精心设置的`formatoptions`参数,在智能换行、注释自动处理与中文多字节字符支持之间找到了更好的平衡点,同时注释掉的`textwidth`也给了用户更多自由度;三是禁用了方向键的跨行行为,以保持光标移动的直觉性;四是改进了配置文件中所有注释的表述,使其更清晰易懂。 整个配置方案并不追求大而全,而是体现了作者“解决具体问题”的思路。它从语法高亮、缩进、搜索匹配到自定义快捷键(如快速注释/取消注释、清理行尾空格),覆盖了日常编码的高频操作。这份配置更像是一个精心调校过的起点,开发者可以此为基础,按需调整,打造出属于自己的高效Vim工作流。

本机暂存