是否有可能在编译时进入无限循环?
当我尝试编译它时,我的程序似乎进入了无限循环.我有一个类,其构造函数调用方法gameRun().gameRun()在执行结束时调用自身,但是应该有适当的检查以便能够在运行时中断它...但是当我尝试编译类时,我实际上似乎得到了一个无限循环.
我对编译的理解是它实际上并没有执行代码......这意味着除非编译器源中存在严重的错误,否则无法进入无限循环.它是否正确?
我正在用Java编写,并且正在使用BlueJ(我正在成长的初学者IDE)作为我的IDE.
提前致谢.
.....................................
感谢大家提供了许多有用的回复.只是觉得我发布了一个更新,因为这似乎引起了一些兴趣,我自己很好奇.
我没有用BlueJ或者这个错误做了很多,因为我发布了原始错误,因为我从项目中获取了源文件,并且能够使用eclipse成功编译和运行它们.这告诉我,这是一个BlueJ(或相关)问题.我继续使用eclipse处理这个项目而没有任何更多这种性质的问题.当我能够再次使用原始项目的机器时,我将跟进有关该问题的更多细节.(自那以后什么都不应该改变)
.....................................
作为事后的想法......有没有什么办法可以将这个问题链接到我创建和注册的帐户,因为这个帐号被发布了?我找不到办法做到这一点,它会使跟踪这更方便...
我在Python中使用以下形式的键:
mydict = {'0' : 10,
'1' : 23,
'2.0' : 321,
'2.1' : 3231,
'3' : 3,
'4.0.0' : 1,
'4.0.1' : 10,
'5' : 11,
# ... etc
'10' : 32,
'11.0' : 3,
'11.1' : 243,
'12.0' : 3,
'12.1.0': 1,
'12.1.1': 2,
}
Run Code Online (Sandbox Code Playgroud)
一些索引没有子值,一些具有一个子级值,一些具有两个子级值.如果我只有一个子级别,我可以将它们全部视为数字并按数字排序.第二个子级别迫使我将它们全部作为字符串处理.不过,如果我喜欢串排序他们,我将有10以下1及20以下2.
如何正确排序索引?
注意: 我真正想要做的是打印出按索引排序的字典.如果有更好的方法来做它而不是以某种方式对它进行排序对我没问题.
我必须通过串口进行通信.我现在正尝试通过2个设备进行蓝牙通信,而且无处可去.
我在设备上有一个应用程序(称为蓝牙资源管理器),允许我进行串行通信,它将通过蓝牙发送,使用Stonestreet One堆栈,以防你想知道:(
在设置中,我可以创建一个定义了COM端口的"服务".
然后我尝试运行以下代码(我在一台设备上调用Write,在另一台设备上调用Read).BTExplorer在serialPort.Open()执行时启动配对应用程序.在那里我选择我想要使用的"服务"(串行端口1).
但是serialPort.ReadLine()挂起并且永远不会回来.(我的意思是真的挂起.我必须热启动设备来杀死我的应用程序.结束进程/终止进程不起作用.)
以下是供参考的代码:
public void WriteSerial()
{
SerialPort serialPort = new SerialPort("COM4");
serialPort.Open();
serialPort.WriteLine("Hello To The Other Side");
serialPort.Close();
}
public void ReadSerial()
{
SerialPort serialPort = new SerialPort("COM4");
serialPort.Open();
string output = serialPort.ReadLine();
serialPort.Close();
MessageBox.Show(output);
}
private void btnWrite_Click(object sender, EventArgs e)
{
WriteSerial();
}
private void btnRead_Click(object sender, EventArgs e)
{
ReadSerial();
}
Run Code Online (Sandbox Code Playgroud)
如何使这个工作?
我正在使用带有MC70设备的Windows Mobile 5.蓝牙堆栈是Stonestreet One(遗憾的是不能改变).在C#Compact Framework .NET 3.5中开发
如何使用boost :: asio库从套接字中检索以null结尾的字符串?
我还在为一个学校任务中定义的小语言编写一个小解析器.生成AST(抽象语法树)的解析器正在运行.我想要的是检查已定义的变量,它们必须以let表达式为界.首先是任务中定义的方法(建议,不需要):
checkVars :: Expr -> Char
data Expr = Var Char | Tall Int | Sum Expr Expr | Mult Expr Expr | Neg Expr | Let Expr Expr Expr
deriving(Eq, Show)
Run Code Online (Sandbox Code Playgroud)
一个有效的句子是"让X为5 in*(2,X)".X通常是Var,5通常是int.最后一个可以是dataExpr类型的任何部分.要点:X在最后一个表达式的某处使用.let的数据类型是:
Let Expr Expr Expr
Run Code Online (Sandbox Code Playgroud)
在这里仅仅与FYI联系我提出的有关此任务的其他问题; 第一个问题 第二个问题
正如您看到checkVars的数据类型是Expr,所以这里是我将要提供给该函数的示例:
parseProg "let X be 4 in let Y be *(2 , X) in let Z be +(Y , X) in
+(+(X , Y) , Z)"
Let (Var 'X') (Tall 4) (Let (Var 'Y') (Mult (Tall 2) …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于数据库版本控制重要性的帖子.但是,我找不到一个简单的解决方案,如何检查数据库是否处于应该的状态.
例如,我有一个名为"Version"的数据库(版本号存储在那里).但是开发人员可以在不更改版本号的情况下访问和编辑数据库.如果例如开发人员更新存储过程但未更新版本数据库状态与版本值不同步.
如何跟踪这些变化?我不需要跟踪更改的内容,只需要检查数据库表,视图,过程等是否与Version表中保存的数据库版本同步.
为什么我需要这个?在进行部署时,我需要检查数据库是否"正确".此外,不应跟踪所有表或其他数据库对象.是否可以不使用触发器进行检查?是否可以在没有第三方工具的情况下完成?数据库是否有校验和?
让我们说我们使用SQL Server 2005.
编辑:
我想我应该提供一些关于我们当前环境的更多信息 - 我们有一个"基线",其中包含创建基本版本所需的所有脚本(包括我们应用的数据对象和"元数据").但是,这个"基础"版本有许多安装,带有一些额外的数据库对象(附加表,视图,过程等).当我们对"基础"版本进行一些更改时,我们还必须更新一些安装(不是全部) - 那时我们必须检查"基础"是否处于正确状态.
谢谢
我的datamodel中有两个名为User和UserProfile的实体.以下是它们的映射方式.
用户实体的代码:
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
public UserProfile getUserProfile(){
return this.userProfile;
}
public void setUserProfile(UserProfile userProfile){
this.userProfile=userProfile;
}
Run Code Online (Sandbox Code Playgroud)
来自UserProfile实体的代码:
@OneToOne(mappedBy="userProfile",cascade=CascadeType.ALL)
public User getUser(){
return this.user;
}
public void setUser(User user){
this.user=user;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我在UserProfile中有一个用于user属性的cascadetype.all.但是当我尝试删除UserProfile实体时,相应的用户实体仍然存在.(当我尝试删除User实体时,相应的UserProfile实体被删除.)
这是我的问题: -
void Foo(float a){} //1
void Foo(double a){} //2 overloaded
Foo(1.0f); //calls function 1
Foo(1.0 /*double numeric suffix?*/); //calls function 2
Run Code Online (Sandbox Code Playgroud)
如果不是,演员是否可以实现这一目标?我主要对确保某些操作中的双精度数学等感兴趣:
ulong j;
double v;
j = /*some value*/;
if(j>0UL)
v = 1.0 / j; //if 1.0 is set as a float by the compiler then
//could it be likely we lose some precision here
//if a double would allow for more precision? Is
//a cast the only means of ensuring double precision?
Run Code Online (Sandbox Code Playgroud)
关于允许编译器在操作期间自动确定类型的其他提示将是有帮助的.
我使用C++语言环境方面的工作越多,我理解的就越多 - 它们就被打破了.
std::time_get- 与std::time_put(因为它在C strftime/strptime中)不对称,并且不允许使用AM/PM标记轻松解析时间.ru_RU.UTF-8).std::ctype 假设可以在每个字符的基础上完成上/下更新(情况转换可能会改变字符数并且它取决于上下文),这是非常简单的.std::collate - 不支持校对强度(区分大小写或不区分大小写).以及更多...
谢谢.
编辑:澄清链接无法访问:
std::numpunct将千位分隔符定义为char.因此,当U + 2002中的分隔符 - 不同类型的空间时,它不能作为单个字符在UTF-8中再现,而是作为多字节序列.
在C API中,struct lconv将千位分隔符定义为字符串,并且不会遇到此问题.因此,当您尝试使用UTF-8语言环境在ASCII之外的分隔符格式化数字时,会生成无效的UTF-8.
要重现此错误,请使用imbued ru_RU.UTF-8locale 将1234写入std:ostream
EDIT2:我必须承认POSIX C本地化API工作得更顺畅:
std::time_put::put)然而,它仍然是完美的.
编辑3:根据有关C++ 0x的最新说明,我可以看到std::time_get::get- 与...类似strptime和相反std::time_put::put.
I recall seeing a paper a while back for an algorithm that could automatically and seamlessly "graft" texture from parts of an image onto another part of an image.
The approach was something along the lines of the following:
You'd build up a databases of small squares of pixels (perhaps 8X8) from the parts of the picture that are present.
然后,选择一个空像素(纹理嫁接的“目标”)进行填充,然后在数据库中查找与周围像素最匹配的正方形之一。然后,您将根据找到的正方形中相应像素的颜色为空像素着色。然后,选择另一个空白像素并重复进行,直到没有剩余的空白像素为止。
当然,这只是一个模糊的描述,因为我找不到对该算法的任何引用来刷新我对细节的记忆!有人可以帮忙吗?
c++ ×3
java ×2
string ×2
annotations ×1
bluetooth ×1
boost ×1
boost-asio ×1
c# ×1
c++11 ×1
compile-time ×1
database ×1
evaluation ×1
haskell ×1
interpreter ×1
jpa ×1
locale ×1
localization ×1
parsing ×1
python ×1
sockets ×1
sorting ×1
sql-server ×1
synthesis ×1
textures ×1
verify ×1