- 博客(83)
- 资源 (18)
- 收藏
- 关注
原创 字节跳动校园招聘
先贴三个群:头条研发链接:https://www.nowcoder.com/discuss/206327来源:牛客网【投递邮箱】 silence007pp@163.com (如有问题咨询,也可发邮件,会一一解答)【简历命名】毕业时间- 姓名 - 岗位 - 地点 -学校【头条研发内推】校招提前批,研发岗专场!【关于我们】我们是字节跳动...
2019-07-16 15:36:57
2902
原创 cocos2dx 运动+旋转动画 CCSequence CCAnimation CCAnimate CCMoveTo CCCallFuncN
cocos2dx 动画是个很神奇的东西~~, 这里看到的是一个物体,在运动的过程中会不断地翻转的过程。 两个动画一起来~~下面的代码中涉及到:CCAnimation(补间动画 ) CCAnimate(动画) CCDelayTime(延迟动作) CCFadeTo(设置透明态度) CCSequence(动作序列) CCSpawn(让精灵的若干个动画同时执行) CCR
2014-08-20 20:54:32
6392
原创 cocos2dx 内存管理
内存管理中经常遇到的问题:内存泄露,内存溢出。在cocos2dx中用的是引用计数和自动释放池的技术,由于熟悉objective-c语言,所以对这两个概念不会很陌生。一、引用计数 引用计数是自动内存管理的基础:在对象里增加一个引用计数,当外部引用增加时,计数器加1,当外部引用消失时,计数器减1 。看一下CCObject源码:cl
2014-08-19 15:34:53
1815
原创 cocos2dx 启动过程详解二:内存管理和回调
在上一篇的第二部分中,我们有一句代码待解释的:// Draw the Scenevoid CCDirector::drawScene(void){…… //tick before glClear: issue #533if (! m_bPaused) //暂停{m_pScheduler->update(m_fDeltaTime); //待会会解释这里的
2014-08-19 15:33:23
1494
原创 cocos2dx 启动过程详解一:渲染
今天来看一下cocos2d-x的整体启动过程:cocos2d-x 在各个平台的实现代码是一样的,只要针对不同平台做相应的配置就可以了。一、启动前奏现在来看一下在ios平台下的相关结构:打开源代码自带工程,你会看到一个main文件,这里main里面有一个main函数,这是程序的入口函数。在这里他回加载AppController,进入这个类,这里有ios平台华景
2014-08-19 15:30:10
2878
原创 XMPP入门
本人原创,更多xmpp知识、ios知识、其他分享知识见:我的个人博客简介:1、XMPP是可扩展消息与存在协议,主要用于im。2、他是一种类似于http协议的数据传输协议,过程如:“解包装—>包装”过程。3、在XMPP中,有三个角色:客户端,服务器,网关。 在三者之间可以进行任意两两通信。服务器承担客户端信息记录,连接管理和信息的路由功能。网关承担与异构即时通信
2014-07-09 17:44:04
9227
原创 Grand Central Dispatch(GCD)
GCD GCD是异步执行任务的技术之一。GCD使用很简洁的记述方法,实现了极为复杂繁琐的多线程编程。dispatch_async(queue, ^{ //长时间处理 //例如AR用动画识别 //例如数据库访问 //长时间处理结束,主线程使用该处理结果 dispatch_async( dispatch_get_main_
2014-03-24 09:40:47
7803
1
原创 【IOS学习】之九、Blocks的实现再续
__block变量和对象__block id obj = [];__block id __strong obj = [];上述两行代码是等同的,ARC有效的时候,id类型以及对象类型变量必定会附加所有权修饰符,缺省为附有__strong修饰符。看一下clang转换的代码://__block变量用结构体部分struct __Block_byref_obj_0 {
2014-03-22 18:55:30
2834
原创 【IOS学习】之九、Blocks的实现续
Blocks的存储域Block和__block变量的实质就是 在栈上的结构体实例。 如:__block变量实质是 栈上__block变量的结构体实例。其中Block也是oc的对象,该OC的类为:_NSConcreteStackBlock。 虽然该类并没有出现在源码,但是有很多与之类似的类:_NSConcreteStackBlock 它的对象Block设置在栈上_NSCo
2014-03-22 18:53:08
1757
原创 【IOS学习】之八、Blocks的实现
我们先来转换一个简单的block代码:源: int main() { void (^blk)(void) = ^{printf();}; blk(); return 0; }struct __block_impl { void *isa; int Flags
2014-03-18 11:20:04
2745
原创 【ios学习】之七、Blocks简介
blocksblocks是c语言的扩充,他是:带有自动变量(局部变量)的匿名函数。这个概念叫做:闭包。如python中的lambda,在c++11中也引入了lambda;维基百科中关于闭包:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法
2014-03-18 11:08:00
1507
原创 【IOS学习】之六、ARC规则
引用计数式的内存管理 在arc中是没有改变的。在arc中,有有效和无效两种方式,我们可以在一个app中混合使用。使用clang(LLVM编译器)或者以上版本,指定编译器属性为:"-fobjc-arc"就可以使用arc;在oc中,引用计数式的内存管理的思考方式就是思考arc所引起的变化:1、自己生成的对象,自己持有。2、非自己生成的对象,自己也能持有。3、
2014-03-18 11:00:10
3588
原创 【IOS学习】之五:引用计数
arc automatic reference counting 内存管理中对引用采取自动计数。apple官方文档: 在oc中采用arc机制,让编译器来进行内存管理,在新一代apple llvm编译器中设置arc为有效状态,就无需再次键入retain或release代码,降低程序崩溃,内存泄露等风险的同时,很大程度上减少了开发程序的工作量。编译器完全清楚目标对象,并能立
2014-03-14 18:28:40
12975
原创 【IOS学习】之四、协议,委托,分类粗解
何为协议,何为委托,何为分类(类别)?委托 即 代理 delegate: 他是 (接口的实现类)类似c中的回调。 把某个对象要做的事情委托给别的对象去做。 那么别的对象就是这个对象的代理,来代替他处理要做的事情。在code中,首先你要明确一个对象的委托方是谁,委托的内容是什么。 在mfc中,每个程序都要继承自cwinapp,就
2014-02-26 09:38:09
2016
原创 【C\C++学习】之十八、C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)
在C++中,有三大函数复制控制(复制构造函数,赋值操作符,析构函数),而在C++11中,加入了移动构造函数,移动赋值操作符。我就斗胆将他们命名为六大函数好了。一、构造函数c++primer中说过:构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数的工作就是保证每个对象的数据成员具有合适的初始值。构造函数与其他函数不同:构造函数和类同名,没有返回类型。构造函
2013-12-20 21:18:00
29358
2
原创 【C/C++学习】之十七、C++11中我们需要关注的
学了这么久c++,现在来看一下c++新标准:C++11他的设计目标是:1.使得c++成为更好的适用于系统开发及库开发的语言。2.使得c++成为更易于教学的语言。3.保证语言的稳定性,以及和C++03及c语言的兼容性。c++11 的增强点,主要包括:1.通过内存模型,线程,原子操作等来支持本地并行编程。
2013-12-19 17:03:29
4578
原创 【啊哈,算法】之十、后缀数组,求最长重复子串
转自:http://blog.youkuaiyun.com/hackbuteer1/article/details/7968623直观的解法是,首先检测长度为 n - 1 的字符串情况,如果不存在重复则检测 n - 2, 一直递减下去,直到 1 。这种方法的时间复杂度是 O(N * N * N),其中包括三部分,长度纬度、根据长度检测的字符串数目、字符串检测。利用后缀数组后缀数
2013-09-21 18:14:06
1880
原创 【啊哈,算法】之九、后缀数组,字符串中连续出现最多的字串
转载自:http://blog.youkuaiyun.com/ysu108/article/details/7795479字符串“abababc”,最多连续出现的为ab,连续出现三次。要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab。两个题目的解法有些类似,都用到了后缀数组这个数据结构。求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如上面的字符串为:
2013-09-21 17:08:37
1592
原创 Direct UI
有个坑爹的说法:其实Direct UI只是一个思想,要实现这个思想,还要靠自己。 采用windowless方式用api或gdi实现ui的绘制。DirectUI意为直接在父窗口上绘图(Paint on parent dc directly)。子窗口不以窗口句柄的形式创建,只是逻辑上的窗口,绘制在父窗口之上。DirectUI技术的实现步骤和难点:1、窗口
2013-09-20 20:02:28
8077
原创 【COM学习】之三、类厂
一、CoCreateInstance 他是创建组件最简单的方法。 但他的灵活性不足以使之满足所有组件的需求。HRESULT _stdcall CoCreateInstance(const CLSID& clsid,IUnknown * pIUnknownOuter,DWORD dwClsContext,const IID& iid,void ** ppv);
2013-08-10 12:45:04
3184
原创 【COM学习】之二、HRESULT,GUID
HRESULT 来向用户报告各种情况。 他的值位于 WINERROR.H中QueryInterface返回一个HRESULT值。HRESULT不是一个句柄,他是一个可分成三个域的32位值。 Here's the RESULT其低16位包含函数返回的代码, 其余15位包含的是此类型及返回值起源的详细信息。其结构为:我们的应用程序在开发过程中,在
2013-08-09 21:24:55
2428
原创 【COM学习】之一、QueryInterface
开始先说一句,学习com之前要学好c++ 对象模型。QueryInterface的使用:QueryInterface是IUnknown的一个成员函数,客户可以通过此函数来查询某个组件是否支持某个特定的接口。QueryInterface成功返回一个指向此接口的指针。 错误返回一个错误代码。HRESULT _stdcall QueryInterface(const
2013-08-04 18:02:01
8213
原创 【啊哈,算法】之八、串和kmp算法
字符串大家应该不陌生了!个人代码积累:先来看看串的结构定义:#includeusing namespace std;typedef char Type;#define MAXSIZE 100typedef struct String{ Type data[MAXSIZE]; int length;}String;串有许多操作,如:初始化,创建串,清空串,插入,复
2013-08-02 16:46:27
1419
1
原创 【数据结构】之一、二叉树创建,前中后序遍历
代码积累日志!http://zh.wikipedia.org/wiki/%E4%BA%8C%E5%8F%89%E6%A0%91 这里都有介绍二叉树的基本概念!下面看二叉树数据结构:#define Type chartypedef struct BiTNode{ Type data; struct BiTNode *lchild, *rchild;}BiTNode, *B
2013-08-02 15:45:43
1170
原创 【C/C++学习】之十三、虚函数剖析
所谓虚函数,虚就虚在“推迟联编”或者“动态联编”上,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被称为“虚”函数。而什么是动态联编呢? 编译程序在编译阶段并不能确切地知道将要调用的函数,只有在程序执行时才能确定将要调用的函数,为此要确切地知道将要调用的函数,要求联编工作在程序
2013-07-26 16:10:18
1583
原创 【网络编程】之十三、ping程序实现
使用原始套接字:SOCK_RAW需要ICMP代码如下:#include#includeusing namespace std;#pragma comment(lib, "WS2_32.lib")typedef struct icmp_hdr{ unsigned char icmp_type; unsigned char icmp_code; unsigned sho
2013-07-24 10:46:30
1819
原创 【VC++积累】之八、PreTranslageMessage;TranslageMessage;GetMessage和PeekMessage的区别
先来看windows消息机制: 首先系统(也就是windows)把来自硬件(鼠标,键盘等消息)和来自应用程序的消息 放到一个系统消息队列中去. 而应用程序需要有自己的消息队列,也就是线程消息队列,每一个线程有自己的消息队列,对于多线程的应用程序就有和线程数目相等的线程消息队列. windows消息队列把得到的消息发送到线程消息队列,线程消息队列每次取出一
2013-07-24 00:14:15
2597
原创 【网络编程】之十二、wsaeventselect+线程池 服务器实现
#include#includeusing namespace std;#pragma comment(lib, "WS2_32.lib")typedef struct _SOCKET_OBJ{ SOCKET s; HANDLE event; sockaddr_in addrRemote; _SOCKET_OBJ *pNext;}SOCKET_OBJ, *PSOCKET_O
2013-07-20 16:57:43
2069
原创 【VS++积累】之七、黑客编程之匿名管道
管道分为匿名管道和命名管道,这里我们来看一下匿名管道。匿名管道通常用于一个子进程和一个父进程之间或两个子进程之间的通信。 一般我们的匿名管道用来改变标准输入,输出的方向或改变进程标准错误流。BOOL WINAPI CreatePipe( _Out_ PHANDLE hReadPipe, _Out_ PHANDLE hWritePipe, _In_opt_
2012-10-29 15:08:25
2330
原创 【VC++积累】之六、MFC简要剖析
开始我们先不多说,先看几张图,根据图我们来做进一步剖析。在main或WinMain之前,全局变量已经被分配内存并初始化了。1. 在MFC中在WinMain之前有个theApp全局变量先被构造并被初始化,而由于子类构造函数执行前,其父类的构造函数先被执行,所以CTestApp的父类CWinAPP的构造函数先执行。产生了theApp对象后,在WinMain()中
2012-10-28 16:03:49
1820
原创 【C/C++学习】之十六、关于空指针NULL、野指针、通用指针
首先说一下什么是指针,只要明白了指针的含义,你就明白null的含义了。假设 有语句 int a=10;那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000;那么内存0x1000单元中存放了数据10,每次我们访问a的时候,实际上都是访问的0x1000单元中的10.现在定义:int *p; p
2012-10-19 10:56:57
4164
原创 【C/C++学习】之十五、内存管理
索引:1、内存分配简介2、内存分配常见错误3、new()/delete()函数的使用4、malloc()/free()函数的使用在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候
2012-10-15 16:57:40
2104
原创 【C/C++学习】之十四、RTTI
RTTI(Runtime TypeIdentification)提供了运行时确定对象类型及转换指针或引用类型的方法。 有关内容包括类名称,数据成员名称与类型,函数名与类型等。在大多数面向度地向专家传播自己设计理念时,都主张在设计和开发中使用虚拟成员函数而不是使用RTTI机制,但是再很多情况下虚拟成员函数无法克服本身的局限。每当涉及处理异类容器和根基类层次时,不可避免要对对象类型进行动态判
2012-10-14 19:23:29
2138
原创 【C/C++学习】之十三、运算符重载
所有一元运算符 建议重载为成员函数= () [] —> 只能重载为成员函数+= -= /= *= |= ~= %= >>= 所有其他运算符 建议重载为全局函数. 操作符不能重载不能重载目前C++运算符集合中没有的符号 原因:1。难以理解 2.难以确定优先级对已经存在的运算符进行重载时,不能改变优先级规则,否
2012-10-11 22:00:35
1817
原创 【VC++积累】之五、进程注入技术
注入:就是把我的代码,添加到已经远行的远程进程的方法;在WinNT以后的系列操作系统中,每个进程都有自己的4GB私有进程地址空间,彼此互不相关。如 : 进程A中的一个地址,比如:0x12345678,到了进程B中的相同地方,存的东西完全不一样,或者说不可预料。 所以说如果进程A想要看看或者修改进程B地址空间中的内容,就必须深入到其地址空间中,因为DLL是可以被加
2012-10-08 16:56:57
2378
原创 【VC++积累】之四、动态链接库
本文要说的是动态链接库 dll 和静态链接库 lib动态链接库是一种资源的集合,包括函数,变量,类,资源等都可以从动态链接库中来导出!静态链接库的代码就可以直接放到exe文件中,动态链接库是被exe文件动态的加载或者卸载。 静态链接库不能包含其他的动态链接库和静态链接库,而动态链接库是可以的。在本文我们会用两种方式来写动态链接库文件,即:S
2012-10-04 20:52:44
2650
原创 【啊哈!算法】之七、动态规划---矩阵l链乘
在学习矩阵链乘之前,先要知道矩阵之间是如何进行乘法运算的,如果你对这个还不是很了解,那么先去看一下线性代数中矩阵的乘法这一节!OK,我们来说矩阵链乘,这是动态规划算法中的一个基础问题,在算法导论15章中也详细介绍了此算法,本文也是主要参考算法导论。我们来看一下问题: 给你N个矩阵,{A1,A2,A3,A4,......,AN},这一组矩阵必须是可以相乘的,我们要计算这N个矩阵的乘积,即:A
2012-10-03 18:30:33
3506
原创 【多线程学习】之一、线程简介
线程是程序执行的基本原子单位,是进程的一个实体,是CPU调度和分派的基本单位。一个进程可以由多个线程组成。每个线程都有自己的寄存器组,堆栈,输出机制和一个私有消息队列。多线程可以实现并行的处理,避免了某一项任务长时间的占用CPU的时间,从而导致了其他线程闲置的情况。我们在进行多线程编程的时候要注意,当两个线程优先级非常高的时候,他们抢夺CPU的控制权,在线程切换的时候会消耗很多的CPU资源,会
2012-10-01 16:32:57
1733
3
原创 【啊哈!算法】之六、动态规划简介
动态规划(dynamic programming)是通过组合子问题的解而解决整个问题的。类似于分治策略。他是运筹学的一个分支,是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法。动态规划算法对每个子问题只求解一次,将其结果保存在一张表中,从而避免每次遇到各个子问题时重新计算答案。动态规划算法的设计分为四个步骤:1、描述最优解的结构。2、递归定义最
2012-10-01 14:06:06
2888
go程序设计语言(人民邮电+机械工业2本)
2018-02-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人