自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 关于修改/etc/inputrc引起的,终端不能输入字符d的问题

ubuntu 18那个破系统音实在太烦了,于是想关掉,找到这篇博客。https://blog.csdn.net/xuezhimeng2010/article/details/8192921博客本身说的也没什么问题,正确操作之后确实关掉了。关键在于,我非常的手贱和眼瞎。文中是说:执行命令:#sudo vi /etc/inputrc找到21行,把#set bell-style no...

2019-12-28 14:44:54 675 2

原创 ubuntu 16.0升级18.0的一点小问题

最后卡在installing snap gnome xxx上了。卡了两小时,估计凉了,于是直接结束掉。但是之后并没有什么错误,可以正常使用,毕竟真正的系统更新已经完事了。反正很迷吧,推测那条未完成指令的意思是,用snap来安装gnome全家桶,为防有什么错误,我特意用apt-get又装了一遍gnome全家桶,感觉应该没问题了吧?特意记下来,以后真炸了能知道这个事,就这样。...

2019-12-27 21:40:02 2371 10

原创 sublime插件配置

用了很久的sublime,确实感觉很多时候操作不便,还是多装点插件吧。package control基本中的基本,暂时主要用来intall其他插件,很方便。ctrl + shift + p然后输入install点击确定,再输入想安装插件的名字再选择+确定就能安装。BracketHighlighter让括号高亮。把default的内容复制到user中,然后搜索【“default”...

2019-12-27 15:40:06 133

原创 C++某些最佳实践收集

有些最佳实践确实没注意到,故摘录一下。p293 如果你不确定应该使用哪种容器,那么可以在程序中只使用vector和list的公共操作:使用迭代器,不使用下标操作,避免随机访问。这样,在必要时选择使用vector或list都很方便。...

2019-12-23 22:34:06 280

原创 编译器O2优化下,分块矩阵乘法的TLB分析猜想

直接将写在实验报告里的那段放进去就算了,好累。3.3(2分)对最优分块大小的分析实验表明,分块大小为 32 时性能最好。这个结果和你的预期一致吗? 不一致 。如果不一致,其原因在于 使用perf工具对编译器优化参数为O0、O2下,m0/4、m0/2、m0三种分块大小的运行情况进行了查看,查看的参数主要为L1 dcache miss、dTLB miss。结果显示:...

2019-12-22 23:18:01 240

原创 循环问题---向前再处理,还是处理再向前

1.前提其实这个问题和二分挺像的,需要理出模板来。和二分不同的是,这个不能死板就按着一个模板来,先向前还是先判断,都是会用到的。先向前和先处理区别在于:先向前的话,要考虑终点的处理,到底终点要不要;先处理的话,要考虑起点的处理,到底起点要不要;有一个相似但不相同的问题,就是while与do…while,这两个其实只是单纯的循环控制,而且费点功夫也可以相互转化。为什么要设计两个?查阅资...

2019-12-20 17:27:02 278

转载 时序图理解

UML-时序图 - 陆晖的文章 - 知乎https://zhuanlan.zhihu.com/p/78245388

2019-12-18 22:01:38 874

原创 关于用例间的关系

泛化关系较为模糊的用例关系,某些标准直接将其限制成了类之间的关系,而不允许在用例之中使用。感觉上一般主要有两个角度:正常用例和各种异常处理用例;某个抽象功能根据不同子类别转换成相应的具体功能;异常处理很好理解,主要想谈谈抽象功能与具体功能。这种情况下的泛化,我感觉就是类似于质值的互相转化。根据值的不同采取不同的处理方式是非常常见的函数段:switch(var){case val...

2019-12-18 02:29:22 298

原创 【打杂总结】栈溢出的神奇错误

不小心没把str3换成sha1Input,因为str3这个label已删除了,所以用str3来访问相应虚拟内存块引起了越界,从而导致栈溢出,之后各种奇奇怪怪的运行结果,差点晕了。 copy("str3", "str2", R_gen1); append("str3", "str1", R_gen1, R_gen0); SHA1_block("str3", R_gen2); SHA1("sh...

2019-12-17 08:53:30 133

原创 【打杂总结】regSave()和regRestore()设计

最初的设计 ilabel("regRestore"); ... GMEC_VLIW({MOV_32(R32_24, R_mem0),MOV_32(R32_25, R_mem1), MOV_32(R32_26, R_mem2),MOV_32(R32_27, R_mem3)}); GMEC_VLIW({MOV_32(R32_28, R_mem4),MOV_32(R32_29, R_mem5...

2019-12-16 10:49:59 386

原创 【打杂总结】实现函数调用

前提芯片模拟器中纯汇编,还不是常规汇编,编程难度太大,于是需要从软件层面上模拟循环、函数调用等。实现函数调用的时候,总觉得有哪些不对,于是详细思考了一下函数调用本身的作用。函数调用函数调用本身的作用:开辟一片局部数据空间;跳转到相应代码段;具体的效果是这样的,多次调用某一个函数func()时,都会跳转到指令空间的某个位置,这样可以大大降低指令空间的总体大小。每次调用函数func()...

2019-12-15 16:54:14 198

原创 关于类static成员的使用

1.类的static成员//非静态成员函数使用静态成员变量class staticTest{public: void func0() { cout << staticVar << endl; } static void func1() { }private: static int staticVar; int var;};//静态成...

2019-12-11 20:47:12 231

原创 关于编译器是否合成默认构造函数

1.我的疑惑语言标准,和编译器实现是不同的。语言标准感觉就像需求吧,编译器实现则是具体的实现。语言标准中甚至有很多未定义的地方,比如【未指定的值】到底是多少,到底用【未指定的值】还是【陷阱标识】作为默认初始化基本数据类型的初值。再比如ungetc函数,这个更乱。对于编译器合成默认构造函数问题,我一直有疑惑,c++ primer上说:如果我们的类没有显式地定义构造函数,那么编译器就会为我们隐...

2019-12-11 15:49:33 335

原创 C++初始化探究

1.C++数据类型参考C++标准,我认为数据类型可以分为这几大类型:基本数据类型类类型聚合体(非类类型的struct)数组2.C++初始化写法无符号T t、T t = new T默认初始化,全都适用;类的初始化列表class c{ c(): m(_m){}};()符号T t(val),T t(t1)显式初始化,基础数据类型和类类型可用,类类型常用;T...

2019-12-09 04:10:00 201

原创 关于坑爹的浮点矩阵乘法结果正确性测试

1.浮点数计算结果与计算顺序相关例如矩阵乘法设mc = ma * mb,都是方阵,维数为8。以c00的计算作为例子,以下这种是最常见的计算顺序c00 = a00 * b00 + a01 * b10 + a02 * b20 + a03 * b30 + a04 * b40 + a05 * b50 + a06 * b60 + a07 * b70计算顺序大致是tc = 0tc = tc +...

2019-12-08 22:38:26 814

原创 程序调试感悟

1.调试基本思路我觉得调试的基本思路,就是要确立两个元素:可信点;可疑点;我们一定要首先确定、或者假设一些部分是可信的,一些部分是可疑的。然后在这基础上去编程/笔算出,这种假设下可疑部分的每一步结果应该是怎样的,再用gdb去不断输出结果,和预想进行对比。例如程序存在两个部分:矩阵乘法;找结果矩阵mc中每行最大值组成数组中的最小值;我们如果要进行调试,一定要先确定/假设,某一...

2019-12-08 22:07:44 625

原创 segment fault出现的原因收集

1.数组越界这个是看到过最多的,所以当用core定位后发现,那行代码中存在某个数组,基本可以大致确定,问题是数组越界。有两种常见原因导致数组越界:索引值没有初始化,在做基数排序并行化的时候,我某个索引表没有初始化,结果发生了数组越界;索引终点end,和数组长度len傻傻分不清,这个主要依靠规范化自己的编程习惯去避免,例如我现在遇到区间,一定是基于[min, max)这种方式去考虑;2....

2019-12-08 21:51:33 635

原创 寻找数组的最大值/最小值&&获取数组特定位置指针

昨晚出糗了,发现我虽然点了一部分并行计算、计算机底层、编程语言细节、程序调试方面的技能点,但是在基础编程方面其实很弱。这是本科期间刷题太少所落下的毛病,应该增强一下,特此长期收集总结一下一些非常常用的基本函数。1.寻找数组的最大值/最小值T findMax(T* arr, int N){ //注意这里,昨晚就是因为顺手就写int,心急起来眼瞎才出糗的 T max = arr[0]; i...

2019-12-08 21:30:00 552

原创 关于浮点数和整数的隐式转换

坑死了。今晚上机考试,我的矩阵乘法优化基本很有信心在速度排名中拿第一,然后老师让写一个简单的测试程序测试结果正确性。测试程序自然是不难的,虽然很紧张,但我还是很快就写好了。结果发现,不正确!!!当时那个急啊,测试程序没写对,我这题直接没分了,白瞎了我耗费了N多心血的程序优化。越急越误事,最后还是拉下脸皮找朋友借了个测试代码,才没完蛋。不过感觉既欠了别人人情,自尊心也很受挫。这一切的来源是什么...

2019-12-07 22:41:56 723

原创 二分查找模板

来自于liweiwei1419大佬的二分查找模板,我个人是比较喜欢 [left,right) 这种区间表示方法的。以后要坚持这个原则,别变了,遇到区间直接基于[)进行考虑。所以对于二分模板,我选择 l = beg; r = beg + len; while (l < r) { mid = l + ((l - r) >> 1); //arr[mid] == x...

2019-12-04 00:36:54 180

原创 ubuntu系统文件夹作用

/opt/文件夹用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。我个人的理解,/opt/适合用来放置那些集成、由多个模块组成的软件。例如sublime,虽然并不大,但其本身并不是只有一个单独的可执行文件,而是有各个模块和配置文件...

2019-12-03 01:10:52 789

原创 记一些已确定的观点

1.前提其实我觉得很多时候,问题并不是难,而是问题中充斥着不确定。我们经常不能确定某一处肯定是对的,从而去推导另一处到底错在什么地方,这通常就是问题的痛点。所以我想收集一下,确定是对的观点。2.观点二分查找liweiwei1419大佬的二分模板,比较喜欢用其中的 //判断0的时候是否就已经符合题意 l = 0; r = lenl; while (l < r) { mid...

2019-12-01 23:16:06 114

原创 两个有序数组中寻求前k小的数

题解分析1class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int n = nums1.size(); int m = nums2.size(); ...

2019-12-01 17:23:58 381

空空如也

空空如也

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

TA关注的人

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