- 博客(23)
- 资源 (5)
- 收藏
- 关注
原创 C++primer 12章 动态内存和智能指针
C++引入智能指针的目的 使用智能指针来管理动态分配的对象,当一个对象应该被释放的时候,指向他的智能指针确保自动释放它 内存分配静态内存:局部static对象、类static数据成员、定义在任何函数之外的变量 栈内存:定义在函数内的非static对象 分配在静态或者栈内存中的对象由编译器自动创建和销毁 栈对象,仅在其定义的程序块运行时候才会存在 static对象在使用之前就会被分配,程序结束的时候会被销毁 除了静态内存和栈内存,还有一个内存池,被称作自由空间或者叫堆,用来存储动态分配
2021-01-31 23:26:53 370
原创 Linux进程 excel族函数的用法
介绍使用fork创建一个进程之后,经常会在新进程中调用exec函数执行别的程序 当前进程调用exec函数之后,这个进程会被完全替代换成新的程序,即便如此仍然是同一个进程,进程ID不变 函数族 execl execlp execle execvp execvpe 头文件 <unistd.h> 功能:在进程中执行一个可执行文件,gcc -o xxx.c xxx 返回值:成功无返回值;失败返回 -1,并且从源程序的调用点继续执行#include <unistd.h>ex
2021-01-26 11:28:18 910
原创 操作系统概述 记录操作系统相关知识
操作系统现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。 上面提到的这些东西都属于硬件资源,用户不会直接和硬件进行交互,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为 操作系统 常见的操作系统主要有Windows, Linux等,这种带有图形界面的操作系 统被称为图形用户界面(GUI),而基于文本、命令行的通常称为Shell。操作系统的简化图如上图所示,最下面的是硬件,硬件包括
2021-01-24 11:20:11 783 1
原创 算法章节 递归、排序、⼆分查找
递归概念与特性 函数调⽤函数⾃身的编程⽅式叫做递归,调⽤为”递“,返回为”归“ 三个条件 1. ⼀个问题的解可以分解为多个⼦问题的解; 2. 分解之后的⼦问题,除了数据规模不同,求解思路跟原问题相同; 3. 存在递归终⽌条件; 编程技巧 1. 寻找将⼤问题分解为⼩问题求解的规律; 2. 找出递推公式和终⽌条件,将其直接翻译成代码; 3. 切记不要⼈⾁⼀层⼀层的递归; 换句话说,也就是:如果⼀个问题A可以分解为若⼲⼦问题B、C、D,我们可以假设⼦问题
2021-01-23 20:09:35 168
原创 算法章节 数组、链表、栈、队列
数组概念与特性 1,数组是线性表,用一组连续的内存空间存储⼀组具有相同类型的数据 2,最大的特性是⽀持按照下标O(1)时间复杂度内快速访问数组元素 3,⼀维数组寻址公式:a[i]_addr = base_addr + i * data_type_size 操作与复杂度 1. 随机访问时间复杂度是O(1); 2. 在数组中间任意位置插⼊数据的时间复杂度是O(n); 3. 删除数组中任意位置数据的时间复杂度是O(n) 应⽤场
2021-01-23 19:22:06 98
原创 通过字符串的方式读取文件的内容
代码 std::ifstream file("1.txt"); std::stringstream data; data << file.rdbuf(); printf(data.str().c_str()); file.close();头文件 #include <cstdio>#include <cstdlib>#include <fstream>#include <sstream>
2021-01-22 21:34:18 236
原创 计算机操作系统读者和写者模型的简单介绍以及思考
读者和写者读写两组进程,共享一个文件,多个读者可以同时访问文件,多个写者不可以同时访问文件,写者和读者也不可以同时访问文件 共享读;独占写 特征:1,资源被谁占有;2,写者改变资源,读者不改变资源 分析:写者关心文件是否被占有;读者作为一个团体去读文件,第一个人关心文件是否被占有;读者团中间的人增加读者团的人数;最后一个读者需要释放文件semaphore mutex = 1;读者i(){ while(1){ p(mutex); if (read_
2021-01-22 15:52:50 317 1
原创 计算机操作系统生产者和消费者模型的简单介绍
同步互斥小口诀画图理解题目 判断题目类型 分析进程数目 填写进程模板 补充基本代码(伪代码) 补充PV代码 检查调整代码注意事项代码是一步一步写出来的,代码是反复调整写出来的 60%是生产者和消费者模型 30%是读者和写者的模型生产者和消费者例子1妈妈每次放放一个苹果到桌子上,孩子每次从桌子上取一个苹果。取苹果和放苹果不可以同时进行,而且桌子上最多只能放10个苹果,请使用pv代码实现同步互斥 箭头 代表生产的含义,数目代表生产的数量特征:1,存在一个容器,具有容量的
2021-01-22 14:26:06 1104 2
原创 操作系统 进程 学习以及思考
进程管理逻辑图将多个程序拷贝到进程中,占用内存,如图扇形区域,当酷狗进程需要资源的时候,会通过I/O子系统取用资源的过程中,会放弃对cpu的占用,cpu就会处理别的进程,因此提高了cpu的利用率(I/O低速,cpu高速) qq想要知道键盘输入的结果,他就会拜托I/O子系统去取键盘输入的结果,这个时候会放弃CPU的占用,CPU会重新分配给其他应用程序。当I/O取到键盘输入的数值,会把结果返回给QQ 死锁中对于资源的抢占不仅仅是cpu,也有键盘、鼠标、U盘等I/O资源I/O低速 CPU高速
2021-01-22 10:07:03 702 2
原创 解决VM虚拟机中ubuntu系统上不了网的问题
最简单的方式关闭虚拟机 在对应的虚拟机上右键,点击设置,找到网络适配器,点击移除,再次点击添加,将网络适配器再次添加回来,点击确定 重启虚拟机如果第一种方式解决不了问题,请使用第二种方式第二种方式打开终端, (1) 输入sudo service network-manager stop (2) sudo rm /var/lib/NetworkManager/NetworkManager.state (3) sudo service network-manager start .
2021-01-20 16:31:30 18869 43
原创 git submodule的使用
注意事项使用git log查看git上交记录使用命令切换分支 git checkoutfce965e4cf530e42a668f5b85a4a5f37528165a7 使用命令git submodule status查看当前的状态 使用命令git submodule update更新状态 使用命令进行CMAKE cmake .. -DCMAKE_BUILD_TYPE=DEBUG -DBUILD_DEVICE_TEST=ON -DENABLE_SWXA_COMMAND=OFF -DN...
2021-01-19 11:46:19 137
原创 操作系统
OS操作系统的宏观比喻计算机是如何启动的?OS(操作系统)是如何启动的当时钟振荡器发出时钟信号,使得cpu开始运转,进行计算,因为内存RAM是一种易失存储器,需要将操作系统从磁盘拷贝到内存中来执行,这个拷贝的过程是动态的,不是一次性全部完成的。 主板上的boot小程序负责将操作系统拷贝拷贝复制到内存中来执行,点击桌面图标,先在内存中找图标程序是否存在,如果不存在,将磁盘上对应的数据文件拷贝到内存中来执行,期间会涉及到界面加载、账号输入等功能OS的目的和功能os是软件和硬件资源的管理者
2021-01-17 18:23:58 112 2
原创 进程锁 读写文件的小例子 C++代码
代码#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <cassert>#include <pthread.h>#include <cstdio>#include <cstdlib>#include <fstream>#include <ios
2021-01-08 18:43:49 282
原创 将读写锁放到共享内存,实现进程之间对于同一文件的读写操作
思路将读写锁和读写锁的属性以及一个用于存储共享内存的地址的int型变量三者封装成一个struct结构 将这个结构体放到共享内存中,以及将读写锁的属性设置成全局性质,然后使用这个属性初始化锁,以及将锁的地址关联到结构体的内存地址这个变量 定义一个销毁函数,用于退出进程的时候,将内存空间销毁,以及删除对应的变量 定义读写函数,读函数读取文件的内容,输出文件的内容;写函数,以追加的方式,向指定文件中写入数据 测试:使用fork创建父子两个进程,定义一个for循环,循环5次之后,退出循环并且执行销毁函数
2021-01-06 15:40:50 2661 5
原创 将读写锁放到共享内存中,实现进程之间对数据的读写访问控制
代码#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <assert.h>#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <fstream>#include <
2021-01-06 14:43:21 498
原创 关于锁的注意事项
文件锁Linux 提供了fcntl系统调用,可以锁定文件 但是文件锁是和进程相关联的,一个进程中的多个线程/协程对同一个文件进行的锁操作会互相覆盖掉,从而无效。 fcntl创建的锁是建议性锁,只有写入的进程和读取的进程都遵循建议才有效;对应的有强制性锁,会在每次文件操作时进行判断,但性能较差,因此 Linux/Unix 系统默认采用的是建议性锁。写入日志文件使用O_APPEND标志来打开文件,这样在每次写入时都会lseek到文件末尾进行写入,这是一个原子操作,因此不会产生同步问...
2021-01-02 22:22:49 125
原创 linux fork多进程 demo
注释使用系统调用fork()创建三个子进程; 各个子进程显示和输出一些提示信息和自己的进程标识符; 父进程显示自己的进程ID和一些提示信息,然后调用waitpid()等待多个子进程结束,并在子进程结束后显示输出提示信息表示程序结束。代码#include <iostream>#include <unistd.h>#include <cstdarg>#include <wait.h>#include "crypto_util.h"int
2021-01-02 22:13:15 219
原创 Linux strtol将十六进制转化为十进制
代码#include <iostream>#include "crypto_util.h"int get_file(const std::string file_name){ size_t get_file_id = 0; std::cout << hsm::common::get_md5_digest_hex(file_name) << std::endl; get_file_id = strtol(reinterpret_cast&
2021-01-02 21:49:15 456
原创 linux读写文件 简单版
代码//writevoid write_file(const std::string file_name){ FILE *fp = nullptr; fp = fopen(file_name.c_str(),"w+"); fprintf(fp,"This is testing for mutex\n"); fclose(fp);}//readvoid read_file(const std::string file_name){ std::ifstrea
2021-01-02 21:44:04 151 1
实现和其余平台的客户端和服务端之间进行交叉双向认证的gmssl代码
2023-01-06
origin (函数绘图软件)相关配套安装软件
2022-05-12
国密算法SM2_SM3_SM4演示小程序
2021-12-20
defects4j-master.zip
2020-09-11
go-ipfs_v0.4.23_darwin-amd64.tar.gz
2020-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人