自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(158)
  • 资源 (1)
  • 收藏
  • 关注

原创 将iOS默认上下文坐标系改变为Quartz通常坐标系

由于iOS的UIKit默认的坐标系的原点处于视图的左上角,而Quartz的通常坐标系中的原点位于左下角。当我们使用UIKit的坐标操作CGContextRef的时候,绘制出来的图片是上下颠倒的。因此我们在使用Qaurtz处理图形的时候,往往需要将坐标系转为与Quartz相一致的状态:CGContextTranslateCTM(context, 0.0f, contextRefSiz

2017-02-23 14:54:34 439

原创 使用OC进行iOS截屏,同时保证清晰度

一般情况下我们使用如下代码进行截屏:UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];UIGraphicsBeginImageContext(screenWindow.frame.size);[screenWindow.layer renderInContext:UIGraphicsGetCurre

2017-02-23 14:39:30 2033

原创 URL结构

一、概念URL:统一资源定位符 (Uniform Resource Locator, URL)。完整的URL由这几个部分构成:scheme://host:port/path?query#hash:scheme:通信协议,常用的有http、https、ftp、mailto等。host:主机域名或IP地址。port:端口号,可选。省略时使用协议的默认端口,如http默认端口为80。

2017-02-16 15:09:26 2497 1

转载 iOS中frame和Bounds之间的区别

frame  frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,当前视图是看不到的。位置需要有参照物才能确定,数学中我们用坐标系来确定坐标系中的某个点的位置,iOS中有他特有的坐标系,如下图:iOS坐标系  • 在iOS坐标系中以左上角为坐标原点,往右为X正方向,往下是Y正方向  • frame中的位置是以父视图的坐标系为标准来确

2017-02-15 18:13:41 392

原创 iPhone各版本屏幕尺寸

设备宽高对角线逻辑分辨率(point)Scale Factor设备分辨率(pixel)PPI iPhoneWidthHeightDiagonal 3GS2.4 inches (62.1 mm)4.5 inches (115.5 mm)3.5-inch320x480@1x320x480163  4(s)2.31 inches (58.6 mm)4.5 inches (115.2 mm)3.5-inc...

2017-02-15 14:32:46 632

原创 CoreText使用介绍

一、概述  1.CoreText是苹果创建的一个用于文字排版的框架,可以实现文字排版、图文混排等复杂的界面效果。从iOS3.2启用。2.一个开源工具类-OHAttributedLabel,就是使用CoreText框架实现的,能够实现一个Label中有不同的文字大小、文字颜色、字体以及链接等。  二、一般使用步骤1.创建NS

2017-02-10 14:11:11 676

原创 通过AVFoundation框架获取摄像头数据

一、概述从iOS4开始,AVFoundation框架增加了几个类,AVCaptureDevice、AVCaptureSession等,可以获取摄像头的数据,而不会弹出类似于ImagePicker一样的界面,我们可以将数据转为一张张的图片,然后我们可以即时显示在视图上,也可以使用FFMPEG或者其它的视频编码工具,来合成视频。二、步骤第一步

2017-02-10 14:10:32 3136

转载 Markdown入门

Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑,Markdown 的语法十分简单。常用的标记符号也不超过十个,这种相对于更为复杂的HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。一、认识 Markdown

2017-02-10 14:09:04 320

原创 战地体能训练模拟器

一、名称:战地体能训练模拟器二、整体介绍:1.体验者身处一个封闭空间的正中央,空间内部表面全部附着显示器,包含地板(因为地板是平的,可以使用投影的方式实现),经过视角上的设计,体验者就像身处真实环境一样。需要设计3D战地地图,以及游戏属性的模拟敌人。2.基于跑步机原理,加之各种传感器,使跑步机能够自动根据体验者移动速度,移动方向做相应调整。使体验

2017-02-10 14:08:04 761

转载 React Native通信机制详解

React Native是Facebook刚开源的框架,可以使用JavaScript直接开发原生APP。概览React Native用iOS自带的JavaScriptCore作为JS的解析引擎,使用JavaScriptCore提供的一些可以让JS与OC互调的特性,来实现JS和OC之间的交互。React Native通过各种手段,实现了在OC定义一个模块方法,JS可以

2017-02-10 14:07:11 493

转载 PBOC3.0中使用的国密SM2算法

一、知识准备PBOC3.0规范就是《中国金融集成电路(IC)卡规范》3.0版本。 SM2是国密局推出的一种他们自己说具有自主知识产权的非对称商用密码算法。本身是基于ECC椭圆曲线算法的,所以要讲SM2, 先要弄懂ECC。 完全理解ECC算法需要一定的数学功底,因为涉及到射影平面坐标系,齐次方程求解, 曲线的运算规则等概念。 本

2017-02-10 14:05:39 900

转载 分组密码的工作模式

一、理论基础1.概述密码学中,块密码的工作模式允许使用同一个块密码密钥对多于一块的数据进行加密,并保证其安全性。块密码自身只能加密长度等于密码块长度的单块数据,若要加密变长数据,则数据必须先被划分为一些单独的密码块。通常而言,最后一块数据也需要使用合适填充方式将数据扩展到符合密码块大小的长度。一种工作模式描述了加密每一数据块的过程,并常常使用基于一个通常称为

2017-02-10 14:04:36 3089

原创 MVPVM模式介绍

一、概述MVPVM即:Model-View-Presenter-ViewModel。此模式是MVVM和MVP模式的结合体。但是交互模式发生了比较大的变化。MVVM参考本博客文章:iOS-MVVM-模式介绍MVP参考本博客文章:MVP模式介绍 二、原理:Presenter同时持有View、

2017-02-10 14:03:12 1471

转载 查看函数库.a函数符号信息

一、概述nm命令可以列出一个函数库文件中的符号表。它对于静态的函数库和共享的函数库都起作用。对于一个给定的函数库,nm命令可以列出函数库中定义的所有符号,包括每个符号的值和类型。还可以给出在原程序中这个函数(符号)是在多少行定义的,不过这必须要求编译该函数库的时候加“-l”选项。 关于符号的类型,这里我们再多讨论一下。符号的类型是以一个字母的形式显示的,小写字母表示这个

2017-02-10 14:01:25 11450

原创 利用.dSYM和.app文件准确定位Crash位置

当发布到iPhone上的应用程序Crash之后,iPhone会自动生成一个Crash Log(*.crash),这个文件包含了一些有用的调试信息,但对于堆栈,它只记录的函数地址,而无法显示函数名。函数名保存在一个叫dSYM的二进制文件中,即一个调试符号表文件。首先,确保在release(Ad Hoc或者App Store)一个版本时,保存了对应的xxx.app和xxx.

2017-02-10 13:59:34 543

原创 应用内购买(IAP)各类型在服务端的验证规则

一、非消耗品(比如单本杂志购买,苹果服务器支持恢复)1.先验证服务器有没有购买记录,如果有,则不处理,此次操作成功 ;2.如果服务器没有购买记录,则到苹果服务器验证(1)首先到正式验证地址验证收据,如果返回状态非0,则再向测试验证地址验证收据。(2)如果最后返回的状态为0,表示是有效购买,则插入,增加权限,此次操作成功。(3)否则失败。二

2017-02-10 13:57:46 3516

原创 常用正则表达式

匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:\n\s*\r评注:可以用来删除空白行匹配HTM

2017-02-10 13:32:04 388

原创 iOS应用图片命名规则

一、界面图片命名规则:MyImage.png                      一般图片命名MyImage@2x.png              高清图片命名MyImage~iphone.png         iPhone 和 iPod touch版一般图片命名MyImage@2x~iphone.png  iPhone 和 iPod touch版高清图片命名MyImage~ipad.p

2017-02-10 13:26:47 1190

转载 Sqlite3中replace语句用法详解

在本例中使用如下数据库表:                                             (图 1)该表的表名为student, 存储学生信息。 所有字段的数据类型都是TEXT 。 其中id和name作为复合主键。 email字段加上了唯一约束。建表语句如下: CREATE TABLE IF NOT EXISTS student ( "id" TEXT, "na

2017-02-10 13:26:44 1550

原创 RSA私钥文件(PEM-PKCS#8)解析

***此文仅针对没有执行加密的PKCS#8私钥文件***一、实例解析PKCS#8格式使用的是ASN.1结构,首先我们对一个没有执行加密的PKCS#8格式私钥文件进行一下解析,方便我们下面分析其结构。命令:openssl asn1parse -i -in privatekey.pem结果如下:[html] view plaincopy0:d=0  hl=4 l=1213 cons: SEQUENCE

2017-02-10 13:26:41 11221

转载 非对称加解密交互故事

1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。  2.鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。  3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果  4.鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。  5.鲍勃给苏珊回信,决定采用 “数字签名”。他写完后

2017-02-10 13:26:38 372

原创 Xcode中StaticLibrary和Framework的共同点和区别

一、共同点:两者其实都是静态库。二、区别1.承载的内容范畴:(1)StaticLibrary的产出物只是一个.a文件,为二进制执行文件。分享给别人的时候,头文件、静态资源文件需要另外提供。(2)Framework为一站式分享方案,其实是一个文件夹,其中包含代码签名、头文件、二进制执行文件、静态资源文件等。2.头文件搜索路径的区别:StaticLibrary需要设置头文件搜索路径,Framework

2017-02-10 13:26:35 4904

转载 RSA私钥文件(PEM-PKCS#1)解析

在PKCS#1 RSA算法标准中定义RSA私钥语法RSAPrivateKey ::= SEQUENCE { version Version, //版本 modulus INTEGER, // RSA合数模 n publicExponent INTEGER, //RSA公开幂 e privateExponent INTEGER, //RSA私有幂 d prime1 INTEGER, //n的素数因子

2017-02-10 13:26:33 8772 2

转载 RSA公钥文件(PEM)解析

公钥语法为: RSAPublicKey ::= SEQUENCE { modulus INTEGER, //RSA合数模n publicExponent INTEGER //RSA公开幂e }说明:1.此语法中的modulus和publicExponent,提取自对应私钥中的同名域值。2.PKCS1和PKCS8的公钥文件是一样的,没有区别。本文适用范围:已知公钥结构各域值,组装RSA公钥文件,即P

2017-02-10 13:26:29 6578

原创 HTTP断点续传

一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。二、Range  用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:bytes=[first byte p

2017-02-10 13:26:12 630

原创 获取本地沙盒文件的MIMEType

通过发送一个基于本地文件的URL请求,从响应对象中获取MIMEType值。代码如下:NSString *path = [[NSBundle mainBundle] pathForResource:@"测试文件"                                                 ofType:@"pdf"];    //创建本地文件URLNSURL *url =

2017-02-10 13:26:09 269

转载 Podfile语法

一、PodfilePodfile文件详细描述了一个或多个工程中targets的依赖关系。Podfile会默认创建一个隐式的目标链接到工程中用户的第一个target,名称为“default”。一个Podfile可以非常简单:pod 'AFNetworking', '~> 1.0'也可以配置的复杂一点,如下:source 'https://github.com/CocoaPods/Specs.

2017-02-10 13:26:06 1173

转载 OC语法简化

很多刚从其他编程语言转到Objective-C的同学看到长长的函数名会感到崩溃,这种语法让消息的传递像一个英语句子,大大增强了可读性。比如你想初始化一个浮点数,需要这么写:NSNumber value = [NSNumber numberWithFloat:123.45f];从这句中我们能够明确的知道代码的含义,但是,是否连简单的赋值语句也要这么处理呢?苹果在本次新特性中采用了折中的处理方式,针

2017-02-10 13:26:03 336

转载 深入浅出Fetch API

多年来,XMLHttpRequest一直是web开发者的亲密助手。无论是直接的,还是间接的, 当我们谈及Ajax技术的时候,通常意思就是基于XMLHttpRequest的Ajax,它是一种能够有效改进页面通信的技术。 Ajax的兴起是由于Google的Gmail所带动的,随后被广泛的应用到众多的Web产品(应用)中,可以认为, 开发者已经默认将XMLHttpRequest作为了当前Web应用与远程

2017-02-10 13:26:00 739

转载 React 入门实例教程

现在最热门的前端框架,毫无疑问是 React 。上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑。React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了

2017-02-10 13:25:57 216

转载 关于iOS7里的JavaScriptCore framework

在iOS7沸沸扬扬的扁平化论战之外,WWDC 2013还是公布了很多让开发者小兴奋的点,其中包括多任务加强支持background fetch和transfer,近场通信的AirDrop和p2p,以及游戏控制器和游戏中心的加强;当然还包括了让web开发同学很兴奋JavaScriptCore了。下面henry/webryan来详细介绍下整合JavaScriptCore到原生应用的情况。1、什么是Ja

2017-02-10 13:25:53 372

转载 SQLite3中的数据类型

一、概述 大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的、刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列。Sqlite使用一个更一般的动态类型系统,sqlite中,值的数据类型跟值本身相关,而不是与它的容器相关。Sqlite的动态类型系统和其他数据库的更为一般的静态类型系统相兼容,但同时,sqlite中的动态类型允许

2017-02-10 13:25:50 243

原创 强制消除Xcode警告的方法

比如我已经知道某行会报警告了,但是代码有这么写的道理,实在不想看到警告,可以用下面这个宏把这几行代码包住,就可以消除警告了。 #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunused-variable"  //这里是会报警告的代码  #pragma clang diagnostic pop 这个-Wunused

2017-02-10 13:25:47 1398

转载 VIPER模式介绍

一、概述 VIPER模式的理念不属于MV(X)系类,其理念来自于建筑设计。 建筑领域流行这样一句话,“我们虽然在营造建筑,但建筑也会重新塑造我们”。正如所有开发者最终领悟到的,这句话同样适用于构建软件。 编写代码中至关重要的是,需要使每一部分容易被识别,赋有一个特定而明显的目的,并与其他部分在逻辑关系中完美契合。这就是我们所说的软件架构。好的架构不仅让一个产品成功投入使用,还可以让产品具有可维护性

2017-02-10 13:25:44 3633

转载 MVP模式介绍

一、概述 MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。二、MVC和MVP的区别 作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Pres

2017-02-10 13:25:41 456

转载 Base64编码解码原理

一. Base64编码由来  为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就解决

2017-02-10 13:25:38 543

转载 大数运算库简介

一、技术背景在网络安全技术领域中各种加密解密算法的软件实现上始终有一个共同的问题就是如何在普通的 PC 机上实现大数的运算。我们日常生活中所应用的 PC 机内部字长多是32 位或 64 位,但是在各种加密解密的算法中为了达到一定的安全强度,都是要求在128 位、 512 位或者是 1024 位这样的字长下进行加减乘除模逆等各种数学运算,我们称为大数运算。在这样的前提下,如何在 PC 机上快速高效的

2017-02-10 13:25:36 2626

转载 OpenSSL库概述

一、背景技术SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证

2017-02-10 13:25:33 1066

转载 AES加密算法原理

一、摘要    AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范,在2002年5月26日建立。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。   AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128

2017-02-10 13:25:30 7180

转载 DES加密算法原理

一、DES算法理论      本世纪五十年代以来,密码学研究领域出现了最具代表性的两大成就。其中之一就是1971年美国学者塔奇曼 (Tuchman)和麦耶(Meyer)根据信息论创始人香农(Shannon)提出的「多重加密有效性理论」创立的,后于1977年由美国国家标准局颁布的数据加密标准。 DES密码实际上是Lucifer密码的进一步发展。它是一种採用传统加密方法的区组密码。它的算法是对称的,既

2017-02-10 13:25:27 1335

工作量证明链解决拜占庭将军问题之模拟程序

此程序用来模拟工作量证明链如何解决拜占庭将军问题,使用Objective-C语言,需要使用Xcode开发工具运行并执行演示,演示结果打印在Xcode控制台。 压缩包解压密码:liangjingcheng

2018-10-11

空空如也

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

TA关注的人

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