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

最新文章

采集自各技术站点的近期文章。

IT 开发者/ 2022-02-03 13:16:36 / 累计浏览 4,861

iTerm2 (Mac Terminal) 清空当前屏幕内容

这篇讲的是 Mac 终端用户常遇到的一个“洁癖”小问题:执行 `clear` 命令后,屏幕看似干净,但向上滚动依然能看到历史输出,而且在搜索时,之前的内容其实也还在。 文章直接点明了 `clear` 命令的这两个局限性,并给出了一个更彻底的解决方案——使用 iTerm2 自带的快捷键 `Command + K`。这个操作能真正清空屏幕缓冲区,让历史记录在滚动和搜索时都彻底消失。 如果你经常在终端里工作,希望获得一个完全空白、不受旧内容干扰的工作界面,这个小技巧能立刻提升你的使用体验。

本机暂存
IT 后端/ 2022-02-03 13:10:34 / 累计浏览 5,069

豆瓣是啥?

这篇讲的是豆瓣作为“匿名品味社区”的本质与演化路径。作者从博客时代切入,指出豆瓣早期通过“豆瓣秀”插件,让博主在侧边栏自动展示书影音记录,以极低门槛实现了口碑冷启动——这本质是让用户展演自己的文化资本。 文章的核心观点是:豆瓣构建的是“文化资本”而非社交资本。在匿名环境下,用户通过书影音记录塑造个人品味形象,形成精神层面的优越感与认同。这种对文化深度的追求,解释了豆瓣为何不像微博那样追逐热度和流量,也解释了其产品逻辑的诸多选择,例如早期对游戏条目的拒绝、以及对社区运营的克制态度。 作者也分析了豆瓣小组的爆发式增长与书影音社区的割裂,并点出阿北试图扮演“不运营的上帝”这一角色在现实中的矛盾。最终,文章将豆瓣定位为一个追求文化深度而非用户广度的产品,其影响深刻地塑造了许多人的文化消费选择,但也面临如何平衡社区活力与品味调性的长期挑战。

本机暂存
IT 开发者/ 2021-06-13 23:24:13 / 累计浏览 4,183

技术同学在业务中的成长

这篇文章探讨了技术同学在职业成长中的一个经典困惑:在大团队有机会“造轮子”但晋升竞争激烈,在小团队专注业务却可能成长更快。作者从“什么是业务”出发,清晰地梳理了团队为避免重复建设而进行抽象、分层的必然性,指出“造轮子”本质也是业务的一部分,只是需要更广阔的抽象和服务更大的体量。 文章的核心在于为“业务同学”正名。作者指出,做业务的同学身处一线,直面客户和市场的核心问题,这恰恰是他们的独特优势。但现实矛盾在于,技术价值的评估往往难以直接对应产品结果。因此,作者提出了一个关键的角色进化方向——“产品工程师”。 作者认为,业务同学不应只羡慕“轮子制造者”,而应聚焦于将各种轮子组装成更好的“产品”这辆车。他们面临的业务场景虽不确定,但可以主动去探索和定义业务模型,为其添砖加瓦。这本身就是一个充满挑战和成长空间的新课题。 最后,文章也点破了“大团队技术就一定强”的错觉,强调了环境与个人选择的关系。它鼓励技术人员无论身处何种环境,都能看清自己的价值,做好分内之事,从而实现扎实的成长。

本机暂存
IT 开发者/ 2021-06-13 23:12:10 / 累计浏览 3,258

70 后都跑哪去了?

这篇讲的是一位互联网“老兵”对自己所在行业中“70后”技术人踪迹的寻觅与思考。 作者从自己公司春节后只剩一位70后同事的“残酷真相”出发,回溯了在洪恩、用友、锤子等公司的经历,发现自己在不知不觉中成了团队里最年长的人。他调研发现,当年那批使用JDK 1.4、HTML4的第一代程序员,并没有消失,而是悄然分流:一部分晋升为大厂高管(如阿里的逍遥子、鲁肃),一部分在技术领域持续深耕,还有不少人转行、投身区块链、回归故里或消失在创业公司的起起落落中。 文章并未停留在感慨,而是深入剖析了这一现象背后的原因:互联网行业本身年轻,早期从业者本就稀少,而行业的剧烈发展又在不断稀释着这些“老人”的比例。作者联想到村上春树72岁仍笔耕不辍的创作生涯,以此反思技术人的职业生命周期——年龄增长并非必然意味着停滞,持续热爱与产出才是对抗时间的关键。 文章结尾,作者将个人“逆行”般的职业轨迹(年轻时专注技术,四十岁后反而迎来更广阔的人生)与村上春树的“特质”(30岁后找到写作方向并坚持一生)并置,留给读者一个开放的思考:技术人的中年并非终点,而是可以重新定义起点、继续前行的生命阶段。

本机暂存
IT 开发者/ 2021-06-13 23:11:09 / 累计浏览 2,753

你老了

这篇讲的是一位技术人的“年龄焦虑”与自我和解。作者从自己在用友、锤子科技,到极客邦创业的经历切入,发现自己一路走来,竟从团队里最年轻的变成了最年长的那个——入职极客邦的第一天,就成了公司年龄最大的人。 文章的核心并非抱怨,而是通过这些个人观察与同行趣事,引出了一个更普世的思考:我们是如何看待衰老的?作者坦言,人过四十,所谓的“不惑”更像是接受“有些事再也想不明白”的现实,而午夜梦回时,对青春理想的追问仍会惊出一身冷汗。 但他最终的态度是清醒而积极的。他援引姜文的“不怕老”,提到七十多岁的创作者依然笔耕不辍,并认为当代的技术人,尤其是七零后、八零后,很可能将“精力充沛地工作到七十岁甚至八十岁”。全文用一种混合了自嘲、哲思与幽默的笔调,探讨了成长、边界与梦想的消逝,最终回归到一个朴素的观点:认清年龄的边界,或许才是真正的超越。

本机暂存
IT 后端/ 2021-06-13 23:01:05 / 累计浏览 3,091

我对比特币的理解

这篇讲的是作者如何理解当前争议很大的比特币。文章没有直接下定论,而是用两个生动的故事作为切入点,层层剖析比特币的价值本质和价格逻辑。 作者首先通过“熊猫便便”的比喻,解释了价值如何从“局部共识”演变为“全局共识”,从而论证比特币并非“废纸”,而是一种已被部分人群认可的资产。接着,他指出其价格核心取决于交易与投资两方面的需求,并类比货币发行原理,说明了供需关系如何影响定价。 文章进一步拆解了比特币的需求来源:既有应对全球通胀的“类黄金”属性,也包含了散户投机的狂欢。作者通过一个具体的杠杆交易算账案例,直观地说明了投机的高风险,预判其长期投机属性会减弱,价格将趋于稳定。最后,文章也冷静地指出了监管政策与密码安全(包括潜在的量子计算威胁)两大核心风险。 整体来看,作者提供了一个理解比特币的系统性框架,从价值形成、定价机制到风险收益,有助于读者在狂热的市场讨论中建立自己的分析视角。

本机暂存
IT 开发者/ 2021-06-13 22:52:09 / 累计浏览 2,649

How to Install Native Homebrew on an Apple Silicon M1 Mac

在Apple Silicon M1 Mac上安装Homebrew,不少开发者会直接运行官方脚本,结果收到报错提示“Homebrew is not (yet) supported on ARM processors!”。作者从这个常见踩坑点出发,解释了根因:M1芯片采用ARM指令集,而传统Homebrew是为x86架构设计的,直接安装会导致兼容性问题。 文章梳理了两种解决方案。一种是借助Rosetta 2转译安装x86版本的Homebrew,命令只需在官方脚本前加上`arch -x86_64`,简单快捷。但作者指出,这种方式后续通过Homebrew安装的所有软件都会是x86架构,

本机暂存
IT 安全/ 2021-06-13 22:50:21 / 累计浏览 2,994

互联网企业安全团队建设

这篇讲的是企业安全团队从无到有的建设心法,作者从安全负责人(CSO)的视角出发,分享了“招、管、培”三个关键阶段的实战经验。 文章开篇点明,一支有想法且能持续战斗的安全团队,是企业安全体系落地的根本前提。在招聘上,作者强调不能简单看技术,核心逻辑是以企业安全目标和业务阶段为锚点来定需求。他提倡寻找专业过硬、真正热爱安全且志同道合的同路人,宁缺毋滥,并通过打造团队影响力和坦诚沟通来吸引人才。 团队管理方面,作者认为其目的并非约束,而是高效达成目标。他特别指出安全负责人必须以身作则,注重打造真正落地的团队文化,并力争在绩效与发展机会上公平公正,做到知人善任,避免让优秀成员沦为“工具人”。 最后在人才培养上,核心是让团队可持续发展。除了提供实践空间、鼓励创新外,作者大力倡导建立内部分享机制,以此驱动成员养成独立思考与总结的习惯。他也提醒负责人要有格局,协助成员做好职业规划,不必担心其成长后离开。 整体上,这篇文章没有空谈理论,而是紧密围绕安全管理者在实际工作中会遇到的具体问题,提供了结构化的思考和可操作的方法。

本机暂存
IT DevOps/ 2021-06-13 22:41:22 / 累计浏览 2,830

分布式系统升级所遇到的问题

分布式系统升级的一大痛点是无法像单机软件那样“原子化”完成。升级期间新旧版本长期共存,如果新版本引入了数据格式变更,旧版本无法识别新格式,就会导致服务报错。特别是“向前兼容”(旧版本兼容新数据)几乎无法实现。 作者提出了一个经典的“中间版本”策略来化解这个困局。核心思路是设计一个特殊的中间过渡版本:它既能识别未来的新数据格式,又不会产生新格式数据。升级分两阶段进行:先将所有节点升级至中间版本,此时没有新格式数据产生,因此无兼容问题;等全部就绪后,再将中间版本升级至最终版本,新旧格式共存也能被新版本识别。 这样,通过引入一个精心设计的“桥梁”版本,就将复杂的向后兼容问题,转化为两个相对简单的、可逐步滚动执行的阶段,从而在完全不停服的前提下,实现了版本的平滑过渡。这个方案为解决分布式系统中的类似版本演进问题提供了一个清晰的范式。

本机暂存
IT 算法/ 2021-06-13 22:34:06 / 累计浏览 2,586

可靠通信的三条基本定理

这篇讲的是可靠通信背后必须遵循的三条基本定理,以及如何用它们指导系统设计。作者认为,广义的可靠通信必须满足不丢包、不重复、完整性这三个要求,而对应的解决方案分别是确认与重传、排队(串行化)、单点标记或自校验。文章澄清了一个常见误区:去重问题的根源在于操作需要排队,即使采用全局位图方案,对位图的操作本身也需排队,而像CAS这样的实现,其内部本质也是排队。 这些定理并非空谈,文章通过实例展示了其强大的解释力。例如,TCP的可靠性正是因为它遵循了这三条定理:序号机制实现了排队,超时重传机制兜底处理丢包,checksum则保证了数据完整性。再比如,在线商店的库存超卖问题,本质上是一个需要排队的去重问题;而订单与支付两大独立系统之间的数据一致,则依赖于定理一(确认与重传)来保证不丢包。 作者的核心观点是,实际问题千变万化,但可靠的系统设计必须回归到这三条基础定理上。它们提供了最根本的讨论框架和判断标准:符合定理的设计方案才是可靠的,否则就存在隐患。理解这些基础模型,是构建正确、健壮系统的理论前提。

本机暂存
IT 算法/ 2021-05-28 23:02:42 / 累计浏览 2,500

你需要更多的思考时间

这篇文章分享了一位技术从业者通过每日安排固定思考时间,来提升工作效率和生活质量的个人实践。作者每天七点半起床,利用通勤的一个半小时用kindle阅读,并提前一小时到公司,但这段时间他并不急于

本机暂存
IT 开发者/ 2021-05-28 08:35:55 / 累计浏览 2,465

fbx 到 gltf 转换问题

这篇文章讲述了游戏引擎团队在迁移到 glTF 格式时,为解决美术工具导出支持不足与 FBX 私有格式带来的转换问题所经历的系列尝试。作者从项目背景出发,详细记录了团队评估和使用四个不同方案的过程:先是发现 Assimp 工具臃肿、编译问题多且存在链接失败 bug,因而放弃;继而尝试自行编写 FBX 解析模块,但意识到数据转换的繁杂性远超预期,非长期维护之选;接着采用 Facebook 发布的 FBX2glTF,却在对方停止维护后陷入 bug 无法修复的困境;最终转向 Blender,利用其优秀的命令行脚本支持、官方 glTF 插件以及详尽的 FBX 文档,形成了稳定可靠的工作流。文章不仅分享了具体的技术选型思路与踩坑经验,也反映了从私有格式走向开放标准过程中的现实挑战与务实解决策略。

本机暂存
IT 数据库/ 2021-05-28 08:35:26 / 累计浏览 2,579

这几年在存储上犯的错

这篇讲的是作者从亲身经历出发,分享这些年在存储和运维上踩过的真实大坑。文章从一起线上数据误删事件切入,没有说教,而是直接讲述了几个让作者“想死的心都有”的故障现场:比如用错误配置上线,瞬间拖垮了整个数据库集群;在恢复误删数据时,不慎将 DROP TABLE 命令也一并执行,导致只恢复出了一个豆列;以及在进行数据库主从切换时,因与同事短暂交谈分心,在从库同步未追平的情况下就进行了操作,最终引发数据冲突。 每个案例都像一部微型灾难片,详细描述了错误的决策瞬间、连锁反应以及在巨大精神压力下的补救过程。作者坦诚地剖析了背后的直接原因,例如对配置项的误解(SET GLOBAL SQL_LOG_BIN)、脚本操作的风险以及流程中的侥幸心理。 文章的结尾给出了沉痛而实用的教训:“备份不做,日子甭过”,并强调了任何危险操作都应确保可回滚,工具应该比人更可靠。它并非一篇技术方案,而是一面镜子,照见了运维工作中那些不可避免的“人为因素”,也体现了团队在危机中相互支持的宝贵文化。对于每一位需要和线上系统打交道的工程师,这都是一次难得的经验共情。

本机暂存
IT 算法/ 2021-05-28 08:32:57 / 累计浏览 2,442

不变量及运算优化

这篇讲的是游戏引擎开发中一个看似简单却消耗10%以上CPU时间的性能坑。作者从实际Profiling结果出发,发现每帧重建渲染队列时,需要对每个可渲染物件的包围盒进行世界空间变换运算,而场景中大量静态物件的这类运算是重复的。 问题的根源在于输入数据量太大(40个float),直接用作缓存键并不现实。巧妙之处在于,作者利用数学库中矩阵已作为不变量拥有唯一ID这一现有设计,将世界空间矩阵的ID作为缓存键,大幅缩减了比较开销。最终,缓存能按“世界矩阵ID”匹配并直接复用上一帧计算好的所有子模型变换结果,避免了重复计算。这个优化思路透明地解决了问题,而无需对场景或资源系统进行大改。

本机暂存
IT 数据库/ 2021-05-27 22:26:51 / 累计浏览 2,619

Oracle 各种删除操作对空间返还的说明

DBA们常常遇到这样的困惑:对Oracle表执行DELETE、DROP还是TRUNCATE?这些操作对空间到底有何影响?这篇技术说明正是为厘清这些差异而写。 文章将三种常见删除操作(DELETE SQL、DROP TABLE、TRUNCATE TABLE)放在一起对比,从多个维度拆解其不同。关键差异点包括:DELETE操作不会将空间归还给表空间或文件系统,空间仅能被原表重用,但可能产生“高水位”;而DROP和TRUNCATE默认都会释放表空间,但依然不会自动收缩数据文件。此外,在本地管理表空间下,这些操作基本不会造成表空间碎片,但在老旧的字典管理表空间中,DROP和TRUNCATE则可能导致碎片。 对于追求“干净”释放空间的场景,文章也给出了务实建议:例如使用`shrink space`整理表,或对索引执行`coalesce`。最终目的是帮助DBA们根据实际需求(是彻底删除、快速清空还是谨慎释放)选择合适的操作,并管理好预期——Oracle默认不会自动将空间返还给操作系统。

本机暂存
IT AI/ 2021-05-27 08:10:24 / 累计浏览 1,873

初识前端智能化

从推荐算法到前端委员会,一位深耕技术多年的实践者,在2018年提出了“前端智能化”方向。这篇讲的是作者对这一概念的系统性思考,旨在为困惑的同行厘清概念、指明路径。 文章的核心观点很明确:前端智能并非要求前端工程师成为算法专家,而是要用工程化思维,在前端技术生态内高效地落地和整合成熟的AI能力。它旨在降低AI的应用成本,让最懂用户和交互的前端开发者,能真正驱动业务智能化升级。 作者首先厘清了概念,指出前端智能关注的是“问题定义-模型选择-工程集成-业务验证”的闭环。随后,他将前端智能化比作Node.js之后技术土壤上长出的“新物种”——它不仅拓展了前端的应用边界,更从根本上变革了“用户-端-服务”的技术链路:模型将直接在端侧参与理解用户与场景。 文章也直面了当前的挑战:移动端极度复杂的时空场景、人脸/手势等新型交互带来的技术栈不兼容,以及追求极致个性化与研发成本之间的矛盾。这些分析指明了前端技术下一步升级必须解决的核心问题,为从业者描绘了一幅清晰的演进路线图。

本机暂存
IT 算法/ 2021-05-27 07:54:29 / 累计浏览 2,784

一篇写给从未编程过的人的入门教程

这篇讲的是编程入门的“心理障碍”有多不必要。作者开篇就破除了“外行/内行”的标签,认为编程本质是每个人都熟悉的逻辑表达,他以自己半天学会PlantUML为例,强调学习曲线比想象中平缓。 为了让抽象概念落地,作者巧妙地用“17点回家如何在18点30分前让家人吃上饭”这个日常场景,类比了编程中的算法(解决步骤)、数据结构(书架/柜子的存储逻辑)和程序实体(做饭)。这种类比让“编程=算法+数据结构”的公式瞬间变得亲切可感。 文章的核心观点是,区分编程小白与专家的,并非代码本身,而是思考问题的周全性。作者通过对比两段“做饭”的伪代码——一个临时发现没油才去买,另一个提前检查缺漏并携带清单——生动说明了后者如何通过“检查”步骤让流程更可靠、高效。这引出了编程中“抽象”思维的关键价值:将重复步骤(洗菜、切菜、炒菜)封装成方法,使得程序能通过扩展“菜单”而非重复代码来处理复杂任务。 最终,作者将编程的复杂性落回到现实:入门简单,但写出考虑周全、高效且能应对需求变化的“好程序”却极具挑战。结尾那句关于“程序员最苦恼的是需求变化”的调侃,也让这篇技术入门文多了一份共鸣和幽默。

本机暂存
IT 算法/ 2021-05-27 07:52:49 / 累计浏览 2,745

裁剪和空间管理

这篇讲的是游戏引擎里渲染优化的一个关键模块——Culling与空间管理。作者从一个基本问题出发:当场景里可渲染对象很多,但相机实际能看到的只有一小部分时,如何避免让GPU处理所有对象,从而节省CPU到GPU的带宽?最朴素的做法是对每个对象做视锥体检测,复杂度是O(n)。但当对象数量n极大时,我们需要更好的方法。 核心思路是利用空间结构来加速。把对象按空间位置组织成树状结构,这样在检测时可以快速剔除一整个分组,将复杂度降到O(log n)。文章梳理了这条技术路径的演进:从简单的等距网格,到处理不均匀分布的四叉树/八叉树,再到为解决对象跨边界问题而提出的BSP。作者特别推崇K-D Tree和BVH方案,它们通过在每次二分时智能选择分割线位置(比如让两侧对象数量均衡),能形成完全二叉树,既紧凑又高效。 作者强调,Culling本质上是一个可选的“加速缓存”,而非引擎核心容器,因此其数据结构应保持独立和简洁。例如,他建议用一块连续内存存储K-D Tree的切割信息,实现简单且支持持久化。最后,文章还探讨了实现细节,比如如何高效地对对象进行二分,以及是否需要动态调整树结构,给出了倾向于静态构建、按需重建的设计观点。

本机暂存
IT 后端/ 2021-05-27 07:47:56 / 累计浏览 2,140

2020 年个人总结

这篇讲的是猿辅导一位技术管理者对2020年的坦诚回顾。作者从公司年内完成35亿美元融资、估值升至155亿美元的行业背景切入,分享了自己入职8周年的感触,以及如何在新业务孵化中,从熟悉的线上产品研发跨入陌生的硬件与线下内容领域。 文章的核心在于“变化中的成长”。作者详述了从建立硬件团队、学习供应商管理,到团队协作开发绘本等具体挑战,揭示了从舒适区步入“不舒适状态”后的学习曲线。同时,通过列出自己评分的15本年度读物(包括3本9分推荐),并分享股票交易“不做空”等心得,展现了在工作高压下仍坚持多维学习与复盘的个人习惯。 作者也坦诚面对了年初目标未完全达成的遗憾,比如读书数量与游泳频率。最后,他提出了更聚焦的2021年目标:每年读12本书、坚持游泳,并更加关注自身心理状态。整篇文章融合了职场成长、商业洞察与个人生活思考,勾勒出一位技术人在业务快速扩张期如何寻找平衡、沉淀价值的完整画像。

本机暂存
IT 开发者/ 2021-05-27 07:43:13 / 累计浏览 2,240

做连贯性活动 - 读《好战略,坏战略》

这篇文章从作者在微信群看到《美团清华产品课》笔记中提到《好战略,坏战略》一书开始,分享了对该书核心观点的解读。好战略的逻辑结构包括调查分析、指导方针和连贯性活动,其中连贯性活动强调战略必须落地,结合自身特点发挥优势。作者用iOS程序员的类比说明:战略发展应基于已有的“属性”和“方法”,而非随意定方向,避免历史成为包袱。 书中介绍了三种实现连贯性活动的方法:聚焦,如苹果削减产品线、Intel转型微处理器,通过收缩核心业务等待机会;转换视角,如IBM将产业链整合劣势转化为整体咨询服务优势;设计思维,强调战略应精心设计而非投票决定,以保持渐进性和资源聚焦。同时,文章列举了坏战略的特征,如空话、回避挑战、目标不落地等。 通过对比波特的竞争战略,本文从执行层面探讨了战略制定,案例丰富:苹果的成功聚焦、DEC因高管意见分散导致失败等。读者能从中理解如何识别坏战略,并借鉴具体方法制定连贯性活动,在商业挑战中发挥自身优势。

本机暂存