我一直在读" 清洁代码:敏捷软件工艺手册 "一书,在第六章第95-98页中,它阐明了对象和数据结构之间的区别:
对象将其数据隐藏在抽象之后,并公开对该数据进行操作的函数.数据结构公开其数据并且没有有意义的功能.
对象公开行为并隐藏数据.这使得在不改变现有行为的情况下添加新类型的对象变得容易.它还使得很难向现有对象添加新行为.
数据结构公开数据并且没有重要行为.这使得向现有数据结构添加新行为变得容易,但却难以向现有函数添加新数据结构.
对于某些类是对象还是数据结构,我有点困惑.比如java.util中的HashMaps,它们是对象吗?(因为它的方法如put(),get(),我们不知道它们的内部工作原理)还是数据结构?(我一直认为它是数据结构,因为它是一个Map).
字符串也是数据结构或对象吗?
到目前为止,我编写的大多数代码都是所谓的"混合类",它们也试图充当对象和数据结构.关于如何避免它们的任何提示?
为什么我的参数不能
void example(int Array[][]){ /*statements*/}
Run Code Online (Sandbox Code Playgroud)
为什么我需要指定数组的列大小?比如说3
void example(int Array[][3]){/*statements*/}
Run Code Online (Sandbox Code Playgroud)
我的教授说它是强制性的,但我在学校开始之前编码,我记得当我把它作为我的参数时没有语法或语义错误?还是我错过了什么?
c arrays parameters parameter-passing multidimensional-array
它是一回事吗?还是有一点点差异?我只是想确保我不会误解任何事情.
我正在阅读Eloquent JavaScript(新版本),并且我在更高阶函数上达成了一部分,我对以下代码中发生的事情感到困惑.
function noisy(f) {
return function(arg) {
console.log("calling with", arg);
var val = f(arg);
console.log("called with", arg, "- got", val);
return val;
};
}
noisy(Boolean)(0);
// ? calling with 0
// ? called with 0 - got false
Run Code Online (Sandbox Code Playgroud)
为什么这个函数的调用会像这样嘈杂?(布尔)是演员吗?为什么演员?返回值?还是论点?为什么不(布尔值)嘈杂(0)如果它的返回值.或者噪声((布尔值)0)如果参数是被转换的参数.
noisy(Boolean)(0)
Run Code Online (Sandbox Code Playgroud)这一行发生了什么?f()甚至定义在哪里?
var val = f(arg);
Run Code Online (Sandbox Code Playgroud)每个查询都有一个最后一行,旁边有一个星号,每个字段都有空值?为什么会出现这种情况?我似乎无法找到解释.即使放置一个WHERE子句似乎也没有摆脱它.这只发生在MySQL实现吗?
他们有理由这样做吗?我的意思是,在minterms的总和中,你用输出1寻找条件; 我不明白为什么他们称之为"minterms".为什么不是maxterms因为1大于0?
这背后有什么理由我不知道吗?或者我应该接受它而不问为什么?
logic boolean-logic boolean boolean-expression boolean-operations
摘自Thomas Cormen的算法导论:
" 为了简单起见,我们假设,正如我们对二叉搜索树和红黑树所做的那样,与密钥相关的任何"卫星信息"都存储在与密钥相同的节点中.实际上,人们可能实际存储了每个密钥只是一个指向包含该密钥的卫星信息的另一个磁盘页面的指针.本章中的伪代码隐含地假设每当密钥被移动时,与密钥相关的卫星信息或指向这些卫星信息的指针随密钥一起移动.从节点到节点. "
所以我一直在尝试谷歌卫星信息一词的含义,但我找不到任何东西(有关NASA的内容).我基于文本的理解是"卫星信息"是指向实际键值位置的地址,如指针?我纠正还是误解了?
编辑:是什么让它与钥匙不同?
所以我浏览了网页,这里有一些关于stackoverflow的问题是定义:
我即将得出结论,根也是一个内部节点,但它的定义似乎有些模棱两可,如下所示:
如果我们遵循该定义,那么根节点将不会被计为内部节点.那么根节点是否是内部节点?
我很困惑,我认为你在最坏的情况下使用Big O运行时间,Ω是最好的情况?有人可以解释一下吗?
并不是(lg n)最好的情况?和(nlg n)是最坏的情况?还是我误解了什么?
表明在大小为n的堆上Max-Heapify的最坏情况运行时间是Ω(lg n).(提示:对于具有n个节点的堆,请提供节点值,以便在从根到叶子的路径上的每个节点上递归调用Max-Heapify.)
编辑:不,这不是功课.我正在练习,这有一个答案的关键买我迷茫. http://www-scf.usc.edu/~csci303/cs303hw4solutions.pdf问题4(6.2 - 6)
编辑2:所以我误解了不是关于Big O和Ω的问题?
algorithm heap complexity-theory asymptotic-complexity data-structures
我试图掌握 C 中内联汇编(ATT 汇编)的基础知识,所以我通过添加 2 个变量进行练习。
好的,这按预期工作;src变量被复制到dst变量,然后dst变量加 5。src和dst的值分别为 1 和 6 。
int src = 1;
int dst = 0;
asm ("mov %[SRC], %[DEST]\n\t"
"add $5, %0"
: [DEST] "=r" (dst));
: [SRC] "r" (src));
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个时,src和dst的值仍然是 1 和 6。我期望src的值为 1,dst的值为 5,因为将 5 添加到dst(自从 MOV 以来,dst 的值为 0)操作已被删除)应该有输出 5。
int src = 1; int dst = 0;
asm ("add $5, %[DEST]"
: [DEST] …
Run Code Online (Sandbox Code Playgroud)