源码解读之File】的更多相关文章

文件和目录路径名的抽象表示形式. 我们知道,对于不同的操作系统,文件路径的描述是不同的 比如 windows平台:用\ linux平台:用/    四个构造方法   API: 文件自身属性读取  创建文件/目录基本操作   文件/目录 列表读取  文件权限访问以及文件信息设置  其他   FileSystem简介   File中有一个变量fs  类型为FileSystem compareTo方法依赖于他 而equals方法又依赖compareTo hashCode也是依赖他 所以说: compa…
第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极其相似,我们通过SDWebImageCache,来看看作者是如何实现这个功能的. 在业务中,经常要缓存数据,通过本篇的学习,我们写出的缓存管理者这个管理者对象,就能够有所进步. NSCache 对于很多开发者来说,NSCache是一个陌生人,因为大家往往对NSMutableDictionary情有独…
这篇就讲到了跟请求相关的类了 关于AFNetworking 3.0 源码解读 的文章篇幅都会很长,因为不仅仅要把代码进行详细的的解释,还会大概讲解和代码相关的知识点. 上半篇: URI编码的知识 关于什么叫URI编码和为什么要编码,请看我转载的这篇文章 url 编码(percentcode 百分号编码) 给定一个URL:http://www.imkevinyang.com/2009/08/%E8%AF%A6%E8%A7%A3javascript%E4%B8%AD%E7%9A%84url%E7%B…
HTTP/1.1 默认的连接方式是长连接,不能通过简单的TCP连接关闭判断HttpMessage的结束. 以下是几种判断HttpMessage结束的方式: 1.      HTTP协议约定status code 为1xx,204,304的应答消息不能包含消息体(Message Body), 直接忽略掉消息实体内容. [适用于应答消息] Http Message =Http Header 2.      如果请求消息的Method为HEAD,则直接忽略其消息体.[适用于请求消息] Http Mes…
本篇主要讲解Alamofire中错误的处理机制 前言 在开发中,往往最容易被忽略的内容就是对错误的处理.有经验的开发者,能够对自己写的每行代码负责,而且非常清楚自己写的代码在什么时候会出现异常,这样就能提前做好错误处理. Alamofire的错误封装很经典,是使用swift中enum的一个典型案例.读完这篇文章,一定能让大家对swift的枚举有一个更深的理解,同时增加一些枚举的高级使用技巧. 那么有一个很重要的问题,我们应该在什么情况下考虑使用枚举呢?只要结果可能是有限的集合的情况下,我们就尽量…
本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用AFNetworking或者Alamofire处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很多人都做了二次封装,但事实上,这个二次封装却又异常简单或者是简陋.这篇文章的内容是Task代理,是一篇很独立的文章,大家可以通过这篇文章了解iOS中网络开发是怎么一回事. 那么一条最普通的网络请求,究竟是怎样的一个过程?首先我们根据一个URL和若干个参数生成Request,然后根据Request生成…
本篇主要讲解Alamofire中安全验证代码 前言 作为开发人员,理解HTTPS的原理和应用算是一项基本技能.HTTPS目前来说是非常安全的,但仍然有大量的公司还在使用HTTP.其实HTTPS也并不是很贵啊. 在网上可以找到大把的介绍HTTTPS的文章,在阅读ServerTrustPolicy.swfit代码前,我们先简单的讲一下HTTPS请求的过程: 上边的图片已经标出了步骤,我们逐步的来分析: HTTPS请求以https开头,我们首先向服务器发送一条请求. 服务器需要一个证书,这个证书可以从…
1.源码缩影 !(function (name, definition) { var hasDefine = typeof define === 'function', //检查上下文环境是否为AMD或CMD hasExports = typeof module !== 'undefined' && module.exports; //检查上下文环境是否为Node if (hasDefine) { define(definition); //AMD环境或CMD环境 } else if (h…
本篇讲解跟上传数据相关的多表单 前言 我相信应该有不少的开发者不明白多表单是怎么一回事,然而事实上,多表单确实很简单.试想一下,如果有多个不同类型的文件(png/txt/mp3/pdf等等)需要上传给服务器,你打算怎么办?如果你一个一个的上传,那我无话可说,但是如果你想一次性上传,那么就要考虑服务端如何识别这些不同类型的数据呢? 服务端对不同类型数据的识别解决方案就是多表单.客户端与服务端共同制定一套规范,彼此使用该规则交换数据就完全ok了, 在本篇中我会带来多表单的格式说明和实现多表单的过程的…
本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点.这无疑给我们一个Request很复杂的想法.但看了Alamofire中Request.swift中的代码,Request被设计的又是如此的简单,这就是为什么这些顶级框架如此让人喜爱的原因. 在后续的文章中,我会单独写一篇Swift中协议的使用技巧,在Alamofire源码解读系列(一)之概述和使用这篇的Alamofire…
通过每块代码进行源码解读,并发现源码使用的技术栈,扩展视野. registerNatives 方法解读 /* register the natives via the static initializer. * * VM will invoke the initializeSystemClass method to complete * the initialization for this class separated from clinit. * Note that to use prop…
php-msf: https://github.com/pinguo/php-msf 百度脑图 - php-msf 源码解读: http://naotu.baidu.com/file/cc7b5a49dfed46001d22222b1afa99ba?token=c9628331e99143c2 源码解读也做了一段时间了, 总结一下自己的心得: 抓住 生命周期, 让代码在你脑海中 跑起来 分析架构, 关键字 分层 边界 隔离 一个好的框架, 弄清楚 生命周期 和 架构, 基本就已经到了 熟悉 的状…
  官网: https://www.swoft.org/ 源码解读: http://naotu.baidu.com/file/814e81c9781b733e04218ac7a0494e2a?token=f009094c71a791c5 号外号外, 欢迎大家 star, 我们开发组定了一个 star 1000+ 就线下聚一次的小目标 继续源码解读系列. php 里面的 yii/laravel 框架算是非常「重」的了. 这里的 重 先不具体到 性能 层面, 主要是框架的设计思想和框架集成的服务,…
概述:Apache Beam WordCount编程实战及源码解读,并通过intellij IDEA和terminal两种方式调试运行WordCount程序,Apache Beam对大数据的批处理和流处理,提供一套先进的统一的编程模型,并可以运行大数据处理引擎上.完整项目Github源码 负责公司大数据处理相关架构,但是具有多样性,极大的增加了开发成本,急需统一编程处理,Apache Beam,一处编程,处处运行,故将折腾成果分享出来. 1.Apache Beam编程实战–前言,Apache B…
阅读优秀的js插件和库源码,可以加深我们对web开发的理解和提高js能力,本人能力有限,只能粗略读懂一些小型插件,这里带来对fastclick源码的解读,望各位大神不吝指教~! fastclick诞生背景与使用 在解读源码前,还是简单介绍下fastclick: 诞生背景 我们都知道,在移动端页面开发上,会出现一个问题,click事件会有300ms的延迟,这让用户感觉很不爽,感觉像是网页卡顿了一样,实际上,这是浏览器为了更好的判断用户的双击行为,移动浏览器都支持双击缩放或双击滚动的操作,比如一个链…
本文主要说明Webpack懒加载构建和加载的原理,对构建后的源码进行分析. 一 说明 本文以一个简单的示例,通过对构建好的bundle.js源码进行分析,说明Webpack懒加载构建原理. 本文使用的Webpack版本是4.32.2版本. 注意:之前也分析过Webpack3.10.0版本构建出来的bundle.js,通过和这次的Webpack 4.32.2版本对比,核心的构建原理基本一致,只是将模块索引id改为文件路径和名字.模块代码改为了eval(moduleString)执行的方式等一些优化…
date: 2018-8-01 14:22:17title: swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?description: 阅读 sowft 框架源码, 了解 sowft 启动阶段的那些事儿 小伙伴刚接触 swoft 的时候会感觉 压力有点大, 更直观的说法是 难. 开发组是不赞成 难 这个说法的, swoft 的代码都是 php 实现的, 而 php 又是 世界上最好的语言, swoft 的代码阅读起来是很轻松的. 之后开发组会用 系列源码 解读文章, 深入解析…
Prometheus 源码解读(一) Prometheus 是云原生监控领域的事实标准,越来越来的开源项目开始支持 Prometheus 监控数据格式.从本篇开始,我将和大家一起阅读分析 Prometheus 源码.学习 Prometheus 的设计理念,了解 Prometheus 的局限性与不足.本系列分八个板块逐一拆解 Prometheus 源码.本文基于 Prometheus v2.13.0. 工作原理与架构 时序数据库模块(TSDB) 配置文件加载模块(Configuration Rel…
https://www.jianshu.com/p/22e462f01d8c pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现实(在Google Cloud TPU v2 上训练BERT-Base要花费近500刀,耗时达到两周.在GPU上可想而知只会更贵),但是学习bert的预训练方法可以为我们弄懂整个bert的运行流程提供莫大的帮助.预训练涉及到的模块有点多,所以这也将会是一篇长文,在能简略的地方我尽量简略,还是那句话,…
MapReduce原理及源码解读 目录 MapReduce原理及源码解读 一.分片 灵魂拷问:为什么要分片? 1.1 对谁分片 1.2 长度是否为0 1.3 是否可以分片 1.4 分片的大小 1.5 开始分片 1.6 分片后读取会不会断行 二.Map阶段 2.1 实例化Mapper 2.2 调用map()方法 三.Shuffle阶段 灵魂拷问:哪来的Shuffle? 3.1 shuffle的概念 3.2 Map端Shuffle 3.2.1 分区(partition) 3.2.2 写入环形缓冲区…
第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计,就很难了.接下来我们一步一步的分析作者在开发中的思路和使用到的技术细节. NSOperation NSOperation想必大家都知道,为了让程序执行的更快,我们用多线程异步的方式解决这个问题,GCD与NSOperation都能实现多线程,我们这里只介绍NSOperation.如果大家想了解更多N…
第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说我的目的.想成为一名好的程序员,肯定绕不开模仿这条路.之所以做出这么一个决定,也是想提高自己写框架的能力,逻辑思维能力,扩展知识面.同时也能够给那些想了解这些框架的同学一些基本的解释.何乐而不为呢? 解读方法 对于框架的源码解读,我个人的习惯是先看头文件,先从头文件最简单的开始解读,也就是说首先看不…
第二篇 前言 本篇是和GIF相关的一个UIImage的分类.主要提供了三个方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name ----- 根据名称获取图片 + (UIImage *)sd_animatedGIFWithData:(NSData *)data ----- 根据NSData获取图片 - (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size -----…
第三篇 前言 本篇主要解读SDWebImage的配置文件.正如compat的定义,该配置文件主要是兼容Apple的其他设备.也许我们真实的开发平台只有一个,但考虑各个平台的兼容性,对于框架有着很重要的意义.这篇文章的重点是抽取出对于iOS很重要的用法,能够在项目开发中提高效率. #import 导入这个头文件,我们就能访问系统提供的配置选项了,我们接下来会对该文件出现的配置属性做出解释. __OBJC_GC__ #ifdef __OBJC_GC__ #error SDWebImage does…
第四篇 前言 首先,我们要弄明白一个问题? 为什么要对UIImage进行解码呢?难道不能直接使用吗? 其实不解码也是可以使用的,假如说我们通过imageNamed:来加载image,系统默认会在主线程立即进行图片的解码工作.这一过程就是把image解码成可供控件直接使用的位图. 当在主线程调用了大量的imageNamed:方法后,就会产生卡顿了.为了解决这个问题我们有两种比较简单的处理方法: 我们不使用imageNamed:加载图片,使用其他的方法,比如imageWithContentsOfFi…
第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计.在架构上来说,缓存算是存储设计的一部分.我们把各种不同的存储内容按照功能进行切割后,图片缓存便是其中的一个. 我们在封装自己的图片缓存管理对象的时候,SDWebImageCache能够提供大约90%的代码给我们直接使用,基于这些代码,我们需要分析出作者的设计思想是什么?当需要缓存某个列表时,基于SDWebImageCache的设计思想,我们就能够设计出比较合理的缓存管理对象了. 所谓举一…
承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(NSUInteger, NSURLRequestNetworkServiceType) { NSURLNetworkServiceTypeDefault = 0, // Standard internet traffic NSURLNetworkServiceTypeVoIP = 1, // Voic…
养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetworking 的源码解读.这一过程耗时数天.当我回过头又重头到尾的读了一篇,又有所收获.不禁让我想起了当初上学时的种种情景.我们应该对知识进行反复的记忆和理解.下边是我总结的 AFNetworking 中能够学到的知识点. 1.枚举(enum) 使用原则:当满足一个有限的并具有统一主题的集合的时候,我…
AFNetworking的源码解读马上就结束了,这一篇应该算是倒数第二篇,下一篇会是对AFNetworking中的技术点进行总结. 前言 上一篇我们总结了 UIActivityIndicatorView UIRefreshControl UIImageView 这3个控件的分类.那么这一篇就总结下剩余的3个分类:UIButton UIProgressView UIWebView . UIButton+AFNetworking UIButton跟图片相关的属性大概有两个,Image和Backgro…
我们应该看到过很多类似这样的例子:某个控件拥有加载网络图片的能力.但这究竟是怎么做到的呢?看完这篇文章就明白了. 前言 这篇我们会介绍 AFNetworking 中的3个UIKit中的分类.UIActivityIndicatorView UIRefreshControl UIImageView.读完本篇就能够明白控件是如何显示网络图片的.那么如果你有兴趣,可以尝试让一个控件的layer也能够加载网络图片. 提供的功能 我们解读源码不仅仅是了解内部实现原理,还要让开发者明白在这些分类中我能够使用那…