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

最新文章

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

IT DevOps/ 2014-11-26 22:45:01 / 累计浏览 2,552

用 LEK 组合处理 Nginx 访问日志

这篇讲的是作者在使用 Logstash 处理 Tengine/Nginx 通过 syslog 发送的访问日志时,遇到的几个实际性能瓶颈及优化方案。文章首先指出,在高压力下 Logstash 的 Grok 插件容易成为瓶颈,因此作者建议在日志格式可控时,优先考虑用分隔符格式配合 Ruby 脚本或自定义 LogFormat 来替代 Grok 解析。 然而真正的坑在后面:运行后发现日志接收带宽异常低,排查发现是 Logstash 的 syslog input 插件采用了单线程 UDP 监听,导致接收队列(Recv-Q)持续堆积。作者对比了 Fluentd 的异步实现,并考虑到 Logstash 基于 JRuby 的扩展复杂性,最终选择了一个更直接的方案:用 Perl 的高性能 AnyEvent 库重写了一个专门的异步日志收集脚本。这个脚本同样将日志输出为 Elasticsearch 兼容格式,使得原有的 Kibana 仪表盘无需任何改动。最终效果立竿见影,日志接收带宽从瓶颈时的 60 MBps 恢复到了正常的 300 MBps。

本机暂存
IT 算法/ 2014-11-26 22:41:48 / 累计浏览 4,046

生成特定分布随机数的方法

这篇讲的是如何用均匀分布的随机数,生成高斯、指数等特定概率分布的随机数。作者从最基本的算法出发,深入剖析了Inverse Transform Method(逆变换法)和Acceptance-Rejection Method(接受-拒绝法)这两种经典方法的原理。 逆变换法的核心思想很巧妙:如果你能求出目标分布累积分布函数(CDF)的逆函数解析式,那么只需对一个均匀分布随机数进行逆变换,就能直接得到目标分布的随机数。文章以指数分布为例,清晰地展示了从CDF推导到Python实现的完整过程。 但逆变换法有局限,当CDF逆函数难以求解时怎么办?这就引出了接受-拒绝法。它的思路是先生成一个容易处理的提议分布,再通过一个“筛选”步骤,以一定的概率接受或拒绝样本,最终得到目标分布的样本。这种方法只需要知道目标分布的概率密度函数(PDF),适用范围更广。 除了这两种基础算法,文章还探讨了组合算法以及如何生成具有相关性的随机数等衍生方法,构建了一个较为完整的知识框架。

本机暂存
IT 开发者/ 2014-11-26 22:37:28 / 累计浏览 4,904

关于限制性股票和期权的一点个人看法

作者从非专业人士的视角,分享了对限制性股票(RSU)和期权这两种常见激励方式的个人观察。 他首先澄清了一个关键误解:RSU和期权并非公司“白送”的礼物,本质上是员工用部分现金薪酬换来的。文中用两个Offer选项做对比,清晰展示了薪酬包中现金与股票之间的权衡关系。 核心观点深入分析了两者的差异。RSU相当于行权价为零的期权,但其流动性受限,价值会打折扣。期权则具有“杠杆效应”,作者通过一个B司的数字案例生动说明:当股价上涨时,期权收益可能被成倍放大,反之下跌风险也同步扩大。他指出,期权本质是公司与员工共担风险的风险对冲工具。 最后,文章也提及了RSU与期权在税率上的关键区别,并建议读者通过假设可自由交易来思考其真实价值。作者的结论很实在:理解这些工具的金融本质,有助于在谈Offer时做出更明智的判断。

本机暂存
IT 后端/ 2014-11-25 23:16:00 / 累计浏览 3,668

PHP最佳实践:MySQL的连接

这篇讲的是PHP开发者面临的经典选择:当老式的`mysql_*`函数在PHP 5.5后被官方废弃,且存在SQL注入等安全与功能瓶颈时,该如何正确连接MySQL数据库。 文章的核心对比非常清晰。它首先点出`mysql_*`函数的历史局限——基于过时的MySQL 3.23开发,无法支持现代特性。然后,作者将笔墨集中在现代解决方案`PDO_MySQL`上,并详细阐述了它如何解决旧方案的痛点。具体来说,`PDO`通过支持预处理语句,在提升重复查询性能的同时,从根本上防御了SQL注入攻击。它还为事务管理提供了可靠接口,这对于保证数据一致性至关重要。 文章并未止步于此,还深入介绍了存储过程、异步查询等进阶数据库交互方式,并分析了各自的优缺点与适用场景。最后,作者明确指出,切换到`PDO`或`mysqli`扩展不仅是技术趋势,更是保障应用安全与性能的必要升级。整个行文逻辑是从“为何淘汰旧事物”到“新事物如何更好”,给出了明确的迁移指引和原理剖析。

本机暂存
IT DevOps/ 2014-11-25 23:13:16 / 累计浏览 2,340

core dump磁盘报警问题排查过程

这篇讲的是线上服务器磁盘突然报警的排查过程。作者从玩客项目一台机器分区占用超80%的告警入手,发现同批次其他机器都正常。 通过 `find` 命令查找大于100M的文件,发现大量 `core.数字` 格式的文件,锁定了磁盘占用的元凶——core dump文件堆积。进一步用 `gdb` 分析其中一个core文件,明确是 php-fpm 进程(pool www)产生的崩溃转储。 问题根因在于系统的 `core file size` 限制被设为 `unlimited`。通过检查 `/etc/security/limits.conf`,确实存在 `* soft core unlimited` 和 `* hard core unlimited` 的配置,导致php-fpm崩溃时会无限制地生成core dump文件。作者注释掉相关配置并重启php-fpm后,成功将core file size soft limit置为0,从源头禁止了生成。最后删除已有的core文件,将磁盘占用降至50%左右。 一个实用的细节是,文章结尾提醒,有时即便在 `limits.conf` 中看到core设为unlimited,但通过 `ulimit -a` 查看实际生效的可能仍是0,排查时需注意。

本机暂存
IT DevOps/ 2014-11-25 23:08:47 / 累计浏览 4,345

OS X 支持 NTFS 读写

这篇讲的是如何用系统原生的方式,让 Mac 对 NTFS 格式的硬盘支持读写功能。作者从一个常见情况切入:明明 OS X 内核支持 NTFS 读写,但系统默认却只以只读模式挂载,导致很多用户需要借助第三方软件才能向 NTFS 分区写入数据。 文章的核心方案是直接修改系统自带的挂载脚本。通过 root 权限将原始的 `mount_ntfs` 程序重命名,并创建一个新的脚本文件,在其中调用原始程序并强制添加读写(`rw`)参数。这个方法绕过了第三方工具,利用了系统自身潜藏的能力。 作者在最后也提醒了两个实操要点:一是建议 NTFS 分区最好设置卷标,避免因默认的“未命名磁盘”导致挂载失败;二是指出网上流传的添加 `nobrowse` 参数的做法其实多此一举,正确理解 `-o` 参数的含义后,完全可以让分区正常显示在 Finder 侧边栏,无需额外折腾。整个方案简洁直接,适合希望用最小改动实现原生读写的 Mac 用户参考。

本机暂存
IT 设计/ 2014-11-25 23:07:37 / 累计浏览 2,403

儿童网站的可用性问题

这篇文章分享了可用性专家Jakob Nielsen团队一项跨越9年的对比研究。核心发现是:随着新一代儿童更早、更深度地接触网络,设计者面对的“儿童用户”画像已发生根本变化。 研究团队在两个时间点分别测试了数十名3-12岁儿童使用各类网站的行为。结果令人意外:许多9年前的老问题对7岁以上的孩子已不复存在,他们表现出相当熟练的导航和滚动能力。真正的挑战转移到了更低龄的3-5岁儿童身上,他们如今的行为模式,反而像9年前6-8岁的孩子。 这意味着“儿童网站”必须进行更精细的年龄分层设计。例如,针对7-12岁儿童,可以适当简化基础交互教学,因为他们已是“网络原生代”;而针对3-5岁幼儿,则需要提供更强的引导和容错设计。文章也指出,尽管技术在变,但关于菜单结构、信息架构等基于认知心理的设计准则,其核心原则依然稳定。 这篇文章的价值在于,它用扎实的纵向数据戳破了关于儿童网络行为的诸多假设,提醒所有面向儿童的产品设计者:你的用户群已不是你想象中的样子了。

本机暂存
IT 设计/ 2014-11-25 23:06:34 / 累计浏览 2,896

UX设计师与UI设计师的区别

这篇讲的是UX与UI设计师的核心区别。文章通过一张信息图,直观对比了这两个常被混淆的职位:UX设计师聚焦于产品的整体用户体验、用户研究、交互逻辑与原型测试,确保产品“好用”;而UI设计师则更专注于视觉呈现、界面美学与交互细节,让产品“好看”。关键差异在于,UI设计不能仅停留在“美工”层面,还需深刻理解用户流程与交互原则,才能真正赋能产品。 图中清晰展示了两者在职责、思维模式、常用工具及技能要求上的具体分野,甚至提及了不同阶段的薪资参考(当然,这更多反映市场趋势而非绝对标准)。作者想提醒的是,一个成功的产品离不开UX与UI的紧密协作——一个定义体验骨架,一个赋予视觉血肉。理解这种分工与互补,能帮助团队更高效地推进设计流程,避免角色重叠或体验断层。

本机暂存
IT 前端/ 2014-11-25 23:04:58 / 累计浏览 2,053

浏览器图片渲染优化

页面加载时内容会“跳动”,这篇技术博客解释了其中一个常见原因:图片尺寸未被提前声明。文章指出,浏览器需要下载并解析图片才能确定其尺寸,这个过程会导致反复的布局计算和重绘,严重影响渲染效率。 核心解决方案其实很简单:为所有 标签显式指定 width 和 height 属性。这样浏览器能在下载图片前就为其预留出空间,从而消除不必要的回流(reflow),让页面渲染更流畅。文章详细对比了指定尺寸与不指定尺寸的区别:前者能让浏览器在下载图片前就渲染页面,消除布局偏移;后者则会导致浏览器反复计算布局,拖慢速度。 作者也提到了使用该属性可能带来的小问题——禁用图片时可能出现空框,但整体上仍强烈推荐使用,因为性能提升的收益远大于此。此外,文章给出了两个关键实践建议:一是不要用 HTML 或 CSS 强行缩放图片(比如把 60x60 的图强制显示为 30x30),应该在图像处理软件中预先调整好尺寸;二是建议为图片本身或其直接父容器指定尺寸,这样才能有效生效。 尽管存在显示上的小权衡,但养成在代码中为图片预定义尺寸的习惯,是前端性能优化中一项非常值得投入的基础工作。

本机暂存
IT 后端/ 2014-11-25 23:03:37 / 累计浏览 2,261

PHP最佳实践之PHP标签

PHP代码标签有好几种写法,但并非都同样可靠。这篇讲的就是如何在这些写法中做出明智选择,避开那些隐蔽的坑。 作者首先指出了一个关键事实:在众多标签中,``是唯一能保证在所有PHP服务器上正常工作的。这意味着,如果你无法控制目标服务器的配置,用这个最“原始”的标签是最稳妥的。 文章的核心观点在于一个反直觉的最佳实践:对于纯PHP文件,应该省略闭合标签`?>`。这并非为了美观,而是为了健壮性。任何在闭合标签后不小心混入的空格、换行或不可见字符,都可能被当作输出发送,导致页面错位、`header()`函数报错,甚至输出一片空白。作者建议,用一段注释来标识文件结尾和位置,既清晰又安全。 当然,规矩总有例外。在PHP与HTML混写的页面或模板里,像`

`这样,闭合标签就必须使用,以确保HTML结构的正确性。 这篇指南从具体问题出发,解释了看似微小的语法选择背后深刻的工程考量。它帮你在代码规范化的路上,于细节处更稳健。

本机暂存
IT 算法/ 2014-11-25 23:02:55 / 累计浏览 3,802

在2048里能够得到的最大的数是多少?

这篇讲的是2048游戏的一个数学极限问题。作者从Michael Brand的一个谜题出发,探讨了在这个著名的合并数字游戏中,理论上能得到的最大数字究竟是多少。 文章首先简明地解释了游戏规则,然后切入核心证明:为什么2¹⁸ (262144) 这个数字在4×4的棋盘上永远无法得到。作者通过一个巧妙的二进制分析指出,棋盘上所有数的总和的二进制表示中,“1”的个数不可能超过棋盘格子数16。而要产生一个2¹⁸,其总和的前一步必然是一个二进制“1”个数达到16的状态,这意味着棋盘恰好被2²到2¹⁷这16个不同数字块完全填满,无任何合并空间,游戏直接结束。 由此,131072 (2¹⁷) 成为理论上限。但作者进一步指出,这个数字本身能否达成仍是一个开放问题。尽管有玩家声称成功,但缺乏完整演示过程。文章留下了两种可能性:要么找到一种确定的构造方法来达成131072,要么给出一个更严密的证明来否定它。这使得一个看似简单的游戏,引向了一个关于数学构造与边界的有趣思考。

本机暂存
IT 移动开发/ 2014-11-25 23:02:12 / 累计浏览 2,993

“破网”利器一箩筐——移动互联网分析工具推荐

这篇讲的是几款免费又实用的移动互联网数据分析工具,特别聚焦在**友盟**与**百度开放云**这两大平台上。 文章详细拆解了它们各自提供的数据服务。比如**友盟**,它以季度/半年的行业数据报告、可按月追踪设备/系统/分辨率等趋势的指数平台为特色,能帮开发者看清市场动态。而**百度开放云**的报告则更侧重于移动搜索和用户行为深度分析,并联合发布了针对开发者的白皮书与案例剖析。 两者的关键差异在于侧重点:友盟的指数工具在**硬件与系统趋势的追踪**上非常直观;百度则在**移动搜索这个垂直领域**的数据挖掘上更具优势,且报告发布节奏更稳定。如果你需要快速把握设备碎片化现状或应用市场排名,友盟的指数是利器;若想深挖移动搜索趋势或获取开发方法论参考,百度的数据报告则更为适合。

本机暂存
IT 数据库/ 2014-11-25 23:00:40 / 累计浏览 2,203

Oracle数据库升级迁移、SPA及统计信息

作者从一次真实的升级迁移讲起:某省级电信运营商将核心CRM系统的Oracle数据库,从IBM小型机上的10g RAC迁移至x86+VMware平台的11g RAC,成本降至十分之一。这引出了一个关键的后续问题:新系统上线后,应采用何种统计信息收集策略? 文章对比了两种方案:迁移旧库统计信息或在新库自动收集。作者团队最终选择了后者,原因是11gR2的自动收集机制已相对完善,且能为后续运维降低风险。但如何确保这一策略在上线时就安全可用?答案在于利用SPA(SQL性能分析器)。 团队使用了生产库三个时段及一个月AWR中的全部SQL,在新库上跑SPA测试。在测试前,先用`dbms_stats.gather_database_stats(options=>'gather auto')`执行一次增量收集。然而,直接这样做会导致新库的直方图信息严重缺失,因为自动收集依赖`col_usage$`表,而新库此表为空。解决方法是在SPA测试过程中,通过执行足够多的SQL来“喂饱”`col_usage$`,让系统“记住”哪些列需要被关注。最终,基于SPA的测试结果,用数十个SQL Profile固化了风险计划,保障了系统平稳上线。 这篇分享的价值在于,它清晰地展示了在大型跨版本迁移中,如何通过组合使用SPA和自动统计信息收集策略,来系统性规避性能风险,而不仅仅是凭经验手工调优。

本机暂存
IT 算法/ 2014-11-25 22:50:14 / 累计浏览 3,203

用牛顿迭代法求整数的平方根

这篇文章讲解了如何用牛顿迭代法解决一个经典的编程面试题:求整数的平方根。作者直接给出了一个基于 double 类型的 C++ 实现,并解释了其核心思路——利用迭代公式不断逼近平方根值,当相邻两次迭代结果差值小于1时即终止,最终取整。 文章的巧妙之处在于指出了实际实现中的几个关键细节。例如,代码对输入为0和1的情况做了预处理,并在最后通过 `floor` 和条件判断确保结果严格是小于等于原始整数的最大整数。作者也坦诚分享了一个尝试:他曾想用有理数运算避免浮点误差,但发现迭代次数增多后分子分母极易溢出,此路不通。 最后,作者点明这段代码的定位:它足以应对面试考察,但在生产环境中,面对性能要求时,可能存在更优的方案(如打表预计算)。这提醒读者,算法选择需结合具体场景,在理论正确性与工程实用性之间做好权衡。

本机暂存
IT 移动开发/ 2014-11-25 22:49:10 / 累计浏览 3,429

移动音乐产品梳理

作者在为自己的音乐播放器项目做调研时,对移动音乐市场进行了一次全面梳理。他指出,在线音乐产品的核心功能形态无外乎专辑、歌手库、歌单、排行榜和音乐电台,而当前市场格局则由版权和资本实力主导。 文章重点对比了几大主流产品的差异化优势:QQ音乐凭借林宥嘉、周杰伦等独家华语版权构筑了强大的内容壁垒;百度音乐则通过为小米MIUI、联想VIBE UI等众多手机ROM提供内置在线资源,成为“隐性的冠军”;网易云音乐作为后起之秀,在古典音乐等垂直曲库上异常全面,并以高质量下载和社区功能吸引用户。此外,文章也提及了阿里收购虾米与天天动听后的整合,以及多米音乐通过预装和收购获取资源的历程。 除巨头竞争外,作者也注意到满足长尾需求的小众产品,例如算法驱动的豆瓣FM、基于使用场景的LavaRadio,以及专注独立音乐的落网。整体来看,这篇梳理清晰地呈现了各平台基于自身资源与策略形成的竞争态势。

本机暂存
IT 后端/ 2014-11-25 22:47:00 / 累计浏览 3,237

每个程序员都应该知道的一些访问时延值

这篇文章分享了一组程序员最好烂熟于心的参考值——从CPU各级缓存、主存、固态硬盘到跨地域网络请求的访问延迟。这组经典数据最早源自谷歌传奇工程师 Jeff Dean 的演示文稿,它用具体数字将抽象的“快”与“慢”量化成了直观的层次。 例如,从L1缓存访问只需几纳秒,而访问一次固态硬盘则需要几万纳秒,一次跨大西洋的网络往返可能要一百多万纳秒。这之间几个数量级的差异,直接决定了我们在设计算法、选择存储方案和搭建分布式系统时的性能天平该如何倾斜。文章作者不仅呈现了数据,还提供了社区整理的精炼版链接,并讲述了关于 Jeff Dean 的著名轶事,让这组数据多了几分传奇色彩。 在编程世界里,凭感觉优化往往事倍功半。而将这些延迟数字内化于心,能帮助你在架构层面做出更明智的判断,比如何时该引入缓存、数据该如何分区、或是如何设计一个能容忍网络延迟的服务。有了这些量化概念,做技术决策时才能心中有“数”。

本机暂存
IT 后端/ 2014-11-25 14:16:30 / 累计浏览 2,092

新浪微博的纸牌屋

这篇讲的是微博崛起背后,一套被称作“纸牌屋”的关键人物合力。文章从新浪这家“无主”的互联网公司说起,剖析了在2009年管理层MBO前后,几股核心力量如何共同塑造了微博。 作者认为,微博的成功并非一张牌的力量,而是多张“牌”各司其职。内容大将陈彤奠定了“名人战略”的基石,复制了门户与博客的成功逻辑;销售核心杜红则将传统媒体的“大单”经营思维带入微博,高效地将流量转化为广告收入。执行者彭少彬力推项目并打通了用户标签系统,而技术出身的王高飞则敏锐抓住了移动浪潮,最终执掌产品技术,释放了“移动优先”的信号。 此外,曹国伟的资本运作与战略布局(如MBO、毒丸计划、商业化六大方向)为微博提供了关键支持和路线图。许良杰则带来底层技术与大公司管理经验,试图补强新浪的技术短板。文章指出,这套由内容、经营、执行、移动、资本与技术组成的“牌”,共同推动微博在竞争中胜出并走向上市,其合力也深刻影响了这家传统媒体基因公司的转型方向。

本机暂存
IT DevOps/ 2014-11-24 23:44:23 / 累计浏览 2,377

VirtualBox 虚拟机镜像文件 UUID 已存在问题

这篇讲的是VirtualBox使用中的一个常见陷阱:当你想把一个已用过的虚拟机镜像文件拷贝到另一台电脑时,VirtualBox会报错“UUID已存在”,阻止你直接加载。问题的根因在于,镜像文件自带的唯一识别码(UUID)已在原电脑的VirtualBox环境中注册过,系统不允许重复。 文章作者亲身从USB盘加载虚拟机时碰到了这个坑。界面选项里找不到解决办法,但作者记起命令行可以搞定。具体的修复步骤是:打开终端,进入VirtualBox的安装目录,然后使用 `VBoxManage internalcommands sethduuid` 命令,紧跟VDI镜像文件的路径,为它重新生成一个全新的UUID。执行成功后,再新建虚拟机加载这个镜像文件,就能顺利运行了。 对于经常迁移虚拟机环境的技术人员来说,这个用命令行“重置身份证”的小技巧很实用,能快速绕过这个报错,省去重新导出导入的麻烦。

本机暂存
IT DevOps/ 2014-11-24 23:42:47 / 累计浏览 6,629

mac系统更换硬盘及初始化开发环境的记录

作者从自己使用多年的MacBook Pro陷入频繁死机的困境出发,诊断发现是机械硬盘因长期不当使用(经常盖着盖子携带)导致硬件故障,通过TechTool工具确认硬盘SMART检查失败。文章详细记录了整个更换硬盘与重装系统的全过程:从准备新硬盘、制作Mac OS X Mavericks系统U盘,到拆机换盘、分区安装系统。其中特别提到数据恢复时踩的一个大坑——备份恢复后所有文件因换行符格式变化而显示为修改状态,最终通过硬盘盒直接从旧硬盘拷贝数据才得以解决。在初始化开发环境部分,作者逐步搭建了Xcode、iTerm2、Homebrew、Python、MacVim和MySQL等工具链,并分享了MySQL安装中的具体步骤与卸载方法,例如需要手动链接命令行工具并设置环境变量。整篇记录不仅提供了清晰的故障排查思路,还涵盖了从硬件维护到软件配置的实用细节,对面临类似Mac老机型维护的读者有直接的参考价值。

本机暂存
IT 开发者/ 2014-11-24 23:41:42 / 累计浏览 7,717

也说 Mac 的不好

从Windows阵营转投Mac后,作者经过三个多月的深度使用,坦诚分享了一系列“水土不服”的痛点。文章并非泛泛而谈,而是直击几个核心的体验落差与技术细节。 字体渲染是首要槽点。作者指出,在非Retina的外接显示器上,Mac的字体渲染效果远不如Windows下的微软雅黑清晰,显得“糊”。这背后是苹果尊重字形原始结构的技术路线,与微软为液晶屏优化的渲染策略的根本差异,而前者在普通分辨率下优势尽失。 此外,MacBook Pro键盘缺少PageUp/Down、Home/End等物理按键带来的效率损失,以及外接键盘后Home/End键“移动到文稿首尾”而非“移动到行首行尾”的默认逻辑,都与PC用户的习惯严重冲突。作者不仅提出了用Fn组合键过渡,还提供了通过编辑`DefaultKeyBinding.dict`文件进行系统级键映射的进阶方案。 对于F11/F12等被系统默认功能占用的全局快捷键,作者提醒需要手动到“系统偏好设置-键盘-快捷键”里逐一排查和重新分配。整篇文章像一份来自前线的实战报告,把那些看似“奇葩”的问题掰开揉碎,给出了可操作的解决思路。对准备或刚刚入手Mac的用户来说,这份基于真实踩坑经验的总结,能帮助他们更平滑地跨越系统切换的初期障碍。

本机暂存