- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 后代选择器与子代选择器的区别
后代,顾名思义,子孙后代,不仅包括子还包括孙,曾孙,曾曾孙,只在在父里面的,都能管到。子代,就只是儿子辈了,再往下的就管不了了。eg:举个上面的例子。1、首先是后代选择:.the-demoli结果:2、子代选择:.the-demo>li结果:可以看到,孙辈的没有边框。子代选择只能一层一层的往下,孙1的子代选择:.the-demo>l...
2020-04-26 17:09:52 1966
转载 (转)关于有名管道open时阻塞的问题
遇到一个问题,刚好这位博主有总结,转一下 原文:https://blog.csdn.net/men_wen/article/details/59158365 关于有名管道open时阻塞的问题1. 发现错误在学习Unix网络编程卷二的有名管道FIFO时,无意间犯下一个错误,故写此总结。 在写FIFO的服务器和客户端之间通信的代码时,服务器端主函数创建两个有名管道,然后分被以读写打开两个...
2019-02-18 11:51:23 923
转载 linux下安装protobuf(转)
转自https://blog.csdn.net/xiexievv/article/details/47396725说明: protobuf已经全面迁移到github,地址:https://github.com/google/protobuf 直接下载2.6.1版本:https://github.com/google/protobuf/archive/v2.6.1.zip转linux不久...
2019-01-05 16:01:40 1016
转载 C/C++ struct位结构(位域)
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来...
2018-10-10 22:02:16 687
原创 单链表逆序
一次遍历就能将链表逆序,思想:p1,p2,p3,将p2放到p1前面,然后p2作为新表头,循环依次,最后将最后的表头p1放到头结点后一个,即完成逆序void *reverse(list *head){ list *p1 = NULL; list *p2 = NULL; list *p3 = NULL; p1 = head; p2 = p1->next; int flag...
2018-09-28 10:16:43 192
转载 clock()
C 库函数 - clock() C 标准库 - <time.h>描述C 库函数 clock_t clock(void) 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。为了获取 CPU 所使用的秒数,您需要除以 CLOCKS_PER_SEC。在 32 位系统中,CLOCKS_PER_SEC 等于 1000000,该函数大约每 72 分钟会返回相同的值。声...
2018-08-31 21:30:42 4959
原创 关于C++中的数组引用
#include <iostream>void func(int (&a)[7]){ ...... ...... }int main(){ int a[] = {1,2,3,4,5,6,7}; func(a); return 0;}数组引用,有点像数组指针------int (*a)[7],这里的a就是指向一...
2018-08-31 18:26:29 7725 1
原创 排序(三)选择与冒泡排序
在排序中选择与冒泡排序应该是最基本与入门的选择排序基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。#include<stdio.h>void xuanze(int *a,int n){ i...
2018-08-31 18:03:16 201
原创 Linux下聊天室实现(基于C)
linux下基于TCP/IP协议的socket即时通讯功能: 1,群聊 2,私聊 3,禁言 4,解除禁言 5,群主设置 6,群主解除管理员 7,修改密码 8,发送文件 9,修改昵称 10,查看在线人数 11,踢人下线...
2018-08-22 11:16:12 10429 20
原创 C++深拷贝与浅拷贝
当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用。也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用拷贝构造函数:(1)一个对象以值传递的方式传入函数体 (2)一个对象以值传递的方式从函数返回 (3)一个对象需要通过另外一个对象进行初始化。如果在类中没有显式地声明一个拷贝构造函数,那么,编译器将会自动生成一个默认的拷...
2018-08-20 09:53:03 146 1
原创 排序(二)直接插入排序
基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。 直接插入排序示例:如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序...
2018-08-14 09:10:04 391
原创 数据结构(四)二叉树基础知识归纳
一、基础知识点树具有的特点有:(1)每个结点有零个或多个子结点(2)没有父节点的结点称为根节点(3)每一个非根结点有且只有一个父节点(4)除了根结点外,每个子结点可以分为多个不相交的子树。 树的基本术语有:若一个结点有子树,那么该结点称为子树根的“双亲”,子树的根称为该结点的“孩子”。有相同双亲的结点互为“兄弟”。一个结点的所有子树上的任何结点都是该结点的后裔。从根...
2018-08-12 11:42:42 285
原创 排序(一)快速排序
快排可以说历史悠久且极负盛誉。今天就来了解下快排吧。1,先在数组中找一个基准数x。2,令j等于最右下标,从最右往左找出第一个比x小的数。3,令i等于最左下标,从最左往右开始找出第一个比x大的数,与2中找到的数交换位置。4,2,3分别从刚找到的位置按原来方向继续找,直到相遇i == j。5,将相遇位置的值与基准数的值交换,6,到此,在下标i左边的都是比x小的,右边的都是比x大...
2018-08-11 23:58:30 145
原创 数据结构(三)顺序队列,链式队列与循环队列
顺序队列,就是数组,不多赘述链式队列就是用链表来实现队列,像链表一样,在头部增加头部指针指向头结点,在尾部增加尾部指针指向队尾节点。代码如下:/* 链式队列,也就是用链表实现的对列,用指针指向头结点做front,尾部也来一个指针指向rear,而当front和rear相等时,队列为空*/#include <stdio.h>#include <stdlib.h&...
2018-08-09 22:24:59 1633
原创 在类中调用delete this问题
很多时候,一些定义在类内的变量的生命周期在类外并不是很好的掌控,这样就很容易造成内存泄漏得到问题比如以下代码:class Test{public: void foo();private: char *p;};void Test::foo(){ p = new char[50];}int main(){ Test t1; t1....
2018-08-09 00:20:04 9100
原创 C++中sort()函数的使用方法
sort()是C++给的一种排序函数,头文件为 #include <algorithm>语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认非降序排序。下面给个实例:#include <iostream>#include <algorithm>using namespace std;int main(){...
2018-08-03 22:33:21 11582 3
原创 设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
如:n=3时,3个整数13,312,343,连成的最大整数为34331213。如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。看到题目想到字符串的比较大小代码如下#include <iostream>#include <vector>#include <iterator>#include <string&g...
2018-08-03 22:17:48 2308
原创 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
就像做数学题目一样,找规律台阶 跳法1 12 23 34 55 8..其实答案已经出来了,典型的斐波那契数列代码如下:int jumpFloor(int number){ ...
2018-08-03 17:10:02 1357
原创 世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
由于十进制整数转二进制位数可能超范围,所以最好用数组来放二进制数,因为只比较不同bit位,所以不用考虑前后逆序问题。代码如下:int countBitDiff(int m, int n){ int num = 0; int numM[100] = {0}; int numN[100] = {0}; int i = 0; ...
2018-08-03 16:50:47 945
转载 创建线程后使用pthread_detach函数的作用
线程在创建时默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process(僵尸进程),即还有一部分资源没有被回收(退出状态码),所以创建线程者应该pthread_join来等待线程运行结束,并可得到线程的退出代码,回收其资源(类似于wait,waitpid),这样不会导致系统越用越慢的现象。但是pthread_join(pthrea...
2018-07-26 15:47:38 1172
原创 数据结构(二)顺序栈和链栈
栈,大家都知道,后进先出,而栈的实现,有两种,其实道理都时实现栈的操作,只是实现方式不同。一、顺序栈:顾名思义,里面数据在内存中顺序排列,大家肯定会想到数组,没错,顺序栈就是通过数组来做的。结构体定义为: typedef struct Stack{ int data[MAX_SIZE]; //数组模拟 int top; //top来指向栈顶元...
2018-07-26 00:37:39 630
原创 linux下makefile的理解与简易操作
本文章参考自: https://blog.csdn.net/dongdong0071/article/details/52040559 https://www.cnblogs.com/wanglog/p/5555669.html https://www.cnblogs.com/owlman/p/5514724.html http://www.cnblogs.com/iRidescent-Z...
2018-07-25 22:56:34 460
原创 数据结构(一)单链表基本操作---增删查改排
单链表 本次复习单链表,融合了链表的一些基本操作:头插,尾插,删除,修改,排序#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;typedef struct Node{ int data; //数据域 struct Node* next; //指针域}link;//初始化link * c...
2018-07-24 23:06:56 378
转载 系统调用函数和库函数的区别
系统调用 系统调用是通向操作系统本身的接口,是面向底层硬件的。通过系统调用,可以使得用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互,是操作系统留给应用程序的一个接口。下面适用于访问设备驱动程序的系统调用: open: 打开文件或设备 read: 从打开的文件或设备中读取数据 write: 向打开的文件或设备中写入数据 close: 关闭文件或设备...
2018-07-23 15:17:03 891
原创 在QT下连续发送结构体的问题和解决方法
在QT下连续发送结构体问题; 前言: 在我之前写的代码中,我通常是使用socket来实现服务器与客户端之间得通信或发送数据,在服务器端中用recv一直阻塞等待客户端的send指令。而进入qt平台,qt中的信号与槽机构我觉得非常好玩,而qt中得网络通信我也发现了和之前在vim和vs下得不同;qt中用write发送数据给服务器,服务器端通过readyRead()信号判断客户端是否有...
2018-07-21 23:16:29 3121 3
原创 图书馆管理系统C++实现
写了一个小项目,图书馆系统,功能如下: 1,添加书籍 2,删除书籍(可删除还没外借的书籍) 3,读者借书 4,读者还书 5,按书籍登入号查看信息(每一本书的书籍登入号唯一,如有5本相同书名作者的书,那就有5个不同的书籍登入号) 6,查询所有图书信息(可以直接查看到同本书在图书馆中的剩余和借出情况) 7,查看指定读者的借书详情 8,注册新读者 9,查看所有书籍信息(可以详细到每个登...
2018-05-19 20:03:15 17838 4
原创 operator运算符重载的一些基本操作
自写一些基本的运算符重载只写了简单的输入输出加法和前后置++#include &lt;iostream&gt;using namespace std;class T{public: T() :m_a(0), m_b(0){}; T(int a, int b) :m_a(a), m_b(b){} friend ostream &amp; operat...
2018-04-20 23:15:13 1062
原创 有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位./*这一题,我用数组模拟这n个人,用num来记他们的报数*/#include &lt;iostream&gt;using namespace std;int func(int n){ int residue = n;//表示剩余人数 int...
2018-04-18 23:59:56 906
原创 单向链表类模板和string类简易操作
单向链表类模板/*1 设计一个单向链表类模板,节点数据域中数据从小到大排列,并设计插入、删除节点的成员函数。*/#include &lt;iostream&gt;using namespace std;template &lt; typename T&gt;class People{public: void setX(T x); T getX(void);...
2018-04-17 22:50:23 823
转载 关于C++多态的一些概念和理解
概括:“一个接口,多种方法”,程序在运行时才决定调用的函数; 实现:通过虚函数实现,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法成为遮蔽或重写(重写分为两种,重写成员函数和重写虚函数,只有重写虚函数才能体现C++的多态),而重载并没有体现多态性: 这里简单概括下重载:重载允许允许多个同名的函数,而这些函数的参数列表不同,允许的参数个数不同,参数类型不同,或者两者都不同。当函数调用时...
2018-04-02 16:30:37 258
原创 字符数组和指向字符串的字符指针
字符数组,既C语言用来存放字符串的数组,每一个元素都是一个字符,定义方法如下: char a[5] = “China”;需要注意下,字符数组只能再定义时初始化,而不能像char a[5];a = “China”这样来使用,只能一个一个赋值;而对于字符指针,其定义如下: ...
2018-03-29 19:06:42 2107
原创 fork()和vfork()的区别
getpid()函数; 作用:返回当前进程的进程ID; 头文件#include<unistd.h>fork(): 作用:创建子进程;返回值==0:表子进程; > 0:父进程,且返回值是子进程的ID; == -1:出错; 运行结果: 分析:因为父进程中pid = fork(),fork返回的是其子进程的ID;所以上图...
2018-02-03 21:41:47 320
Linux下聊天室实现(基于C)
2018-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人