小编rpg*_*rpg的帖子

我应该学习Scala吗?

我是一名经验丰富的C++程序员,具有普通的Python技能.我首先研究Python的原因是:

  • 获得不同的编程视角(静态与动态,解释与编译等)
  • 增加我可以处理的项目的广度(Python允许我进行Web开发,为Symbian手机开发或敲击快速系统管理脚本)
  • 补充我的C++技能.

我认为Python很棒,我相信我已经实现了上述目标.我将继续将它用于小型项目,脚本和Web开发.

我怀疑我可以将它用于中型到大型项目.虽然动态类型很方便,但它允许我发现令人不安的某类错误.单元测试和linting可以缓解这个问题,但静态类型完全消除了它.

在查看了一些编程语言之后,我认为Scala看起来是一个很好的候选者:我喜欢类型推断并且它在JVM上运行,所以它应该在JVM可用的任何地方都可用.我还可以在使用它时了解有关函数式编程的更多信息.

但是......我也有一些疑问,这就是我希望Stack Overflow社区可以提供帮助的地方:

  • 可移植性:Linux和Windows至少我希望如此.那么手机呢,有可能让它在那里运行吗?
  • C++兼容性:我可以将C++代码与Scala混合使用吗?(JNI?)
  • 编程范例:我觉得此时切换到函数式编程(FP)并不舒服.我可以首先使用面向对象和程序与一些FP,然后在我学习时改变比例吗?
  • 工具链成熟度:您对IDE和调试器的体验是什么?我现在正在使用Eclipse,似乎没问题.
  • 学习速度:考虑到我的经验,您认为我能用Scala达到可行水平的速度有多快?
  • 部署:您如何部署Scala计划?它是一个罐子,它是可执行文件吗?

最后,您认为Scalas的一些缺点是什么?

java scala jvm-languages

32
推荐指数
4
解决办法
8520
查看次数

Linux乐观的malloc:当内存不足时,新的总会抛出吗?

我一直在阅读Linux上的内存不足情况,手册页的以下段落让我思考:

默认情况下,Linux遵循乐观的内存分配策略.这意味着当malloc()返回非NULL时,无法保证内存确实可用.这是一个非常糟糕的错误.如果事实证明系统内存不足,臭名昭着的OOM杀手就会杀死一个或多个进程.[...]

考虑到运营商的新实现最终会在某个时刻调用malloc,是否有任何保证新的实际上会抛出Linux?如果没有,那么如何处理这个明显无法察觉的错误情况呢?

c++ linux memory-management out-of-memory

22
推荐指数
2
解决办法
3492
查看次数

SQLite for client-server

我在Stackoverflow上看过几个SQLite性能问题,但重点是网站,我正在考虑在客户端 - 服务器场景中使用这个数据库:

  • 我预计现在一台服务器有1-10个客户端,未来可能达到50个或更多.
  • 读取略多于写入
  • 数据库将位于服务器进程后面(即:不通过网络使用直接数据库访问)

与使用PostgreSQL相比,使用SQLite会使应用程序的响应性降低吗?我的直觉告诉我,对于这些负载应该没问题,但也许有人对这种情况有一些实际经验.

sqlite performance client-server

9
推荐指数
1
解决办法
6554
查看次数

在生产中使用GCC的C++ 0x模式?

是否有人在生产中使用GCC 4.4.0 C++ 0x支持?我正在考虑将它与最新的MinGW一起使用,但我不确定它是否足够成熟.

我对......感兴趣:

  • TR1支持
  • 汽车
  • 初始化列表

c++ gcc mingw c++11

9
推荐指数
1
解决办法
4090
查看次数

C++静态全局非POD:理论与实践

我正在阅读Qt编码惯例文档并发现以下段落:

任何具有一个构造或需要运行的代码来被初始化不能用作库代码全局对象,因为它当该构造/代码将运行是未定义的(在第一次使用,在库负荷,main()之前或者不在所有).即使为共享库定义了初始化程序的执行时间,在插件中移动该代码或者静态编译库时也会遇到麻烦.

我知道这个理论说的是什么,但我不理解"根本不是"部分.有时我使用非POD全局const静态(例如:QString),它从来没有发生过我们可能没有被初始化...这是特定于共享对象/ DLL吗?这只会发生在破碎的编译器上吗?

您如何看待这条规则?

c++ qt static initialization shared-libraries

9
推荐指数
2
解决办法
2193
查看次数

QtCreator项目有多个库和一个exe

就像我在上一个问题中所说的那样,我打算将一个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和可执行文件一起工作的方式.你如何组织这样一个项目,以便正确编译和链接?

c++ qt qmake

6
推荐指数
1
解决办法
3988
查看次数

正确捕获LoadLibrary()错误

我正在研究一种在Windows XP和Windows Vista之间的所有Windows版本上运行的C++软件.在我的代码中,我开发了一个链接标准库(Qt库)的DLL .一旦部署了我的软件,用户在他的系统上没有完全相同的Qt构建,但配置略有不同并不罕见.可能存在禁用的功能(因此它们的Qt构建不会导出相同的符号集),或者甚至可能以使库二进制文件与原始文件不兼容的方式更改库.

在某些时候,我通过LoadLibrary()调用加载我的DLL.这可以吸引用户系统上的任何Qt库.如果我很幸运,他们的Qt构建与我在开发DLL时使用的内容兼容,因此LoadLibrary()成功.但是,根据他们对Qt构建所做的更改,LoadLibrary()调用有时会失败

  • "指定的模块无法找到."; 如果他们的Qt构建包含比我的Qt构建更少的DLL,通常会发生这种情况.所以我的DLL试图加载例如QtFoo.dll但由于这个dll不是他们的Qt构建的一部分,加载我的DLL失败.
  • "无法找到指定的程序."; 如果他们更改了他们的Qt构建以便禁用某些功能,这通常会发生这种情况,这会导致导出的符号减少.

我的问题是:我怎样才能优雅地捕捉到这些错误?对,我只是使用GetLastError(),然后打印上述两个消息之一.然而,这将是多少,如果我知道更多有用的模块无法找到,或者缺少的程序.我注意到,当在资源管理器中运行一个链接缺少DLL的应用程序时,资源管理器设法产生一个很好的'由于缺少所需的库blah.dll而无法加载应用程序foo'.是否有一些API可用于获取有关LoadLibrary()调用失败原因的更多信息?

c++ windows plugins qt loadlibrary

6
推荐指数
1
解决办法
4662
查看次数

调试堆/ STL调试等效于GCC?

我计划更多地使用GCC(Linux和Windows),我想知道是否有相当于MSVC 调试堆STL检查可用于GCC CRT和STL.

我已经了解Valgrind等工具,但我正在寻找库中内置的东西.

c++ debugging gcc

5
推荐指数
1
解决办法
3832
查看次数

PyQt 4 UI冻结

以下程序应该只计数和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)

有帮助吗?

python qt pyqt pyqt4

3
推荐指数
2
解决办法
5943
查看次数

初始化:T x(值)与T x =当值为T时的值

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);

c++ initialization

2
推荐指数
1
解决办法
203
查看次数

用于Qt Creator的VC++编译器

我想使用VC++工具集为XP和Vista构建程序,但我不想购买IDE,因为我想使用Qt Creator.

我会下载Windows SDK和Windows调试工具,但我不确定这是否包含我需要的所有内容(即:编译器,链接器,nmake,调试器).有没有人用这种方法?怎么回事?

注意:我了解VC++ Express,但该版本的编译器具有禁用AFAIK的某些功能.

稍后编辑:

我想知道在下载2GB数据之前是否可以使用SDK + Debugtools.个人经历受到高度赞赏.MSDN链接不是.:)

c++ winapi qt qt-creator

0
推荐指数
1
解决办法
1万
查看次数