自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 资源 (12)
  • 收藏
  • 关注

原创 leetcode35.搜索插入位置

这里将第3版代码与第2版做对比,讨论mid与左右边界的关系、以及左右边界的更新策略,当l+r不能整除时,(l+r)/2取下整,举个例子,如果l=3,r=4,则mid应该是3.5,当然计算机默认策略是取下整3,是小于3.5的一个整数,所以在r-l=1时,l与mid是重合的,如果是左边界更新,可以将其更新为mid+1,向右边界靠近,如果是右边界更新,只能将其更新为mid(如果更新为mid-1,则可能出现左边界>右边界的情况),也可以理解,mid=(l+r)/2可能在左右边界的中间位置,也有可能偏左。

2024-11-02 16:31:13 281

原创 基于acl2镜像快速验证乘法器

在第一次验证乘法器后,会在bin目录中编译生成一个名称为vescmul.lx86cl64的镜像文件,再次验证时会使用这个镜像,验证时间会大幅度减少,编译生成这个镜像文件比较耗时,如果在其他机器上验证乘法器,把这个镜像复制过去就可以。2)在acl2镜像同级目录中有一个可执行脚本文件,在其中设置acl2的解释器ccl的路径CCL_DEFAULT_DIRECTORY,把ccl/lx86cl64、acl2镜像vescmul.lx86cl64的路径设置好。而且在acl2的验证日志中有如下打印反例的日志。

2024-10-28 18:42:14 212

原创 常用的linux命令积累

1)结束多个带有关键字的进程。

2024-10-09 19:15:38 118

原创 acl2的安装和vescmul的运行

github上的acl2验证乘法器的接口已经更新为vescmul-parse、vescmul-verify,接口参数大致相同,写好acl2验证脚本verify.lisp后,执行如下命令。vescmul目前使用acl2验证乘法器的接口为parse-and-create-svtv、verify-svtv-of-mult。在acl2/books/projects/rp-rewriter/lib/mult3中确认top.lisp文件的存在。下面简单介绍一下acl2的安装、vescmul的运行。

2024-08-26 22:22:11 298

原创 vscode添加新行

使用“ctrl+shift+Enter”,在当前行前添加新行。使用“crtl+Enter”,在当前行后添加新行。

2024-08-21 16:33:24 135

原创 vim进行行选择或列选择

Ctrl+v:用于进入(Visual Block Mode),用于选择矩形块区域。你可以用这种模式来选择多个列或矩形区域的内容。Shift+v:用于进入(Visual Line Mode),用于选择整行内容。

2024-07-29 20:00:51 780

原创 verdi如何设置波形数据和进制

2)在rtl代码中,信号会显示具体的逻辑值,默认是十六进制,在菜单栏点击“source”,点击“set radix”,选中“set Decimal”1)在波形图中选中时刻。

2024-07-19 15:49:29 399

原创 llvm lit使用时的若干注意事项

使用llvm lit运行回归测试时,lit无法自动将环境变量导入回归测试的进程中,可在lit.cfg中,使用addEnv将环境变量导入到回归测试进程中。

2024-07-19 15:41:36 429

原创 vim修改文件过程中且尚未保存文件前,外部工具读取文件的情况

命令保存文件,那么在修改过程中,文件的内容不会被写入到磁盘。这意味着未保存的修改只存在于 Vim 的内存中,原始文件在磁盘上的内容保持不变。在 Vim 中,如果你在修改一个文件的过程中没有使用。可以一边用vim,一边用cat验证这个说法。

2024-07-16 16:10:29 135

原创 C++是否可以使用.获取union、struct中的成员变量的地址

C++可以使用.获取union、struct中的成员变量的地址。

2024-07-15 21:15:23 240

原创 vim全局替换、添加新行、同时注释多行

移动光标,使其停留在待注释的第一行的行首,按“crtl+v”进入可视化模式,一直按‘j’直至停到待注释的最后一行的行首,按“shift+i”在待注释的第一行的行首输入“注释符号”,按‘ESC’键,所有被选中的行都会按照待注释的第一行的方式被注释。在命令模式下,输入命令“:%s/old_str/new_str/g”,如果在替换前确认每次替换,可以在命令末尾加上‘c’在命令模式下,按‘o’

2024-07-15 18:45:44 505

原创 gvim 复制粘贴文本

1.在普通模式下,按“yy”将当前行复制到gvim的粘贴板中,按“p”将被复制的行粘贴当前行的下一行。2.如果在复制粘贴时,gvim与系统剪切板联合使用,使用“+”前缀。在普通模式下,按“+p”将系统剪切板的内容复制到当前行。在普通模式下,按“+yy”将当前行复制到系统剪切板。

2024-06-15 20:56:24 717

原创 linux gvim与其他地方互相复制文本

3.在gvim中,使用鼠标选中文本后,按"+y将文本复制到系统剪切板,然后右键“paste”,或使用“ctrl+v”,粘贴文本。1.在其他地方选中文本后,右键“copy”,或者"crtl+c",复制文本,在gvim中使用鼠标中键粘贴内容。2.在gvim中,使用鼠标选中文本后,使用y复制,在另一窗口使用p粘贴。

2024-06-12 16:33:11 359

原创 xshell超时断连

设置流程:文件→属性→连接→保持活动状态。缩小发送心跳包的间隔时间。

2024-06-04 09:51:02 423

原创 使用“source script.sh“执行脚本和使用“./script.sh“执行脚本的区别

环境影响:source在当前Shell环境中执行脚本,因此所有修改都会影响到当前Shell。使用./执行脚本则在新的子进程中运行,其变更不会影响到父Shell。 执行权限:使用./执行脚本需要脚本文件具有执行权限,而source不需要。 适用场景: 使用source适合于需要修改或扩展当前Shell环境的场合,如设置环境变量或定义函数。 使用./适合于执行独立的Shell脚本,尤其是那些不需要或不应该干扰当前Shell环境的脚本。

2024-04-25 16:11:03 244

原创 标准C 是否支持bool

在C99及以后的版本中,`_Bool` 是一种内置的数据类型,可以用来表示布尔值。为了方便使用,C99标准还包括了一个头文件 `<stdbool.h>`,它定义了 `bool` 作为 `_Bool` 的一个别名,以及 `true` 和 `false` 这两个宏,分别对应 `_Bool` 类型的1和0值。这意味着,如果你的代码是遵循C99或更新的标准编写的,你可以直接使用 `bool`、`true` 和 `false`,只要你包含了 `<stdbool.h>` 头文件。

2024-04-07 10:47:09 415

原创 C中的函数原型声明、头文件包含的思考

3)add56.c中同时定义了add5、add6,同时add5函数调用了add6函数,如果不包含#include "add56.h",则add6函数定义需要写在add5函数前面,如果包含了#include "add56.h",就不需要考虑这些问题了。2)可维护性:当需要修改函数接口时,只需修改头文件中的函数声明,而不需要修改所有调用改函数的地方。add2.h向外界提供了add2.c中的函数接口,在add2.c中包含add2.h,可以有效避免add2.c向外界暴露的接口与add1.c中的调用的函数定义不同。

2024-04-05 17:01:52 205

原创 CSAPP中的“检查无符号数加法中的溢出”推导的讨论

笔者认为原始推导过程有误,以下为笔者的思考过程。如果有不当之处,欢迎讨论。

2024-03-17 16:29:37 140

原创 VSCode调试C++项目时无法显示长字符串的所有内容

更多地,使用Clion调试C++项目时,也需要多考虑使用Debug中的Memory View直接从内存中打印数据,在获取到所需查看的变量的地址后,再对变量进行类型解释,查看目标内容。笔者的思路是如果VSCode不支持,那就下降到下一层,VSCode也是依靠gdb才能调试,所以使用VSCode的DEBUG CONSOLE。但是笔者当前使用的VSCode版本不支持在launch.json中添加dlvLoadConfig选项。在其中执行gdb命令前,需要添加-exec。记录一次失败的尝试,参考。

2024-03-12 11:02:17 678

原创 Clion调试fork出的子进程的代码

在fork出子进程前,依次输入set follow-fork-mode child、set detach-on-fork off。2.转到clion的调试器控制台(带有gdb的选项卡)1.在程序的开始处设置一个断点(注意是在父进程中)

2024-01-02 10:28:55 529

原创 判断一个整数是否为平方数的两种方法

1.一个整数是平方数,当且仅当它可以被一个连续的奇数序列的和表示,例如0、1、4、9可以表示为0+1、0+1+3、0+1+3+5,从另一个角度,也可以去看两个相邻平方数之差,x的平方-(x-1)的平方=2*x-1,所以可以让一个整数不断去减两个相邻平方数之差,当最后的差值为0,则说明原始整数为平方数,否则相反,代码如下所示。2.使用二分法判断一个整数是否为平方数,在[1, num/2]中使用二分法寻找是否有正整数的乘积为当前整数。

2023-06-26 22:37:03 1804

原创 C++调试string类型变量显示<incomplete type>

使用*(char*[100])str_name、*(char**)&str_name可以显示其中的内容。笔者在调试C++程序时,发现string类型变量可能会显示为<incomplete type>

2023-03-31 10:51:24 395 1

原创 C++函数调用(传入形参个数比实参个数少)

C++函数调用,可以为函数参数设置默认值,这样一来,便允许在实际的函数的调用中传入形参个数比实参个数少例子:pass.hint add(int a, int b = 1);pass.cpp#include "testPass.h"int add(int a, int b) { return a + b;}main.cpp#include <iostream>#include "testPass.h"int main() { int a = 2

2022-04-10 22:36:56 1737

原创 C++中的内联函数

1.将函数内联的场景函数执行时间短,且被频繁调用,则将函数内联可以节省非内联调用的大部分时间2.内联函数与常规函数的区别常规函数调用使程序跳到另一个地址,并在函数结束时返回。执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后跳回到地址被保存的指令处,来回跳跃并记录跳转位置需要一定的开销,C++内联函数提供了另一种选择,内联函数的编译代码与其他程序代码内联,也就是编译器将使用相应的函数代码替换函数调用,内联函数被

2022-01-13 23:25:36 270

原创 C++中的函数返回值做为左值

1.问题笔者在阅读C++代码时,看到类似如下图所示的代码#include <iostream>using namespace std;class Person {private: string name_; int age_;public: string& Name(); int& Age(); string Name() const; int Age() const; Person(string name, int age) {

2022-01-13 22:01:37 1092

原创 VSCode使用过程中显示一直下载C/C++ language components

问题:在使用VSCode开始调试代码时,右下角显示“Downloading C/C++ language components”,无法调试代码,且弹出提醒框“Downloading C/C++ language components”原因:参考Prevent VS Code extensions from updating automatically一文,VSCode默认设置自动检查是否有extension可以更新,如果有,会自动下载安装更新,但是在使用过程中显示“Downloading C/C++ l

2022-01-03 18:27:18 1792

原创 使用grep查找包含某个字符串的文件

使用“grep -rn "keyword" /path”查看“/path”中所有包含“keyword”关键字的文件,其中“r”表示在“/path”目录下进行递归查询,n表示若有关键字的情况下“keyword”关键字在文本文件所在行数

2021-12-30 11:38:23 3515

原创 C++中的explicit关键字

如果一个Student类提供了一个构造函数“Student::Student(string name)”,这个构造函数可用作自动的类型转换函数,例如“Student aStudent = liming”,C++可直接通过上述构造函数将一个string类型的变量转化为Student对象,这可能导致意外的类型转换,所以C++提供了explicit关键字,用于关闭这种自动特性在上述构造函数前添加explicit关键字explicit Student(string name);Student aStud

2021-12-29 23:09:56 274

原创 C++中的运算符重载

1.概念运算符重载是一种使对象操作更加美观的技术,可以将运算符重载理解为语法糖。运算符重载将函数重载的概念扩展到运算符上,赋予C++运算符更多含义。例如,将*用于地址,可获取这个地址中的值,将*用于两个数字,可获取两个数字的乘积C++可将运算符重载扩展到用户定义的类型,例如,允许使用+将两个对象相加,编译器根据操作数的数目和类型决定使用哪种加法定义,运算符重载使代码更加自然、容易理解要重载运算符,需使用被称为运算符函数的特殊函数形式,格式:operatorop(argument-list)2

2021-12-29 16:30:01 664

原创 自定义unordered_map、unordered_set的hash function、compare function

1.问题C++ STL容器类unordered_map、unordered_set使用起来非常方便,但当向容器中添加自定义类型的元素时,需提供自定义的hash function、compare function,原因:C++ STL只提供了基本类型(如int、string等)的hash function、compare function,其中,自定义hash function用于计算自定义类型对象的hash value,但由于hash function存在碰撞现象,所以自定义compare functi

2021-12-26 23:40:05 739

原创 Linux C++获取进程占用内存、机器内存

在Linux C++程序中获取进程占用内存、机器内存的方法:#include <unistd.h>#include <cstring>#include <iostream>using namespace std;int get_memory_by_pid(pid_t pid) { FILE* fd; char line[1024] = {0}; char virtual_filename[32] = {0}; char vmrss_nam

2021-12-06 21:26:56 5244 1

原创 Windows将一个屏幕上的软件切换到另一个屏幕

Win+Shift+左方向键,焦点所在的软件切换到左屏Win+Shift+右方向键,焦点所在的软件切换到右屏

2021-12-03 16:12:23 7263 1

原创 构建一个遍历继承自同一父类的派生子类的迭代器

笔者在阅读Klayout源码时,发现了一段构建一个遍历继承自同一父类的派生子类的迭代器的优秀代码,特写此博客,记录自己所得Klayout是版图设计工具,版图文件格式有很多种,例如gds、oasis等,自然需要构建多种版图文件格式的reader,在Klayout读取版图文件之前,尚无法判断待读取的版图文件属于哪种文件格式,在读取了版图文件的前几个字节后,即可知道其对应的文件格式,创建对应的文件格式的reader问题:如何写这一段的业务代码呢?很容易想到的一种做法是:在读取了版图文件的前几个字节后,

2021-08-22 00:45:01 327

原创 LeetCode457.环形数组是否存在循环

存在一个不含0的环形数组nums,每个 nums[i] 都表示位于下标 i 的角色应该向前或向后移动的下标个数:1)如果 nums[i] 是正数,向前移动 nums[i] 步2)如果 nums[i] 是负数,向后移动 nums[i] 步因为数组是环形的,所以可以假设从最后一个元素向前移动一步会到达第一个元素,而第一个元素向后移动一步会到达最后一个元素。数组中的循环由长度为k的下标序列seq:1)遵循上述移动规则将导致重复下标序列 seq[0] ->seq[1] -> ....

2021-08-08 19:08:38 243

原创 Floyd判圈算法

Floyd判圈算法,又称快慢指针算法、龟兔赛跑算法,是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,求出该环的起点与长度的算法。如果有限状态机、迭代函数或者链表上存在环,那么从同一个起点(即使这个起点不在某个环上)同时开始以不同的速度前进,2个指针最终相遇,那么可以判定存在一个环,且可以求出2者相遇所在的环的起点、环的长度。算法描述:初始状态下,假设已知某个起点为结点S。现设两个指针slow、fast,将它们均指向S,接着,同时让slow指针、fast指针向前推进但是二者的速度不.

2021-08-08 16:32:53 173

原创 LeetCode141.环形链表

给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意:pos不做为参数进行传递,仅仅是为了表示链表的实际情况,pos为-1或者链表中的一个有效索引如果链表中存在环,则返回true,并返回环入口在链表中的位置。否则,返回false。示例1:输入:head=[3,2,0,-4], pos=1输出:true,

2021-08-08 11:27:21 113

原创 螺旋矩阵问题

题目:给定一个正整数n,生成一个包含1到 n^2 的所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。例子:输入:3 输出:[[1, 2, 3], [ 8, 9, 4], [ 7, 6, 5]]解题思路:这里使用二维数组,按照螺旋排列顺序插入正整数,排列方向共有4个,分别是从左上到右上、从右上到右下、从右下到左下、从左下到左上,这里需要注意方向变化时,数组下标的处理方式代码如下所示:#include <iostream>#include <str...

2021-08-07 13:23:52 200

原创 获取长度最小的子数组

给定一个整数数组和一个整数key,如果子数组元素之和不小于key,返回该类子数组中长度最小子数组对应的此题有两类解法:1)暴力解法(使用两重for循环),代码如下所示#include <iostream>#include <string>#include <vector>using namespace std;int getMinLength(vector<int>& arr, int key) { int minLen

2021-08-04 23:29:25 172

原创 移除一个数组中所有值等于val的元素

题目:给定一个整数数组,从数组中移除所有值等于val的元素,返回移除元素后数组的长度第一种解法(暴力解法):思路:遍历数组中的每个位置的元素,检查是否等于val,1)若等于val,则将当前位置以后的元素均前移一个位置,并继续从当前位置遍历2)若不等于val,则遍历下一个位置#include <iostream>#include <string>#include <vector>using namespace std;int deleteNu

2021-08-01 17:19:28 340

原创 使用C++刷题时,对输入文本行的处理方式

笔者在使用C++刷题的初期,经常无法将用户输入存储到程序中的变量,根本原因是当时没有理解C++控制台输入的原理,为此特撰写本博客记录C++控制台输入的原理及经常用到的输入函数。在控制台中输入一行字符后,按下回车键,这行字符被送入缓冲区,回车键'\r'被替换为换行键'\n',cin>>temp :先声明一个具体类型的变量,然后从缓冲区中取出按'\0'、'\t'、'\n'分割的一个字符串,并将该字符串转换为对应的类型,如果该字符串对应的类型与实现声明的类型不匹配,则会导致未定义的行为(例如,

2021-08-01 13:30:28 210

一个用于演示btrace功能的demo程序

这是一个用于演示btrace功能的demo程序, 其中TestJar4是源码,使用maven作为项目管理工具 TestJar4-0.0.1-SNAPSHOT.jar为maven构建之后的jar包 AllMethod.java是trace script

2019-08-15

hadoop权威指南第4版

这是hadoop权威指南的第4版,是英文的,想要学习大数据有关hadoop的同学可以下载

2019-01-25

2010年研究生全国统考计算机试题-操作系统部分试题解析

这是2010年的操作系统考研真题,有答案,适合考研的同学下载

2019-01-25

2009年研究生全国统考计算机试题-操作系统部分试题解析

这是2009年的操作系统考研真题,有答案,适合考研的同学下载

2019-01-25

2011年研究生全国统考计算机试题-操作系统部分试题解析

这是2011年的操作系统考研真题,有答案,适合考研的同学下载

2018-12-30

2012年研究生全国统考计算机试题-操作系统部分试题解析

这是2012年的操作系统考研真题,有答案,适合考研的同学下载

2018-12-30

2013年研究生全国统考计算机试题-操作系统部分试题解析

这是2013年的操作系统考研真题,有答案,适合考研的同学下载

2018-12-30

2018年研究生全国统考计算机试题-操作系统部分试题解析

这是2018年的操作系统考研真题,有答案,适合考研的同学下载

2018-12-30

2017年研究生全国统考计算机试题-操作系统部分试题解析

这是2017年的操作系统考研真题,有答案,适合考研的同学下载

2018-12-30

2016年研究生全国统考计算机试题-操作系统部分试题解析

这是2016年的操作系统考研真题,有答案,适合考研的同学下载

2018-12-30

2014年研究生全国统考计算机试题-操作系统部分试题解析

这是2014年的操作系统考研真题,有答案,适合考研的同学下载

2018-12-30

空空如也

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

TA关注的人

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