C++拷贝构造与拷贝赋值的深入探讨
写在前面
总结一下C++类的拷贝构造与拷贝赋值部分, 从基本的示例入手, 一点点介绍拷贝控制与资源管理的一些内容.
参考Cppprimer(第七章:类, 第十三章:拷贝控制), effective C++(55)
类的拷贝赋值运算符
一般流程
先将右侧运算对象拷贝到一个局部临时对象中
拷贝完成后, 销毁左侧运算对象的现有成员(保证内存安全)
将数据从临时对象拷贝到左侧运算对象的成员中.
要点
自赋值的正确性: 保证赋值运算符将对象赋予其自身时能够正确工作.
要做到这一点, 一个好的方法是在销毁左侧运算对象资源之前, 先拷贝右侧运算对象.
大多数赋值运算符组合了析构函数和拷贝构造函...
C++多继承,虚继承部分总结与示例
写在前面
写一下多继承, 虚继承的一些部分, 包括一些例子.
参考cppprimer
多继承
简介
多继承是指从多个直接基类中产生派生类的能力. 多继承的派生类继承了所有父类的属性, 所以会带来一些复杂的问题.
示例1: 多继承用法与调用顺序
#include <string>
#include <iostream>
using namespace std;
class ZooAnimal {
public:
ZooAnimal() { cout << "call ZooAnimal::ZooAnimal()\n"; }
~ZooAnimal() { cout << "call ZooAnimal:...
Macos下载钉钉直播回放视频的python解决方案
写在前面
之前写过一篇关于用Charles抓包下载钉钉直播回放视频的方法, 那会还是可以直接通过FFmpeg下载m3u8链接并且直接合并的, 但是现在直接上FFmpeg会出现403, 所以还是用别的方法来做吧.
后来发现抓包找到的m3u8不是加密视频流, 那就直接下载ts文件然后合并即可.
抓包
Charles代理
Proxy -> macOS Proxy 菜单开启代理
Proxy -> Proxy Settings 菜单,对代理进行配置,需要开启 HTTP 代理——选择 Use HTTP proxy。
安装 Charles 根证书,选择 Help -> SSL Proxying -> Insta...
Linux信号的系统调用与示例
写在前面
总结一下信号处理部分的系统调用与示例
信号基础
简介
信号(signal), 又称软件中断, 是系统中事件发生时对进程的通知机制. 也正是这种通知机制, 打断了程序执行的正常流程, 所以其与硬件中断很相似.
一个具有合适权限的进程可以向另一进程发送信号, 所以信号可以作为一种进程间通信方式(IPC). 同时, 进程也可以向自身发送信号, 一些常见的引发内核为进程产生信号的各类事件如下:
硬件异常: 硬件错误, 内存访问错误(段错误), 除零异常等
特殊字符: 用户输入了Ctrl+C或者Ctrl+Z或者Ctrl+\.
软件事件: 调整程序窗口大小, 进程定时器到期, 进程运行时间超限.
在signal.h头文件中详细定义了上述提到的各种信号以及符号...
Linux内存管理部分系统调用与示例分析
写在前面
总结Linux系统调用的内存分配与虚拟内存管理部分, 包括堆内存和栈内存的操作, 分配, 释放等.
参考: Linux/Unix系统编程手册第六/七章.
基本系统调用: brk/sbrk
C库函数: malloc/realloc/calloc/alloca/free
虚拟内存管理
简介
首先来看进程的内存布局, 如下图:
但是实际上, 这个布局并不是真实存在物理内存中的, 而是位于虚拟内存中.
利用访问局部性以追求高效地使用CPU和RAM(物理内存, 随机访问存储器)资源.
所谓访问局部性, 可以表现为以下两种情况:
时间局部性: 程序倾向于在不久的将来再次访问最近刚访问过的内存地址(例如循环)
空间局部...
Ssh在本地和远程服务器之间传送文件的命令总结(scp,rsync)
写在前面
关于云服务器, 之前介绍过不少文章, 但是当时依赖于一个名叫Termius的ssh图形化客户端, 好像是只有MacOS有, 传送文件只需要拖拽即可, 后来发现还是要多学点命令来完成文件传输才行, 下面来看看用scp以及rsync在本地和远端传送文件/文件夹的一些方法.
环境:
物理主机: MacOS12.6 M1
服务器(云主机): Ubuntu 20.04 x86_64
参考:
通过 SSH 在远程和本地系统之间传输文件的 4 种方法 - 腾讯云开发者社区-腾讯云 (tencent.com);
准备工作: 配置ssh免密登录
参考:
SSH 三步解决免密登录_jeikerxiao的博客-CSDN博客_ssh...
Linux进程间通信类系统调用总结与示例
写在前面
基本方法
通信:关注进程之间的数据交换
数据传输:
管道, FIFO, socket
伪终端
消息队列(POSIX/System V)
共享内存:
共享内存(POSIX/System V)
内存映射
同步:关注进程和线程操作之间的同步, 有以下四种主要形式:
信号量(POSIX/System V)
文件锁
互斥(线程)
条件变量(线程)
信...
Linux共享库,静态库与相关系统调用,工具的使用总结
写在前面
总结Unix/Linux操作系统的共享库/静态库部分, 以及一些系统调用.
参考Linux/UNIX系统编程手册41-42章.
测试程序均在Ubuntu下使用cc(gcc-9)运行成功.
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/...
共计 455 篇文章,57 页。
您是Zorch的第 个小伙伴
Hits