我在C中使用fopen()和fwrite()找到的就是删除所有内容并重新开始写入或附加到文件的末尾.如果我需要在文件中去一些偏移量并覆盖几个字节怎么办?
这有可能与某些功能?
我试图在Dijkstra算法的C中理解这个实现,同时修改它,以便只找到2个特定节点(源和目的地)之间的最短路径.
但是,我不确切知道该做什么.我看到它的方式,没有什么可做的,我似乎无法改变d[]或prev[]导致这些数组聚合一些重要数据用于最短路径计算.
我唯一能想到的是在找到路径时停止算法,也就是说,mini = destination当它被标记为已访问时,打破循环.
还有什么我可以做的让它变得更好或足够吗?
编辑:
虽然我很欣赏给我的建议,但人们仍未能完全回答我的质疑.我想知道的是如何优化算法以仅搜索2个节点之间的最短路径.到目前为止,我对所有其他一般优化都不感兴趣.我所说的是,在找到从节点X到所有其他节点的所有最短路径的算法中,如何优化它以仅搜索特定路径?
PS:我刚注意到for循环开始1直到<=,为什么它不能开始0直到<?
我有这个Windows窗体应用程序,它位于通知区域.单击图标将其显示在前面,再次单击它(或单击应用程序X图标)将其发回.这是通过单击图标显示窗口始终位于顶部的应用程序类型(虽然它是可选的).
右键单击该图标将显示一个上下文菜单,您可以选择是否启用"始终在线"选项.当应用程序首次启动时,应用程序设置将从XML文件中读取,并且我99%认为这是正常工作,TopMost属性正确读取(和写入).
经过一段时间(几分钟,几小时,几天,无论如何;我通常休眠,很少关机)TopMost 停止工作.我没有更改选项,我不认为有什么改变选项值,但我点击通知区域图标和应用程序没有提前.它显示但它在背景上(它显示在Alt + Tab上),它不应该"始终在顶部".我打开上下文菜单,禁用该选项(使其启用)并启用它,然后它开始工作.该应用程序现在"始终在顶部".但是,它可能会在一段时间后的任何时候失去这种能力.
我不明白为什么会发生这种情况以及如何发生这种情况 有谁知道为什么?如果没有,任何想法我怎么能尝试调试这样的行为?
编辑:
我添加了一段代码来显示一个MessageBox,当TopMost属性被更改,看看我是否能注意到任何奇怪的行为,但它并不好.它没有帮助,因为表格是有的,TopMost = true但它仍然在后台......
我有这个代码:
private static void saveMetricsToCSV(String fileName, double[] metrics) {
try {
FileWriter fWriter = new FileWriter(
System.getProperty("user.dir") + "\\output\\" +
fileTimestamp + "_" + fileDBSize + "-" + fileName + ".csv"
);
BufferedWriter csvFile = new BufferedWriter(fWriter);
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 5; j++) {
csvFile.write(String.format("%,10f;", metrics[i+j]));
}
csvFile.write(System.getProperty("line.separator"));
}
csvFile.close();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
C:\ Users\Nazgulled\Documents\Workspace \SóAmigos\ output\1274715228419_5000-List-ImportDatabase.csv(系统找不到指定的路径)
知道为什么吗?
如果重要的话,我在Windows 7上使用NetBeans ...
我有一个带有简单气球提示的Windows Forms应用程序。根据应用程序在桌面上的窗口位置和鼠标光标的位置,气球“提示”(或气球指向箭头)可能会或可能不会指向我想要的位置。
例如,我的应用程序贴靠在桌面侧,当它贴靠在右侧时,如果鼠标光标在右侧的100px以下,则气球“提示”将指向错误的位置。但是,如果鼠标光标位于其他任何地方,它将指向正确的位置。
在这种情况下,我想将鼠标光标位置伪造(实际上不更改鼠标光标位置)到其他位置,这样就不会发生此问题。
这可能吗?我该如何实现?
private void noteTitleInput_KeyPress(object sender, KeyPressEventArgs e) {
if(e.KeyChar == Convert.ToChar(Keys.Return, CultureInfo.InvariantCulture) && noteTitleInput.Text.Length > 0) {
e.Handled = true;
noteInputButton_Click(null, null);
} else if(!Char.IsControl(e.KeyChar)) {
if(Array.IndexOf(Path.GetInvalidFileNameChars(), e.KeyChar) > -1) {
e.Handled = true;
System.Media.SystemSounds.Beep.Play();
noteTitleToolTip.Show("The following characters are not valid:\n\\ / : * ? < > |",
groupNoteInput, 25, -75, 2500);
return;
}
}
noteTitleToolTip.Hide(groupNoteInput);
}
Run Code Online (Sandbox Code Playgroud) 我有一个电影数据库,我需要填充数据,以便更容易测试和开发应用程序.有用于保存电影评级和用户帐户的表格,用户评价电影.
我已经开始开发一个脚本,用虚假和通用数据填充数据库,但我不知道如何随机化评级.对于每部电影,我选择随机数量的用户,100,500,1000,等等.并且对于每个用户,我将评级从1到10随机化.但是这些评级导致相同的平均值,大约为5.这意味着特定电影的评级(1到10)的分布基本相同.这根本不是"现实的",因为所有具有这样生成的评级的电影都具有相同的平均值,因此来自不同用户和不同用户数量的相同评级并不重要.
我希望电影A平均为7,电影B平均为5,电影C平均为8等等......但我不希望每部电影的平均值都不同.我的意思是,产生这样的评级(对于特定数量的用户)会很好:http: //www.imdb.com/title/tt1046173/ratings或者这个http://www.imdb.com/title/ tt0486640 /评级
你知道,随机的东西可以产生两种不同的变化,如上所述.我点击刷新,我得到第一个图表,我点击刷新并得到第二个,再次点击并获得不同或类似的东西,"随机"和"现实"的东西.
我也将在我的应用程序上显示这样的图形,所以有不同的发行版会很好看.但我不知道如何通过一个简单的脚本随机完成这一任务来生成所有这些.
我怎么解决这个问题?也许这太多的工作不值得了?
也许更简单的事情,比如选择一个点(1到10之间),然后创建一个正常的评级分布,其中所选择的点是最高点,这对我有用.
我知道有很多关于免费/付费版本的Android版本的问题,但这可能会有所不同.
我的应用目前使用AdMob进行广告宣传,并在Android Market和Samsung App Store上发布.不幸的是,三星商店将要求大家将来迁移到他们自己的广告网络,三星AdHub.AdMob和AdHub都有自己的库,也有自己的SDK.
我正在寻找一个解决方案来构建2个不同的版本,一个包括AdMob,另一个包括AdHub(以及所有必需的代码).在新版本发布的时候,我有什么解决方案可以轻松地构建2个版本而不会有太多麻烦?
许多解决方案建议将主项目移动到库项目中,然后构建其他2个应用程序,其中包括库项目(基础项目).但是我不太喜欢那个解决方案(如果可能的话,我更愿意将我的应用程序放在一个单独的项目中)并且我正在寻找替代方案,然后决定哪一个更适合我的需求.
我正在将我的应用程序的ActionBar移动到ActionBarSherlock,我正在尝试使用平铺背景自定义背景.我在2个真实设备上测试我的代码,一个运行Android 2.1,另一个运行Android 4.0.4.
下面的代码是在ICS设备上工作(背景重复)但不在Eclair上(背景被拉伸而不是重复).我也在Android 2.3模拟器上测试了它,背景也不重复.它似乎tileMode="repeat"只适用于ICS.
的themes.xml:
<style name="Theme.Opheodrys.Base" parent="Theme.Sherlock.Light">
<item name="android:actionBarStyle">@style/Opheodrys.Widget.ActionBar</item>
<item name="actionBarStyle">@style/Opheodrys.Widget.ActionBar</item>
</style>
<style name="Opheodrys.Widget.ActionBar" parent="Widget.Sherlock.Light.ActionBar">
<item name="android:background">@drawable/ab_background_pattern</item>
<item name="background">@drawable/ab_background_pattern</item>
</style>
Run Code Online (Sandbox Code Playgroud)
ab_background_pattern.xml:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ab_background_tile"
android:tileMode="repeat"
tileMode="repeat" /> <!-- I've added this just in case, but it doesn't seem to be needed -->
Run Code Online (Sandbox Code Playgroud) 我正在我的应用程序上使用ActionBarSherlock,当我在ActionBar中禁用一些MenuItem时,我的手机上的图标变为半透明(HTC One X运行股票Android 4.0.4),但我没有在任何其他手机或模拟器中看到此行为.
我是否正确假设此行为不是本机ActionBar的默认行为?我喜欢这个想法...它警告用户由于某种原因没有启用MenuItem(在我的情况下,它是一个保存按钮,如果至少有一个字段没有填充,它会禁用该按钮).
我正在考虑为自己提供一个半透明的图标,并在禁用MenuItem时手动设置它.这适用于每个Android版本,原生ActionBar与否.问题是在我的手机上(或任何其他具有相同行为的手机),它将是半透明的两倍,我不希望这样.
关于如何才能正确实现这种效果的任何想法?
在我的Android应用程序上,我一直在使用这样的条件代码:
if(BuildConfig.DEBUG) {
// do something...
}
Run Code Online (Sandbox Code Playgroud)
如果ProGurad评估BuildConfig.DEBUG为false,if则会从最终字节码中删除其中的代码块.这是按预期工作的.
然而,随着Android新构建系统的推出,我们现在拥有许多我们以前没有的能力.我正在利用它创造一个新的buildType,我称之为QA.有了这个我添加一个BuildConfig.QA常量,相应的构建类型将是真或假.
现在我有一些代码片段,我需要测试它是a DEBUG还是QA构建,如下所示:
if(BuildConfig.DEBUG || BuildConfig.QA) {
// do something...
}
Run Code Online (Sandbox Code Playgroud)
但是在整个地方写这个很麻烦.相反,我决定在我的utils类上创建一个静态方法,如下所示:
public static boolean isDevelopmentBuild() {
return BuildConfig.DEBUG || BuildConfig.QA;
}
Run Code Online (Sandbox Code Playgroud)
问题是,使用这种方法,任何条件代码都不会像过去那样被删除.之前,ProGuard可以将这些常量评估为false并删除代码.现在,它必须调用方法并检查返回值.
但由于该方法的返回值是常量,ProGuard是否有可能以一种知道返回值始终为常量值(在运行时)并从最终字节码中删除代码的方式来评估方法调用?