自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++ priority_queue如何自定义比较函数?和sort里面自定义比较函数有何区别?

C++ priority_queue如何自定义比较函数?和sort里面自定义比较函数有何区别?

2022-11-20 17:06:24 1464

原创 C++ upper_bound()和lower_bound()(二分查找中使用)的定义,使用方法和区别

C++ upper_bound()和lower_bound()(二分查找中使用)的定义,使用方法和区别

2022-11-20 14:27:25 5085 2

原创 C++ 函数对象(Function Object)是什么?C++重载小括号()是什么作用?

C++ 函数对象(Function Object)是什么?C++重载小括号()是什么作用?

2022-11-16 23:28:13 936

原创 C++如何进行字符串分割,C++如何按照空格对字符串进行解析,C++如何按照逗号对字符串解析

C++如何进行字符串分割,C++如何按照空格对字符串进行解析,C++如何按照逗号对字符串解析

2022-10-30 20:00:33 1243

原创 C++ 如何把string转为int,如何把int转为string(字符串转为数字,数字转为字符串)

C++ 如何把string转为int,如何把int转为string(字符串转为数字,数字转为字符串)

2022-10-30 14:40:23 532

原创 C++如何表示次方(尖号^不是次方的意思,e也不是次方的意思)

C++如何表示次方(尖号^不是次方的意思,e也不是次方的意思)

2022-10-30 11:21:03 26194

原创 采用普罗米修斯(Prometheus )监控各个指标的含义,类型,以及格式

采用普罗米修斯(Prometheus )监控各个指标的含义,类型,以及格式

2022-09-25 21:24:04 6951

原创 Prometheus(普罗米修斯)监控架构简介

Prometheus(普罗米修斯)监控架构简介

2022-09-25 20:09:13 11406

原创 K8s(Kubernetes), docker中的registry是什么意思?和windows中的注册表registry有什么区别?

K8s(Kubernetes), docker中的registry是什么意思?和windows中的注册表registry有什么区别?

2022-09-25 16:37:17 1156

原创 k8s(Kubernetes )架构简介,k8s(Kubernetes )各个组件之间的关系

k8s(Kubernetes )架构简介,k8s(Kubernetes )各个组件之间的关系

2022-09-25 15:30:14 2647

原创 C++ sort比较函数的写法,最全面的总结

C++ sort比较函数的写法,最全面的总结

2022-09-24 23:44:26 1730 1

原创 windows 10 系统 minikube 安装k8s(Kubernetes)安装环境以及问题解答

windows 10 系统 minikube 安装k8s(Kubernetes)安装环境以及问题解答

2022-09-20 15:36:02 4195

原创 什么是云原生(cloud native)?

云原生的定义

2022-08-18 09:44:34 383

原创 Latex设置有序列表和无序列表的方法

Latex列表分为有序列表(Ordered lists)和无序列表(Unordered lists)有序列表采用关键字enumerate,无序列表采用关键字itemize用法如下:有序列表(Ordered lists)\begin{enumerate} \item This is the first entry in our list \item The list numbers increase with each entry we add\end{enumerate}无序列表(Un

2021-12-19 19:55:27 4443 2

原创 Latex如何设置超链接的字体颜色?如何更改颜色?

首先需要导入color包:\usepackage{color}然后导入超链接包\usepackage{hyperref}设置超链接的颜色\hypersetup{ colorlinks=true, linkcolor=blue, filecolor=blue, urlcolor=blue, citecolor=cyan,}%改变颜色然后就可以通过href插入超链接了,具体语法:\href{超链接}{描述}如果想要把颜色改回来或者设

2021-12-19 19:17:26 8433 1

原创 Linux中write和writev的区别,write() vs writev()

Linux中write和writev()的区别:我觉得StackOverflow上面的回答写的很好,see: write vs writev下面是我自己的总结:函数原型:write#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count);表示从buf开始的缓冲区向文件描述符fd所引用的文件写入count字节数。writev#include <sys/uio.h>ssize_t

2021-12-15 22:20:05 3060

原创 C/Linux语言里面strcpy和strncpy的区别

在Linux系统下,可以去man文档查看,输入man 3 strcpy就有关于他们的详细解释,我觉得看这个就够了。摘录如下:描述:#include <string.h>char *strcpy(char *dest, const char *src);char *strncpy(char *dest, const char *src, size_t n);都表示从源字符串拷贝到目标字符串参数含义:dest表示目标字符串,src表示源字符串,对于strncpy,n表示

2021-12-15 21:39:44 1762

原创 webserver项目里面涉及到的http知识

webserver项目里面涉及到的http知识HTTP 请求报文格式HTTP响应报文格式HTTP请求方法有限状态机HTTP 请求报文格式分为请求行,请求头,请求数据三部分,具体形式如下HTTP响应报文格式包括状态行,响应头,响应正文三部分HTTP请求方法HTTP/1.1 协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:GET:向指定的资源发出“显示”请求。使用 GET 方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在 Web Application

2021-12-15 19:45:11 1355

原创 网络编程里面什么是逻辑单元?

首先要了解一下服务器编程的基本框架:服务器程序种类繁多,但其基本框架都一样,不同之处在于逻辑处理。如下图所示:单元功能I/O 单元处理客户连接,读写网络数据网络存储单元存储数据,如数据库请求队列各单元之间的通信方式逻辑单元处理业务逻辑比如对于一个http服务器,他的逻辑单元就是处理http请求,其他涉及到IO操作(读写数据),存储(数据库)等不是他要干的事参考资料:Linux高性能服务器编程 游双...

2021-12-15 16:39:38 1642

原创 C/C++语言中的assert函数用法

C库中的宏assert允许将诊断信息写入标准错误文件。也就是它可以用于在C程序中添加诊断程序。声明:void assert(int expression);expression——可以是变量或任意C表达式。如果expression的计算结果为TRUE,则assert()不执行任何操作。如果expression的计算结果为FALSE,则assert()在标准错误流(用于显示错误消息和诊断的标准错误流)上显示错误消息,并中止程序执行。举个例子:see: assert geeksforgeeks#inc

2021-12-14 11:31:18 4029

原创 Webbench 原理及其优缺点

提示:网上搜索webbench有很多网站,大家还是到原网址去下载以防下载病毒软件。webbench的原网址:webbench原网址原理:详细可以参考:webbench剖析基本原理:Webbench 首先 fork 出多个子进程,每个子进程都循环做 web 访问测试。子进程把访问的结果通过pipe 告诉父进程,父进程做最终的统计结果。编译安装1.wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz2.tar zxv

2021-12-13 21:29:39 3913

原创 Reactor模式,Proactor模式以及采用Reator模拟Proactor模式详解,以及他们在网络IO处理中的应用

关于Reactor模式和Proactor模式原理性的详细介绍可以参见:如何深刻理解Reactor和Proactor? - 小林coding的回答 - 知乎不管是Reactor模式还是Proactor模式都是事件驱动模式,采用了面向对象的思想,如果是IO复用的方式实现高并发是基于面向过程的思想。Reactor模式是一种同步IO模式,什么是同步IO操作什么是异步IO操作可以参见UNP 卷1 P126:同步IO操作导致请求进程阻塞,直到IO操作完成。对于不同类型的IO模型(Linux下有四种,可以看我的

2021-12-13 21:04:49 1141

原创 C语言中的回调函数(callback function)

网络上有很多对于对于回调函数的解释,还有人做了一些很有意思的比喻,比如下面这个:回调函数(callback)是什么? - no.body的回答 - 知乎打个比方,有一家旅馆提供叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话,也可以是派服务员去敲门,睡得死怕耽误事的,还可以要求往自己头上浇盆水。这里,“叫醒”这个行为是旅馆提供的,相当于库函数,但是叫醒的方式是由旅客决定并告诉旅馆的,也就是回调函数。而旅客告诉旅馆怎么叫醒自己的动作,也就是把回调函数传入库函数的动作,称为登记回调函数(to re

2021-12-13 15:41:30 1597

原创 Unix下的五种IO模型是什么?区别是什么?

Unix下有5种IO模型:阻塞IO针对阻塞IO的系统调用(如read, write)可能因为无法完成而被系统挂起,直到等待的事件发生为止。通俗的解释,用户进程(也有叫应用进程的)需要进行IO操作,如调用read,如果内核中的数据没有准备好,用户进程就阻塞,直到内核数据拷贝到了用户缓冲区,用户进程才返回。采用这种方式在需要进行IO的进程很多的时候,由于大部分的进程都是处于阻塞状态,会带来很大的进程切换开销,和内存开销。非阻塞IO针对非阻塞IO的系统调用总是立刻返回,不管事件是否发生,如果事件

2021-12-12 22:05:04 387

原创 Linux中的信号驱动IO模型是什么?有什么优势?

首先要开启套接字的信号驱动 IO功能,并通过sigaction系统调用安装一个信号处理函数,该系统调用立即返回,进程继续运行并不阻塞,当IO事件就绪(也就是数据报准备好读取时),内核为该进程产生一个SIGIO信号,进程收到SIGIO 信号,然后处理 IO 事件。这种IO模型的优势在于在等待数据的过程中进程可以不用阻塞,只要等待信号处理函数的通知。...

2021-12-12 20:11:45 536

原创 什么是IO多路复用?为什么需要IO多路复用?

首先,多路复用(multiplexing) 是计算机里面很常见的一个概念,我觉得他的核心思想就是利用一组资源做很多件事。常见的多路复用(multiplexing)除了网络编程里面的IO多路复用;还有计算机网络的时分多路复用,频分多路复用;还有操作系统里面的时间复用(Time multiplexing,指在多个用户之间安排连续可重用的资源如CPU ),空间复用(Space multiplexing ,将多用途资源分配给几个用户,如内存(虚拟内存),磁盘空间(文件系统))这里详见:https://sites.

2021-12-12 19:09:59 4844

原创 阻塞IO和非阻塞IO的区别

定义非官方定义:我个人理解阻塞就是执行系统调用的进程或者线程被挂起。阻塞IO:称阻塞的文件描述符为阻塞IO非阻塞IO:称非阻塞的文件描述符为非阻塞IOsee: Linux高性能服务器编程 游双 P126区别阻塞IO针对阻塞IO的系统调用(如read, write)可能因为无法完成而被系统挂起,直到等待的事件发生为止。举例:read和write,通常IO操作都是阻塞I/O的,也就是说当你调用read时,如果没有数据收到,那么线程或者进程就会被挂起,直到收到数据。坏处:see: I/O多路复

2021-12-12 11:26:02 7541

原创 线程池的概念以及原理

池的概念池(pool)是一组资源的集合,这组资源在服务器启动之初就被完全创建好并且初始化,称之为静态资源分配,当服务器开始运行的时候如果需要相关的资源,可以直接从池中获取,无需动态资源分配。池的好处池事实上是一种以空间(硬件资源消耗)换取效率的作法。当服务器需要相关资源的时候可以直接从池中获取,释放资源的时候直接释放回池里,如果不采用池的技术,动态分配资源会产生很大的系统调用开销,需要对内核频繁访问。池的类型根据资源的不同,分为内存池,进程池,线程池,连接池等。线程池根据上面的定义,就是指资源

2021-12-11 23:11:31 174

原创 C语言里面的传出参数,C++语言里面的传出参数,以及二者的区别,传出参数和引用的区别

一开始进行C

2021-12-11 15:42:31 915

原创 阿里云服务器apt install 出错怎么办?出现Package gdb is not available, but is referred to by another package怎么办

在阿里云服务器(ubuntu操作系统)上采用apt 安装软件的时候会出现类似下面这样的错误:Reading package lists… DoneBuilding dependency treeReading state information… DonePackage gcc-multilib is not available, but is referred to by another package.This may mean that the package is missing, has

2021-12-09 11:16:02 4289 3

原创 C/C++中的字节对齐,结构体对齐,alignment,简单易懂

关于对齐的内容事实上比较复杂,更详细的一篇文章参见:https://blog.csdn.net/Sansipi/article/details/121597464面试的时候一般只会问结构体对齐的规则是什么?只要记住下面的内容就ok了1. 无pragma pack的结构体对齐规则分配内存的顺序是按照声明的顺序结构体内每一个数据成员的起始位置(第一个元素的起始位置看成0)都应当能被该成员的大小整除,如果不能,就需要对该成员的前一个成员进行填充对于整个结构体而言,还需要满足整个结构体的大小能被大小最

2021-11-28 22:39:40 491

原创 C/C++中的字节对齐,结构体对齐,alignment,详细的解释

字节对齐或者结构体对齐有什么作用?需要如何实现?本文详细分析了其中的细节,也欢迎大家一起来讨论,如有错误也请一并指出。实际面试中可能不会涉及到那么具体的细节,一般只会问结构体对齐的规则是什么?关于这个问题可以参见本文的后一部分的内容,也可以看我的另一个文章:1. 名词解析首先关于字节对齐(对齐的英文原名是alignment,但是英文里面没有byte alignment这种叫法,我见到的有data alignment, data structure alignment, structure alignm

2021-11-28 22:32:12 1566

原创 进程间的通信方式与同步方式有哪些?进程间的通信方式与同步方式区别是什么?线程之间的通信方式与同步方式有哪些?线程间的通信方式与同步方式区别是什么?一文全部搞懂

进程间的通信方式与同步方式有哪些?进程间的通信方式与同步方式区别是什么?线程之间的通信方式与同步方式有哪些?线程间的通信方式与同步方式区别是什么?本文会详细解释这几个问题。一开始在学习操作系统的时候经常糊涂,感觉比较混乱,进程间的通信方式与同步方式似乎是一样的,线程之间的通信方式与同步方式好像也挺像的。相信不少人也有和我一样的困惑,看网上的博客也很少有人讨论这个问题,讲的也很混乱。遇到这种问题当然要看一下书了,发现不同的书讲的还不太一样。这也就是为什么网络上的资料比较混乱的原因。以我读过的三本书

2021-11-27 22:11:36 752

原创 单工 半双工 全双工的区别

单工:只能一方发送一方接收,顺序不可颠倒半双工 :双方都能发送和接收,但是同一时间信道上只能有一方发送,一方接收,普通管道(又叫匿名管道)就是半双工的全双工:双方都能发送和接收,而且可以同时发送和接收,TCP就是全双工的...

2021-11-25 15:27:22 1430

原创 在浏览器地址栏输入一个URL后回车之后会经历哪些流程?浏览器输入网址后有哪些步骤?

这也是一个面试的时候经常出现的问题,下面说一下简略版和详细版的回答,以防止追问。简略版:通过DNS(域名解析服务器)获得IP地址首先尝试与http默认端口80建立TCP连接(http是是基于TCP之上的)如果协议是https那么需要转换协议为https连接建立后服务器发送html文本浏览器显示html文本其中的一些解释:域名解析:真实过程非常复杂,主要步骤如下:检查浏览器缓存看有没有对应与主机名(如www.taobao.com)的IP地址,有就返回,如果没有进行下一步查找本机的

2021-11-22 21:44:46 2258

原创 TCP如何保证可靠传输?TCP怎么保证可靠性?最详细的总结

TCP如何保证可靠传输?这是一个面试中经常被问到的问题,下面写一个详细的总结。首先是一个简略版的回答:建立连接序号机制合理分片(可以不说,是与UDP相比的,有些八股文上面没有这一条)数据校验超时重传流量控制拥塞控制下面是详细的回答:建立连接:通过三次握手建立连接,保证连接实体真实存在序号机制:保证数据是按序、完整到达合理分片:tcp会按最大传输单元(MTU)合理分片,接收方会缓存未按序到达的数据,重新排序后交给应用层。数据校验:TCP报文头有校验和,用于校验报文是否损坏

2021-11-21 21:18:26 7520

原创 流量控制和拥塞控制的区别

流量控制的目的就是为了防止TCP发送方发送数据过快而导致接收方接收缓存溢出,流量控制的目的是为了保证发送方发送速率与接收方接受速率匹配。拥塞控制:由于IP网络的堵塞而对TCP发送方的发送控制。二者虽然都是对TCP发送方的发送控制,但是适用场景不一样。...

2021-11-21 11:07:25 2359

原创 TCP UDP面向连接是什么意思,面向无连接是什么意思

TCP和UDP都是传输层的协议,上面连接应用层,下面连接网络层(四层模型),经常说TCP是面向连接,UDP是无连接的,具体有哪些含义?连接建立:TCP需要三次握手,UDP不需要任何准备就可以传输数据。因此UDP更快速。连接状态:TCP需要维护连接状态,包括发送接收缓存,拥塞控制参数以及序号与确认号参数,UDP不维护连接状态,也不追踪这些参数。四层参考模型(from : 华南理工计算机网络mooc)参考资料:计算机网络自顶向下方法 7th edition...

2021-11-19 22:49:32 2318

原创 C++强制类型转换,C++显式转换

C++中四种强制类型转换(也叫显式转换)是:static_cast, dynamic_cast, const_cast, reinterpret_cast形式cast_name<type>expressionconst_cast ,类型必须是指针,引用或者指向对象类的指针,去掉底层运算对象的const,这样就能进行写操作,只有const_cast能够改变表达式的常量属性,使用其他类型的强制转换都会引发编译器错误static_cast 用于各种非多态类型的转换,比如非 const 转 c

2021-11-18 18:54:58 1114

原创 C++引用的本质以及使用注意事项

关于引用的问题,初学者经常困扰,下面说一下引用引用的本质以及注意事项,注意这里&作用不是取地址符。引用的本质:引用的本质在c++内部实现是一个常量指针。c++编译器在编译过程中使用常量指针作为引用的内部实现,因此引用所占用的空间大小与指针相同,只是这个过程是编译器内部实现,用户不可见,上述内容来自黑马C++教程//发现是引用,转换为 int* const ref = &a;void testFunc(int& ref){ ref = 100; // ref是引用,转换为*

2021-11-18 16:31:25 389

空空如也

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

TA关注的人

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