我经常看到人们使用C++创建对象
Thing myThing("asdf");
Run Code Online (Sandbox Code Playgroud)
而不是这个:
Thing myThing = Thing("asdf");
Run Code Online (Sandbox Code Playgroud)
这似乎有用(使用gcc),至少只要没有涉及模板.我现在的问题是,第一行是否正确,如果是这样,我应该使用它?
我发现在Java中,有一个叫做的功能static block
,它包括在第一次加载类时执行的代码(我不明白'加载'意味着什么,它是否意味着初始化?).是否有任何理由在静态块内而不是在构造函数中执行初始化位?我的意思是,即使构造函数做同样的事情,在第一次初始化类时也要做所有必要的事情.什么是静态块完成哪些构造函数不能?
这是Kernighan和Ritchie关于C的书的摘录.它显示了如何实现一个版本malloc
.虽然评论很好,但我很难理解它.有人可以解释一下吗?
typedef long Align; /* for alignment to long boundary */
union header { /* block header */
struct {
union header *ptr; /* next block if on free list */
unsigned size; /* size of this block */
} s;
Align x; /* force alignment of blocks */
};
typedef union header Header;
static Header base; /* empty list to get started */
static Header *freep = NULL; /* start of free list */
/* …
Run Code Online (Sandbox Code Playgroud) 问题是:
给定具有x和y坐标的N个点(在2D中),找到点P(在N个给定点中),使得从其他(N-1)个点到P的距离之和最小.
这一点通常称为几何中位数.有没有有效的算法来解决这个问题,除了天真的算法O(N^2)
?
任何人都可以参考一个大型的样本数据库,我可以将其导入MySQL以测试和学习优化和基准测试吗?
数据库应该至少有6-8个表,它们之间有很多外键,即一个完整的数据库.该MySQL
employees
数据库看起来前途无量,但下载页面有3个下载链接,点击其中的任何一个与二进制数据的神可怕的量浏览器中打开一个页面,不知道该怎么做这一点.
我正在设计一个自定义HTML5
视频播放器.因此,它将有自己的自定义滑块来模仿视频进度,所以我需要了解HTML5
视频的整个缓冲shebang .
我看到了这篇文章:视频缓冲.它表示缓冲对象由几个时间范围组成,它们以开始时间的线性顺序排列.但我找不到以下内容:
说视频开始了.它自己一直持续到1:45(偶尔也会停滞,等待进一步的数据),之后我突然跳到32:45.现在过了一段时间,如果我跳回到1:27(在最初加载和播放的时间范围内,在我跳跃之前),它会立即开始播放,因为之前已经加载了吗?或者是因为我跳了一下,那部分会丢失并且必须再次取出?无论哪种方式,所有这些情况的行为是否一致?
假设我做了5或6次这样的跳转,每次等待几秒钟以便在跳转后加载一些数据.这是否意味着该buffered
对象将存储所有这些时间范围?或者有些人会迷路?它是一种堆栈类型的东西,因为更多的范围由于进一步的跳跃而加载,早期的范围会弹出吗?
将检查buffered
对象是否具有从0开始的一个时间范围(忘记直播流)并以视频持续时间长度结束,以确保整个视频资源已完全加载?如果没有,是否有某种方式可以知道整个视频已被下载,并且任何部分都是可搜索的,视频可以连续播放而不会有片刻的延迟?
W3C规范在这方面不是很清楚,我也找不到一个适当大的(比如一个多小时)远程视频资源来测试.
我在理解Java中的异常checked
和unchecked
异常方面遇到了一些问题.
checked
异常应该在编译期间寻找异常.在不同来源中提供的示例引用数据库连接,文件处理作为其中一些,而unchecked
异常应该在程序员的部分寻找错误,例如超出数组范围的索引等.不应该反过来吗?我的意思是,数据库连接是在运行时完成的,对吧?文件处理也是如此.在编译期间没有打开文件句柄,为什么在编译期间会查找可能的错误?另一方面,在程序中已完成索引超出其范围的数组,可在编译期间检查(如果用户在运行时提供异常索引,则可以将其作为运行时)问题).我在这里错过了什么?
2其次,如何才能RunTimeException
,本身是unchecked
,子类Exception
,这是checked
?这意味着什么?
我在Herbert Schildt的书中找到了一个例子来解释checked
异常的用法:
class ThrowsDemo {
public static char prompt(String str)
throws java.io.IOException {
System.out.print(str + ": ");
return (char) System.in.read();
}
public static void main(String args[]) {
char ch;
try {
ch = prompt("Enter a letter");
}
catch(java.io.IOException exc) {
System.out.println("I/O exception occurred.");
ch = 'X';
}
System.out.println("You pressed " + ch);
}
}
Run Code Online (Sandbox Code Playgroud)
这throws
条款是否必要?为什么我不能正常做这样的try-catch …
我想画一个带圆角的矩形(所有4个角的边框半径相同),特定的颜色填充整个矩形,还有一个单独的边框颜色(比如边框宽1 px).
从我的观察,Qt提供了三种方法- fillRect
和drawRect
和drawRoundedRect
.我试过了,他们不像我想的那样工作.没有像这样的方法fillRoundedRect
.这意味着我可以绘制一个圆角矩形,但它不会填充我想要的颜色.
我该怎么做?而且,我读到由于一些混叠问题,角落经常被渲染为不相等.如何将它设置为全部四个相等?会painter.setRenderHint(QPainter::Antialiasing)
满足吗?或者我还要做其他事吗?
我正在努力找出一个有效的quicksort
算法.它工作正常,但是当元素数量巨大时,需要很长时间才能运行,并且数组的某些部分是预先排序的.我正在查阅维基百科的文章,在quicksort
那里我找到了这样写的:
为了确保最多使用O(log N)空间,首先递归到数组的较小一半,然后使用尾调用递归到另一个.
对于这种小阵列上的调用(即长度小于实验确定的阈值t),使用插入排序,其具有较小的常数因子并因此在小阵列上更快.这可以通过将这些数组保持未排序并在末尾运行单个插入排序传递来实现,因为插入排序有效地处理几乎排序的数组.在识别每个小段时单独插入排序会增加启动和停止许多小排序的开销,但避免浪费在多个段边界上比较密钥的工作量,由于快速排序过程的工作原因,这些密钥将按顺序排列.它还改善了缓存的使用.
我目前正在递归两个分区.知道如何实现第一个提示吗?何谓递归先入阵的小一半,并使用尾部调用递归到其他?其次,我如何insertion-sort
在快速排序中实施?它是否总能提高效率,或者只有在阵列的某些部分进行预先排序时?如果是第二种情况,那么当然我无法知道何时会发生这种情况.那我insertion-sort
什么时候应该包括?
参考这篇文章,有一行内容如下:
因为操作系统可以解决的块数或驱动器地址存在限制.通过将块定义为多个扇区,OS可以使用更大的硬盘驱动器,而不会增加块地址的数量.
这是什么意思?"操作系统可以解决"是什么意思?随后的数学也不清楚.64*512如何小于64*4?