小编341*_*008的帖子

使用C/C++在iOS中写入文件

是否可以在iOS中使用C/C++调用创建文本文件?那么可以从应用程序外部打开和读取文件吗?也就是说,应用程序A在某个地方创建一个文本文件,它有权写入,然后应用程序B从中读取.或者,忘记应用程序B,我可以打开它并阅读吗?

c c++ file-io ios

8
推荐指数
2
解决办法
6143
查看次数

导致Gtk中断断言

我必须调试一个严重依赖于Gtk的程序.问题在于,由于某些原因,在处理GtkWindow对象时已经开始出现许多运行时警告.问题是,即使Gtk抱怨严重错误,它也不会中止这些错误.我没有代码库的更改历史记录,所以我唯一的选择似乎是涉及所有似乎可疑的gtk调用并查看问题所在.但是,如果我可以以某种方式导致Gtk中止此错误,我可以使用gdb运行它并尝试获取回溯并找到错误的确切位置.知道如何做到这一点?

GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject'
GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)' failed
GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject'
GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)' failed
GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject'
GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)' failed
Run Code Online (Sandbox Code Playgroud)

c gtk warnings gdb

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

std :: vector :: erase(item)是否需要为item定义赋值运算符?

我有一个C没有定义的类operator=.我试图使用这样的矢量:std::vector<std::pair<C,D>> vec;.现在,我的问题是,在我完成它之后,我无法擦掉它.编译器会抱怨缺少operator=C.我可以没有没有此运算符的类的向量吗?我该如何解决这个问题?我无法添加作业C.这是我得到的错误:

error C2582: 'operator =' function is unavailable in 'C'    C:\...\include\utility  196 1   my-lib
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

void Remove(const C& c) 
{
    auto i = cs_.begin();
    while( i != cs_.end()) {
        if (i->first == c) {
            cs_.erase(i);  // this is the problem
            break;
        }
        i++;
    }
 }
Run Code Online (Sandbox Code Playgroud)

在哪里cs_:

std::vector<std::pair<C,D>> cs_;
Run Code Online (Sandbox Code Playgroud)

c++ operators stdvector visual-studio-2012

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

写llvm字节码

我刚刚发现了LLVM,但对它还不太了解.我一直在浏览器中使用llvm尝试它.我可以看到我写的任何C代码都转换为LLVM字节代码,然后转换为本机代码.该页面显示了字节代码的文本表示.例如,对于以下C代码:

int array[] = { 1, 2, 3};

int foo(int X) {
  return array[X];
}
Run Code Online (Sandbox Code Playgroud)

它显示以下字节代码:

target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-linux-gnu"

@array = global [3 x i32] [i32 1, i32 2, i32 3]   ; <[3 x i32]*> [#uses=1]

define i32 @foo(i32 %X) nounwind readonly {
entry:
  %0 = sext i32 %X to i64                         ; <i64> [#uses=1]
  %1 = getelementptr inbounds [3 x i32]* @array, i64 0, i64 %0 ; <i32*> [#uses=1]
  %2 = …
Run Code Online (Sandbox Code Playgroud)

bytecode llvm

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

使用boost :: shared_ptr以及稍后替换它的视图

我正在研究需要共享指针的跨平台代码.由于我无法控制的原因,我们还不能使用C++ 11.所以,我建议使用boost :: shared_ptr.当我们采用C++ 11(也许是一年后),我们应该能够用std智能指针替换boost智能指针.我的问题是关于使用boost的最佳方法,以便以后更容易切换.模板别名不可用,因此以下内容如下:

namespace my {
    template <typename T>
    using shared_ptr = boost::shared_ptr<T>;
}
Run Code Online (Sandbox Code Playgroud)

将shared_ptr包装在另一个struct中的另一种技术导致丑陋且不可读的API,因为我将不得不使用它my::shared_ptr<int>::type:

 namespace my  {
     template<typename T>
     struct shared_ptr
     {
          typedef boost::shared_ptr<T> type;
     };
 }
Run Code Online (Sandbox Code Playgroud)

我正在寻找替代方案.任何建议将不胜感激.

编辑:我考虑的另一个选择是:

namespace my {
     using boost::shared_ptr;
}
Run Code Online (Sandbox Code Playgroud)

然后使用my::shared_ptr<int>.后来我会改变boost,以stdnamespace my.但是,我无法决定每种做出决定的方法的原则和结果.

c++ boost shared-ptr template-aliases

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

Spring Bean 实现多个接口

我有一个实现两个接口的 bean。准系统代码如下:

interface InterfaceA {
  ...
}

interface InterfaceB {
  ...
}

public class ClassC implements InterfaceA, InterfaceB {
  ...
}
Run Code Online (Sandbox Code Playgroud)

在我的 AppConfig 中,我指定以下内容:

@Bean(name = "InterfaceA")
public InterfaceA interfaceA() {
    return new ClassC();
}

@Bean(name = "InterfaceB")
public InterfaceB interfaceB() {
    return new ClassC();
}
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

public class MyClass {

    @Inject
    private final InterfaceA a;

    public MyClass(@Named("InterfaceA") InterfaceA a) {
        this.a = a;
    }
     ...
}
Run Code Online (Sandbox Code Playgroud)

然而,Spring 抱怨说:

未定义类型 [com.example.InterfaceA] 的合格 bean:预期有单个匹配 bean,但发现 2:InterfaceA、InterfaceB

类似的问题在这里被问到并回答了 EJB ,但我找不到 Spring …

java spring dependency-injection inject

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

分布式定时器服务

我正在寻找分布式计时器服务。多个远程客户端服务应该能够在指定的时间间隔后注册回调(通过 REST api)。间隔的长度可以是 1 分钟。我可以忍受大约 1 分钟的误差。此类回调的数量目前可以达到 100,000,但我以后需要扩大规模。我一直在寻找类似的调度程序,Quartz但我不确定它们是否适合这个问题。使用Quartz,我可能不得不将回调请求保存在数据库中,并每分钟轮询 100,000 行的过期请求。我不确定这会扩大规模。是否有任何开箱即用的解决方案?否则,我该如何建造一个?

distributed distributed-computing quartz-scheduler

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

免费应用程序客户端许可证有效性检查的 LVL 行为

我开发了一款游戏,打算使用 Android LVL 和默认许可策略将其作为付费应用程序发布ServerManagedPolicy。现在,当局决定我们必须将其作为免费应用程序发布。由于某种原因,我不想删除/禁用许可证检查。我的问题是:许可服务如何处理免费应用程序?检查总是失败还是总是通过?有什么方法可以让许可证服务接受我的免费应用程序的任何安装许可吗?

我在官方文档中找到了有关免费应用程序的以下内容,但是,它对我没有多大帮助。

Only paid applications published through Market can use the service.[...] Licensing is currently for paid apps only, since free apps are considered licensed for all users.

我本以为检查会失败,但是,我记得在某处读到,对于免费应用程序,许可服务器将返回一个非常大的有效性时间戳(long.MAX),确保许可证对于免费应用程序始终有效。不幸的是,我丢失了该来源的链接。

注意:问题并不像听起来那么疯狂。只是我无法在不泄露一些专有信息的情况下进一步解释我的用例。

android android-lvl google-play

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

用于发布版本的dSYM文件

.dSYM资源是否包含除DWARF信息之外的任何其他信息?我创建了一个应用程序的发布版本.现在,如果我运行dwarfdump它,它说可执行文件没有DWARF信息(说它是"空"),这是我所期望的.但是,如果我然后运行dsymutil它,它会创建非空符号文件.这些是二进制文件,所以我不知道它们是什么.任何人都可以启发我吗?这些文件有没有观众?

dwarf symbolicate gcc4 ios

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

跨越聚合边界的交易

我有以下域建模问题,我似乎最终要么跨越一致性边界或创建一个巨大的聚合.有人可以帮我分手吗?

有两种作业类型JobA,JobB.JobA由任务组成TaskA.JobB由任务组成TaskB.JobA并且JobB是无关的.它们之间唯一共同点是它们都需要设备资源.我本来想创建5个聚合根,它们可以互相JobA引用- 将参考TaskA等等.

领域模型

我可以将一份工作及其任务集中在一起.这是以引入其他开销为代价的,因为任务本身就是复杂的生物.但是,以下约束阻止我使用任一模型.

  1. 如果任何任务仍未完成,则无法将作业标记为完成.此检查会导致事务跨越聚合边界(例如,TaskAJobA).
  2. 设备不能分配给1个以上的作业.此检查将跨越两个作业聚合.
  3. 必须在工作标记完成之前释放设备.此交易将跨设备和工作总计.

只有一个聚合会将所有交易放在边界内,但这会使得总量不可能大.是否有一个隐藏在这一切中的不同模型我错过了?

domain-driven-design transactions aggregateroot domain-model

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