小编dop*_*ime的帖子

使用vimdiff合并更改

就我而言,我有两个文件file1和file2.使用vimdiff,我想合并更改如下:

  1. 在第一个区别中,从file2上方的第一行放置第一行.它表示不同,例如Listing 2在file2中,List 2应该在合并文件中List 2后跟Listing 2.
  2. 在另一个变化中反转案例.

快照如下所示.

在此输入图像描述

我们如何使用vimdiff实现这一目标?

vim diff

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

使用EVP接口的AES-GCM的OpenSSL C示例

对于AES-GCM加密/解密,我试过这个,但它有一个问题.

ctx     = EVP_CIPHER_CTX_new();

//Get the cipher.
cipher  = EVP_aes_128_gcm ();


#define     GCM_IV      "000000000000"
#define     GCM_ADD     "0000"
#define     TAG_SIZE    16
#define     ENC_SIZE    64


//Encrypt the data first.
//Set the cipher and context only.
retv    = EVP_EncryptInit (ctx, cipher, NULL, NULL);

//Set the nonce and tag sizes.
//Set IV length. [Optional for GCM].

retv    = EVP_CIPHER_CTX_ctrl (ctx, EVP_CTRL_GCM_SET_IVLEN, strlen((const char *)GCM_IV), NULL);

//Now initialize the context with key and IV. 
retv    = EVP_EncryptInit (ctx, NULL, (const unsigned char *)keybuf, (const unsigned …
Run Code Online (Sandbox Code Playgroud)

c openssl aes aes-gcm

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

java.lang.NoClassDefFoundError:带有AmazonHttpClient的org/apache/http/conn/SchemePortResolver

所有

当我将aws库更新到最新的1.11.3时,我在项目中遇到了这个错误.

引起:

java.lang.NoClassDefFoundError: org/apache/http/conn/SchemePortResolver
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.<init>(ApacheHttpClientFactory.java:40)
at com.amazonaws.http.AmazonHttpClient.<clinit>(AmazonHttpClient.java:97)
at com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:145)
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:393)
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:373)
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:355)
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:339)
Run Code Online (Sandbox Code Playgroud)

在我的pom.xml中

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-core</artifactId>
        <version>1.11.3</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.11.3</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-kms</artifactId>
        <version>1.11.3</version>
    </dependency>
    <dependency>
         <groupId>org.bouncycastle</groupId>
          <artifactId>bcprov-ext-jdk15on</artifactId>
         <version>1.54</version>
    </dependency>
    <dependency>
         <groupId>com.amazonaws</groupId>
         <artifactId>aws-encryption-sdk-java</artifactId>
          <version>0.0.1-SNAPSHOT</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

谁知道我做错了什么?

谢谢

java amazon-web-services

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

ftruncate在Mac OS X中无法处理POSIX共享内存

我在Mac OS X上编写了一个代码来使用POSIX共享内存,如下所示:

#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>

int main() {
    int fileHandle = shm_open("TW_ShMem1",O_CREAT|O_RDWR, 0666);

    if(fileHandle==-1) {
       //error.

    } else {
        //Here, it is failing on Mac OS X
        if(-1==ftruncate(fileHandle, 8192)) {
            shm_unlink("TW_ShMem1");
            fileHandle = -1;
        } else {
            return 0;
        }
    }

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

ftruncate在Linux上工作没有任何问题.在Mac OS X上,它返回-1并且errnoEINVAL(如调试器中所示).

它为什么失败?这里错过了什么?

c linux macos shared-memory

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

检测处理器是否在32位OS下是64位

通常,x86-64架构提供与x86的兼容性.32位Windows(或其他操作系统)可以在x86-64处理器上运行.(如果我错了,请纠正我).

我想知道是否有可能(在C++中)32位Windows知道底层处理器是否为64位.例如,如果Windows 7 32位在Core i5上运行,我们应该能够知道处理器是64位(尽管Windows 7 32位正在运行).

您可能会质疑这样的要求:即使处理器是64位且OS是32位,64位进程也无法运行(如果我错了,请纠正我).但程序的目的是了解处理器,而不是操作系统. 这个问题可能与此类似,但它没有给出任何C++程序的暗示.

c++ 64-bit 32-bit x86-64

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

使用-fshort-wchar的含义

在Mac OS X系统上浏览文件wchar.h时,我发现当未定义__cplusplust并且wchar_t的最大大小为2个字节时,使用编译器选项-fshort,wcscpy,wcscat等str函数的wchar_t等效. -Wchar).

对于C程序来说,如果定义了-fshort-wchar,它似乎不允许使用这些函数.我想知道使用-fshort-wchar时使用wchar_t函数的含义是什么?

您可能想知道为什么我需要使用-fshort-wchar.因为,我正在移植最初为Windows编写的应用程序,其中wchar_t的大小是两个字节.并且wchar_t字符串中保存的数据写在文件上,并在两个应用程序之间交换.

在不同平台上处理wchar_t变化的好方法是什么?Windows上的假设是wchar_t是16位.

c c++ gcc clang wchar

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

在NSView中绘制多个线程

在我的代码中,我进行了子类化,NSView并且在其drawRect方法中,我正在生成三个线程来执行绘制.

-(void)drawRect:(NSRect)dirtyRect
{
    [[self window] setAllowsConcurrentViewDrawing:YES];
    [self setCanDrawConcurrently:YES];

    [NSThread detachNewThreadSelector:@selector(DrawText) toTarget:self withObject:nil];
    [NSThread detachNewThreadSelector:@selector(DrawRectangle) toTarget:self withObject:nil];
    [NSThread detachNewThreadSelector:@selector(DrawGradient) toTarget:self withObject:nil];

    //Wherease these functions DrawText, DrawRectangle and DrawGradient performs their task as suggested by name.

    //In DrawText, DrawRectangle, and DrawGradient lockFocus and unlockFocus is being
    // used for multithreaded drawing.

}
Run Code Online (Sandbox Code Playgroud)

当我从Xcode运行相同的程序时,它运行正常.输出如下所示. 单线程

但是当我从外面运行它时,有问题,输出如下所示. 多线程

首先,我想知道从二级线程中绘制是否正确?或者从辅助线程中提取的另一种方法是什么?

这个问题背后的原因是什么?

macos cocoa multithreading objective-c nsview

5
推荐指数
2
解决办法
2855
查看次数

signalfd()错过信号

在我的程序中,我signalfd用于处理信号并将其与poll异步IO 结合使用。下面是我的代码:

#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/syscall.h>
#include <sys/signalfd.h>
#include <unistd.h>
#include <string.h>
#include <pthread.h>
#include <sys/types.h>
#include <poll.h>
#include <assert.h>
#include <errno.h>


volatile sig_atomic_t cont = 1;
volatile sig_atomic_t usrcnt = 0;
volatile sig_atomic_t susrcnt = 0;

volatile sig_atomic_t wsig = 0;
volatile sig_atomic_t wtid = 0;

int GetCurrentThreadId()
{
    return syscall(__NR_gettid);
}

void Segv1(int p1, siginfo_t * p2, void * p3)
{
    //printf("SIGSEGV signal on illegal memory access handled …
Run Code Online (Sandbox Code Playgroud)

c linux signals

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

可以取消链接为读取和写入而打开的文件

在我的程序中(在Mac OS X上),我使用以下代码打开文件.

 int fd;
 fd = open(filename, O_RDWR);
Run Code Online (Sandbox Code Playgroud)

删除文件的程序如下:

unlink(filename);
Run Code Online (Sandbox Code Playgroud)

就我而言,我有相同的文件被打开和删除.我观察到以下情况:

  1. 打开文件后,我可以使用该程序删除它,甚至可以使用rm命令删除它.
  2. 删除文件后,读取和写入操作正在处理该文件没有任何问题.

我想知道这背后的原因.如何防止rm命令或unlink(2)系统调用删除正在打开的文件?

c unix linux macos

4
推荐指数
2
解决办法
2589
查看次数

Haskell性能优化

我正在编写代码来查找第n个Ramanujan-Hardy号码.Ramanujan-Hardy数字定义为

n = a^3 + b^3 = c^3 + d^3
Run Code Online (Sandbox Code Playgroud)

意味着n可以表示为两个立方体的总和.

我在haskell中编写了以下代码:

-- my own implementation for cube root. Expected time complexity is O(n^(1/3))
cube_root n = chelper 1 n
                where
                        chelper i n = if i*i*i > n then (i-1) else chelper (i+1) n

-- It checks if the given number can be expressed as a^3 + b^3 = c^3 + d^3 (is Ramanujan-Hardy number?)
is_ram n = length [a| a<-[1..crn], b<-[(a+1)..crn], c<-[(a+1)..crn], d<-[(c+1)..crn], a*a*a + b*b*b == n …
Run Code Online (Sandbox Code Playgroud)

algorithm optimization haskell

4
推荐指数
1
解决办法
337
查看次数