小编Hel*_*bye的帖子

git提交和工作目录之间的区别?

git-diff手册页说git diff用于

显示工作树与索引或树之间的更改,索引与树之间的更改,两个树之间的更改或磁盘上两个文件之间的更改.

但是,如果要显示HEAD之前的提交和工作目录之间的区别呢?那可能吗?

git-diff

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

C++,静态与命名空间与单例

我已经在网上阅读了很多帖子和文章,但我找不到明确的答案.

我有一些具有类似用途的功能,我想要超出全局范围.其中一些需要公开,另一些应该是私有的(因为它们只是"公共"功能的辅助功能).另外,我不仅有函数,还有变量.它们只需要"私人"帮助函数,也应该是私有的.

现在有三种方式:

  • 创建一个静态的类(反对:潜在的"不能在没有对象的情况下调用成员函数" - 并不是所有东西都需要是静态的)
  • 制作单身类(反对:我需要对象)
  • 创建命名空间(没有私有关键字 - 为什么我要把它放在命名空间中呢?)

对我采取什么方式?结合其中一些方法的可能方法?

我想到了类似的东西:

  1. 制作单例,静态函数使用单例对象的辅助函数(这可能吗?我仍然在类中,但访问它的类型的对象)
  2. 在programm start调用的构造函数,初始化所有东西( - >确保静态可以从单例对象访问函数)
  3. 仅通过MyClass :: PublicStaticFunction()访​​问公共函数

谢谢.

c++ singleton static namespaces

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

参考git中的上一个/下一个提交?

我见过git命令使用的语法如此HEAD~,但我无法在Git 参考手册中找到这种语法.

这是我所理解的:<commit>~<n>指的是<commit>之前的提交<n>步骤(其中<n>是一个整数),并且只是意味着相同而且<n>隐含地是一个.commit~

现在,这是对的吗?在那种情况下,这总是有效吗?如果<commit>是两个分支之间合并的结果,那么提交将<commit>~引用什么?是否有一些相应的语法用于引用下一个提交或稍后提交<n>步骤?

git commit

17
推荐指数
4
解决办法
9696
查看次数

使用Boost Asio从串口读取

我想检查串口上的传入数据包,使用boost.asio.每个数据包将以一个字节长的标头开始,并指定已发送的消息类型.每种不同类型的消息都有自己的长度.我想写的函数应该不断地监听新的传入消息,当它找到它时应该读取它,并调用其他函数来解析它.我目前的代码如下:

void check_for_incoming_messages()
{
    boost::asio::streambuf response;
    boost::system::error_code error;
    std::string s1, s2;
    if (boost::asio::read(port, response, boost::asio::transfer_at_least(0), error)) {
        s1 = streambuf_to_string(response);
        int msg_code = s1[0];
        if (msg_code < 0 || msg_code >= NUM_MESSAGES) {
            // Handle error, invalid message header
        }
        if (boost::asio::read(port, response, boost::asio::transfer_at_least(message_lengths[msg_code]-s1.length()), error)) {
            s2 = streambuf_to_string(response);
            // Handle the content of s1 and s2
        }
        else if (error != boost::asio::error::eof) {
            throw boost::system::system_error(error);
        }
    }
    else if (error != boost::asio::error::eof) {
        throw boost::system::system_error(error);
    }
} …
Run Code Online (Sandbox Code Playgroud)

c++ serial-port streambuf boost-asio

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

如何在std :: set <int*>中找到const int*?

首先,我有一套

std::set<int*> my_set;
Run Code Online (Sandbox Code Playgroud)

然后,我有一个函数来检查一个特定的int指针是否p存在my_set,只有true当指针存在于其中时才会返回,false否则.

由于引用的函数不会修改int,很自然地把指针作为const int*,那就是

bool exists_in_my_set(const int* p)
{
    return my_set.find(p) != my_set.end();
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译代码时,我收到以下错误:

error: invalid conversion from 'const int*' to 'std::set<int*>::key_type {aka int*}' [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

换句话说,编译器会在我调用时尝试将其const int*转换为.int*find

不管怎样,我的问题是:我如何才能找到pmy_set,或至少找出是否p存在my_set与否,使用的现有定义pmy_set

c++ templates pointers const find

6
推荐指数
2
解决办法
747
查看次数

如何用Qt Creator编译一个简单的OpenCL应用程序?

我正在尝试使用Qt Creator,在Windows 7 64位和英特尔SDK for OpenCL Applications 2013上编译以下C++代码:

#include <utility>
#define __NO_STD_VECTOR // Use cl::vector instead of STL version
#include <CL/cl.hpp>

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的.pro文件:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/C:/Program1/Intel/OpenCL_SDK/3.0/lib/x64/ -lOpenCL
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/C:/Program1/Intel/OpenCL_SDK/3.0/lib/x64/ -lOpenCLd
else:unix: LIBS += -L$$PWD/C:/Program1/Intel/OpenCL_SDK/3.0/lib/x64/ -lOpenCL

INCLUDEPATH += C:/Program1/Intel/OpenCL_SDK/3.0/include
DEPENDPATH += $$PWD/C:/Program1/Intel/OpenCL_SDK/3.0/include
Run Code Online (Sandbox Code Playgroud)

我不得不删除$$PWD/(由于某些未知原因将Qt Creator添加到每个路径的开头)INCLUDEPATH,否则编译器将找不到CL/cl.cpp.

无论如何,在尝试编译时,我收到以下错误消息:

In file included from ..\opencl_test\main.cpp:3:0: …
Run Code Online (Sandbox Code Playgroud)

intel opencl permission-denied qt-creator windows-7-x64

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

如何从桌面图标通过Cygwin启动带有GUI的GNU Octave?

由于GNU Octave自3.8.0版以来就带有GUI,我想我应该检查一下.

所以,因为我运行Windows和只能找到八度3.8 Cygwin的,我安装了Cygwin和包装octave,xinit,xlaunchgnuplot(根据该页面,但如果需要所有这些软件包我不知道).

然后,当尝试使用来自Cygwin的GUI启动Octave时octave --force-gui,我最初得到了错误消息

octave: X11 DISPLAY environment variable not set
Run Code Online (Sandbox Code Playgroud)

和Octave将以控制台模式启动.所以我找到了这个页面,告诉我要运行

echo "export DISPLAY=:0.0" >>~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

从Cygwin,永久摆脱错误信息,这是有效的.但是,然后我得到此错误消息:

octave: unable to open X11 DISPLAY
Run Code Online (Sandbox Code Playgroud)

同一页面还说你必须通过转到Start - > Cygwin-X - > XWin Server来运行X Server.这工作,但由于我不希望xterm终端启动,因为它不需要,我发现这个页面告诉我运行

touch ~/.startxwinrc
Run Code Online (Sandbox Code Playgroud)

从Cygwin创建一个空.startxwinrc文件,以防止xtrem终端默认启动,这有效.同一页面还提到可以使用该命令直接从Cygwin启动X Server startxwin.

所以,现在我可以使用Cygwin的GUI启动Octave,只需运行即可

startxwin
octave --force-gui
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够双击桌面图标以启动并运行所有内容.

所以,对于我的问题: 我可以以某种方式把它放在一个脚本文件中,当我运行它时,将在Cygwin中打开,以便脚本文件中的命令将在Cygwin中运行?在Octave终止后,有没有办法自动关闭X服务器?我已经尝试编写一个文件octave.bat,它启动Cygwin并提供第二个批处理文件作为参数,而后者又包含我想要执行的命令.但是当我运行第一个脚本时,我只是被命令提示(而不是Cygwin提示)轰炸,而且所有人都说

'startxwin' is not recognized as an internal or external command, operable program …
Run Code Online (Sandbox Code Playgroud)

windows user-interface cygwin batch-file octave

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

pickle.load 中的 UnicodeDecodeError

我在使用 pickle 加载 pkl 文件时遇到一些问题。我使用的是 Windows 7 和 Python 3.5.1 64 位。pkl 文件是从这里下载的。

这是我的代码:

import pickle

# Load model weights and metadata
weightFile = open('vgg16.pkl', 'rb')
d = pickle.load(weightFile)
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到输出

"C:\Program Files\Python35\python.exe" C:/work/lasagne/tutorial/lasagne-tutorial2.py
Traceback (most recent call last):
  File "C:/work/lasagne/tutorial/lasagne-tutorial2.py", line 5, in <module>
    d = pickle.load(weightFile)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbc in position 1: ordinal not in range(128)

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

这个错误信息是什么意思?它说有一个 acsii 编解码器无法解码的字节,但是 pkl 文件不应该是二进制的(因此不包含 ascii 字符)吗?

我加载文件时做错了什么吗?我可以做什么来修复该错误?

pickle non-ascii-characters windows-7 python-3.5

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

CMake 无法检测 Git 版本

当我运行 cmake (为了在 Windows 上构建 TensorFlow)时,我收到错误消息

\n\n
CMake Error at C:/Program Files/CMake/share/cmake-3.8/Modules/ExternalProject.cmake:1811 (message):\n  error: git version 1.6.5 or later required for \'git submodule update\n  --recursive\': GIT_VERSION_STRING=\'\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

在第 1810\xe2\x80\x931812 行,ExternalProject.cmake我有以下几行:

\n\n
    if(GIT_VERSION_STRING VERSION_LESS 1.6.5)\n      message(FATAL_ERROR "error: git version 1.6.5 or later required for \'git submodule update --recursive\': GIT_VERSION_STRING=\'${GIT_VERSION_STRING}\'")\n    endif()\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我看不到GIT_VERSION_STRING分配到哪里。无论如何,它似乎GIT_VERSION_STRING未分配或分配了空字符串或类似的东西。这使得 CMake 无法检测我的 Git 版本。

\n\n

我有 Git 并且git --version给出了

\n\n
git version 2.12.2.windows.2\n
Run Code Online (Sandbox Code Playgroud)\n\n

任何人都知道对此错误可以采取什么措施?

\n

git cmake

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

如何指定从本地Web服务器运行哪个reveal.js演示文稿?

根据reveal.js 设置说明,对于某些可用的功能(如外部Markdown和演讲者注释),演示文稿需要从本地Web服务器运行.

但是,如果我按照说明操作,则无法指定要开始的演示文稿,我得到的是一个包含两张幻灯片的演示文稿"幻灯片1"和"幻灯片2".查看上面部分时,似乎是在reveal.js存储库中显示的是"index.html",即不是我想要呈现的表示.

如何从本地Web服务器运行演示文稿而不将reveal.js文件夹的内容复制或移动到我的演示文稿所在的文件夹中,而无需复制,移动或重命名演示文稿?

node.js reveal.js

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