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

最新文章

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

IT 开发者/ 2012-10-26 22:18:44 / 累计浏览 2,866

项目管理中怎么做资源平衡

这篇讲的是项目管理中一个常被忽视的难点:资源平衡。作者从一个包含A到G七个作业的实际工程案例出发,清晰地展示了在进度管理中,计算工期和计算最少人力这两个任务在难度上的巨大差异。 文章先用关键路径法快速得出结论——关键路径为B-D-F,项目最短工期为7周。但真正的挑战在于如何确定整个工程最少需要多少人。作者指出,在不推迟工期的前提下,关键路径上的活动不可变动,而非关键活动的安排则需要借助甘特图进行细致分析。 通过将非关键活动(如A、C、E、G)在允许的时间窗口内合理排布,并对比各时段所需人力,文章最终推导出该项目最少需要10人。整个分析过程生动地揭示了:在理论上可行的进度方案,在资源受限的现实中可能需要复杂的权衡与计算。这对项目经理而言是一个非常实用的视角。

本机暂存
IT 数据库/ 2012-10-26 22:17:55 / 累计浏览 6,894

那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼

这篇讲的是从Oracle 10g/9i升级到11gR2时,可能因新特性默认启用而“惹祸”的那些事儿。作者指出,像自适应游标共享(Adaptive Cursor Sharing)、自动串行直接路径读(Automatic Serial Direct Path Read)、延迟段创建(Deferred Segment Creation)以及GC相关的新特性等,在实际中可能并不适合许多国产应用,会给原本稳定的系统带来执行计划波动等不确定风险。 文章的核心是一份可直接操作的“排雷清单”。作者汇总了一系列优化器和其他相关特性的隐藏参数,提供了一套通过设置参数来选择性禁用这些新特性的方法。其背后的逻辑很务实:如果你的应用没有条件或时间对这些新特性进行充分测试,不如主动禁用它们,让数据库在11gR2的架构上退回到类似于10gR2(10.2.0.4)的稳定行为模式。 作者也解释了“禁用新特性是否还有升级必要”的疑问。他强调,这并非全盘否定,而是给出了一份可选的选项列表。熟悉且已验证的特性可以保留,不熟悉的则可以选择关闭,从而在享受新版本其他益处的同时,规避因未经测试的优化器行为变更带来的潜在故障。对于那些需要手动开启才会生效的特性(如Flashback Archive),则不受此列表影响。

本机暂存
IT 前端/ 2012-10-26 13:32:20 / 累计浏览 4,688

Web标志(The Mark of The Web)摘记

这篇讲的是一个容易被忽略的IE浏览器兼容性细节。作者从阅读《HTML5秘籍》出发,分享了他在开发中遇到的一个具体问题:当本地HTML文件需要加载JavaScript时,IE默认会因安全设置弹出警告框,影响用户体验。 他从中学习到了“Web标志”这个解决方案——其实就是在HTML头部添加一行形如``的特殊注释。这行注释的作用是告诉IE浏览器,将该页面视为从远程网站下载而来,从而在本地的安全沙箱中正常运行,避免弹窗。 文章不止于介绍技巧,作者还进一步提出了自己的思考:这个注释是否真的广泛适用?使用了它又会不会带来其他副作用?例如,有观点认为这可能导致页面从本地缓存加载,从而影响某些脚本效果。而许多主流网站并未使用这一注释,也引发了对其实际价值的探讨。作者将这些疑问抛出,为前端开发者留下了一个值得琢磨的实践话题。

本机暂存
IT 开发者/ 2012-10-26 13:30:19 / 累计浏览 4,387

程序员如何保持优秀

这篇观点类文章从程序员的长期成长出发,提炼了20条保持优秀的核心准则。作者强调的并非追逐最新工具,而是扎实掌握少数关键技术并深刻理解其底层原理。 文章认为,优秀超越了单纯的代码优化,更在于对数据结构和算法设计的深刻洞察。它鼓励程序员跳出日常编码,去真正理解用户需求,并将分析与编程这两个不同性质的工作在时间上分开处理。其中一些具体建议极具实践性,比如坚持正确的命名规范以提升代码可读性,永远不为图省事而写重复代码,以及通过亲自构建框架和重构他人“神奇但混乱”的代码来学习。 作者的核心观点是,数据永远比理论更重要,而持续学习的最佳方式之一,就是将所知教授给他人。这些建议最终都指向一个目标:帮助程序员建立扎实、清晰且面向长期价值的技术习惯,从而在职业生涯中持续精进。

本机暂存
IT 设计/ 2012-10-26 13:25:54 / 累计浏览 1,662

菲茨定律与互联网设计 Fitts’ s Law

这篇讲的是菲茨定律——一个预测用户将光标移动到目标所需时间的数学模型——如何深刻影响了从桌面操作系统到网页设计的交互实践。作者从1954年保罗·菲茨提出的原始模型出发,解释了“大幅移动+精细微调”的双阶段定位过程,并用伸手指远处开关和近处电视的生活化比喻,让距离和目标尺寸对操作效率的影响变得直观。 文章重点剖析了“无限可选中”这一妙用:将关键操作区(如Mac的菜单栏、Windows的开始按钮)置于屏幕边缘或角落,系统边界无形中替用户完成了“微调”步骤,极大缩短了点击路径。但作者也敏锐指出,随着多屏和大屏普及,Mac菜单栏因距离过远带来的移动成本可能抵消这一优势。 在网页设计层面,文章提供了可落地的优化方向:放大链接热区、为密集的操作按钮增加间距、突出主要行动按钮(如“OK”键),甚至借鉴37signals动态放大按钮的创意来减少微调需求。整篇内容将经典人机交互理论转化为可见、可感的设计细节,对提升界面易用性很有启发。

本机暂存
IT 后端/ 2012-10-26 13:25:10 / 累计浏览 3,164

三种代理服务器的区别

这篇讲的是三种代理服务器的区别:标准代理、透明代理与反向代理。 作者从它们的工作机制和应用场景出发,做了清晰的对比。标准代理需要用户主动配置浏览器,主要作用是缓存静态内容,为企业或局域网用户节省带宽。透明代理则对用户完全“透明”,无需配置,由网络设备(如路由器)在80端口直接截获HTTP流量进行缓存,这在ISP和简单局域网加速场景中很常见。 而反向代理的工作重点完全不同,它面向服务器端,被架设在Web服务器前端,主要目的是缓存服务器生成的动态或静态内容,直接响应大量请求,从而显著减轻后端服务器的负载压力,提升网站整体性能。 文章的亮点在于没有止步于理论对比。后半部分详细演示了如何使用Apache搭建一个反向代理服务器,以解决“如何用一台公网服务器(A)代理访问内网其他服务器(B、C)”的实际问题。内容涵盖了模块启用、VirtualHost配置等具体步骤,非常实用。 总的来说,这篇既讲清了三种代理的“是什么”和“为什么”,又通过实例说明了“怎么用”,对于理解网络架构和解决服务器部署问题都有参考价值。

本机暂存
IT 数据库/ 2012-10-26 13:24:43 / 累计浏览 5,870

大于2GB的Listener.log和运行超过198天的主机上的Oracle实例

这篇讲的是Oracle DBA圈里流传已久的两个“传说”及其在当代的真相。 一个是关于Listener.log日志文件不能超过2GB的限制。作者追溯其根源,指出这在早年32位操作系统与文件系统(如Solaris 2.6、早期Linux)时代确实是铁律,但对如今主流的64位系统已成过去式。他通过实际演示,在64位Linux上让Listener.log增长至3GB以上,并依然成功建立新连接,直接证伪了这一“信仰”。同时,他从系统调用层面解释了监听器进程使用O_APPEND标志位追加写入,性能并不会因文件过大而下降。 另一个则是主机运行超过198天会导致Oracle实例故障的传闻。作者澄清,这特指Oracle 10.2.0.1版本的一个已知BUG,会导致OCI客户端CPU空转。该问题在后续的10.2.0.2补丁集中早已修复。他提到,这个因特定版本与超长运行时间偶合的BUG因其戏剧性而令人印象深刻,以至于多年后在部分运维场景中仍被当作经验传播。 文章的核心结论是,这两个基于特定历史条件产生的“最佳实践”,在硬件与软件都已迭代的今天应当被更新认知,尽管定期清理日志等习惯依然值得推荐。作者通过技术细节与版本历史,为读者梳理了从“真理”到“传说”的演变脉络。

本机暂存
IT DevOps/ 2012-10-26 13:22:55 / 累计浏览 1,380

riak_sysmon使用和源码分析

这篇讲的是 riak_sysmon 这个 Erlang 监控工具的实战与原理拆解。它基于 Erlang VM 内置的 `system_monitor` BIF 函数,专注于捕获四类关键事件:进程堆内存过大、垃圾回收耗时过长、端口(文件或套接字)繁忙,以及节点间网络繁忙。 文章的核心是剖析其内部的两个进程协作。`riak_sysmon_filter` 进程扮演“过滤器”角色:它读取配置的阈值,启动底层监控,并对原始消息进行限流(例如每秒只上报前 N 条),避免告警风暴。过滤后的消息被通知给一个 `riak_sysmon_mgr` 的 `gen_event` 进程,由用户注册的 handler 来具体处理。 作者通过一个制造内存增长的 gen_server 示例,直观展示了当进程堆超过 `heap_word_limit` 后,系统如何触发并报告 `large_heap` 事件。这种 filter + event manager 的设计很巧妙:filter 解决了原生 `system_monitor` 消息洪泛和单一接收者的局限,而 event manager 则将事件处理解耦,允许灵活扩展。

本机暂存
IT 后端/ 2012-10-26 13:19:52 / 累计浏览 6,263

TCP/IP 相关总结

这篇讲的是TCP/IP协议栈的经典模型对比。作者从TCP/IP四层模型出发,清晰地列出了每一层的代表性协议,比如应用层的HTTP和DNS,传输层的TCP和UDP。文章随后引入了OSI七层模型,并将两者进行并排比较,直观地揭示了关键差异:TCP/IP的应用层实际上整合了OSI应用层、表示层和会话层的功能,这是一个非常核心的简化与实用主义设计。 此外,文章开篇就扎实地回顾了TCP三次握手建立连接的完整过程,从SYN包发送到SYN+ACK回应,再到最后的ACK确认,讲得很清楚。虽然文章还提及了IP地址分类,但其核心价值在于对这两套网络分层模型的拆解与对照,帮助读者理解网络通信框架从理论模型(OSI)到实际协议栈(TCP/IP)的演变与取舍。搞明白这些区别,对于理解网络通信的本质很有帮助。

本机暂存
IT 前端/ 2012-10-26 13:09:06 / 累计浏览 4,843

网站统计中的数据收集原理及实现

这篇技术解析从我们日常使用的谷歌分析、百度统计等工具切入,深入剖析了其背后数据收集的核心机制。作者指出现代统计的关键突破在于利用JavaScript进行可定制的埋点,从而能捕获从页面浏览到按钮点击、电商下单等丰富用户行为。 文章重点拆解了数据收集的“三步走”流程:首先,网站植入的埋点脚本会动态加载主收集脚本;其次,这个主脚本通过浏览器对象和自定义配置收集页面信息与事件数据,并巧妙创建一个指向后端地址的Image对象来实现跨域传输;最后,服务器端的收集脚本(常伪装成一个1x1的透明GIF)解析请求参数,结合服务器信息与Cookie技术来记录日志并追踪唯一访客。 最有价值的部分是,作者并未止步于理论分析,而是基于上述原理,动手实现了一个名为MyAnalytics的简易收集系统,详细展示了从确定收集字段(如URL、分辨率、Referrer)到设计服务端的全过程。这种从原理到实践的完整拆解,清晰揭示了网站统计工具“看透”用户行为的技术底色。

本机暂存
IT 设计/ 2012-10-26 13:07:08 / 累计浏览 6,038

Kano模型在用户调研中的应用 ———客户关系管理工具调研实例

当淘宝需要为数百万卖家的CRM工具规划新功能优先级时,传统的“满意-不满意”二元思维显得力不从心。这篇技术分享记录了淘宝UED团队如何借助Kano模型,从“功能具备程度”与“用户满意度”两个维度,对17个潜在功能进行精准分类和排序,从而辅助业务决策。 文章的核心价值在于其详尽的实操流程。从设计包含正向/反向问题的Kano问卷,到收集清洗近6000份样本数据,团队一步步拆解了模型的应用。分析聚焦于日均发货量20单以上的高价值卖家,通过二维属性归类和Better-Worse系数计算,得出了一个关键发现:被调研的功能点大多属于“魅力属性”——即没有它们用户不会抱怨,但一旦拥有,会带来显著的惊喜感和满意度提升。 这份调研报告不仅提供了一个方法论范例,更揭示了Kano模型在功能优先级排序上的直观性:必备属性是地基,期望属性是竞赛,而魅力属性则是创造差异化体验的机会点。对于需要在资源有限条件下做出产品抉择的团队而言,这套结合了定性分类与定量系数的分析框架,提供了清晰的决策地图。

本机暂存
IT 算法/ 2012-10-26 13:05:49 / 累计浏览 3,336

演讲小组的第一次活动

这篇讲的是作者和同事基于胡适“谈话说理”的启发组织演讲小组后的真实观察。他们发现,即便有多次演讲经验,大多数人依然缺乏对“演讲本身”的反馈——比如逻辑、表达和材料运用。 第一期活动后总结出几个关键痛点:纯理论观点容易让听众昏昏欲睡;缺乏实践案例或故事支撑的观点难以引发共鸣;对素材不熟悉会导致脱稿后辞不达意,说明“所思所想”尚未真正内化;此外,PPT与内容无关、推论无法支撑结论等逻辑问题也屡见不鲜。 文章并非泛泛而谈演讲技巧,而是从一次具体实践出发,拆解了技术人表达能力中的常见盲区。对于同样需要清晰传递复杂想法的工程师来说,这些观察或许比通用演讲指南更有针对性。

本机暂存
IT 数据库/ 2012-10-26 11:36:40 / 累计浏览 8,601

低成本和高性能MySQL云数据的架构探索

这篇讲的是阿里核心系统数据库团队如何从零打造一个名为UMP的MySQL云服务平台,来同时解决大规模MySQL集群面临的成本与性能难题。 背景是淘宝这样的企业有数千台MySQL服务器,直接扩展成本高昂。他们的UMP系统目标很明确:让开发者能方便地申请和使用资源,而由平台透明地处理主从热备、读写分离、分库分表等复杂运维工作。核心方案是在一台物理机上运行多个MySQL实例以降低成本,并实现资源的弹性隔离与分配。 他们最初的方案基于MySQL-Proxy,但很快发现了它的多线程模型缺陷、功能扩展困难以及社区不活跃等问题。于是,团队果断选择用Erlang语言重写了整个Proxy层。Erlang轻量级的“绿进程”和OTP框架,为他们提供了高并发、高容错且易于热部署的编程模型,完美契合了云服务的需求。 最终的UMP系统架构包含Controller、Proxy、Agent等多个角色,通过RabbitMQ和ZooKeeper协同工作,构成了一个完整的、可伸缩的云数据库服务。文中还透露,这个系统已经在天猫聚石塔等平台落地,为电商业务提供着安全可靠的数据云服务。

本机暂存
IT 前端/ 2012-10-26 00:25:29 / 累计浏览 2,698

60多个超炫的视差滚动效果网站设计欣赏

这篇汇总收集了60多个应用了视差滚动效果的网站,堪称一份过瘾的视觉灵感清单。作者从eBay新版页面的酷炫效果切入,引出了这项正流行的网页设计趋势。 所谓视差滚动,核心是让网页的多层背景以不同速度移动,在鼠标滚动时营造出逼真的立体纵深感,把传统的页面切换变成一场引人入胜的视觉叙事。文章不仅清晰地解释了这一概念,更用大量实例展示了它的强大表现力。 清单里包含了eBay、Nike、任天堂等众多知名品牌的专题站,也有不少独立设计工作室的创意作品。从游戏到商业宣传,从品牌展示到个人作品集,这些案例充分证明了视差滚动能极大提升页面的沉浸感与交互趣味,有效引导用户探索内容。对于前端开发者和设计师而言,这无疑是一份快速了解该技术应用广度和创意高度的实用参考。

本机暂存
IT 后端/ 2012-10-26 00:13:54 / 累计浏览 6,418

LVS hash size解决4096个并发的问题

这篇讲的是如何解决LVS在高并发场景下因默认哈希表过小而导致的性能瓶颈问题。 文章指出,LVS用于记录连接信息的connection hash table默认仅有4096条目(可通过`ipvsadm -ln`查看)。当并发连接数远大于此值时,会发生频繁的哈希冲突与置换,显著增加系统负载。作者在CentOS 5.4环境下,演示了通过重新编译内核来扩展此限制的具体方法。 核心操作是获取系统对应的内核源码包,在编译配置中将`CONFIG_IP_VS_TAB_BITS`参数从默认的12(对应2^12=4096)修改为20(对应2^20=1048576)。使用原有配置进行编译,能确保仅改变哈希表大小而不影响内核其他功能。编译安装新内核并重启后,哈希表大小成功扩展至超过百万级。 作者也分享了实用经验:为应对业务增长,他通常直接将该值设为最大的20。同时提醒,每个连接都会占用内存(约136字节),即使LVS理论性能可达百万级,也需确保服务器有足够的内存资源来支撑。

本机暂存
IT 算法/ 2012-10-26 00:04:19 / 累计浏览 3,081

TF-IDF模型的概率解释

这篇讲的是如何从概率的角度,重新理解一个搜索引擎的核心算法——TF-IDF模型。作者敏锐地指出,传统信息检索中“匹配度”的定义相当模糊,更严谨的目标应该是计算“给定查询串q时,用户期望获得文档d的概率”。 为了推导这个概率,文章构建了一个巧妙的“盒子小球模型”:将文档比作装有彩色小球(词语)的盒子,整个问题就转化为经典的贝叶斯条件概率问题P(d|w)。作者逐层拆解这个公式:P(d)是文档的先验概率,这恰好对应了Google PageRank的思路,解释了为何它常与TF-IDF相乘;P(w)是关键词本身的搜索先验概率;而条件概率P(w|d)则被解释为“词w代表文档d主题的概率”。 文章的亮点在于对P(w|d)的推导。作者引入了信息论,指出idf公式中的log(n/docs(w,D))本质上就是词w的“信息量”——它对降低文档集合不确定性的贡献大小。通过这一关键连接,TF-IDF的乘积形式被自然地纳入概率框架。同时,模型也指出了当前简单搜索引擎可能忽略了文档的总词信息量(分母部分)和关键词的全局搜索频率P(w)。 最后,文章尝试将模型扩展到多关键词场景,并探讨了关键词独立性假设的局限。整体而言,作者并未止步于解释TF-IDF,而是用概率视角重构了整个排序问题的根基,并指出了更精确的优化方向。

本机暂存
IT 设计/ 2012-10-22 23:36:15 / 累计浏览 2,019

浅析中英文基本字形的演变和发展

这篇从文字设计的源头切入,梳理了中英两种文字系统在形态演进上的根本差异。作者从甲骨文、金文到楷书的演变脉络出发,对比了腓尼基字母经由希腊、罗马发展为拉丁字母的历程,指出中文始终保持着“从象形到笔画”的表意内核,而英文则完成了“从具象到抽象”的拼音化转型。 文章具体分析了两者在结构单元、书写逻辑和空间布局上的不同:汉字以方块为基础进行二维组合,注重间架结构的平衡;拉丁字母则依据线性排列,依靠笔画顺序和连接形态传达信息。这些差异也塑造了截然不同的排版规则和设计美学。 通过追溯这两种文明符号的蜕变轨迹,文章揭示了文字形态并非偶然选择,而是文化习惯与实用需求长期作用的结果,帮助读者理解不同文化背景下文字形态的演化逻辑。

本机暂存
IT 后端/ 2012-10-22 23:35:43 / 累计浏览 3,494

BufferedIO和DirectIO混用导致的脏页回写问题

这篇文章源于一次线上问题排查:曲山同学遇到系统性能抖动,最终发现罪魁祸首是 BufferedIO 与 DirectIO 的混用引发的脏页回写风暴。文章详细拆解了问题机制——当文件同时存在两种 I/O 访问路径时,操作系统对脏页的回写策略可能被扰乱,导致大量不必要的刷盘操作与延迟毛刺。作者不仅定位了内核页缓存与 IO 调度层的交互细节,还给出了具体的规避方案:比如统一 I/O 模型、调整文件系统挂载参数,或对关键路径做隔离。对于需要高性能存储或处理海量数据的应用开发者来说,这个案例清晰地展示了底层 IO 选择可能带来的隐性坑点,以及如何通过系统性的分析来规避类似风险。

本机暂存
IT 数据库/ 2012-10-22 23:33:59 / 累计浏览 6,153

从load data引发的死锁说起

这篇讲的是一个线上数据分析项目中,因频繁使用LOAD DATA语句向InnoDB表导入数据而引发的死锁问题。作者从实际线上故障出发,详细拆解了死锁产生的典型场景:当多个客户端并发执行LOAD DATA时,由于该操作会自动使用事务并持有元数据锁,若并发事务的加锁顺序不一致,极易触发死锁循环。 文章重点剖析了根因,指出LOAD DATA在事务中会隐式开启事务并在结束时提交,多个并发导入流在等待彼此释放行锁时形成死锁。处理方案上,作者结合锁等待关系图进行了分析,并探讨了如调整事务隔离级别、控制并发导入粒度等应对策略。最后,文章还延伸讨论了LOAD DATA的事务特性、InnoDB的元数据锁机制以及如何通过监控锁等待关系来快速定位类似问题,为处理高并发数据导入场景下的锁冲突提供了具体思路。

本机暂存
IT 后端/ 2012-10-22 23:32:23 / 累计浏览 5,829

qperf测量网络带宽和延迟

这篇文章聚焦于如何使用qperf工具准确测量网络性能参数。作者指出,虽然我们了解网络设备的理论规格,但在实际部署中,网卡驱动、交换机跳数、丢包率以及协议栈配置等因素都会显著影响实际的带宽和延迟表现,而这些参数直接关系到request-response类协议的最大QPS和系统承载能力。 文中详细介绍了qperf工具在实际场景中的应用价值——它能够穿透理论值的迷雾,帮助开发者或运维人员获取真实的网络基准数据。这种实测对于诊断性能瓶颈、优化服务器配置以及验证网络变更效果都至关重要。 通过将理论预期与实测结果进行对比,文章揭示了网络环境的复杂性,并强调了基于真实测量数据进行决策的重要性。对于需要精确掌控网络性能的技术团队来说,这提供了一种实用且直接的评估方法。

本机暂存