自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 智能指针shared_ptr的实现

关于为什么要用智能指针,不需要做太多的赘述了。主要还是为了帮助管理申请的堆空间,程序员很有可能会忘了自己的申请空间。提供的智能指针包括auto_ptr、unique_ptr、weak_ptr、shared_ptr几中。其中auto_ptr最弱,建议不要使用。unique_ptr顾名思义不能共享指向同一内存空间,如果非要这么干,会在编译时报错。但是也不是绝对的,如果unique_ptr是一个

2016-07-10 16:18:18 516

原创 libevent源码学习研究(libevent-0.1)

想学习研究libevent怎么设计的,学习它的思想,学习它的设计,奈何自己实力不够啊,于是另辟奇径,从最早的版本开始,一个版本一个版本的学习,不信吃不透它。struct event { TAILQ_ENTRY (event) ev_read_next; TAILQ_ENTRY (event) ev_write_next; TAILQ_ENTRY (event) ev_timeou

2016-05-25 12:18:07 3819

原创 从汇编看前++和后++问题

(1)关于后++ 从汇编代码我们可以看出,在后++时,先将a的值赋给b,然后又对a进行了加1的操作。(2)关于前++ 从汇编代码我们可以看出,在前++时,先对a完成了加1的操作,然后将a的值赋给了b。(3)对于a+=(a++)的分析(a=4)分析汇编代码,我们可以理解为a++返回最初a的值,然后执行a+=a。这个之后又对a的值进行了加1操作。所以,我们如果直接打印表

2016-02-04 23:26:10 539

原创 深入理解WSAAsyncselect网络模型

---------------------------------------------------异步选择模型----------------------------------------------------------异步选择模型:异步选择模型是windows的一种异步IO模型,主要是通过windows消息机制实现的。通过WSAAsyncSelect给SOCKET注册感兴趣的事件,

2016-01-21 20:55:08 633

原创 深入理解select网络模型(linux/windows)

IO模型主要分为以下几种(1)阻塞I/O模型(2)非阻塞IO模型(3)IO复用模型(select 、poll)(4)信号驱动式IO模型(5)异步IO模型select模型属于IO复用模型,所谓的IO复用就是内核一旦发现进程指定的一个或多个IO就绪,它就通知进程,让进程去完成IO操作。在select模型中,我们会阻塞于select调用,直到调用超时或者套接字变为可读

2016-01-16 11:59:03 3076

原创 头文件互相包含所引发的的问题(深入剖析)

今天写程序出现了一个让人蛋疼的错误,后来发现是由于头文件互相包含所引起的。原本只是简单的以为头文件互相包含只会触发,头文件的递归包含。即,A包含B,所以才A的头文件里会将B的头文件内容拷贝过来,然后B里又包含A,又将A拷贝一份,这样就会无限循环。(下图为A.h和B.h互相包含,进行预编译时的结果·)对于上述的问题,windows中有特有的#pragma once。但是更通用的做

2016-01-14 19:24:55 3852

转载 netstat命令用法(转载)

网上发现的,总结的实在太好了,转载过来,自己学习它主要的用法和详解!(netstat -na 命令),本文主要是说Linux下的netstat工具,然后详细说明一下各种网络连接状态。netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -nr1.netstat命令详解其实我常用的是 netstat -tnl | grep 44

2016-01-13 18:26:42 394

原创 《深度探索C++对象模型》读书笔记——第一章(关于对象)

1.C++的封装并不会增加布局成本,数据封装和普通结构体一样·,而行为封装,也不会增加。因为非内联函数,只会诞生一个实例。但是内联函数,则会在每一个使用者上诞生一个实例。C++在布局上的额外负担主要是由virtual机制引起的:(1)Virtual Function机制(2)Virtual base class机制(3)还有就是多重继承下产生的额外负担C++中,有两种数据成员,

2015-11-24 00:26:36 493

原创 C/C++学习总结(复习)

C/C++学习了太久,有些知识点有些模糊了,花了半个多月,重新整理了一些,自认为比较重要的知识点,主要是用于自己学习。1.volatile优化总结:volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译

2015-11-22 20:44:25 1211

原创 malloc与calloc的区别学习

在学习lighthttped的代码时,里面的内存申请用的都是calloc而不是我们惯用的malloc,于是学习一下两者的区别:函数原型:void *malloc( size_t size ); //分配的大小void *calloc( size_t numElements, size_t sizeOfElement ); // 第一个参数为元素的个数,第二个参数是每个元素的

2015-11-02 18:48:18 364

原创 socket服务器如何读取http协议的一行

最近摸索着写了个简单的服务器,也阅读了一个小型webserver的源码,就是Tinyhttpd的源码。发现,在从socket缓冲区读取一行方面,它的实现挺好玩,总结一下学习使用。一般的话,从打开的fd中获得一行文本,调用的fgets();例如:int client;FILE* pf = fdopen(client,"r");char request[1024];

2015-10-19 00:36:22 1057

转载 sscanf的学习

C语言函数sscanf()的用法sscanf() - 从一个字符串中读进与指定格式相符的数据.  函数原型:  int sscanf( string str, string fmt, mixed var1, mixed var2 ... );  int scanf( const char *format [,argument]... );  说明:  sscanf与sc

2015-10-18 15:10:21 373

原创 关于调用gethostbyname失败的原因:Host name lookup failure.

调用gethostbyname失败后的变量存储在h_errno中,所以不能用perror打印,需要使用Herror打印,打印后的错误为Host name lookup failure.原因是由于找不到用户名对应的ip,所以进入/etc/hosts中添加上所需要的配置192.168.1.192 onlyYou[即ip 空格 用户名],再次调用即可成功。

2015-10-17 17:45:23 11130

原创 关于正确避免僵尸进程(总结学习)

当子进程挂掉时,会给父进程发送一个SIGCHLD信号,而默认SIGCHLD信号是被忽略的。我们可以在父进程里设置一个SIGCHLD信号处理函数,在处理函数里调用wait()函数,去为子进程收尸。void handler(int num){wait();}但是这是有问题的。那就是有多个进程到达的情况:假设有三个信号同时到达,第一个信号会触发信号的处理函数,其他两个

2015-10-16 21:06:33 442

转载 Valgrind 安装与使用[转载学习]

调不尽的内存泄漏,用不完的ValgrindValgrind 安装1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz22. 解压安装包:tar –jxvf valgrind-3.2.3.tar.bz23. 解压后生成目录valgrind-3.2.34. cd valgrind-3.2.35. 运行./autog

2015-10-10 19:08:42 411

转载 Linux Pmap 命令:查看进程用了多少内存

2013-11-06 15:01 linux Linux中国 字号:T | TPmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。AD:Pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。Pmap实际上是一个Su

2015-10-10 17:55:39 406

转载 Linux makefile 教程(转载学习)

跟我一起写 Makefile陈皓 (优快云)概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在U

2015-10-09 00:16:59 347

原创 关于父子进程共享文件的学习研究

在《unix环境高级编程》中关于文件共享:“父子进程共享同一个文件的偏移量!!!”考虑下面情况:一个进程fork了一个子进程,然后等待子进程终止。假定,作为普通处理的一部分,父进程和子进程都向标准输出进行写操作。如果父进程的标准输出已经重定向,那么子进程写到该标准输出时,它将更新与该系统共享的文件偏移量。在这个例子中,当父进程等待子进程时,子进程写到标准输出;而在子进程终止后,父进程也写到

2015-10-08 18:50:01 1361

转载 fork与vfork的区别[转载学习]

1.vfork保证子进程先运行,在它调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。2.fork要拷贝父进程的进程环境;而vfork则不需要完全拷贝父进程的进程环境,在子进程没有调用exec和exit之前,子进程与父进程共享进程环境,相当于线程的概念,此时父进程阻塞等待。 为什么会有vfork呢?

2015-10-08 17:37:19 319

转载 exit()与_exit()的区别(转载学习)

从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()函数在调用exit  系统调用前要检查文件的打开情况,把文件缓冲区中的内容写回文件。也就是图中的“清理I/O缓冲”。 所需头文

2015-10-07 17:29:22 284

原创 小知识点(strlen与sizeof区别)

1.strlen计算的长度,不包含终止字符null。也就是'\0'。2.sizeof计算的则是,包含字符null的缓冲区长度。两者的区别在于,使用strlen是一次函数调度,是在运行时计算的长度,而对于sizeof而言,因为缓冲区已用已知字符串进行了初始化,其长度是固定的,所以在编译时计算缓冲区长度。

2015-10-05 16:27:49 315

原创 Linux进程学习(总结学习关于“写时复制”)

首先是对进程的理解定义:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。以上是百度的进程的概念。我的理解就是,它是程序运行的过程,

2015-10-05 15:14:43 523

转载 三星S5PV210启动相关的BLO/BL1/BL2之间的关系【转载学习】

(1)BL0:是指S5PV210的iROM中固化的启动代码        作用:初始化系统时钟,设置看门狗,初始化堆和栈,加载BL1(2)BL1:是批在iRAM自动从外扩存储器(nand/sd/usb)中拷贝的uboot.bin二进制文件的头最大16K代码        作用:初始化RAM,关闭Cache,设置栈,加载BL2(3)BL2:是指在代码重定向后在内存中执

2015-10-03 18:39:28 1188

转载 [转载学习]

前天去面试,问到了这个问题,在回答这个问题的时候,面试官说我理解的有此问题,其实还问到了对于中断和异常的理解,现在整理一点资料出来,全当是复习吧。1.什么是异常,什么是中断?说法一:中断的描述主体是外设,而异常的描述主体是CPU。中断是一个过程,是CPU在执行当前的程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。异常主要是从CPU角度,接受信号的。中断主要是从外设

2015-10-03 15:11:05 368

原创 tiny4412看门狗的禁用

看门狗所在地址为0x10060000看门狗寄存器的最后一位是禁止位,当最后一位为0的时候将禁用看门狗在ARM架构下,  数据从内存到CPU之间的移动只能通过LDR/STR指令来完成.  而MOV只能在寄存器之间移动数据,或者把立即数移动到寄存器中,并且数据的长度不能超过8位#define pWTCON 0x10060000disable_watchdog

2015-10-03 14:47:44 602

原创 ARM设置模式为管理模式

mrs r0,cpsrbic r0,r0,#0x1forr r0,r0,#0xd3msr cpsr,r0move pc lr上述代码为设置管理模式的代码第一行:使用mrs指令,将状态寄存器传送至通用寄存器第二行:使用bic指令。BIC(位清除)指令对 Rn 中的值 和 Operand2 值的反码按位进行逻辑“与”运算。这样就可以将r0的后5位清零

2015-10-03 14:12:20 777

原创 关于LDR链接器脚本所产生的2B错误

切记今天所遇的到的错误,一定要严格的加空格。。。。。。没有空格会报错

2015-10-02 22:40:44 410

原创 关于Linux权限问题(由samb访问所引起的)

首先附上关于chmod用法:在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读、写、运行设定权限。例如我用ls -l命令列文件表时,得到如下输出:-rw-r--r-- 1 apple users 2254 2006-05-20 13:47 tt.htm从第二个字符起rw-是说用户apple有读、写权,没有运行权,接着的r--表示用户组users只有读权限

2015-10-02 17:37:09 465

原创 Linux安装与配置samb服务器的过程以及遇到的问题

之前是在虚拟机中,给linux配置了samb,没有遇到什么问题。今天突然想到把我那个在淘宝300块钱买的台式机和笔记本雍一根网线连起来,然后给台式机配一个samb服务器和笔记本进行通信。首先是找安装包的问题,由于我的台式机没有联网,所以只能去系统镜像里找。当时我直接把系统装在了U盘里,于是就在U盘下的Packages中找到了一堆rpm安装包.执行命令 (另外记住,U盘是在/media/路径

2015-10-02 15:51:01 631

原创 ARM异常向量表的学习

什么叫异常Exceptions are generated by internal and external sources to cause the processor to handle an event,意思就是因为一些内部的或者外部的原因,导致处理器去处理这个原因所触发的事件什么叫异常向量The ARM architecture supports seven types o

2015-10-02 13:46:45 1291 2

转载 Linux下ARM汇编语法(转载学习)

第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。一. Linux汇编行结构任何汇编行都是如下结构:[:] [

2015-09-30 11:59:37 553

原创 LDR指令学习(指令与伪指令)

LDR作为ARM的指令时,作用: 将存储器地址 所指地址处连续的4个字节(1个字)的数据传送到目的寄存器中。LDR作为ARM的伪指令,作用:另外还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。ldr伪指令可以在立即数前加上=,以表示把一个地址写到某寄存器中,比如:ldr r0, =0x12345678

2015-09-30 11:56:58 614

转载 uboot移植 --添加目标板(转载学习使用)

U-Boot本身支持很多开发板,在其源代码中,每个板子都对应一个board/目录下的文件夹(笔者注:这并不确切,因为有的文件夹是供应商名称,下面可以有多个目标板目录,这里只考虑最简单的情况),以及include/configs/目录下的目标板配置头文件。因此,要添加U-Boot对我们的目标板的支持,首先就是要建立目标板文件夹和配置头文件,并修改相关的Makefile。下面以实例说明为U-B

2015-09-30 10:39:19 504

原创 关于ARM启动流程的分析(NandFlash Or NorFlash)

学习了S3C2440的启动流程,如何让bootLoader成功加载。并且找到了一篇讲的非常好的博客,试着结合着自己的理解总结一下,以备以后的复习。第一部分关于内部的SRAM:部分ARM9的CPU内部都集成有一个SRAM,SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。这样他不需要初始化就能够直接使用。这与我们

2015-09-28 21:53:42 3884

原创 linux配置samba服务器和windows进行数据交互

linux配置samba服务器和windows进行数据交互,以及在配置过程中出现问题的解决

2015-09-28 19:49:21 496

原创 Cocos2d-x使用python创建项目出现WindowsError3错误的解决方案

最近开始学习cocos2d-x被这个错误困扰了好久原来也安装过cocos,原来就是这么建工程的,也没什么错误,但是这次就产生了这个错误.........于是就开始排查各种原因,在网上找资料,就是明白了,是这个路径有问题。但是这个路径是由create_project自己生成的啊。于是就去看了,create_project.py的源码,找到了一个函数找到了一个函数o

2015-06-06 18:29:15 1629

空空如也

空空如也

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

TA关注的人

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