小编Ida*_*n K的帖子

Vim:未定义的变量没有标记

最近我在Vim中进行重构时犯了一些错误,结果是未定义和未使用的变量.任何体面的IDE(如NetBeans)都会将它们标记为这样,但我还没有遇到过这样做的Vim插件.

谁能帮我吗?我主要是用PHP编程.

php vim plugins

13
推荐指数
1
解决办法
2124
查看次数

包含头文件时,路径是否区分大小写?

鉴于此目录树:

src/MyLibrary/MyHeader.h
src/file.cpp

file.cpp:

#include "mylibrary/myheader.h"
...
Run Code Online (Sandbox Code Playgroud)

编译file.cpp与VS一起使用,在gcc中失败.

  • 标准说什么?
  • 如果路径区分大小写,为什么这是明智的?
  • 什么是最佳做法,将所有文件/文件夹名称保持为小写,从而在包含时也这样做?

谢谢.

c++ linux windows gcc visual-studio

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

实现支持恢复的下载管理器

我打算用C++编写一个小型下载管理器,支持恢复(每次下载多个连接).

根据我目前收集的信息,当发送http请求时,我需要添加一个带有"Range"键和值"bytes = startoff-endoff"的头字段.然后,服务器返回一个http响应,其中包含这些偏移之间的数据.

因此,我的想法大致是将文件拆分为每个文件允许的连接数,并使用适当的"范围"发送每个拆分部分的http请求.因此,如果我有一个4mb文件和4个允许的连接,我将文件拆分为4并且有4个http请求,每个都有适当的"范围"字段.实现恢复功能将涉及记住已经下载了哪些偏移并且根本不请求那些偏移.

  • 这是正确的方法吗?
  • 如果Web服务器不支持恢复怎么办?(我的猜测是它会忽略"范围"而只是发送整个文件)
  • 发送http请求时,我应该在范围内指定整个分割大小吗?或者可以询问较小的碎片,比如每个请求1024k?
  • 在读取数据时,我应该立即将其写入文件还是进行某种缓冲?我想写小块可能是浪费.
  • 我应该使用内存映射文件吗?如果我没记错的话,建议经常阅读而不是写(我可能是错的).记忆明智吗?如果我同时有几个下载怎么办?
  • 如果我没有使用内存映射文件,我是否应该按照允许的连接打开文件?或者当需要写入文件时只需寻求?(如果我确实使用了内存映射文件,这将非常简单,因为我可以简单地使用几个指针).

注意:我可能会使用Qt,但这是一个普遍的问题所以我把代码留了下来.

file-io http download

11
推荐指数
2
解决办法
5898
查看次数

用于处理文件路径的Qt类

可能重复:
Qt相当于PathAppend?

是否有一个类在Qt中处理文件路径?特别是我正在寻找像.NET的Path.Combine这样的东西.

我知道在boost :: filesystem中有一个,但我想知道Qt中是否有一个.

c++ qt

10
推荐指数
2
解决办法
9259
查看次数

将QNetworkReply写入文件

我正在使用QNetworkAccessManager :: get下载文件,但与QHttp :: get不同,get没有内置方法直接将响应写入不同的QIODevice.

最简单的方法是做这样的事情:

QIODevice* device;

QNetworkReply* reply = manager.get(url);
connect(reply, SIGNAL(readyRead()), this, SLOT(newData()));
Run Code Online (Sandbox Code Playgroud)

然后在newData槽中:

device->write(reply->readAll());
Run Code Online (Sandbox Code Playgroud)

但我不确定这是不是正确的方法,也许我错过了一些东西.

c++ qt

10
推荐指数
1
解决办法
9131
查看次数

Python中的带宽限制

哪些库可以让您控制网络请求的下载速度(特别是http).我没有在urllib2中看到任何内置内容(也没有在我打算使用的(Py)Qt中看到).

可以扭曲控制带宽吗?如果没有,我如何控制urllib2或Twisted的读缓冲区大小?sleep暂停网络运营不是一种选择.

python networking network-programming

10
推荐指数
2
解决办法
7182
查看次数

实现过滤类加载器

我们正在扩展我们的Java应用程序以支持插件.其中一部分包括保持插件与我们自己的类隔离,因此每个插件都将存在于它自己的类加载器中.

我们还计划为插件提供一个java框架来使用,因此它必须暴露给插件.这个java框架还包含需要从我们自己的java代码访问的类,因此它也必须可以访问我们自己的java代码.

问题是如果java框架存在于系统类加载器(我们自己的java代码存在)中,我们就无法为插件提供我们想要的隔离.如果我们选择将java框架分离到另一个类加载器并使用它作为插件类加载器的父类,那么我们自己的类将无法看到java框架.

我想到的当前解决方案是实现过滤类加载器.java框架将存在于系统类加载器中,但是这个类加载器将过滤掉系统类加载器中的所有东西,除了java框架,我将使用这个类加载器作为插件的父类加载器.

这是一个粗略的实现:

public class FilteringClassLoader extends ClassLoader {
    private URLClassLoader _internalLoader;

    public FilteringClassLoader(ClassLoader parent) {
        super(parent);

        // load our java framework to this class loader
        _internalLoader = new URLClassLoader(...)
    }

    public Class<?> loadClass(String name) throws ClassNotFoundException {
        // first, try to load from our internal class loader
        // that only sees the java framework if that works, load the class 
        // from the system class loader and return that. otherwise, the class 
        // should be filtered out …
Run Code Online (Sandbox Code Playgroud)

java classloader

7
推荐指数
1
解决办法
1698
查看次数

如果setUp在Python unittest中引发异常,则停止运行测试

我有这个测试类:

class mytest(unittest.TestCase):
    def setUp(self):
        os.mkdir(...)
        ...

    def tearDown(self):
        shutil.rmtree(...)

    def test_one(self):
        ...

    def test_two(self):
        ...
Run Code Online (Sandbox Code Playgroud)

如果事情失败后,mkdir运行的时候已经跑了setUptest_one,它仍然会尝试运行setUptest_two.此时我会收到错误,mkdir因为rmtree没有运行.

有没有办法告诉Python unittest如果setUp失败就停止运行当前的测试?我打算停止常规的测试失败.

python testing

7
推荐指数
1
解决办法
2826
查看次数

在QThread的上下文中调用方法

在我的应用程序中有主线程和工作线程(QThread).
从主线程我想调用我的工作线程的方法,让它在线程的上下文中运行.

我已经尝试使用QMetaObject::invokeMethod并给它QueuedConnection选项,但它不起作用.
我也尝试从主线程(连接到工作线程的插槽)发出信号,但也失败了.

这是我尝试的大致的片段:

class Worker : public QThread
{
    Q_OBJECT

public:
    Worker() { }

    void run() 
    { 
        qDebug() << "new thread id " << QThread::currentThreadId(); 
        exec(); 
    }

public slots:
    void doWork()
    {
        qDebug() << "executing thread id - " << QThread::currentThreadId();
    }
};
Run Code Online (Sandbox Code Playgroud)

使用QMetaObject方式:

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    qDebug() << "main thread id - " << QThread::currentThreadId();

    Worker worker;
    worker.start();

    QMetaObject::invokeMethod(&worker, "doWork", Qt::QueuedConnection);

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

使用信号方式: …

c++ qt multithreading qthread

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

在Windows上有复制文件夹的界面吗?

我想复制文件夹A并粘贴到桌面.

我目前正在使用C++,因此最好是OO接口(如果可用).

c c++ windows

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