在Android ndk / jni中使用C ++

所有的ndk样本只使用头文件中声明为extern的基本C函数,并在cpp文件中定义。 然后在包含jnicallback的C文件中包含头文件后,一切正常。 有没有可能使用android ndk的C + +类? 我的应用程序不会是一个本地的活动,它仍然有一个重要的Java部分,但它会调用CPU密集型计算的本地C代码(已经用C ++编写,有类和其他C ++的东西)。 这里是我的你好,像现在strcuture世界: 文件“first.h” #ifndef FIRST_H #define FIRST_H class Test {}; #endif /* FIRST_H */ 文件“second.cpp” #include <jni.h> #include "first.h" #ifdef __cplusplus extern "C" { #endif jint Java_com_example_twolibs_TwoLibs_add( JNIEnv* env, jobject this, jint x, jint y ) { Test t; return 0; } #ifdef __cplusplus } #endif 最后是Android.mk […]

用于处理列表的C#asynchronous选项

我想更好地理解我在C#中使用的asynchronous和并行选项。 在下面的片段中,我列出了我遇到的最多的5种方法。 但是我不确定要select哪一个,或者更好,在select时要考虑什么标准: 方法1:任务 (请参阅http://msdn.microsoft.com/en-us/library/dd321439.aspx ) 调用StartNew在function上等价于使用其中一个构造函数创build一个Task,然后调用Start来计划执行。 但是,除非创build和调度必须分开,否则S​​tartNew是简单性和性能的推荐方法。 TaskFactory的StartNew方法应该是创build和调度计算任务的首选机制,但是对于必须将创build和调度分离的情况,可以使用构造函数,然后可以使用任务的Start方法将任务调度为稍后执行时间。 // using System.Threading.Tasks.Task.Factory void Do_1() { var _List = GetList(); _List.ForEach(i => Task.Factory.StartNew(_ => { DoSomething(i); })); } 方法2:QueueUserWorkItem (请参阅http://msdn.microsoft.com/en-us/library/system.threading.threadpool.getmaxthreads.aspx ) 您可以按照系统内存允许的方式排队多个线程池请求。 如果有比线程池线程更多的请求,则附加请求保持排队,直到线程池线程可用。 您可以将排队方法所需的数据放入定义方法的类的实例字段中,也可以使用接受包含必要数据的对象的QueueUserWorkItem(WaitCallback,Object)重载。 // using System.Threading.ThreadPool void Do_2() { var _List = GetList(); var _Action = new WaitCallback((o) => { DoSomething(o); }); _List.ForEach(x => ThreadPool.QueueUserWorkItem(_Action)); […]

UIImage方面适合并alignment顶部

它看起来像aspect fit默认情况下图像alignment框架的底部。 有没有办法来覆盖alignment,同时保持aspect fit完好? **编辑** 这个问题早于自动布局。 事实上,在这个问题被问到的同一个星期,WWDC在2012年展示了自动布局

如何有效地架起台球8球游戏?

由于八球比赛的撞球可以在多种规则下完成,下面是我所说的撞球: 即8球必须在中心,沿着两侧的条纹和固体必须交替。 剩下的两个球(条纹和实心)并不重要。 假设你刚刚完成了一场比赛,收集球,把它们放在架子上,并继续安排他们开始一个新的。 他们现在是随机的顺序。 你如何继续? 免责声明:油漆艺术如下 一个简单的方法是按顺序开始,顶部 – >底部和左 – >右。 所以举个例子,我们假设1在正确的位置。 5不是,我们把它换成2 ,然后我们把4换成3 (或8 ),但是这样做已经是效率低下了,因为我们已经把4移到了中心位置,或者把4移到了4的位置 – 也就是不是它必须在哪里结束。 也有决定哪些types的球我们想要在angular落里被做。 你如何决定这个前期? 你应该考虑到已经有多less球? 在我的例子中,如果你想要灰色的angular落,你已经有3个(球1,10,14)。 如果你想要在angular落里的白色的,你只有2个在位(2,11)。 这件事情呢? 为了使这个正式化,我们可以假设有这个 二 我们可以做三个操作: 交换两个相邻的球 交换两个不相邻的球 旋转机架 既然我们可以用双手,假设我们可以平行第一个操作(同时交换两个球),而我们一次只能交换两个不相邻的球。 什么方法最适合这个任务,以最小化时间(以所描述的时间单位)? 贪婪是最好的吗? (我想我是这样做的,当我把它们架起来的时候) 编辑:根据现有的(或以前的答案) – 你可能会认为有更多的条纹比实体的angular落意味着步伐会喜欢angular落 – 并不是说​​这是不正确的,但如果你做出这个假设,请certificate。

通过排列四个给定的数字来查找最大可能时间HH:MM

我最近在工作上进行了一次编码testing。 这是我真正努力的任务之一,并想知道什么是最好的方法来做到这一点。 我用了一些if和if,不是最干净的解决scheme,而是完成了工作。 我被问到的问题是: 将4位数字格式化为24小时制(24小时制),find可能的最大(最新)时间,考虑到最长时间为23分钟,最长分钟数为59分钟。如果不可能,则返回NOT POSSIBLE。 举个例子: 6,5,2,0将是20:56 3,9,5,0将是09:53 7,6,3,8将是不可能的 必须返回时间或string的示例函数看起来像这样,A,B,C,D是与上面逗号分隔列表不同的数字: function generate(A, B, C, D) { // Your code here } 人们将如何解决这个问题?

我怎样才能从资源获取BitmapImage?

我的程序集包含BuildAction == Resource的图像。 我想从这个embedded式资源获取一个BitmapImage。 我可以像这样从文件加载一个BitmapImage: var bitmap = new BitmapImage(new Uri(path)); 但是,如何创build一个将引用embedded式资源图像的Uri? 当我尝试创build“ pack URI ”(例如pack://application:,,,/MyImage.png或pack://application:,,,/MyAssembly;component/MyImage.png )时,会引发exception: System.UriFormatException“无效的URI:因为存在冒号(':')而期望端口,但是端口不能被分析。 我发现修复,在这篇博客文章的UriFormatException 但是,应用该修复程序,我仍然收到exception,尝试从pack URI中加载BitmapImage。 当使用pack://application:,,,/Image.png格式时,我得到一个NullReferenceException,并且在使用pack://application:,,,/AssemblyName;component/Image.png格式时,我得到一个NotSupportedException “Uri前缀不被识别”。 总结我的问题是,我正在尝试在任何WPF控件/窗口/ etc被实例化之前在一个进程中使用“pack URI”,所以“pack”URIscheme还没有注册(其他WPF所需的东西也必须不要太设置,因为手动注册包scheme本身并不能解决问题)。 解决scheme是等到实例化我的WPF usercontrol使用包URI。

build议loggingJSON API?

是否有任何公认的标准或最佳做法来logging一组JSON API? 做了一些周围的search,似乎有点风格/格式的混杂。 也许在这方面做得太大了…在某种程度上,文档是docs,但是我想问一下。

Rscript和littler之间的区别

…除了Rscript在#!/usr/bin/env Rscript脚本文件的第一行用#!/usr/bin/env Rscript和#!/usr/bin/env Rscript用#!/usr/local/bin/r (在我的系统上)调用。 我发现在执行速度方面有一定的差异(看起来像小鱼慢一点)。 我创build了两个虚拟脚本,每运行1000次,比较平均执行时间。 这是Rscript文件: #!/usr/bin/env Rscript btime <- proc.time() x <- rnorm(100) print(x) print(plot(x)) etime <- proc.time() tm <- etime – btime sink(file = "rscript.r.out", append = TRUE) cat(paste(tm[1:3], collapse = ";"), "\n") sink() print(tm) 这里是小文件: #!/usr/local/bin/r btime <- proc.time() x <- rnorm(100) print(x) print(plot(x)) etime <- proc.time() tm <- etime […]

为什么在使用ARC + NSZombieEnabled时不会释放对象

我将我的应用程序转换为ARC,并注意到在视图控制器被释放时,在我的一个视图控制器中分配的一个对象没有被解除分配。 花了一段时间才弄明白为什么。 我在debugging过程中为我的项目启用了“僵尸对象”,事实certificate这是事实。 考虑下面的应用程序逻辑: 1)用户调用RootViewController中的动作,使SecondaryViewController被创build并通过presentModalViewController:animated呈现presentModalViewController:animated 。 2) SecondaryViewController包含一个ActionsController ,它是一个NSObject子类。 3) ActionsController在初始化时通过NSNotificationCenter观察一个通知,当它被解除分配时停止观察。 4)用户closuresSecondaryViewController返回到RootViewController 。 启用僵尸对象closures,上述工作正常,所有的对象被释放。 使用ActionsController上的启用僵尸对象不会解除分配,即使SecondaryViewController被释放。 这导致我的应用程序b / c中的问题NSNotificationCenter继续发送通知给ActionsController和结果处理程序导致应用程序崩溃。 我创build了一个简单的应用程序来说明这个在https://github.com/xjones/XJARCTestApp 。 查看与启用僵尸对象控制台日志开/关来validation这一点。 问题(S) 这是启用僵尸对象的正确行为? 我应该如何实现这种types的逻辑来消除这个问题。 我想继续使用启用僵尸对象。 编辑#1:根据凯文的build议,我已经提交给苹果和openradar在http://openradar.appspot.com/10537635 。 编辑#2:澄清一个很好的答案 首先,我是一名经验丰富的iOS开发人员,我完全了解ARC,僵尸对象等。如果我错过了某些东西,当然,我很欣赏任何照明。 其次,对于此特定崩溃的解决方法是,当secondaryViewController被释放时,将observer作为观察者移除。 我也发现,如果我明确地设置actionsController actionsController = nil当secondaryViewController dealloc'ed它将被dealloc'ed。 这两个都不是很好的解决方法B / C他们实际上要求您使用ARC,但代码,如果您不使用ARC(例如显式dealloc中的零iVars)。 一个特定的解决scheme也无助于确定何时这将成为其他控制器中的问题,因此开发人员可以确定何时/如何解决此问题。 一个好的答案可以解释如何确定性地知道在使用ARC + NSZombieEnabled时需要对某个对象做些特殊的事情,这样就可以解决这个具体的例子,并且也可以将整个项目作为一个整体应用,而不用再为其他类似项目问题。 完全有可能没有好的答案,因为这可能是XCode中的一个错误。 感谢所有!

路由53指向一个实例,而不是IP或CNAME?

我们使用Route 53 DNS来指向一个EC2实例。 有没有办法让Route 53直接指向实例,而不是弹性IP或CNAME? 我有多个原因: 我不想刻录IP。 CNAME是不可靠的,因为如果一个实例出现故障并恢复,那么全名ec2-XXXX.compute-1.amazonaws.com将会改变。 在将来,我需要以编程方式启动实例,并使用子域来解决这些实例,并且我发现使用弹性IP或CNAME来做到这一点并不容易。 什么是最好的方法?