曾任职于阿里巴巴,现就职于美图,专业搬砖100年~
暂时未有相关通用技术能力~
阿里云技能认证
详细说明1. 全局变量的作用域是整个项目,它只需要在一个源文件中定义就可以作用于所有的源文件,其它不包括全局变量定义的文件需要用extern关键字再次声明这个全局变量。
一. 重载(overload) 1. 重载指的是函数具有的不同的参数列表,而函数名相同的函数。重载要求参数列表必须不同,比如参数的类型不同、参数的个数不同、参数的顺序不同。
指针常量、常量指针、指向常量的指针常量,这三个概念让很多人感到拗口,不好记住。但是只要你仔细研究,其实也就这么回事。 一. 指针常量 1. 所谓的指针常量指的是指针是一个常量,也就是常指针,和我们平时说的常量一样,指针指向的内存空间的地址是无法改变的 2. 声明一个指针常量 int* const p = &a,定义一个指针p并且该指针是常量只能指向变量a。
只能生成一个实例的类是实现了单例模式的类型,由于只能生成一个实例对象所以类的构造函数必须是private,因为类的构造函数是private我们只能通过类访问类的静态成员函数构造出一个实例。
题目:实现一个MyString类,类的声明如下 //MyString函数的实现 class MyString{ public: MyString(char *pData = NULL); MyString(const MyString &st...
法一:利用sizeof 可以使用sizeof计算int的字节长度来判断是32位还是16位。 32位机器下:sizeof(int) = 4;16位机器下:sizeof(int) = 2 但是实际中可能64位的机器sizeof(int)也是4字节,因为很多时候是编译器决定要占用几个字节 法二:利用最大值 1. 机器位数不同则表示的数字的最大值是不同的。
法一: #include #include using namespace std; int Count(int x){ int ans = 0; while(x != 0){ ++ans; x = x&...
1. 给定两个数x和y,朴素算法求解两个数的平均值是(x+y)/2,但是这种方法有个问题就是当x和y的和溢出的时候得到的平均值是错误的,我们可以采用位运算来解决这个问题。
一. C和C++中struct的区别 C语言中struct是用户自定义的数据类型,它是没有权限设置的,它只能是一些变量的集合体,虽然可以封装数据但是不能够隐藏数据,而且成员也不可以是函数。
一、宏定义和内联函数的区别 1. 宏定义不是函数,但是使用起来像函数。预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率。
typedef和#define都是替一个对象取一个别名,来增强程序的可读性,但是它们有以下几个区别 1. 原理不同 (1)#define是C语言中定义的语法,它是预处理指令,在预处理的时候进行简单的字符串替换,不作任何的正确性的检查,不管是否正确照样带入替换,只有在编译的时候才会发现错误并报错 (2)typedef是关键字,在编译的时候处理,所以typedef是有类型检查的功能,在作用域内给类型定一个别名 2. 功能不同。
一. #define简介 1. #define命令是宏定义命令,主要在预编译的时候进行字符替换,把宏名用宏体进行替换 2. 预编译的主要工作主要是进行代码文本的替换工作,用于处理#开头的指令,包括#Include、#define、#ifdef、#endif等等,预编译的工作只是纯粹的替换与展开,没有任何的计算功能 二. #define命令的缺陷 1. 无法进行类型检查。
题目:给定一颗二叉树的两个结点,求这两个结点的最近公共祖先结点 分析:1. 假如二叉树是二叉排序树 根据二叉排序树的性质,左子树结点的值小于根结点,根结点的值小于右子树结点的值 ...
题目:给定一个字符串,要求转成整数,不允许使用atoi或者其它类似库函数。 方案:实现这个函数并不难,但是要考虑以下几个问题 1.
题目:用C++实现一个不能被继承的类 思路:1. 在C++中如果一个类能够被继承,那么子类的对象在构造的时候会先调用父类的构造函数,再执行自己的构造函数。
题目:给定两个整数a和b,要求不能使用+、-、*、/四则运算求两个数的和 方案:1. 四则运算不能算的情况下,肯定只能借助位运算,所以应该考虑位运算 2.
题目:输入一个n求1+2+3...+n,要求不能使用乘除法、for、while、if、else、switch、case以及条件判断语句 方案:题目明确要求不能使用常规的解法,所以我们应该考虑使用另外一种解法 我们利用构造函数和...
一. 野指针 所谓的野指针指的是一个指针变量指向了不可使用的内存空间。 产生野指针三个原因: (1)指针变量创建时候没有被初始化:任何指针变量在创建的时候,不会自动成为NULL指针,它的默认值是随机的,因此该指针就会成为一个野指针,可能指向一块不可使用的内存空间。
1. 引用其实就是一个别名,它用于定义一个变量共享另一个变量的内存空间,变量是内存空间的名字,如果给内存空间起另外一个名字,就能够共享这个内存。
题目:给定n个数编号从1~n形成一个环,每次删除环中的第m个数,求最后一个被删除的数。 方案一:把n个数构造成一个环形链表,每次遍历链表删除一个。
题目:字符串的左旋转指的是把字符串前面若干个字符转移到字符串的尾部。例如输入字符串"abcdefg"和2,左旋转的结果就是"cdefgab" 方案一:常规作法利用一个O(n)的辅助空间,在利用O(n)的时间枚举字符串把字符串重新存储到新的辅助空间中。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字符一样处理。例如输入字符串"I am a student." 翻转后为"student. a am I" 方法:第一步翻转句子中的所有字符;第二步再翻转每个单词的顺序。
题目:输入一个整数s,打印出所有和为s的连续整数序列(至少含有2个数)。例如输入9,则输出2、3、4和4、5两个序列 方案一:由于序列至少要2个数,则两个数上限值为(1+s)/2,我们可以枚举该序列的起点和终点求所有满足的序列。
题目:输入一个递增的排序的数组和一个数字s,在数组中查找两个数,使得它们的和为s。如果有多对满足条件的则输出任意一对即可 方案一:枚举两个数求和判断,时间复杂度O(n^2),显然效率太低 方案二:枚举第一个数,二分第二个数,时间复杂度O(...
1. strlen是库函数,用来计算一个字符串的长度。从字符串的开头开始扫描,直到碰到第一个‘\0'字符为止,然后返回字符串的长度 2. sizeof是C/C++中的关键字,用来计算某一个类型或变量占用多少字节内存空间。
一:一个C/C++程序编译之后在内存中一般分为五个部分 1. 程序代码区:程序代码区主要用来存放程序执行代码,包括类成员函数、全局函数、静态函数等其它函数的代码。
题目:给定一个String类的类声明,要求实现类的函数体 类声明如下 class String{ public: String(const char *str = NULL); String(const String &another...
1. 在C++中申请动态内存与释放动态内存用new delete和malloc free都可以,并且new与malloc申请的内存空间位于堆区,无法被操作系统自动回收,需要手动delete 或 free来释放 2. new delete是C++中的一种运算符,malloc和free是C、C++中一种标准库函数,在C语言中需要用头文件#include支持。
先看一个程序代码 #include #include #include #include using namespace std; int main(){ char str1[] = "abc"; char str2[] = "abc...
const是C和C++中常见的关键字,在C语言中主要用来定义常量和修饰函数的参数和返回值,在C++中还可以用来修饰类的成员函数等 一. 什么情况下使用const关键字? 1.
static是静态的意思 C语言中static的作用 1. 在函数体内,静态变量具有“记忆”的功能,即在函数体内部一个被声明为静态的变量在函数的调用过程中值是不变的,初始化只会被执行一次 2. static全局变量和全局函数只能被本程序的函数所使用,不能被其它文件使用。
题目:输入一个整型数组,数组里除了两个数出现一次之外,其它所有数字出现的次数都是2次,求这两个数字。要求时间复杂度为O(n),空间复杂度为O(1) 1 题目要求时间复杂度为O(n)并且空间复杂度为O(1)。
题目:输入一颗二叉树的根结点,判断该二叉树是不是平衡二叉树。平衡二叉树是满足所有结点的左右子树的高度差不超过1的二叉树 方案一:遍历数组的每一个结点,对每一个结点求它的左右子树的高度并进行判断。
题目:统计一个数字k在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,输出4次 方案一:扫描数组,记录第一个出现的k和最后一个k中间有多少个,时间复杂度为O(n) 方案二:由于数组是有序的,那么我们可以利用二分的思想,求出k在数组中的第一个位置和最后位置相减即可。
推荐编写C++的代码风格,看似容易,坚持不易,且写且珍惜! --陈国林 1. 版本和版本声明 版本和版本文件声明位于头文件和定义文件的开头,主要内容 (1)版本信息 (2)文件名称、标识符、摘要 (3)当前的版本号、作者、修改日期 (4)版本历史信息 2.
1 快速排序的思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
1 如果没有看过scrapy的朋友,可以到scrapy的官网看一下再来看这篇文章 2 创建一个scrapy的项目,请看http://blog.
1 先介绍一个ubuntu下的mysql的可视化工具 利用命令:sudo apt-get install mysql-Workbench 2 在ubuntu12.
原文转载自:http://blog.csdn.net/geekcome/article/details/6249151 1. void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。
1 安装Python的Mysql包 root@10.
1 原文转载自: http://my.oschina.net/lujianing/blog/180728 2.设置相关绑定 Settings ——Version Control——Git——Path to Git ex...
连接Mysql 如果要在ubuntu下使用Python连接Mysql只要两个步骤就ok 第一步: 在终端下输入sudo apt-get install python-mysqldb ...
题意:给定一个字符串str,要求你只能在字符串的头部或尾部添加任意字符,使得最后的字符串是一个回文字符串并且满足字符串的长度最短,问最少需要添加几个字符。
原文转载自: http://info.0577job.com/news_19547 为了在面试前做进一步的筛选,用人单位往往用打电话的形式进行首轮面试。
1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 “sudo apt-get install git” 第二步: 创建GitHub帐号 第三步: 生成ssh key,使用命令 “ssh-keygen -t rsa -C "your_email@youremail.
原文转载自:http://www.eoeandroid.com/thread-274556-1-1.html 【初识Github】 首先让我们大家一起喊一句“Hello Github”。
首先我们需要先安装scrapy框架,没有安装的同学可以看ubuntu下安装scrapy网络爬虫框架 创建一个项目 Creating a project 1 进入到想要创建项目的目录: scrapy start...
原文转载自:http://www.cnblogs.com/HelloPython/ 根据Scrapy安装指南(http://doc.
这几天在windows用Python连接mysql,报出了“MySQLdb in Python: “Can't connect to MySQL server on 'localhost'””, 写了一个以下的挫代码,然后出...
原文出处: http://blog.csdn.net/five3/article/details/8648484 最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都是一个样,但是没有说明头尾,所以选择了一个尝试代价较小的ssh自动登录来替代之。