IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者
首页 / Michael
IT 2014-11-23 21:06:37 / 累计浏览 2,280

熬夜

作者回顾了自己在北京近二十年来,几种不同性质的“熬夜”经历。从学生时期为赚取生活费、在机房“偷电”学习计算机的被动熬夜,到初入IT行业为掌握新技术而如饥似渴的主动学习,再到后来出入三里屯工体、社交饮酒带来的“模糊”熬夜,最终在创业阶段,熬夜成为伴随日常的“理所当然”。 文章并非讨论健康建议,而是通过个人时间线,呈现了一个技术人生活状态的变迁缩影:初期是生存与求知驱动,中期混杂着社交惯性,后期则是被事业责任与焦虑裹挟。作者坦言,熬夜早已成为难以摆脱的习惯,并坦诚表达了对未来的担忧。 这篇分享的动人之处在于其真实性,它映照出许多同龄人相似的矛盾——一边熬夜,一边焦虑。最终,作者送上了朴素的祝福,希望所有熬夜的朋友都能身体健康。

本机暂存
IT 2012-07-09 23:03:44 / 累计浏览 3,520

新浪微博 Android SDK中OAuth2.0隐式授权部分的一个代码逻辑问题

这篇讲的是作者在开发微博登录功能时,被一个看似小却很烦人的问题困扰:自定义的回调方法,比如 onComplete 或 onCancel,会被意外调用两次。这会导致内部逻辑重复执行,白白增加了客户端与服务端的开销。 作者一开始用了一个“取巧”的方案,通过一个标志变量来防止重复执行,暂时绕过了问题。但在多处需要复用此功能时,他意识到必须从根源上解决。 于是,文章深入到新浪微博 Android SDK 的内部实现,去寻找 OAuth2.0 隐式授权流程中,导致回调被触发两次的真正原因。它会带你梳理回调的注册与调用链路,分析可能的生命周期处理不当之处。对于使用该 SDK 或接触类似授权流程的开发者来说,这不仅是一次问题排查,更是一次理解 SDK 内部机制、避免未来踩坑的实用参考。

本机暂存
IT 2012-06-19 23:52:17 / 累计浏览 3,320

Android动画背景图自动播放的实现

在Android开发中,为网络图片加载添加loading动画很常见,但让动画自动播放却是个小麻烦。这篇文章就专门解决这个具体痛点。 作者指出,问题根因在于 `AnimationDrawable` 的 `start()` 方法不能直接写在 `onResume` 等生命周期回调里,否则动画不会自动启动。为了解决这个问题,文章详细介绍了三种经过验证的实现技巧:通过 `Runnable` 在视图挂载后启动、使用 `AsyncTask` 在后台线程触发,以及利用 `ViewTreeObserver` 的 `OnPreDrawListener` 在视图绘制前启动。每种方法都附带了清晰的代码示例。 文章还对比了网上流传的另一种利用 `onWindowFocusChanged` 的方法,并指出了其依赖焦点变化的局限性。整体来看,这是一篇聚焦于特定技术问题的实用指南,为开发者提供了多种可靠的解决方案。

本机暂存
IT 2012-05-04 00:03:26 / 累计浏览 4,360

PHP 正则里面的两个重要技巧

这篇讲的是作者从多年正则使用经验出发,提炼出在PHP Web开发(尤其数据抓取与代码分析场景)中极具实战价值的两个关键技巧。文章并非泛泛而谈基础语法,而是直接切入实战痛点。 作者指出,正则表达式在处理复杂文本匹配时,往往需要超越基础模式匹配的思维。例如,在提取HTML片段或分析嵌套代码结构时,常规的贪婪匹配可能失效,而调整为懒惰匹配或巧妙使用“前瞻”与“后顾”断言,则能精准定位目标内容而不破坏上下文。这两个技巧的核心差异在于对“匹配边界”的控制方式,前者处理包含关系的文本更稳健,后者在验证上下文条件时更高效。 文章通过具体场景(如从网页中抓取特定区块的链接)演示了这两个技巧的运用,清晰地展示了不同正则写法带来的效果对比。对于经常需要处理非结构化数据、进行代码静态分析或构建爬虫的开发者而言,掌握这类精细的控制方法,能显著提升正则表达的准确性和健壮性。

本机暂存
IT 2012-04-19 23:31:24 / 累计浏览 3,480

PHP正则匹配字符串中的标签

这篇讲的是PHP正则表达式在处理混合了中文、英文、数字的复杂字符串时,如何精准匹配其中的标签。 问题的核心在于,PHP的PCRE扩展并不支持像Perl那样的 `\U`、`\P`、`\L` 这类方便的Unicode字符串修饰符。这导致在直接用 `\w` 等简写元字符时,无法可靠地匹配包含中文在内的所有“单词”字符。作者从这个实际痛点出发,给出了明确的解决方案:放弃简写,转而使用16进制编码或Unicode转义序列来显式定义中文字符的范围。 文章详细展示了具体的实现方式,比如用 `\x{4e00}-\x{9fa5}` 来覆盖常用的中日韩统一表意文字。这种方法虽然写起来稍微繁琐一些,但能确保正则引擎在匹配时将中文字符正确识别,避免出现漏匹配或误匹配的问题。文末还附有可供直接参考的范例代码,帮助读者快速将这一技巧应用到自己的项目中。

本机暂存
IT 2011-11-21 00:08:27 / 累计浏览 2,360

把FreeBSD下的硬件RAID去掉

作者遇到一个经典兼容性坑:几年前一台搭载Intel S3000AH主板的服务器,想在FreeBSD下使用板载的RAID功能。这块主板集成了Intel Matrix Storage和LSI RAID控制器,但后者对FreeBSD根本不受支持。作者当初“曲线救国”,用Intel Matrix Storage模式组了RAID 1来安装FreeBSD 7.2,但这套方案其实并不靠谱——RAID经常无故掉线,而FreeBSD下的管理工具atacontrol也完全不支持关键的detach和attach操作,系统只能勉强把RAID设备识别为ar0。 核心问题根源在于,硬件RAID控制器的固件层逻辑与FreeBSD的驱动存在不兼容。厂商对FreeBSD的支持本就有限,导致RAID状态管理和故障恢复机制无法正常工作,系统只是“看见”了设备,却无法真正控制它。作者通过这次实践说明,强行使用这种不兼容的硬件RAID,最终带来的不是性能提升,而是持续的不稳定性风险和管理上的束手束脚。 文章记录的正是这样一个从“勉强能用”到发现问题的完整过程。对于遇到类似老旧服务器改造,或是计划在非主流系统上使用硬件RAID的运维人员而言,这个案例清晰地展示了一个关键教训:在部署RAID方案前,务必彻底确认操作系统与控制器的兼容性,否则很容易陷入维护的泥潭。

本机暂存
IT 2011-09-20 22:37:39 / 累计浏览 6,720

使用HAProxy对MySQL进行负载均衡和状态监控

这篇讲的是作者从自身生产环境出发,分享如何将HAProxy从传统的前端Web负载均衡,扩展到后端MySQL数据库集群的实践。之前HAProxy主要承担前端请求分发,后端的Memcached和MySQL并未纳入管理。近期在一次小规模架构调整中,作者尝试引入HAProxy来为MySQL提供负载均衡与健康状态监控。 核心方案在于,利用HAProxy作为MySQL的统一访问入口,将客户端的数据库请求根据策略分发到不同的后端MySQL实例上。同时,借助HAProxy强大的健康检查能力,可以实时监测后端数据库节点的可用性,自动摘除故障节点,确保服务连续性。经过一段时间的线上运行,这种架构展现出了不错的效果:不仅提升了MySQL服务的整体稳定性和响应能力,也使得后端数据库状态的监控变得更加集中和直观,为运维管理带来了便利。

本机暂存
IT 2011-09-20 22:30:13 / 累计浏览 4,520

面向对象设计模式的核心法则

这篇文章讲的是面向对象设计模式的核心法则,作者从软件开发的经典问题出发,强调了设计模式在解决复杂性、提高代码质量方面的关键作用。文章推荐了《设计模式》一书,它详细剖析了21种经典设计模式,如单例模式用于全局资源管理、工厂模式简化对象创建、观察者模式实现松耦合通信,每种模式都针对特定设计场景提供可复用的解决方案。作者指出,这本书不仅系统讲解了模式的结构和实现,还深入探讨了如何在项目中灵活应用,避免过度设计或滥用模式,从而提升系统的可维护性和团队协作效率。通过学习这些模式,开发者能够掌握面向对象设计的核心思想,将抽象概念转化为实践中的优雅代码,为构建健壮的软件架构打下坚实基础。

本机暂存