- 博客(28)
- 收藏
- 关注
原创 面向对象设计与分析
抽象 abstract舍弃个别非本质的特征。过程抽象:一个功能分解为多个子功能,较高层次上思考问题数据抽象:定义数据类型和限定的操作对象 object对象的数据称为属性,对象的操作称为服务或方法。操作通过消息传递,可以为其它对象使用。对外提供服务(public 公有的操作)。属性 一般 只能通过执行对象的操作来改变。类 class对象客观事物分类:物理实体(飞机)、人或组织的角色(医生)、应该记忆的事件(飞行)、两个或多个对象的相互作用(购买)、需要说明的概念(政策)。一组相似对象的定
2021-01-12 14:16:58
554
原创 数据结构 - 红黑树
文章目录介绍编码细节介绍红黑树可以在 O(logN)O(logN)O(logN) 时间内完成查找,插入,删除操作。相比 AVL ,牺牲了部分平衡性以在插入、删除操作时减少旋转操作,整体性能优于 AVL。 C++ STL 的 map 就是用红黑树实现的。满足以下 5 个条件:每个节点非黑即红视为树(包含部分子树)的根节点是黑色的叶节点 (NIL) 是黑色的如果一个节点是红色,则它的两个子节点是黑色的从根节点出发到所有叶节点的路径上,黑色节点数量相同4、5 两条规则使得红黑树从根节点到每
2020-12-23 13:42:55
143
原创 Linux 系统基本操作 - 4
文章目录文件及目录操作文件及目录操作cd pwd mkdir rmdirmkdir -p -m 自动创建路径目录,设置权限pwd 访问链接目录看的是逻辑地址,想要看实际物理地址 pwd -Pls -d 可看链接文件指向的位置ln 不可为目录创建硬链接,ls -s 可为目录创建软链接rm -r link 注意对目录删除时,-r 参数注意删除cp -i 复制时目标文件存在提示basename 取绝对路径末尾,dirname 取绝对路径目录cat 正向读 tac 反向读文件nl 显示行号读
2020-12-18 10:05:33
219
原创 C 语言复杂知识点
文章目录编译与宏语言特性与库指针、堆栈空间、结构体编译与宏# 开头为预处理命令,包括 #include 引入文件 #define 宏,在预处理阶段处理函数声明与语法检测在编译期检查,函数定义在链接时检测__attribute__(constructor)) 有该宏上标的函数先于 main 执行#include <stdbool.h> 使得 c 支持 bool 类型extern 引用其他文件已定义过的全局变量__typeof() 宏获得变量类型,常用于定义宏#define swa
2020-12-03 23:37:17
202
原创 数据结构 - 森林与并查集
文章目录使用场景C 实现C++ 实现使用场景并查集常用于操作不相交集合,判断或操作相关联关系,类似将森林中的两棵树进行合并C 实现quick_find 算法,将同属于一区块的集合进行 “染色” 判断#include <stdio.h>#include <stdlib.h>typedef struct UnionSet { int *color; int n;} UnionSet;UnionSet *init(int n) { UnionSet *u = (
2020-12-02 10:22:04
128
原创 数据结构 - 优先队列与堆
文章目录使用场景C 实现C++ 实现使用场景某些情况下要让高优先级的元素先出队,优先队列实际上是用堆实现的。C 实现priority_queue 优先队列#include <stdio.h>#include <stdlib.h>#include <time.h>#define swap(a, b) { \ __typeof(a) __temp = a; \ a = b; b = __temp; \}typedef struct p
2020-12-02 10:21:54
218
原创 数据结构 - 哈希表
文章目录使用场景C 实现C++ 实现使用场景空间换时间,记录一些数据根据映射结果取C 实现#include <stdio.h>#include <stdlib.h>#include <string.h>// 链表解决冲突typedef struct Node { char *str; struct Node *next;} Node;typedef struct HashTable { Node **data; i
2020-12-02 10:21:42
115
原创 数据结构 - 排序与查找
文章目录使用场景稳定排序C 实现C++ 实现不稳定排序C 实现C++ 实现查找C 语言实现C++ 实现使用场景了解各个排序的特性,针对排序好的序列进行查找稳定排序C 实现#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#define swap(a, b) { \ a ^= b; b ^= a; a ^= b; \}// 宏书写,方
2020-12-02 10:21:32
326
原创 数据结构 - 树与二叉树
文章目录使用场景C 实现C++ 实现使用场景树遍历关系C 实现#include <stdio.h>#include <stdlib.h>#include <time.h>typedef struct Node { int data; struct Node *lchild, *rchild;} Node;typedef struct Tree { Node *root; int n;} Tree;Node *g
2020-12-02 10:21:18
85
原创 数据结构 - 栈和队列
文章目录使用场景栈C 语言实现C++ 实现队列C 语言实现C++ 实现使用场景栈用来回溯和匹配一些进出情况,队列用来先进先出,实际应用中可用来缓冲一些请求栈C 语言实现#include <stdio.h>#include <time.h>#include <stdlib.h>#define COLOR(a, b) "\033[" #b "m" a "\033[0m"#define GREEN(a) COLOR(a, 32)typedef stru
2020-12-02 10:21:06
76
原创 数据结构 - 顺序表和链表
文章目录使用场景C 实现C++ 实现使用场景顺序表直接查找,链表空间方便阔容插入删除方便C 实现顺序表#include <stdio.h>#include <stdlib.h>#include <time.h>#define COLOR(a, b) "\033[" #b "m" a "\033[0m"#define GREEN(a) COLOR(a, 32)typedef struct Vector { int *data; in
2020-12-02 10:20:29
100
原创 Linux 系统基本操作 - 3
目录系统信息SHELL 编程参数变量状态变量输入输出函数系统信息命令功能uptime打印系统运行时长和平均负载who当前登录系统的用户信息last显示用户最近登录信息date显示和设置系统日期w当前登录用户列表及正在执行的任务whoami打印当前有效的用户名称uname打印当前系统信息cal显示日历history显示历史操作记录#打印实际登录终端用户who am i # 查看最近最多次登录的用户last
2020-12-01 16:07:52
110
原创 Linux 系统基本操作 - 1
目录运行文件及文件权限用户命令系统shell terminal console运行echo $? // 可看到上次运行情况运行码command !! // 运行失败后可通过 !! 补充前缀文件及文件权限查看目录下所有文件的权限可通过 l (ls -alh) 进行查看-rw-rw-r-- 1 user group 213K Nov 22 19:20 a.c文件类型-主权限-组权限-他权限 文件主 文件组 文件大小 修改时间linux 中文件命名以 . 开头的为隐藏文件,需要 ls -a
2020-12-01 16:06:32
103
原创 面试笔试算法 - leetcode
目录二分278 0011 大于等于二分情况二分278 0011 大于等于二分情况while (l != r) { int mid = (l + r) / 2; if (isBadVersion(mid)) { r = mid; // 右边可能 } else { l = mid + 1; // 左边肯定不是 }}// 输出 l r 位置均可...
2020-11-27 19:14:49
1754
原创 面试笔试算法 - haizeiOJ
目录二分380 sort 排序381 sort 排序386 朴素二分 直接查找元素387 找西瓜,尽可能小,0011 问题,查找第一个 1390 原木切割,尽可能大, 1100 问题393 切绳子,尽可能长,1100 问题82 伐木,据木材但尽可能多,1100 问题391 数列分段,和尽可能小,0011 问题394 跳石头,最近的尽可能远,1100 问题392 丢瓶盖,最近的尽可能远,1100 问题395 复制书稿,时间尽可能短,0011 问题模拟599 两数之和,左右指针600 杨氏矩阵,左右指针477
2020-11-25 21:02:02
2108
原创 面试笔试算法 - euler
目录euler1 使用数学公式替代枚举2 递推代替递归,通过变量保存不开辟数组保存空间4 额外函数判断回文数8 滑动窗口判断数字最大连续乘积,注意计数特判11 方向数组14 记忆化使得递归效率约等于递归13 大整数加法25 欧拉 + 大整数相加15 路径数问题,简单动态规划18 数字三角问题,数塔,最大路径和,简单动态规划22 模拟,字符串预先处理32 全数字位数乘积,标记检查36 回文数判断,根据进制判断回文数33 简约分数特判,模拟,0 特判,gcd 公约约分30 数为各位数次幂之和34 数为各位数阶乘
2020-11-24 21:26:56
223
原创 C++并行计算 MPI Tutorial-9
目录通讯器概述使用多个通讯器的示例其他通讯器创建方法组概述使用 MPI groups使用组的例子参考在以前的所有教程中,我们都使用通讯器 MPI_COMM_WORLD。对于简单的应用程序,这已经足够了,因为我们的进程数量相对较少,并且通常要么一次要与它们之一对话,要么一次要与所有进程对话。当应用程序开始变大时,这变得不那么实用了,我们可能只想一次与几个进程进行对话。在本课程中,我们将展示如何创建新的通讯器 ,以便一次与原始进程组的子集进行通讯。通讯器概述对于简单的应用程序,使用 MPI_COMM_W
2020-09-27 20:35:49
1895
原创 C++ 并行计算 MPI Tutorial-8
目录reduce 介绍MPI_Reduce使用 MPI_Reduce 计算数字平均值MPI_Allreduce使用MPI_Allreduce 计算标准差参考reduce 介绍规约 Reduce 是函数式编程中的经典概念。数据规约 涉及通过函数将一组数字简化为较小的一组数字。例如,假设我们有一个数字列表 [1、2、3、4、5] 。用 sum 函数 此数字列表规约 将产生 sum([1、2、3、4、5])=15。类似地,乘法规约将产生 multiply([1、2、3、4、5]) = 120。就像您想象的
2020-09-27 18:55:22
852
原创 C++ 并行计算 MPI Tutorial-7
目录使用 MPI 进行并行排名-问题总览并行排名-API 定义解决并行排名问题排序数字并维护所有者功能整合运行并行排名算法参考使用 MPI 进行并行排名-问题总览当所有进程都在其本地内存中存储一个数字时,了解它们相对于所有进程包含的整个数字集的编号顺序是很有用的。例如,用户可能正在对MPI群集中的处理器进行基准测试,并想知道每个处理器相对于其他处理器的速度顺序。此信息可用于安排任务等。可以想象,如果所有其他数字分布在各个进程中,那么很难在所有其他数字的背景下找出它们的顺序。这个并行排名问题,就是我
2020-09-27 17:12:24
405
原创 C++ 并行计算 MPI Tutorial-6
目录MPI_Scatter 的介绍MPI_Gather 的介绍使用 MPI_Scatter 和 MPI_Gather 来计算平均数参考MPI_Scatter 的介绍MPI_Scatter 是一个跟 MPI_Bcast 类似的集体通信机制。MPI_Scatter 的操作会设计一个指定的根进程,根进程会将数据发送到 communicator 里面的所有进程。MPI_Bcast 和 MPI_Scatter 的主要区别很小但是很重要。MPI_Bcast 给每个进程发送的是同样的数据,然而 MPI_Scatte
2020-09-27 15:32:45
930
1
原创 C++ 并行计算 MPI Tutorial-5
目录MPI 广播和集体通信集体通信以及同步点使用 MPI_Bcast 来进行广播使用 MPI_Send 和 MPI_Recv 来做广播MPI_Bcast 和 MPI_Send 以及 MPI_Recv 的比较参考MPI 广播和集体通信我们已经研究了点对点通信,即两个进程之间的通信。本课是集体通讯章节的开始。集体通讯是一种通讯方法,涉及 communicator 中所有进程的参与。这节课我们会解释集体通信以及一个标准的方法 - broadcasting (广播)。集体通信以及同步点关于集体通信需要记住
2020-09-27 14:53:55
684
原创 C++ 并行计算 MPI Tutorial-4
目录点对点通讯应用-随机游走问题描述编码解决死锁和预防确认所有 Walker 完成参考点对点通讯应用-随机游走问题描述问题的基本定义如下,给定一个 Min, Max, 和随机游走器 W,使得 W 在往右走 S 步。如果超出范围,则会重新回到起点。W 每次只能移动一个单位。让我们概述一下如何并行处理随机游走。与许多并行处理程序一样,第一项相关任务是在各个进程之间划分域。随机游走问题具有大小为 Max - Min + 1 的一维域。假设 Walker 只能走整数大小的步数,我们可以轻松地在整个过程
2020-09-27 14:13:44
793
原创 C++ 并行计算 MPI Tutorial-3
目录动态接收MPI StatusCheck-Status (查询 MPI 状态程序)参考动态接收之前的教程中,传输消息的长度是预先知道的,可以将消息的长度单独的发送/接收,但是 MPI 可通过几个附加的函数调用即可支持动态消息MPI Status如果我们将 MPI_Status传递给 MPI_Recv 函数,那么接收完成后将填充有关接收操作的其他信息。主要有以下三个信息:发送方的秩,数据被存在 MPI_SOURCE 元素中,如果我们使用 MPI_Status stat,那么秩可这样获得 st
2020-09-27 14:13:15
496
原创 C++ 并行计算 MPI Tutorial-2
目录发送与接收MPI 方法基础 MPI 数据结构Send-Recv (发送-接收程序)Ping-Pong (乒乓程序)Ring (环程序)参考发送与接收发送和接收是 MPI 里面两个基础的概念,接下来介绍 MPI 的同步(或阻塞, blocking)发送和接收方法。MPI 的发送和接收方法是按以下方式进行的:开始的时候,A 进程决定要发送一些消息给 B 进程。A进程就会把需要发送给B进程的所有数据打包好,放到一个缓存里面。所有数据会被打包到一个大的信息里面,因此缓存常常会被比作信封数据打包进
2020-09-08 21:09:31
2493
1
原创 C++ 并行计算 MPI Tutorial-1
目录C++ 并行计算 MPI参考C++ 并行计算 MPI在处理一个任务的时候,并行程序间需要通信。MPI 是一个跨语言的通信协议,MPICH 是 MPI 的一种实现,类似的实现还有 Open MPI,Intel MPI 等。参考[1][https://mpitutorial.com/tutorials/mpi-send-and-receive/zh_cn/]...
2020-09-08 20:21:16
1507
原创 GMSH 使用 Tutorial-2
导航Tutorial-2总结Tutorial-2将改方法使用传入参数后就像使用 gmsh 一样使用参数执行文件 gmsh::initialize(argc, argv);gmsh 还提供了复制实体的方式,通过传入{维度,tag}, 向某个方向的 dx dy dz 偏移来复制实体 gmsh::model::geo::translate({{0, 5}}, -0.02, 0, 0);gmsh 还可以使得实体绕某点以某向量旋转 gmsh::model::geo::rotate({{0, 5}},
2020-08-29 14:22:52
1349
原创 GMSH 使用 Tutorial-1
导航使用指南Tutorial-1 (c++)参考使用指南gmsh tutorial 多种文件格式说明,但是本身 geo 文件格式说明还是蛮粗略的,建议使用 c++ 或 python 进行入门,文件说明及输出更详细一点Tutorial-1 (c++)Point 点创建可有 5 个参数,前 3 个参数是点在三维立体空间的分布,x、y、z 坐标,第 4 个参数是目标网格尺寸 ?,最后一个参数指定生成这个点的标记 double lc = 1e-2; gmsh::model::geo::addPoin
2020-08-28 21:47:42
2033
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人