- 博客(18)
- 收藏
- 关注
原创 《深入理解计算机系统》-链接学习笔记
以前对链接的了解少之又少,只知道在汇编之后经过链接就形成可执行文件,而很多的链接错误又很难看懂,正好借着这一章学习学习首先看一个示例程序// main.cint sum(int* a, int n);int array[2] = {1, 2};int main(){ int val = sum(array, 2); return val;}// sum.cint sum(int *a, int n){ int i, s = 0; for (i =
2021-03-04 19:26:31
170
1
原创 《深入理解计算机系统》-AttackLab学习笔记
这个实验在第三章学完后就可以做了,内容主要就是3.10.3和3.10.4的部分,主要目标是熟悉两种攻击程序的方式:代码注入(Code Injection,CI)和面向返回编程(Return Oriented Programming,ROP)Let’s Hack!实验说明首先还是提醒一下,每个人的程序可能是不一样的,所以答案只是参考,但方法是通用的目标程序:ctarget和rtarget,分别是在CI阶段和ROP阶段存在漏洞的程序。使用-q选项来避免将分数发到服务器,否则会出现illegal ho
2021-02-21 12:40:48
670
原创 《深入理解计算机系统》--BombLab学习笔记(含隐藏阶段)
前言在皓哥的鼓励下,磕磕绊绊断断续续终于做完了BombLab,这个实验确实很有趣而且对我帮助很大,做完也非常的有成就感(HGNB)????,因此决定写一篇博客记录一下学习的过程首先作几点说明1、由于每个学生的Bomb是随机的,而我是从网上其他人的github下载的lab,所以有可能你的Bomb与我并不一样,导致每个阶段的答案可能是不一样的,但是方法应该还是可以参考的2、这个实验对提升汇编语言的理解能力以及自己调试代码的能力真的有很大帮助,所以强烈建议你自己独立思考并完成这个实验,即使多花些时间我觉得
2021-02-15 02:02:33
2652
2
原创 关于C++指针的加减法
CSAPP第三章看到3.8了,这一节在讲关于数据的表示,其中提到了指针的运算,本来自己只是想实践一下加深点印象,没想到小小的测试程序还又学到了一些新知识,觉得有必要记录一下:1、首先是正题,关于指针的加减法,所得结果与指针所指的类型有关。例如指针指向int,那么加减都以4个字节为单位,如果指向char,那么加减都以1个字节为单位,下面是测试代码及运行结果的截图。可见整型指针地址增加了4,字符型指针地址增加了12、打印字符指针的地址时,如果也直接使用cout << b会打印出a和空字符,因为
2021-02-12 14:27:35
1683
原创 获取汇编指令的编码字节长度
皓哥笔直的背影,就是我前进的方向。(——想说这句话真的好久了)最近在皓哥的激励下也在慢慢啃CSAPP,今天看到第三章程序的机器级表示,里面有一道习题3.11是这样的:常常可以看见以下形式的汇编代码行:xorq %rdx, %rdx但是在产生这段汇编代码的C代码中,并没有出现EXCLLUSIVE-OR操作A. 解释这条特殊的EXCLUSIVE-OR指令的效果,它实现了什么有用的操作B. 更直接地表达这个操作的汇编代码是什么?C. 比较同样一个操作的两种不同实现的编码字节长度前两问都比较简单,
2021-01-28 16:51:28
2865
7
原创 面经汇总(持续更新,欢迎指正)
操作系统进程和线程的区别:进程是资源分配的最小单位,线程是CPU调度的最小单位线程必须在进程中运行,一个进程可以有多个线程不同进程互相不影响,进程的某个线程挂了整个进程崩溃进程间通信较困难,线程间通信较容易进程间切换开销大,线程间切换开销小进程适合多核用户态和核心态的区别内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序
2021-01-12 10:39:24
290
原创 关于QStackedWidget addWidget后不居中的问题
工作中遇到这样一个问题:在代码中创建了一个Widget,然后调用QStackedWidget的addWidget方法把它加成一页,虽然能显示出来但由于这个Widget是固定大小,它会出现在整个窗口的左上角,如图所示(我自己写了一个小的测试工程来调试):出现这种现象的原因是,这个Widget本身被当做了QStackedWidget的一页,而通常我们在QtDesigner中插入一个Widget都是先插入一页Page,然后再把这个Widget放入Page,通过这个Page的布局我们就可以让插入的Widget
2020-08-27 12:56:53
1788
5
原创 《Effective C++》读书笔记——第五章:Implementations
这章主要讲的就是在实现时需要注意的一些问题,比如过度使用cast会导致运行变慢、难以维护并且有细微的bug,返回对象内部数据的句柄会破坏封装性,不考虑异常安全会导致资源泄露而且数据结构崩坏,过多使用内联反而会导致代码膨胀,代码耦合过多会导致编译时间过长等等ITEM 26: POSTPONE VARIABLE DEFINITIONS AS LONG AS POSSIBLE尽量延缓变量的声明,这一点应该是大多数人都比较熟悉的一个规范,变量本来就应当是要用的时候再去创建,特别是代码中的一些临时变量。同时,一
2020-07-26 23:21:46
247
原创 《Effective C++》读书笔记——第四章:Designs and Declarations
这一章主要讲如何设计和声明C++的接口,一个最重要的准则就是:接口应该易于使用而难于误用。这就为一系列更具体的准则奠定了基础,包括正确性、效率、封装、可维护性、可扩展性和与约定的一致性。ITEM 18: MAKE INTERFACES EASY TO USE CORRECTLY AND HARD TO USE INCORRECTLYC++中到处都能看到接口,函数、类、模板等等,每个接口都是客户端与你的代码交互的方式。一个正常人都是想写出正确的代码的,也就是说如果他错误的用了你的接口,那么你也应该有一部
2020-07-07 23:26:07
228
原创 《Effective C++》读书笔记——第三章:Resource Management
这一章主要在讲资源的管理,电脑的资源就跟图书馆的书一样,你想看的时候可以借,但看完了就应该还,否则其他人就没法看你借的书。其中最重要的也就是内存的分配和回收了,比较常见的性能问题就是由于分配了内存但是没有回收,于是就会造成泄露。...
2020-07-04 18:22:57
224
原创 《Effective C++》读书笔记——第二章:Constructors, Destructors, and Assignment Operators
咳咳,上次写读书笔记居然已经是五个月前的事了,吐槽一下自己的懒_(:з)∠)_正好这两个星期报名参加了公司一个关于C++的培训,再次认识到自己对于基础知识的欠缺,所以还是勤快一些多多学习吧,既是为了自身的成长也是为了不被淘汰。用社长的话来说,“自己的未来靠自己的双手去开拓!”好的那么这一次我们来学习C++中对象的四大件:构造函数,析构函数,拷贝构造函数以及赋值语句,培训的老师还讲了两个是移动拷贝构造函数和移动赋值语句,不过书里暂时没有涉及所以这里就先不讲了。这些函数可以说是对象不可或缺的组成部分,只要接触
2020-06-14 19:37:44
303
原创 记工作中遇到的一个Qt tab order的古怪问题
问题背景:我自己实现了一个StyledLineEdit,相比QLineEdit多了一个clear button,这个button的parent是StyledLineEdit然后我将这个控件应用到两个小的widget中,分别用来输入名字之类的,以及输入电话号码,然后把它们放在一个dialog中用来输入。问题描述:在非电话号码的区域输入一些字符,然后按tab,焦点可以正确跳到clear button上。在电话号码的区域输入一些字符,然后按tab,焦点不会停留在clear button上解决过程说
2020-06-09 14:29:13
716
原创 《Effective C++》读书笔记——第一章:Accustoming Yourself to C++
大年三十却不能回家,也不能找????玩,我恨死这个新型冠状病毒了既然只能宅在家,那就充分利用一下这段时间多学习一点吧言归正传,本章主要是在讲如何让自己适应C++,当然这也是全书所想要表达的,只是这一章着重讲一些基础Item 1: VIEW C++ AS A FEDERATION OF LANGUAGES特意去查了一下federation是什么意思,好像大概是说联盟、联邦之类的,所以这条item...
2020-01-25 17:21:33
1328
5
原创 《Effective C++》读书笔记——写在开头
写在开头不知不觉工作已经9个多月快满一年了,感觉自己大部分时候也只是在搬砖,没有静下心来深入的学习C++的东西,很多以前在学校速成的时候不知道的现在还是不知道。前段时间经常看到高鹏、涛哥和Leon各种面试来应聘的人,经常听到给出“C++基础太差”的评价,就总是会心里不踏实,觉得自己现在再面试一次的话肯定会fail吧,真是不得不感谢徐斌去年给我offer啊。[手动捂脸]前段时间在和Nitin谈...
2020-01-22 16:34:23
162
原创 关于signal函数的返回值问题
今天看到了信号有关的章节,对其中的返回值的描述不太理解,也包括后面例程中提供的正规写法:if (signal(SIGINT, sigint_handler)) == SIG_ERR) 觉得这条if语句也有点搞不懂 原文说的是:若成功则返回指向前次处理程序的指针,若出错则为SIG_ERR 当时想不清楚signal调用后到底返回了什么,这条if语句怎么判断,后来用google找到一篇国外的...
2018-08-18 11:18:56
4098
2
转载 Meteor学习笔记之三——《JavaScript编程全解》读书笔记
Micheal力荐的JS教程,写的还是挺不错的,记录一些有用的东西吧比较时的注意事项前面提到多次的一点是,在比较时注意比较的是对象还是值,举个例子var sobj1 = new String('abc');var sobj2 = new String('abc');sobj1 === sobj2; // false, 虽然字符串的内容相同,但是并非引用了同一个对象var...
2018-05-09 16:46:50
174
翻译 Meteor学习笔记之二——TODO example
按照官网的步骤一步一步做的,记录其中的一些重要的地方并进行解读来加深一下印象吧,我列出来的代码变动是不完全的,如果想复现效果请参照教程,绿色高亮的代码就是改动的部分。1. Creating an appmeteor create simple-todos这个命令会创建一个名为simple-todos的文件夹,里面包括client/main.js # a...
2018-05-07 16:19:31
675
翻译 Meteor学习笔记之一——JavaScript Coding Style
最近开始学习Meteor框架的使用,按照官网的Guide一步步来吧首先是JavaScript Coding Style,转载自Airbnb style guide,部分作了删减引用1、对所有引用使用const;不要使用var这样可以保证你无法对引用重新赋值,也不会导致出现bug或难以理解// badvar a = 1;var b = 2;// goodconst a = 1;const...
2018-05-03 10:47:37
408
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人