自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Doo66的博客

爱拼才会赢

  • 博客(53)
  • 收藏
  • 关注

原创 理解C++三大特性

封装,继承,多态     封装可以隐藏实现细节,使得代码模块化,继承可以扩展已存在的模块,它们目的都是为了:代码重用。而多态是为了实现另一个目的:接口重用。什么是多态?     eg:开门,开窗户,开电脑,这里“开”就是多态。     多态性可以简单概括为“一个接口,多种实现”,是通过虚函数实现的。基类提供一个虚接口,其派生类重写这个接口,这样就构成了多态。

2016-08-15 10:26:16 16429

原创 结构体内存对齐

为什么会出现内存对齐?    因为当CPU访问内存对齐的数据时,它的运行效率是非常高的。当CPU试图读取的数值没有正确的对齐时,CPU可以执行两种操作之一:产生一个异常条件;执行多次对齐的内存访问,以便读取完整的未对齐数据,若多次执行内存访问,应用程序的运行速度就会慢。所以计算机采用内存对齐的方式来存储数据。这是高效编程一种很重要的思想:以空间换时间关于结构体内存对齐(没有指定#pragma pa

2016-06-05 18:38:16 520

原创 C++_智能指针

讲这个之前,先来看一个例子:void Test1 (){    int* p1 = new int(2);    //...    try     {         DoSomeThing();    }    catch(...)    {      delete p1 ;      throw;    }    //...    delete p1 ;}这个例子

2016-06-05 18:38:02 369

转载 学习笔记(1):150讲轻松搞定Python网络爬虫-爬虫介绍(资料在第一节中下载)

【为什么学爬虫?】        1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!        2、如果是...

2021-01-11 19:59:06 126

原创 服务器相关

服务器问题描述及解决方案

2018-07-17 13:25:16 222

原创 QT多线程操作

1.继承QThread的线程操作​2.继承QObject的线程操作

2018-07-17 11:45:19 411

转载 QT 窗口无法最大化

// Qt的主窗口没有最小化,最大化按钮且最大化显示 int main(int argc,char * argv []) { QApplication a(argc,argv); TestQtForWinCE w; w.setWindowFlags(w.windowFlags()&〜Qt :: WindowMaximizeButtonHint&〜Qt :: WindowMinimizeButton...

2018-06-26 10:41:03 3685

转载 。。。。。。

数字媒体春天来了:腾讯独家签约NBA的背后作者: 科技观察来源: 科技观察2015-02-28 16:53:552014年已经尘埃落定,圈里的人,有的哭、有人笑。这一年,纸质媒体宣布停刊的消息此起彼伏,另一边,以澎湃为首的新媒体初生便如狼似虎,频频夺人眼球之余也获得大量用户下载、关注。显然,2015年的媒体圈用水深火热来形容最合适不过了。新闻客户端们在2014年获得

2016-12-13 14:45:24 395

原创 客户端与服务器端

客户:服务请求方服务器:服务提供方客户程序:1.被用户调用后运行,在通信时主动向远地服务器请求服务。因此,客户程序必须知道服务器程序的地址。2.不需要特殊的硬件和很复杂的操作系统服务器程序:1.是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。2.系统启动后即自动调用并一直不断运行着,被动地等待并接受来自各地的客户的通信请求。因此,服

2016-08-17 08:09:18 695

原创 重载,覆盖,隐藏

重载:同一作用域内,函数名相同,参数类型不同的一类函数,他们就构成了重载。覆盖:基类提供一个虚方法,子类继承基类并且重写这个虚方法,这样就构成了多态。隐藏:基类的非虚方法被子类继承时重写,那么基类的方法就会被隐藏,在用子类对象该方法,就只会调用子类的方法。

2016-08-15 10:41:45 388

原创 内联函数与宏定义区别

内联函数和普通函数相比可以加快程序的运行效率,因为它不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。而宏只是在预处理阶段一个简单的字符替换。内联函数需要做类型检查,这是相比宏的一个优势。宏是在代码处不加任何验证的简单替代,而内联函数是将代码直接插入调用处,而减少了普通函数调用时的资源消耗。宏不是函数,只是在预处理时将程序中有关字符替换成宏体。关键字i

2016-08-15 10:34:37 445

原创 sizeof与strlen区别

1.sizeof操作符的结果类型是size_t,在头文件中的定义为unsigned int 类型,该类型保证了能容纳所建立对象的字节大小。2.sizeof是操作符,strlen 是函数3.sizeof可以用类型做参数,而strlen不能,strlen只能接受char*类型,并且是以"\0"结尾的参数,sizeof还可以用函数做参数.4.数组做sizeof参数不退化,传递为str

2016-08-15 10:32:31 316

原创 动态联编与静态联编

首先,联编是指一个计算机程序的不同部分彼此关联的过程。静态联编是指联编工作在编译阶段完成的,这种联编过程是在程序运行之前完成的,又称为早期联编。要实现静态联编,在编译阶段就必须确定程序中的操作调用(如函数调用)与执行该操作代码间的关系,确定这种关系称为束定,在编译时的束定称为静态束定。静态联编对函数的选择是基于指向对象的指针或者引用的类型。其优点是效率高,但灵活性差。动态联编是

2016-08-15 10:29:58 1336

原创 MySql对列的增删改查

ALTER TABLE:添加,修改,删除表的列,约束等表的定义。查看列:desc 表名;修改表名:alter table t_book rename to bbb;添加列:alter table 表名 add column 列名 varchar(30);删除列:alter table 表名 drop column 列名;修改列名MySQL: alter table bbb change n

2016-08-11 10:06:24 506

转载 C++宏进阶

众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换),那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。关于宏的一些语法问题,可以在google上找到。相信我,你对于宏的了解绝对没你想象的那么多。如果你还不知道#和##,也不知道pr

2016-08-04 17:25:34 428

转载 C++宏定义

C++提供的编译预处理功能主要有以下三种:  (一) 宏定义  (二) 文件包含  (三) 条件编译  在C++中,我们一般用const定义符号常量。很显然,用const定义常量比用define定义常量更好。  在使用宏定义时应注意的是:  (a) 在书写#define 命令时,注意和之间用空格分开,而不是用等号连接。  (b) 使用#def

2016-08-04 17:22:55 437

原创 Linux学习练习之实现小shell

1.shell是什么?在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令行解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。2.shell的模拟实现#include #include #include #include #include int main(int argc, c

2016-07-06 01:01:09 447 1

原创 AVL树

当二叉搜索树插入接近有序的节点时,二叉树会发生退化现象,搜索效率就会大大降低,这样期望的搜索效率就不会达到,然后就有人提出了高度平衡二叉搜索树(AVL树)。AVL树

2016-07-04 18:12:44 513

原创 进程地址空间

本文描述了linux中代码段,全局变量,堆栈,环境变量,命令行参数地址在内存中的布局,人非圣贤,孰能无过,请各位大牛多多提出意见,有错误也可指出,作者想进步,想进步..千呐!!先来看一个小程序,分析一下全局变量(初始化未初始化),堆,栈,代码段内存布局:#include #include int g_val = 100;int arr[50];void fun(){ pri

2016-06-22 17:02:25 492

转载 进程调度算法

调度算法:指根据系统的资源分配策略所规定的资源调度算法。本篇博客主要介绍了三种进程调度算法,由于博主经验还是很low,目前只能看懂这三种。一、先来先服务和短作业(进程)优先调度算法1. 先来先服务调度算法。先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度, 也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由

2016-06-22 14:47:02 899

原创 二叉搜索树

二叉搜索树性质:每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。左子树上所有节点的关键码(key)都小于根节点的关键码(key)。右子树上所有节点的关键码(key)都大于根节点的关键码(key)。左右子树都是二叉搜索树。二叉搜索树大大提高了搜索目标树的效率。代码实现:/*BSTree.h*/#include using namespa

2016-06-19 16:19:08 425

原创 部分find命令使用

linux中的文件查找远远比windows中文件查找要强大的多,而且是更加的迅速,以下是我通过阅读网上的文档整理了一部分linux中文件查找find的命令,及其命令含义解释。一.命令格式:     find pathname -options [-print -exec -ok ...] 二.命令功能:    用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)三.命令参数含义:pathnam

2016-06-05 18:38:28 449

原创 理解环境变量

1.什么是环境变量?    由于linux是一个多用户的操作系统,所以每个用户都有自己的专用的运行环境。而这个环境有一组变量所定义,这组变量就是环境变量。用户可以对自己环境变量进行修改以达到环境的要求。    环境变量是和Shell紧密相关的,它是通过Shell命令来设置的。环境变量又可以被所有当前用户所运行的程序所使用。对于bash来说,可以通过变量名来访问相应的环境变量。(shell)2.l

2016-06-05 18:38:25 582

原创 防止头文件多次引入

1.头文件被多次重复引用会造成的后果:        头文件多次重复引用:一个头文件被多次在源文件中多次引用。先来看一段代码:/*Test.h*/#include int a = 10;/*Test.c*/#include "Test.h"#include "Test.h"int main(){    printf("d o o\n");    return 0;}显示结果

2016-06-05 18:38:22 833

原创 二分法查找元素位置

普通二分法查找元素:#include #include int BinarySearch(int* a, int n, int pos){ int left = 0; int right = n-1; while (left <= right) { int mid = left+(right-left)/2; if(pos == a[mid]) { return 

2016-06-05 18:38:19 618

原创 C++ 复杂链表的复制

复杂链表节点结构:650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/7F/3F/wKioL1cXgd3BU56fAAAavyxy3_w404.png" title="P{PQCTDN$LZM5U}}8]$[__8.png" alt="wKioL1cXgd3BU56fAAAavyxy3_w404.png" />struct Compl

2016-06-05 18:38:14 1254

原创 二叉树基础

二叉树:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子。二叉树节点结构:        650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/7F/3E/wKiom1cXSA-R8FzsAAAU8gpgpSo969.png" title="JE4$_USL%S9DJ5]18UNSA`X.png " alt

2016-06-05 18:38:11 376

转载 大牛Git教程

【初识Github】首先让我们大家一起喊一句“Hello Github”。YEAH!就是这样。Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the D

2016-06-05 18:38:08 608

转载 鸡汤君_一个老程序员的建议66

英文原文:Advice From An Old Programmer本文是《Learn Python The Hard Way, 2nd Edition》这本书的尾声部分。看完了这本书,你决定继续做编程。也许它能成为你的一个职业,也许它能成为你的一项爱好。但你需要一些指导,确保自己不会走错了道路,或帮助你从这个新业余爱好中得到最大的乐趣。我做了很久的编程。久的你都想象不出来,久的都让我苦恼。就在我

2016-06-05 18:38:05 442

原创 C++Primer_笔记_异常处理

异常,当一个函数发现一个无法处理的错误时抛出异常,让函数的调用者直接或间接的处理这个问题。      异常处理,是一种允许两个独立开发的程序组件在程序执行期间遇到程序不正常的情况(称为异常,exception )时相互通信的机制。异常抛出:throw (表达式)异常发现与抛出异常:/*发现异常并且抛出异常*/try{    //可能出现异常的语句}捕获异常:catch(类型名 + 形参名)

2016-06-05 18:37:59 373

原创 C++_模板类与类型萃取技术

在声明变量,函数,和大多数其他类型实体的时候,C++要求我们使用指定的类型。然而,有许多代码,除了类型不同之外,其余部分看起来都是相同的,比如,下面这个例子:bool IsEqual (int left, int right){    return left == right;}bool IsEqual (const string& left , const string& right)

2016-06-05 18:37:57 450

原创 输入字符,输出字符时加行号

问题描述:    可以标准输入一些字符,然后输出时,在每一行前面加上行号,每一行可以接受的字符没有限制。代码实现:/*.c*/#include #include int main(){ int ch = 0; int line = 0; int flag = 1;    //设定标志位,最后确定是否需要换行,打印行号 while((ch = getchar()) != EOF)

2016-06-05 18:37:54 611

原创 C++ 中string类的三种模拟实现方式

1.原始版本(拷贝构造和赋值运算符重载时,需要重新开辟空间)#include #include using namespace std;class String{ friend ostream& operator<<(ostream& os, const String& S);public: String(char* str = "") :_str(new char[strl

2016-06-05 18:37:51 802 1

转载 深度理解C字符串与C++字符串

在C中,并没有字符串这个数据类型,而是使用字符数组来保存字符串。C字符串实际上就是一个以null('\0')字符结尾的字符数组,null字符表示字符串的结束。需要注意的是:只有以null字符结尾的字符数组才是C字符串,否则只是一般的C字符数组。    C字符串定义时可以利用"="号进行初始化,但是以后不能利用"="对C字符串进行赋值。对C字符串的操作需要通过"string"文件中定义的字符串处理函

2016-06-05 18:37:48 350

原创 模板实现简易queue

队列提供了以下操作:q.empty()                 //如果队列为空返回true,否则返回falseq.size()                  //返回队列中元素的个数  q.pop()                  //删除队列首元素的值,但不返回其值  q.front()                 //返回队列首元素的值,但不删除其值q.push(

2016-06-05 18:37:45 350

原创 模板实现简易stack

栈提供了以下操作:/*cpp*/s.empty()        //如果栈为空返回true,否则返回falses.size()                 //返回栈中元素个数   s.pop()                  //删除栈顶元素,但不返回其值s.top()                  //返回栈顶元素,但不删除元素s.push()             

2016-06-05 18:37:42 428

原创 atoi()函数实现

实现atoi()函数开始之前,测试了库中的atoi()函数,发现库中提供的atoi函数可以处理许多异常,下面就是库中可以处理的异常:        1.指针为NULL        2.空字符串        3.(+,-)号处理        4.遇到异常字符时的处理方式        5.溢出时处理,分为两部分:                1).上溢出,输出上界              

2016-06-05 18:37:39 386

原创 C++实现双向链表

双向链表结构图:650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7E/12/wKiom1b2TPjA07T8AAAQhFFQvOI122.png" title="[N[RV`UD)5[1_JV~PB)(HN8.png " alt="wKiom1b2TPjA07T8AAAQhFFQvOI122.png" />节点结构:650) th

2016-06-05 18:37:36 320

原创 error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用

最近写代码编译的时候老是出现这个error:    error LNK2019:无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用。    查阅网上的资料,老是说我们VS的.lib配置出了问题,不是说放错地方,就是说没有配置,要重新从网上配置这个文件,放到其应在的文件夹里面,搞不懂到底说些什么,于是继续查阅相关的资料,终于被我发现了问题所在。只

2016-06-05 18:37:34 444

原创 单链表

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。1、链接存储方法链接方式存储的线性表简称为链表(LinkList)。链表的具体存储表示为:① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置

2016-06-05 18:37:31 361

空空如也

空空如也

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

TA关注的人

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