自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (3)
  • 收藏
  • 关注

转载 2021-01-30

1.左值和右值首先,左值和右值是表达式的属性。C++中的表达式,不是左值就是右值。左值可以位于赋值语句的左侧,而右值则不能;可以做一个简单的归纳:当一个对象被用作右值的时候,用的是对象的值;当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。需要右值的地方可以用左值代替,但不能把右值当成左值使用。介绍完左值右值,接下来介绍左值引用和右值引用。2.左值引用左值引用就是我们平常使用的“引用”。引用是为对象起的别名,必须被初始化,与变量绑定到一起,且将一直绑定在一起。我们通过 &

2021-01-30 09:42:17 57

原创 Qt中IPC(进程间通信)的方式一:WM_COPYDATA消息

数据复制消息WM_COPYDATA是Windows中一个特殊的消息,通过这个消息能够在进程间传递数据。WM_COPYDATA消息含两个參数WPARAM wParam和LPARAM lParam,WPARAM和LPARAM是匈牙利命名法,历史更迭,WPARAM指32位整形变量,LPARAM指32为整形变量指针。发送WM_COPYDATA时,wParam赋值为发送此消息的窗体,lParam则指向一个COPYDATASTRUCT结构: typedefstruct{ ...

2021-01-29 15:26:31 628

原创 进程间通信(IPC)

概述进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。另外,系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件。此外,还有双方都可以访问的外设。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义上这也是进程间通信的手段,但是一般都不把这算作“进程间通信”。进程间通信(IPC,InterP

2021-01-28 18:20:51 156

原创 线程同步

信号量用主要用于线程同步的,意思就是线程通信的。C++11的新特性中,没有关于semaphore信号量相关的封装,我们可以利用互斥量和条件变量来进行信号量的封装。#include <mutex>#include <condition_variable>class CSemaphore{public: CSemaphore(long count); ~CSemaphore(); void signal(); void wait();private: ...

2021-01-28 16:37:55 203

原创 进程线程相关面试知识

进程1、定义:标准定义:进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的过程。进程是一个正在执行程序的实例,包括程序计数器、寄存器和程序变量的当前值。简单来说进程就是一个程序的执行流程,内部保存程序运行所需的资源。2、操作系统如何进行进程管理?这里就不得不提到一个数据结构:进程控制块(PCB),操作系统为每个进程都维护一个PCB,用来保存与该进程有关的各种状态信息。进程可以抽象理解为就是一个PCB,PCB是进程存在的唯一标志,操作系统用PCB来描述进程的基本情况以及运行.

2021-01-27 20:28:02 116

原创 C++ async

C++98 标准中并没有线程库的存在,直到 C++11 中才终于提供了多线程的标准库,提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。多线程库对应的头文件是 #include <thread> ,类名为 std::thread 。int testFun(int numb){ cout << "function is runing" << endl; cout << "this thread ID:"<<std::this_t

2021-01-27 18:53:20 1537

原创 绕懵逼之同步/异步 阻塞/非阻塞

被面试官绕蒙蔽了,特此整理总结一下1概念解析1.1 同步与异步概念描述同步异步概念与消息的通知机制有关。所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致。所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的.

2021-01-27 16:54:30 84

原创 TCP和UDP

引言网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别。一、TCP/IP网络模型 计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。 TCP/IP 是...

2021-01-27 15:20:43 307

原创 http和https

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。  为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服...

2021-01-27 15:08:21 100

原创 线程池相关

参数corePoolSize :核心线程数量maximumPoolSize :线程最大线程数workQueue :阻塞队列,存储等待执行的任务 很重要 会对线程池运行产生重大影响keepAliveTime :线程没有任务时最多保持多久时间终止unit :keepAliveTime的时间单位threadFactory :线程工厂,用来创建线程rejectHandler :当拒绝处理任务时的策略他们之间的区别主要是:缓存队列-核心线程数-最大线程数之间的关系。当需要加入进.

2021-01-23 23:35:14 73

原创 leetcode 编写一个函数来查找字符串数组中的最长公共前缀。

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。string longestCommonPrefix(vector<string>& strs) { if (strs.empty()) return ""; std::string result = ""; for (int i = 0; i < strs[0].length(); i++) { char key = strs[0][i]; if(key .

2021-01-12 16:50:44 1193

原创 max不是std成员

添加头文件 #include <algorithm> 即可

2021-01-12 16:15:58 482

原创 排序算法

冒泡:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。void bubble(int arr[],int n){ int temp = 0; for(int i = 0; i < n-1;i++){ for(int j = 0; j &l

2021-01-06 15:29:56 105 2

原创 leetcode 两数求和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案#include <hash_map>using namespace std;using namespace __gnu_cxx;class Solution {public: vector<int> twoSum(vect...

2021-01-05 14:52:22 129

原创 leetcode atoi函数

enum status{kvailed = 0,kinvailed};status myatoi(const char* str, int &numb) { unsigned int num; if (str == nullptr) return kinvailed; while (isspace(*str)) ++str; int sign = 1; if (*str == '-') { sign = -1; str++; } else if (*str =.

2021-01-04 19:59:47 173

原创 程切换问题

处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;3、用户态,运行于用户空间;一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。用户级上下文:正文、数据、用户堆栈以及共享存储区;寄存器上下文:通用寄存器、程序寄存器(IP)、处理器状态寄存器(EFLAGS)、栈指针(ESP);系统级上下文:进程控制块task_struct、内存管理信息(mm...

2021-01-04 11:14:51 143

ffmpeg+x264.rar

ffmpeg+X264 windows 动态库

2021-07-05

linux-ffmpeg.7z

linux环境下编译ffmpeg静态/动态库

2021-04-16

cef离屏渲染osr示例

用vs2017编译通过

2021-01-12

空空如也

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

TA关注的人

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