自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wushuomin的博客

整理学习

  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 c++千万级别高并发网络编程(六)

客户端升级为select新增内容新增内容

2019-07-21 09:32:32 2140 6

原创 c++千万级别高并发网络编程(五)

将服务器模型升级为select模型新增新增内容新增代码部分代码详解fd_setselect代码新增新增内容加入select模型新增代码while(true) { fd_set fdRead; fd_set fdWrite; fd_set fdExp; FD_ZERO(fdRead); FD_ZERO(fdWrite); FD_ZERO(fdEx...

2019-07-01 09:58:06 2865

原创 c++千万级别高并发网络编程(四)

利用网络报文传输数据新增内容网络报文定义新增后的代码服务器整体代码客户端整体代码代码详解:报文使用代码详解:新增登陆登出部分代码新增内容新增包头:描述本次传输数据的大小和作用。服务器和客户端新增对登陆登出的状态描述网络报文定义报文包括两个部分,是网络传输的基本消息单元包头:描述本次数据包的大小和作用包体:传输的数据新增后的代码服务器整体代码#define WIN32_L...

2019-06-08 10:06:05 2331

原创 c++千万级别高并发网络编程(三)

发送结构化网络消息为什么需要修正为什么需要修正

2019-06-02 20:48:49 7737

原创 c++千万级别高并发网络编程(二)

持续性处理网络请求新增内容服务器整体代码新增内容客户端能够持续处理请求,直至用户选择退出服务器端接受客户端的请求,并针对性做处理服务器整体代码#define WIN32_LEAN_AND_MEAN#define SOCKET int //VS2015已经定义好的,可以直接用#include<WinSock2>#include<windows.h>#i...

2019-05-30 23:01:07 3961

原创 [整理自用] c++百万级别高并发网络通信(一)

文章目录基础API简易TCP客户端与服务端基础模型搭建(Windows)视频学习地址基础API简易TCP客户端与服务端通过IP地址和端口找到服务器网络传输网络传输建立一个套接字soket连接服务器connect向服务器发送数据send监听网络端口listen,启动监听模式接受服务端数据recv,和上一步之间可能存在着多次循环接受客户端数据recv,阻塞直到有数据可读关闭soket建立一...

2019-05-15 20:16:03 7402 5

原创 【微信小程序开发BUG汇总】

tabBartabBar1.不含tabBar标签的页面跳转到含tabBar标签的页面,要使用:wx.swtchTab!

2018-07-24 17:25:44 1038

转载 【转】TCP、UDP混合服务器

同时使用select函数的tcp和udp回射服务器:#include &lt;iostream&gt;#include &lt;sys/socket.h&gt;#include &lt;sys/types.h&gt;#include &lt;strings.h&gt;#include &lt;arpa/inet.h&gt;#include &lt;unistd.h&gt;#in...

2018-06-19 09:34:19 396

原创 【unix网络编程】用select改进客户端服务器程序

待解决问题select函数1.select参数详解2.select返回值改进的代码阅读针对批量改进待解决问题之前的代码无法感知服务器进程发来的 FIN 段,如果服务器崩溃,客户需要花费很长时间才认识到问题。因为有可能阻塞在fgets函数上,一直等待服务器端的数据回送。然后客户端不放弃一直重发,等到9分钟后终于放弃了。 RST的问题上一次改进解决了。...

2018-06-13 15:10:44 210

原创 【unix网络编程】含信号处理服务器程序

SIGCHID信号待解决的问题信号处理函数wait和waitpidSIGCHID信号待解决的问题当子进程结束时,会给父进程发送一个SIGCHID信号,而我们之前的服务器程序默认是不处理的。此时子进程就会是半死不死的僵死程序,会占用系统进程资源。因此我们需要建立一个信号处理程序,每当发生这个SIGCHID信号时,都对其进行处理,消灭它。系统自带的有wai...

2018-06-11 09:57:33 230

原创 【清奇思路(七)】寻找数据流的中位数

问题描述简单分析概念非完全排序完全排序后的效果完全排序向非完全排序转化的关键思路!!思路整理问题描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。简单分析因为是从数据流中读出的数据,因此我们所拥有的数据的总数是...

2018-06-08 11:26:04 360

原创 [unix网络编程] 第一个最简单的服务器程序(TCP)

源代码阅读与分析TCP三次握手的流程图TCP回射程序配置运行源代码阅读与分析TCP三次握手的流程图为了进一步明晰地看到客户端、服务器通信方式,还是先要把这个三次握手流程放在这里,作为阅读源码的比较分析 TCP回射程序服务器#include &quot;unp.h&quot;intmain(int argc, char **argv){ ...

2018-06-06 11:31:03 1049

原创 【unix网络编程】(二)标准因特网服务查看

1. Ubuntu 如何打开echo、daytime等标准服务1.了解echo(回射)服务1.1检查服务是否打开1.2 打开服务1.3修改文件配置1.41. Ubuntu 如何打开echo、daytime等标准服务ubuntu 14.04中打开echo、daytime等标准服务详细实例图解 这里主要是参照这篇博客做的,但是新系统可能会有部分不一样,但是我...

2018-05-24 15:09:46 333

原创 【unix网络编程】(一)简单概念梳理

1.看简单的客户端程序1.1 socket1.看简单的客户端程序代码可以比较容易地实现下载,这里就不贴原始代码了。详见P6页。基本概念、常见结构体等:int main(int argc,char **argv);argc:命令行总的参数的个数,即argv中元素的格式。 **argv:字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数...

2018-05-22 10:41:16 397

原创 【unix网络编程】(一)开始配置

1. Ubuntu 在虚拟机中安装2. 编译第一个程序1. Ubuntu 在虚拟机中安装 如果按照https://jingyan.baidu.com/article/c275f6ba07e269e33d756714.html这个百度经验安装这个版本,在安装的最后会发生错误。这个主意是因为教程中虚拟机采用的默认1G的内存,而我们可以看到该版本的系统要求的最低物理内存是2G...

2018-05-21 20:41:41 660

原创 【整理自用】深入探索c++对象模型(二)

是从第二章开始看起的,通常情况下,如果以后开头没有特殊说明,标题中()里数字代表的是章节序号1. 默认构造函数在需要的时候构建1.1 需要的时候:被编译器所需要的时候偷偷构建情况1: 如果类中包含有一个其他类成员,且这个类成员有默认构造函数。那么编译器构建默认构造函数(事实上相当于是调用该类成员默认构造函数) 注意:其他成员仍然处于未知状态。例子:class A{...

2018-05-14 15:50:33 155

原创 【伪清奇思路】寻找数组中的逆序对个数

[toc] 题目来源:剑指offer 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 示例: 输入: 1,2,3,4,5,6,7,0 输出 7 需要仔细研究一下示例,光看题目,会以为前面一个...

2018-05-14 09:43:45 1183

原创 清奇思路(六)从1到n整数中1出现的次数

1.题目描述2. 清奇思路:如何找数字规律判断每一位有几个“1”2.1 举例子找规律2.1.1百位为例,百位上至少有多少个“1”2.1.2 如果X&gt;1(即X为2~9)2.1.3 如果X==02.1.4 如果X==12.2用公式写出来2.3代码表示1.题目描述 1~13中包含1的数字有1、10、11、12、13,因此“1”共出现6次;...

2018-05-06 11:30:54 596

原创 清奇思路(五) 数组中出现次数超过1半的次数

1.题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 如果不存在则输出0。 2.清奇思路关注题目,数组中有一个数字出现的次数超过数组长度的一半。记数组长度为LENLENLEN。如果这个数字存在,记其出现次数为TT...

2018-05-01 21:36:04 147

原创 【整理自用】C++友元函数

1.友元函数声明、定义位置2.友元函数的注意点1.友元函数声明、定义位置在类中声明的友元函数与类在同一个命名空间内,而不是在类里面; 就像同一目录下的两个文件,是兄弟关系,而不是包含关系。友元声明只能出现在类定义的内部,具体位置不限,也不受所在区域访问级别的限制。友元可以定义在类内部,这是隐式内联的。2.友元函数的注意点(1) 友元关系不能被继承。 ...

2018-04-28 10:19:32 173 1

原创 CVTE一面

昨天辛辛苦苦写了一堆。。居然都没有了。好不容易写好的东西,点了发布居然在博客列表里找不到。这里重新简单整理一下题目:1.c++基础1. 当你使用new之后,发生了什么?问题不难,和面试官沟通之后,发现他还想问当创建一个空类,除了有默认构造函数还会有什么默认成员函数。 总共有六个:(前四个是通常都知道的) 1. 默认构造函数 2. 默认析构函数 3. 默认赋值运算符 4...

2018-04-27 08:05:19 260

原创 多线程之pthread_create()函数

总述:pthread_create是(Unix、Linux、Mac OS X)等操作系统的创建线程的函数。它的功能是创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。 pthread_create的返回值表示成功,返回0;表示出错,返回表示-1。pthread_create函数如何创造线程函数原型声明:#include &lt;pth...

2018-04-23 15:38:19 163357 4

转载 【整理自用】strcpy,strncpy,memcpy,memmove,memset

写在前面的话:本博客是看了“寂寞的泡面”的博客整理而来,原文地址见蓝色超链接: 细谈C语言中的memcpy,memset,memmove,strcpy,strncpy函数1.memcpy简单说明,有重点!!!: 1. 由src(源地址)所指内存区域复制count个字节到dest(目标地址)所指内存区域。 2. src和dest所指内存区域不能重叠,函数返回指向dest的指针。 ...

2018-04-22 21:42:06 169

原创 【整理自用】清奇思路(四) 实现乘方的最小操作/斐波那契数列(Fibonacci )最小时间复杂度

实现乘方的最小时间复杂度1.求anana^n的计算方法:an={a(n/2)∗a(n/2)a(n−1)/2∗a(n−1)/2∗an为偶数n为奇数(1)(1)an={a(n/2)∗a(n/2)n为偶数a(n−1)/2∗a(n−1)/2∗an为奇数a^n=\begin{cases} a^{(n/2)}*a^{(n/2)} &n为偶数\\ a^...

2018-04-22 14:58:35 440

原创 c++内存空间

1.内存占用空间题目:若char是一字节,int是4字节,指针类型是4字节,代码如下:class CTest{ public: CTest():m_chData(‘\0’),m_nData(0){ }; virtual void mem_fun(){}; private: char m_chData; ...

2018-04-19 20:23:52 472

原创 【整理自用】多线程之CSingleLock

1.CSingleLock简介总体而言: 1. CSingleLock主要是用于同步多个线程对一个数据类的同时访问。 2. CSingleLock有RAII的好处。CSingleLock是对锁的一个封装,它的基本原理如下:(下面给出的是CSingleLock的构造函数和析构函数)CSingleLock(Lock* pLock){ pLock-&gt;Lock()...

2018-04-19 15:41:03 3118

原创 【整理自用】fork()函数(二)

在我博客的fork()函数(一)中提到: 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。这篇就详细说明一下:子进程“继承”父进程的变量,其虚拟地址总是一样的。注意:是虚拟地址而非真正的物理地址!!!在fork时整个虚拟地址空间被复制,但是虚拟地址空间所对应的物理...

2018-04-19 10:35:16 153

原创 【整理自用】清奇思路(三)正解整数分解成不同加数的最大乘积

1.问题描述设 nnn 为一自然数, nnn 可分解成若干个不同的自然数的和。这样的分法有很多种:比如 n=10n=10n=10 , nnn 可按照下述方式分解: 编 号 分解方式举例 1. 10=5+4+1; 2. 10=3+2+3+2; 3. 10=7+3; 4. 10=6+4; 5. 10=7+2+1;...

2018-04-15 16:22:18 953 2

转载 【整理自用】清奇的思路(二) 剑指offer: 数字二进制中1的个数

================================题目在下面===================================== 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。清奇的思路: 思路提供者为牛客网该题下菩提旭光的回答 1. 如果一个整数不为0,那么这个整数二进制中至少有一位是1。 2. 如果我们把这个整数减1,那么原来处在整数最...

2018-04-15 14:55:56 120

原创 【整理自用】二叉树的子树、子结构

二叉树的子树和子结构 子树的意思是只要包含了一个结点,就得包含这个结点下的所有节点. 子结构的意思是包含了一个结点,可以只取左子树或者右子树,或者都不取。简单而言,与子树不同的是,子结构可以是A树的任意一部分。 这里以一颗7节点,高度为3的满二叉树为例,说明子树和子结构的差别: 图11.图1的子树示意图对于图1而言,子树意味着图2,图3等情况。根据定义非...

2018-04-14 20:16:44 16896 1

原创 【整理自用】c++常量折叠(const int 到底能不能被修改)

知识点来源于c++常量折叠。 首先,先看牛客网上c++的一道题目: 在c++中,以下程序代码输出是? 答案是 (0, 1)const int i = 0; int *j = (int *) &amp;i; *j = 1; printf("%d,%d", i, *j)就感觉很神奇,jjj指向的是iii所在的位置,如果能够这样强制修改,那么const的作用就不复存在了,但...

2018-04-14 16:57:08 538 1

原创 【整理自用】模板

1. 函数模板1.1 奇特的模板类继承2.类模板与模板类1. 函数模板知识点: 1. 函数模板调用时不需要显式指定类型,系统自动匹配参数类型,若没有合适的,会进行报错。 2. 类模板使用需要显式指定类型。 3. 返回值和参数的类型一致。将函数赋值给函数指针之时,尤其需要注意这个问题。 4. 函数模板是由编译器根据调用类型实例化为可执行的函数。 5. 函数模版可以...

2018-04-13 16:35:04 238

原创 【整理自用】格式输出结果

牛客上有一些题目,只需要看输出格式就可以了,不用想太复杂。 1. 不管是有符号数还是无符号数,printf控制输出如果%d之类的,显示在屏幕上的都是有符号数。所以有些题目不用想那么复杂。 题目:下列C程序执行后c输出结果为( )(32位)(-1)#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;void main(){  int a ...

2018-04-12 14:49:43 195

原创 【整理自用】一些数据结构题目、思路

Vector动态实现思想: vector在定义时预留了一部分内存空间来用于存储新增的元素。 当添加元素时,如果vector空间大小不足,则会以原大小的两倍另外配置一块较大的新空间,然后将原空间内容拷贝过来,在新空间的内容末尾添加元素,并释放原空间。 vector的空间动态增加大小,并不是在原空间之后的相邻地址增加新空间,因为vector的空间是线性连续分配的,不能保证原...

2018-04-09 14:54:52 917

转载 C语言未定义行为

写在前面的话: 原文链接为:https://blog.csdn.net/qq_29169813/article/details/51416281。感谢博主,是真的结合自己的感受写出来的,而且练习题哈哈哈和我遇上的也是一样的。我申请过啦,博主同意我转载的哦~1.什么是未定义行为简单地说,未定义行为是指C语言标准未做规定的行为。编译器可能不会报错,但是这些行为编译器会自行处理,所以不同的编译...

2018-04-08 16:58:16 1706

原创 【整理自用】类::构造函数

1.构造函数只有在创建实例化时才会调用2.拷贝构造函数和赋值函数2.1拷贝构造函数2.2赋值函数类中方法的别称1.构造函数只有在创建实例化时才会调用构造函数是一种特殊的类成员函数,当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存。(构造函数的命名必须和类名完全相同)题目:若PAT是一个类,则程序运行时,语句“PAT(*ad)[3];”调用P...

2018-04-07 17:17:53 302

原创 【整理自用】C++函数传递

这个本来是没什么需要说明的,但是偏偏是错了几道题,发现自己思考不够严谨。1. 搞清楚到底在说那个变量函数传递,确实存在着值传递、址传递和引用传递三种。但是要搞清楚着通常是对于什么变量而言的。 以下三个是所谓的值传递,值传递和引用传递最简单的表达形式:int abs(int a);int abs(int *a);int abs(int &amp;a);对于形如上述的表达...

2018-04-01 20:22:32 324

原创 【整理自用】计算机运算符

运算优先级记忆运算优先级从下向上: 逗号是最低的; 所有和赋值运算有关的运算符优先级都是最低的。(=,&lt;=,+=,&lt;&lt;=等等) 与、或等逻辑运算(但非运算等级是第二位的) 表达式之间的关系运算(==,!=,&lt;=,&gt;=) 四则运算(数之间的运算,包括&lt;&lt;,&gt;&gt;)。 ...

2018-03-30 20:55:49 2157

原创 【整理自用】清奇思路(一)NIM游戏、(一堆石头,最后一个胜利)

NIM游戏类似 一共有N堆石子,编号1..n,第i堆中有个a[i]个石子。每一次操作Alice和Bob可以从任意一堆石子中取出任意数量的石子,至少取一颗,至多取出这一堆剩下的所有石子。两个人轮流行动,取走最后一个的人胜利。Alice为先手。 招行的那道题:有A,B,C 三间。里面分别有一定数量的面试官。小张和小玲两个HR,每一次可以从任意一个房间中派出任意数量的面试官,至少派1个...

2018-03-30 17:24:10 1077

原创 【整理自用】c++继承、虚函数

虚函数动态绑定1. 通常情况一般的认为,虚机制发生在对象调用时,其实不然,只要能用到之时,他便会出现!在调用基类函数的时候,如果基类调用了一个虚函数,同样虚机制也会产生效果!(不是基类的构造函数中!) 以下两端代码输出结果完全不同,原因就在于:调用虚函数,只受当前对象的影响。即this指针。#include &lt;iostream&gt;using namespace std...

2018-03-26 19:13:39 177

空空如也

空空如也

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

TA关注的人

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