我是一名经验丰富的C++程序员,具有普通的Python技能.我首先研究Python的原因是:
我认为Python很棒,我相信我已经实现了上述目标.我将继续将它用于小型项目,脚本和Web开发.
我怀疑我可以将它用于中型到大型项目.虽然动态类型很方便,但它允许我发现令人不安的某类错误.单元测试和linting可以缓解这个问题,但静态类型完全消除了它.
在查看了一些编程语言之后,我认为Scala看起来是一个很好的候选者:我喜欢类型推断并且它在JVM上运行,所以它应该在JVM可用的任何地方都可用.我还可以在使用它时了解有关函数式编程的更多信息.
但是......我也有一些疑问,这就是我希望Stack Overflow社区可以提供帮助的地方:
最后,您认为Scalas的一些缺点是什么?
我一直在阅读Linux上的内存不足情况,手册页的以下段落让我思考:
默认情况下,Linux遵循乐观的内存分配策略.这意味着当malloc()返回非NULL时,无法保证内存确实可用.这是一个非常糟糕的错误.如果事实证明系统内存不足,臭名昭着的OOM杀手就会杀死一个或多个进程.[...]
考虑到运营商的新实现最终会在某个时刻调用malloc,是否有任何保证新的实际上会抛出Linux?如果没有,那么如何处理这个明显无法察觉的错误情况呢?
我在Stackoverflow上看过几个SQLite性能问题,但重点是网站,我正在考虑在客户端 - 服务器场景中使用这个数据库:
与使用PostgreSQL相比,使用SQLite会使应用程序的响应性降低吗?我的直觉告诉我,对于这些负载应该没问题,但也许有人对这种情况有一些实际经验.
我正在阅读Qt编码惯例文档并发现以下段落:
任何具有一个构造或需要运行的代码来被初始化不能用作库代码全局对象,因为它当该构造/代码将运行是未定义的(在第一次使用,在库负荷,main()之前或者不在所有).即使为共享库定义了初始化程序的执行时间,在插件中移动该代码或者静态编译库时也会遇到麻烦.
我知道这个理论说的是什么,但我不理解"根本不是"部分.有时我使用非POD全局const静态(例如:QString),它从来没有发生过我们可能没有被初始化...这是特定于共享对象/ DLL吗?这只会发生在破碎的编译器上吗?
您如何看待这条规则?
就像我在上一个问题中所说的那样,我打算将一个Qt项目从VC++移植到QtCreator.
该项目由4个子项目组成:其中3个是libs,最后一个是exe.子项目是分层的,这意味着每个层都具有与其下层的编译和链接时间相关性.
文件组织如下:
root
lib1
lib2
lib3
main
Run Code Online (Sandbox Code Playgroud)
我从头开始在QtCreator中创建了每个子项目.每个文件夹都包含一个具有相同名称的专业文件(例如:lib1 - > lib1.pro).使用这种方法,我已经构建了除最后一个必须链接可执行文件之外的所有项目.我收到了链接器错误,我通过手动编辑专业文件并添加以下代码来修复:
LIBS += ../path/lib1.a \
../path/lib2.a \
../path/lib3.a
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了现在lib3抱怨它找不到lib2和lib1中的符号.Addind LIBS到lib2.pro文件不起作用.
我有一种感觉,我没有得到QtCreator与libs和可执行文件一起工作的方式.你如何组织这样一个项目,以便正确编译和链接?
我正在研究一种在Windows XP和Windows Vista之间的所有Windows版本上运行的C++软件.在我的代码中,我开发了一个链接标准库(Qt库)的DLL .一旦部署了我的软件,用户在他的系统上没有完全相同的Qt构建,但配置略有不同并不罕见.可能存在禁用的功能(因此它们的Qt构建不会导出相同的符号集),或者甚至可能以使库二进制文件与原始文件不兼容的方式更改库.
在某些时候,我通过LoadLibrary()调用加载我的DLL.这可以吸引用户系统上的任何Qt库.如果我很幸运,他们的Qt构建与我在开发DLL时使用的内容兼容,因此LoadLibrary()成功.但是,根据他们对Qt构建所做的更改,LoadLibrary()调用有时会失败
我的问题是:我怎样才能优雅地捕捉到这些错误?对,我只是使用GetLastError(),然后打印上述两个消息之一.然而,这将是多少,如果我知道更多有用它的模块无法找到,或者它缺少的程序.我注意到,当在资源管理器中运行一个链接缺少DLL的应用程序时,资源管理器设法产生一个很好的'由于缺少所需的库blah.dll而无法加载应用程序foo'.是否有一些API可用于获取有关LoadLibrary()调用失败原因的更多信息?
以下程序应该只计数和int并在标签中显示其值.但过了一会儿,GUI停止工作,而循环继续.
from PyQt4 import QtGui,QtCore
import sys
class main_window(QtGui.QWidget):
def __init__(self,parent=None):
#Layout
QtGui.QWidget.__init__(self,parent)
self.bt=QtGui.QPushButton('crash')
self.lbl=QtGui.QLabel('count')
ver=QtGui.QHBoxLayout(self)
ver.addWidget(self.bt)
ver.addWidget(self.lbl)
self.cnt=0
self.running=False
self.connect(self.bt,QtCore.SIGNAL("clicked()"),self.count)
def count(self):
self.running=True
while self.running:
self.cnt+=1
print self.cnt
self.lbl.setText(str(self.cnt))
self.repaint()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mw=main_window()
mw.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
T x(value)通常是更好的选择,因为它将直接用值初始化x,而T x = value可能会创建一个临时值,具体取决于值的类型.在值为T类型的特殊情况下,我的猜测是表达式T x = value将始终产生一个复制构造函数调用.我对么?
我问过这个问题,因为我开始认为第一种语法太丑陋而且难以理解,特别是当值是函数调用的结果时.例如:
const std::string path(attributes.data(pathAttrib));const std::string path = attributes.data(pathAttrib);我想使用VC++工具集为XP和Vista构建程序,但我不想购买IDE,因为我想使用Qt Creator.
我会下载Windows SDK和Windows调试工具,但我不确定这是否包含我需要的所有内容(即:编译器,链接器,nmake,调试器).有没有人用这种方法?怎么回事?
注意:我了解VC++ Express,但该版本的编译器具有禁用AFAIK的某些功能.
稍后编辑:
我想知道在下载2GB数据之前是否可以使用SDK + Debugtools.个人经历受到高度赞赏.MSDN链接不是.:)