小编won*_*dra的帖子

如何在Bash中将stdout重定向到文件时添加时间戳?

我有一个程序(服务器),我正在寻找一种方法(脚本),它将所有stdout文件重定向(或更好地复制)并为每个条目添加时间戳.

我已经完成了一些研究,我能得到的最远的就是如何将时间戳添加到STDERR重定向.它重定向stdout但添加的时间戳是脚本完成的时间:

#!/bin/bash
./server | ./predate.sh > log.txt
Run Code Online (Sandbox Code Playgroud)

代码predate.sh:

#!/bin/bash
while read line ; do
    echo "$(date): ${line}"
done
Run Code Online (Sandbox Code Playgroud)

似乎退出程序后刷新服务器输出.(没有重定向它工作正常).此外,如果我尝试predate.sh在提到的线程中使用给定的示例,它可以完美地工作.我知道在主程序中添加时间戳很容易,但我宁愿避免编辑它的代码.

linux bash redirect

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

从单个对象创建Stream <T>

如何从单个对象创建Stream?这种基本操作在流API中显示出问题.为了说明,我想有意义地完成以下方法

private Node parent;
private List<Node> children;
public Stream<Node> getFilteredNodes(Options o) {
    if(o.findParent()/*special case*/) return /*??? stream containing just parent*/;
    return children.stream().filter(x -> x.getName().equals(o.getQuery()));
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我想要LINQ这样的东西return Enumerable.Repeat(parent,1);.即使存储parent在具有单个项目的列表中也会起作用,但它也会使其他逻辑复杂化,因此我更倾向于使用内置方法.


至于我需要它 - 搜索API的一致性,所以我可以在相同的方法调用中上下搜索层次结构(并将两者结合起来),将它传递给下一阶段.

java java-stream

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

在c ++中的has-a关系中是否有良好的接口替换

我正面临着GUI设计中的OOP问题,但让我用动物示例来说明它.让我们有以下设置:

  • 有一个基类动物
  • 任何派生类都可以有一个牙齿
  • 每一只牙齿的动物都可以咬()<=>没有牙齿的动物不能咬()
  • 每个动物Bite()都是一样的(在Teeth类中有默认实现)

动物有一个牙齿是很自然的,但是现在我需要像接触这样关系.例如,如果我有一个动物矢量,如果可以的话我怎么能做每个Bite()?

std::vector<Animal *> animals;
animals.push_back(new dog());
animals.push_back(new fly());
animals.push_back(new cat());

void Unleash_the_hounds(std::vector<Animal *> animals) 
{
    //bite if you can!
}
Run Code Online (Sandbox Code Playgroud)

我想出了几个解决方案,但似乎没有一个完全适合:

1.)每个使用Teeth的类都实现了接口IBiting.但是,这个解决方案引入了大量的代码重复,我需要在每个类中"实现"Bite():

class Cat : public Animal, public IBiting {
    Teeth teeth;
public:
    virtual void Bite() { teeth.Bite(); }
}
Run Code Online (Sandbox Code Playgroud)

2.)给每一只动物的牙齿,但只允许一些人使用它们.注意:语法可能是错误的 - 它只是说明

class Animal{
    static cosnt bool canBite = false;
    Teeth teeth;
public:
    void Bite() { this->canBite ? teeth.Bite() : return; }
}

class Cat {
    static …
Run Code Online (Sandbox Code Playgroud)

c++ oop

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

C# 将整数分割为给定部分权重的部分算法

我有一个整数和一个非负权重列表,如何将整数“拆分”为相同数量的具有相应权重的“桶”?

public int[] SplitIntoBuckets(int count, int[] weights) {
    // some magic algorithm
    Debug.Assert(solution.Sum() == count);
    return solution;
}
Run Code Online (Sandbox Code Playgroud)

一个简单的例子是count = 200weights = { 25, 25, 50 }的解{50, 50, 100}(50+50+100 = 200)。然而,输入不一定是“好的”数字,没有好的解决方案的另一个例子是count = 150和 权重{753, 42, 95, 501}
桶的总和必须始终等于输入count,算法应将输入尽可能接近权重地分布在桶之间。什么“尽可能接近”并不重要(例如,它可以是最低的绝对误差、相对误差或平方误差)。
我能找到的最接近的问题是“均匀地分成桶”,但是我的桶不是“均匀的”,并且“随机分成桶”,但权重是随机选择的“好”数字。

c# algorithm double integer

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

我应该在程序结束时删除C++中的大树集合还是将其留给操作系统?

这可能是一个有点愚蠢的问题 - 我应该delete在程序结束时调用巨大的地图/集合吗?
假设整个程序都需要map/set(delete返回前的最后一行),它的大小非常大(> 4GB).这个delete电话花了很长时间,从我的角度来看没有任何价值(内存不能早点发布),我错了吗?如果是这样,为什么?

c++ memory-management

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

SQL Server 字符串执行带有输出参数的过程

如何在字符串执行中使用输出参数?考虑使用“标准”语法进行以下查询:

DECLARE @testString nvarchar(50);
EXEC testProcedure  @param1 = @testString OUTPUT
SELECT 'result ' = @testString
go
Run Code Online (Sandbox Code Playgroud)

如何使用字符串exec重新创建完全相同的结果,既不

EXEC ( 'testProcedure @param1 = @testString OUTPUT' )
Run Code Online (Sandbox Code Playgroud)

也不

EXEC ( 'testProcedure @param1 = ' + @testString + ' OUTPUT' )
Run Code Online (Sandbox Code Playgroud)

似乎有效:结果是NULLMust declare the scalar variable "@testString"错误。

sql t-sql sql-server exec

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

覆盖ZipArchiveEntry的内容

我怎样才能覆盖一个内容ZipArchiveEntry?使用下面的代码StreamWriter使用StringBuilder,如果新的文件内容比原来的短,例如失败:

using System.IO.Compression;
//...
using (var archive = ZipFile.Open("Test.zip", ZipArchiveMode.Update))
{
   StringBuilder document;
   var entry = archive.GetEntry("foo.txt");//entry contents "foobar123"
   using (StreamReader reader = new StreamReader(entry.Open()))
   {
      document = new StringBuilder(reader.ReadToEnd());
   }

   document.Replace("foobar", "baz"); //builder contents "baz123"

   using (StreamWriter writer = new StreamWriter(entry.Open()))
   {
      writer.Write(document); //entry contents "baz123123", expected "baz123"
   }
}
Run Code Online (Sandbox Code Playgroud)

生成包含新旧内容的文件混合"baz123123"而不是预期的"baz123".ZipArchiveEntry在编写新内容之前,是否有一种方法可以丢弃旧内容?
注意:我不想解压缩文件,我想更改存档的内容.

c# zip streamwriter

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

异步操作挂起/死锁,为什么?(不等待结果,也不配置Await)

首先,对于另一个“为什么我的异步操作挂起”问题感到抱歉,但我相信这个问题已经足够不同了。
调查了几十个类似的问题,异步操作死锁的问题要么是把自己锁在外面(.Result),使用有限的资源,要么错误地使用库组件(网络请求似乎很流行)。在以下示例中,我找不到上面的任何内容

private async Task ExecuteAsync(Task<int> task)
{
    // entering on current thread, that is the main UI thread
    await task // execute "task" asynchronnously (on a different thread)
        .ConfigureAwait(false); // when done, no need to return to main thread
    MessageBox.Show("success"); // succes indicator
}

public MainWindow() //wpf window ctor
{            
    InitializeComponent();
    this.Loaded += MainWindow_Loaded;
}

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    var task = new Task<int>(() => 42); // make an Action wrapping sychronnous …
Run Code Online (Sandbox Code Playgroud)

c# deadlock async-await

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