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

最新文章

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

IT 数据库/ 2009-10-21 22:10:31 / 累计浏览 5,673

Linux 64位, MySQL, Swap & Memory 优化

这篇讲的是如何在64位Linux环境下,针对MySQL的Swap和内存使用进行优化以提升性能。 文章从一个常见的性能瓶颈场景切入:当MySQL运行在64位Linux系统上时,系统默认的内存管理与交换空间(Swap)策略可能并不适合数据库这种内存密集型应用。作者指出,即便物理内存充足,系统也可能因不当的Swap配置导致性能下降。 核心方案聚焦在两个关键参数的调整上:`vm.swappiness` 和 `vm.overcommit_memory`。文章详细解释了这两个参数如何影响操作系统将MySQL的内存页面交换到磁盘的倾向,以及如何处理内存分配请求。通过具体的配置建议和调整逻辑,目标是让MySQL尽可能多地使用物理内存,减少昂贵的磁盘交换操作,从而降低延迟、提高查询吞吐量。 最后,文章通过对比优化前后的可能效果,说明这类系统层面的调优往往能带来立竿见影的性能改善,尤其是在内存压力较大的生产环境中。对于负责MySQL运维和性能优化的技术人员来说,这是一个值得审视和调整的基础配置方向。

本机暂存
IT 设计/ 2009-10-21 22:10:00 / 累计浏览 2,840

网站的定律[ZT]

这篇讲的是那些藏在日常运营数据背后的“网站定律”。作者从经典的“250定律”切入——这条人际影响力法则在网站场景下被重新诠释:一个不满意用户的“吐槽”潜在可能触及250个潜在用户,这生动地说明了用户口碑在网络中的指数级传播力。 但这仅仅是开始。文章梳理了多个与网站生存、增长、衰减相关的经验规律。这些定律并非高深的理论,而是无数从业者在数据中验证过的洞察。比如,它可能揭示了内容或产品衰减的曲线,也可能点出了流量与转化之间非线性的关系。作者的核心观点在于,很多时候我们缺乏的不是知识,而是将已有经验抽象为“定律”并用于指导实践的意识——正所谓“不识庐山真面目,只缘身在此山中”。 对于身处具体业务中的技术人员和产品经理,这些定律像一面镜子,帮助我们跳出日常的执行细节,从更宏观、更规律的角度审视自己的网站,理解其生长与瓶颈背后的逻辑。

本机暂存
IT 数据库/ 2009-10-21 09:11:35 / 累计浏览 4,757

MySQL介绍和性能优化 (PPT/PDF)

这篇讲的是MySQL数据库的基础认知与性能优化实践,以技术演示文稿的形式,系统梳理了从核心概念到调优技巧的关键知识。作者从“什么是MySQL”这一基本问题出发,快速搭建认知框架,随后深入到性能优化的核心战场。 文章的价值在于它不只罗列参数,而是将优化思路融入具体场景。比如,它清晰区分了索引优化、查询缓存调整和服务器配置升级等不同层级的手段,解释了每个措施解决的具体瓶颈——是减少了磁盘I/O,还是降低了CPU负载。通过对比优化前后的查询执行计划与响应时间,直观展示了不同策略的实际收益。 尤其值得一提的是,其中关于InnoDB存储引擎的内存与锁机制分析,揭示了许多性能问题的根源,比如为何看似简单的更新操作会变慢。这些内容让抽象的优化原则变得可操作。整个分享从原理到实例,为开发者提供了一份可以直接应用的MySQL性能诊断与调优指南。

本机暂存
IT 数据库/ 2009-10-21 09:06:24 / 累计浏览 2,872

安装BBED

这篇讲的是Oracle数据库中一个关键工具——BBED(Block Browser and Editor Tool)的安装过程。作者从实际运维场景出发,详细说明了为什么需要这个工具:它可以直接查看和修改数据块内容,在数据恢复、误删数据抢救等极端情况下扮演着“最后一道防线”的角色。 文章的核心部分聚焦于具体安装步骤,特别是针对不同Oracle版本的差异。例如,在Linux环境下,需要从安装介质中手动编译生成可执行文件,并正确设置环境变量。作者特别强调了Oracle 12c及更高版本中,BBED默认不再随软件提供,需要额外获取源码并编译,这个过程容易因缺少编译器或依赖库而出错,文中给出了排查这些典型问题的思路。 对于想动手实践的读者,文章明确了安装后的验证方法,以及首次使用时需要连接的特殊数据字典视图。整体上,这篇内容将一款底层工具的安装过程拆解得清晰明了,避免了新手面对晦涩官方文档时的无从下手,为需要直面数据块级操作的DBA提供了一份实用的起点指南。

本机暂存
IT 算法/ 2009-10-21 09:05:49 / 累计浏览 1,375

H1N1新型流感与一般感冒症状比较表

夏秋换季是感冒高发期,如何快速分辨症状是普通感冒还是更危险的H1N1流感?这篇内容提供了一个清晰的实用对比。 作者直接抛出了一个症状比较表,核心是帮助读者在出现不适时进行初步自我评估。文章详细对比了两者在发病速度、典型症状、全身表现以及病程上的关键差异。例如,H1N1流感通常起病急骤,伴随高热、明显的全身肌肉酸痛和乏力;而普通感冒的症状则更集中在鼻咽部,如流涕、咽痛,全身症状较轻。 这种并排对比的形式非常直观,关键区别一目了然。文章最后也给出了务实的行动建议:一旦无法自行区分,或症状符合流感特征,就应及时寻求专业医疗帮助,避免延误。对于换季时节关心健康的读者来说,这是一份值得存备用的快速参考指南。

本机暂存
IT 数据库/ 2009-10-21 09:05:06 / 累计浏览 3,783

Tips: PL/SQL中监控执行进度两种方法

在PL/SQL开发与运维中,长时间运行的存储过程或批处理作业常常让人心里没底——不知道任务执行到了哪一步,是否卡住了,或者还需多久完成。作者从这一实际痛点出发,分享了他常用的两种监控执行进度的方法。 文章并未停留在概念说明,而是直接给出了可操作的示例代码。其中一种方法利用了DBMS_OUTPUT包来动态打印过程内部的关键节点信息,适合调试和日志记录;另一种则通过查询V$SESSION_LONGOPS视图,从数据库层面获取更宏观的执行进度百分比与剩余时间估算,更适合生产环境监控。两种路径各有侧重,前者直接反馈业务逻辑进展,后者则依赖于Oracle本身的优化器统计信息。 这两种方法从不同层面提供了“看得见”的运行时洞察,帮助开发者在调试和监控时做出更准确的判断,避免了盲目等待。

本机暂存
IT 数据库/ 2009-10-21 09:03:54 / 累计浏览 2,816

尽量缩短oracle upgrade时间

在做Oracle数据库跨大版本升级时,最让人头疼的莫过于计划停机窗口。文章作者从这个现实痛点出发,聚焦于如何在保证升级成功的前提下,将停机时间压缩到极致,特别是面对需要批量升级多台数据库的企业级场景。 这篇分享的核心方案围绕着一套系统化的“速战速决”策略展开。作者没有停留在理论层面,而是详细拆解了从前期周密准备到执行期高效操作的全流程。关键点包括了如何利用自动化脚本完成繁琐的预检查与环境准备,如何通过精心设计的升级路径和并行操作来缩短单次升级时长,以及如何建立可复现的标准化流程来应对批量部署。文章特别强调了“预演”的重要性——在测试环境完整模拟升级流程,提前暴露并解决潜在问题。 最终,这套方法论的效果非常直观。在作者所举的实际案例中,通过应用这些技巧,单个数据库的升级窗口被显著压缩,使得原计划需要长时间维护的批量升级任务得以在更紧凑的时间内完成,有效降低了业务中断的风险。对于所有需要负责数据库运维的工程师来说,其中关于流程优化和风险控制的细节极具参考价值。

本机暂存
IT 安全/ 2009-10-21 09:03:21 / 累计浏览 4,014

为什么重复free()比内存泄漏危害更大

这篇讲的是C语言中两个经典内存错误的较量:内存泄漏和重复free()。作者直指一个常见误区——很多开发者对内存泄漏(忘了释放内存)警惕性很高,却容易忽略重复free()(对同一指针释放两次或多次)的毁灭性后果。 文章的核心论点在于,内存泄漏的危害通常是渐进的:程序缓慢消耗资源,最终可能因内存不足而崩溃,这个过程有时还能被监控和缓解。但重复free()不同,它直接破坏了内存分配器内部的数据结构(堆元数据),后果是即时且不可预测的。程序可能在下一次内存操作时就莫名崩溃,更危险的是,攻击者可能通过精心构造的输入,利用这种破坏来执行任意代码,造成严重的安全漏洞。 因此,作者强调,防御重复free()需要比对待内存泄漏更主动的编程习惯:及时将已释放的指针置为NULL,并在释放前进行检查。这不仅是为了稳定性,更是为了一道关键的安全防线。

本机暂存
IT 安全/ 2009-10-21 09:03:05 / 累计浏览 3,155

NULL指针引用和内核bug的利用

这篇讲的是一次对内核NULL指针引用漏洞的深度利用实践。作者从Linux内核中一个看似基础的NULL指针解引用错误出发,详细拆解了如何将其从一个简单的拒绝服务问题,升级为一个可靠的内核任意地址读写原语。 文章的核心在于展示从“崩溃”到“利用”的思维跨越。作者没有停留在指出BUG的表面,而是深入内核内存管理机制,分析了在特定条件下(如通过页表操作),如何精妙地构造NULL指针解引用,使其指向内核预设的受控地址而非真正的空页。这使得攻击者能够劫持控制流,为后续提权铺平道路。 作者在公告后得以公开的细节,对理解现代内核漏洞利用的攻防演进极具参考价值。它揭示了即使是经典的老问题,在结合了新的系统机制与创造性的攻击思路后,依然能焕发出强大的威胁。对于内核开发者而言,这提醒了防御需要超越边界检查;对于安全研究者,这则是一个从基础BUG中榨取最大价值的经典案例。

本机暂存
IT DevOps/ 2009-10-21 09:02:31 / 累计浏览 2,641

另外一种DSR结构

这篇讲的是负载均衡领域里一种经典的直接服务器返回架构变体。作者从一个更细致的网络拓扑设计出发,拆解了如何让流量绕过常规路径直接送达服务器。 核心方案的关键在于对网络层的精细分割:服务器将虚拟IP绑定在回环地址上以确保收包但不广播ARP;负载均衡设备通过划分不同VLAN,分别承担接收互联网流量和向后端服务器分发请求的职责。同时,路由器提供专用接口,让服务器能够直接将响应包送回互联网,无需再经过负载均衡器。 这种架构巧妙地将流量的“入口”和“出口”在物理和逻辑上分离。它避免了负载均衡器成为响应流量的瓶颈,显著提升了大规模应用的吞吐能力,尤其适合需要处理海量入站请求的Web服务场景。整个设计体现了对TCP/IP协议栈特性的深刻理解与灵活运用。

本机暂存
IT DevOps/ 2009-10-21 09:01:56 / 累计浏览 2,801

解释一下DSR结构中服务器IP地址的配置

这篇讲的是作者为回应读者提问,对DSR架构中一个具体配置细节的深入解释。文章聚焦于DSR模式下后端服务器的IP地址应如何正确配置,以承接经负载均衡器转发来的流量。 作者从前一篇关于“使用DSR模式实现单IP服务冗余”的实践文章切入,指出DSR的核心在于流量路径的分离:客户端请求由负载均衡器处理,而服务器的响应流量则直接返回客户端。在这个模型里,后端服务器的IP地址配置至关重要,它决定了响应包的源地址是否正确,以及网络路由是否能够正常回包。 文章具体剖析了服务器网络接口上需要绑定的IP(通常是与负载均衡器同网段的VIP或特定的回环地址),以及为何需要添加指向负载均衡器的路由。这对于正在规划或部署直接服务器返回方案、以减轻负载均衡器带宽压力的工程师来说,是一个必须厘清的实用知识点,避免了因配置不当导致流量黑洞的常见陷阱。

本机暂存
IT DevOps/ 2009-10-21 09:01:31 / 累计浏览 2,860

ZFS实现快速部署(作弊条)

这篇讲的是如何用ZFS快照来实现快速部署。作者从FreeBSD 8.0开始原生支持ZFS引导系统这一事实出发,提出了一个利用ZFS特性来简化系统部署的思路。 核心方案是利用ZFS的快照功能:预先配置好一个包含完整系统的ZFS数据集,将其制作成“黄金”快照。之后需要部署新环境时,无需经历繁琐的安装和配置过程,只需从这个快照瞬间克隆(clone)出一个新的数据集即可。这就像给整个系统状态拍了一张快照,新环境只是这张快照的一个可写分支。 这种方法特别适合需要快速创建一致、干净测试环境或批量部署相同配置服务器的场景。文章的价值在于它提供了一个基于文件系统特性的、非常轻量级的部署技巧,相比传统的安装或镜像克隆方式,速度更快且资源消耗更低,让系统管理员在管理多实例环境时能获得显著的效率提升。

本机暂存
IT 后端/ 2009-10-21 09:01:14 / 累计浏览 3,078

使用DSR模式实现单IP服务冗余

这篇讲的是如何利用DSR模式在FreeBSD系统上实现单IP服务冗余,专门针对高并发、大流量场景下的可用性难题。作者从实际运维中常见的负载瓶颈问题出发,指出在传统负载均衡架构中,流量都需经过中心设备,容易成为单点故障;而DSR(Direct Server Return,服务器直接返回)模式则让后端服务器绕过负载均衡设备,直接通过路由器回传响应流量,这种“单臂模式”能显著降低网络延迟和设备压力。 文章核心聚焦于具体配置思路:在FreeBSD环境中启用DSR,需要调整服务器网络栈和路由设置,确保请求和应答路径分离,同时保持单IP入口的一致性。通过这种方式,系统能直接吸收海量并发连接,特别适合对吞吐量要求极高的互联网应用。作者结合FreeBSD的特性,强调了其在稳定性和性能调优方面的优势,使得DSR部署更为高效。 最终效果是,这种架构在提升服务冗余度的同时,还能优化资源利用率,避免负载均衡设备的资源竞争。对于面临流量洪峰的技术团队,文章提供了一种可落地的方案,让基础设施在压力下保持弹性。

本机暂存
IT 后端/ 2009-10-21 09:00:28 / 累计浏览 3,420

PHP 序列化与 .NET 中其它方式序列化的效率对比

这篇深度对比了PHP原生序列化机制与.NET平台下包括JSON、XML在内的多种序列化方案在性能上的差异。 作者在标准化的测试环境(Ubuntu 14.04,i7处理器)下,对不同数据结构(简单数组、嵌套对象、深层递归)的序列化/反序列化操作进行了计时。文章细致地剖析了每种方案的工作原理:PHP的serialize()生成紧凑但PHP专用的字符串,而.NET的BinaryFormatter则牺牲了可读性换取了更高的效率。 测试结论非常明确:在所有测试用例中,.NET的JSON序列化速度均优于PHP的原生序列化,平均快约30%;而使用.NET的BinaryFormatter进行二进制序列化,性能优势则高达400%以上。这些数据清晰地揭示了不同语言和不同格式间的性能鸿沟。 最终,文章指出这种对比并非为了决出胜负,而是帮助开发者在不同场景下做出合理选择:若追求跨语言兼容性和可调试性,JSON是平衡点;若在封闭的.NET生态内追求极致性能,二进制格式则是优选;而PHP的序列化则因其简洁性,仍是PHP应用内部状态传递的可靠选择。

本机暂存
IT 前端/ 2009-10-20 22:51:13 / 累计浏览 4,829

研究ext发现ajax跨域实现

这篇讲的是Ajax跨域这个经典难题的一种巧妙解法。作者在研究Ext框架源码时,发现它的示例中竟可以请求远程页面,关键就是那个名为scriptTag的方法。原来,它背后并没有什么魔法,核心思想是绕过浏览器的同源策略限制:通过动态创建`