在我正在上课的课程中,我正在玩几个人QList.我听说Qt试图尽可能不制作列表的深层副本.据我所知,这意味着当你这样做时不会发生深层复制:
QList<int> myList;
myList << 1 << 2 << 3 << 4;
QList<int> otherList = myList; // No deep copy
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我需要确保永远不会发生深层复制QList.我需要确保避免什么样的操作或操作才能确保QList我正在使用的深层拷贝永远不会发生?
我创建了一个包含以下行的文件:
int main() { return 0; }
Run Code Online (Sandbox Code Playgroud)
编译完之后,我惊讶地发现这个简单程序的二进制文件是8328字节!这里发生了什么,这个8328字节的二进制文件在世界上是什么?当然,这个程序可以用几行程序表示.
注意:我用以下行编译了这个:
g++ main.cpp
Run Code Online (Sandbox Code Playgroud)
我的g ++版本是 g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
我试图在bash脚本中增加一个变量,但它无法正常工作.这是我的代码:
#! /bin/bash
COUNTER=0
while [ $COUNTER -lt 5 ]
do
echo "i will add this line to file mycreation">>./myfile
COUNTER = `expr $COUNTER + 1`
done
Run Code Online (Sandbox Code Playgroud)
COUNTER作业周围的引号是反引号.
我试图取代COUNTER以$COUNTER这样的:
$COUNTER = `expr $COUNTER + 1`
Run Code Online (Sandbox Code Playgroud)
但这并没有解决问题,并给了我以下错误:
line7: 0: command not found.
Run Code Online (Sandbox Code Playgroud) 我每天都在使用相同软件的两个不同分支.但是,每次我签出另一个分支时,我的构建过程可能需要一个小时.为了解决这个问题,我刚刚在两个单独的文件夹中为每个分支检查了一次项目.
我在一个分支中做了一些工作,并在提交之前意识到我在错误的文件夹中,因此错误的分支.如何将我在此分支上所做的工作移动到另一个分支,最好不要创建提交(如果可能的话)?
在vim中,我可以找到一个文件并在新的选项卡中打开它:tabfind,然后我可以使用:split或打开一个我知道新分区位置的文件:vsplit.但是,我希望vim在运行:split或:vsplit命令时在我的路径中为我查找文件.例如,在我当前的目录中,我有这些文件(所有这些都在我的路径中):
./ReallyLongFileName1.txt
./fooDir/ReallyLongFileName2.txt
./barDir/bazDir/ReallyLongFileName3.txt
Run Code Online (Sandbox Code Playgroud)
我想在vim中输入以下命令:
:vsplit R<Tab>
Run Code Online (Sandbox Code Playgroud)
并在我的路径中搜索与该表达式匹配的所有文件,并填充其余部分
:vsplit ReallyLongFileName
Run Code Online (Sandbox Code Playgroud)
这与:find或完美配合:tabfind,但在拆分时不起作用.是否有一个命令执行此操作,我只是不知道,或者有没有办法将这个功能添加到:split和:vsplit命令?
鉴于枚举:
enum AnEnum { Foo, Bar, Bash, Baz };
Run Code Online (Sandbox Code Playgroud)
你能用Qt的foreach循环迭代这些枚举吗?
这段代码没有编译(不是我预期的......)
foreach(AnEnum enum, AnEnum)
{
// do nothing
}
Run Code Online (Sandbox Code Playgroud) 在发布版本下,我无法找到关于Q_ASSERT语义的明确声明.如果没有断言检查,那么断言的表达式是否被评估?
请考虑以下代码
Q_ASSERT(do_something_report_false_if_failed());
Run Code Online (Sandbox Code Playgroud)
将do_something_report_false_if_failed()在所有潜在的Qt构建配置下运行?相反,它会更安全(即使更冗长,更不易读):
bool is_ok = do_something_report_false_if_failed();
Q_ASSERT(is_ok)
Run Code Online (Sandbox Code Playgroud)
后一种方法的缺点是ASSERT故障不那么冗长,但是可能更清楚地表明该语句是执行的?
在工作和在线,我一直听到关于企业Java开发的术语"代理".例如,metrics-spring使用以下短语:
该模块执行以下操作:
创建指标和代理bean,其中包含使用@Timed,@ Metered,@ ExceptionMetered和@Counted注释的方法[强调我的]
我不熟悉Java生态系统框架和库中的许多语言.我觉得我对bean的内容有很好的理解,但我还不清楚如何代理bean.
代理bean意味着什么?
def doWork() = {
getLock()
Try(useResource) match {
case Success(result) => releaseLock(); result
case Failure(e: Exception) => releaseLock(); throw e
}
}
Run Code Online (Sandbox Code Playgroud)
当我退出时,我正在努力确保锁定被释放doWork.但是作为该方法的一部分,我可能会抛出一个异常,所以我不能在最后释放锁doWork.
releaseLock()重复两次,看起来有点代码味道.我可以通过使用传统的Java风格的try/catch/finally来减少它:
def doWork() = {
getLock()
try {
useResource
} catch {
case e: Exception => throw e
} finally {
releaseLock()
}
}
Run Code Online (Sandbox Code Playgroud)
但Try如果可能的话,我更喜欢使用Scala .
有没有办法在框架内执行"最终"逻辑Try?
当我专注于我的调试面板时:
我想使用键盘切换到"控制台"选项卡,该选项卡位于当前所选"调试器"选项卡旁边.
有几个Keymap设置引用切换编辑器选项卡,但这不是代码编辑器窗口,而是IntelliJ特定窗格.如何指定用于在IntelliJ窗格中导航选项卡的键盘快捷键?