自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 网络编程套接字(2)-TCP

在上一篇博客中,我们介绍了套接字的相关内容,编写了套接字-udp版本的网络通信代码。这篇文章将介绍,TCP协议版本的网络通信方式,以及多线程,多进程版本的网络通信方法。TCP协议:TCP是TCP/IP协议栈中的传输层的协议,TCP协议又叫传输控制协议(Transport Control Protocal),是面向连接的,可靠的字节流服务。它的可靠性体现在:3次握手建立连接,滑动窗口机制,一定的拥塞...

2022-01-12 13:17:22 147

原创 读c++11

weak_ptrshare_ptr的辅助指针,对引用计数无影响,可指针悬空,不管理资源。可以解决shared_ptr的循环引用问题。如下:循环引用问题struct A;struct B;struct A { std::shared_ptr<B> spb; ~A() { std::cout << " A is deleted " << std::endl; }};struct B { std::shared_ptr<A> spa

2020-06-30 21:32:31 175

原创 踩坑日记

mysql服务端在一定时间内没有收到请求就会自动断开背景和现象系统中每隔一小时读取一次配置,但是读取配置时发生错误:Lost connection to MySQL server during query这里的意思是服务器断开了连接。解决通过查看MySQL服务端的等待时间,发现互动时间interactive_timeout为3600s,与读配置的间隔一样,所以读配置时,服务端会断开。MySQL [(none)]> show global variables like '%timeout';

2020-06-29 20:24:03 239

原创 实践真知

文件static变量必须用常量初始化static app_security::freq_limit::FreqLimitServiceProxy freq_limit_service_proxy( 8205, 1, cmlb::PKG_STATS_ENABLE, PORT_TYPE_TCP);场景我想直接初始化这个对象,但是一直失败,直到使用了常量 8205和1。解释全局变量、文件域的静态变量和类的静态成员变量在main函数执行之前的静态初始化过程中分配内存并初始化;局部静态变量(一般为

2020-06-15 22:00:13 194

原创 读c++primer

读c++primerstatic类成员explicitstatic类成员static数据成员的类型可以是该成员所属类类型,但是非static成员的类型只能是该成员所属类类型的指针或引用。class Bar{private: static Bar mem;//ok Bar* men1;//ok Bar& mem2;//ok Bar mem3;//error}expl...

2020-06-02 19:57:27 123

原创 https协议

1,什么是HTTPS协议? 基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护2,公钥和私钥?公钥私钥的原则:一个公钥对应一个私钥。 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的...

2019-05-20 16:16:01 246

原创 友元函数的使用

一,友元函数的作用在类外的函数是无法访问类中的 protected 和 private变量,当在类中将一个函数声明为friend函数A时,A函数就可以访问类中的所有变量。二,友元函数的使用1,普通成员作为类的友员函数class Base{public: Base() {} friend void Print(Base& b); virtu...

2019-05-11 20:13:35 3745

原创 nexus6p手机编译,烧写记录

一,下载源码1,环境 >ubantu 16.04 >nexus6p >git repo >可以翻墙的网络 >大于100G的硬盘2,安装软件 >安装gitsudo apt-get install git >安装repo 1,首先创建bin文件夹 mkdir ~/bin PATH...

2019-04-11 16:08:27 697

原创 安卓源码编译记录

问题一:terminating with uncaught exception of type std::bad_alloc: std::bad_alloc Could not build FEC data! Error: terminating with uncaught exception of type std::bad_alloc: std::bad_alloc Out of spac...

2019-03-31 12:17:04 725

原创 吉他学习第一课

1,什么是音符?音符可以分为全音符,二分音符,四分音符,八分音符,十六分音符等。音符并不表示实际的时间,其作用是表示相对的时间。比如说,一首曲子一分钟有60拍,并且以四分音符为一拍,那么一拍就是一秒钟,八分音符就是半秒钟。如果一首曲子一分钟有30拍,并且以四分音符为一拍,那么一拍就是两秒钟,八分音符就一秒钟。具体的个音符长短由节奏型决定。2,什么是音程?音名    A   ...

2018-11-03 22:08:57 1045

原创 C++11.新特性

1,统一的初始化方法      1,定义变量:如vector &lt;int&gt; a {1,2,3,4};      2,创建对象:当类A的构造函数有两个参数时,A的实例化: A a {1,2};        3,返回值:当返回值类型是 vector&lt;int&gt;时,return {1,2,3,4,5,6,7};2,auto关键字     1, 使用auto定义变...

2018-10-07 14:58:47 166

原创 智能指针

1,什么是智能指针?智能指针实际上是一个类,这个类的对象在构造函数时获取资源,同时在类内部重载 * 和 -&gt; 操作符,用来获取资源。并在析构函数中执行对资源的释放。因为C++语言没有内存回收机制,所以总会导致内存泄漏,智能指针可以解决这个问题。因为这个类的对象是在栈上创建的,那么在程序结束时,销毁类对象自动调用析构函数释放资源,就不会内存泄露了。2,auto_ptr中...

2018-10-05 16:38:32 214

原创 野指针

1,什么是野指针        野指针指的是一个指针指向的内容是垃圾内存,是不可使用的内存2,野指针是如何产生的?      1,定义指针变量是没有初始化,系统并不会为其赋NULL,而是指向一个垃圾地址      2,将mallco出来的空间释放后并没有将指针赋为NULL,这样的指针实际上指向一个垃圾地址      3,返回值是一个指向原函数栈的一个指针,因为原函数空间已被释放...

2018-10-02 11:12:13 126

原创 虚拟内存 && 页表 && pcb && 进程状态

1,虚拟内存电脑中所运行的程序均需经过内存执行,若执行的程序占用的内存很大很多,则会导致内存消耗殆尽,为解决该问题,WINDOWS运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,这部分空间即称为虚拟内存。每个进程运行 每个进程运行的时候都会拿到4G的虚拟内存.其中3G是交给用户的,然后剩下的1G内存存储内核的东西了.一个进程在执行时并没有将所有的数据都加载到内存中,...

2018-10-01 13:03:25 1213

原创 http协议

0,什么是http协议 当tcp连接建立以后,由于tcp是面向字节流的,客户端可以向服务器发送字符串,发送结构体,只要服务器能按照约定 对客户端发送的数据正确的解析就是可以的,那么http就是一个现成的强大约定。1,URL中的特殊字符如何处理? URL中的 / ? 等字符已经有了特殊的含义,所以不适用它的特殊含义的时候必须进行转义。 如,空格...

2018-09-30 17:15:40 256

原创 leetcode-AC代码

1.从下往上按层打印二叉树class Solution {public: vector&lt;vector&lt;int&gt;&gt; levelOrderBottom(TreeNode * root) { vector&lt;vector&lt;int&gt;&gt; result; if (root == NULL) { return result; }...

2018-09-24 22:01:40 739

原创 单例模式

单例模式: 在一些特定的情况下我们需要一个类只创建一个对象,比如,Windows中的文件管理器, 在多线程多进程访问文件管理器并进行插入删除操作时,如果不能对同一个接口进行操作, 那么势必造成文件系统的混乱。懒汉模式:一, 静态指针成员class Si...

2018-09-23 21:20:52 144

原创 实现 STL--list

#pragma once#include&lt;iostream&gt;// 带头结点双向循环链表template&lt;class T&gt;struct ListNode{ ListNode(const T&amp; data = T()) : _pPre(0) , _pNext(0) , _data(data) {} ListNode&lt;T&gt;* _pP...

2018-09-22 09:29:13 104

原创 实现 STL--vector

#pragma once#include&lt;iostream&gt;using namespace std;template&lt;class T&gt;class Vector{public : typedef T* Iterator;public : Vector() :_start(0) , _end(0) , _endOfStorage(0) {}...

2018-09-22 09:27:29 96

原创 GET和POST的区别

1,get 没有 post 更加安全2,get 只能在url中可以添加参数 。post的参数在body中。3,get参数的长度有限,post的参数长度无限制。很可惜以上的三个区别都是错的,下面一个一个进行分析。 1,get 没有 post 更加安全        这是一种以五十步笑百步的言论,post 相对于 get 的安全仅仅体现在post将参数放在body中,用户看不到...

2018-09-21 09:02:49 111

原创 STL六大组件

1,容器1,vector              底层实现使用线性表,,2,list               底层就是链表3,deque               底层是双向的线性表,也就是双向接口,意思在头和尾都可以进行插入和删除操作。4,map              底层是红黑树5,set                底层是红黑树2,算...

2018-09-21 07:32:52 107

原创 链表面试题

#include"LinkList.h"PNode BuyNewNode(DateType date){ PNode NewNode=(PNode)malloc(sizeof(Node)); if(NewNode==NULL) { return NULL; } NewNode->date=date; NewNode->next=N...

2018-09-19 07:38:39 127

原创 剑指offer--ac代码

1,栈的压入,弹出序列class Solution {public: bool IsPopOrder(vector&lt;int&gt; pushV,vector&lt;int&gt; popV) { if(pushV.size()==0 || popV.size()==0 || pushV.size() != popV.size()) re...

2018-09-16 09:50:15 141

原创 C++面试题

一,重载,重写,隐藏的区别 1,重载与重写 作用域不同:重写存在于继承体系下,也就是两个类中的两个函数, 重载存在于一个类中,也就是一个类中的两个函数。 参数列表不同:重写要求两个函数的参数列表完全相同,(...

2018-09-15 08:50:49 153

原创 零碎知识点

1,一个int占几个字节?在16 位系统下,占2个字节,在32,64位系统下占4个字节。2,一个汉字占几个字节?GBK编码格式,一个汉字占两个字节,UTF-8 格式下,不确定,3,#define BUG(X,Y) (X+1)*Yint main(){    int a = 3;    int b = 4;    printf("%d\n", BUG(a++, b++)...

2018-09-06 16:48:58 209

原创 死锁

1,死锁的两种情况       1,同一线程重复申请同一把锁,在第二次申请时,必须要将第一次申请的锁释放掉,            但是要释放第一次申请的锁,就必须要将第二次申请的锁释放,这样就死循环了。       2,进程1申请了锁1,进程2申请了锁2,然后进程1右申请了锁2,进程2又申请了锁1,            这样当进程1申请锁2时,必须要将锁2释放,释放锁2又必须要...

2018-09-06 16:44:51 115

原创 消费者-生产者模型

1,概念     本质上是用来解决资源的供求问题的,就是缓解供不应求(生产者太慢,消费者太快)和货物囤积(消费者太慢)     使生产与消费达到一个相对稳定的状态。2,321原则       一种消费场所                  消费者与生产者的交易场所       两种消费角色                    消费者与生产者       三种消费关...

2018-09-06 15:43:02 221

原创 面试题:进程间通信的方式

liunx六大进程间通信方式           管道,消息队列,共享内存,信号量,socket,信号,文件锁1,管道      1,匿名管道:                 概念:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,一般使用fork函数实现父子进程的通信。                                  2,命名管道:    ...

2018-09-04 15:05:50 44759 1

原创 C/C++关键字

1,extern                   1,在文件1中有一个全局变量A(也就是在所有的函数体之外),当在文件2中直接使用这个变量时,就会找不到,                        但是,如果在文间中写出文件1中全局变量A的声明,并在声明前加上extern,就可以使用。                        总结来说,这个关键字解决了用户想使用其他文件中...

2018-09-02 14:20:22 516

原创 Liunx常用命令

%s/to/too/g 将to替换为too%s///gc 表示逐个确认g 表示全局替换c 表示替换前确认yYes:执行这个替换 nNo:取消这个替换 aAll:执行所有替换而不要再询问 qQuit:退出而不做任何改动 lLast:替换完当前匹配点后退出 CTRL-E向上翻滚一行 CTRL-Y向下翻滚一行Netstat –anp |...

2018-08-30 16:55:37 171

原创 c++动态内存管理

1,malloc/calloc/realloc三者之间的区别?void* malloc(字节数)void* calloc  (元素个数,元素大小):初始化 0void* realloc (void* p  ,size )p----&gt;NULL:malloc            非空:size----&gt;变小---&gt;缩小原空间            非空:si...

2018-08-30 15:49:47 96

原创 流量控制&&拥塞控制

一,流量控制1,什么是流量控制?TCP根据接收端接受缓冲区的大小,来决定发送数据的快慢,这个机制叫做流量控制。2,为什么有流量控制?任何一个接受端接受的能力都是有限的,如果接受缓冲区满了,而发送端依然发送数据,就会导致丢包,而引起超时重传。这对资源是一种浪费。3,怎样实现流量控制?接收端每次都会将自己的缓冲区的大小放入TCP报头的 ‘ 窗口大小’字段, 通过ACK确认应...

2018-08-23 23:28:50 2109

原创 线程

一,线程的概念1,线程是操作系统能够进行运算调度的最小的单位。2,线程被包含在进程中,是进程中实际运作的单位。就是说,线程在进程的地址空间里运行。3,一条线程指进程中一个单一顺序的控制流。4,一个进程中可以并发多个线程,每条线程的执行任务不同。5,从内核的角度理解线程。        在内核中看到的线程也是PCB来表示的,创建新的PCB和原PCB共用虚拟地址空间。   ...

2018-08-22 17:14:25 146

原创 面试题:字符串与数组相关

1,空格替换题目解析:将字符串中的空格 ‘ ’ 替换为 ‘ %20 ’。解题思路:使用string类中的resize函数进行扩容。然后从后往前遍历,进行空格替换。class Replacement {public: string replaceSpace(string iniString, int length) { if(length&lt;=0) ...

2018-08-21 19:42:03 277

原创 给定一个整数 n,生成所有由 1...n 为节点组成的不同的二叉查找树。

题目解析:给定一个n,用1-n这些数字去创建搜索二叉树,并将所有搜索二叉树的头结点放到vector中返回。解题思路:好吧,这题我也说不清是怎么肥事,自己举个例子画一画就明白了。class Solution {public: vector&lt;TreeNode *&gt; generateTrees(int n) { /*vector&lt;TreeNode*&gt; res...

2018-08-21 12:07:31 3535 1

原创 高级IO------epoll

一,epoll的三个系统调用函数1int epoll_create(int size);//创建一个句柄,也要在文件描述符表上占一个位置//size 可以忽略,存在的原因是有很多程序已经用了size,如果去掉就不能用了。函数2 int epoll_ctl (int epfd ,int op ,int fd, struct epoll_event * event...

2018-08-20 10:58:23 180

原创 面试题:恢复二叉树 && 检查二叉树

1,恢复二叉树题目分析:给定一颗二叉搜索树,有两个节点错误的交换了值,现在去将这两个值重新交换回来。解题思路:根据二叉搜索树的性质,选择中序遍历的方法,可得到顺序的序列。情况一:两个错误的节点是直接相连的,情况二:两个错误的节点不是直接相连的在下面的递归过程中,在进入下次递归前都会保存当前节点,为了同下次递归的节点进行比较。不管哪种情况,当上一个节点的值大于当前节点的值时,...

2018-08-20 08:27:27 612

原创 三次握手 && 四次挥手

1,三次挥手     第一次握手:                             建立连接时,客户端向服务器发送一个 请求包,在这个包中,SYN=1,ACK=0,表示这是一个请求连接的报文,                             系统为这个报文随机产生一个序列号 x,并且客户端进入SYN_SENT状态,等待服务器的确认。                 ...

2018-08-19 16:50:24 225

原创 面试题:二叉树的最小深度 && 经过给定节点的最大路径和

 1,经过给定节点的最大路径和中心思想: 先递归到最左边,算出最左节点的路径和,用其更新最大值,并将左右两条子路的较小值递归返回//经过给定节点的最大路径和#include&lt;iostream&gt;#include&lt;algorithm&gt;using namespace std; struct TreeNode { int val; TreeNode *lef...

2018-08-18 23:38:36 297

原创 高级IO----select

一,阻塞式IO当需要执行一项任务,而且去执行这项任务必须要满足一个条件,如果在条件满足前一直等待,直到满足条件再去完成任务。这种方式就是阻塞式 。比如:一个人去钓鱼,没有鱼上钩就一直等待,直到有鱼上钩,下去拉鱼竿。二,非阻塞式IO当需要执行一项任务,而且去执行这项任务必须要满足一个条件,如果在条件满足前不等待 ,而是去干其他的事情,但要按时查看条件是否满足,直到满足条件再去完成...

2018-08-17 19:28:58 452 2

空空如也

空空如也

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

TA关注的人

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