小编don*_*edo的帖子

在C/C++中获得正模数的最快方法

通常在我的内部循环中,我需要以"环绕"方式索引数组,因此如果数组大小为100并且我的代码要求元素-2,则应该给出元素98.在许多高级语言中作为Python,人们可以简单地使用my_array[index % array_size],但由于某种原因,C的整数运算(通常)向零舍入而不是一致向下舍入,因此当给定负的第一个参数时,其模运算符返回负结果.

通常我知道这index不会少于-array_size,在这些情况下我只是这样做my_array[(index + array_size) % array_size].但是,有时这无法得到保证,对于那些情况,我想知道实现始终为正模数函数的最快方法.有几种"聪明"的方法可以在没有分支的情况下完成,例如

inline int positive_modulo(int i, int n) {
    return (n + (i % n)) % n;
}
Run Code Online (Sandbox Code Playgroud)

要么

inline int positive_modulo(int i, int n) {
    return (i % n) + (n * (i < 0));
}
Run Code Online (Sandbox Code Playgroud)

当然,我可以对这些进行分析,以找出哪个是我系统中最快的,但我不禁担心我可能错过了一个更好的,或者我的机器上的速度可能在另一个机器上很慢.

那么有没有一种标准的方法可以做到这一点,或者一些我错过的聪明技巧可能是最快的方式?

此外,我知道这可能是一厢情愿的想法,但如果有一种方法可以自动矢量化,那将是惊人的.

c c++ performance

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

使用Android Studio调试C++库

我正在开发一个Android项目,该项目使用一个Java类库作为包装器C++.C++库是一个公司内部库,我们可以访问它的源代码,但在Android项目中它只是动态链接的,所以它只能以头文件(.h)和共享对象(.so)的形式使用.有权访问库源代码,是否可以向Android Studio指定源代码的路径,以便我可以使用调试器进入库内部?

调试器工作,我可以进入Java_clory_engine_sdk_CloryNative_nativeInit函数内部,但我还想进一步调试对应于Clory::Engine该类的库,正如我所提到的,它是一个我们有源代码访问的内部库.

c_clory

例如,Clory::Engine::instance是库的一部分,我想向Android Studio指定CloryEngine.cpp文件的位置,以便我可以Clory::Engine::instance使用调试器进入内部,从而调试此静态成员函数.

我使用的是Android Studio 3.1.4.

这可能吗?

编辑:

clory-sdk.gradle文件指定CMakeLists.txt配置C++层的文件.

externalNativeBuild {
    cmake {
        path "CMakeLists.txt"
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我使用的是使用Clory SDK的内部应用程序.在app.gradle我使用的文件内:

dependencies {
...
    compile project(':clory-sdk-core')
    compile project(':clory-sdk')
...
}
Run Code Online (Sandbox Code Playgroud)

所以我不认为我们在项目中使用aars app.gradle.该aars的运到客户端,但我们使用app.gradle的项目在这之前测试我们的小SDK功能.JNI层位于clory-sdk-core项目内部.

编辑2:

这是CMakeLists.txt处理JNI层的:

cmake_minimum_required(VERSION 3.4.1)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_BUILD_TYPE …
Run Code Online (Sandbox Code Playgroud)

c++ java-native-interface android android-studio android-studio-3.0

24
推荐指数
2
解决办法
2081
查看次数

Docker(带SYSTEMCTL的CentOS 7):无法挂载tmpfs和cgroup

(我是Docker初学者.然后我关注了CentOS-7的一些教程)

在我CentOS 7.2,我尝试按照以下步骤学习Docker.

# docker version

Client:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 15:39:25 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 15:39:25 2016
 OS/Arch:      linux/amd64

# docker pull centos:latest
# docker images
centos     latest    778a53015523    12 days ago    196.7 MB

# mkdir ~/docker/centos7-systemd
# cd ~/docker/centos7-systemd
# vi Dockerfile
FROM centos
MAINTAINER "XXXX XXXX" <xxxx@xxxx.com>
ENV container …
Run Code Online (Sandbox Code Playgroud)

mount systemd docker centos7 systemctl

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

由"相同"类型转换的不同结果困惑,浮动到int

如果我首先将浮点计算的值赋给变量,然后使用隐式类型转换将其赋值给unsigned int,我得到一个答案.但是如果我将相同的计算直接分配给unsigned int,再次使用隐式类型转换,我得到一个不同的答案.

下面是我编译并运行以演示的示例代码:

#include <iostream>



int
main( int argc, char** argv )
{
    float   payloadInTons = 6550.3;


    //  Above, payloadInTons is given a value.
    //  Below, two different ways are used to type cast that same value,
    //  but the results do not match.
    float tempVal = payloadInTons * 10.0;
    unsigned int right = tempVal;
    std::cout << "    right = " << right << std::endl;


    unsigned int rawPayloadN = payloadInTons * 10.0;
    std::cout << "    wrong = " << …
Run Code Online (Sandbox Code Playgroud)

c++ gcc type-conversion

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

for循环中多线程的错误

我试图添加一个简单的for循环与线程,但仍然有些事情没有成功.我检查了很多原因,我找不到任何解决办法.

我有一个简单的类,有两种方法A()B().从另一个班级,我正在呼唤方法A().这是它的样子:

void MyClass::A()
{
    std::vector<std::thread> threads;
    for(int i=0;i<2;i++)
    {
        threads.push_back(std::thread(&MyClass::B, this));
    }
    for(auto &t : threads)
    {
        if(t.joinable())
            t.join();
    }
}

void MyClass::B()
{
}
Run Code Online (Sandbox Code Playgroud)

然而,我仍然收到一些错误:

#0 ??   ?? () (??:??)
#1 00446D62 pthread_create_wrapper () (??:??)
#2 75327FB0 msvcrt!_cexit() (C:\Windows\SysWOW64\msvcrt.dll:??)
#3 040C8710 ?? () (??:??)
#4 753280F5 msvcrt!_beginthreadex() (C:\Windows\SysWOW64\msvcrt.dll:??)
#5 75B17C04 KERNEL32!BaseThreadInitThunk() (C:\Windows\SysWOW64\kernel32.dll:??)
#6 77ABAB8F ?? () (??:??)
#7 77ABAB5A ?? () (??:??)
#8 ??   ?? () (??:??)
Run Code Online (Sandbox Code Playgroud)

有人知道出了什么问题吗?

只是添加一件事.这个:

void MyClass::A()
{ …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

8
推荐指数
1
解决办法
220
查看次数

电子打包器返回错误 - 命令失败npm prune --production

我的电子打包机返回错误.

这是我的命令

electron-packager ./packager angular-test --platform=win32 --arch=ia32
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

Packaging app for platform win32 ia32 using electron v1.4.13
Command failed: npm prune --production
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "prune" "--production"
npm ERR! node v6.2.2
npm ERR! npm  v3.9.5
npm ERR! path C:\Users\dell\AppData\Local\Temp\electron-packager\win32-ia32\angular-test-win32-ia32\resources\app\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open

npm ERR! enoent ENOENT: no such file or directory, open 'C:\Users\dell\AppData\Local\Temp\electron-packager\win32-ia32\angular-test-win32-ia32\resources\app\package.json'
npm ERR! enoent ENOENT: no such file or directory, open …
Run Code Online (Sandbox Code Playgroud)

node.js electron

8
推荐指数
1
解决办法
1876
查看次数

使用zlib压缩目录

我有一个C++应用程序,需要使用标准的压缩格式的目录.我想过使用zip格式.因此,zlib显而易见.

我的问题是构建字典,即将包含一些zlib文件的目录压缩到标准zip文件.

我已经读过zlib做了但我不明白怎么做.我检查了minzip代码.它似乎使用gzip.我可以构建自己的格式,但我希望能够使用7z打开这些文件进行调试(以防万一).

我应该在zlib中使用什么来压缩目录?

[编辑] 在minzip 我使用minzip压缩1文件到它的gz版本 - >不拉链但对我来说很好.(我将在世界各种编译器上使用它 - 如果客户端平台出现问题,则标准格式更容易)

此外,还有这个代码main.它在文件列表上循环并将其写入输出.但是档案中文件位置的信息在哪里?

    do {
        if (uncompr) {
            if (copyout) {
                file = gzopen(*argv, "rb");
                if (file == NULL)
                    fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv);
                else
                    gz_uncompress(file, stdout);
            } else {
                file_uncompress(*argv);
            }
        } else {
            if (copyout) {
                FILE * in = fopen(*argv, "rb");

                if (in == NULL) {
                    perror(*argv);
                } else {
                    file = gzdopen(fileno(stdout), outmode);
                    if (file == NULL) error("can't gzdopen stdout");

                    gz_compress(in, file);
                } …
Run Code Online (Sandbox Code Playgroud)

c++ zip zlib

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

git是什么意思,"无法将对象迁移到永久存储"?

git是什么意思,"无法将对象迁移到永久存储"?

 Counting objects: 4, done.
 Delta compression using up to 8 threads.
 Compressing objects: 100% (4/4), done.
 Writing objects: 100% (4/4), 956 bytes | 0 bytes/s, done.
 Total 4 (delta 2), reused 0 (delta 0)
 error: failed to push some refs to 'https://git.patrikx3.tk/server-scripts.git'
 To https://git.patrikx3.tk/server-scripts.git
 !  refs/heads/master:refs/heads/master [remote rejected] (unable to migrate objects to permanent storage)
 Done
Run Code Online (Sandbox Code Playgroud)

git git-push

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

如何在emberjs中的textarea上听一个粘贴事件

我有一个包含以下模板的组件:

<div>
  {{textarea value=content autofocus="autofocus"}}
  <button {{action 'cancel'}}>cancel</button>
</div>
Run Code Online (Sandbox Code Playgroud)

我怎样才能paste在我的组件中听这个textarea上的事件?

我试着听一下粘贴动作,但这似乎不起作用:

App.EditableTextComponent = Ember.Component.extend({

  templateName: 'components/editable-text',

  actions: {
    paste: function() {
      console.log(arguments);
    }
  }

});
Run Code Online (Sandbox Code Playgroud)

ember.js

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

从0°转到359°时,我该如何修复完全旋转的罗盘应用程序?

我正在swiftUI中创建指南针应用程序。它可以工作,但是当我添加动画来移动指南针时,将出现以下行为:

应用程序屏幕截图

例如,当它从5°定向转到350°时,它决定进行一次完整的转弯。指南针不是自然行为。

我的ContentView代码:

import SwiftUI
import CoreLocation

struct ContentView: View {

  var locationManager = CLLocationManager()
  @ObservedObject var location: LocationProvider = LocationProvider()
  @State var angle: CGFloat = 0

  var body: some View {
    GeometryReader { geometry in
      VStack {
        Rectangle()
          .frame(width: 10, height: 30)
          .background(Color(.red))
          .foregroundColor(Color(.clear))
        Spacer()
        Text(String(Double(self.location.currentHeading).stringWithoutZeroFraction) + "°")
          .font(.system(size: 40))
          .foregroundColor(Color(.black))
        Spacer()
      }
      .frame(width: 300, height: 300, alignment: .center)
      .border(Color(.black))
      .onReceive(self.location.heading) { heading in
        withAnimation(.easeInOut(duration: 0.2)) {
          self.angle = heading
        }
      }
      .modifier(RotationEffect(angle: self.angle))
    }.background(Color(.white))
  }
}

struct RotationEffect: …
Run Code Online (Sandbox Code Playgroud)

360-degrees swift swiftui

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