自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 JNI编程实现(Windows)

上一篇介绍了Linux平台的JNI编程方法,Windows平台的JNI本地调用基本类似,区别就是制作的动态库不同,Linux平台是*.so,Windows平台是*.dll。其中,Windows平台的函数库也分为静态库和动态库,下面介绍一下相关概念:静态库在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库。其特点是可执行文件中包含了库代码的一份完整拷贝;缺点...

2018-11-28 07:22:10 332

原创 JNI编程实现(Linux)

JNI是Java Native Interface的缩写,是Java平台的本地调用,从Java1.1就成为了Java标准的一部分,它允许Java代码和其它语言的代码进行互相调用,只要调用约定支持即可,尤其和C/C++的互相调用。虽然使用Java与本地编译的代码进行交互,会丧失平台的可移植性,但是在特定情况下,这些问题是可以接受的,如:1.使用一些旧的库2.需要操作系统交互3.提高程序的性能...

2018-11-25 17:46:11 310

原创 大型网站架构的演进

大型网站是指访问量和数据量都是海量级别的网站系统,大型网站每天的页面浏览量(PV)、访问量都十分巨大,需要支持高并发;此外,大型网站的数据量也十分巨大,本身的业务也很复杂,需要的技术也最复杂,如:分布式、缓存、读写分离、分库分表、SOA等等。但是,万丈高楼平地起,大型网站也是由简单的单机系统逐渐构建起来的,所为本文就介绍一下大型网站的演进过程,以及演进过程中遇到的问题及应对策略。(本文的技术栈...

2018-05-03 22:44:44 337

原创 FastDFS安装步骤

FastDFS是用c语言编写的一款开源的分布式文件系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2017-09-24 11:46:06 654

原创 iOS离屏渲染之优化分析

在进行iOS的应用开发过程中,有时候会出现卡顿的问题,虽然iOS设备的性能越来越高,但是卡顿的问题还是有可能会出现,而离屏渲染是造成卡顿的原因之一。因此,本文主要分析一下离屏渲染产生的原因及避免的方法,最后介绍一下Xcode自带的分析离屏渲染的工具Instruments的使用。

2017-09-22 17:51:11 1212

原创 Nginx入门案例(Mac版)

Nginx(engine x)是一个轻量级、高性能的Web和反向代理服务器,也是一个IMAP、POP3和SMTP服务器,并且安装十分简单,配置文件非常简洁,启动特别容易,运行十分稳定,几乎可以做到7*24小时不间断运行,在国内大厂(如:BATJ)均得到广泛应用。

2017-08-29 19:04:30 490

原创 Masonry1.0.2 源码解析

在了解Masonry框架之前,有必要先了解一下自动布局的概念。在iOS6之前,UI布局的方式是通过frame属性和Autoresizing来完成的,而在iOS6之后,苹果公司推出了AutoLayout的布局方式,它是一种基于约束性的、描述性的布局系统,尤其是苹果的手机屏幕尺寸变多之后,AutoLayout的应用也越来越广泛。

2017-08-21 08:50:42 446

原创 iOS绘图框架CoreGraphics分析

由于CoreGraphics框架有太多的API,对于初次接触或者对该框架不是十分了解的人,在绘图时,对API的选择会感到有些迷茫,甚至会觉得iOS的图形绘制有些繁琐。因此,本文主要介绍一下iOS的绘图方法和分析一下CoreGraphics框架的绘图原理。

2017-08-08 17:34:13 640

原创 Hadoop-2.8.0 开发环境搭建(Mac)

Hadoop是一个由Apache基金会开发的分布式系统架构,简称HDFS,具有高容错性、可伸缩性等特点,并且可以部署在低配置的硬件上;同时,提供了高吞吐量的数据访问性能,适用于超大数据集的应用程序,以及通过集群拓扑高效快速的处理数据的能力。

2017-07-24 16:12:41 966

原创 iOS之UIWebView无法获取web标题

最近遇到了一个问题,就是在UIWebView的代理方法里,执行document.title的js代码无法获取网页标题

2017-07-21 14:25:41 533

原创 iOS的阴影绘制及性能优化

今天来讲讲iOS开发过程中的阴影绘制及其潜在的绘图性能问题。虽然在开发过程中,我们使用阴影功能的机会不是很多,但是如果用了,有可能引起如卡顿等性能问题,所以,还是有必要来探究一下阴影的绘制过程,及如何提高阴影的绘制性能。

2017-07-21 14:22:50 695

原创 ccache - 让Xcode编译速度飞起来

今天来介绍一个小工具ccache,其可以提高xcode的编译速度。说起缘由,是因为我的苹果电脑配置比较低,而每次开发调试或测试打包都需要编译工程,虽然项目工程代码量不算大,但是编译的时间还是很长,尤其是修改了头文件或者Archive打包时,看着进度条像蜗牛在爬一样,心里都有小动物在奔腾……

2017-07-21 14:15:04 1231

原创 iOS开发中如何创建多个target

在开发iOS应用程序的过程中,经常需要根据不同的需求,切换到不同的项目配置,或者打不同的包(测试环境、开发环境、生产环境等等),如果每次都是手动配置,一则比较麻烦,二则容易配置错,那么有没有更好的方案来解决这个问题呢?答案是:有的。

2017-07-21 12:32:01 379

原创 iOS的消息转发机制详解

iOS开发过程中,有一类的错误会经常遇到,就是找不到所调用的方法,当然这类问题比较好解决,给当前对象或其父类对象添加该方法即可,使得编译器在编译时能正确找到该方法;或者,还有另外的方法,由于Objective-C是一门动态语言,我们也可以在运行期再给类添加该方法,一样可以解决该问题,而这就涉及了类的消息转发机制。

2017-07-21 09:57:03 1069

原创 SDWebImage4.0.0 源码解析

在开发iOS的客户端应用时,经常需要从服务器下载图片,虽然系统提供了下载工具:NSData、NSURLSession等等方法,但是考虑到图片下载过程中,需要考虑的因素比较多,比如:异步下载、图片缓存、错误处理、编码解码等,以及实际需要中根据不同网络加载不同画质的图片等等需求,因此下载操作不是一个简单的下载动作就可以解决。

2017-07-21 09:51:04 449

原创 iOS9中关于 NSURLSession/NSURLConnection HTTP load failed 的解决办法

最近为了新的存管app上线,忙了近一个月,重新过了一段996的日子,今天终于可以喘口气,继续更新博客了。本文记录一下在iOS 9中发送https请求遇到的问题及解决办法,希望通过本文,可以对ATS 的配置有一个更深入的了解。

2017-07-21 09:47:39 2504

原创 如何理解iOS的“对象等同性”

在iOS开发过程中,我们经常需要用到等同性来判断两个对象是否相等,通常我们会使用==来判断,但是这样比较出来的结果可能不是我们期望的;所以,一般我们会使用NSObject协议声明的isEqual方法来判断对象的等同性。

2017-07-21 09:44:52 382

原创 AFNetworking源码简析

AFNetworking基本是苹果开发中网络请求库的标配,它是一个轻量级的网络库,专门针对iOS和OS X的网络应用设计,具有模块化的架构和丰富的APIs接口,功能强大并且使用简单,深受苹果应用开发人员的喜爱。

2017-07-21 09:42:29 424

原创 iOS组件化方案的几种实现

最近研究了一下项目的组件化,把casa、bang、limboy的有关组件化的博客看了一遍,学到了不少东西,对目前业界的组件化方案有了一定的了解。这些高质量的博客大致讨论了组件化的三种方案:url-block、protocol-class(和url-controller类似)、target-action,以及应用这三种组件化方案的时机、步骤、利弊等等。

2017-07-21 09:36:48 5437

原创 神器Vim之命令介绍

前天晚上看`casa`直播`项目的组件化`,不仅了解了如何快速对现有项目进行组件化,以及进一步不断迭代,实现完全组件化的过程;同时,也被`casa`的`vim`技能的熟练程度所震撼。早就听说,`vim`是`unix`系统上文本编辑的神器,亦有许多牛人用`vim`编程可以键字如飞,效率之高令人望尘莫及。也许我们成不了牛人,但是学会`vim`还是很有必要的,毕竟它确实能够提高文本的编辑效率。

2017-07-20 13:51:34 524

原创 MJExtension框架源码分析

iOS开发中经常会用到数据和模型的互相转换,大致有两种转换方式:1.手动写转换的代码,2.利用开源库进行转换。常用的开源库有:JSONModel、Mantle、MJExtension、YYModel等等,本文主要介绍一下MJExtension的底层实现,看一看小码哥如何设计这个轻量级的数模转换框架。

2017-07-20 11:59:43 478

原创 深入了解正则表达式

正则表达式是是计算机科学的一个概念,使用单个字符串来描述,用来检索、替换符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串的操作,比传统的搜索更加快速和灵活。下面进入正则表达式的介绍,及部分简单的示例。

2017-07-20 10:52:47 325

原创 NodeJS服务器篇之简单静态文件合并

NodeJS是一个基于Chrome V8引擎的JavaScript运行环境,其使用了事件驱动、异步I/O机制,具有运行速度快,性能优异等特点,非常适合在分布式设备上运行数据密集型的实时应用。

2017-07-20 10:45:33 1635

原创 HTTP协议格式详解

上一篇介绍了HTTP协议的版本迭代历史,本篇继续深入介绍一下HTTP协议的规范,本文主要介绍它的URI、Request、Response、状态码等等信息,通过了解这些具体的内容,可以更直观的理解HTTP的协议格式,以及工作原理。

2017-07-20 10:41:43 522

原创 HTTP协议发展介绍

`HTTP`协议工作于`C/S`架构上,是万维网服务器传输超文本到本地客户端的一种应用层协议,全称是:`Hyper Text Transfer Protocol`(超文本传输协议),`HTTP`是基于`TCP/IP`通信协议来传递数据的。`HTTP`于`1990`年被提出,由于其简洁性、快速性等特点,被广泛应用,并且经过不断的完善和发展,功能也越来越强大,目前已经发展到`HTTP/2`版本。

2017-07-20 10:14:02 378

原创 升级Cocoapods引起的Mantle库找不到的问题及解决方法

年前升级了Cocoapods库,从0.39升级到了1.2.0-beta版,然后用模拟器和真机测试都是没有问题的,均可以成功编译。今天测试人员要测试包,准备archive打包时,却提示:ld: library not found for -lMantle,瞬间感觉哪儿不对,明明可以运行,真机测试也没问题,怎么打包出现找不到Mantle库的问题,然后就开始分析。

2017-07-20 10:10:43 771

原创 今天来聊聊小程序

历经一年的等待之后,终于在2017年1月9日,小程序揭开了神秘面纱,正式上线。其中,默认在微信里是没有小程序入口的,需要用户先关注运行任何一个小程序,然后才能在微信里面找到小程序的入口,这一点和之前的公众号类似,都是微信去中心化的体现。

2017-07-20 10:07:33 378

原创 前端布局之Flex语法

前端布局一直是CSS的一个重点应用,然而基于盒子模型的传统布局方案,依赖display + position + float 属性,对于某些特殊的布局非常不方便,比如:垂直居中就不容易实现。针对这一情况,在2009年,W3C提出了一种新的方案:Flex布局,可以简便、完整、响应式地实现前端的各种布局,并且已经得到几乎所有浏览器的支持。

2017-07-20 10:02:53 944

原创 iOS之网络请求NSURLSession剖析

2013年的WWDC大会上,苹果推出了NSURLSession,对Foundation URL加载系统进行了彻底的重构,提供了更丰富的API来处理网络请求,如:支持http2.0协议、直接把数据下载到磁盘、同一session发送多个请求、下载是多线程异步处理和提供全局的session并可以统一配置等等,提高了NSURLSession的易用性、灵活性,更加地适合移动开发的需求。

2017-07-20 09:57:31 646

原创 NSURLConnection从入门到放弃

尽管NSURLConnection已经不建议使用了,iOS 7取而代之的是NSURLSession,但是本文依然打算剖析一下,其中一些思想还是值得学习一下,如果您不用NSURLConnection,并且也不打算尝试使用,可以跳过本文。

2017-07-19 17:35:40 342

原创 iOS蓝牙BLE开发

蓝牙是一个标准的无线通讯协议,具有设备成本低、传输距离近和功耗低等特点,被广泛的应用在多种场合。蓝牙一般分为传统蓝牙和BLE两种模式:传统蓝牙可以传输音频等较大数据量,距离近、功耗相对大;而BLE则用来传输节点数据,传输数据量十分小,多数情况处于休眠状态,因而功耗十分低,被广泛的应用于智能穿戴设备。

2017-07-19 17:28:51 803

原创 iOS Notification – 远程通知

本文讲解iOS的远程通知的基本使用,主要包括远程通知的类型,处理远程通知的场景,以及远程通知相关证书的配置等等。

2017-07-19 17:21:42 675

原创 iOS 10 UserNotification框架解析 - 本地通知

iOS 10以前的通知比较杂乱,把本地通知和远程通知分开了,诞生了许多功能类似的API,很容易让初学者犯迷糊。而iOS 10的通知把API做了统一,利用独立的UserNotifications.framework框架来管理通知;并且,还增加了撤销单条通知、更新已展示通知、中途修改通知内容等等,以及在通知中展示图片视频,自定义通知UI等一系列新功能;总之,iOS 10的通知功能十分强大。

2017-07-19 17:15:32 493

原创 ReactiveCocoa源码解读(二)

上一篇解读了ReactiveCocoa的三个重要的类的底层实现,本篇继续

2017-07-19 17:07:31 530

原创 ReactiveCocoa源码解读(一)

本着饮水思源的想法,面对ReactiveCocoa的强大功能,按捺不住心中的好奇心,于是走进其源码之中,一探ReactiveCocoa的魅力所在。虽然,耳闻其强大功能的核心是:信号,但一直不知道这个信号是如何产生、如何传递,又是如何被处理的。曾经以为信号传递是通知,但是真正读了源码后,才发现之前的想法有多不妥,而人家的实现又是多巧妙。

2017-07-19 16:57:28 522

原创 ReactiveCocoa应用篇(二)

上一篇介绍了`ReactiveCocoa`的常用类,已经基本满足项目中的简单应用要求,但是针对复杂的功能还需要其它的类来协同处理。`ReactiveCocoa`提供了强大的流程处理功能来解决复杂的问题,包括事件点击、代理、通知、事件同步和异步等等,可以简化代码体量,实现 **高聚合、低耦合** 的编程思想。

2017-07-19 11:23:55 439

原创 ReactiveCocoa应用篇(一)

作为函数式编程和响应式编程的代表ReactiveCocoa,自一出世便受到广大码农的热爱,结合MVVM编程模式,不仅能够方便的处理各种交互事件、降低模块间的耦合性,还能简化项目结构,降低阅读和维护的成本。

2017-07-19 11:05:00 455

原创 iOS - Block底层解析

Block是iOS开发中一种比较特殊的数据结构,它可以保存一段代码,在合适的地方再调用,具有语法简介、回调方便、编程思路清晰、执行效率高等优点,受到众多猿猿的喜爱。但是Block在使用过程中,如果对Block理解不深刻,容易出现Cycle Retain的问题。

2017-07-19 09:34:55 593

原创 Monad详解

最近几年,函数式编程变得越来越流程,其代码简洁、副作用小、维护成本低等特点,使得许多其它的语言也开始支持函数式编程,比如Java 和 C#等。本文主要介绍一下函数式编程中的一个重要概念:Monad

2017-07-18 10:01:50 5346

原创 SVProgressHUD源码解读(2.0.3)

SVProgressHUD是iOS开发中比较常用的一个三方库,用来在执行耗时操作或者指示用户操作结果的场合,由于使用简单,功能丰富,交互友好,被广泛应用。

2017-07-17 18:00:30 433

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除