自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 七、区块链如何运用merkle tree验证交易真实性

转载自:https://www.tangshuang.net/4117.html本文假设你已经知道区块链中merkle tree的原理,现在搞明白具体怎么来实现交易真实性验证。Merkle Tree这个小节简述一下merkle的原理。简单说,merkle tree就是一个hash二叉树,父节点是两个子节点的double sha256的结果,叶子节点就是交易的content的double...

2018-10-22 11:38:47 2152

转载 六、区块链主流共识算法浅析

转自:http://www.cocoachina.com/cms/wap.php?action=article&id=22240。一、概述:1.工作量证明(Proof of Work):  通过所有节点的工作量竞争来达成一致。竞争的是运算力。2.权益证明(Proof of Stake):  通过节点拥有代币数量的多少和时间,确定下一区块的创造者。竞争的是拥有代币的数量和时间...

2018-10-11 18:35:29 592

原创 五、工作量证明链解决拜占庭将军问题之模拟程序(Objective-C)

一、概述:此程序用来模拟工作量证明链如何解决拜占庭将军问题,使用Objective-C语言,需要使用Xcode开发工具运行并执行演示,演示结果打印在Xcode控制台。二、示例程序:程序下载地址:工作量证明链解决拜占庭将军问题之模拟程序压缩包解压密码:liangjingcheng三、相关内容:区块链的起源-拜占庭将军问题:https://blog.csdn.net/jingc...

2018-10-11 11:03:05 718

原创 CocoaPods通过网络代理执行资源更新

一、使用网络代理首先在电脑设置网络代理配置。二、设置git的http、https代理1.查看git是否已经设置网络代理首先可以先查本地的git配置有没有配置http/https代理:git config --global -e如果没有看到 [http]proxy和 [https]proxy就代表没有设置http/https代理。2.给git 添加代理配置 :  https:...

2018-10-10 13:01:02 2143

原创 二、工作量证明链-区块链技术的雏形

        用算法解决难题——区块链技术的雏形        构造出一个完美的、可以解决问题的“拜占庭容错系统”是一个不小的挑战。而且构造出来以后,其是否真的有效,能否经得起时间的考验与各方的质疑,这些都关乎着这个系统未来的命运与其创造群体的声誉。        2008年冬季,美国MIT(麻省理工学院)的密码学及密码学政策战略的邮件讨论组中,一位澳大利亚的企业家James A Don...

2018-09-25 09:53:46 417

原创 Git仓库迁移,包括所有的分支、标签、日志

仅三行命令即可完成:git clone --bare http://域名/分组/仓库名称.gitcd 仓库名称.gitgit push --mirror http://新域名/新分组/新仓库名称.git

2018-09-18 16:13:32 8499 4

转载 让WKWebView支持NSURLProtocol

NSURLProtocol能够拦截UIWebView内所有的请求,但是WKWebView 中的请求却完全不遵从这一规则,只是象征性调用canInitWithRequest方法,之后的整个请求流程似乎就与 NSURLProtocol 完全无关了。使我一度认为WKWebView请求不遵守NSURLProtocol协议。其实是能够做到的,因为WKWebView没有开放相关的API,所以我们需要使用私...

2018-09-13 18:49:58 1310

转载 iOS中WebKit框架应用与解析

一、引言        在iOS8之前,在应用中嵌入网页通常需要使用UIWebView这样一个类,这个类通过URL或者HTML文件来加载网页视图,功能十分有限,只能作为辅助嵌入原生应用程序中。虽然UIWebView也可以做原生与JavaScript交互的相关处理,然而也有很大的局限性,JavaScript要调用原生方法通常需要约定好协议之后通过Request来传递。WebKit框架中添加了一些...

2018-08-15 11:47:14 657

原创 Method-Swizzling实战-实现iOS原生网络请求性能采集

一、方法交换实现步骤(实例方法和类方法处理逻辑类似)1.检查原类(要被替换方法的类)的原实例方法是否存在,如果不存在,则不交换;2.检查新类(最终被使用的方法所在的类)的新实例方法是否存在,如果不存在,则不交换;3.检索原实例方法所在的真实父类,防止循环调用;4.如果原类和新类不是一个类,则需要将新类的新实例方法添加到原类;(1)如果添加失败,说明该方法已经存在,则不需要再做交换;(2)如果添加成...

2018-05-31 13:49:29 483

转载 深入理解Hadoop集群和网络

云计算和Hadoop中网络是讨论得相对比较少的领域。本文原文由Dell企业技术专家Brad Hedlund撰写,他曾在思科工作多年,专长是数据中心、云网络等。文章素材基于作者自己的研究、实验和Cloudera的培训资料。本文将着重于讨论Hadoop集群的体系结构和方法,及它如何与网络和服务器基础设施的关系。最开始我们先学习一下Hadoop集群运作的基础原理。Hadoop里的

2017-09-19 14:31:24 1582

转载 kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集

2017-09-19 11:26:39 530

转载 Git的思想和基本工作原理

转载自:http://www.nowamagic.net/academy/detail/48160210#在开始学习 Git 的时候,请不要尝试把各种概念和其他版本控制系统(诸如 Subversion 和 Perforce 等)相比拟,否则容易混淆每个操作的实际意义。Git 在保存和处理各种信息的时候,虽然操作起来的命令形式非常相近,但它与其他版本控制系统的做法颇为不同。理解这些差异将

2017-07-06 15:15:13 533

转载 获取iOS任意线程调用堆栈(五)完整实现:BSBacktraceLogger

转载自:https://toutiao.io/posts/aveig6/previewBSBacktraceLogger 是一个轻量级的框架,可以获取任意线程的调用栈,开源在我的 GitHub,建议下载下来结合本文阅读。我们知道 NSThread 有一个类方法 callstackSymbols 可以获取调用栈,但是它输出的是当前线程的调用栈。在利用 Runloop 检测

2017-05-31 16:29:18 8336

转载 获取iOS任意线程调用堆栈(四)符号化实战

1. 相关API和数据结构由于我们在上面回溯线程调用栈拿到的是一组地址,所以这里进行符号化的输入输出应该分别是地址和符号,接口设计类似如下:- (NSString *)symbolicateAddress:(uintptr_t)addr;不过在实际操作中,我们需要依赖于dyld相关方法和数据结构:/* * Structure filled in by dladdr()

2017-05-31 12:27:22 1781

转载 获取iOS任意线程调用堆栈(三)符号化理论:从Mach-o结构分析类名方法名

下面来讲讲如何从Mach-o文件中分析出类名和方法名,也让我们了解下class-dump的原理。Mach-o结构有两个节:__objc_classname 和 __objc_methname 其中就是类名和方法名。 其中__objc_classname的偏移为:ox7961    __objc_methname的偏移为0x6F9E  这里分析的arch文件,不是fat bina

2017-05-31 12:25:40 1395 1

转载 获取iOS任意线程调用堆栈(二)符号化理论:Mach-o文件结构

我们知道Windows下的文件都是PE文件,同样在OS X和iOS中可执行文件是Mach-o格式的。所以我们如果要进行逆向分析,首先要熟悉Mach-o文件结构。Mach-o包含三个基本区域:头部(header structure)。加载命令(load command)。段(segment)。可以拥有多个段(segment),每个段可以拥有零个或多个区域(sectio

2017-05-31 12:24:24 763

转载 获取iOS任意线程调用堆栈(一)获取任意线程的调用栈地址列表

转载自:http://blog.csdn.net/jasonblog/article/details/49909163如果要获取当前线程的调用栈,可以直接使用现有API:[NSThread callStackSymbols]。但是并没有相关API支持获取任意线程的调用栈,所以只能自己编码实现。1. 基础结构一个线程的调用栈是什么样的呢?我的理解是应该包含当前线程的执行地址,并且从这个地址可以一级一...

2017-05-31 12:22:24 4863

原创 统计iOS项目代码行数

打开终端,输入如下命令:find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" | xargs wc -l 此命令会迭代子目录,会统计每个源代码文件行数及总数,统计的行数包含空行。如果不希望统计空行,则使用如下命令:find . -name "*.m" -or -name "*.h" -

2017-05-15 16:53:54 432

原创 iOS崩溃日志收集

一、概述iOS-App崩溃分为两种,一种是异常:NSException,一种是信号:Signal。二、异常崩溃1.NSException对象(1)reason:崩溃原因。(2)callStackSymbols:调用堆栈。(3)name:崩溃名称(4)userInfo:崩溃对象。2.崩溃拦截:(1)声明异常拦截方法static void unc

2017-05-01 15:06:49 708

转载 CDN的实现原理

一、传统模式在描述CDN的实现原理前,让我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别:用户提交域名→浏览器对域名进行解释→得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复。由上可见,用户访问未使用CDN缓存网站的过程为:1)、用户向浏览器提供要访问的域名;2)、浏览器调用域名解析函数库对域名进行解析,以得到

2017-04-27 15:56:51 466

原创 SQLite内置表SQLITE_MASTER

一、概述1.SQLite数据库中有一个内置表,名为SQLITE_MASTER,此表中存储着当前数据库中所有表的相关信息,比如表的名称、用于创建此表的sql语句、索引、索引所属的表、创建索引的sql语句等。2.SQLITE_MASTER表示只读的,只能对他进行读操作,写操作只能由系统自身触发,使用者没有权限。所有对用户自定义表的结构修改操作,会自定更新到此表。二、SQLITE

2017-04-13 10:45:00 8289

原创 OC编码规范

一、命名规范1.类:(1)首字母大写,后续单词首字母大写。(2)类名末尾要包含此类的类型,比如RootView,RootViewController。2.属性(1)属性名称首字母小写,后续首字母大写;(2)使用@property,要保持必要的空格,如:@property(nonatomic, strong);(

2017-04-07 15:32:37 756

原创 iOS网络请求认证挑战

一、引言Http请求中认证挑战相关的代理如下:1.将要发送一个认证挑战的请求- connection:willSendRequestForAuthenticationChallenge:2.是否能够对一个保护空间进行认证(已废弃)- connection:canAuthenticateAgainstProtectionSpace:3.收到一个请求的认证挑战- c

2017-03-23 10:38:00 1784

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

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

2017-02-23 14:54:34 418

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

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

2017-02-23 14:39:30 1951

原创 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 2424 1

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

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

2017-02-15 18:13:41 361

原创 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 596

原创 CoreText使用介绍

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

2017-02-10 14:11:11 623

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

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

2017-02-10 14:10:32 3112

转载 Markdown入门

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

2017-02-10 14:09:04 307

原创 战地体能训练模拟器

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

2017-02-10 14:08:04 739

转载 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 477

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

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

2017-02-10 14:05:39 838

转载 分组密码的工作模式

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

2017-02-10 14:04:36 2935

原创 MVPVM模式介绍

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

2017-02-10 14:03:12 1442

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

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

2017-02-10 14:01:25 10991

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

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

2017-02-10 13:59:34 526

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

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

2017-02-10 13:57:46 3410

原创 常用正则表达式

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

2017-02-10 13:32:04 356

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

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

2018-10-11

空空如也

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

TA关注的人

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