小编nav*_*jan的帖子

使用sed从传入流中删除换行符

我是shell脚本的新手,我试图使用SED从每一行中删除新的行字符.这是我到目前为止所做的:

printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g'
Run Code Online (Sandbox Code Playgroud)

仅删除Ist新行字符.我找到了这个命令:

printf "{new\nto\nlinux}" | sed ':a;N;$!ba;s/\n/ /g'
Run Code Online (Sandbox Code Playgroud)

但它给出了:"ba:未找到事件."

如果我做:

printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g' | sed ':a;N;s/\n/ /g'
Run Code Online (Sandbox Code Playgroud)

然后它提供正确的输出,但我正在寻找更好的东西,因为我不知道当我运行脚本时我会得到多少新角色.传入流来自echo或printf或脚本中的某些变量.提前致谢

shell csh sed

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

是否有必要调用pthread_join()

我从main()创建了超过100个线程所以我只想知道在退出main()之前需要调用pthread_join().此外,我不需要这些线程生成的数据,基本上所有线程都在做一些独立于main()和其他线程的工作.

c multithreading pthreads

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

命名信号量或flock哪个更好C linux

我正在尝试创建一个将由多个进程使用的共享内存.这些进程使用MPI调用(MPI_Send,MPI_Recv)相互通信.

我需要一种机制来控制这个共享内存的访问我昨天添加了一个问题,看看MPI是否提供了任何设施来做到这一点.MPI创建的进程的共享内存访问控制机制,但似乎MPI没有这样的规定.

所以我必须在named semaphore或之间做出选择flock.

对于命名的信号量,如果任何进程在没有调用的情况下突然死亡sem_cloe(),那么该信号量总是保持不变并且可以被看到ll /dev/shm/.这有时会导致死锁(如果我再次运行相同的代码!),因此我正在考虑使用flock.

只想确认是否flock最适合此类操作?

使用有什么缺点flock吗?

还有什么除了named semaphoreflock这里可以用吗?

我在linux下工作.

c concurrency semaphore flock multiprocessing

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

GCC选项,用于在给定CPU架构上进行优化

我正在研究Nehalam/westmere英特尔微架构CPU.我想为此架构优化我的代码.GCC是否有专门的编译标志或C函数可以帮助我提高代码的运行时性能?

我已经在使用-o3了.

Language of the Code - C
Platform - Linux
GCC Version - 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我有一些浮点比较,它们完成了一百多万次.

请假设代码已经过最佳优化.

c gcc intel

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

引起:java.lang.IllegalStateException:必须在请求聚合时指定有效的bucketing策略

我在创建读取请求对象DataReadRequest类时遇到此错误.

java.lang.IllegalStateException:必须在请求聚合时指定有效的bucketing策略

我确实提到了上面的问题,但它对我没有帮助,因为我没有使用上面的代码.

我看到这个崩溃的代码如下:

private void accessGoogleFit() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        long endTime = cal.getTimeInMillis();
        cal.add(Calendar.YEAR, -1);
        long startTime = cal.getTimeInMillis();

        DataReadRequest readRequest = new DataReadRequest.Builder()
                .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
                .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
                .build();
Run Code Online (Sandbox Code Playgroud)

我还提到了" https://plus.google.com/105817403737304061447/posts/5Bo6qMYRAM9 ",但它也没有帮助.

以上代码直接来自" https://developers.google.com/fit/android/get-started ".

提前致谢.

java android google-fit

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

迭代所有元素 std::unordered_map 与 std::map 的性能差异?

我想以指针为键映射数据。我应该选择哪个容器,map 还是 unordered_map?关于这个主题的 stackoverflow 有多个问题,但是当我们需要迭代所有键值对时,它们都没有涵盖性能方面。

std::map<classKey* , classData*> myMap;
std::unordered_map<classKey* , classData*> myUnorderedMap;

for (auto & iter : myMap) { //loop1
    display(iter.second);
}

for (auto & iter : myUnorderedMap) { //loop2
    display(iter.second);
}
Run Code Online (Sandbox Code Playgroud)

loop1 与 loop2 哪个提供更好的性能。 替补马克商提供@ RetiredNinja

对于 size = 10,000,000 我们得到以下基准结果:

在此处输入图片说明

c++ stl c++11

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

printf忽略单反斜杠'\'

我有这个代码:

int main(int argc, char * argv[])
{
int i;
printf("%d%s",argc,argv[1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我运行此代码为a.out a\=b=.我正在使用C-shell

它的输出是" a=b="是否有任何方式可以将其输出更改为" a\=b=".

c string printf

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

使每一行双vim

我有一个看起来像这样的文件:

file1
file2
file3
.
.
.
filen
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

echo "file1"
cat file1
echo "file2"
cat file2
.
.
.
.
echo "filen"
cat filen
Run Code Online (Sandbox Code Playgroud)

一种方法是使用for循环并读取原始文件的内容并将修改后的内容写入另一个文件,我这样做并且它有效.是否有任何命令在vim通过:g或任何其他命令中执行相同的操作?

vi vim shell

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

使vim'%'命令在verilog类型代码中更有用

In VIM %是一个很好的节省时间的命令.我在verilog工作,并没有太多的括号使用.所以我想知道是否有任何机制可以通过它%在verilog中有效使用.

例如 :

  1. 如果我的光标在单词下task并且我发出%命令它会将我带到我们所拥有的行endtask.

  2. 同样,对于moduleendmodulebeginend.

在我们查看大型verilog模块和功能时,这种功能非常有用.

vi vim verilog

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

将rlogin命令转换为别名

我在多台机器上工作,需要远程登录.我想有一个别名,可以使我的rlogin命令更简单.

所以,我想将以下命令转换为别名:

rlogin `echo "machine $num" | tr -d ' '`
Run Code Online (Sandbox Code Playgroud)

我试着在我的.cshrc文件中写这个:

alias rl rlogin `echo machine$1| tr -d ' '`
Run Code Online (Sandbox Code Playgroud)

当我做 rl 13

它说 :

usage: rlogin [ -8EL] [-e char] [ -l username ] host
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

linux shell alias csh

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

多次调用malloc会浪费内存吗?

目前正在编写代码,我意识到它曾经malloc多次调用多次(大约1000万次调用)并且每次分配小块(大约10个字节).

我稍微更改了代码,而不是调用malloc1000万次,现在我malloc每次调用10次​​分配大块内存(1000万字节).

通过此更改,我注意到我的代码的峰值内存消耗从~15 GB变为~14 GB.

为什么会这样?不malloc分配与每个调用一些额外的块?

c memory-management

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

如何避免使用shared_ptr悬空指针?

我有一个类,其对象指针将作为键/数据添加到多个 std::map/std::unordered_map/hash(内部实现)中。为了自动删除对象,我使用了 shared_ptr。

我使用shared_ptr only类设计了我的类。

现在我想确保将来没有人这样做:

#include <memory>
#include <string>

class A {
 protected:
   struct this_is_private;

 public:
   explicit A(const this_is_private &) {}
   A(const this_is_private &, ::std::string, int) {}

   template <typename... T>
   static ::std::shared_ptr<A> create(T &&...args) {
      return ::std::make_shared<A>(this_is_private{0},
                                   ::std::forward<T>(args)...);
   }

 protected:
   struct this_is_private {
       explicit this_is_private(int) {}
   };

   A(const A &) = delete;
   const A &operator =(const A &) = delete;
};


::std::map<A*, int> m_error;
::std::map<::std::shared_ptr<A>, int> m_ok;

::std::shared_ptr<A> foo()
{
   ::std::shared_ptr<A> temp = A::create();

   A * obj_ptr …
Run Code Online (Sandbox Code Playgroud)

c++ memory-management stl smart-pointers c++11

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