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

最新文章

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

IT 数据库/ 2013-01-18 14:04:46 / 累计浏览 3,694

数据开发技术概述

这篇讲的是面向海量数据计算入门者的数据开发技术全景。作者冷川从淘宝数据平台及开发技术的演进过程出发,系统梳理了当前主流的数据开发技术栈。 文章的核心在于为我们呈现了一幅清晰的“目前主要的数据开发技术框架图”。它不仅仅罗列技术点,而是结合平台实际场景,讲解了这些技术如何被组织和应用。这对于想建立系统性认知、而非零散了解的同学非常有帮助。 在当前超海量数据的背景下,文章最后抛出了一个关键思路:数据同学不应被动使用技术,而要主动结合系统痛点去思考和推动技术应用。这从单纯的“技术介绍”提升到了“工程思维”的层面,给读者留下了具体的行动方向。

本机暂存
IT 前端/ 2013-01-18 14:04:04 / 累计浏览 5,606

了解前端内存泄露

这篇讲的是前端开发中那个“幽灵”般的问题——内存泄露。分享者从最经典的“循环引用”场景切入,深入剖析了在IE老版本浏览器下,两个对象相互引用时,垃圾回收机制为何会“视而不见”,导致内存无法被释放。 但文章不止步于理论。它进一步结合了一淘数据部的真实业务项目,具体展示了内存泄露在复杂的前端应用中是如何“潜伏”和“发作”的,比如未清理的定时器、全局变量的不当引用等。这些来自一线的经验解析,让原理立刻有了落地的感觉。 如果你在开发中遇到过页面越用越卡,或者需要排查性能瓶颈,这篇分享提供了从识别典型陷阱到排查实战问题的清晰路径。配套的PDF资料也已准备好,方便你随时回顾技术细节。

本机暂存
IT 算法/ 2013-01-18 14:01:21 / 累计浏览 1,880

随谈社交关系

作者从两个最根本的维度——用户连接与互动频率出发,剖析了“强关系”与“弱关系”社交网络的本质区别。文章指出,以QQ空间为代表的强关系,核心在于维系现有圈子,因此圈子小、互动深,内容也更随性甚至唠叨。这类产品的设计重点在于降低维系成本,情感表达是主旋律。对于创业公司而言,直接挑战强关系壁垒极高。 而弱关系网络(如微博、唱吧)则鼓励展示与提升。因为连接更自由、互动更松散,用户倾向于通过产出优质内容来吸引关注、建立影响力。文章进一步揭示了一个关键转化路径:通过共同兴趣建立共同话题,是弱关系升级为强关系的核心。同时,用户最终会将强关系迁移至使用频率更高的平台,这对产品的留存设计至关重要。 在落地上,文章给出了弱关系社区的构建思路:初期应垂直切入细分市场,以避开巨头并快速聚集同好;通过运营引导、多层次的榜单激励(如新星榜、地区榜)来降低参与门槛、鼓励优质内容生产,并让每个用户都有被看见的可能,从而形成良性循环。这份洞察对于理解社交产品逻辑,以及如何搭建社区生态,都有不错的启发。

本机暂存
IT DevOps/ 2013-01-18 13:57:16 / 累计浏览 8,666

Linux常用系统信息查看命令

这篇文章整理了Linux运维和开发中常用的系统信息查看命令,相当于一份精炼的“系统侦察”手册。 它从“系统”、“资源”、“磁盘和分区”、“网络”、“进程”、“用户”、“服务”和“程序”这八个维度,系统地罗列了对应的命令行工具。比如,想知道系统基本情况,可以运行 `uname -a` 查看内核版本,用 `free -m` 瞬间看清内存使用;排查网络问题时,`ifconfig`、`netstat` 和 `iptables` 就是标准三件套;而 `ps -ef` 和 `top` 则是进程监控的常用起点。 文章最大的特点是实用和直接。它没有展开讲解每个命令的复杂参数,而是聚焦于“用哪个命令看什么”这个核心场景,让读者能快速对照自己的需求找到对应的入口。无论是新手想快速了解服务器状态,还是老手需要备忘某些不常用的命令(比如 `hdparm` 查看磁盘参数,或 `dmesg | grep IDE` 查看启动日志),这份清单都提供了清晰的指引。 这份清单像一张系统的“体检项目单”,把散落在各处的查看命令按用途归类,方便你随时取用,对日常的服务器管理和问题排查很有帮助。

本机暂存
IT 前端/ 2013-01-18 13:56:28 / 累计浏览 4,706

DOM中nodeName、nodeValue 及 nodeType的说明

这篇技术博客从DOM操作的基础概念切入,系统梳理了nodeName、nodeValue和nodeType三个核心属性的区别与用途。作者归纳了不同节点类型下这些属性的具体表现:比如nodeName在元素节点中是标签名(注意浏览器兼容性可能大小写不一),文本节点则固定为“#text”;nodeValue主要对文本和属性节点有意义,能获取其内容或值,但对文档和元素节点无效;nodeType则用数字直观标识节点类型,其中元素节点为1,文本节点为3,文档节点为9。 文章特别提醒了实际编码中需注意的细节,例如建议对元素节点的nodeName统一使用toUpperCase()转换,以规避不同浏览器返回值大小写不一致的问题。通过表格形式清晰列出了最常用的节点类型及其对应的nodeType数值,方便快速查阅。整体而言,这篇文章将零散的知识点进行了归纳对比,有助于开发者在操作DOM时更准确地定位和处理不同类型的节点。

本机暂存
IT 后端/ 2013-01-18 13:53:13 / 累计浏览 6,630

你应该更新的Java知识之构建工具

这篇文章直指现代Java开发中一个常被忽视但至关重要的环节:构建工具的演进与选择。作者从早期的Ant和Maven谈起,精准地指出了它们的痛点——Ant过于手工化,而Maven在扩展性和灵活性上存在“致命伤”,以至于项目复杂后常需回归脚本编写。 随后,文章引出了新一代构建工具Gradle和Buildr。与Maven的XML不同,它们允许使用Groovy或Ruby这类更优雅的程序设计语言来编写构建脚本,极大地提升了灵活性和表现力。其中,Gradle被着重介绍:它拥有详尽的文档、商业公司的支持,并在尚未发布1.0版本时就已获得Spring大奖及Spring官方项目转投,证明了其强大的实力和社区认可度。 文章通过一个简洁的build.gradle脚本示例,直观展示了使用Gradle进行Java项目构建的清晰与便捷。作者的观点很明确:对于今天的Java项目,Gradle因其易用性、强大的扩展能力和活跃的生态,已成为更值得拥抱的现代构建方案。

本机暂存
IT DevOps/ 2013-01-18 13:45:47 / 累计浏览 3,862

深度剖析告诉你irqbalance有用吗?

这篇深度技术剖析探讨了irqbalance这个中断平衡守护进程的实际价值。文章从“是否有必要开启它”这一实际运维问题切入,通过解读源码揭示了irqbalance的工作机制:它每10秒循环收集/proc/interrupts的中断分布数据,并根据设备类型(如网卡、存储设备)与CPU拓扑结构,动态计算并调整中断的CPU亲缘性。 作者指出,在特定高性能场景下(如应用已绑定CPU核),irqbalance的自动调整可能并非最优甚至不必要,因此需要理解其原理来做出正确取舍。文章深入解析了irqbalance如何利用SMP Affinity接口、区分中断类型在Package、Cache或Core级别进行平衡,将原本黑盒的守护进程逻辑清晰展现出来。对于需要精细调优系统中断分布的工程师而言,这些底层细节是做出判断的关键依据。

本机暂存
IT 算法/ 2013-01-17 13:30:41 / 累计浏览 3,068

Hofstadter的非线性递推数列

这篇讲的是Hofstadter G序列——一个由G(n) = n - G(G(n - 1))定义的非线性递推数列。作者从它在《GEB》中的登场出发,揭示了它与斐波那契数列的多重巧妙联系。 序列G生成的树形结构,其每一层节点数恰好构成斐波那契数列。这棵树本身还对应着经典的“兔子繁殖”族谱图。更神奇的是,序列G的值可以通过正整数的Zeckendorf表示(用不重复、不相邻的斐波那契数之和表示)来等价定义:只需将表示式中的每个斐波那契数替换成它前一个数再相加即可。研究还表明,G(n)以黄金比例(√5-1)/2的平均速度线性增长。 文章并未止步于此,而是探索了嵌套更深一层的变体H序列:H(n) = n - H(H(H(n - 1)))。它生成的“奶牛树”同样具有自相似性,并对应着满足不同成熟周期的种群增长模型。H序列遵循类似的规律,但其增长率变为方程x³ + x = 1的正实根,约为0.682。 作者借此展示,简单的递推定义背后,隐藏着从斐波那契数列、黄金比例到整数独特分解的一整套自洽而优美的数学结构。改变递推嵌套的层数,便能系统性地引出一族性质相通但参数平移的序列。

本机暂存
IT 设计/ 2013-01-17 13:27:45 / 累计浏览 4,444

如何做一个干货且装逼的产品经理演讲?

这篇讲的是产品经理演讲中那些看似高大上、实则空洞的“装逼”句式,并犀利地指出其背后可能脱离用户本质的问题。 作者从常见的“装逼”道具(如最新款MacBook、复杂Keynote动效)切入,随即聚焦到五个经典的演讲句式,比如“我自己就非常喜欢,所以我很懂”、“我们更专业”、“追求极致用户体验”、“小团队更敏捷”以及“暂时不考虑盈利只求做大”。 文章并未停留在单纯吐槽,而是为每个句式都配上了“灵魂拷问”。例如,指出“我自己喜欢”不等于用户喜欢,“更专业”需要实质支撑,“极致体验”可能掩盖了基本需求未被满足的问题。它揭示了这些表达如何通过塑造“专业”、“用户至上”或“创新”的形象来提升格调,却可能忽略了真实的产品思考与商业逻辑。 其核心观点在于,产品经理应当警惕这些自我感动式的表达,真正将焦点放回解决实际问题和理解用户需求上。这对于从业者而言,是一次很好的反思提醒,帮助回归务实的产品沟通。

本机暂存
IT 开发者/ 2013-01-17 13:23:56 / 累计浏览 2,931

C语言打开文件的模式

这篇讲的是作者在处理BMP图像文件时遇到的一个经典坑。他在编写一个读取并保存BMP文件的程序时,发现输出的文件总比原文件大3个字节,而且图像内容完全错乱。问题出在哪里呢? 经过排查,根源在于打开文件时使用了`fopen(filename,"r+")`这种默认的文本模式。在文本模式下,C语言的文件读写会进行换行符(`\n`)与“回车+换行”(`\r\n`)的自动转换。而BMP文件作为二进制文件,其数据流中恰好包含十六进制值`0a`(等于换行符的ASCII码),这个值在颜色表中出现了三次。结果,每次读取时程序都把`0a`误当作换行符并扩展成两个字节,导致数据读取溢出;写回时又将两字节序列压缩为一字节,最终使得文件大小永久性地多出了3个字节,破坏了图片结构。 解决方法非常直接:将文件打开模式改为二进制模式`"wb"`。这个小bug提醒我们,只要操作的不是纯文本文件,就必须明确使用二进制模式(如`"rb"`、`"wb"`),以避免底层编码转换带来的隐秘错误。

本机暂存
IT DevOps/ 2013-01-17 13:22:46 / 累计浏览 4,579

限制单个进程的带宽

这篇文章讲的是如何在Linux系统中限制单个进程的网络带宽,而非传统的端口或全局限速。作者从系统管理员常见的需求出发,对比了几种方案的可行性。 传统的iptables配合owner模块的方法,在现代支持SMP的内核中已因匹配项被移除而基本失效。文章接着推荐了一个名为trickle的工具,它通过ELF preloader机制替换socket库函数来实现限速,用法简单。但作者也明确指出其局限:对静态编译或suid权限的程序无效。 为了解决更复杂的场景——例如对已运行进程动态调整带宽——文章最终引入了cgroup的net_cls控制器。它通过给数据包打标记,再交由tc流量控制工具处理,实现了类似iptables但更灵活、更现代的管理方式。这篇文章为不同环境下的进程带宽限制需求,提供了从传统工具到内核级方案的清晰对比和选型思路。

本机暂存
IT 数据库/ 2013-01-17 13:20:50 / 累计浏览 2,868

aix使用太多内存导致shared pool 相关latch异常

这篇讲的是AIX系统因内存耗尽引发Oracle数据库性能问题的真实案例。某客户服务器上出现shared pool相关latch的异常等待,系统响应变慢。作者通过nmon和topas工具抓取现场数据,发现物理内存使用率高达99.8%,空闲内存仅剩51MB,同时Paging Space使用了近35%,表明系统正在大量依赖交换空间,这正是导致数据库共享池锁竞争加剧的直接原因。 进一步查看vmo内核参数配置,其值遵循了Oracle官方建议,但根本问题在于物理内存总量(21.5GB)已无法承载数据库SGA、PGA及操作系统进程的消耗。文章分析了特定Oracle进程的内存映射,显示单个进程的SGA占用就非常高。最终指出的解决路径非常清晰:要么为服务器扩容内存,要么在业务允许的前提下,主动调小数据库SGA等内存相关参数,从源头降低内存压力。整个排查过程结合了监控命令与参数分析,是AIX+Oracle环境下一个典型的内存型性能故障样本。

本机暂存
IT 前端/ 2013-01-17 13:18:52 / 累计浏览 9,360

404~遇见你是最美丽的错误

这篇讲的是一个看似微小却影响深远的用户体验细节——404错误页面。文章认为,用户碰到“页面不存在”本身已是遗憾,如何设计这个瞬间的交互,直接体现了产品的温度与专业度。 作者从“没有人喜欢犯错误”这一朴素感受出发,列举了两种截然不同的风格:腾讯利用404页面进行公益信息传递,走的是温情路线;而《南方公园》主题的页面则采用恶搞风格,将错误转化为趣味。两者都巧妙地将“美丽的错误”这一概念落地。 文章并未停留在展示案例,而是进一步探讨了背后的设计哲学。它提到了“POKA-YOKE”(防错)理念,强调通过设计尽可能避免用户无心犯错。更关键的是,它引向了“容错性设计”——即承认错误无法完全避免,但系统可以通过友好的提示和引导来包容并纠正错误。最后,文章还延伸列举了网页视觉设计和初创团队在用户体验上常犯的十个错误,从一个404页面,拓展到了更广泛的设计反思。 最终,这篇文章传递的核心观点是:好的设计不是杜绝所有错误,而是在错误不可避免时,用创意与关怀将其转化为一次积极甚至难忘的体验。这或许就是所谓的“甜蜜的意外”。

本机暂存
IT DevOps/ 2013-01-17 13:17:46 / 累计浏览 4,088

Linux 找出大文件汇总

这篇讲的是 Linux 系统管理中一个非常实用的技巧:如何快速定位那些占用大量磁盘空间的“罪魁祸首”文件。作者没有停留在单一的命令上,而是横向对比了多种主流工具和方法,堪称一份“找出大文件”的工具箱。 核心部分详细对比了 `find` 命令在 RedHat 系和 Debian 系中的细微差异,比如 `awk` 提取的字段编号不同,这种细节对新手很友好。除了 `find`,文章还扩展介绍了使用 `ls -lS` 按大小排序、用 `du` 配合 `sort` 和一个精巧的 Perl 脚本来可视化目录占用情况(用星号条形图直观显示)。 特别值得注意的是,文章不仅教你怎么“找大”,也提到了如何“找小”,并且提供了不跨文件系统查找(`-xdev`)等实用选项。整体来看,这是一篇非常扎实的速查手册,能帮你在磁盘空间告急时,快速掌握从基础到进阶的多种排查手段。

本机暂存
IT 算法/ 2013-01-16 14:22:57 / 累计浏览 4,303

photoshop图像点运算算法揭秘

作者在做图像处理实验时遇到一个奇怪现象:用Photoshop对一张8bit BMP图片调整亮度和对比度后,其直方图竟然没有变化。通过对比十六进制数据,他发现PS并未修改像素值,甚至图片大小只增加了两个字节的尾部填充。进一步检查调色板数据才揭示关键——Photoshop处理这类全局点运算时,实际操作对象是仅包含256项的颜色表,而非每个像素。这种“只改调色板”的做法大幅提升了处理效率,但对传统直方图读取程序则构成了隐蔽陷阱。 文章通过这个意外发现,细致拆解了PS的高效处理逻辑,并指出对于8bit图像,正确的读写函数必须重新适应调色板变化。对于24bit或32bit真彩色图像,这种方法并不适用。作者从一次实验异常出发,最终提炼出对算法优化的实际启发:一个巧妙的处理对象转换,往往能带来性能上的显著提升。

本机暂存
IT 后端/ 2013-01-16 14:18:55 / 累计浏览 2,926

豆瓣社区产品简析

这篇讲的是豆瓣如何构建一个以兴趣为纽带的社区。作者将豆瓣的整个生态抽象成一个框架来分析,核心是“成员”、“兴趣”和“圈子”这三个元素的互动。 文章指出,豆瓣的定位是根据用户口味推荐“东西”(包括书影音、小组乃至用户自身),其基础设计是“去中心化”和尊重个体。在这个框架里,成员是绝对中心,拥有强个性;兴趣则是成员与“东西”之间产生的、带有强烈个人色彩的关联,这是连接成员与公共空间的第一条、也是最关键的纽带。它奠定了豆瓣文艺、纯粹的基因。 进一步地,圈子(如小组)则构成了第二条纽带,它通过强共性和成员间的直接互动,将个体关系沉淀和强化。作者通过剖析兴趣的“强个性、强依赖”与圈子的“强依赖、强共性”的本质区别,揭示了豆瓣社区产品背后的核心产品哲学:一切产品都服务于这两条纽带构建的社区关系。这种分析提供了一个清晰的视角,来理解这个看似复杂的产品矩阵。

本机暂存
IT DevOps/ 2013-01-16 14:18:14 / 累计浏览 3,620

Travis CI:专为开源项目打造的持续集成环境

这篇讲的是如何为GitHub上的开源项目接入Travis CI持续集成环境。作者以Java项目Moco为例,详细演示了从创建配置文件到最终在README中添加状态标识的全流程。 核心步骤非常清晰:首先在项目根目录添加`.travis.yml`文件,指定语言(如java)和需要测试的JDK版本(如Oracle JDK 7和OpenJDK 6/7)。Travis CI会自动识别如Gradle这样的构建工具,并执行标准的检查任务。接着,用GitHub账号登录Travis CI并同步项目,开启对应项目的构建钩子。这样,每次提交代码到GitHub,Travis CI就会自动在多个JDK环境下运行测试,确保兼容性。 文章还指出了一个实用技巧:可以在项目的README文件中嵌入Travis CI的构建状态徽章,让其他开发者一目了然地看到项目的构建状态。对于使用标准工具链的项目来说,整个配置过程确实“简单得一塌糊涂”,是开源项目实现自动化测试与集成的一个高效选择。

本机暂存
IT 前端/ 2013-01-16 14:13:29 / 累计浏览 2,553

Chrome浏览器内部协议Chrome://收集

这篇文章汇总了Chrome浏览器中一系列以“chrome://”开头的内部协议地址,带你探索这个日常工具的“隐藏控制台”。作者从实用角度出发,逐一介绍了书签管理、历史记录、下载管理等基础功能入口,也深入到了网络调试、GPU状态、内存占用监控等专业诊断工具。 特别值得注意的是,文中指出了如chrome://flags这类可能影响浏览器稳定性的实验性选项,并明确建议非必要不要随意改动。同时,对于普通用户可能接触较少的媒体内部数据、应用缓存管理(如AppCache)以及二进制对象(BLOB)存储等概念,文章也给出了简要说明和背景链接。 这些地址构成了一个强大的浏览器自检与调试面板,无论是想快速清理缓存、排查网络故障,还是仅想了解自己的浏览器正在做什么,都能在这里找到入口。文末还附上了查看浏览器及插件版本信息的常用地址chrome://version,是一个非常实用的工具合集。

本机暂存
IT DevOps/ 2013-01-16 14:10:46 / 累计浏览 9,468

linux下搜索find命令详解

这篇文章来自一次内部技术培训,作者觉得分享的内容不够全面,于是系统地整理了 Linux 下 `find` 命令的各种常用选项和示例。 它开篇点明 `find` 是一个强大但速度较慢的搜索工具,随后围绕其基本语法 `find [路径] <表达式> [操作]`,详细拆解了十多个核心选项。文章不仅列举了按文件名(`-name`)、按时间(`-atime`, `-mmin`)、按用户(`-user`)和按大小(`-size`)进行查找的常规操作,还介绍了一些实用的进阶技巧。例如,使用 `-exec` 可以直接对查找结果执行命令,像批量删除 `.svn` 目录;利用 `-perm` 和 `-regex` 则能满足更精细的权限或模式匹配需求。文末附带的逻辑组合(`-o`, `-a`, `!`)和目录深度控制(`-maxdepth`)示例,让复杂条件的查询成为可能。 整体来看,这更像一份为团队定制的 `find` 命令速查手册,将零散的知识点梳理成了清晰的条目,每个选项都配以实际可运行的命令。对于日常需要在 Linux 文件系统中定位文件的开发者和运维人员来说,这份清单覆盖了绝大多数使用场景,省去了反复查阅手册的麻烦。

本机暂存
IT 数据库/ 2013-01-16 14:09:55 / 累计浏览 3,332

LevelDB 的原理和动机

这篇讲的是LevelDB作为高性能键值存储系统的设计原理和动机。作者从持久化数据到硬盘的基本需求出发,解释了如何在实际场景中平衡写入速度和读取效率。 为了快速写入,LevelDB采用追加方式顺序写入日志文件(Log文件),这避免了随机写入的开销,但导致了数据无序。接着,为了从硬盘中高效读取数据,文章指出必须基于查找算法和局部性原理,将数据排序组织到SST文件(Sorted String Tables)中。 文章进一步探讨了为什么使用多个SST文件而不是单个。为了高效插入数据,每个SST文件只保存一定范围的数据,类似于堆的结构。更深入地,LevelDB引入层次(Levels)结构,将SST文件按层次组织,层次越深文件越多但合并频率越低,从而优化了数据合并过程,减少了每次合并影响的文件个数。 面对查找不存在数据时的性能瓶颈,文章强调了结合布隆过滤器(Bloom Filter)的重要性,利用其快速判定“不存在”的特性,避免了在每一层进行无效查找。通过这些层层递进的设计,LevelDB巧妙地解决了存储系统中写入、读取和查询的关键挑战,为读者提供了关于高效数据结构设计的实用思路。

本机暂存