- 博客(49)
- 收藏
- 关注
原创 JNI编程实现(Windows)
上一篇介绍了Linux平台的JNI编程方法,Windows平台的JNI本地调用基本类似,区别就是制作的动态库不同,Linux平台是*.so,Windows平台是*.dll。其中,Windows平台的函数库也分为静态库和动态库,下面介绍一下相关概念:静态库在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库。其特点是可执行文件中包含了库代码的一份完整拷贝;缺点...
2018-11-28 07:22:10
402
原创 JNI编程实现(Linux)
JNI是Java Native Interface的缩写,是Java平台的本地调用,从Java1.1就成为了Java标准的一部分,它允许Java代码和其它语言的代码进行互相调用,只要调用约定支持即可,尤其和C/C++的互相调用。虽然使用Java与本地编译的代码进行交互,会丧失平台的可移植性,但是在特定情况下,这些问题是可以接受的,如:1.使用一些旧的库2.需要操作系统交互3.提高程序的性能...
2018-11-25 17:46:11
378
原创 大型网站架构的演进
大型网站是指访问量和数据量都是海量级别的网站系统,大型网站每天的页面浏览量(PV)、访问量都十分巨大,需要支持高并发;此外,大型网站的数据量也十分巨大,本身的业务也很复杂,需要的技术也最复杂,如:分布式、缓存、读写分离、分库分表、SOA等等。但是,万丈高楼平地起,大型网站也是由简单的单机系统逐渐构建起来的,所为本文就介绍一下大型网站的演进过程,以及演进过程中遇到的问题及应对策略。(本文的技术栈...
2018-05-03 22:44:44
399
原创 FastDFS安装步骤
FastDFS是用c语言编写的一款开源的分布式文件系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
2017-09-24 11:46:06
703
原创 iOS离屏渲染之优化分析
在进行iOS的应用开发过程中,有时候会出现卡顿的问题,虽然iOS设备的性能越来越高,但是卡顿的问题还是有可能会出现,而离屏渲染是造成卡顿的原因之一。因此,本文主要分析一下离屏渲染产生的原因及避免的方法,最后介绍一下Xcode自带的分析离屏渲染的工具Instruments的使用。
2017-09-22 17:51:11
1296
原创 Nginx入门案例(Mac版)
Nginx(engine x)是一个轻量级、高性能的Web和反向代理服务器,也是一个IMAP、POP3和SMTP服务器,并且安装十分简单,配置文件非常简洁,启动特别容易,运行十分稳定,几乎可以做到7*24小时不间断运行,在国内大厂(如:BATJ)均得到广泛应用。
2017-08-29 19:04:30
526
原创 Masonry1.0.2 源码解析
在了解Masonry框架之前,有必要先了解一下自动布局的概念。在iOS6之前,UI布局的方式是通过frame属性和Autoresizing来完成的,而在iOS6之后,苹果公司推出了AutoLayout的布局方式,它是一种基于约束性的、描述性的布局系统,尤其是苹果的手机屏幕尺寸变多之后,AutoLayout的应用也越来越广泛。
2017-08-21 08:50:42
500
原创 iOS绘图框架CoreGraphics分析
由于CoreGraphics框架有太多的API,对于初次接触或者对该框架不是十分了解的人,在绘图时,对API的选择会感到有些迷茫,甚至会觉得iOS的图形绘制有些繁琐。因此,本文主要介绍一下iOS的绘图方法和分析一下CoreGraphics框架的绘图原理。
2017-08-08 17:34:13
712
原创 Hadoop-2.8.0 开发环境搭建(Mac)
Hadoop是一个由Apache基金会开发的分布式系统架构,简称HDFS,具有高容错性、可伸缩性等特点,并且可以部署在低配置的硬件上;同时,提供了高吞吐量的数据访问性能,适用于超大数据集的应用程序,以及通过集群拓扑高效快速的处理数据的能力。
2017-07-24 16:12:41
1031
原创 iOS之UIWebView无法获取web标题
最近遇到了一个问题,就是在UIWebView的代理方法里,执行document.title的js代码无法获取网页标题
2017-07-21 14:25:41
587
原创 iOS的阴影绘制及性能优化
今天来讲讲iOS开发过程中的阴影绘制及其潜在的绘图性能问题。虽然在开发过程中,我们使用阴影功能的机会不是很多,但是如果用了,有可能引起如卡顿等性能问题,所以,还是有必要来探究一下阴影的绘制过程,及如何提高阴影的绘制性能。
2017-07-21 14:22:50
775
原创 ccache - 让Xcode编译速度飞起来
今天来介绍一个小工具ccache,其可以提高xcode的编译速度。说起缘由,是因为我的苹果电脑配置比较低,而每次开发调试或测试打包都需要编译工程,虽然项目工程代码量不算大,但是编译的时间还是很长,尤其是修改了头文件或者Archive打包时,看着进度条像蜗牛在爬一样,心里都有小动物在奔腾……
2017-07-21 14:15:04
1323
原创 iOS开发中如何创建多个target
在开发iOS应用程序的过程中,经常需要根据不同的需求,切换到不同的项目配置,或者打不同的包(测试环境、开发环境、生产环境等等),如果每次都是手动配置,一则比较麻烦,二则容易配置错,那么有没有更好的方案来解决这个问题呢?答案是:有的。
2017-07-21 12:32:01
438
原创 iOS的消息转发机制详解
iOS开发过程中,有一类的错误会经常遇到,就是找不到所调用的方法,当然这类问题比较好解决,给当前对象或其父类对象添加该方法即可,使得编译器在编译时能正确找到该方法;或者,还有另外的方法,由于Objective-C是一门动态语言,我们也可以在运行期再给类添加该方法,一样可以解决该问题,而这就涉及了类的消息转发机制。
2017-07-21 09:57:03
1137
原创 SDWebImage4.0.0 源码解析
在开发iOS的客户端应用时,经常需要从服务器下载图片,虽然系统提供了下载工具:NSData、NSURLSession等等方法,但是考虑到图片下载过程中,需要考虑的因素比较多,比如:异步下载、图片缓存、错误处理、编码解码等,以及实际需要中根据不同网络加载不同画质的图片等等需求,因此下载操作不是一个简单的下载动作就可以解决。
2017-07-21 09:51:04
516
原创 iOS9中关于 NSURLSession/NSURLConnection HTTP load failed 的解决办法
最近为了新的存管app上线,忙了近一个月,重新过了一段996的日子,今天终于可以喘口气,继续更新博客了。本文记录一下在iOS 9中发送https请求遇到的问题及解决办法,希望通过本文,可以对ATS 的配置有一个更深入的了解。
2017-07-21 09:47:39
2657
原创 如何理解iOS的“对象等同性”
在iOS开发过程中,我们经常需要用到等同性来判断两个对象是否相等,通常我们会使用==来判断,但是这样比较出来的结果可能不是我们期望的;所以,一般我们会使用NSObject协议声明的isEqual方法来判断对象的等同性。
2017-07-21 09:44:52
412
原创 AFNetworking源码简析
AFNetworking基本是苹果开发中网络请求库的标配,它是一个轻量级的网络库,专门针对iOS和OS X的网络应用设计,具有模块化的架构和丰富的APIs接口,功能强大并且使用简单,深受苹果应用开发人员的喜爱。
2017-07-21 09:42:29
477
原创 iOS组件化方案的几种实现
最近研究了一下项目的组件化,把casa、bang、limboy的有关组件化的博客看了一遍,学到了不少东西,对目前业界的组件化方案有了一定的了解。这些高质量的博客大致讨论了组件化的三种方案:url-block、protocol-class(和url-controller类似)、target-action,以及应用这三种组件化方案的时机、步骤、利弊等等。
2017-07-21 09:36:48
5631
原创 神器Vim之命令介绍
前天晚上看`casa`直播`项目的组件化`,不仅了解了如何快速对现有项目进行组件化,以及进一步不断迭代,实现完全组件化的过程;同时,也被`casa`的`vim`技能的熟练程度所震撼。早就听说,`vim`是`unix`系统上文本编辑的神器,亦有许多牛人用`vim`编程可以键字如飞,效率之高令人望尘莫及。也许我们成不了牛人,但是学会`vim`还是很有必要的,毕竟它确实能够提高文本的编辑效率。
2017-07-20 13:51:34
612
原创 MJExtension框架源码分析
iOS开发中经常会用到数据和模型的互相转换,大致有两种转换方式:1.手动写转换的代码,2.利用开源库进行转换。常用的开源库有:JSONModel、Mantle、MJExtension、YYModel等等,本文主要介绍一下MJExtension的底层实现,看一看小码哥如何设计这个轻量级的数模转换框架。
2017-07-20 11:59:43
548
原创 深入了解正则表达式
正则表达式是是计算机科学的一个概念,使用单个字符串来描述,用来检索、替换符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串的操作,比传统的搜索更加快速和灵活。下面进入正则表达式的介绍,及部分简单的示例。
2017-07-20 10:52:47
361
原创 NodeJS服务器篇之简单静态文件合并
NodeJS是一个基于Chrome V8引擎的JavaScript运行环境,其使用了事件驱动、异步I/O机制,具有运行速度快,性能优异等特点,非常适合在分布式设备上运行数据密集型的实时应用。
2017-07-20 10:45:33
1700
原创 HTTP协议格式详解
上一篇介绍了HTTP协议的版本迭代历史,本篇继续深入介绍一下HTTP协议的规范,本文主要介绍它的URI、Request、Response、状态码等等信息,通过了解这些具体的内容,可以更直观的理解HTTP的协议格式,以及工作原理。
2017-07-20 10:41:43
570
原创 HTTP协议发展介绍
`HTTP`协议工作于`C/S`架构上,是万维网服务器传输超文本到本地客户端的一种应用层协议,全称是:`Hyper Text Transfer Protocol`(超文本传输协议),`HTTP`是基于`TCP/IP`通信协议来传递数据的。`HTTP`于`1990`年被提出,由于其简洁性、快速性等特点,被广泛应用,并且经过不断的完善和发展,功能也越来越强大,目前已经发展到`HTTP/2`版本。
2017-07-20 10:14:02
422
原创 升级Cocoapods引起的Mantle库找不到的问题及解决方法
年前升级了Cocoapods库,从0.39升级到了1.2.0-beta版,然后用模拟器和真机测试都是没有问题的,均可以成功编译。今天测试人员要测试包,准备archive打包时,却提示:ld: library not found for -lMantle,瞬间感觉哪儿不对,明明可以运行,真机测试也没问题,怎么打包出现找不到Mantle库的问题,然后就开始分析。
2017-07-20 10:10:43
837
原创 今天来聊聊小程序
历经一年的等待之后,终于在2017年1月9日,小程序揭开了神秘面纱,正式上线。其中,默认在微信里是没有小程序入口的,需要用户先关注运行任何一个小程序,然后才能在微信里面找到小程序的入口,这一点和之前的公众号类似,都是微信去中心化的体现。
2017-07-20 10:07:33
435
原创 前端布局之Flex语法
前端布局一直是CSS的一个重点应用,然而基于盒子模型的传统布局方案,依赖display + position + float 属性,对于某些特殊的布局非常不方便,比如:垂直居中就不容易实现。针对这一情况,在2009年,W3C提出了一种新的方案:Flex布局,可以简便、完整、响应式地实现前端的各种布局,并且已经得到几乎所有浏览器的支持。
2017-07-20 10:02:53
1028
原创 iOS之网络请求NSURLSession剖析
2013年的WWDC大会上,苹果推出了NSURLSession,对Foundation URL加载系统进行了彻底的重构,提供了更丰富的API来处理网络请求,如:支持http2.0协议、直接把数据下载到磁盘、同一session发送多个请求、下载是多线程异步处理和提供全局的session并可以统一配置等等,提高了NSURLSession的易用性、灵活性,更加地适合移动开发的需求。
2017-07-20 09:57:31
721
原创 NSURLConnection从入门到放弃
尽管NSURLConnection已经不建议使用了,iOS 7取而代之的是NSURLSession,但是本文依然打算剖析一下,其中一些思想还是值得学习一下,如果您不用NSURLConnection,并且也不打算尝试使用,可以跳过本文。
2017-07-19 17:35:40
391
原创 iOS蓝牙BLE开发
蓝牙是一个标准的无线通讯协议,具有设备成本低、传输距离近和功耗低等特点,被广泛的应用在多种场合。蓝牙一般分为传统蓝牙和BLE两种模式:传统蓝牙可以传输音频等较大数据量,距离近、功耗相对大;而BLE则用来传输节点数据,传输数据量十分小,多数情况处于休眠状态,因而功耗十分低,被广泛的应用于智能穿戴设备。
2017-07-19 17:28:51
881
原创 iOS Notification – 远程通知
本文讲解iOS的远程通知的基本使用,主要包括远程通知的类型,处理远程通知的场景,以及远程通知相关证书的配置等等。
2017-07-19 17:21:42
748
原创 iOS 10 UserNotification框架解析 - 本地通知
iOS 10以前的通知比较杂乱,把本地通知和远程通知分开了,诞生了许多功能类似的API,很容易让初学者犯迷糊。而iOS 10的通知把API做了统一,利用独立的UserNotifications.framework框架来管理通知;并且,还增加了撤销单条通知、更新已展示通知、中途修改通知内容等等,以及在通知中展示图片视频,自定义通知UI等一系列新功能;总之,iOS 10的通知功能十分强大。
2017-07-19 17:15:32
571
原创 ReactiveCocoa源码解读(一)
本着饮水思源的想法,面对ReactiveCocoa的强大功能,按捺不住心中的好奇心,于是走进其源码之中,一探ReactiveCocoa的魅力所在。虽然,耳闻其强大功能的核心是:信号,但一直不知道这个信号是如何产生、如何传递,又是如何被处理的。曾经以为信号传递是通知,但是真正读了源码后,才发现之前的想法有多不妥,而人家的实现又是多巧妙。
2017-07-19 16:57:28
564
原创 ReactiveCocoa应用篇(二)
上一篇介绍了`ReactiveCocoa`的常用类,已经基本满足项目中的简单应用要求,但是针对复杂的功能还需要其它的类来协同处理。`ReactiveCocoa`提供了强大的流程处理功能来解决复杂的问题,包括事件点击、代理、通知、事件同步和异步等等,可以简化代码体量,实现 **高聚合、低耦合** 的编程思想。
2017-07-19 11:23:55
482
原创 ReactiveCocoa应用篇(一)
作为函数式编程和响应式编程的代表ReactiveCocoa,自一出世便受到广大码农的热爱,结合MVVM编程模式,不仅能够方便的处理各种交互事件、降低模块间的耦合性,还能简化项目结构,降低阅读和维护的成本。
2017-07-19 11:05:00
500
原创 iOS - Block底层解析
Block是iOS开发中一种比较特殊的数据结构,它可以保存一段代码,在合适的地方再调用,具有语法简介、回调方便、编程思路清晰、执行效率高等优点,受到众多猿猿的喜爱。但是Block在使用过程中,如果对Block理解不深刻,容易出现Cycle Retain的问题。
2017-07-19 09:34:55
658
原创 Monad详解
最近几年,函数式编程变得越来越流程,其代码简洁、副作用小、维护成本低等特点,使得许多其它的语言也开始支持函数式编程,比如Java 和 C#等。本文主要介绍一下函数式编程中的一个重要概念:Monad
2017-07-18 10:01:50
5523
原创 SVProgressHUD源码解读(2.0.3)
SVProgressHUD是iOS开发中比较常用的一个三方库,用来在执行耗时操作或者指示用户操作结果的场合,由于使用简单,功能丰富,交互友好,被广泛应用。
2017-07-17 18:00:30
500
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人