我正在做一些应该是微不足道的事情 - 从属性中检索枚举值并将其与if语句中的枚举常量进行比较.但Android Studio声称该true案例是无法访问的代码,无法编译.
该块是:
if (ScanState.getScanMode() != ScanState.ScanModeEnum.SCAN_IDLE)
{
//We're already scanning, but user wants to stop.
stopScanning();
}
else
{
ScanState.setScanMode(newMode);
restartScan();
buttonFlashMode = btnMode;
buttonFlasher();
}
Run Code Online (Sandbox Code Playgroud)
在额外的ScanState课程中,我有:
public static ScanModeEnum getScanMode() {
return scanMode;
}
public static void setScanMode(ScanModeEnum scanMode) {
ScanState.scanMode = scanMode;
}
public enum ScanModeEnum
{
SCAN_IDLE,
SCAN_PERSON,
SCAN_BIKE,
SCAN_SEARCH
}
private static ScanModeEnum scanMode = ScanModeEnum.SCAN_IDLE;
Run Code Online (Sandbox Code Playgroud)
变种我试过,其中Android Studio中的权利要求将所有评估为false有
if(ScanState.getScanMode() == ScanState.ScanModeEnum.SCAN_IDLE)
if(ScanState.getScanMode().compareTo(ScanState.ScanModeEnum.SCAN_IDLE)!=0)
if(ScanState.ScanModeEnum.SCAN_IDLE == ScanState.ScanModeEnum.SCAN_IDLE) …Run Code Online (Sandbox Code Playgroud) 我开始为以全双工模式传入和传出数据的设备编写代码,因此我将使用硬件握手并在出现问题时设置中断条件。但当涉及到错误检测时,最好的方法是什么就不太清楚了。
RS232 具有我可以使用的内置奇偶校验检查。据我了解,如果我使用 8 个数据位、1 个奇偶校验位和 1 个停止位,那么线路上的数据包将是 10 位。这意味着对于我发送的每 1024 字节,我还会发送与其交错的 128 字节验证信息。
由于奇偶校验对于每个字节来说是 50/50 的事情,因此持续时间少于一个字节的短噪声突发不太可能导致与奇偶校验位仍然一致的损坏。所以这似乎不是一个可靠的测试。
如果我在每个 1024 字节的末尾使用校验和(在 115200 波特率下仍然只有 80 毫秒),即使我使用 64 位校验和,我的验证开销也会从 12% 下降到不到 1%。而且更难忽视腐败。
奇偶校验只是一种在低于 100 波特率连接的时代有用的技术,而且早已过时了,我应该使用块校验和,还是我遗漏了一些东西?
我的应用程序通过 EF 连接到数据库时遇到了问题,但我不希望它们打开。我正在为体育赛事制作计时系统并动态创建新数据库,复制现有的数据库文件并使用根据需要使用正确文件名构建的连接字符串附加它们。
创建新文件的一种方法是基于现有事件,即复制然后清除加载的数据。如果我在加载现有事件时尝试此操作,则无法复制该文件,因为 SQL Server 已将其锁定,并且我无法明确分离它,因为 SQL Server 声称它正在使用中。当我查看 sys.sysprocesses 的内容时,我看到是的,EF 正在维护“等待命令”的连接。尽管我将所有内容都包装在 using() 构造中并使用 IDbConnectionInterceptor 来确认我的连接正在被处理。
我设法将一个例子分解为
using (SportsTimerEntities ctx = new SportsTimerEntities("metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=\"Data Source=(LocalDB)\\v11.0;AttachDbFilename=C:\\Work\\SportsTimer\\Events\\559eae6a-9974-4463-8546-00824b4aad23.mdf;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=30;Application Name=EntityFramework\""))
{
dbDevices = ctx.Devices.ToList();
}
Run Code Online (Sandbox Code Playgroud)
在using()块之前没有连接。块退出后,连接仍然存在。尽管 IDbConnectionInterceptor 确认Dispose()已调用。
目前我能想到的释放文件的唯一方法是找到并终止 sqlservr 进程,并在执行文件操作后让它重新启动。这看起来既沉重又危险。谁能建议一个更礼貌的选择?
这应该是微不足道的。Kotlin 有一个ArrayList带构造函数的“initialCapacity”
如果我有这个测试用例;
class ArrayListTest : TestCase() {
@Test
fun testArrayList() {
val test = ArrayList<Int>(12)
test[3]=5
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了例外
java.lang.IndexOutOfBoundsException: Index 3 out of bounds for length 0
在调试中运行可确认虽然 ArrayList 已创建,但其大小为零。
文档称,控制容量的功能有限,因为支持数组本身可以调整大小,但这似乎并没有发生。即使我使用索引 0,我也会遇到越界异常。
我尝试偶然运行更新。我正在运行 Android Studio Arctic Fox 2020.3.1 补丁 3(2021 年 10 月 1 日)。
还有其他人遇到过并解决过这个问题吗?
编辑:嗯。test.add(5) 允许您附加,这对于大多数情况来说都很好。我留下这个问题是因为原来的方法似乎应该有效。