- 博客(58)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 android studio模拟器出现以下问题
小白我刚安装好Android Studio,新建了第一个项目,没做任何更改,依照推荐选择了模拟器,直接运行,模拟器就报错:12/12 15:10:14: Launching appError while waiting for device: The emulator process for AVD phone was killed.百度了一下发现网上针对这个问题并没有最直接的解决办法,博主...
2018-12-12 16:26:57 36703 10
原创 googletest学习资料
googletest学习资料 1.玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest2.玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言3.玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制4.玩转Google开源C++单元测试框架Goo...
2018-08-31 11:24:27 436
原创 关于Android与qt交叉编译:
关于Android与qt交叉编译:开始菜单栏找到Hyper-V,打开如下: 右键当前,点击连接,进入虚拟机,打开该虚拟机 找到qt Creator 打开,在起始页面找到需要打开的项目,会有如下提示,根据图片选择,生成Android forarneabi-7a(GCC 4.9 ,Qt 5.8.0)和desktop Qt5.8.0 GCC 64bit,...
2018-07-18 15:48:18 1188
转载 Linux IO模式及 select、poll、epoll详解
注:本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用户空间和
2017-09-21 10:18:08 377
原创 二叉树的遍历非递归
题目:给定一颗二叉树,如下图:要求:前序遍历输出结果:1 2 4 6 7 5 9 10 3 8中序遍历输出结果:6 4 7 2 9 5 10 1 3 8后序遍历输出结果:6 7 4 9 10 5 2 8 3 1结构如下:struct Node{Node(int val):_left(NULL),_right(NULL),_val(val)
2017-07-26 19:18:44 505
原创 求二叉树叶子节点的个数
题目描述:求二叉树叶子节点的个数分析如下:1.如果root 为NULL,返回0;2.如果只有一个结点,返回1;3.返回左右孩子叶子节点的和;代码如下://#include//#include//using namespace std;//struct Node//{// Node(int val)// :_left(NULL)// ,_
2017-07-23 14:34:13 2712 1
原创 实现一颗二叉树的层序遍历。
1.--实现一颗二叉树的层序遍历。分析如下:1.如果此二叉树为空直接返回;2.要想层序遍历二叉树,我们必须要一个容器来保存它的左右孩子节点3.这个容器必须是先进先出,所以我们选择队列4.已经遍历过的节点必须从队列中pop出去代码如下:#include#includeusing namespace std;struct Node{ Node(int va
2017-07-21 15:33:44 1195
原创 判断出栈序列是否合法
题目描述:1--元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。 分析如下:1.如果两个数组长度不相等,直接不合法2.如果两个数组都为空,合法3.S用来正常的压栈,q村正确的出栈序列代码如下:#include#include#
2017-07-21 11:33:31 2428 1
原创 链表带环问题1
给出一个链表;1.判断其是否带环?2.如果带环求环的长度?3.求环的入口节点?解题思路:用两个指针,快指针一次走两步,慢指针一次走一步,如果两指针相遇,那么链表带环,若两指针不相遇,则链表不带环。带环的几种情况:Node* List::find_meet_node(Node* Head) { if(Head==NULL) return N
2017-07-15 18:49:51 613
原创 找出链表的倒数第K个结点
给出一个链表如下图:要求:删除倒数第K个结点代码如下:Node* List::find_Penultimate_K(Node* Head,int k){ if(Head==NULL)//处理空链表 return NULL; Node* fast=Head; Node* slow=Head; while(k--) { if(fast==NULL)//判断K是否
2017-07-15 18:04:01 240
原创 合并两个有序链表
给出以下两个链表:要求:将两个合并为一个有序链表(合并完如上图所示)需要考虑的问题总结:合并之前我们需要考虑是否存在空链表(分三种情况)新链表的头(是哪个节点)合并中如果有一个已经为空(如下)代码如下:Node* List::MergeList(Node* Head1,Node* Head2){ if(Head1==NULL&&Head2==
2017-07-13 19:31:14 376
原创 链表面试题
1.简单链表给出如下链表,有以下要求:要求1:逆序打印该链表(如:3->2->5->1->4结果应为41523)解题思路:利用栈的后进先出特性来解决代码如下:void R_print(Node* Head)//逆序打印链表 { if(Head==NULL) return ; stack s1; Node* cur=Head; while(cur)
2017-07-12 20:15:15 445
原创 select服务器
Select的函数格式:int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval*timeout); 先说明两个结构体: 第一,struct fd_set可以理解为一个集合,这个集合中存放的是文件描述符(filedescriptor),即文件句柄,这可以是我们所说的普
2017-07-09 14:00:30 596
原创 centos6.5中Telnet的安装
一、查看本机是否安装telnet#rpm -qa | grep telnet如果什么都不显示。说明你没有安装telnet二、开始安装yum install xinetdyum install telnetyum install telnet-server三、装好telnet服务之后,默认是不开启服务的,下面我们需要修改文件来开启服务。
2017-07-08 14:03:06 1073
原创 排序的链表中删除重复的结点
题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5.class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { if (pHead==N
2017-06-18 19:08:01 548
原创 不用+的加法
今天我在牛客网上看到一个有趣的题。题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。其实当时是这样想的:你不让我用+,我可以用“++”,“+=”啊,事实证明我的代码也确实提交通过了。以下是我的代码:class Solution {public: int Add(int num1,int num2) { if(
2017-05-28 18:22:22 317
原创 求第三便宜的帽子
题目描述:度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 输入描述: 首先输入一个正整数N(N 输出描述: 如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1 输入例子: 10 (个数)10 10 10 10 20 20 30 30 40 40 输出例子: 30#inc
2017-05-26 17:21:53 450
原创 linux下的文件权限问题
今天我在牛客网刷题的时候碰到这样一道题,想起了对前边linux下的文件权限这块知识做个总结题目如下: Linux文件权限一共10 位长度,分成四段,第三段表示的内容是。A.文件类型B.文件所有者的权限C.文件所有者所在组的权限D.其他用户的权限正确答案是:C分析
2017-05-25 14:35:39 474
原创 剑指offer:判定平衡二叉树
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉
2017-05-23 23:37:37 277
原创 shell脚本中常见工具grep的使用
grep:文本过滤器,如果仅仅是过滤文本,可使用grep,其效率要比其他的高很多;提到grep我们不得不提正则表达式,正则表达式:规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式(Regular Expression)字符类:数量限定符:位置限定符:特殊字符:
2017-04-23 22:02:24 2812 6
原创 HTTP长连接和短连接
1.什么是长连接、短连接? HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。 在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连
2017-04-10 16:19:18 1554
原创 (树的层序遍历)从上往下打印出二叉树的每个节点,同层节点从左至右打印。
从上往下打印出二叉树的每个节点,同层节点从左至右打印。个人思考:使用一个队列一个栈一个存放节点,一个存放值。先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子节点加入到队列中来。假设有如下二叉树:输出结果应为 :1 2 3 4 5 6先检查是否为空树,是空树直接返回;将根节点插入队列q里: 1用tmp遍历该树,tmp=q.fron
2017-04-02 20:00:20 1001
原创 shell脚本初识
1.shell是什么呢?确切一点说,Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)
2017-03-22 22:36:15 694
原创 TCP(一)用socket实现tcp
原理图:应用程序通过套接字通信,其协议如下: UDP :把数据打包后直接发送给相应的IP ,数据大小有限制,连接不可靠。 TCP :服务器与客户端协议必须匹配,即都是用 TCP 协议,先建立连接,再发送数据,其连接可靠。通信方式如下图所示:TCP(Transmission Control Protocol 传输控制协议)是一种
2017-03-17 14:21:57 495
原创 tcp(二)---多进程TCP
server.c#include#include#include #include #include#include#include #includeint startup(int _port,const char* _ip){ int sock=socket(AF_INET,SOCK_STREAM,0); if(sock<0){ perror("so
2017-03-17 09:38:17 671
原创 端口的分类及用socket建立连接时client端为什么不建议绑定
端口的分类: 1.根据端口和服务的绑定情况,端口可分为公认端口、注册端口和动态端口。 (1)公认端口(Well Known Ports):这类端口也常称之为"常用端口"。这类端口的端口号从0到1024,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口是不可再重新定义它的作用对象。例如:80端口实际上总是HTTP通信所使用的,而23号端口则是T
2017-03-08 21:04:08 4452 3
原创 TCP协议中URG、PSH及三次握手与四次挥手
1、URG:(紧急位)URG=1,该tcp报文为紧急报文;其中的紧急数据需要直接交付给接收端的进程,而不进入缓存。紧急数据的长度=紧急指针;紧急数据的起始点=序号;紧急数据的终止点=序号+紧急指针;(综上,紧急指针就是记录紧急数据的字节数,紧急指针永远为正数)1)在紧急数据后面的数据为普通数据,需要按序缓存2)窗口为0也可以发送紧急数据3)紧急数据都
2017-03-06 23:30:51 1111
原创 TCP中的计时器
TCP共使用以下四种计时器:重传计时器、坚持计时器、保活计时器和时间等待计时器。这几个计时器的主要特点如下:重传计时器(Retransmission Timer)当TCP发送报文段时,就创建该特定报文段的重传计时器。可能发生两种情况: 1. 若在计时器截止时间到之前收到了对此特定报文段的确认,则撤销此计时器。 2. 若在收到了对此特定报文段的确认之前
2017-03-06 19:26:01 707
原创 生产者消费者问题
生产者消费者模型:在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 单单抽象出生产者和消费者,还够不上是生产者/消费者模式。该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费
2017-02-20 20:15:13 626
原创 task_struct结构体
task_struct:为了管理进程,操作系统必须对每个进程所做的事情进行清楚地描述,为此,操作系统使用数据结构来代表处理不同的实体,这个数据结构就是通常所说的进程描述符或进程控制块(PCB)。在linux系统中,这就是task_struct结构,所属头文件include\linux\sched.h。每个进程都会被分配一个task_struct结构,它包含了
2017-01-07 23:14:35 1764 1
原创 linux中三种time(atime,mtime,ctime)
在windows下一个文件有三种时间属性:1>创建时间2>修改时间3>访问时间相似的在Linux下一个文件也有三种时间属性:(与windows不同的是linux没有创建时间,而多了个访问时间)1>访问时间(access time 简写为atime)2>修改时间(modify time 简写为mtim
2017-01-02 11:27:04 57139
原创 linux中的粘滞位(Sticky bit)
linux下每一个文件和目录都有自己的访问权限,访问权限确定了用户能否访问文件或者目录和怎样进行访问。最为我们熟知的一个文件或目录可能拥有三种权限,分别是读、写、和执行操作,在这里不做详细说明。我们创建一个文件后系统会默认地赋予所有者读和写权限。当然我们也可以自己修改它,添加自己需要的权限。特殊权限:但是这三种权限就足够了吗?我们现在来说说在linux下的另一个特殊权限。首先我
2017-01-01 22:24:26 16416 1
原创 linux中find命令详解
Linux 下find命令在目录结构中搜索文件,并执行指定的操作。linux 下find提供了相当多的查找条件,功能很强大。由于find具有强大的功能。find 命令是 linux程序员的技能中功能最强大和最有用的命令之一。它通过许多强大的支持方式,让文件查找显示任务变得更加轻松。*在运行一个非常消耗资源的find命令时,很多人都倾向于把他放在后台执行,因为遍历一个大的文件系统可能会花费很长时
2016-12-30 19:45:06 2669
原创 二叉树面试题(一) 重建二叉树
问题描述:由前序遍历和中序遍历重建二叉树(前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5)数据不含重复值。题目分析如下:前序遍历序列1 2 3 4 5 6,前序遍历规则是根--左--右。中序遍历序列3 2 4 1 6 5,中序遍历规则是左--根--右1.由前序遍历可知根节点一定为第一个元素1,在
2016-12-03 11:43:36 544
原创 关于set和map
关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一(防冗余),而且系统能根据元素的值自动进行排序。set集合容器它的底层是一个红黑树的平衡二叉检索树的数据结构。模版原型:template class Key, class Compare = less, cla
2016-11-13 13:10:03 504
原创 大数据处理问题
大数据,就是指种类多、流量大、容量大、价值高、处理和分析速度快的真实数据汇聚的产物。通常会需要考虑存储空间是、效率等问题。解决大数据问题一般主要的思想,1.文件切分,(将大文件切成若干个小文件进行处理),2.哈希切分,3.使用位图。以下通过几个实例来进行进一步分析:1、海量日志数据,提取出某日访问百度次数最多的那个IP。(或者:给一个超过100G的文件,文件中存放着iP
2016-11-09 22:15:58 1802
原创 哈希表(散列表)个人理解
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的一种数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做哈希表或散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(
2016-11-04 20:58:21 1518 1
原创 部分复杂度问题
算法的时间复杂度:算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O表示法,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。下面是部分时间复杂度对比:算法的空间复杂度:空间复杂度(SpaceComplexity)是对一个算法在运行过程中
2016-09-16 17:38:43 540
原创 c++之复数类运算
在写之前本人头脑是懵的,因为完全忘记了复数是什么,原谅我高中数学不好。那么我们大体回顾一下复数,即a+bi,那么关于它的运算法则大体有以下几种。1.加法法则 复数的加法按照以下规定的法则进行:设z1=a+bi,z2=c+di是任意两个复数,则它们的和是 (a+bi)+(c+di)=(a+c)+(b+d)i;返回值类型也应为复数(complex)
2016-07-06 14:53:18 24189 4
原创 c++笔记:指针和引用
指针和引用<一> 概念上区别: 指针的定义格式如下: <类型>*<指针名>[=<初始值>]; <类型>指出指针类型,<指针名>同标识符,*用来表示他后边的标识符是指针名。 **指针在定义时可以初始化,也可以不初始化。 int a=5; int *pa=&a;//pa是一个int型变量a的指针以下为一些常用...
2016-06-30 18:45:31 168
写一个三子棋,棋盘游戏,用c语言
2016-03-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人