自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mac OS下V8引擎编译方法

V8 的Github地址 :https://github.com/v8/v8因为需要访问到google的服务器,所以下面做的一切都需要翻到墙外面。翻墙方法自行解决吧。1.安装depot_toolsv8的版本控制是有一个叫depot_tools的工具维护的,这个东西相当于的将git包了一层。[具体安装方法](http://www.chromium.org/developers/how-tos/ins

2017-09-29 21:22:26 4205

原创 编译、链接学习笔记(五)动态链接

动态链接是什么动态链接是与静态链接相对的一种程序执行方式与模块组织的方式。说到动态链接,则需要和静态链接进行对比,才更好的解释动态链接。静态链接的缺点静态链接对于目标文件的组织是将所有应用到的的代码经过链接后,都合并成一个可执行文件。但这种将所有涉及到的代码都引用的方式存在很多的弊端。1. 磁盘空间占用过大因静态链接方式在链接阶段会将所有涉及到目标文件链接成一个单独的可执行文件。当一个经常用到的库被

2017-09-20 22:18:40 885

原创 编译、链接学习笔记(四)进程装载

1.程序与进程的区别程序是指计算机可执行文件在磁盘中的保存方式,他是一对预编译好的指令和数据的集合文件。而进程是计算机将程序按照一定规则运行程序的一个过程。两者相比程序是一个静态的概念,进程是一个动态的概念。2.虚拟地址空间每个进程运行起来后,操作系统为其分配了进程独立拥有的虚拟地址空间(Virtual Address Space)。这空间的大小是由计算机操作系统以及CPU的位数共同决定。CPU的物

2017-09-17 14:16:35 482

原创 编译、链接学习笔记(三)静态链接

什么是静态链接代码经过编译生成目标文件后的下一步是将多个目标文件链接成一个可以执行文件。 将多个目标文件链接成一个可执行文件的过程称为静态链接。目标文件对于外部符号的处理单个源文件编译中当引用到外部文件的变量或者函数时(这些外部函数与变量也称为外部符号),会暂时将引用到地址以伪地址代替,等待链接时将真正引用的地址替换上。以两个文件hello.c和world.c为例子。hello.c引用了两个外部变

2017-08-24 02:08:24 831

原创 编译、链接学习笔记(二)目标文件的构成

上一篇文章说到了从源代码到可执行文件的整个过程,程序最后的阶段是将各个目标文件链接成可执行文件,现在来仔细来看看目标文件的具体的结构,目标文件存放了哪些信息。可执行文件格式目前不同平台下的可执行文件格式各有不同,Windows下为PE(Portable Executable),Linux下为ELF(Executable Linkable Format),Mac OS下为Mach-O(Mach-Obj

2017-08-21 01:18:05 2106

原创 编译、链接学习笔记(一)简述编译链接过程

一直很希望清楚的了解C语言是如何从编写代码到编译、链接成可执行文件,最后执行代码的整个过程。今天开始学习《程序员的自我修养》,并从读书的过程中做一些总结与思考,也希望从中可以将晦涩难懂的概念以我自己的理解以简单的语言总结出来。 书中所用到的例子都是以pc为例子,我也试着从mac与ios的角度试着以类比探究他们三者的区别与相同之处。源代码的编译过程源代码从文本,经过编译器的处理最终生成可执行文件的过

2017-08-17 01:46:54 1307

原创 C/C++学习笔记八(断言与异常处理)

断言断言是什么?简单而言,断言是对某种假设条件进行检查。 C语言中,在assert.h中,断言被定义为宏的形式(assert(expression)),而不是函数。 assert将通过检查表达式的值来决定是否需要终止程序,如果表达式为真(1)则忽略断言,程序继续运行。如果表达式为假(0),那么首先向错误流strerr打印一条错误信息,然后通过abort函数终止程序的运行。断言用法的简单例子:in

2017-08-13 18:36:55 4346

原创 C/C++学习笔记七(内存管理)

相对于其他语言,C、C++的一大利器便是可以非常灵活的控制内存。与此同时,另一方面灵活的带来的要求也是十分严格,否则会出现令人头疼的分配错误、内存越界、内存泄漏等众多内存问题。程序内存结构C程序的内存结构分为两种,一种是存储在磁盘时的结构,一种是程序运行时的结构。两者的区别在与运行时,系统会为其多分配堆栈空间。 下面通过一个例子看看具体的分配#include <stdio.h>int bss_va

2017-08-10 01:41:57 693

原创 C/C++学习笔记六(文件系统、预处理器)

文件系统文件是指存储在外部存储介质的数据集合(如磁盘光盘等)。操作系统中使用由文件路径和文件名两部分组成的文件标识符来标识文件。 而在C、C++语言中无论是何种文件,都将其看做是一段字节序列。在对其进行读写操作时,以字节流(stream)的方式进行处理。以字节流的方式进行文件操作,很方便的将具体的文件格式都归一为相同流式操作,增强了处理文件的灵活性。文件缓冲区toninlin

2017-08-06 21:31:06 573

原创 C/C++学习笔记五(结构体、字符与字符串)

结构体C语言中复杂的数据结构都需要使用结构体表示,在这里说一下结构体的使用要点。结构体内存分布以及对齐问题编译器在为结构体分配内存时,并不会分配和所有成员数据长度和恰好相等的内存空间,而是会考虑到计算机cpu的读取性能,对结构按照某个模数(alignment modulus)进行对齐。例如结构体中拥有int (4个字节),char(1个字节)两个变量,但在使用sizeof进行大小输出时,并不是简单的

2017-08-03 01:25:36 2665

原创 C/C++学习笔记四(指针、数组)

指针什么是指针?指针其实是内存单元地址什么是指针变量指针变量是用于存储内存单元地址的变量指针变量存储的实质顾名思义,指针变量存储的是内存单元的值,即存储的值其实指向的一个特定类型内存区域的起始地址。 如下例子,整型变量a的值为123,其内存单元地址为0x104,指针变量存储的值是变量a的内存单元0x104。 指针变量指向了内存地址起始为0x104,长度为4个字节的内存单元。p也可以对这个4个单元

2017-07-30 20:51:02 617

原创 C/C++学习笔记三(函数)

函数函数是C程序的基本单元,独立完成某种功能的程序块。 那具体函数在汇编层面到底是什么,以及函数是如何跳转的。下面从汇编的角度去理解一下c函数。 C代码如下#include <stdio.h>int foo1(int m,int n,int p){ int x = m + n + p; return x;}int main(int argc,char** argv){

2017-07-26 01:55:14 424

原创 C/C++学习笔记二(变量、表达式)

变量计算机中变量是一个标识符或者名称。在计算机中提供给变量两个信息 1. 变量地址 ,操作系统给变量分配的若干内存的首地址 2. 变量的值 ,内存单元中存放的数据从变量的存储位置进行区分,可分为 内存 和 CPU的寄存器 两类从变量的生命周期进行区分,变量分为静态、动态存储两种 1. 静态存储 存储在内存的静态存储区,编译时就分配了存储空间,在运行期间有固定的存储单元,程

2017-07-19 00:55:46 346

原创 C/C++学习笔记一(整型/浮点型)

工作中经常使用到C/C++,为对C有个比较深刻的了解,重新拾起学习C的任务。在看书的同时,记录下思考的过程,也记录下重要的知识点。从数据的存储开始计算机中的数据都存储在内存中,这就离不开各种数据类型在内存中的编码方式。从最简单的整型开始聊聊,整型数据在内存是如何编码以及必须要mark的坑。整型中的有符号以及无符号无符号即数据不能表示负数。 有符号即数据的最高位用来表示正负。如十六位机器中: un

2017-07-16 20:21:14 713

原创 JavaScript嵌入iOS/Mac工程

工作中遇到需要在终端引用js引擎,并在此基础上运行js代码,并且做到与 终端代码进行交互。 现在市面上有很多JavaScript引擎库,比如webkit上的 JavaScriptCore。google运用在chrome上的v8,firefox上的spidermonkey。对于在iOS的程序而言,因iOS webview 上使用的便是JavascriptCore引擎,所以最方便的便是JavaScri

2017-02-15 00:22:53 426

原创 Lua嵌入iOS/Mac工程

Lua嵌入iOS/Mac工程首先我们需要编译lua环境,得到 .a包。后续iOS工程1.到http://www.lua.org/ftp/ 下载lua源码,版本任意 2.解压后 的res文件夹便是我们的需要的lua源码 3.新建一个静态库工程 ,打开xcode —> File —>New —>Project –>选择 Static Libary,并且工程名命名为lua 4.将2步骤

2017-02-14 23:40:35 1750

原创 Linux服务器常用命令

ssh登录//ssh 用户名@地址ssh [email protected]复制文件至服务器// scp 本地文件路径 服务器用户名@服务器地址:文件路径scp /Users/hehe/Desktop/scroll.html [email protected]:/var/www

2016-11-14 16:57:47 242

原创 Swift教程-类与结构体

swift 中类于结构体swift中结构体与类既相似,又有不同。相似点 - 可以保存变量 - 保存函数不同点 - 结构体不支持继承,类支持 - 结构体是引用类型,类引用类型.定义// 结构体定义struct SomeStructure { //成员变量 var width = 0 var height = 0}// 类定义class SomeClas

2016-11-10 14:04:14 207

原创 Objective-C 中的随机数

u_int32_t arc4random_uniform(u_int32_t /*upper_bound*/)无需生成种子,参数为上限制如 int r = arc4random_uniform(255); 生成1-255 的整型随机数

2016-07-07 14:15:11 503

原创 UNIX脚本中#!到底是什么意思

unix #!

2016-06-13 15:52:27 1711

原创 xcode插件入门教程

现在网上关于xcode插件的教程比较少,能搜到的也xcode4的,到现在为止,xcode已经7.2.1(2016-3-8),还有便是教程都还有一些坑并没有说到,在次,一并说了,如有遗漏,欢迎请教。这里有一篇说得比较详细到教程https://onevcat.com/2013/02/xcode-plugin/本文的例子也是基于这篇文章的。1 运行机理xcode每次启动时,会加载路径 ~/Library

2016-06-02 21:47:04 474

原创 iOS crash符号表还原

找到symbolicatecrash文件 位置: /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash 可以使用查找 find /Applications/Xcode.app -name symbolicatecrash

2016-03-08 17:18:10 2724

原创 最简单的Mac xcode下搭建lua

1.安装luahttp://www.lua.org/download.htm 下载lua。以最新的5.3.2为例 使用命令行执行命令 tar zxf lua-5.3.2.tar.gz cd lua-5.3.2 make macosx test 2.取.a 与 .h 文件取出 /usr/local/lib/liblua.a 与 /usr/local/include 下的全部lua相

2016-02-17 19:09:29 5579

原创 排查message sent to deallocated instance问题

iOS的MRC内存管理中,因经常需要手动retain与release对象,如多次release对象。 如果项目是ARC与MRC混编,则会经常出现ARC的autoreleasepool 在释放MRC对象时,访问了被释放的对象,导致message sent to deallocated instance crash。 这种情况下,系统的堆栈信息十分有限,能给的也只有console中的log,给出的

2016-01-24 16:31:36 6552 1

原创 Windows Tortoise使用SSH链接Git

windows下使用ssh需要生成两个公/私 两个密钥 公钥放到git服务器 (或者github/git occhina等代码托管服务商) 私钥放在本地1 进入到SSH服务的文件夹右击–>Tortoise–>Setting–>Network->SSH 比如我的是C:\Program Files\TortoiseGit\bin\2 .打开 puttygen.exe点击Generate 注:

2015-10-11 17:51:13 4865

原创 NDK使用步骤

使用之前请先安装已经安装好NDK以及android开发环境Android Studio前期配置 1.local.propertires指向正确的NDK地址 Android Studio 安装后会提供一个默认的NDK地址,但因为NDK往往是另外单独下载,所以会有所不同,记得将此修改正确#比如我的是这个ndk.dir=/Users/wesleyxiao/Documents/android/n

2015-09-24 19:56:28 1764

原创 Mac下显示/隐藏文件夹

可以使用Terminal配置文件夹的显示/隐藏 配置完成需要杀死所有的Finder进程,才能生效显示隐藏文件夹defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder隐藏文件defaults write com.apple.finder AppleShowAllFiles -boolean fa

2015-09-22 19:46:41 347

原创 HTTP 状态字

HTTP回包的状态字

2015-09-09 13:10:52 783

原创 Swift教程-集合

Swift 有三种主要的集合类,数组,字典,集合 数组:有顺序的多个值的集合 集合:无顺序的多个值的集合 字典:无顺序的键值对 数组,集合,字典都是使用 generic collections实现的,具体的可以看这个创建数组数组声明[Int] 的是Array的缩写var fullSyntax = Array<Int>()var shortSyntax = [Int]()初始化数组va

2015-07-06 23:36:22 485

原创 Swift教程-新操作符

这里说下Swift新增了一些新的操作符。详情可以看这里Swift操作符等号元组赋值let (x, y) = (1, 2)和 C /Objective-C不一样,等号操作符不会返回值nil聚合操作符a??b 判断a是否有值,如果a为空,则返回b。 一般a为optional值,可能为nil,可能有值。 b则为与a类型相同的值 a??b完整展开为如下a != nil ? a! : b例子let de

2015-07-06 22:50:59 452

原创 Swift教程-基本类型

常量和变量概括Swift只包含变量(var),常量(let)两种值。对于两者而言,相同点都是对象的引用,不同点在于常量的值不可以在声明后不可改变,变量则可以//变量var welcome = "Hello!"welcome = "Bonjour!"let languageName = "Swift"//出错!常量不可以改变languageName = "Swift++"声明Swift会根据变

2015-07-06 20:14:51 483

原创 OC代码转Swift代码

初始化函数对于oc中的[[XX alloc]init] swift不需要alloc 也不需要init。直接调用以类名为函数名的工厂方法进行初始化。 声明的变量可以不显式声明类型//objective-cUITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyl

2015-07-02 19:02:46 2199

原创 Shell笔记

1. 奇葩的[ ] &&语法   [] &&可以理解为if then 语句的快捷方式   如果左边的表达式为真则执行右边的语句  例如:[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"

2015-06-24 23:19:10 486

原创 获取SQLite中任意的一个行

SELECT * FROM table ORDER BY RANDOM() LIMIT 1;对于RANDOM() 这里有介绍 点击打开链接这个函数能生成 -9223372036854775808 到+9223372036854775807 的整型数

2015-06-08 14:53:59 1441

原创 Mac NDK安装教程

1.下载正确版本的NDK2.打开一个terminal3.用cd到下载文件夹4. 执行  chmod a+x android-ndk-r10d-darwin-x86_64.bin5.执行./android-ndk-r10d-darwin-x86_64.bin

2015-04-23 20:04:13 688

原创 Mac Ant安装方法

在网上找了Mac下安装Ant的方法,哎,大家都是贴别人的教程,但是自己照着弄,好像又不能安装上好吧,我自己来这里有两篇安装教程http://blog.csdn.net/crazybigfish/article/details/182154391.下载Ant下载地址2.解压到/usr/local先cd到下载目录,然后执行这两个命令

2015-04-23 17:04:55 582

原创 xcode下创建预编译头文件pch

1. 创建一个pch文件2.  到 Target-->Building Setting ---> Apple LLVM 6.0 -Language --->Prefix Header 设置刚才新建的pch文件3.将路径指向pch文件,$(SRCROOT) 的意思是当前工程的文件。注意需要正确,否则不起作用那个

2015-04-22 13:04:52 1121 1

原创 Lua 安装

1.到http://www.lua.org/下载一个tar包2.执行以下代码curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gztar zxf lua-5.3.0.tar.gzcd lua-5.3.0make linux test如果苹果Mac OS X系统,将最后一行的linux替换成 macosx

2015-03-13 10:28:07 617

原创 HAX is not installed on this machine (/dev/HAX is missing) 解决办法

Mac安装Android Studio 后想安装Intel版本的AVD模拟器,但是把镜像system image下载下来后,创建新AVD当启动是发现显示HAX is not installed on this machine (/dev/HAX is missing).好,回到SDK Manager那里,在Extras里面找到HAX加速器下载完后显示已经安装了

2015-02-13 17:42:19 5580 2

原创 Linux/Mac常用环境变量

在Linux 和 Mac里面可以使用$字符调用系统的环境变量,对于在终端操作时非常有用 变量 描述 DISPLAY 用来设置将图形显示到何处。 HOME 当前用户的主目录。 IFS 内部域分隔符。 LANG LANG可以让系统支持多语言。例如,将LANG设为pt_BR,则可以支持(巴西)葡萄牙语。 PATH 指定Shell命令的路径。 PWD

2015-02-11 17:11:58 473

空空如也

空空如也

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

TA关注的人

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