自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C/C++编译的程序占用的内存

一个由C/C++编译的程序占用的内存分为以下几个部分:堆,栈,代码段,数据段,BSS段。1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(

2015-03-30 21:41:13 448

原创 C/C++ socket编程(2)

C/C++ socket编程(2)socket阻塞,非阻塞套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。/// linux环境下设置非阻塞void setnonblocking(

2015-03-30 21:36:58 499

原创 linux 路径分割

linux 路径分割(1) 获得当前工作目录的绝对路径获取当前工作目录是使用函数:getcwd。cwd指的是“current working directory”,这样就好记忆了。函数说明:    函数原型:char* getcwd(char* buffer, int len);    参数:buffer是指将当前工作目录的绝对路径copy到buffer所指的内存空间, len

2015-03-30 20:43:02 2792

原创 C/C++ socket编程(1)

C/C++ socket编程(1)1.主机名到IP地址的映射。IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。例子:bool MY_getHostbyName(char * const hostname){ struct hostent

2015-03-30 20:28:48 584

原创 C/C++ new与malloc()

C/C++ new与malloc()malloc(),free()是库函数;new,delete是C++的运算符。因此,malloc/free 需要库函数的支持,new/delete不需要,而且可以重载运算符。共同点:可以满足动态分配内存和释放内存。不同点:(1) malloc()返回值是空类型指针 (void *) 。new 返回的是对应类型的指针。

2015-03-30 19:55:05 428

原创 c/c++ 处理字符串时要注意的问题

c/c++ 处理字符串时要注意的问题。最近在写一个文件操作的时候,出现了一点儿问题。虽不是大问题,但是不注意的话会产生错误。写了一个块读取的方法。从inf 流中,最多读取num个字符,保存在buf中,并返回读取字符数。int readFromStream(ifstream &inf, char *buf, int num){ //cout<<"her"<<

2015-03-26 08:33:00 1779

原创 c++ 中默认参数的函数声明和定义的注意事项

c++ 中默认参数的函数声明和定义的注意事项。(1)函数调用在函数定义之前。必须在声明中指出默认参数,否则编译出错。(形参名给出与不给出都可以)int funcc(int x = 7, int y = 8); //给出形参名//int funcc(int = 7, int = 8); //不给出形参名int main(){ cout<<funcc()<<endl;

2015-03-23 14:52:21 3167

原创 c++中, 构造函数和析构函数的执行顺序

c++中, 构造函数和析构函数的执行顺序。在面试和实际编程中,会遇到多重继承的问题。顺序很重要,理解着记。看下例子:#include using namespace std;class Base{public : int x0; Base(int a = 0) { x0 = a; cout<<"in Base

2015-03-23 14:20:52 612

原创 c语言头文件

c语言头文件每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.

2015-03-21 16:29:18 873

原创 程序占用的内存

一个由C/C++编译的程序占用的内存分为以下几个部分:堆,栈,代码段,数据段,BSS段。1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

2015-03-20 20:43:35 427

原创 c语言关于字符串常量的问题

c语言关于字符串常量的问题。我们先看一个例子:char *ptr = "David";ptr[4] = 'x';printf("%s\n", ptr);// 这里说一下,ptr是指针, 指向一个字符串 常量!!// 所以说// ptr[4] = 'x';// 上面的语句是能通过编译的!// 但是运行的时候会出现问题!!---- segmentatio

2015-03-20 19:06:31 548

原创 c语言中的“左值”和“右值”

c语言中的“左值”和“右值”左值左值就是在赋值中可以放在赋值操作符 (=)  左边 的值,当然也可以放在右边,比如: int a = 1; double b = 2.0 a = b; b = a; 这里a和b都是左值,一切变量都是左值,但const变量是例外。 右值而右值则是只可以放在赋值操作符右边的值,比如: int a =

2015-03-20 18:58:34 1214

原创 文件中的#ifndef

文件中的#ifndef 头文件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: #ifndef  #d

2015-03-20 18:54:06 353

原创 ubuntu 下 安装 rpm软件包

小知识系列Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb。 sudo apt-get install alien #alien默认没有安装,所以首先要安装它 sudo alien xxxx.rpm #将rpm转换位deb,完成后会生成一个同名的xxxx.deb sudo dpkg -i xxxx.deb #安装 

2015-03-20 18:51:22 486

原创 c语言中 定义和声明 的区别

c语言中 定义和声明 的区别关键的区别: 是否分配内存声明:声明(declaration )指定了一个变量的标识符,用来描述变量的类型,是类型还是对象,或者函数等。声明,用于编译器(compiler)识别变量名所引用的实体。定义:定义是对声明的实现或者实例化。连接器(linker)需要它(定义)来引用内存实体。文字说明是不是太繁琐,不形象。那么我们就用程序代

2015-03-19 15:10:26 474

原创 c语言中,指针的故事

关于指针的二三事儿指针就是地址,是C语言的精髓。指针是灵活的,有时候也会是灾难的。学会,掌握指针,从这里做起。这里主要引用了网络上的文章,《C指针详解(经典,非常详细)》,作者未知。在此,感谢网络中无私奉献的大神们,大牛们!!(1)识别看指针,先从标识符看起,按照优先级结合,找出指针的类型,指向类型等。直接和标识符相连的,表示不同的意义。[] ==>

2015-03-19 11:10:26 583

原创 Python错误: SyntaxError: Non-ASCII character

Python错误: SyntaxError: Non-ASCII character在学习python编程时,需要输出中文。但是会出现如下的:SyntaxError: Non-ASCII character '\xe4' in file ./pyEx04.py on line 5, but no encoding declared; see http://www.python.or

2015-03-14 15:12:07 492

原创 JAVA--GC

GC的基本原理基础知识:默认的虚拟机仍然是HotSpot。(Garbage Collection,垃圾收集,垃圾回收)。内存泄漏:用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。由程序申请的一块内存,如果没有任何一个指针指向它,那么这块内存就泄漏了。内存

2015-03-11 20:28:39 489

原创 c语言下,关闭socket的两种方式

c语言关闭socket的两种方式一、shutdown()#includeint shutdown(int sockfd,int how);how的方式有三种分别是SHUT_RD(0):关闭sockfd上的读功能,此选项将不允许sockfd进行读操作。不允许接受。SHUT_WR(1):关闭sockfd的写功能,此选项将不允许sockfd进行写操作。不允

2015-03-10 19:29:03 9472

原创 git笔记--补充

在git学习过程中,也看到了一些其他的要点,这里补充一下。学习要不断的积累。git cheat sheetShow changes over time for a specific file$ git log -p Who changed what and when in $ git blame Mark the current commit wit

2015-03-09 19:35:26 401

原创 git笔记--(4)

5.标签发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。1.建立标签$

2015-03-09 19:12:57 431

原创 git笔记--出现问题总结

在我学习git过程中,也遇到一些小问题,暂时总结一下。git遇到的问题--(1)git 逻辑问题Git push 报错 "error: failed to push some refs to " 解决Git push 报错 "error: failed to push some refs to " .此问题出现的原因是:由于远程仓库中代码版本与本地不一致冲突导致的。由于我在

2015-03-07 11:49:39 441

原创 git笔记--(3) --分支管理

4.1分支管理git checkout -b dev #创建分支,并切换到新建分支。相当于:git branch #创建分支git checkout dev #切换分支git branch #查看分支,当前分支前面会标一个*号。git merge #合并分支,合并指定分支到当前分支。$ git merge devUpdating d17efd8.

2015-03-07 11:41:11 665

原创 git笔记--(2) 远程库

3.1远程仓库Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。在继续阅读后续内容前,请自行注册GitHub账号。由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:(建立 github帐号,“Create repository” www.github.com)第1步:创建SSH Key。$ ssh-ke

2015-03-07 11:37:31 402

原创 git笔记--(1)

git笔记在ubuntu(linux)环境下。git只能维护文本文件,对于二进制文件不好用。1.1安装:sudo apt-get install git1.2查看版本git --version2.1创建版本库mkdir myGitcd myGit/pwd ##命令用于显示当前目录git init ##命令把这个

2015-03-05 08:14:21 421

java代码格式模板

eclipse上的java代码格式模板 windows-> preferrences->code-style里导入

2016-01-05

空空如也

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

TA关注的人

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