小编Rya*_*ing的帖子

DBus .service 文件丢失

我正在dbus根据自己的需求构建定制服务,并希望它在有人需要时自动启动。为此,我创建了这样的.service文件

[D-Bus Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser
Run Code Online (Sandbox Code Playgroud)

在这里,我只是更改了服务和可执行文件的实际名称,但这不是重点。我已经仔细检查过真实姓名 - 它完全匹配。我已将此文件放在名为 com.mycompany.servicename.service 的 /usr/share/dbus-1/services 文件夹中(我使用的是 Ubuntu 11.10)可执行文件x对每个人都有权限。这就是问题所在 - 当我尝试启动执行

bus = dbus.SessionBus()
bus.get_object('com.mycompany.servicename','/path/to/object')
Run Code Online (Sandbox Code Playgroud)

我得到 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name com.mycompany.servicename was not provided by any .service files

'/path/to/object'服务启动后立即注册带有路径的对象。我就是不明白为什么dbus找不到我的.service文件。也许我错过了什么?有任何想法吗?

编辑 我设法让 D-BUS 自动启动我的脚本。.service文件的部分应该被命名[D-BUS Service]而不是[D-Bus service]

python linux ubuntu dbus ubuntu-11.10

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

二维空间中的最短路径和分类点

假设我在二维空间中有一个对象,以及一组我需要该对象访问的点.积分可以随时添加,但不能删除.

我想要的是能够确定我的对象在O(lg(n))时间内的下一个最近点,然后转到它,然后确定下一个最接近的等等.

简单的优先级队列对此不起作用,因为对象正在改变位置,因此每次移动时都需要重新排列队列.我想象的是以某种方式将点分类为BST,但我不确定如何对(x,y)进行排序或者是否可能.

这感觉就像我可以试图解决旅行推销员而没有意识到,如果是这样,我道歉哈哈.

sorting algorithm tree shortest-path graph-algorithm

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

如何在另一个C++程序中运行C++程序?

我将描绘我想在下面工作的场景.

我有一个主要的应用程序.该应用程序基于用户交互,可以在安全环境/ shell中加载其他应用程序.这意味着这些子应用程序不再与操作系统交互,也不能相互交互.

父程序可以随时调用这些子程序的功能.子程序可以随时调用这些父程序的功能.

有谁知道如何在C++中实现它?最好父母和孩子都应该用C++编写.

在父应用程序中加载子应用程序的性能无关紧要.唯一重要的是在调用彼此的功能时,孩子和父母之间的沟通表现.

c++ linux shell

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

实习字符串,字符串池和perm空间上的垃圾收集

在探索了java的字符串内部结构后,我对所谓的"烫发空间"感到困惑.我最初的理解是它保留了String 文字以及类元数据,如本问题所述.

我还阅读了有关该String.intern()方法的内容,并将其String放入String Pool中,返回对它的唯一实例的引用.我的理解是,这是与JVM的perm空间中存在的字符串文字相同的字符串池.对我来说,"烫发空间"可以修改是不可能的(毕竟它是永久性的,是吗?).但后来我发现这个问题,EJP对接受的答案的最高投票评论解释了这一点

现在,实习生的字符串已经可以用GC了.

暗示GC在perm空间上运行,这似乎不是永久性的.这如何调和?GC是否检查了烫发空间中的所有内容?GC是否检查字符串池中的所有内容,包括源中的字符串文字?内联字符串是否有第二个字符串池?GC是否只知道在收集时查看实习生的字符串?或者这个评论是错误的并且实际上是一个字符串阻止它成为GC'd(我希望不是这种情况)?

java string garbage-collection jvm string-interning

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

通过void修改任何数据指针是否合法**

通过void **?访问指针类型是否合法?

我查看了指针别名的标准引用,但我仍然不确定这是否是合法的C:

int *array;
void **vp = (void**)&array;
*vp = malloc(sizeof(int)*10);
Run Code Online (Sandbox Code Playgroud)

琐碎的例子,但它适用于我所看到的更复杂的情况.

似乎它不合法,因为我int *通过一个类型不是int *或的变量来访问它char *.我不能就此得出一个简单的结论.

有关:

c pointers strict-aliasing

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

计算两次android之间的差异

我正在开发和Android应用程序,我需要计算两次之间的差异.我需要计算24小时的时差,以及两天的时间差(例如今天下午5点到明天上午9点).

我尝试了以下代码,计算仅适用于24小时的差异,

String dateStart = "08:00:00";
String dateStop = "13:00:00";

//HH converts hour in 24 hours format (0-23), day calculation
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");

Date d1 = null;
Date d2 = null;

try 
{
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);

    //in milliseconds
    long diff = d2.getTime() - d1.getTime();
    long diffHours = diff / (60 * 60 * 1000) % 24;
    Log.e("test",diffHours + " hours, ");
}
catch (Exception e) 
{
    // TODO: handle exception
} 
Run Code Online (Sandbox Code Playgroud)

java time android date simpledateformat

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

std :: memcmp可以读取超过第一个差异的任何字节吗?

考虑:

constexpr char s1[] = "a";
constexpr char s2[] = "abc";
std::memcmp(s1, s2, 3);
Run Code Online (Sandbox Code Playgroud)

如果memcmp在它看到的第一个差异处停止,它将不会读取超过s1的第二个字节(nul终止符),但是我没有在C标准中看到任何确认此行为的内容,并且我不知道任何内容扩展它的C++.

n1570 7.24.4.1 PDF链接

int memcmp(const void *s1, const void *s2, size_t n);

memcmp函数将n指向的对象的第一个字符与指向的对象s1的前n个字符进行比较s2

我的理解是正确的,标准将行为描述为读取n两个参数的所有字节,但是库可以短路 - 如果它们一样?

c++

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

requests.get 大文件,下载不完整但找不到错误指示

我正在尝试使用与此答案相同的技术使用请求来下载大文件(即 android cts zip 文件) 。间歇性地无法下载整个文件,但在我尝试解压缩文件之前,我找不到任何表明出现问题的迹象

CTS_URL = 'http://dl.google.com/dl/android/cts/android-cts-8.0_r14-linux_x86-x86.zip'
CTS_ZIP = 'android-cts-8.0_r14-linux_x86-x86.zip'

import requests

req = requests.get(CTS_URL, stream=True)
with open(CTS_ZIP, 'wb') as cts_zip_file:
  for chunk in req.iter_content(chunk_size=4096):
    cts_zip_file.write(chunk)
Run Code Online (Sandbox Code Playgroud)

稍后当我尝试解压缩时出现BadZipFile("File is not a zip file")错误,因为文件尚未完全下载

import zipfile
zipfile.ZipFile(CTS_ZIP)  # fails
Run Code Online (Sandbox Code Playgroud)

但是,我无法从请求对象中得到任何表明出现问题的指示。req.status伊斯兰200国。req.okTrue

req知道出了什么问题吗?目前,我在交互式提示中拥有这些请求对象之一,因此我可以进一步检查它。

python python-3.x python-requests

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

在 try-with-resources 中关闭动态数量的 AutoCloseable 对象

AutoCloseable我正在一个块中创建可变数量的对象try-with-resources。在任何退出点,我都希望关闭所有分配的资源。

我可以想象自己写一些东西来做到这一点,但是是否有一个类似于Python 的 contextlib.ExitStack 的现有实用程序可以关闭分配的资源?我希望它看起来像这样:

try (ExitStack exitStack = new ExitStack()) {
    List<Widget> widgets = new ArrayList<>();
    for (...) {
        widgets.add(exitStack.add(new Widget()));
    }
    // use widgets
}
Run Code Online (Sandbox Code Playgroud)

(注意:这不是这个问题,因为我不知道我会提前拥有多少资源。

嘿,亲密的选民,我不是在要求一个库,我是在问你如何完成安全关闭动态数量的任务AutoCloseable,如果有一个语言功能,那就太好了,如果有一个标准库函数,也很棒,如果我必须自己写,那很好。如果您推荐一个常用的包含此内容的第三方库,那么当然可以。

java java-8 try-with-resources autocloseable

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

Gold linker ld.gold -plugin:未知选项

我正在尝试按照入门步骤构建Google的ligjingle ,并且我已经到达了"Building"部分.

当我发出任何一个

ninja -C out/Debug
Run Code Online (Sandbox Code Playgroud)

要么

ninja -C out/Release
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: 如果您愿意,我也会在pastebin中发布输出

ninja -C out/Debug
ninja: Entering directory `out/Debug'
[3/2606] LINK genmacro
FAILED: cc -Wl,-z,now -Wl,-z,relro -Wl,--fatal-warnings -pthread -Wl,-z,noexecstack -fPIC -B/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin -Wl,--disable-new-dtags -m64 -Wl,--icf=none -fuse-ld=gold -Wl,--gdb-index -o genmacro -Wl,--start-group obj/third_party/yasm/source/patched-yasm/tools/genmacro/genmacro.genmacro.o  -Wl,--end-group 
/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold: -plugin: unknown option
/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold: use the --help option for usage information
collect2: error: ld returned 1 exit status
[3/2606] CC obj/net/third_party/nss/ssl/libssl.sslauth.o
ninja: build stopped: subcommand failed.
Run Code Online (Sandbox Code Playgroud)

我试过了

ld.gold --help | grep "plugin"
Run Code Online (Sandbox Code Playgroud)

得到了:

--plugin PLUGIN             Load …
Run Code Online (Sandbox Code Playgroud)

linker ld gold-linker

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