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

原创 INSTALL_FAILED_USER_RESTRICTED错误

Android studio在实机魅蓝e上运行安装app时,出现INSTALL_FAILED_USER_R- ESTRICTED错误。错误信息如下:Installation failed with message INSTALL_FAILED_USER_RESTRICTED.It is possible that this issue is resolved by uninstal...

2018-07-22 17:52:04 703

原创 插入排序及其优化

插入排序:把一个无序的数组分为两部分,一部分为有序(刚开始只有一个元素),一部分为无序(从第二个元素开始),将无序元素一个一个插入到有序元素中。void InsertSort(int *arr, size_t size){ for(int i=1; i<size; ++i) { if(arr[i]<arr[i-1]) { i

2017-08-09 17:26:07 406

原创 结构体内存对齐

结构体内存对齐有两大规则规则1:结构中的元素都是按照定义一个一个按顺序放到内存中去的,但不是紧密存储的。从结构体的起始位置开始,在每个元素放到内存的时候他们各自认为前面的元素都是按照自己的大小来划分的,因此位置一定是从自己大小的整数倍上开始的。(以结构体的起始位置从0开始) 规则2:在规则1的基础上,结构体的总大小是其中所有元素中宽度最大的整数倍,不够要补齐。tpedef struct Struc

2017-08-02 18:32:19 260 1

原创 查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)

因为要求时间复杂度为O(N),所以不可以两层循环挨个比较,需要借助一块辅助空间,定义一个256大小的数组arr,将字符转化为assic码值作为下标。然后遍历统计数量等于二的。 注意第二次遍历查找字符串中第一个只出现两次的字符必须的按照字符串中字符出现的顺序遍历。如果从0到256遍历的可能找到的只出现两次的字符不一定是第一个出现的。char FindFitst(const char* str){

2017-08-01 19:58:08 488

原创 实现一个栈Stack,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)

栈的出栈入栈时间复杂度为O(1),这个不难,对于返回值Min最小值得时间复杂度为O(1),我们可以借助一个辅助栈s2来保存比原栈s1的栈顶s2.top()元素小的数。 1.如果栈s1和栈s2都是空栈,则将数据压入两个栈中。 2.再次压栈时将压入的数据与s2栈顶元素比较,如果比s2栈顶元素小或者等于则将此数据压入s1和s2中,反之只将此数据压入s1中。此时s2中的栈顶元素就是最小的。 3.pop

2017-08-01 19:15:58 568

原创 使用两个栈实现一个队列+使用两个队列实现一个栈

栈的特点是先进后出 队列的特点是先进先出所以用两个栈实现一个队列,要保证它先进先出 入栈和如队列没什么区别,区别就在出栈和出队列 用栈保证队列的先进先出,可以将数据压入空栈s1,然后将s1的栈顶(top)元素压入栈s2,此时s2的栈顶元素就是第一个进入队列的元素。#include<stack>template<class T>class StackQueue{public: S

2017-07-28 16:59:10 257

原创 1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表

从尾到头打印单链表 1.将所有节点压如栈中,利用栈的先进后出原则来实现 2.也可以用递归来实现struct ListNode{ int _value; ListNode* _pNext;};void ReversePrintfList(ListNode* pHead){ std::stack<ListNode*> sNode; ListNode* pNod

2017-07-26 08:26:44 236

原创 fork函数

fork函数include includeincludeincludeint main(void) { int i; for(i=0; i<2; i++){ fork(); printf(“-“); } return 0; }由于printf中没有换行,它会将数据先放在缓冲区中,当碰到换行时一起输出现在分析一下这个·函数 当i=0时,主进程先fork一个子进程1,此

2017-07-18 11:41:20 239

原创 判断链表是否带环?若带环求环的长度?若带环求环的入口点?

struct ListNode { int _val; ListNode* _pNext; };1.判断是否带环 利用一快一慢指针来求解,一个指针走一步,一个指针走两步,若该链表带环则必定会在环中相遇。如果fast->next为NULL则不存在 ListNode* IsHaveCircle(ListNode *pHead) { if(pHead==NULL)

2017-07-16 15:43:28 237

原创 进程退出方式

进程退出方式进程的退出状态分为两种,正常退出和异常退出正常退出 1)在main函数中return退出 2)调用exit函数 3)调用_exit函数异常退出 1)调用about函数退出 2)进程收到某个信号终止 3)代码错误导致进程运行时异常退出。

2017-07-01 22:32:28 361

原创 命令代换$()和``的区别

命令代换由反引号括起来的也是⼀一条命令,Shell先执⾏行该命令,然后将输出结果立刻代换到当前命令行中。如:$ DATE=`date`$ echo $DATE输出:例如定义⼀一个变量存放date命令的输出:命令代换也可以⽤用$()表⽰示: DATE=$(date)区别``在执行时,shell会不管``内是什

2017-06-15 17:15:17 435

原创 select服务器

客户端代码:#include#include#include#includeint main(){ int fd=open("./file",O_CREAT | O_RDWR,0666); if(fd<0){ perror("open"); return 0; } close(1); int new_fd=dup2(fd,1); char buf[102

2017-06-13 14:32:03 168

原创 进程池

进程池应用至少包括两部分   资源进程:预先创建好的空闲进程,管理进程会把工作分给空闲进程来处理   管理进程:管理进程负责创建资源进程,把工作分给空闲资源进程,回收已经完成工作的资源进程。进程池的实现      让服务器在启动阶段调用fork创建一个子进程池,通过子进程来处理客户端请求。子进程与父进程之间使用socketpair进行通信(为了方便使用sendmsg与recvmsg

2017-06-03 14:10:15 210

原创 网络端口类型

网络端口  计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。  按端口号可分为3大类:  (1)公认端口(Well Known Ports):从0到1023,

2017-05-19 09:34:35 462

原创 路由表选择算法

一张路由表的建立和刷新有两种不同的方式:静态路由与动态路由: 1.静态路由:配置方便,对系统要求较低,适用于拓扑结构简单并且稳定的小型网络。缺点是需人工配置。 2.动态路由:有自己的算法,能过自动适应网络拖布的变化,适用于具有一定数量三层设备的网络。缺点是:配置比较复杂,对系统要求较高,占用一定的网络资源路由器自动获取路径信息的有两种方法:向量-距离算法,链路-状态算法。

2017-05-18 16:10:03 661

原创 CRC差错检校

循环冗余检验(Cycle  Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选 下面我们通过一个简单的例子来说明循环冗余检验的原理   在发送端,我们把数据划分为组,每个组K个比特, 现假定待传送的数据M=101001(k=6)。CRC运算就是在数据M的后面添加供差错检测的n为冗余码,然后构成一个帧发出去,一共发(k+n)

2017-05-11 13:58:11 3135

原创 可重入函数与线程安全

可重入函数可重入函数主要用于多任务环境中,可重入函数简单来说就是可以在执行的任何时刻被中断的函数,转入OS调度下去执行另一段代码,在返回控制是不会出错,而不可重入函数由于使用了一些系统资源(全局变量,中断向量表),如果被中断的话就会出现问题。这种函数是不能运行于多任务环境中的。也可以理解为可重入,重入可以重复进入,意味这可以被中断,除了使用自己栈上的变量,不依赖于其他环境。这样的函数允许有

2017-05-09 16:33:38 341

转载 task_struct结构

本文转自:http://blog.csdn.net/qq308845474/article/details/485478891. 进程状态(State)进程执行时,它会根据具体情况改变状态。进程状态是调度和对换的依据。Linux中的进程主要有如下状态,如表4.1所示。表4.1          Linux进程的状态 内核表示

2017-04-17 18:06:09 360

原创 二叉搜索树的实现

概念:二叉搜索树:又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树1、若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2、若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3、它的左右子树也分别为二叉搜索树二叉树的插入:向二插搜索树中插入新的元素,必须先检测者个元素是否在树中已经存在,若存在就不能插入,否则将新元素插入到搜索停止的位置。1.

2017-04-17 18:05:28 174

原创 排序算法——基数排序

(radixsort)则是属于“分配式排序”(distributionsort),基数排序法又称“桶子法”(bucketsort)或binsort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O(nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。基本实

2017-03-28 16:19:00 207

原创 二叉树线索化、遍历的实现及其原理

二叉树虽然是非线性结构,但二叉树的遍历却为二叉树的结点集导出了一个线性序列。对于前、中、后序遍历,除了相应序列的第一个结点和最后一个节点,二叉树的遍历序列中每个结点都有一个前驱和后继结点,但在二叉树中,无法很快的找出按照某种遍历序列该结点的前驱和后继    在二叉树中希望很快找到某一节点的前驱或后继,而不希望每次都要对二叉树遍历一遍,因此在创建二叉树的过程中,需要将每个结点的前

2017-03-04 10:51:22 546

转载 task_truct结构描述

1. 进程状态(State)进程执行时,它会根据具体情况改变状态。进程状态是调度和对换的依据。Linux中的进程主要有如下状态,如表4.1所示。表4.1          Linux进程的状态 内核表示含义TASK_RUNNING可运行TASK_INTERRUPTIBLE可中断的

2017-02-18 14:10:08 684

原创 进度条的模拟实现

linux下实现进度条的原理就是每隔一段时间输出一个'#',但是在输出后不换行,下次输出是从这一行的头部开始输出,此时就要用到回车 很多人认为回车就换行,换行就是回车,其实不是的.        回车(\r): 是将光标移到该行的头部,         换行(\n):是将光标移到下一行的相同位置.要写进度条,我们还需要了解什么是缓冲区       缓冲区又称为缓存,它是内存空间的一

2017-02-17 23:02:12 295

原创 Linux下 vim的基本配置

vim的配置步骤   1. 首先进入终端,输入cd ~ 进入工作目录,再输入ls -al 查看是否有.vimrc文件和.vim目录,如果没有touch .vimrc和mkdir .vim目录    2.安装TagList 插件http://www.vim.org/scripts/script.php?script_id=273下载taglist_xx.zip ,解压完成,将解压出来的doc

2017-02-17 21:55:58 452

原创 find 命令小结

find指令:(灰常重要)       Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多

2017-02-17 21:37:51 190

原创 C++浅谈模板

本文一下所涉及到的代码都是在vs2008下实现的,本文只是对模板的一个初步了解,未做深入剖析    模板(Templates)是ANSI-C++ 标准中新引入的概念。如果你使用的 C++ 编译器不符合这个标准,则你很可能不能使用模板。模板(template)分为函数模板和类模板,本文主要介绍函数模板。函数模板(Function Template)     模板可以让

2016-11-17 13:35:21 288

原创 C++获得一段代码的运行时间

#define _CRT_SECURE_NO_WARNINGS//基于vs2008下的#include #include using namespace std;int main(){clock_t start_time = clock();     //代码段{int i = 0;while(i{i++;}}//代码

2016-11-15 14:48:16 3823 1

原创 多态浅析(C++)

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型

2016-11-11 21:05:04 213

原创 String函数的模拟实现(c语言)

#define _CRT_SECURE_NO_WARNINGSstrlen 的三种实现方法#include#includeint my_strlen(const char *str1)     //递归{  if(*str1 == '\0') return 0;  else return 1+my_strlen(str1+1);}int my_s

2016-11-09 13:23:02 360

原创 继承的初步认识

这篇文章只是小编基于c++的基础上对继承的初步认识,涉入不是很深,仅供初学者参考(本文的程序都是在vs2008下实现的)1.继承继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承定义格式cl

2016-11-09 09:28:50 198

原创 C语言 ————三子棋游戏

#define _CRT_SECURE_NO_WARNINGS#include#include#includechar arr[3][3] = { 0 };            int count = 9;void print(){  int i = 0;  printf("   |   |   \n");  for( i=0; i

2016-10-21 18:34:24 405

原创 拷贝构造函数

拷贝构造函数  拷贝构造函数是一种特殊的构造函数,由编译器自己调用,创建对象时用已有的同类对象进行初始化,只有一个参数,而且改下形参是对本类对象的引用常用const修饰。拷贝构造函数的格式拷贝构造函数的声明:class类名{public:类名(形参参数)//构造函数的声明/原型类名(类名&对象名)//拷贝构造函数的声明/原型

2016-10-19 14:49:58 506

原创 构造函数

构造函数      构造函数是一种特殊的方法。主要用来创建对象时初始化对象。即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。构造函数的功能主要用于在类的对象创建时定义初始化的状态。构造函数的特点  1.函数名与类名相同。   2..构造函数的功能主要用于

2016-10-18 15:09:58 262

原创 this指针的用法

C++中this的用法1.this的用处   一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均

2016-10-12 15:03:29 576

原创 linux下find命令基本用法

一.基本用法:      find / -name 文件名     find ver1.d ver2.d -name '*.c' -print    查找ver1.d,ver2.d *.c文件并打印     find . -type d -print 从当前目录查找,仅查找目录,找到后,打印路径名。可用于打印目录结构。二. 无错误查找:      find / -name ac

2016-07-15 21:37:45 286

原创 新的·开始

自我介绍我,张斌华,一个很普通的大二的学生,学习软件...嗯就是感觉很高大尚,感觉计算机很神秘。编程目标选好一门语言,找到一个好的工作,开发一种很牛的游戏。学习计划跟着老师接节奏走下去,课余时间看一些计算机方面的书,踏踏实实过每一天。计划每周花费的时间每天除了上课以外,不出意外应该会至少花费2个小时来敲敲键盘。我最想进的公司说到公司,我想每个人都比较想进腾讯、百

2016-06-24 12:42:36 447 1

微软面试100题系列【最低积分】

【要最低的分数,做最好的资源】小提示 本资料仅供个人学习参考,请勿用于商业用途,如有能力请尽量购买正版图书,也是对作者的支持。

2018-12-08

Head First HTML与CSS 第2版【最低积分】

【要最低的分数,做最好的资源】小提示 本资料仅供个人学习参考,请勿用于商业用途,如有能力请尽量购买正版图书,也是对作者的支持。

2018-12-08

C++程序设计语言特别版(中文版) 【最低积分】

【要最低的分数,做最好的资源】小提示 本资料仅供个人学习参考,请勿用于商业用途,如有能力请尽量购买正版图书,也是对作者的支持。

2018-12-08

空空如也

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

TA关注的人

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