- 博客(750)
- 资源 (2)
- 收藏
- 关注
原创 【C++ - 10】C/C++中#define的探究
一. #define简介1. #define命令是宏定义命令,主要在预编译的时候进行字符替换,把宏名用宏体进行替换2. 预编译的主要工作主要是进行代码文本的替换工作,用于处理#开头的指令,包括#Include、#define、#ifdef、#endif等等,预编译的工作只是纯粹的替换与展开,没有任何的计算功能二. #define命令的缺陷1. 无法进行类型检查。宏定义是...
2014-05-26 22:47:13 1241
原创 【C++ - 9】C++中野指针和空指针和无类型指针
一. 野指针所谓的野指针指的是一个指针变量指向了不可使用的内存空间。产生野指针三个原因:(1)指针变量创建时候没有被初始化:任何指针变量在创建的时候,不会自动成为NULL指针,它的默认值是随机的,因此该指针就会成为一个野指针,可能指向一块不可使用的内存空间。 例如char *p; 这样创建一个指针p,指向一个随机的内存地址空间 所以指针在...
2014-05-26 10:00:37 3502
原创 【C++ - 8】C++中引用和指针的区别
1. 引用其实就是一个别名,它用于定义一个变量共享另一个变量的内存空间,变量是内存空间的名字,如果给内存空间起另外一个名字,就能够共享这个内存。2. 指针则是指向一个内存空间的变量,可以通过指针来查看某个内存空间的内容,而指针本身在32位机器下占据4个字节的空间指针和引用的区别有以下几个方面(1)指针是一个存放变量地址的变量,它可以被改变即可以指向不同的地址空间; ...
2014-05-26 09:24:24 930
原创 【6】连续序列和为s
题目:输入一个整数s,打印出所有和为s的连续整数序列(至少含有2个数)。例如输入9,则输出2、3、4和4、5两个序列方案一:由于序列至少要2个数,则两个数上限值为(1+s)/2,我们可以枚举该序列的起点和终点求所有满足的序列。时间复杂度为O(n^2),效率比较低方案二:我们设置两个指针start和end分别表示当前序列的起点和终点,并记序列和为sum。当sum = s的时候输出这个
2014-05-24 21:07:53 1579 1
原创 【5】和为s的两个数字
题目:输入一个递增的排序的数组和一个数字s,在数组中查找两个数,使得它们的和为s。如果有多对满足条件的则输出任意一对即可方案一:枚举两个数求和判断,时间复杂度O(n^2),显然效率太低方案二:枚举第一个数,二分第二个数,时间复杂度O(nlogn),效率高了很多方案三:设置两个指针p1,p2初始化指向数组的第一个数和最后一个数(即最小值和最大值),判断两个指针指向的两个数sum和
2014-05-24 20:29:41 1549
原创 【C++ - 7】strlen和sizeof的区别
1. strlen是库函数,用来计算一个字符串的长度。从字符串的开头开始扫描,直到碰到第一个‘\0'字符为止,然后返回字符串的长度2. sizeof是C/C++中的关键字,用来计算某一个类型或变量占用多少字节内存空间。strlen与sizeof主要区别如下:1. strlen是函数,sizeof是关键字2. sizeof操作符的结果类型是size_t,它在头文件中typ...
2014-05-24 19:12:33 1842
原创 【C++ - 6】一个C/C++程序内存分配形式
一:一个C/C++程序编译之后在内存中一般分为五个部分1. 程序代码区:程序代码区主要用来存放程序执行代码,包括类成员函数、全局函数、静态函数等其它函数的代码。这部分内存区域的大小在程序运行前就已经确定了,并且内存通常是只读的。一般程序代码区是可以被共享的2. 常量区:用来存放常量的内存区域,程序结束后由操作系统收回3. 全局数据区(静态存储区):存放全局变量和静态变...
2014-05-24 16:44:04 1061
原创 【C++ - 5】new delete和 malloc free的区别
1. 在C++中申请动态内存与释放动态内存用new delete和malloc free都可以,并且new与malloc申请的内存空间位于堆区,无法被操作系统自动回收,需要手动delete 或 free来释放2. new delete是C++中的一种运算符,malloc和free是C、C++中一种标准库函数,在C语言中需要用头文件#include<stdlib.h>支持。对于...
2014-05-24 14:37:01 1782
原创 【C++ - 4】字符指针和字符数组的使用区别
先看一个程序代码#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int main(){ char str1[] = "abc"; char str2[] = "abc"; char *str...
2014-05-24 12:33:56 1093
原创 【C++ - 3】C/C++关键字之const
const是C和C++中常见的关键字,在C语言中主要用来定义常量和修饰函数的参数和返回值,在C++中还可以用来修饰类的成员函数等一. 什么情况下使用const关键字?1. 修饰常量,比如const int MAXN = 10 或者 int const MAXN = 10;或者修饰常量数组const int ARR[2] = {1,2}; 编译器通常不会为常量分配内存空间,而...
2014-05-24 11:56:34 891
原创 【C++ - 2】C/C++关键字之static
static是静态的意思C语言中static的作用1. 在函数体内,静态变量具有“记忆”的功能,即在函数体内部一个被声明为静态的变量在函数的调用过程中值是不变的,初始化只会被执行一次2. static全局变量和全局函数只能被本程序的函数所使用,不能被其它文件使用。一般的全局变量和全局函数可以被项目其它文件所使用3. static变量,不论是全局static变量还是static局部变...
2014-05-24 10:30:28 1698
原创 【3】数组中只出现一次的数字
题目:输入一个整型数组,数组里除了两个数出现一次之外,其它所有数字出现的次数都是2次,求这两个数字。要求时间复杂度为O(n),空间复杂度为O(1)1 题目要求时间复杂度为O(n)并且空间复杂度为O(1)。这个时候朴素的方法利用数字来记录出现次数的方案都是不行的。2 根据题目的特点,只有两个数出现一次,其它的所有数据都是出现2次。如果这两个数是a和b,那么对这个数组异或的结果就是a^
2014-05-23 22:15:34 1254
原创 【2】输入一颗二叉树判断是不是平衡二叉树
题目:输入一颗二叉树的根结点,判断该二叉树是不是平衡二叉树。平衡二叉树是满足所有结点的左右子树的高度差不超过1的二叉树方案一:遍历数组的每一个结点,对每一个结点求它的左右子树的高度并进行判断。时间复杂度大于O(n),小于O(n^2)效率较低,因为有很多点需要重复访问。//二叉树的结点struct BinaryTreeNode{ int m_value; Bin
2014-05-23 21:08:24 3033
原创 【1】数字在数组中出现的次数
题目:统计一个数字k在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,输出4次方案一:扫描数组,记录第一个出现的k和最后一个k中间有多少个,时间复杂度为O(n)方案二:由于数组是有序的,那么我们可以利用二分的思想,求出k在数组中的第一个位置和最后位置相减即可。时间复杂度为O(logN)注意严格按照良好的C++编码风格#include
2014-05-23 20:09:49 2199
原创 【C++ - 1】高效C++编程
推荐编写C++的代码风格,看似容易,坚持不易,且写且珍惜! --陈国林1.版本和版本声明版本和版本文件声明位于头文件和定义文件的开头,主要内容(1)版本信息(2)文件名称、标识符、摘要(3)当前的版本号、作者、修改日期(4)版本历史信息2.程序版式(1)在每个类声明之后、每个函数定义之后都要加上一个空行(2)一行代码只做一件事情(3)if、...
2014-05-23 12:40:20 1733
原创 【ICPC-465】算法研究之快速排序
1 快速排序的思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序的思想就是通过分治策略,每次对两部分的数据进行递归排序。假设我们要排序的数组是arr,从left~right这一段,我们每次选择...
2014-03-11 13:17:10 1119
原创 【Python-30】第一次实现抓取数据并且存放到mysql数据库中
1 如果没有看过scrapy的朋友,可以到scrapy的官网看一下再来看这篇文章 2 创建一个scrapy的项目,请看http://blog.csdn.net/chenguolinblog/article/details/19699865 3 下面我们就一个一个文件的来分析,最后我会给出GitHub上面的源码(1)第一个文件 spidr.p...
2014-03-11 00:32:12 15663 8
转载 C/C++学习 ---- void及void指针含义的深刻解析
原文转载自:http://blog.csdn.net/geekcome/article/details/62491511. void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。2. void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *p...
2014-03-10 18:11:49 1348
转载 【Python-34】Linux下利用 Python连接mysql数据库一个很好的例子
原文转载自:http://my.oschina.net/davehe/blog/1283611 安装Python的Mysql包root@10.1.1.45:~# apt-get install python-mysqldbroot@10.1.1.45:~# pythonPython 2.5.2 (r252:60911, Jan 4 2009, 21:59:32) [G...
2014-03-09 20:55:42 2944
转载 Intellij IDEA 提交代码到远程GitHub仓库
1 原文转载自: http://my.oschina.net/lujianing/blog/1807282.设置相关绑定Settings ——Version Control——Git——Path to Git executable——选择你的安装目录,例如ubuntu下/usr/bin/gitSettings ——Version Control——GitHub这
2014-03-09 00:01:57 20473
原创 【Python-33】ubuntu下使用Python连接Mysql数据库和Mongodb数据库
连接Mysql 如果要在ubuntu下使用Python连接Mysql只要两个步骤就ok 第一步: 在终端下输入sudo apt-get install python-mysqldb 第二步: 在终端下测试 如果可以导入MySQLdb的包说明,可以成功的使用MySQL ...
2014-03-06 20:45:26 2013
原创 【ICPC-68】字符串水题
题意:给定一个字符串str,要求你只能在字符串的头部或尾部添加任意字符,使得最后的字符串是一个回文字符串并且满足字符串的长度最短,问最少需要添加几个字符。 分析:首先先看一下,什么是回文?回文有两种形式,(1)是xxxcxxx,(2)是xxxccxxx。分别表示的是长度为奇数和偶数的回文串 对于一个长度为len的字符串,要求你只能在字符...
2014-03-05 21:37:15 1357
原创 Linux下Git和GitHub使用方法总结
1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 “sudo apt-get install git” 第二步: 创建GitHub帐号 第三步: 生成ssh key,使用命令 “ssh-keygen -t rsa -C "your_email@youremail.com"”,your_email是你的email 第四步: 回到g
2014-02-25 20:24:51 26249 6
转载 【Github教程】史上最全github使用方法:github入门到精通
原文转载自:http://www.eoeandroid.com/thread-274556-1-1.html【初识Github】首先让我们大家一起喊一句“Hello Github”。YEAH!就是这样。Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。
2014-02-23 21:36:20 1831 1
原创 【Python-29】 Linux下编写最简单的scrapy网络爬虫项目
首先我们需要先安装scrapy框架,没有安装的同学可以看ubuntu下安装scrapy网络爬虫框架 创建一个项目Creating a project 1 进入到想要创建项目的目录:scrapy startproject tutorial 这样就可以创建了一个新的scrapy项目tutorial 2 看一下项目的树形图...
2014-02-22 21:42:34 8744 2
转载 【Python-28】ubuntu下安装爬虫框架scrapy
原文转载自:http://www.cnblogs.com/HelloPython/根据Scrapy安装指南(http://doc.scrapy.org/en/latest/intro/install.html)Don’tuse thepython-scrapypackage provided by Ubuntu, they are typically too old...
2014-02-20 20:12:38 5225 2
转载 【Linux-37】linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
原文出处:http://blog.csdn.net/five3/article/details/8648484最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都是一个样,但是没有说明头尾,所以选择了一个尝试代价较小的ssh自动登录来替...
2014-02-18 15:36:43 1941
转载 【Python-27】scrapy爬虫架构介绍和初试
原文出处:http://my.oschina.net/dragonblog/blog/173290上一篇文章的环境搭建是相对于手动操作的过程,而大家可能对这个疑问是什么是scrapy?为什么要用scrapy?下面主要是对这两个问题的简要回答。请尊重作者的工作,转载请注明出处http://my.oschina.net/dragonblog/blog/173545相信大家在百度或go...
2014-02-16 22:29:19 3123
原创 【Linux-22】管理重任p
9.1 收集进程信息 1 进程是程序的运行实例,运行在一台计算机中的多个进程各自分配了一个称为进程ID的唯一标识数字 2 同一个程序的多个实例可以同时运行,但是他们的进程ID却互不相同 3 一个进程包括多种属性,例如拥有该进程的用户,进程使用的内存数量,进程占用的CPU等 4 ps是收集进程信息的重要工具,它提供了信息包括:拥有进程的用户,进程的起始时...
2014-02-04 08:56:30 1971 1
原创 【Linux-21】当个好管家
8.1 统计磁盘的使用情况 1 磁盘空间是一种有限资源 2 df和du是Linux中用于统计磁盘使用情况的重要命令,df是disk free的缩写,du是disk usage的缩写 3 找出某个文件(或多个文件)占用的磁盘空间: du file1 file2 ... // 统计结果默认是以字节作为计算单位 4 要获得某个目录中所有文件...
2014-02-01 09:06:39 2524 1
原创 【Linux-20】无网不利
7.1 联网知识入门 1 网络上每一个节点都需要分配多个参数才能够与其它主机顺利实现互联,这些参数包括子网掩码,网关,路由,端口,DNS等 2 ifconfig命令用于显示网络接口,子网掩码等详细信息 3 ifconfig是位于/sbin/ifconfig,当输入该命令的时候,一些GNU/Linux发行版本会显示错误,在Debian中,ifconfig默认是不可...
2014-01-28 21:09:55 2302 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人