小编ytg*_*ytg的帖子

从Boost Geometry多边形获取点的坐标

我有一个简单的DLL用Boost Geometry多边形做一些计算.(主要是交叉点和差异.)因为DLL很可能是从C#代码调用的,而且是从Delphi调用的,我应该将结果转换为所有可以处理的数组.

更新: 我已经简化并稍微纠正了我的代码.新代码看起来完全不同,使用完全不同的方法(for_each_point),并且仍然不能编译.

我的新代码:

#include <vector>
#include <boost/range.hpp>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>

using namespace boost::geometry;

typedef boost::geometry::model::point
    <
        double, 2, boost::geometry::cs::spherical_equatorial<boost::geometry::degree>
    > spherical_point;
class PointAggregator {
private :
    double *x, *y;
    int count;

public :
    PointAggregator(int size) {
        x = (double*) malloc(sizeof(double) * size);
        y = (double*) malloc(sizeof(double) * size);
        count = 0;
    }

    ~PointAggregator() {
        free(x);
        free(y);
    }

    inline void operator()(spherical_point& p) {
        x[count] = get<0>(p);
        y[count] = get<1>(p);
        count++;
    }

    void GetResult(double *resultX, double *resultY) …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-geometry

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

部分崩溃的应用程序?如何捕获无法捕获的异常?

我有一个用C#编写的程序,在Windows CE设备上运行(在Compact Framework上).它处理最少的用户操作(按钮点击),使用串行端口和TCP/IP通信.

问题是有时软件会自行关闭.在后台,应用程序(或应用程序的某些部分)似乎仍在运行(至少在一个记录的情况下),因为它使用串行端口,因此重新启动应用程序没有帮助.我不能重现这个问题,因为它发生在大多数情况下,当没有用户交互,没有串口通信和网络通信都是"我还活着"的消息时,软件看似没有理由崩溃.(我尝试在调试模式下实现它,至少知道代码中的问题在哪里,如果它是一个软件错误,但到目前为止我没有运气.)

由于我的想法不足,问题是:什么错误或异常或操作系统操作或硬件故障会导致这样的行为?

在同一类型的不同设备上已经出现了这个问题,因此它不应该是硬件错误.(或者我的所有硬件都有相同的错误.)处理异常,因此它不应该是一个例外.处理未处理的异常也是如此,因此它也不应该是未处理的异常.(我的猜测是它是由a引起的,StackoverflowException因为我不知道任何其他无法捕获的异常,但代码中没有递归,至少不是自愿的,所以它不应该是可能的.)

c# compact-framework windows-ce

9
推荐指数
1
解决办法
4135
查看次数

使用声纳忽略一条线

声纳抱怨一条线。

Thread.sleep(SLEEP_TIME); // NOSONAR
Run Code Online (Sandbox Code Playgroud)

它的问题是

不应在测试中使用“Thread.sleep”

在测试中使用 Thread.sleep 通常是一个坏主意。它创建了脆弱的测试,可能会根据环境(“通过我的机器!”)或负载而无法预测地失败。

这是有道理的,这应该被修复。但我的问题是:为什么NOSONAR零件在这里没有任何影响?它似乎适用于使用它的代码的其他部分,例如

public static final String PASSWORD_FILE_NAME = "secret.txt"; // NOSONAR
Run Code Online (Sandbox Code Playgroud)

它不再抱怨代码中有硬编码密码。那么为什么它不适用于Thread.sleep()案例呢?

我可以在 SonarQube 和 IntelliJ 的 SonarLint 插件中看到这个问题。

sonarqube

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

使用REXML获取节点名称

我有一个XML,可以是

<?xml version="1.0" encoding="utf-8"?>
<testnode type="1">123</testnode>
Run Code Online (Sandbox Code Playgroud)

或者喜欢

<?xml version="1.0" encoding="utf-8"?>
<othernode attrib="true">other value</othernode>
Run Code Online (Sandbox Code Playgroud)

或者根节点可能是完全出乎意料的.(理论上任何东西.)我正在使用REXML来解析它.如何找出哪个XML节点是根元素?

ruby rexml

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

How to pass build flags like `--with-ruby-include` to gem install?

(I know that my Ruby installation is a bit messed up, but:) I'm trying to install a native gem and it gives me an error

ytg@yui:~> sudo /usr/bin/ruby.ruby2.3 /usr/bin/gem install ruby-debug-ide
Building native extensions.  This could take a while...
ERROR:  Error installing ruby-debug-ide:
    ERROR: Failed to build gem native extension.

    current directory: /usr/lib64/ruby/gems/2.3.0/gems/ruby-debug-ide-0.6.0/ext
/usr/bin/ruby.ruby2.3 mkrf_conf.rb
Installing base gem
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
ERROR: Failed to build gem native …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems

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

如何找出最佳线程数量?

我打算制作一个像网络连接一样的对等软件.通常我会为每个连接创建一个自己的线程来发送和接收数据,但在这种情况下,有300-500 +连接,这意味着不断创建和销毁很多线程,这将是一个很大的开销我猜.并且制作一个顺序处理所有连接的线程可能会减慢一些事情.(我对此不太确定.)

问题是:有多少线程可以处理这类问题?是否有可能在软件中进行计算,以便它可以决定在旧计算机上创建更少的线程,而没有更多的资源和更多的新资源?

这是一个理论问题,我不想让它实现或依赖于语言.但是我认为很多人都会建议像"只使用一个ThreadPool,它会处理类似的东西"所以让我们说它不会是一个.NET应用程序.(我可能不得不在旧的Delphi项目中使用代码的其他部分,因此语言可能是Delphi或C++,但还没有决定.)

multithreading

0
推荐指数
1
解决办法
2900
查看次数