自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 由C语言指针想到的

刚接触编程的时候,用的就是C语言,学的时候用的开发软件是Turbo C,很经典的一款IDE了(现在应该没人在用了吧)。刚学习C的时候,主要就是学习其语法,先用一些语法来做出一些简单的小功能,写一些简单的小逻辑。学着学着,就学到了指针了,我记得那本书上讲了,指针是C的核心,学C

2011-10-04 00:49:28 1067 3

原创 关于eclipse的一些设置

用eclipse写代码的时候,遇到过文件写着写着突然函数就找不到索引了,折腾了许久,才发觉原来是eclipse里面有一个设置,当行数超过多少行之后,index->rebuild不会为这个文件重建索引,(我用的是C++)修改的方法:Windows->Preperfences->C/

2011-09-28 11:10:58 1229

原创 mysql:mysqlimport: Error: 13, Can't get stat of $path

今天在把数据导入mysql的时候遇到了这个问题:mysql:mysqlimport: Error: 13, Can't get stat of $path后来在GOOGLE上找到了答案,原来是导入的数据文件存在的路径在/root的目录下导致的,遂将该输入文件移到其他低权限的目录后

2011-07-26 10:17:46 1586

原创 这并不是指针,而是函数

#include #include using namespace std;typedef int mytype[2];int(*pFun(int n))[2]{ mytype *k = (mytype*)malloc(sizeof(mytype)) ; (*k)[0] = 1202; (*k)[1] = 1902; return k;}

2011-06-14 00:52:00 436

原创 c的io操作

关于c的io操作c标准操作库为我们提供了强大的IO操作库。fopen系列的函数在使用fopen的时候。分别有6种打开方式:r、w、a、r+、w+、a+r只允许读(文件必须存在)w只允许写(文件不存在则创建文件)但是覆盖之前的文件内容a允许写跟追加,但是只能在尾端进行,用fseek类来对当前文件指针进行偏移则会无效r+流可以读写(文件必须存在)w+流可以读写(文件不存在则创建文件)但是覆盖之前的文件内容a+流可以读写,但是只能在尾端进行,用fseek类来对当前文件指针进行偏

2011-06-02 21:35:00 506

原创 大端与小端

 大端表示跟小端表示这两者的具体意义我老是记不住,当然不是说它的意思不懂,而只是容易搞混。现在记一下,以后就比较有印象了。:) 在C++中,定义一个int值的时候,它所占用的内存是4个字节,然而这4个字节里面,我们如果得到这个int值的内存地址,其实就是它的最低位置的地址,如:int a;假设 a的内存分别是 0x0 0x1 0x2 0x3 这4个地址上,每个地址里面存的数是怎样的我们并不知道,只知道总之拿这四个字节去用就是一个值准没错,的确是这样,但是也有例外,当这4个字节跨平台跨机器的时候就会出现问

2011-05-25 15:55:00 455

原创 缓冲区大小的问题

<br /><br />在设计程序的时候,需要用到缓冲区的时候,给缓冲区配一个合理的值是非常地重要呀,就因为这个问题,搞得最近都很头痛。缓冲区的大小直接影响到玩家数据的完整性,而且出现的情况更是相当诡异。<br />不过找bug都是这样,看起来非常奇怪的事情,在找到答案的时候,就什么事情都解释得通了

2011-04-01 13:00:00 807

原创 Andoird开发体验

<br /><br />最近对ANDROID系统的开发有了一些兴趣,所以想看看ANDROID的开发跟其它的有什么不同。ANDROID用的是JAVA语言(其实不尽然,语法虽然说跟JAVA非常像,<br />但还是有一些差异的。不过学起来也还是挺顺手的)。<br />其实早在半年前也有了解了一下ANDROID的一些机制原理,但是那时候觉得有太多API要去了解了,太烦了,所以研究了一会就没怎么去继续了。<br />这几天是开始从一些界面的显示上入手的,在界面这一层上,我觉得跟ACTION SCRIPT 3的编程方

2011-03-20 23:17:00 521

原创 关于标准IO流的一些认识

<br />C语言库中有一个FILE的结构体,当我们打开一个文件的时候,会用到FILE*类型的指针来操作fopen所返回的一个指针,这个指针就是流。<br />流是操作系统管理IO的一个引入的概念,一个流是与一个描述符绑定在一起的。所以也可以根据流来得到一个描述符。<br />标准IO库有三种类型的缓冲:1、全缓冲2、行缓冲3、无缓冲。全缓冲是指,当一个操作一个流的时候,如果打算往流里写进去一些信息,那么如果这是全缓冲的流,它会先把信息写在它的缓冲里面,直到信息结束满或者缓冲区空间已满的时候,才会触发IO写

2011-02-09 23:25:00 717

原创 不要在构造函数或析构函数里调用虚函数

<br />在工作的时候有一次不小心就上了C++这个当,随后又继续看了effective C++,书上内容讲的很不错,所以根据自己的理解记一下,印象更深刻。<br />我对C++的感觉就是做什么事都需要己有意识,稍微一不留神内存就出问题了,如果不知道C++编译器背后做的事的话,很容易会自以为然地写上一些错误的代码,这也许就是经验丰富自的高手与我这种菜鸟的差别了,呵呵,不过菜鸟也会慢慢成长的。嘿嘿<br />在书上讲道为什么编译器要这么做,为什么构造与析构都不能调用虚函数,原因其实很简单:当在实例化一个派生类

2011-01-05 00:13:00 686

原创 关于移位运算

#include using namespace std;int main(){ int a=0xfffffff0; cout >=1; cout 结果是:0xfffffff00xffffffe00xfffffff0当有符号位的负数往左移,右边会补上0,但是往右移的时候,左边会补上0

2010-12-07 19:20:00 356

原创 关于静态变量

<br /><br />写了这样一个头文件<br /> <br />"example.h"<br /> <br />class example{<br />public:<br />static int i;<br />static int get(){return i;}<br />};<br />int example::i = 0;<br /> <br />然后很多文件引用到example并调用里面的get()函数,就这样,在链接的时候就出错了。<br />原因是每个文件在编译的时候都把example

2010-11-16 20:20:00 441

原创 setjmp与longjmp

<br /> <br /> <br />今天试了一下setjmp与longjmp的用法:<br />#include <setjmp.h>#include <cstdio>#include <cstdlib>static jmp_buf m_buf;void fun2();void fun1(){ printf("hello fun1/n"); fun2();}void fun2(){ longjmp(m_buf,1); printf(

2010-09-26 12:04:00 733

原创 template学习笔记

<br /><br />特化与偏特化:<br />特化说白点就是专门为我们指定的一种类型再写一次模板定义,例如:<br />一般情况是这样定义模板的:<br />template<typename T><br />inline T const& add(T const& t1, T const& t2)<br />{<br />return t1+t2;<br />}<br />特化,把我们的add为我们指定一个类型的实现(int):<br />template<><br />inline int cons

2010-09-24 17:00:00 531

原创 __stdcall 与__cdecl两种调用

__stdcall 与__cdecl两种调用当调用一个函数的时候,参数都是从右到左压入堆栈的,它们的之间的不同就是谁来负责管理堆栈的释放。__cdecl是由函数调用者来管理堆栈的释放的,因此才有了可变参数的用法,例如我们常用的printf()函数。当调用printf这个函数的时候,调用者首先会把我们需要用的参数给压到栈里面,然后再调用call指令跳转到代码处执行代码,代码执行完成后跳回call指令的下一条指令来清理之前压到栈里面的参数,具体是怎么清理的呢?很简单,只需要把esp指针pop出我们所压入的参数的

2010-09-23 11:55:00 463

原创 一个非常可耻的错误

<br />class A{ };class B{ operator A*() const{ return NULL; }};void fun(A* p){}int main(){ B *b = new B; B bb; fun(b); //很明显的ERROR fun(bb); //yes delete b;} <br />之前不知道怎么了这么无耻的错误都犯了。指针只能是算是一个地址,之前脑子总想着

2010-09-14 23:17:00 387

原创 类成员函数指针

<br />#include <iostream>using namespace std;class A{public: A():a(100){} void fun(int i){ cout << "this is "<< i << " " << a << endl; }private: int a;};typedef void (A::*myFun)(int);typedef void (*fun)(int);

2010-09-10 11:07:00 304

原创 写宏的时候一点

<br /> <br />关于宏的一点东西<br />在平时看C/C++代码的时候,经常会看到宏的定义,而有一些宏是这么写的:<br />#define JUSTFORTEST(x) do{ / if((x)) /   dosomething((x)) / }while(0)  <br />多出来的do{}while(0)看似多余的,我之前 也是觉得很多余,但是经过在网上一搜,才知道原来这是为了消除有时候由于宏而出现的歧义而作的。<br />比如: <br />#defi

2010-08-17 19:10:00 289

原创 装饰模式

<br />#include "stdafx.h"#include <iostream>using namespace std;struct IPerson{virtual void wear() = 0;virtual void show();virtual ~IPerson(){cout << "call delete person" << endl;}};class person : public IPerson{virtual void wear(

2010-08-12 13:59:00 341

原创 linux中scp的一些问题

<br />  之前遇到过一个很郁闷的问题就是:在本地scp文件到远程机子上时,一传送就失败,而终端里出现的是使用查看硬盘命令“df”所出现的首行字符串,然后一直找答案都找不到,后来。才发现原来是scp的问题,原来scp在每次跟远程终端交互的时候,会读取远程终端交互时候的输出信息。然后对其进行解释。这一点平时我不会遇到,但由于我那远程的机子里面,在.bashrc里面写了df -h,也就是每次用户登录都会执行该命令,所以会输出当前的硬盘使用情况。然而就是因为这一点而导致了我scp不成功。因为scp在传输文件的

2010-08-11 12:26:00 1118

转载 VIM 正则表达式

<br />元字符 说明 . 匹配任意一个字符 [abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围,      如[a-z0-9]匹配小写字母和阿拉伯数字。 [^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。 /d 匹配阿拉伯数字,等同于[0-9]。 /D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]。 /x 匹配十六进制数字,等同于[0-9A-Fa-f]。 /X 匹配十六进制数字,等同于[^0-9A-Fa-f]。 /w 匹配单词字母,等同于[0-9A-Za-z_

2010-07-06 13:48:00 274

原创 关于G++编译的一些问题

<br />今天写了一个小程序,有用到动态链接库。首先,编译一个动态链接库用到的参数是 -shared ,我用的编译是这样的。g++ -shared  new.cpp new.h -o new.so,然后再编译 主文件 main.cpp 去链接./new.so ,这样是没问题的,但是呢,路径就被指定了,而且是相对路径,这样的话,程序一放到其它地方就很有可能运行不了了。另一种解决方法就是把new.so给命名为libnew.so,这是默认的命名规范,然后在编译的时候用-L/path指定路径,紧追-lnew ,这

2010-06-30 23:23:00 473

转载 LUA中的TABLE函数库

<br />一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明. table.concat(table, sep, start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end

2010-06-22 18:15:00 443

转载 GDB使用

<br />GDB 常用命令参考手册 GDB 命令行参数GDB 命令GDB 操作提示GDB 相关手册相关链接<br /> <br /><br /> GDB 命令行参数 <br />启动 GDB: gdb executablegdb -e executable -c core-filegdb executable -pid process-id<br />(使用命令 'ps -auxw' 可以查看进程的 pid) 选项含义--help<br />-h列出命令行参数。--exec=file<br />-e fi

2010-06-17 10:35:00 630

原创 Lua初学

最近在看LUA语言的一些相关知识。觉得LUA语言要掌握起来还是比较容易上手的,主要就是要记得:LUA写程序就像你写文章一样,你想表达出来的东西完全不需要借助其它的思维转换(这么说有点过分,总之就是很简便,嘿嘿 )。在LUA里面,并没有像C语言的花括号来标示在一个域内,而仅仅是使用“end"关键字来标示一个域的结束。例如想写一个函数,我只需要这样function fun(x) return 'hello world' end 。fun函数则会返回hello world字符串,我觉得这样确实非常方便编写。因为我

2010-06-14 01:04:00 423

转载 ubuntu配置命令行提示符设置

<br />学习Ubuntu,如果没有使用命令行,那么:<br />1、其实和Windows的差别不是非常大<br />2、如果想进行一些比较复杂的配置,必须使用命令行<br />3、或者错过了一下比较精彩的东西。<br /><br />Ubuntu的命令行是可以定制的,可以使用下面的命令来显示当前的提示符设置:<br />echo $PS1<br />echo $PS2<br /><br />$PS1是主要的提示符设置,在ubuntu一般为:<br />${debian_chroot:+($debian_

2010-06-02 10:47:00 1358

原创 Linux下几个有用的命令

今天复习了下鸟哥的私房菜。看了定时执行任务的那章,发觉每次去看总是有收获呀。嘿嘿。这次就是重看了at 跟 crontab的用法,期间还不小心注意到另一个命令:chkconfig , 这个命令是能指定开机的时候是否同时开启某些服务。用法:chkconfig mysqld on / off   再想想今天的at的用法,这玩意假如想开启的话,需执行下/etc/init.d/atd start,然后

2010-05-18 00:14:00 409

原创 关于在linux下epoll的使用问题

      这阵子在linux下的一个项目需要用到epoll来承受网络的高负载,但是在使用的过程中就遇到了一些问题。在整个过程中,我是用EPOLL 的边缘触发模式来实现我想要的功能。      我是这样实现的:在EPOLL里面把监听的描述符给加了进去,然后调用epoll_wait来对客户端所连接进来的请求进行处理,假如接受到的描述符是我服务器的监听描述符的话,那么我就调用accept函数来

2010-05-07 15:49:00 804 2

空空如也

空空如也

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

TA关注的人

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