- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 简明git教程(1)
该系列文章旨在快速上手git,了解git基本逻辑,能使用git上传自己的代码到本地仓库以及远程仓库。简明git教程(1) 旨在了解git,并学会git的基本操作。(本地仓库)什么是Git?Git是一个分布式版本控制系统,用于跟踪计算机文件的更改,并协调多个用户之间的工作。Git的优势速度快:Git设计高效,大多数操作都在本地执行,因此速度非常快。灵活的分支管理:Git的分支操作简单且成本低,支持灵活的工作流。
2025-01-11 10:59:47
1090
原创 3.条件码寄存器
流程就是得到了结果去写条件码寄存器里面的内容,每得到一个结果就去写条件码寄存器,结果是可以覆盖的(相当于重写)。所以ALU不仅会更新目的寄存器(大部分操作),还会更新条件码寄存器。条件码寄存器都是单个位的,是不同于整数寄存器的另一组寄存器。条件码描述了最近的算术或逻辑操作的属性,可以通过检测这些寄存器来执行条件分支指令。CF:进位标志。最近的操作使最高位产生了进位。可以用来检查无符号数的溢出ZF:零标志。最近的操作的结果为 0SF:符号标志。最近的操作的结果为负数。OF:溢出标志。
2024-05-22 11:11:17
940
原创 2.数据传送指令
CSAPP重点解读九曲阑干2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频《深入理解计算机系统(CSAPP)》全书学习笔记(详细)操作 源操作数 目的操作数数据传送指令压栈入栈指令,%rsp栈顶指针存放的寄存器算数逻辑操作:一元操作二元操作逻辑操作移位操作特殊操作有道云笔记。
2024-05-21 17:23:04
1224
原创 1.机器级代码
指令集和虚拟内存的概念寄存器:历史演化,由此就会联想到数据格式(size of data type: b, w, l, q)体现在操作的后缀上每个通用寄存器的作用,包括调用者和被调用者保存,等等操作数:1. 立即数;2.寄存器;3.内存引用掌握好寻址公式。
2024-05-18 23:05:30
1171
2
原创 3.整数运算
本文参考书籍是《深入理解计算机系统 3th 中文版》,本文的图片大多是参考和来自于b站up主九曲阑干。本篇文章会提到部分整数数据和算数操作的术语,详情可见2.整数表示的前言部分。无符号数加法可能会导致溢出无符号数的加法逆元和补码逆元(鸡肋)补码的加法:正溢出负溢出无符号数的乘法,和补码的乘法乘以常数,可以用左移。甚至可以拆分常数将其弄成2^k的组合形式除以2^k正数就逻辑右移负数加上bias再算数右移(bias的作用就是使得结果向0舍入)上面的乘以和除以2^k。
2024-05-13 22:29:11
1123
原创 4. 初探MPI——集体通信
点对点通信的方式只会涉及两个不同进程之间的通信。而集体通信指的是涉及 communicator 里面所有进程的一个方法。BroadcastReductionScatter: A single process partitions the data to send pieces to every other process 单个进程将数据分区然后将数据块发送到其他进程Gather。
2024-05-11 12:08:57
1165
原创 1.初探MPI——MPI简介
Message Passing Interface (MPI) 是一种标准化的消息传递库接口规范。该标准是消息传递模型的一种标准,该标准大量运用在科学计算领域。详尽的介绍参看。MPI简介,消息传递模型rank 和 size初始化和结束使用MPI进行简单的hello world小程序编写。
2024-04-30 16:48:08
4151
原创 C/C++实现高性能并行计算——2.使用OpenMP进行共享内存编程
OpenMP(Open Multi-Processing)是一个支持多平台共享内存多处理编程的应用程序接口(API),它用于编写在多处理器计算机上高效运行的程序。OpenMP是一种使用编译器指令以及库调用和环境变量来实现的并行编程模型。它主要用于C、C++和Fortran语言。OpenMP和Pthread都是统一内存访问,而MPI是非统一内存访问。OpenMP在编译过程中通过代码中的简单声明,编译器会自动进行并行(这就需要编译器支持一些操作)
2024-04-30 11:04:25
3076
6
原创 C/C++实现高性能并行计算——1.pthreads并行编程(下)
在上一篇文中讲到竞争条件和临界区,以及对应的解决方案——忙等待或者互斥量(尽量使用互斥量),主要针对线程之间的运行顺序没有先后的差别。这一节主要针对的是线程之间的运行是有先后顺序的情况。信号量,semaphore.h库产生,其数据类型是sem_t。其相关函数的使用。条件变量,其数据类型是。其相关函数的使用。路障,线程在实现的时候停下来同步,其实现方式有3种:忙等待&互斥锁信号量条件变量(其本身实现就包含互斥锁)。前两种方式代码变量重用性差。该方式是最好的!!!
2024-04-27 21:17:38
828
2
原创 C/C++实现高性能并行计算——1.pthreads并行编程(中)
在C++实现高性能并行计算——1.pthreads并行编程(上)一文中介绍了pthreads的基本编程框架,但是不是随便什么程序都像上一文中轻松多线程编程,会遇到许多问题,涉及到许多底层逻辑。本篇文章就是在讲其底层逻辑。或动态初始化:使用函数。这个函数提供了一种灵活的方式来设置互斥锁的属性,不同于使用 PTHREAD_MUTEX_INITIALIZER 进行静态初始化。动态初始化允许程序在运行时根据需要创建和配置互斥锁。
2024-04-27 18:20:46
1849
1
原创 C++实现高性能并行计算——1.pthreads并行编程(上)
共享内存系统中的任意处理器核都能访问所有的内存区域。因此,协调各个处理器核工作的一个方法,就是把某个内存设为“共享”进程,不共享内存,是操作系统资源分配的基本单元。比如QQ程序运行占一个进程。线程,共享内存,是程序执行的基本单位。比如QQ里面的视频聊天占QQ这个进程中的一个线程。一个程序至少有一个进程,一个进程至少有一个线程,一个线程只属于一个进程。单个进程可能有多个线程// 定义结构体用于传递数据给线程int rank;// 线程的标识(ID或rank)/*
2024-04-27 00:25:16
1314
2
原创 8.1 二叉排序树 —— C语言实现
数据结构 = 结构定义 + 结构操作结构操作是用来维护结构性质的二叉排序树又称二叉搜索树,性质,中序遍历排序。插入操作,按照其结构性质做一个递归即可。删除操作,又分三种情况,最后一种情况可以转换成为前两种情况来实现。
2024-04-21 11:01:55
2540
1
原创 7.3 哈希表与布隆过滤器(入门)—— C语言实现
本章内容参考海贼宝藏胡船长的数据结构与算法中的第七章——查找算法,侵权删。高效的操作时间:在最佳情况下,哈希表的查找、插入和删除操作的时间复杂度为 O(1)。这是因为哈希表通过哈希函数直接计算出数据应存储在哪个位置,从而快速定位数据。直接访问:不需要像在树结构中那样进行多次比较或遍历。哈希表,哈希冲突及冲突处理简单介绍了布隆过滤器。
2024-04-20 20:55:36
944
原创 7.2 跳跃表(skiplist)—— C语言实现
本章内容参考海贼宝藏胡船长的数据结构与算法中的第七章——查找算法,侵权删。查找的时间复杂度能从原来链表的OnO(n)On降到OlognO(logn)Ologn,典型的用空间复杂度换时间复杂度的例子。直观上感受就是把原来的链表给拉升了,处于同一高度的节点被串联成了一个单独的链表,每个链表都有一个层高第0层:1,6,15,30第1层:1,6,15,30第2层:1,15,30第3层:1,15第4层:15有层高,每一层又是单独的链表。
2024-04-20 14:04:05
1394
原创 2.整数表示
本文参考书籍是《深入理解计算机系统 3th 中文版》,本文的图片大多是参考和来自于b站up主九曲阑干。下列图列出了引入的数学术语,用于精确定义和描述计算机如何编码和操作整数,这里列出作为参考无符号表示与补码表示有符号数到无符号数的转换会产生漏洞,避免错误的方法之一是绝不使用无符号数。除了 C 以外很少有语言支持无符号整数,Java 就只支持有符号数第一节是简单介绍整型数据有哪些类型第二节是无符号数的编码,主要是权重这样的一个概念第三节是补码的最高位是负权重的概念。
2024-04-15 22:25:23
1145
1
原创 初探模板(函数模板,类模板)
本章参考了C++ 模板常见特性(函数模板、类模板),和《C++ Primer Plus 6th中文版》函数模板类模板使用「模板」的特性设计,实际上也就是「泛型」程序设计。template <typename Type> // 模板类型template <class Type> // 模板类template告诉编译器,将要定义一个模板,尖括号中的内容相当于函数的参数列表。关键字class看作变量的类型名,变量接受类型作为其值,把Type看作是该变量的名称。
2024-04-12 18:40:30
757
1
原创 初探类继承1
本章完全参考《C++ Primer Plus6th中文版》14章前半部分。C++的一个主要目标是促进代码重用。公有继承是实现这种目标的机制之一,但并不是唯一的机制。使用这样的类成员:本身是另一个类的对象。这种方法称为包含(containment)、组合(composition)或层次化(layering)是使用私有或保护继承。先理解其思想,基类和派生类到底是什么关系什么是接口,什么是实现。将自己置身于类的设计者和类的使用者两个角度去思考最后再来掌握具体的实现方式,代码语法。
2024-04-12 13:52:58
1193
1
原创 初探类继承0
本章内容参考《C++ Primer Plus6th中文版》第13章,以及作者本人的理解,海贼星星老师的讲解.本章讨论公有继承,这种继承模拟了is-a关系,即派生对象是基对象的特例。(公有继承在什么情况下合适,什么情况下不合适)有些继承关系是多态的,意味着相同方法名可能导致依赖于对象类型的行为。要实现这种行为——虚函数有时,使用抽象基类是实现继承关系的最佳方式面向对象编程的主要目的之一是提供可重用的代码。开发新项目, 尤其是当项目十分庞大时,重用经过测试的代码比重新编写代码要好得多。
2024-04-11 22:54:20
928
原创 设计一个缺陷类——探究类和动态内存分配(复制构造和赋值运算符重载)
本章参考《C++ Primer Plus 6th中文版》第12章的前半部分内容,将介绍如何对类使用new和delete以及如何处理由于使用动态内存而引起的一些微妙问题,它们将影响构造函数和析构函数的设计以及运算符重载。注意:拷贝构造函数,复制构造函数,二者术语意思相同想象一个场景:编译是就确定好类需要多少内存空间?还是运行时再确定需要多少空间?如果我要创建2000个这种对象,以上两种方法哪个更好?
2024-04-10 11:33:18
792
1
原创 查漏补缺——C/C++(类0)
本篇文章着重讨论《C++ Primer Plus 6th》的第10,11章内容,结合之前学的再添加一些作者自己的理解。类的定义,如何去理解(略)类的基本元素(略)构造函数,析构函数(详细)其实自己在之前的学习过程中,书和老师讲得都听得明白,让自己去写类,去优化实际的类,写构造函数总是卡壳,到底是默认构造,有参数构造,转换构造,拷贝构造,移动构造亦或者是赋值运算符重载,当然还有深拷贝浅拷贝等问题。
2024-04-05 16:06:40
1892
9
原创 查漏补缺——C/C++(函数)
这里只写重难点,不会从零基础开始讲:函数写法的格式,函数参数传递,函数重载,递归函数这里仅描述将值,引用或者指针传递给函数,至于将一个函数传递给另一个函数的情况,后面有时间再补!形参传递过程中的拷贝问题值返回的类型:左值or右值(临时量)const形参和const返回值。
2024-04-03 19:37:22
1061
1
原创 findfont: Font family ‘Arial‘ not found解决
findfont: Font family 'Arial' not found的解决
2024-04-02 11:10:57
2382
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人