自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ top K 元素

top K 元素

2022-11-02 13:40:35 149 1

原创 C++ 滑动窗口最大值

滑动窗口最大值

2022-11-02 11:38:26 251

原创 C++ 有效括号

C++ 有效括号

2022-11-02 10:22:05 176

原创 C++ 使用栈模拟队列

使用栈模拟队列

2022-11-01 18:39:29 100

原创 C++字符串按单词翻转

字符串按单词翻转

2022-11-01 17:13:23 170

原创 去除空格

去除空格

2022-10-27 09:24:08 85

原创 字符串翻转

字符串翻转

2022-10-25 18:35:30 82

原创 C++ 三数之和

三数之和

2022-10-25 16:36:08 387

原创 归并和快速排序

归并和快速排序

2022-10-24 16:26:40 71

原创 C++链表反转

算法学习

2022-10-22 09:37:23 222

原创 RPC知识点整理

2022-04-11 13:16:39 168

原创 docker关键知识点整理

2022-04-07 11:48:47 783

原创 DPDK之Cache和内存

存储系统简介:存储系统是指计算机用于存储数据部分,如磁盘,硬盘,内存以及cpu内部cache。1.RAM(Random Access memory):随机访问存储器2.SRAM(static RAM):静态随机访问存储器3.DRAM(dynamic RAM):动态随机访问存储器4.DDRCache的种类,从成本和生产工艺的角度考虑,一般分为三级,L1/L2/L3,速度一次减慢。cache的容量一般都很小,一般在几百KB到几MB不等。根据cache和内存之间的映射关系的不同,cache可以分为全关

2020-12-06 12:27:30 294

原创 线程池

线程池是一种预先创建一些线程,线程池中的线程处于阻塞状态,等待任务的到来。在这里插入代码片#include <unistd.h>#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <errno.h>#include <time.h>#include "threadpool.h"#if 0

2020-09-20 15:28:05 109

原创 网络虚拟化之network namespace

新增一个namspace:在这里插入代码片sudo ip netns add netns1查看是否创建成功ip netns listsudo ls /var/run/netns/netns1 查看namespace中的网络设备sudo ip netns exec netns1 ip link list删除namespacesudo ip netns delete netns1增加一个自定义的namspace并测试回环网卡网络:在这里插入代码片 sudo ip netns add

2020-09-12 14:30:39 272

原创 epoll实现服务器

使用epoll实现简单的服务器,熟悉下epoll接口的使用,不作详细的原理分析。在这里插入代码片#include <sys/epoll.h>int epoll_create(int size);int epoll_create1(int flags);int epoll_ctl(int epds, int op, int fd, struct epoll_event *event);EPOLL_CTL_ADDRegister the target file descriptor

2020-08-23 16:49:58 444

原创 poll实现网络服务器

poll的使用和select类似,select使用一组宏来表示处理描述符集合,而poll使用结构体。在这里插入代码片#include <poll.h>int poll(struct pollfd *fds, nfds_t nfds, int timeout);struct pollfd { int fd; //文件描述符 short events;//请求的事件 short revents;//返回的事件}在events置位:POLLIN 普通或优先级带

2020-08-23 10:37:09 249

原创 select实现网络服务器

select是实现IO多路复用的一种方式,可以在同一个进程或者线程中同时监控多个文件描述符的读写状态,程序会停在select这里,直到有可以读写的文件描述符状态发生改变。select使得不用阻塞在某一个IO操作上。在这里插入代码片头文件#include <sys/select.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select(int nfds,

2020-08-23 09:48:05 232

原创 TCP客户端程序

tcp客户端测试程序:./client_test 127.0.0.1 9000 1 1 5在这里插入代码片#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <errno.h>#include "client_test.h"int tcp_connect(const char *addr, const char *port) { struct sockad

2020-08-18 20:44:17 197

原创 TCP服务器

本次实现一个简单的服务器来了解socket,bind, listen等函数,服务器的主要功能是收到客户端的消息后,原封不动的返回给客户端。在这里插入代码片#include <sys/socket.h>#include <netinet/in.h>#include <time.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "mytcp.

2020-08-16 10:45:44 141

原创 TCP基本套接字

TCP客户端和服务器编程离不开基本的套接字函数,学习TCP基本套接字很重要,下面学习一下基本的套接字接口,并实现一个简单的客户端和服务器程序。socket函数为了执行网络IO,一个进程要做的第一件事情就是要创建套接字。在这里插入代码片#include <sys/socket.h>int socket(int family, int type, int protocol)返回:成功返回非负描述符,失败返回-1family:AF_INET->IPV4协议AF_INET6-&g

2020-08-15 19:44:29 884

原创 数据结构-树

二叉树是树的一种,特点如下:1.每个节点最多有两颗子树,节点的度最大为22.左右子树次序不能颠倒3.即使某一个节点只有一个子树,也要区分。二叉查找树:1.左子树上的所有节点值均小于根节点值2.右子树上的所有节点均不小于根节点的值3.左右子树也满足以上两个条件有序数组的优势是可以使用二分法快速查找,链表的优势在于数据的插入和删除。二叉树兼具两则的优点于一身。在这里插入代码片typedef struct node* p_node;struct node{ int val; p_nod

2020-08-09 12:26:22 58

原创 大数相加

在这里插入代码片char *addbigint(char *num1, char *num2){ int c = 0; int len_num1 = strlen(num1) - 1; int len_num2 = strlen(num2) - 1; int max_len = strlen(num1) > strlen(num2) ? strlen(num1) + 1 : strlen(num2) + 1; char *rst = (char*)malloc(max_len + 1);

2020-08-08 11:54:38 91

原创 有那几种情况只能用初始化列表,而不能用赋值

无论是在构造函数初始化列表中初始化成员,还是在构造函数中赋值初始化,最终结果都是相同的。不同之处在于,使用构造函数初始化列表初始化数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值。对于const和reference类型成员变量,它只能够被初始化而不能够做赋值操作,因此只能用初始化列表。类的构造函数调用其基类的构造函数时候,也只能用初始化列表。在这里插入代码片//const...

2020-08-08 11:47:00 555

原创 树形数据结构

树是有限个节点的集合。树的一些基本概念:结点包含一个数据元素及若干指向其子树的分支结点的度一个结点的子树的数目树的度树中所有结点的度的最大值叶子节点树中度为0的结点,即左右孩子结点均不存在的结点孩子一个结点的直接后继称为该节点的孩子双亲一个结点的直接前驱称为该节点的双亲兄弟同一个双亲结点的孩子节点互称为兄弟树的深度树中所有节点的层次的最大值,也成为树的高度二叉树二叉树定义特点:1.每个节点最多有两颗子树2.二叉树的子树有左子树和右子树之分,其次序不能够随意互换结点

2020-08-02 20:30:30 461

原创 顺序队列和链式队列

队列采用顺序存储结构来表示,即在内存中用一组地址连续的存储单元依次存放从队头到队尾的数据元素。有一点要注意,当队尾rear=MAX_SIZE时候,队列并不一定占满。判断队列为空的条件front == rear判断队列满的条件为 (rear + 1) % MAX_SIZE == front进队操作:rear = (rear + 1) % MAX_SIZE出队操作:front = (front + 1) % MAX_SIZE在这里插入代码片#include<stdio.h>#inc

2020-07-26 21:34:32 1923

原创 顺序栈和链式栈

栈是一种只允许在表的一端进行操作的数据结构,插入操作称为进栈,删除操作称为入栈。顺序栈是指采用顺序存储的结构的栈,即在内存中用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时设置一个top指针,指示栈顶元素的当前位置。在这里插入代码片#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 100#define true 0#define false 1typedef struct { int data[MAX

2020-07-25 20:02:54 150

原创 链式线性表和顺序线性表

顺序线性表顺序表的存储结构通常用一维数组来描述,数组的下标与元素在线性表中的序号相对应。在这里插入代码片线性表的存储结构:typedef struct { int elem[MAX_SIZE];//线性表的数据元素数组 int length; //线性表的当前长度} seqlist;typedef struct { int *elem; int length; int listsize;}seqlist;顺序表基本操作初始化顺序表在这里插入代码片int seqlist_in

2020-07-18 11:36:04 168

原创 ubuntu 安装zookeeper

安装环境在这里插入代码片uname -aLinux hwzhang-virtual-machine 4.4.0-142-generic #168~14.04.1-Ubuntu SMP Sat Jan 19 11:26:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux安装zookeeper在这里插入代码片sudo apt-get install zookeeperd //系统默认自带的版本,也可以自己下载安装包进行安装配置zookeeper//默认配置文

2020-07-12 16:42:29 1908

原创 C++ vector

在这里插入代码片#include<iostream>#include<vector>int main(){ std::vector<int> arr = { 1,2,3,4,5 }; /*迭代器*/ for (auto it = arr.begin(); it != arr.end(); it++) { std::cout << *it << " "; } std::cout << std::endl; ar

2020-06-27 17:23:36 176

原创 C++ array

array是序列式容器,类似于C语言的数组,是固定大小的,一旦定义完成后就无法进行扩容或收缩。array的模板类声明在这里插入代码片template<class T, size_t N> class array;array模板类的使用1.迭代器遍历函数功能begin返回容器中第一个元素的迭代器end返回容器中最后一个元素之后的迭代器rbegin返回指向最后一个元素的迭代器rend返回指向第一个元素之前的迭代器在这里插入代码片#i

2020-06-27 10:44:45 14326 5

原创 ubuntu14.04安装dpdk

1.环境准备DPDK是英特尔推出的用于网络数据转发的一项技术,仅支持x86架构的机器。系统:在这里插入代码片dpdk@dpdk-virtual-machine:~$ uname -aLinux dpdk-virtual-machine 4.4.0-142-generic #168~14.04.1-Ubuntu SMP Sat Jan 19 11:26:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linuxdpdk@dpdk-virtual-machine:~$

2020-05-17 16:58:53 213

原创 算法系列 ~归并排序

归并排序是利用归并技术来进行排序。归并是将若干个已排序的子文件合并成一个有序的文件。具体步骤如下:1)分解,将当前区间一分为二,求出分裂点。2)求解,递归地对两个子区间[low…mid]和[mid+1…high]进行递归排序3)组合,将已排序的两个子区间[low…mid]和[mid+1…high]归并为一个有序的区间递归的结束条件是子区间的长度为1.如数组arr[] = {12, 2,...

2020-04-23 21:54:14 95

原创 快速排序

快速排序是一种划分交换排序,采用分治的策略。分治法的基本思想是将原问题分解为若干个规模更小但结构与原问题相似的子问题。通过递归的解这些子问题,然后将这些子问题的解组合为原问题的解。快速排序的基本思想是假设当前要排序的无序区为[low…high]采用分治的思想:1)选一个基准,即哨兵pos,将无序区划分为比哨兵小的区域和比哨兵大的区域,并记录哨兵的位置信息2)通过递归调用快速的对左右子区间...

2020-04-22 21:18:35 137

原创 虚函数

在这里插入代码片#include<iostream>using namespace std;class A{public: virtual void print(void) { cout << "A::print()" << endl; }};class B : public A{public: virtual void prin...

2020-04-08 15:04:04 127

原创 C++多态

多态的定义:同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。有两种不同类型的多态:1.编译时多态。编译时多态通过重载来实现,对于非虚的成员来说,系统在编译时根据传递的参数和返回的类型等来决定实现何种操作,是由编译器来决定的。2.运行时多态。运行时候的多态是指系统运行时间才根据实际情况决定实现何种操作,一般通过虚函数来实现。...

2020-04-08 14:33:32 89

原创 C++临时对象

在这里插入代码片#include<iostream>using namespace std;//临时对象是看不见的,不会出现在程序代码中,会影响程序的执行效率,应避免产生临时对象//临时对象产生的情况,(1):参数按值传递(2):返回值按值传递class test{public: test() :num(0){} test(int data) :num(data){}...

2020-03-29 16:21:45 101

空空如也

空空如也

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

TA关注的人

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