AA3-周期性复习干线
数据结构:
1.迭代器的组成?怎么自己写一个迭代器?
构造解析前后置,不等等于节点值。
构造器,两个解析函数-一个解析*返回真值,一个解析->返回指针,前置++函数返回引用,后置++函数有int占位返回暂存的本迭代器旧状态。不等!=等于==返回真值比较结果,节点值(保护)存储一个指向节点的指针。
2.如何Debug?
首先,学会看编译器或者OJ上的错误提示,准确地找到问题所在,将有错误信息的BUG改正。
如果没有错误信息而OJ却报错RE,runtime error,而自己的测试数据又没有发现问题所在,那么问题一定在于自己的测试数据没有覆盖全部系统所考察的范围:
先检查自己的测试代码是否已经使程序的所有功能发挥作用,有时测试数据中并不涵盖所有指令。
这一个步骤的思想是:覆盖程序的所有功能。
如果已经覆盖所有功能而测试中没有发现问题。那么一定是因为数据的范围不够大,或者是因为自己没有尝试过一些特殊极端的情况。但是这些额外的情况,数据量太大,测试数据并不是能够轻易设计出来的,
那么接下来就应该基于代码让自己的测试数据尽可能地覆盖所有代码,让所有代码都能够被执行至少一遍,如果出现了新的报错位置,那么就是问题所在。或者说按照之前设计的测试数据快速过一遍代码,没有执行过的地方大概率就是问题所在了。
在使用这些方法的时侯,用VS,或者CLion,Dev++的调试功能会更快地定位报错位置,这个功能在定位空指针的时候尤其管用。多亏了许哥教会了我使用Debug调试功能。
3.讲了好多数据存储结构,还没进入深水区,不过快了。
计算机组成原理:
这几天讲储存器。
1.浮点数的规范化
我得加深一下浮点数规范化的印象,作业居然错了。
如果两个浮点数,一个浮点数绝对值大一个浮点数绝对值小,那么谁向谁靠拢?首先两个数既然是浮点数那么一定就都是规范的。那么想要不丢失精度就只能向右移,也就是数值位变小,为了保持真值不变,那指数就得变大,那么指数变大的那一个当然就是绝对值小的那一个了。
所以是小的向大的靠拢,数值位右移变成绝对值大的浮点数的小数点,直到指数与大的那个相等。
嗯,就是小的右移找大的。
2.新题型——设计存储器与CPU交互的电路
这是一个新题型,考察中将会是和机器码加减乘除一样重要的一种题型。
我得熟悉下思路,首先题目会给出有哪些存储芯片可以使用规格为 字数(一般以k为单位)x位数 ,并且会给出ROM,RAM的位数,字数要求,给出CPU的线数。
要选出芯片来满足题目要求,如果给出的芯片位数不够就位扩展,大小不够就字拓展。在选择上,老师讲了一些规则,中心意思就是——尽量少选点能用整的就用整的。
接下来写书面。首先写一些理由意思意思,然后列出我选了哪些芯片。
接着,用二进制写出芯片的地址范围。每个芯片占两行,一行起始的地址(一般是寥寥几个1或者没有1跟着一串零),一行结束的地址(一般是一串1),一种芯片(ROM/RAM)写完了右边大括号扩上,标上芯片的规格和性质,是ROM还是RAM。需要注意的是,对于字扩展,每个芯片都要占两行(右侧括号标上芯片数量规格,以及各个芯片的地址表示范围)。如果是位扩展,则所有参与位扩展的芯片一起占两行,在右侧括号上,标明数量、规格与各个芯片表示的范围(一般是周期性的轮流使用)。
然后,开始画图,一个CPU 右边从上到下: MREQ、 A0~A3A4~A7A8A9A10A11A12A13A14A15 、D0~D3D4~D7D8D9 、WR。一个74138左边从上到下G1、Gna1、Gnb1、A、B、C右边Y0~Y7。
开始画芯片,对着画出的二进制地址范围,全是1的那一行,把芯片的上面接到A0~A15上正确的位置,每个芯片接两条线线旁边标上是接的A几,头和尾,中间的省略。这是地址线。
然后接下面的,如果是字拓展那么数据线按照大小正常接到D0~D7上正确的位置。如果是位拓展,那么对照着上面画好的地址范围按照参与位拓展的芯片数量进行分割。比如说如果一共八位数线,两个芯片参与了位拓展,那么就分成两组,左边一组接到D0~D3上,右边一组接到D4~D7上。
接完数据线,接下来接片选线。先在地址范围中(每个芯片的起始地址中)找到最高的那几位AiAjAk,然后把AiAjAk接到通过74138的ABC上转换成对应的十进制信号,然后把对应的Yn接到对应芯片的片选线上(芯片的左右都行,也可以标记上CS)。另外,为了保证有一些字数小的芯片,相对于字数大的芯片,可能会有几位的地址空出来导致混乱,为了能被正确地选中,应该额外增添逻辑电路,保证字数小的芯片能被正确选中(比如A0~A11 2K 000000000000~011111111111和 1k 100000000000~10111111111从左向右排列,那么从左往右第二位的零就有两种能,如果不处理将会导致1k的芯片工作范围变大,因此为了避免这种情况,应该增加逻辑电路让从左往右第二位为零的时候1k芯片才能被选中)。
接着,把G1接成1、 Gna1 Gnb1一个接零一个接到MREQ(不需要取反,都是低电位工作),最后把WR(取反)接到所有RAM上。OK
数据库系统概念:
............
select * from dbrank order by 总得分 desc
好多人都登顶了呢。许哥都已经开始搞Qt了。E-R图,菱形代表连接不同表的关系,单实线代表我的多个可以对别人的一个。单箭头代表别人多个只能对我一个。两个单箭头代表一一映射,也可以用基数表示。两个线的菱形是弱实体集关系,两个线的矩形是弱实体集,需要用双线连接,可以看成是一种词典。此外还有属性的ER表示,不过不常用。概化是倒三角写着RSA。在关系连接上可以指明外键,主键,主键下划线,外键虚下划线,关系线上可以标明。
概率论与数理统计:
这几天,学了随机变量,分布函数,随机变量函数的分布。好像没什么特别的。不过注意到了几个特殊的点。
1.首先是应用题中,应用全概率公式的时候一定要注意说明是一个完备事件组,在将事件从括号里拿出来的时候也要说明事件互斥。
2.求分布函数要分段求,不能一下写出来,更不能忘记分段。
3.正态分布规范化F(X)=Φ(X-μ/σ)好用。P(|X|>a)=2Φ(a)-1。很好用。
4.吉米的题中,出现了一些细节,注意,如果是证明或者求等价表达式,大于等于号必须严格保持,宁愿两边同时加减常数也不要图方便顺手把不等号反过来忽略掉等于号。
5.吉米有道题,有点意思,要求相继两次故障之间的时间T,却给了t时间内发生故障的次数的分布。很显然,要研究的是不发生故障的时间而非故障次数,因此发生几次是完全无所谓的。只需要用到发生零次的概率就行了。所以事实上就相当于有了t时间内不发生故障的概率,用上要求的那个字母好像就是T>t。那么题干想要求的F(t)=P(T<t)就可以求了。