摘要: 示例 前言 很多iOS应用中都需要下载数据,并对这些下载的过程和结果进行管理,因此我才有了写这个MCDownloader的想法。在 "IOS 文件下载器 MCDownloadManager" 这篇文章中,我使用GCD和集合来实现了这个功能,基本上也能满足需求,这一部分的实现原理主要参考 "AFNet 阅读全文
posted @ 2017-04-10 14:02 马在路上 阅读(1748) 评论(0) 推荐(3) 编辑
摘要: 我们用AFNetworking小试牛刀,写一个简单的下载器来演示功能。 前言 为什么AFNetworking能够成为顶级框架?我们究竟该如何领悟它的精髓所在?这都是很难的问题。安全,高效,流畅,这3个特性缺一不可。假如我们要封装一个通用的网络框架,提供一个文件下载器是很有必要的。按照 管理编程原则 阅读全文
posted @ 2016-09-12 14:43 马在路上 阅读(4667) 评论(4) 推荐(1) 编辑
摘要: 人类通过模仿自然界中的生物,已经发明了很多东西,比如飞机,就是模仿鸟翼,但最终,这些东西会和原来的东西有些许差异, artificial neural networks (ANNs)就是模仿动物大脑的神经网络。 ANNs是Deep Learning的基本组成部分,它有很多用处: ANNs are a 阅读全文
posted @ 2019-09-22 16:59 马在路上 阅读(1207) 评论(0) 推荐(0) 编辑
摘要: TensorFlow的概念很简单:使用python定义一个计算图,然后TensorFlow根据计算图生成高性能的c++代码。 如上图所示,使用图的方式实现了函数$f(x,y)=x^2y+y+2$的计算,在图中可以定义操作符和输入输出变量,基于此特性,TensorFlow能够实现分布式的计算,可以实现 阅读全文
posted @ 2019-09-06 11:30 马在路上 阅读(1178) 评论(0) 推荐(0) 编辑
摘要: 准备数据 训练集和测试集的数据来源于很多地方,比如:数据库,csv文件或者其他存储数据的方式,为了操作的简便性,可以写一些小的脚本来下载并解析这些数据。在本文中,我们先写一个脚本来演示: 执行上边的代码后,数据就已经下载到本地了,接下来在使用 加载数据 数据预览 使用 解析后的数据是 格式,我们可以 阅读全文
posted @ 2019-09-04 18:53 马在路上 阅读(4581) 评论(0) 推荐(0) 编辑
摘要: 最近公司有一个新的需求,要把代码进行瘦身,这篇博客记录下如何对图片进行压缩的。 原理: 写一个脚本,把图片文件夹'.xcassets'的所有文件遍历出来,然后使用一个第三方的算法把图片压缩后再替换回去 成果: 由于在该工程中的png图片已经压缩过了,这次只压缩了jgp为后缀的图片,可以看出,还是有效 阅读全文
posted @ 2018-10-17 20:53 马在路上 阅读(736) 评论(0) 推荐(0) 编辑
摘要: ![](https://images2018.cnblogs.com/blog/637318/201807/637318-20180708150624430-737418324.jpg) 阅读全文
posted @ 2018-07-08 15:07 马在路上 阅读(1295) 评论(0) 推荐(0) 编辑
摘要: 元类在很多编程语言中都有这样的概念,我们都知道,类可以创建对象,类本身也是对象,既然是对象,那么它肯定也是被创造出来的,元类就专门用来创造类对象,于是,这就给我们提供了一种操纵或者监听类的能力。 平时我们创建一个类,使用的是这种方式: 如果把类也看成一个对象,利用元类,我们这样创建一个类: 如果从写 阅读全文
posted @ 2018-04-03 15:06 马在路上 阅读(1878) 评论(0) 推荐(0) 编辑
摘要: property最大的用处就是可以为一个属性制定getter,setter,delete和doc,他的函数原型为: 从上边的代码中可以看出来,它一共接受4个参数,我们再继续看一段代码: 通过property,我们有能力创造出一个属性来,然后为这个属性指定一些方法, 在这里用setter,getter 阅读全文
posted @ 2018-03-30 17:35 马在路上 阅读(2309) 评论(0) 推荐(0) 编辑
摘要: 在看python高级编程这本书的时候,在讲到super的时候,产生了一些疑惑,super在python中的用法跟其他的语言有一些不一样的地方,在网上找了一些资料,发现基本上很少有文章能把我的疑惑讲明白,其中 "这篇文章" 最有价值的地方是它讲解了我们平时对super的正确使用方法。 首先看一段程序: 阅读全文
posted @ 2018-03-27 11:00 马在路上 阅读(1488) 评论(0) 推荐(0) 编辑
摘要: 3.58 3.59 3.60 3.70 3.71 3.72 3.74 3.75 总结 看本章的过程当中,仿佛回到了大学时光,在读的的过程中,书本上的练习题做的还可以,但是感觉很多前边讲过的东西还是不太清楚,于是在读完后又重新读了一遍,在阅读第二遍的过程中, 注意到了很多细节,比如之前push 和 p 阅读全文
posted @ 2018-02-26 10:23 马在路上 阅读(8860) 评论(1) 推荐(1) 编辑
摘要: 说明 我发现,当把这些题做完之后对本章知识的理解才算有点小进步。下边的答案主要参考了这两个网站: 1. "http://blog.csdn.net/zhanyu1990/article/details/24936663" 2. "https://dreamanddead.gitbooks.io/cs 阅读全文
posted @ 2018-02-01 11:11 马在路上 阅读(29271) 评论(4) 推荐(2) 编辑
摘要: greedy算法的核心思想是首先计算覆盖面大的部分,然后依次寻找其他覆盖面最大的部分。该算法的使用场景就像他的名字一样,当符合贪婪属性的时候就可以考虑。 阅读全文
posted @ 2017-11-21 17:36 马在路上 阅读(1624) 评论(0) 推荐(0) 编辑
摘要: 原理 我们知道,使用Breadth first search算法能够找到到达某个目标的最短路径,但这个算法没考虑 ,因此我们再为每个edge添加了权重后,我们就需要使用Dijkstra算法来寻找权重和最小的路径。 其实原理很简单,我们最终的目的是计算出每一个节点到起点的权重之和,同时获取得到这个权重 阅读全文
posted @ 2017-11-16 17:39 马在路上 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 在讲解Breadth first search 算法之前,我们先简单介绍两种数据类型 和`Queue`。 Graph 这就是一个图,它由两部分组成: 节点, 使用圆圈表示的部分 边, 使用线表示的地方,通常都是有方向的线 这种数据结构可以形象的表示一个 ,而在实际解决问题的时候,我们除了找到类似 的 阅读全文
posted @ 2017-11-15 15:07 马在路上 阅读(1374) 评论(5) 推荐(0) 编辑
摘要: ```swift //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground" /// sum func sum(array: Array) -> Int { if array.count == 0 { return 0; } ... 阅读全文
posted @ 2017-11-14 11:27 马在路上 阅读(503) 评论(0) 推荐(1) 编辑
摘要: 前言 在没有深度使用函数回调的经验的时候,去看这些内容还是有一点吃力的。由于Node.js独特的异步特性,才出现了“回调地狱”的问题,这篇文章中,我比较详细的记录了如何解决异步流问题。 文章会很长,而且这篇是对异步流模式的解释。文中会使用一个简单的 网络蜘蛛 的例子,它的作用是抓取指定URL的网页内 阅读全文
posted @ 2017-10-24 16:34 马在路上 阅读(672) 评论(0) 推荐(1) 编辑
摘要: 在iOS中我们经常用到单利模式,这样就能够实现在多处共享同一数据,那么在Node.js中也存在这种模式。 我们知道,Node.js中模块的概念很重要,在写模块的接口的时候,只需要暴露出一个实例对象就能实现单利模式。 这依赖于模块加载的缓存机制,在这篇文章中我给出了说明。 "Node.js之循环依赖" 阅读全文
posted @ 2017-10-12 11:41 马在路上 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 在Node.js中有可能会出现循环依赖的问题,在此做一个简单的记录 假如有一个模块A: 假如有一个模块B: 我们在main.js中调用他们: 这就是一个循环依赖的问题,a中加载了b,b中加载了a,我们看一下输出结果: 可以发现,虽然循环依赖了 ,但是并没有造成死循环,这是怎么做到的呢? 原理就是模块 阅读全文
posted @ 2017-10-11 10:40 马在路上 阅读(1049) 评论(0) 推荐(0) 编辑
摘要: 前言 这篇文章算是对 "Building APIs with Node.js" 这本书的一个总结。用Node.js写接口对我来说是很有用的,比如在项目初始阶段,可以快速的模拟网络请求。正因为它用js写的,跟iOS直接的联系也比其他语言写的后台更加接近。 这本书写的极好,作者编码的思路极其清晰,整本书 阅读全文
posted @ 2017-09-28 16:31 马在路上 阅读(24526) 评论(5) 推荐(8) 编辑
摘要: 最近在考项目管理的课程,学到了系统工程这一门课,有一些感触和领悟,特在此记录一下。 这些想法和下边叙述的内容都是我个人在编程方面的一些想法,由于不善写作,可能例子会比较少。有兴趣的朋友,可以在评论区留言,我们做进一步的交流。 先说说我得出的结论: 当我们使用系统的思想去处理程序,有很多令我疑惑的问题 阅读全文
posted @ 2017-09-11 18:27 马在路上 阅读(375) 评论(2) 推荐(0) 编辑
摘要: 一个简单的测试 一个简单的api 阅读全文
posted @ 2017-09-09 01:51 马在路上 阅读(493) 评论(0) 推荐(0) 编辑
摘要: consumed这个单词我并不能给出很准确的翻译,在这篇文章中,我把Consumed parameters称为耗用参数,它在OC中有着独特的应用场景。 在 "https://clang.llvm.org/docs/AutomaticReferenceCounting.html id7" 这份文档中, 阅读全文
posted @ 2017-08-21 18:25 马在路上 阅读(523) 评论(0) 推荐(0) 编辑
摘要: Undefined 对未初始化的变量执行typeof操作符会返回 值,而对未声明的变量执行typeof操作符同样也会返回 Boolean 各种类型转换成Boolean的规则 数据类型 | 转成true的值 | 转成false的值 | | Boolean | true | false String | 阅读全文
posted @ 2017-08-10 14:52 马在路上 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 前言 本篇文章将带来YYCache的解读,YYCache支持内存和本地两种方式的数据存储。我们先抛出两个问题: YYCache是如何把数据写入内存之中的?又是如何实现的高效读取? YYCache采用了何种方式把数据写入磁盘? 这次的解读跟之前的源码解读不同,我只会展示重要部分的代码,因为我们学习YY 阅读全文
posted @ 2017-06-27 18:49 马在路上 阅读(6397) 评论(3) 推荐(1) 编辑
摘要: 闭包没有想象的那么简单 闭包的概念在JavaScript中占据了十分重要的地位,有不少开发者分不清匿名函数和闭包的概念,把它们混为一谈,我希望借这篇文章能够让大家对闭包有一个清晰的认识。 大家都知道变量的作用域有两种: 全局变量和局部变量 。在JavaScript中函数内部可以访问外部全局变量,而函 阅读全文
posted @ 2017-06-19 17:19 马在路上 阅读(945) 评论(2) 推荐(0) 编辑
摘要: 演示事件的发送和监听 打印结果: 阅读全文
posted @ 2017-06-16 18:21 马在路上 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 基于 原型继承,动态对象扩展,闭包 ,JavaScript已经成为当今世界上最灵活和富有表现力的编程语言之一。 这里有一个很重要的概念需要特别指出: 在JavaScript中,包括所有的函数,数组,键值对和数据结构都是对象。 举个简单的例子: 上边的代码中,testFunc可以添加customP这个 阅读全文
posted @ 2017-06-08 18:03 马在路上 阅读(1308) 评论(0) 推荐(1) 编辑
摘要: Hoisting is JavaScript's default behavior of moving all declarations to the top of the current scope (to the top of the current script or the current 阅读全文
posted @ 2017-06-01 17:31 马在路上 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 语法小结 swift / Created by M.C on 2017/5/26. / / 弹框 / //var message = "Hello world"; //alert(message); / 变量的命名规则 / / 1.变量不能包含任何空格 2.变量只能包含英文单词,数字,美元符号$和下 阅读全文
posted @ 2017-05-31 11:43 马在路上 阅读(203) 评论(0) 推荐(0) 编辑
摘要: Swift和Javascript的神奇魔法 记录Swift和Javascript如何进行交互 前言 今天在网上看到了一篇介绍Swift和Javascript交互的文章,感觉作者写的很好,因此把作者文章中的主要知识点进行一个总结。 对于我个人而言,在项目中使用Javascript的原因有两个: 某些任 阅读全文
posted @ 2017-05-22 16:07 马在路上 阅读(2250) 评论(0) 推荐(1) 编辑
摘要: 有时候一些奇怪的想法会突然出现在脑海中,那一瞬间仿佛有所领悟 概况 本篇中所分析的所有内容都是以中小型项目为前提的,iOS,Android,Server这3端开发人数不超过20人。由于我本身是做iOS的,因此,会从一个iOS开发者的角度来剖析问题。不一定百分百正确。 设计 产品经理已经设计了app的 阅读全文
posted @ 2017-05-15 17:34 马在路上 阅读(508) 评论(0) 推荐(1) 编辑
摘要: 本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点。这无疑给我们一个Request很复杂的想法。但看了Alamofire中 中的代码,Request被设计的又是如此的简单,这 阅读全文
posted @ 2017-05-15 15:32 马在路上 阅读(3786) 评论(0) 推荐(1) 编辑
摘要: 抛砖引玉,大家有没有想过Object C中,NSDictionary是如何实现根据key快速查值的? 前言 在编程的世界中,比较重要的数据结构有以下3个: struct 结构体 array 数组 link list 链表 我们都知道,数组是存储数据的天然载体,在内存中是一段连续的地址,正是由于这个特 阅读全文
posted @ 2017-05-10 19:15 马在路上 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 本篇带来Alamofire中关于Timeline的一些思路 前言 Timeline翻译后的意思是时间轴,可以表示一个事件从开始到结束的时间节点。时间轴的概念能够应用在很多地方,比如说微博的主页就是一个时间轴。 Alamofire中Timeline的代码很少,非常简单。因此本篇文章中,我们不会把重点放 阅读全文
posted @ 2017-04-05 14:37 马在路上 阅读(1819) 评论(0) 推荐(0) 编辑
摘要: 本篇讲解跟上传数据相关的多表单 前言 我相信应该有不少的开发者不明白多表单是怎么一回事,然而事实上,多表单确实很简单。试想一下,如果有多个不同类型的文件(png/txt/mp3/pdf等等)需要上传给服务器,你打算怎么办?如果你一个一个的上传,那我无话可说,但是如果你想一次性上传,那么就要考虑服务端 阅读全文
posted @ 2017-03-31 16:16 马在路上 阅读(2790) 评论(0) 推荐(1) 编辑
摘要: 本篇主要讲解Alamofire中如何把服务器返回的数据序列化 前言 和前边的文章不同, 在这一篇中,我想从程序的设计层次上解读ResponseSerialization这个文件。更直观的去探讨该功能是如何一步一步实现的。当然,有一个不好的地方,跟数学问题一样,我们事先知道了结果,因此这是一个已知结果 阅读全文
posted @ 2017-03-29 16:05 马在路上 阅读(2140) 评论(0) 推荐(1) 编辑
摘要: 本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下。我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然,这些理解也都是基于我自己的理解。难免具有局限性。 当我们设计完一个Request的时候,我们肯定要处 阅读全文
posted @ 2017-03-27 11:54 马在路上 阅读(4018) 评论(0) 推荐(1) 编辑
摘要: 本篇主要讲解Alamofire中安全验证代码 前言 作为开发人员,理解HTTPS的原理和应用算是一项基本技能。HTTPS目前来说是非常安全的,但仍然有大量的公司还在使用HTTP。其实HTTPS也并不是很贵啊。 在网上可以找到大把的介绍HTTTPS的文章,在阅读 代码前,我们先简单的讲一下HTTPS请 阅读全文
posted @ 2017-03-23 16:34 马在路上 阅读(3106) 评论(0) 推荐(2) 编辑
摘要: Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager) 本篇主要讲解iOS开发中的网络监控 前言 在开发中,有时候我们需要获取这些信息: 手机是否联网 当前网络是WiFi还是蜂窝 那么我总结一下具体的使用场景有哪些?肯定有遗漏: 1. 聊天列表,需要实 阅读全文
posted @ 2017-03-21 11:36 马在路上 阅读(3232) 评论(0) 推荐(1) 编辑
摘要: 本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用 或者 处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很多人都做了二次封装,但事实上,这个二次封装却又异常简单或者是简陋。这篇文章的内容是Task代理,是一篇很独立的文章,大家可以通过这篇文章了 阅读全文
posted @ 2017-03-15 10:29 马在路上 阅读(4008) 评论(0) 推荐(1) 编辑