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

最新文章

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

IT 移动开发/ 2016-02-20 14:20:49 / 累计浏览 1,236

自己动手构建表单验证功能【iOS】

这篇讲的是如何在iOS开发中,利用Swift的`extension`特性来快速、优雅地构建一个表单验证功能。作者从一个包含邮箱、手机号和密码输入框的注册页面需求出发,演示了整个实现过程。 核心的巧妙之处在于使用了`extension`来扩展`UIButton`和`UITextField`这两个系统类。通过给`UIButton`添加`disable()`和`enable()`方法,轻松实现了按钮的半透明与禁用状态切换;通过给`UITextField`添加`validate(_:)`方法及针对邮箱、手机号、密码的专用验证方法,则将复杂的正则表达式判断封装成了简单可复用的属性与函数。 文章不仅展示了最终效果,更将实现步骤拆解得非常清晰:从分析需求(如输入框非空时按钮才可点击)、绑定事件,到编写具体的验证逻辑。例如,通过监听每个输入框的`Editing Changed`事件来实时检查所有输入框是否非空,从而动态控制按钮状态;在点击注册按钮后,再通过嵌套的`if`判断依次验证内容格式是否合法。 整个实现过程讲解得很细致,对想学习iOS基础功能开发的读者来说是个不错的参考。

本机暂存
IT 前端/ 2016-02-20 14:19:36 / 累计浏览 2,282

JSON.parse()和JSON.stringify()方法总结

这篇讲的是JSON对象的两个核心方法:parse()与stringify()。作者从字符串与对象互相转换这一基本需求出发,清晰拆解了这对方法。 parse()负责“解析”,将符合JSON格式的字符串转换成可用的JavaScript对象,其translator参数允许自定义转换逻辑。而stringify()则执行反向的“序列化”,将对象转为字符串,并重点介绍了它强大的格式化能力:通过replacer参数可以选择性序列化指定属性,通过space参数则能控制输出字符串的缩进层级(数字指定空格数,字符串用作缩进符),大幅提升可读性。 文章通过对比示例与运行效果截图,直观展示了不同参数组合下的输出差异,比如如何只输出“name”字段,或如何用“###”作为缩进。最后,作者特别强调了一个实践原则:应避免使用eval()方法来解析JSON,指出了其潜在风险。 对于前端开发者而言,这篇文章将这两个高频使用的方法讲得细致透彻,不仅说明了“怎么用”,还阐释了“怎么用更好”,是扎实的技术参考。

本机暂存
IT 后端/ 2016-02-20 14:17:52 / 累计浏览 1,975

[Java基础教程]第七章-Java流程控制

这篇讲的是Java流程控制,作者从一个特别生活化的场景出发——小明帮妈妈打酱油,根据“有瓶装就买瓶装,否则买袋装”的指令,自然地引入了if-else条件判断。文章没有停留在最基础的语法上,而是通过重构代码,演示了如何用面向对象的方式组织逻辑,并对比了if-else与switch-case这两种处理多分支场景的结构。文章指出,当条件分支增多时,switch-case写法更优雅,但提醒要注意每个case后的break语句,否则会发生“穿透”执行。 接着,文章用“小明家开饭店要批量买酱油”的例子,讲解了while和for两种循环,并对比了它们的结构特点:while更直观,for则将初始化、条件、增量整合在一起,代码更紧凑。在循环控制中,作者还结合预算限制,演示了break提前终止循环和continue跳过本次循环的用法,并顺带说明了比较运算符与逻辑运算符(如&&、||)的配合使用。 最后,文章总结了三种运算符的优先级,并附上了一个“打印5000以内质数”的小练习来巩固所学。整体上,作者把枯燥的语法点融入了一连串的“打酱油”任务中,让流程控制的逻辑显得清晰又实用。

本机暂存
IT 开发者/ 2016-02-20 14:16:35 / 累计浏览 1,960

[Java基础教程]第六章-Java数学运算符

这篇讲的是Java里最基础的数学运算。作者从计算机最初被设计用于计算导弹轨迹这一背景出发,引出了对基础数据类型和运算符的必要讲解。 文章首先梳理了Java的八种基本数据类型,如byte、int、long等整型,以及float、double等浮点型,并通过代码示例展示了如何利用包装类(如Integer、Double)获取它们的最小值和最大值。这部分清晰地区分了语言本身支持的类型和JDK提供的工具类。 在此基础上,文章用具体代码演示了加、减、乘、除与取模等运算符的用法。不仅展示了简单运算,还通过“混合四则运算”和“使用括号的运算”两个例子,说明了运算符的优先级规则。最后,文章提出了一个简单的习题:实现一个计算器类来处理乘法等运算,将理论知识引向实践。 整体来看,这是一篇扎实的入门级教程,它把数学运算这个看似简单的主题,与数据类型的底层细节和运算优先级的实践要点结合起来,为初学者打下了不错的基础。

本机暂存
IT 前端/ 2016-02-20 14:14:26 / 累计浏览 2,022

DOM中Property与Attribute的区别

这篇讲的是前端开发中一个经典又容易踩坑的问题:DOM里Property和Attribute到底有什么不同。虽然中文都常被译作“属性”,但它们在JS和HTML中的角色、行为与生命周期有着本质区别。 文章从源头梳理了二者的核心定义:Property是JS对象的属性,可以是任意类型,主要用于JS操作;而Attribute是HTML的特性,值始终是字符串,并通过`getAttribute/setAttribute`方法操作,直接体现在DOM结构上。一个关键背景是,在IE<9时代,浏览器将二者强制映射,这给许多开发者留下了“它们是一回事”的误解。 作者重点剖析了它们之间复杂的同步关系。自定义的Property与Attribute互不干涉;而非自定义的属性(如`id`, `src`, `value`)则有条件同步——例如,用`setAttribute`修改`input`的`value`会同步到Property,但通过`.value`赋值却不会反向同步到Attribute。`href`/`src`等属性的取值方式也不同,`getAttribute`拿到的是原始值,而Property则是完整的URL。 对于开发者而言,理解这个区别至关重要,尤其是在使用jQuery等库的`.attr()`和`.prop()`方法时,混淆二者可能导致难以排查的UI状态同步bug。文章最后用一张关系图清晰总结了这些复杂情况。

本机暂存
IT 前端/ 2016-02-20 11:48:34 / 累计浏览 1,920

[JavaWeb教程]第二章-jQuery简明开发教程

这篇讲的是jQuery的入门基础,作者从“write less, do more”这个核心理念出发,带读者快速上手。文章明确指出,jQuery之所以能成为超半数热门网站的共同选择,关键在于它极大地简化了原生JavaScript的操作,尤其是页面元素的获取与修改。 教程从引入jQuery文件讲起,用一个“Hello World”例子演示了文档就绪事件和基础事件绑定。核心篇幅集中讲解了jQuery强大的选择器:从最简单的id、标签、class三种基础选择,到能应对复杂场景的层级、属性和筛选等组合选择方式。作者通过示例代码清晰展示了如何灵活定位目标元素。 在获取元素后,教程进一步说明了如何通过`.val()`、`.text()`、`.attr()`和`.html()`等方法,动态更新页面的值、文本、属性乃至整体HTML结构。这部分内容直接指向了动态网页开发最根本的需求——响应用户交互来改变页面呈现。对于初学者来说,这是一条从“引入”到“操作”的明确路径。

本机暂存
IT 移动开发/ 2016-02-20 11:46:24 / 累计浏览 4,275

iOS到Android到底有多远

这篇讲的是一位在iOS开发四年后,重拾Android开发并独立上线应用的作者,分享从iOS转向Android过程中的核心差异与思考。 作者发现,最大的挑战始于编程语言。他对比了Objective-C与Java,指出OC在泛型、枚举和抽象类等现代语言特性上已显落后,这也是Swift应运而生的背景;而Java在Android平台依然稳固,Go语言暂无取代之势。在系统平台层面,作者深入分析了Android独有的Context概念——这个贯穿于各种API中的“上下文”参数,与iOS更为模块化、去中心化的资源访问方式形成了鲜明对比。 文章不仅停留在技术点的罗列,更延伸出一个核心观点:平台有生死,但开发者应超越具体平台,去掌握多线程、算法、设计模式等那些不会随平台消亡的通用思想。这对于计划拓宽技术栈的开发者,尤其是iOS工程师,提供了非常切实的视角和路线参考。

本机暂存
IT 移动开发/ 2016-02-20 11:43:11 / 累计浏览 2,540

为UIView任意角设置圆角

这篇讲的是如何在 iOS 开发中为 UIView 的任意角设置圆角。作者从最常见的全圆角需求出发,指出虽然一句 `cornerRadius` 就能搞定四个角,但当我们只想让某些角变圆时,就得动用 `layer.mask` 与 `UIBezierPath` 这一组合。 文章核心在于利用 `UIRectCorner` 枚举精准控制哪些角需要圆角处理。通过枚举值,开发者可以灵活组合左上、右上、左下、右下四个角。作者展示了一个实际代码示例:在 `layoutSubviews` 中创建一个 `CAShapeLayer`,将其路径设置为一个由 `bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:` 方法生成的贝塞尔曲线,最后将这个 shapeLayer 作为视图的遮罩。运行效果显示,一个视图的三个角(除了右下角)被成功设置成了圆角。 整个过程清晰展示了从发现问题(需要局部圆角)到提供具体实现方案的思路,对于需要精细化 UI 处理的 iOS 开发者来说,这是一个非常实用的小技巧。

本机暂存
IT 移动开发/ 2016-02-20 11:41:23 / 累计浏览 1,916

Swift错误和异常处理

这篇文章梳理了Swift中的错误与异常处理机制,对比了其与Objective-C时代处理方式的根本区别。作者指出,在Objective-C中, NSError 更像一种“可选”的契约,开发者容易因省事而忽略它,导致潜在问题在运行时才暴露。而Swift 2.0引入的异常机制,强制开发者使用 try/catch 来面对可能出错的同步操作,从语言层面鼓励更严谨的编程习惯。 对于异步API(如网络请求),文章则介绍了当前社区的最佳实践:利用泛型枚举(如 Result)来包装成功与失败两种状态。这种模式弥补了异常机制无法应用于异步流程的限制,并提供了比传统回调更清晰、更类型安全的结果处理方式。 最终,文章给出了明确的指引:同步API优先使用语言级异常,异步API则推荐使用枚举进行结果封装。这不仅关乎代码健壮性,也体现了Swift在安全性与表达力上的设计权衡。

本机暂存
IT 前端/ 2016-02-20 11:38:02 / 累计浏览 1,594

margin那些事儿

这篇讲的是CSS外边距margin那些容易让人困惑的“坑”与巧妙用法。作者从“能用padding就不用margin”的常见忠告切入,直面开发者实际遇到的问题。 文章重点剖析了两个经典难题:外边距叠加与IE6的双外边距bug。对于叠加问题,作者厘清了其发生的关键条件——块元素、毗邻、普通流、垂直方向,并指出触发BFC并非万能解药,提出“不如从源头避免叠加”的实用思路。对于双外边距,明确其出现的特定场景,并给出简单规避方法。 更有价值的是后半部分对负边距的创意运用。作者列举了利用负值margin实现水平居中、创造不规则布局、解决等间距列表挤压等实际案例,并详细拆解了经典的双飞翼布局实现原理。文中附有代码片段和效果示意图,让抽象概念变得直观。文章最后还展望了Flexbox、Grid等CSS3新布局方式对传统margin的可能替代。整体而言,这是一篇从痛点出发,深入原理并提供实用解决方案的扎实分享。

本机暂存
IT 前端/ 2016-02-20 11:37:15 / 累计浏览 2,153

《web前端最佳实践》—HTML篇

web前端开发中,许多开发者更关注页面的炫酷表现,却忽视了底层HTML代码的质量与规范。这篇文章正是从“web标准”这一常被忽视的基石出发,系统阐述了标准HTML带来的诸多好处,包括更好的浏览器兼容性、更优的搜索引擎排名以及更易于维护和扩展的代码结构。 作者从“如何做到标准”切入,强调了正确的文档结构、标签闭合以及样式与结构分离等基本原则。随后,文章重点探讨了如何编写“高可读性HTML”,其核心在于“语义化”。文中具体对比了标签的正确与错误用法,例如应使用`

`到`

`来层级清晰地定义标题,而非仅用于样式;在表单中,应使用`
IT 前端/ 2016-02-20 11:33:25 / 累计浏览 2,137

[JavaWeb教程]第一章-HTML简明开发教程

这篇文章从万维网的基本概念讲起,引出HTML作为网页构建基础的核心作用。作者通过Eclipse中创建一个“Hello World”网页的完整过程,带读者熟悉了HTML文档的基本结构,比如声明、html、head、body等标签的用途与嵌套关系。 随后,文章系统梳理了前端开发中常用的展示型标签。例如,通过h1到h6定义不同级别的标题,使用span和div控制行内与块级元素的布局,利用a标签实现页面跳转,并演示了img、ul/ol等标签的具体用法。对于数据展示,文章重点讲解了table表格标签族,包括th和td单元格的差异,并展示了如何通过调整首行单元格的width属性来精确控制列宽,以适配不同内容长度。 整体而言,这是一篇面向Java Web初学者的HTML入门指南,它没有停留在理论概念,而是紧扣“如何动手构建一个页面”这一目标,用可运行的代码示例将标签语法与实际呈现效果紧密联系起来,为后续的服务器端开发奠定了清晰的前端认知基础。

本机暂存
IT 数据库/ 2016-02-20 11:26:24 / 累计浏览 4,462

MySQL DBA修炼秘籍

这篇指南从职业发展路径出发,为立志成为MySQL DBA的同行勾勒了一幅清晰的修炼地图。作者结合自身及业内经验指出,现代互联网公司的MySQL DBA远不止是数据库管家,还需深入主机、网络、安全甚至自动化开发,逐步向运维DBA、开发DBA、架构师等专精方向演进。 文章核心在于“如何修炼”。从数据库基础概念与Linux入门讲起,到推荐《MySQL必知必会》、官方手册等学习材料,并强调通过搭建博客等实践来巩固知识。对于在职DBA,则给出了深入学习并发事务、锁机制、存储引擎等关键点的方向。 更吸引人的是,文中描绘了DBA理想的日常工作图景:约10%的时间通过平台处理基础运维,大部分精力投入SQL审核、主动性能优化、监控以及与业务的深度沟通,实现从“救火”到“防火”的转变。文末还附上了官方手册、知名技术博客等一系列实用资源。如果你正徘徊在DBA门口,或想系统规划进阶,这篇过来人的经验总结值得细品。

本机暂存
IT 后端/ 2016-02-20 11:23:45 / 累计浏览 1,937

ghost改掉默认首页

这篇讲的是如何在一个Ghost博客的域名下,同时运行PHP页面并替换默认首页。 作者遇到的实际需求是让同一域名既支持Ghost博客,又能运行PHP,且PHP页面作为首页。他没有选择复杂的插件或二次开发,而是用Nginx反向代理的经典思路巧妙解决:将Ghost改到8080端口运行,Nginx在80端口接收所有请求,并通过配置精准分流——所有`.php`请求交给PHP解释器处理,其余请求则代理回Ghost。 文章给出了完整的Nginx配置文件片段,清晰地展示了`location`块如何通过不同规则实现请求转发。针对如何让Ghost的博客列表出现在新的`/blog/`路径下,作者还演示了利用Ghost Public API和模板引擎的`{{#get}}`助手,新建静态页并修改主题文件来实现的步骤。 这是一份从端口规划、服务部署到前端模板修改的完整操作记录,对需要在同一Web服务器上混合部署不同应用(如Node.js与PHP)的开发者有直接的参考价值。

本机暂存
IT 前端/ 2016-02-18 23:53:30 / 累计浏览 1,890

z-index和zoom这哥俩

这篇讲的是前端开发中两个常被误用的CSS属性:z-index和zoom。 作者从“为什么设置了z-index却无效”这个经典老问题出发,通过大量代码与截图,一步步演示了z-index生效的严格条件。核心结论很清晰:z-index必须配合position定位使用才有效,并且它只在同级元素或同级子元素之间比较层级,父子之间并不会直接对比。文章特别指出了一个关键点:只要子元素设置了z-index大于等于0,它就会位于父元素之上;若想子元素显示在父元素下面,则子元素需设置小于0的值,同时父元素z-index为auto。 在文章后半部分,作者简要对比了zoom属性。它常被用于触发IE的hasLayout,能清除浮动与边距重叠,但其缩放效果在视觉上,并未真正改变元素尺寸,这与CSS3的transform:scale有本质区别。 整篇文章通过具体的代码调试过程,剖析了z-index的层叠上下文规则,并澄清了zoom的常见误解,对前端开发者理清层叠上下文和布局触发机制很有帮助。

本机暂存
IT 移动开发/ 2016-02-18 23:45:10 / 累计浏览 1,970

APP调用Custom URL Scheme

这篇讲的是如何让应用之间通过一个自定义的地址跳转来打开并传递信息,也就是实现Custom URL Scheme。文章从Android和iOS两个主流平台出发,清晰拆解了各自的配置方法与核心代码。 在Android端,核心是在AndroidManifest.xml的Activity中配置intent-filter,指定自定义的scheme(如`mgtv`),并通过Intent或浏览器链接来启动应用,接收端可以获取完整的URI数据。对于iOS,则需要在Xcode项目中设置URL Types,注册你的scheme标识符,并在AppDelegate里实现特定的处理方法来接收调用。文章用`mgtv://?action=play&data=12345`作为贯穿始终的例子,直观地展示了参数如何在应用间流动。 除了基础的启动,文章还深入介绍了如何进行参数解析与应用间通信,比如iOS应用可以判断调用源,并返回一个回调URL来告知调用方执行结果,甚至能在应用未启动时拉起特定页面。这使得URL Scheme不仅仅是打开一个应用,更能支撑起丰富的交互逻辑。 总的来说,这是一篇从配置到实战,覆盖双平台的应用间跳转指南,对于想实现应用深度链接或应用间协作的开发者来说,提供了非常具体的实现路径。

本机暂存
IT 数据库/ 2016-02-16 23:00:07 / 累计浏览 2,058

更好的 SQL 模式的 10 条规则

这篇讲的是数据库模式设计中常被忽视、却会影响长期维护效率的细节。作者从大量实际数据库的读写经验出发,总结了十条黄金法则,帮助开发者从源头避免未来的“痛苦”。 它核心强调命名与结构的清晰性。例如,对象名只用小写字母、数字和下划线,避免使用点、空格和大写,这能消除查询时的引号依赖和大小写混淆。列名和表名应具备自说明性,避免使用晦涩缩写或保留字。外键命名需保持全局一致。 此外,文章给出了具体的数据类型建议:主键推荐使用自增整数而非UUID,以简化查询和数据清理;时间数据应存储为统一的DATETIME类型,并始终使用UTC时区,而非字符串或Unix时间戳。它还指出应追求单一数据源,谨慎使用JSON列进行分析,并避免过度规范化(例如无需为邮编等简单值单独建表)。 遵循这些规则,能让你的数据库结构在未来需求变化和团队扩张时,依然保持清晰、高效且易于维护。

本机暂存
IT 前端/ 2016-02-16 22:56:04 / 累计浏览 5,664

Node.js 给前端带来了什么

这篇讲的是 Node.js 如何重新定义前端工程师的职责边界。作者从传统 Web 开发中“两个 UI 层”的割裂现象切入——前端只能控制浏览器内的表现,而负责生成页面的服务端 UI 层通常由后端主导,这导致数据如何呈现往往受限于后端技术栈,前后端协作存在天然隔阂。 文章的核心观点是:Node.js 的出现让前端工程师可以用熟悉的 JavaScript 操控服务端 UI 层,从而打通前后端。具体来说,在面向服务架构下,后端只需提供稳定的 RESTful 接口处理数据逻辑,而前端通过 Node.js 可以完全自主地进行页面渲染、模板处理和交互逻辑,不再被后端的技术选择所掣肘。 这种分工模式将前后端通过数据接口解耦,双方可以独立高效迭代。作者也提到,这需要打破“JavaScript 只是玩具语言”的偏见,但实际效果显著:前端获得了对完整 UI 链路的控制权,后端则从不擅长的页面拼接工作中解放,最终提升的是整体开发效率和用户体验。

本机暂存
IT DevOps/ 2016-02-16 22:22:24 / 累计浏览 5,006

不要在linux上启用net.ipv4.tcp_tw_recycle参数

这篇文章从一个常见但危险的运维操作入手——启用Linux的 `net.ipv4.tcp_tw_recycle` 参数来加速TIME-WAIT状态回收。作者指出,尽管很多网络指南建议启用该参数以快速释放端口,但官方手册已明确警告其在NAT(网络地址转换)环境下的严重问题。 文章深入剖析了问题的根源:当多个设备通过同一NAT出口访问服务器时,该参数会基于源IP地址快速回收连接,导致来自不同客户端、但具有相同出口IP的合法新连接被错误丢弃。这在家庭、网吧或企业网络中会引发大量难以排查的TCP连接建立失败。 与此同时,文章对比了功能相似的 `net.ipv4.tcp_tw_reuse` 参数,阐明其在协议层面更安全,适用于客户端主动发起连接的场景。作者旨在纠正互联网上流传的错误优化建议,并借助清晰的TCP状态图解,从原理上讲解TIME-WAIT状态存在的必要性,帮助读者真正理解协议设计,避免因盲目调参而引入隐蔽故障。

本机暂存
IT 前端/ 2016-02-16 22:21:04 / 累计浏览 7,278

-webkit-margin-start 属性

这篇笔记讲清楚了 WebKit 浏览器下的一个 CSS 属性 `-webkit-margin-start` 的核心作用:它本质上是控制元素在书写方向“开始”一侧的外边距。对于绝大多数从左到右排版的页面来说,它等同于我们熟悉的 `margin-left`。 文章直接给出了简洁的语法和参数说明。这个属性接受各种长度单位(如 px、em、rem 等),也能设置为 `auto`。一个关键点是,它会随着书写方向自动调整:在从左到右(LTR)的文档中设置左侧边距,而在从右到左(RTL)的文档中则控制右侧边距,这使得它在处理多语言布局时非常灵活。 文章还提到了兼容性细节,指出它主要支持 Safari 和 iOS 浏览器,并且早期版本曾使用 `-khtml-margin-start` 这个名称。最后通过一个简单的代码示例和效果图,直观展示了设置不同值后的盒子边距效果,帮助读者快速理解其用法。 这个属性是理解 CSS 逻辑属性(Logical Properties)的一个小切口,关注它能帮你写出更具适应性的布局代码。

本机暂存