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

最新文章

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

IT 后端/ 2016-03-06 23:03:32 / 累计浏览 7,731

Java技术路线

这篇讲的是Java开发者从初阶到架构师的成长路线。 作者从一个常见痛点出发:很多开发者感觉需要提升,却不知道从哪里着手,也不清楚自己当前处于什么水平。为了解决这个问题,文章绘制了一张详细的Java技术路线图,并将进阶路径清晰地划分为五个阶段。 路线图从扎实的Java基础开始,涵盖了反射、多线程、IO等核心编程,再到JSP、Servlet这些Web开发基石。接着进入框架时代,梳理了经典的SSH(Struts+Spring+Hibernate)和SSI技术栈。随着经验增长,文章引导开发者走向高级领域,包括分布式开发、开源框架整合,直至最终的系统架构师角色,涉及SOA/云架构、设计模式与UML建模等宏观技能。 这份指南最大的特点是具体和结构化。它没有泛泛而谈,而是针对每个阶段都列出了必须掌握的关键技术点,比如从JDK命令、Linux部署,到事务管理、负载均衡,再到抽象工厂、观察者模式等。对于想系统规划技术栈、明确学习重点的开发者来说,这份指南提供了一个很清晰的参照框架。

本机暂存
IT 数据库/ 2016-03-03 14:22:31 / 累计浏览 2,017

MySQL Binlog Server

这篇讲的是如何用原生工具为MySQL构建一个实时、安全的binlog备份服务器。 文章从数据安全备份的重要性切入,指出在MySQL 5.6之后,DBA们终于有了官方支持的便捷方案,无需再自行编写程序来拉取日志。核心方案是利用`mysqlbinlog`命令的几个关键参数:`-R`允许从远程服务器读取,`-raw`保持binlog原格式便于后续使用,而`-stop-never`则确保服务器会持续连接并同步,直到远端关闭。 作者用具体的命令示例,演示了如何从指定日志文件开始,搭建一个持续运行的binlog server,并且特别说明了如何通过`--stop-never-slave-server-id`参数,为多个服务器实例分配不同的ID以避免冲突。文章末尾抛出了一个实践中的重要问题:这样的binlog server,究竟该如何安全关闭?

本机暂存
IT DevOps/ 2016-03-03 14:19:27 / 累计浏览 3,847

IaaS、PaaS、SaaS 之间的区别

这篇讲的是云计算里三个最核心的层级模型:IaaS、PaaS和SaaS到底有什么不同。作者从“云”这个概念入手,先说明云计算本质上是分层的:最底层的IaaS(基础设施即服务)直接提供了虚拟化的服务器、存储和网络硬件,企业可以像租水电一样租用这些资源,省去了自建机房的麻烦,适合需要灵活控制底层环境的技术团队。 往上一层是PaaS(平台即服务),它提供了完整的开发和部署环境。开发者不用再操心操作系统、数据库这些基础软件的安装维护,可以专注于应用本身的编写与协作,像Heroku、Google App Engine都是这类服务的代表。 而最上层的SaaS(软件即服务)则与我们日常使用最贴近,所有功能都通过浏览器交付,比如我们常用的Google Docs、Dropbox或是Salesforce的CRM系统,用户开箱即用,无需关心底层任何技术细节。 文章最后也指出,随着技术演进,像容器技术催生的CaaS等新模式不断出现,这些名词的界限其实在商业化的概念普及中变得模糊了。真正的理解,还是在于它们各自解决了用户哪一层的问题。

本机暂存
IT 算法/ 2016-03-03 14:16:06 / 累计浏览 4,363

Cuckoo Filter:设计与实现

这篇讲的是如何设计和实现一种名为 Cuckoo Filter 的高效过滤器。作者从实际业务中海量数据快速查询的需求出发,指出经典的 Bloom Filter 虽然空间利用率高,但存在无法删除元素的硬伤,一旦删除就会导致漏报。 为了解决这个问题,文章引入了布谷鸟哈希(Cuckoo Hashing)的设计思想。每个元素有两个哈希位置,发生冲突时,新元素会“踢走”原有元素,并利用其备用位置重新安置,就像布谷鸟侵占别的鸟巢一样。通过使用包含多个槽位的桶结构,可以大幅缓冲碰撞几率,实现高达 80% 以上的空间占用率(论文数据超过 90%),同时支持可靠的插入、查询和删除操作。 作者随后展示了自己用不到 500 行 C 代码实现的完整案例。核心思路是在内存中维护一个轻量级的哈希表,仅存储元素的部分摘要(tag)来快速过滤,将完整数据存放在后端存储(如 Flash)。这样查询时能最大程度避免不必要的磁盘读取。代码清晰地定义了哈希表、槽位结构,并实现了查询、插入等关键操作,验证了该方案在正确性和效率上的可行性。

本机暂存
IT 移动开发/ 2016-03-03 14:14:06 / 累计浏览 2,743

Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析

这篇讲的是Android APK签名中三个关键文件:MANIFEST.MF、CERT.SF和CERT.RSA的内部结构和作用。作者从一个已签名的APK入手,逐步解剖了这三个文件如何构成一个层层校验的“信任链”。 核心机制是“三明治”式的校验:MANIFEST.MF首先记录了APK内所有文件的SHA-1哈希值,确保每个资源文件的完整性;接着,CERT.SF文件不仅保存了MANIFEST.MF本身的哈希值,还对MANIFEST.MF中的每一项描述再次进行SHA-1计算并存储,这相当于对“清单的清单”进行了二次确认。最后,CERT.RSA文件则包含了用于验证上述所有哈希值的公钥和签名者证书信息,完成了整个数字签名的闭环。 文章不仅展示了每个文件的具体内容,还通过手动计算和使用OpenSSL工具生成密钥、提取证书等方式进行了实战验证,并引用了Android源码佐证。整个分析过程清晰地揭示了Android签名机制如何通过这种“文件哈希 -> 清单哈希 -> 对清单的签名”的三重保障,来确保应用的完整性与来源可信度。

本机暂存
IT 后端/ 2016-03-03 14:12:05 / 累计浏览 5,132

开启命令行下的社交

这篇文章记录了作者将社交工具搬到命令行终端的一次有趣实践。作者近期沉浸于命令行工作环境,尝试脱离图形界面,探索如何在终端中处理即时通信需求。 核心部分介绍了开源项目 Mojo-Webqq 的安装与使用。这是一个基于 Perl 的非 GUI 框架,能作为 SmartQQ/WebQQ 的命令行客户端。文章详细列出了在 Mac 上通过 cpanm 安装的步骤,以及如何配置一个基础脚本启动 QQ 登录并搭建本地 HTTP 服务,从而通过 curl 等命令实现消息的收发,为 QQ 消息的自动化处理提供了接口基础。 此外,作者还回顾了使用命令行 IRC 客户端(如 Weechat 和 irssi)的经历。文章比较了两者在安装和中文支持上的差异,并分享了通过 `/help` 命令探索使用、配置服务器连接和频道加入的入门路径,展现了 IRC 这个经典技术交流平台在终端下的独特魅力。 整体而言,文章从个人工作流的转变出发,具体演示了如何用工具和脚本在命令行中搭建社交桥梁,为希望摆脱图形界面束缚的开发者提供了一种可能。

本机暂存
IT 前端/ 2016-03-03 13:09:02 / 累计浏览 2,330

JavaScript中的继承方式

这篇文章讲透了JavaScript中实现继承的两种经典方式:原型链继承与类式继承。作者首先厘清了JS中基于对象的核心特性——它不像Java那样拥有严格的“类”概念,而是更多依靠原型(prototype)机制。文章系统梳理了原型链继承如何通过对象间的原型链接实现属性与方法的共享,以及类式继承如何借助构造函数和apply/call方法来复用代码。 为了帮助读者建立扎实的理解,文章特别定义了一套清晰的代码约定,区分了私有属性、实例属性与原型属性(包括基本类型与引用类型),为后续的深入分析奠定了明确的基础。作者指出,理解这些基本属性的归属与区别,是掌握不同继承方式适用场景与潜在陷阱的关键。无论是想搞懂JS对象模型的底层逻辑,还是为后续学习ES6 class语法打好基础,这篇文章都提供了扎实且细致的技术剖析。

本机暂存
IT 前端/ 2016-03-02 23:54:42 / 累计浏览 3,126

前端编码规范(4)—— CSS 和 Sass (SCSS) 规范

这篇文章讲的是前端开发中CSS与Sass的编码规范,核心聚焦于如何通过编写可维护的样式代码来提升长期项目效率。作者从选择器命名、ID使用、标签选择器和选择器精确性四个关键维度出发,给出了一系列具体且可操作的建议。 比如,在命名上提倡使用能反映元素目的的语义化类名(如 `.important`)替代表象名称(如 `.red`);明确指出应尽量避免使用ID选择器进行样式定义,因为其权重过高且无法复用,会给后期维护带来“选择器战争”的隐患。同时,文章强调要摆脱对HTML标签的选择器依赖(如 `div.content`),应使用纯粹的类名,并善用直接子选择器(`>`)来精确控制样式作用范围,避免因样式过度继承而导致的意外覆盖问题。 整篇文章通过大量“不推荐”与“推荐”的代码示例对比,清晰地阐述了每条规范背后的逻辑。它并非罗列条条框框,而是为前端开发者,尤其是处理中大型项目的团队,提供了一套减少样式冲突、提升代码健壮性和协作效率的实用方法论。

本机暂存
IT 前端/ 2016-03-02 23:53:03 / 累计浏览 2,217

前端编码风格规范(3)—— JavaScript 规范

这篇讲的是前端 JavaScript 编码中几个关键的最佳实践,核心目标是避免全局命名空间污染并提升代码健壮性。 文章首先强调,总是应该使用立即执行的函数表达式(IIFE)来包裹代码。这样做的好处是能创建独立的作用域,防止变量泄露到全局,也避免了代码被其他脚本意外修改。作者对比了 IIFE 的两种括号写法,并推荐将执行括号放在外层括号内部,以使表达式看起来更像一个整体。 严格模式的启用时机也很有讲究。文章建议在 IIFE 内部激活严格模式,而不是在整个脚本的开头。这样既能获得更严格的错误检查和性能优化,又能避免因全局启用严格模式而影响到第三方库的正常运行。 在变量声明方面,文章重申了必须始终使用 `var` 关键字。省略 `var` 会意外创建全局变量,使得作用域难以控制,而严格模式能帮助捕捉因变量名拼写错误导致的问题。 总的来说,文章通过清晰的对比和示例,梳理了这些容易出错的细节,旨在引导开发者写出更隔离、更安全的 JavaScript 代码。

本机暂存
IT 前端/ 2016-03-02 23:50:26 / 累计浏览 2,133

前端编码规范(2)—— HTML 规范

这篇讲的是前端HTML编码中的几个关键规范。文章从HTML5文档类型出发,推荐使用``,并建议避免XHTML,因为后者在现代浏览器中的兼容与优化空间有限。对于无内容元素标签,开发时建议不闭合以保持可读性,但在生产环节可以通过压缩省略部分可选标签来优化文件体积。 文章强调了HTML验证的重要性,建议使用标准工具检测,除非为性能做出必要让步。一个容易被忽视的细节是:虽然规范允许省略可选标签,但在源码中显式写出能避免潜在问题,提升可维护性。 性能方面,文章重点分析了脚本加载策略。同步脚本会阻塞DOM解析,影响页面渲染。现代浏览器可使用`async`属性实现异步加载,甚至可以将脚本放在``中。对于需要兼容IE9等老旧浏览器的场景,最佳实践是将带`async`属性的脚本标签放在``之前,这样既限制了阻塞范围,又利用了现代浏览器的异步特性。 这些看似基础的规范,实则直接影响页面的可维护性、兼容性与性能。文章给出了清晰的对比与具体操作建议,对实际开发很有指导意义。

本机暂存
IT 前端/ 2016-03-02 23:47:43 / 累计浏览 3,375

前端编码规范(1)—— 一般规范

这篇讲的是前端开发中那些容易被忽视但至关重要的基础规范。作者从团队协作与代码质量的角度切入,清晰地梳理了制定一般性编码规范的核心意义。 文章聚焦于HTML、JavaScript以及CSS/SCSS这几个前端基石,阐述了一套旨在统一风格、明确对错的准则。它强调,规范的价值不仅在于代码的整洁,更在于它能让潜在的问题——无论是风格不一致还是逻辑Bug——在早期就变得显而易见。当团队成员都严格遵守这些约定时,后续的代码审核便能更精准地定位错误,而各种压缩、编译工具也能更顺畅地工作。 说到底,这篇指南提供的是一套可执行的“开发基石”,帮助团队在协作中减少无意义的摩擦,把精力更集中地投入到解决实际问题上。

本机暂存
IT DevOps/ 2016-03-02 23:44:37 / 累计浏览 2,686

nc 传送文件

这篇讲的是如何用nc(netcat)这个网络工具直接传输文件,省去了传统方法中压缩、解压或配置权限的麻烦。作者从一个非常实用的角度切入,直接给出了传送整个文件夹和单个文件的具体命令行操作。 文章核心在于展示nc配合管道和tar命令的简洁性。传送文件夹时,发送端通过tar打包压缩后管道给nc,接收端则监听端口并用tar解压还原,整个过程一步到位。对于单个文件,方法更为直接,用cat或重定向即可完成内容流式传输。这种用法尤其适合内网环境下快速交换配置文件或日志。 作者没有展开复杂原理,而是聚焦于命令的实际写法和效果。通过这两组清晰的命令示例,读者能立刻上手操作,体会到这种轻量级方案在运维和开发场景中的便利性。

本机暂存
IT 前端/ 2016-03-02 00:09:24 / 累计浏览 2,387

页面跳转时,统计数据丢失问题探讨

这篇讲的是前端埋点统计中一个让人头疼的常见问题:页面跳转或关闭时,关键统计数据(如链接点击、停留时长)还没来得及发送就丢失了。作者从这个痛点出发,梳理了工程师们惯用的几种“阻塞”浏览器关闭的黑客方案(如同步Ajax、死循环、图片请求),并指出了它们在兼容性和用户体验上的硬伤。 文章真正的亮点在于提出了一个思路转换:既然在当前页面发送如此困难,不如将数据交给下一个页面去发送?由此引出了通过URL传参或利用`window.name`特性将数据跨页传递的方案。但作者也坦言,这依赖于开发规范和系统环境的统一。 最终,文章将解决方案推向了更高层面——这本应是浏览器原生能力。它介绍了W3C提出的`Beacon API`,其异步、不影响页面卸载的特性完美解决了上述所有痛点,尤其是在移动端场景下,即使用户切换应用,数据也能可靠上报。整个探讨过程从具体问题到变通方案,再到标准解,清晰展示了技术演进的逻辑。

本机暂存
IT 安全/ 2016-03-02 00:02:05 / 累计浏览 4,191

12行代码的浏览器DoS攻击分析及防御

这篇讲的是如何用12行JavaScript代码让主流浏览器甚至移动设备陷入DoS崩溃。作者从pjax技术所依赖的`history.pushState`接口切入,剖析了其工作机制:该接口允许无刷新修改URL并记录历史状态。 攻击的核心在于一个循环:代码通过上万次调用`history.pushState`,不断向浏览器历史堆栈中堆积记录。这会导致页面地址被无意义的长字符串覆盖,CPU与内存占用率在短时间内飙升至100%,最终造成Chrome、Firefox、Safari等浏览器崩溃,甚至引发iPhone重启或Android应用闪退。作者在虚拟机环境中的实测数据,清晰展示了循环次数与系统资源耗尽之间的关联。 在剖析原理的同时,文章也给出了面向用户的直接防御建议——保持安全意识,不轻易点击来源不明的链接。更深层次地,它提醒我们,现代Web API在提升体验的同时,也可能被滥用为攻击向量。开发者在使用这类接口时,需要考虑其潜在风险与边界情况。

本机暂存
IT 前端/ 2016-03-01 23:59:53 / 累计浏览 1,423

如何在Angular中使用动画

这篇讲的是如何在AngularJS中为常见指令添加交互动画效果。作者开宗明义,指出Angular本身并不内置动画,需要通过引入ngAnimate模块来赋予动画能力,并且它的高度可定制性是其特点。 文章的核心是梳理了ngAnimate支持动画的具体指令列表,包括ngRepeat的进入、离开和移动动画,ngView、ngInclude、ngIf等的进入与离开动画,以及ngClass、ngShow/ngHide等的添加与移除类动画。这些细节清晰地展示了AngularJS动画机制的作用范围。 最后,文章以列表渲染指令ngRepeat为例,具体演示了如何配置和使用这些动画,帮助开发者理解动画元素进入DOM结构的过程。对于需要在旧项目中提升交互体验的开发者来说,这份针对ngAnimate模块的使用指南提供了直接的参考。

本机暂存
IT 前端/ 2016-03-01 23:53:24 / 累计浏览 2,527

小叙透明

这篇讲的是网页设计中“透明效果”的实现细节与兼容性考量。作者从渐变、圆角等常见视觉手法中,聚焦于“半透明”这个容易被忽略但效果显著的特性,将其拆解为**背景透明的图片**和**半透明的纯色背景**两个方向展开讨论。 文章的核心对比在于CSS中实现半透明的两种主要属性:`opacity`和`rgba()`。作者指出,`opacity`控制整个元素及其子元素的透明度,类似PS的蒙版效果;而`rgba()`则专用于控制背景色或边框等颜色的透明度。关键差异在于,前者会让内容也变透明,后者则能实现“背景透,内容不透”。这种差异决定了它们各自适用的场景。 更实际的是,文章没有回避历史包袱,详细剖析了在需要兼容IE8及以下浏览器时,如何组合使用`rgba()`与IE私有的`filter`滤镜,并指出了其中需要注意的`haslayout`激活和元素定位等关键细节。最后,作者也简要提及了`hsla()`作为另一种颜色定义方式。整体来看,文章没有停留在概念科普,而是直接切入了不同方法的选择策略与实战中的兼容“坑点”,对前端开发者有很强的实操参考价值。

本机暂存
IT 移动开发/ 2016-03-01 23:52:19 / 累计浏览 2,058

iOS安全–不同平台的崩溃收集

如何捕获App崩溃的“第一现场”?这篇讲的是开发者在不同平台实现崩溃收集的底层逻辑。作者从iOS平台出发,核心在于如何接管系统的异常捕获接口,从而在App崩溃时保存现场信息。 文章提供了两种在iOS上拦截崩溃的具体实现:一种是针对Objective-C层面的异常(Exception),通过NSGetUncaughtExceptionHandler和NSSetUncaughtExceptionHandler来设置自定义的处理器;另一种则是处理更底层的操作系统信号(Signal),通过信号处理函数来捕获如内存访问错误等致命问题。文中给出了清晰的代码示例,展示了如何安装(install)和卸载(uninstall)这些处理器。 这种直接操作底层接口的方案,为构建自研或定制的崩溃监控系统提供了技术蓝本,让开发者能更主动、可控地获取崩溃数据,而不仅仅依赖于第三方服务。

本机暂存
IT DevOps/ 2016-03-01 23:50:08 / 累计浏览 3,434

2015年版阿里云ECS服务器使用总结(与aws比较)

这篇讲的是国内云服务商阿里云和亚马逊AWS在服务器产品上的直接较量。作者从价格、稳定性、速度等多个维度进行了详细对比。 价格上,阿里云包月实例比AWS同配置便宜约40%,但AWS的预留实例方案可将价格拉平。稳定性方面,AWS整体表现更可靠,而阿里云则以超快的工单响应和给力的客服支持取胜。 速度测试是文章的重点。通过实测发现,阿里云1Mbps带宽下载速度约42-60KBs,但属于共享带宽,并发能力弱;AWS带宽上限更高,下载速度可达900KBs且不受影响。连接时间上,阿里云杭州节点(约280ms)明显优于北京节点(约2000ms),甚至快于AWS东京节点(约140ms)。 在服务与备案等本土化体验上,阿里云具有明显优势。文章最后给出了务实的选择建议:对于需要全栈云服务的国内创业团队,阿里云已能满足基本需求;而追求更成熟技术架构的团队,可继续关注AWS中国区的发展。

本机暂存
IT 前端/ 2016-03-01 23:47:45 / 累计浏览 4,784

手机网页用Bootstrap还是jQuery Mobile

许多开发者在为手机网页选型时纠结过这个问题:Bootstrap和jQuery Mobile,到底该用哪个?这篇讲的就是这两者的深度对比。 文章的核心观点很清晰:Bootstrap本质上是一个CSS框架,它解决的核心问题是跨设备的响应式布局和前端开发规范,通过Media Query让一套代码适应不同屏幕,并提供通用的UI组件如按钮、导航栏等。而jQuery Mobile则是一个更偏向移动端的WebAPP框架,它提供的是类似原生APP的组件(如手机导航栏、底部菜单)和丰富的页面转场效果,目标是让移动网页体验接近原生应用。 两者的适用场景也因此截然不同。如果你需要做一个同时在电脑和手机上都能良好展示的网站,或者构建后台管理系统,Bootstrap是更合适的选择。但如果你的项目是一个纯移动端的应用,并且希望给用户带来接近原生APP的交互体验,jQuery Mobile会更贴合需求。 文章也给出了一个务实的结论:对于追求产品级质量的WebAPP,这两个框架可能都力有不逮,自建响应式框架和组件库往往是最终的路径。

本机暂存
IT 后端/ 2016-03-01 23:46:29 / 累计浏览 1,295

使用docopt轻松实现python命令行参数处理

这篇讲的是如何用Python库docopt优雅地处理命令行参数。作者从一个实际需求出发——需要在命令行中快速添加或删除测试套件(testsuite)和测试用例(testcase),从而发现了这个颇为巧妙的工具。 docopt的核心思想很特别:它直接将程序的使用说明(即__doc__字符串)解析为命令行参数。你只需要按照一定的格式编写文档字符串,例如用“Usage:”部分描述用法,用“Options:”部分列出参数,docopt就能自动完成参数解析。这告别了繁琐的argparse配置,让参数处理与用户文档天然同步。 文章提供了一个完整的demo代码,清晰地展示了从文档字符串定义到参数解析、再到实际逻辑(列表增删)的全过程。执行效果部分也展示了成功操作和错误处理的场景,比如尝试删除一个不存在的测试用例时的反馈。 尽管作者提到docopt已有段时间未更新,但其设计思想在特定场景下依然实用,尤其适合那些希望参数定义与使用文档保持高度一致的轻量级命令行工具。

本机暂存