自定义博客皮肤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)
  • 收藏
  • 关注

转载 PyCharm快捷键大全

1、编辑(Editing)Ctrl + Space 基本的代码完成(类、方法、属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + P 参数信息(在方法中调用参数)Ctrl + Q 快速查看文档F1Web帮助文档主页Shift + F1 选中对象的Web帮助文档Ctrl + 悬浮/单击鼠标左键 简...

2019-03-21 16:26:42 128

转载 native mysql 的快捷键

1.ctrl+q           打开查询窗口2.ctrl+/            注释sql语句3.ctrl+shift +/  解除注释4.ctrl+r           运行查询窗口的sql语句5.ctrl+shift+r   只运行选中的sql语句6.F6               打开一个mysql命令行窗口7.ctrl+l            删除一行8.ctrl+n   ...

2018-05-29 10:04:45 980

转载 Zend studio快捷键使用

https://blog.csdn.net/yaoyuan_difang/article/details/8609918  Zend studio快捷键使用 F3 快速跳转到当前所指的函数,常量,方法,类的定义处,相当常用。当然还可以用Ctrl+鼠标左键 win+D 显示桌面(可切回来)shift+end 此行第一个到最后一个shift+home 此行最后一个到第一个Ctrl+home 文件头Ct...

2018-05-24 18:49:07 190

原创 C++ 单例模式

一、设计模式设计模式:代表的是最佳实践,是软件开发过程中面临一般问题的解决方案,是面向对象语言所共有的。(类似于打仗时,使用的兵法)。设计模式一共有二十三种,本文重点介绍单例模式。常见的设计模式:适配器模式、迭代器模式、工厂模式、单例模式、生成器模式、装饰器模式、门面模式、代理模式、桥接模式适配器模式在之前学习栈和队列时,我们发现栈和队列的底层,并非自己实现,而是通过调用栈和队列(库中默认是双端队...

2018-03-24 16:45:40 196

原创 Linux中gcc、gdb、ctags的使用

一、程序的编译链接一个源代码要成为一个可执行程序,需要经过编译器的编译、链接。在Linux中的编译器主要有两种:gcc 、 g++ ;gcc主要用于编译C代码;g++用于编译C++代码。那如何查看编译的三个小过程呢?预处理:通过上图,可以看到生成了一个.i文件;命令:gcc -E test.c -o test.i解释:gcc 表示用gcc编译器编译 ; -E 是表示将源文件在预处理完成后便停止;-...

2018-03-20 17:23:27 567

原创 线程

一、进程和线程的区别1、什么是进程进程:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。简言之:进程就是正在运行中的程序。2、进程的特征动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。并发性:任何进程都可以同其他进程一起并发执行。独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。异步性...

2018-03-16 14:29:32 163

原创 常见的排序算法

常见的排序算法包括:直接插入排序  、希尔排序、  选择排序    、堆排 、快排 、归并排序;本篇文章将围绕着各种算法的思想、实现以及时间复杂度进行说明。(均已升序为例)一、直接插入排序 思想: 就是将一个数,往一段有序区间内插入,通过调整使得插入之后的区间有序;代码实现//直接插入排序 时间复杂度 O(N^2) 最好 O(N) 本身已经有序 ;最坏O(N^2) 逆序 void Insert...

2018-03-09 18:13:39 189

原创 每日一题---day7

基础题:实现一个栈Stack,要求Push(出栈)、Pop(入栈),Min(返回最小值的操作)的时间复杂度为O(1)代码:#includetemplateclass Stack{public: void Push(T x) { if(min.empty()) { min.push(x); s.push(x); } else

2018-01-28 16:28:26 176

原创 每日一题---day8

基础题:元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列(4,5,2,3,1),则不合法。思路:栈的性质是后进先出,但入栈的同时也可进行出栈操作代码:bool IsLegal(const int* in,size_t inlength,const int* out,si

2018-01-28 15:38:08 129

原创 每日一题---day6

基础题:1、两个栈实现一个队列思路:栈的特点:后进先出队列的特点:先进先出两个栈可将一个栈用于入数据,另一个用于出数据;代码:#define _CRT_SECURE_NO_WARNINGS#include<stack>#include<cassert>template <class T>class myqueue{public: void Push...

2018-01-28 13:11:22 187

原创 每日一题---day5

基础题:1、删除一个无头单链表的非尾结点思路:一般单链表结点的删除需要知道要删结点的前一个结点然后进行删除,但现在是无头单链表即不能从头结点开始遍历,寻找它的前一个结点,此时已知的是要删结点的位置,可利用交换数值来删除;代码:void RemoveNode(ListNode* pnode){ assert(pnode); ListNode* next = pnode->_next; ...

2018-01-23 14:15:00 140

原创 每日一题---day4

基础题:1、判断两个链表是否相交,若相交,求交点(假设链表不带环) 思路: 代码: ListNode* Intersect(ListNode* l1,ListNode* l2) { if(l1==l2)//若两链表相同,或都为空 return l1; size_t length1 = 0 ; size_t length2 = 0

2018-01-23 11:59:53 178

原创 每日一题---day3--1-17

基础题:判断链表是否带环?思路:代码实现:bool HaveLoop(ListNode* l){ if(l == NULL) return false; ListNode* fast = l; ListNode* slow = l; while(fast && fast->_next) { fast = (fast->_next)->_n...

2018-01-18 16:58:47 162

原创 每日一题 ---day2 --1-16

基础题:逆置/反转单链表,要求只遍历一次链表解题思路:定义三个指针: 代码:void Reverse(ListNode*& l){ assert(l); ListNode* cur = l; ListNode* tmp = NULL; ListNode* next = NULL; while(cur) { n

2018-01-16 17:47:06 128

原创 每日一题 ---day1--1-15

基础题:合并两个有序单链表,合并以后的单链表依然有序;方法一、ListNode* MergeList(ListNode* l1,ListNode* l2) //合并有序单链表{ ListNode* newlist = NULL; if(l1 == NULL)   return l2; if(l2 == NULL)   return l1;  if(l1->_data &lt...

2018-01-16 11:57:44 314

原创 Linux 编译环境的安装

今天主要来介绍一下如何安装gcc/g++,gdb 编译器;主要有两种方法,一种是通过yum命令安装,另一种则是通过下载源码安装,作为初学者来说,前一种方法相对简单,并且容易掌握。以下是具体的步骤:1、 先在普通的用户模式下使用 : which gcc  查看当前系统是否已存在gcc (一般系统会自带gcc,vim);2、如果没有,则使用: su 命令进入root模式; 输入命令: yu

2018-01-15 14:34:07 9018

原创 数据结构----图

图的概念:图是一种非线性结构,由顶点即顶点的关系构成的一种数据结构;图的应用场景有:地图、用来描述社交关系、在网络中的路由选择。     图的基本知识:     图可以按照顶点间的边的方向分为:有向图 、 无向图;     完全图 :在由n个结点构成的无向图中,若有(N(N-1))/2 条边,则成为完全图;     权重:在一些图中,边具有与之相关的数值,称为权值;

2017-12-28 17:29:41 161

原创 C++多态及多态模型

C++多态及多态模型一、名词解释1)虚函数:类的成员函数前面加上virtual关键字,则这个成员函数是虚函数;虚函数是存在代码段的,虚函数的指针是存在虚表中的;(注意:必须是类的成员函数,静态成员函数不能定义成虚函数)2)重写(覆盖):在子类中定义了一个和父类中完全相同的成员函数(函数名,参数,返回类型完全相同,但协变除外)协变:子类和父类有同名且参数相同的函数,返回类型即:父类的返回类型为父类的...

2017-12-10 12:20:35 234

原创 数据结构 — 海量数据处理

在之前的数据结构学习中,关于数据的搜索,主要有搜索二叉树、AVL树、红黑树、哈希表这几种算法;当数据较少时,可以使用这些算法;当数据量特别大(超出内存的容量),这些算法便不能处理了。那如何处理海量数据呢?下面有几道题1)给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址 思路:100G大小,它明显超出了内存的容量范围;要处理这些大数据,可以将它

2017-12-10 11:41:47 258

原创 Linux命令

Du命令:Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的.1.命令格式:du [选项][文件]2.命令功能:显示每个文件和目录的磁盘使用空间。3.命令参数:-a或-all  显示目录中个别文件的大小。(以KB为单位)   -b或-bytes  显示目录或文件大小时,以b

2017-12-06 16:41:59 112

原创 AVL树

数据结构——AVL树1、为什么要引入AVL树?在前面的一节引入了二叉搜索树,这样可以方便搜索,但搜索的效率取决于搜索树的高度;因此要想提高查询的效率,便要降低二叉搜索树的高度。2、什么是AVL树?AVL树又称为高度平衡的二叉搜索树,是1962年有俄罗斯的数学家G.M.Adel'son-Vel'skii和E.M.Landis提出来的。(AVL的由来)它能保持二叉树的高度平衡,尽量降低

2017-11-06 21:28:47 145

原创 智能指针

1、为什么要引入智能指针?在c++中动态开辟的空间必须手动释放,在java中有垃圾回收机制,可 自动回收资源。智能指针是为了解决内存泄漏问题。内存泄漏:动态开辟的空间,没有得到释放;引发内存泄漏的原因: 1)new出来的空间没有delete; 2)执行流发生跳转,导致没有执行delete;引发执行流跳转的原因:异常、return、break、continue、goto语句内存泄漏的危害:导致内

2017-10-08 22:37:22 211

原创 模板的分离编译

**1、模板的概念**模板是泛型编程的基础,所谓泛型编程就是编写与类型无关的逻辑代码。提高了编写代码的效率,使代码能够复用。**2、模板的分类**模板函数、模板类**3、模板的格式**template<class 形参名1,class 形参名2>注释:template是关键字,“模板”的意思,class代表类型,也可以用t

2017-09-26 14:37:47 232

原创 模板实现顺序表和循环双链表

1.模板实现顺序表#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include<iostream>#include<string>using namespace std;template<class T>class SeqList { public: SeqList() :_a(NULL) ,_s

2017-08-04 09:27:02 211

原创 继承

什么是继承?面向对象语言的三大特性分别是封装、继承、多态。继承是为了实现复用;往往将一些类公有的属性定义为父类,也称基类,通过父类创建的类称为子类,也称派生类。c++中有三种访问限定符,分别是public(公有)、protected(保护)、private(私有),1、public:在类外可以访问;2、protected\private:在类外不能访问;(在父类中protected

2017-08-02 21:12:01 193

原创 c++写时拷贝

为什么要用写时拷贝?在c++中一个类有六个默认成员函数,其中拷贝构造函数分为浅拷贝和深拷贝;浅拷贝是一种值拷贝,深拷贝不仅是值拷贝,还要做其他处理;深浅拷贝的区别:由上图可知当一个拷贝构造一个需动态开辟空间的对象时,用浅拷贝时会出现同一块空间被释放两次,这样显然有问题,用深拷贝的话可以解决此问题,但当拷贝构造出来的对象,不需要修改时,使用深拷贝就有些浪费空间了,采用引用计数

2017-07-30 14:52:10 893

原创 c++动态内存管理

**c语言动态内存管理**c中关于动态内存的标准库函数:malloc() ,calloc() ,realloc(),free()以下是关于这几个函数的介绍:1、malloc(),用于动态开辟内存(堆空间),返回类型为void *,参数(size_t size)是无符号整型表示要开辟的空间大小,单位是字节,2、calloc(),用于动态开辟内存(堆空间),返回类型为void *,参数有 (size

2017-07-19 17:59:05 404

原创 函数重载

什么是函数重载?函数重载是c++,对c的一个扩充,在传统的c语言中,在同一个作用域内,函数名必须是唯一的,也就是说不允许出现同名函数,在c++中,引入函数重载,即:在同一作用域内,函数名相同,但函数的参数列表不同(参数类型,参数的个数),返回类型可同可不同。如何实现函数重载?在c语言中,在编译期间,会对函数进行重命名,都是在函数名之前加上下划线来命名,当出现同名函数时编译器将不

2017-07-07 11:07:28 347

原创 线性数据结构--顺序表

线性数据结构:1、顺序表:连续的空间,通过数组实现(seqlist);2.链表:存储空间不连续,分为:单向链表、双向链表、循环链表(linklist);首先介绍顺序表的实现:动态链表可以进行元素的插入、删除、排序具体代码如下:1.初始化利用malloc()函数动态开辟内存空间2.检查顺序表容量,若容量等于默认容量则进行增容

2017-07-05 19:25:39 273

原创 指针与引用

一、指针的概念指针一般指向一个函数或一个变量。在计算机语言中,由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元,因此将地址形象化的称为“指针”。二、引用的概念引用是c++对c的一个扩充,变量的引用就是变量的别用,因此引用又称为别名。由此可以看出指针是变量的地址,而引用指的是变量本身.三、引用的用法声明一个引用的格式:类型 &引用名=已定义的变量名例如:int

2017-07-04 13:47:51 549

原创 c注释向c++注释的转换

在c语言中支持嵌套注释,而c++语言不支持c注释风格:/*  */c++注释风格://那么如何将c注释转换为c++注释呢?大致有以下情况:       1.单行注释/* int i=0;*/                            2./* int j=0;*/int k=0;/* int m=0;*/int n=0;3./

2017-06-29 20:34:09 226

原创 c实现单链表面试题

typedef int DataType;//数据类型的重定义typedef struct Node{ DataType _data; struct Node* next;//指向下一个结点的指针}Node,*pNode,*pList;void InitLinkList(pList* pplist) //链表初始化函数{ assert(pplist);

2017-06-29 11:58:35 268

原创 三子棋游戏

#ifndef __GAME_H_//防止文件被多次调用#define __GAME_H_#define ROWS  3#define CLOWS 3//棋盘的纵坐标#include#include#include#includevoid game();void init_board(char board[ROWS][CLOWS],int row,int c

2017-05-07 19:10:23 368

原创 编程练习

3.求两个数的平均值。求两个数的平均数是,往往会想到的是(a+b)/2,但这样算存在一定的缺陷,当a,b为两个比较大的数字时,这样的方法就会出错;那到底有没有更好的方法呢?答案是肯定的,如下两种方法:#includeint main(){int a=7;int b=5;        int aver=(a&b)+((a^b)>>1);//法一:数字在内存中是以补码的形

2017-05-07 19:06:56 220

原创 进阶--编程练习

1.有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".要求:不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。#include#include#includevoid reverse_word(char *left,char *right)//逆序一个单词{assert(left!

2017-05-07 18:47:15 208

原创 程序的编译和链接

一个源程序要成为一个可执行程序需要经历两个环境,分别是翻译环境、运行环境。 翻译环境分为两个过程,分别是编译、链接;编译又分为三个子过程,分别是预处理器处理、编译、汇编;编译:预处理器处理主要是:                                   1、注释删除                                   2、头文件的包含   

2017-05-01 17:54:29 168

空空如也

空空如也

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

TA关注的人

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