小编use*_*955的帖子

如何在shell if语句中表示多个条件?

我想代表这样的多个条件:

if [ ( $g -eq 1 -a "$c" = "123" ) -o ( $g -eq 2 -a "$c" = "456" ) ]   
then  
    echo abc;  
else  
    echo efg;   
fi  
Run Code Online (Sandbox Code Playgroud)

但是当我执行脚本时,它会显示出来

syntax error at line 15: `[' unexpected, 
Run Code Online (Sandbox Code Playgroud)

第15行显示是否....

这种情况怎么了?我猜这有点不对劲().

unix bash shell

288
推荐指数
6
解决办法
77万
查看次数

如何验证非模拟对象的方法?

似乎mockito只验证是否调用了模拟对象的方法,并且模拟对象总是具有某种功能.像doReturn().when(模拟对象)...

但我可以创建一个模拟对象并定义doReturn().when(模拟对象)..然后验证另一个对象的方法被调用?

这就是我想要做的:我定义一个mockEnvironment并返回一个响应,无论发生什么.但后来我想验证在不同情况下调用anotherObj的不同方法.

怎么做?

public class BaseClass {
    private Environment mockEnvironment;
    @Test
    public void testcase () {
     setMockitoEnvironment(); 
     response = foo(mockEnvironment, argument1);
     verify(anotherObj).codePath1(...);
     response = foo(mockEnvironment, argument2);
     verify(anotherObj).codePath2(...);
   }
}

//this method successfully return a response with any input 
//because I do not care how response is eventually generated, 
//I only care whether code path reaches createResponse() via 
//code path 1 or code path 2.
private void setMockitoEnvironment() {
    mockEnvironment = mock(Environment.class);
    doReturn (response).when(mockEnvironment).createResponse(for any input);
}
private Response foo(...) …
Run Code Online (Sandbox Code Playgroud)

java unit-testing mockito

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

如何在Terraform中使用数据源?

Terraform数据源文档告诉我一个数据源是什么,但我不太明白.有人能给我一个数据源的用例吗?它与使用变量配置的东西有什么区别?

amazon-web-services terraform

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

如何将@RunWith与@RunWith(Parameterized.class)结合起来

我实现了一个继承自BlockJUnit4ClassRunner的运行器类A.class,以便我可以用@RunWith(A.class)注释测试.与此同时,某人 else用RunWith(Parameterized.class)注释测试.很明显,我们不能同时使用两个@RunWith.

如何解决这个问题呢?或者如何合并这两个@RunWith?

junit junit-runner

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

缓存的高频率并发性

我正在学习缓存,并对缓存的并发性有疑问.

据我所知,LRU缓存是用双链表+哈希表实现的.那么LRU缓存如何处理高频并发?请注意,从缓存中获取数据并将数据放入缓存都会更新链接列表和哈希表,因此缓存会一直被修改.

如果我们使用互斥锁来保证线程安全,那么如果大量人员访问缓存,速度是否会降低?如果我们不使用锁,会使用什么技术?提前致谢.

concurrency caching

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

实现循环缓冲区以在单个调用中写入/读取任意数量的数据

大多数循环缓冲区假定每次只读/写一个对象,我发现以(const char*bytes,size_t byte_count)的形式对二进制数据进行操作的唯一链接是http://www.asawicki.info/news_1468_circular_buffer_of_raw_binary_data_in_c. html,我觉得这不是不正确而且有点长.什么是正确的实施?

我自己创造了一个.但它仍然很长.任何人都可以分享更优雅的版本吗?或者你能指出我的代码中有什么东西可以改进吗?

class Pipe{
    Pipe(size_t capacity): _capacity(capacity){ init();  }
    ~Pipe(){delete [] _buf; }
    size_t read(char* data, size_t bytes);
    size_t write(const char* data, size_t bytes);
   private: 
    //only _capacity-1 is used, one is to identify full or empty.
    void init(){_buf = new char[_capacity]; 
     _wptr = 0; _rptr = 0; _used_size = 0; 
    }
    char* _buf;
    size_t _capacity, _wptr, _rptr, _used_size;
    bool isFull(){return (_wptr + 1 ) % (_capacity) == _rptr;} 
    bool isEmpty(){return _wptr == _rptr;} 
}; 
size_t …
Run Code Online (Sandbox Code Playgroud)

c++ data-structures

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

无法通过AWS负载均衡器HTTPS访问气流Web服务器,因为气流将我重定向到HTTP

我在EC2上配置了一个气流Web服务器,它在端口8080处侦听。

我在EC2前面有一个AWS ALB(应用程序负载均衡器),在https 80上监听(面向互联网),并且实例目标端口面向http 8080。

我无法从浏览器浏览https:// <airflow link>,因为气流Web服务器将我重定向到http:// <airflow link> / admin,ALB不会监听。

如果我从浏览器浏览https:// <airflow link> / admin / airflow / login?next =%2Fadmin%2F,那么我会看到登录页面,因为此链接不会重定向我。

我的问题是如何更改气流,以便在浏览https:// <airflow link>时,气流Web服务器会将我重定向到https:...,而不是http:// .....,以便AWS ALB可以处理请求。

根据下面的答案,我试图将airflow.cfg的base_url从http:// localhost:8080更改为https:// localhost:8080,但是我看不到任何改变....

无论如何,如何从ALB访问https:// <气流链接>?

apache amazon-web-services airflow elastic-load-balancer

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

如何触发Terraform上传新的Lambda代码

我按如下方式使用Terraform部署lambda,但存在以下问题:

1)我希望始终调用null_resource.lambda或更改stop_ec2.py时调用它,以便stop_ec2_upload.zip不会过时。我应该在触发器中写些什么{}?

2)更改stop_ec2_upload.zip时,如何使aws_lambda_function.stop_ec2将新的stop_ec2_upload.zip更新到云?

现在,我必须销毁aws_lambda_function.stop_ec2,然后再次创建它。我可以在代码中编写任何内容,以便在运行terraform apply时自动发生1)和2)吗?

resource "null_resource" "lambda" {
  triggers {
   #what should I write here?
  }

  provisioner "local-exec" {
    command = "mkdir -p lambda_func && cd lambda_py && zip     
../lambda_func/stop_ec2_upload.zip stop_ec2.py && cd .."
  }
}
resource "aws_lambda_function" "stop_ec2" {
    depends_on = ["null_resource.lambda"]
    function_name = "stopEC2"
    handler = "stop_ec2.handler"
    runtime = "python3.6"
    filename = "lambda_func/stop_ec2_upload.zip"
    source_code_hash =     
"${base64sha256(file("lambda_func/stop_ec2_upload.zip"))}"
    role = "..."
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda terraform

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

如何在terraform中实现多个文件和目录

data "archive_file" "example" {
  type        = "zip"
  output_path = "${local.dest_dir}/hello_upload.zip"

  source_file = "${local.src_dir}/hello.py"
  source_dir = "${local.src_dir}/pytz"
  source_dir = "${local.src_dir}/pytz-2018.5.dist-info"
}
Run Code Online (Sandbox Code Playgroud)

请注意, hello.py 需要导入 Lambda 中未包含的 pytz,这就是我要上传包的原因。

当我运行上述 terraform 时,出现错误:“source_dir”:与 source_file 冲突。那么如何同时上传我的 lambda 文件 hello.py 和目录包 pytz 呢?

aws-lambda terraform

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

什么是 EFS 挂载目标以及为什么我们要创建多个挂载目标

谁能解释一下 AWS EFS 挂载目标是什么意思?AWS文档说它是供你访问EFS的,我不明白。

我对EFS挂载目标的理解是:当你创建EFS时,在后端,AWS需要选择一个位置来启动服务器,这就是为什么它会要求你提供VPC、子网信息,就像你创建EC2时一样,您需要告知您想要启动此 EC2 的 VPC、子网。但为什么所有 AWS 文档和教程都会教您创建多个挂载目标,每个子网一个?挂载目标的安全组不足以控制对 EFS 的访问吗?

谁能解释一下 EFS 挂载目标的用途是什么以及为什么我们需要多个挂载目标,每个子网一个?谢谢

amazon-web-services amazon-efs

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