我需要在C中编写一个排序程序,如果文件可以在适当的位置排序以节省磁盘空间,那将是很好的.数据很有价值,所以我需要确保如果进程被中断(ctrl-c),文件没有被破坏.我可以保证机器上的电源线不会被拉扯.
额外细节:文件大约40GB,记录是128位,机器是64位,操作系统是POSIX
有关实现此目的的任何提示,或一般说明?
谢谢!
澄清一下:我希望用户想要ctrl-c进程.在这种情况下,我想要优雅地退出并确保数据是安全的.所以这个问题是关于处理中断和选择一个排序算法,如果请求可以快速包装.
跟进(2年后):为了后代,我已经安装了SIGINT处理程序,它运行良好.这不能保护我免受电源故障的影响,但这是我可以处理的风险.代码位于https://code.google.com/p/pawnsbfs/source/browse/trunk/hsort.c和https://code.google.com/p/pawnsbfs/source/browse/trunk/qsort.c
鉴于我的知识库中有以下内容:
1 0 6 20 0 0 6 20
1 0 3 6 0 0 3 6
1 0 15 45 0 0 15 45
1 0 17 44 0 0 17 44
1 0 2 5 0 0 2 5
Run Code Online (Sandbox Code Playgroud)
我希望能够找到以下向量的最近邻居:
1 0 5 16 0 0 5 16
Run Code Online (Sandbox Code Playgroud)
根据距离度量.所以在这种情况下,给定一个特定的阈值,我应该发现列出的第一个向量是给定向量的近邻.目前,我的知识数据库的大小大约为数百万,因此计算每个点的距离度量,然后进行比较证明是昂贵的.对于如何以显着的加速实现这一目标,还有其他选择吗?
我几乎对任何方法都持开放态度,包括在MySQL中使用空间索引(除了我不完全确定如何解决这个问题)或某种哈希(这将是伟大的,但我不完全确定).
在比较这两个用于定义实例属性的选项时:
var networkManager = NetworkManager.sharedInstance()
var lazy networkManager = NetworkManager.sharedInstance()
都:
懒:
不懒:
似乎使用非惰性变量没有任何好处.那么为什么语言允许程序员做出这个低劣的选择呢?
(我不是在询问var和let la la之间的区别是默认的Swift常量是懒惰的吗?)
我正在寻找一个PHP PDO完整的工作示例,其中包含运行查询和处理错误的最佳实践.这是我到目前为止所拥有的.
正在连接.如果不这样做,则默认情况下,连接失败会将DB凭据公开给站点的所有用户.
try {
$dbh = new PDO("mysql:host=localhost;dbname=phor_lang", "phor_lang", "'9lsnthsn9");
} catch (PDOException $e) {
error(false, "PDO ERROR: " . $e->getMessage());
}
Run Code Online (Sandbox Code Playgroud)
用查询
$stmt = $dbh->prepare("INSERT INTO sets");
$stmt->execute()
or error(0, "USERS ERROR ".__LINE__." ".print_r($dbh->errorInfo(),true));
$setID = $dbh->lastInsertID();
$stmt->closeCursor();
$stmt = $dbh->prepare("INSERT INTO words (language, name, detail, user, type, set) VALUES (?, ?, ?, ?, ?, ?)");
$stmt->execute(array($l1l, $l1w, $l1d, $userID, 'training', $setID))
or error(0, "USERS ERROR ".__LINE__." ".print_r($dbh->errorInfo(),true));
$stmt->closeCursor();
Run Code Online (Sandbox Code Playgroud)
但是,这会导致查询失败(执行返回false)并且错误消息为空.
验证可用网站有多种选择:
但它们都没有最终的功能集:
真正的人在那里使用任何好的工具来使这更容易,或者在IE被消除之前验证没有实际意义吗?
Google Analytics正在iOS模拟器中运行.
这会导致控制台日志中的污染,我可以寻找有用的调试信息.此外,发送给Google的数据并不表示使用我们的应用的实际用户.
如何在iOS模拟器中运行应用时禁用Google Analytics报告?
我从CS193P课程中学到了Swift.它建议使用以下API来使ViewController FaceViewController更新其视图FaceView:
var expression = FacialExpression(eyes: .Closed, eyeBrows: .Relaxed, mouth: .Smirk) {
didSet {
updateUI() // Model changed, so update the View
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当视图更新自己的模型时,我还没有看到这个概念的扩展.例如,这没有意义:
// Implementing an imaginary delegate UIFaceViewDelegate
func faceView(_ faceView: FaceView, didEpdateExpressionTo expression: FacialExpression {
self.expression = expression
// This triggers another update to the view, and possibly infinite recursion
}
Run Code Online (Sandbox Code Playgroud)
在Objective-C中,这非常简单,因为您可以将getter和setter用作公共API,将后备存储用作私有状态.Swift也可以使用计算变量来使用这种方法,但我相信Swift设计师有一些不同的想法.
那么,视图控制器在响应视图更新时表示状态更改的适当方式是什么,同时还为其他人公开合理的读/写API以检查其状态?
我在带有按钮a元素的段落中有文本:
<p>
<a class="btn btn-default" href="#">Take exam</a>
<span class="text-muted">Available after reading course material</span>
</p>
Run Code Online (Sandbox Code Playgroud)
但是,这会使两者不垂直对齐.

在这里对齐文本基线的最佳方法是什么?
这是一个UITableView,在iOS6中可以正常工作,与iOS7中的状态栏重叠.解决这个问题的最佳方法是什么?使用iOS7 beta 4.此行为自beta 1起存在.
META:抱怨我直接在800-275-2273或Stack Overflow 212-232-8294不遵守NDA给苹果; 或者帮我解决这个问题,这显然优于Apple的论坛.

我在一个大文件(10英寸GB)中排序128位记录.算法工作正常,目前使用uint64_t其中两个等于一个记录.这是一个现代的64位系统.
为了代码可读性,我想知道创建一个类似的结构是否typedef struct u128t {uint64_t hi, uint64_t} u128t可以代替两个64位记录.这将使数组索引和赋值更清晰,但我必须实现比较器函数.
这是一个可移植的解决方案,我应该期望它以与原始实现相同的速度运行吗?
进一步阅读:
algorithm ×3
ios ×3
c ×2
css ×2
mysql ×2
sorting ×2
swift ×2
cocoa-touch ×1
heapsort ×1
html ×1
iphone ×1
javascript ×1
json ×1
pdo ×1
performance ×1
php ×1
python ×1
quicksort ×1
search ×1
sql ×1
uitableview ×1
validation ×1