我正在尝试docker exec
从头开始构建的容器(例如 NATS 容器)。看起来很简单,但由于它是从头开始构建的,因此我无法访问/bin/bash
,/bin/sh
并且几乎无法访问任何此类命令。
我收到错误:(oci runtime error
未找到命令、未找到文件等,具体取决于我输入的命令)。
我尝试了一些命令,例如:
docker exec -it <container name> /bin/bash
docker exec -it <container name> /bin/sh
docker exec -it <container name> ls
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何创建docker exec
一个从头开始构建且仅包含二进制文件的容器?通过做docker exec
,我想看看文件已经成功地从我的主机到容器复制(我有一个COPY
在Dockerfile
)。
我的问题受到 Thomas Cormen 教授对其Quora answer $的第二条评论的影响。
他说构造函数执行以下三个任务:
为对象分配内存。
初始化对象的实例变量,例如,通过在 Python 中隐式调用init。(我还强调init方法不应该初始化一些,而是所有的实例变量。)
返回对象的引用(即地址)。
但是,C++ *的MSDN 文档说它是执行此操作的运算符:new
从自由存储中为类型名称的对象或对象数组分配内存,并返回指向该对象的适当类型的非零指针。
我的问题是,谁是对的?或者,是否还有更多的东西,也许就像new
操作员总是调用构造函数一样,正如帖子中的评论所建议的那样?
谢谢。
$ 不幸的是,Quora 没有复制评论链接的选项——我只能为答案这样做。
* 虽然我说的是 C++,但我认为对于 Java 和 C# 等其他语言也是如此(虽然我不是 100% 确定)。
我在LeetCode.com上解决了一个问题:
给定一个具有红色,白色或蓝色的n个对象的数组,对它们进行就地排序,使相同颜色的对象相邻,颜色顺序为红色,白色和蓝色.这里,他们使用整数0,1和2分别表示红色,白色和蓝色.[无法使用琐碎的计数排序].
输入:[2,0,2,1,1,0]; 预期的输出是:[0,0,1,1,2,2].
其中一个高度赞成的解决方案是这样的:
public void sortColors(vector<int>& A) {
if(A.empty() || A.size()<2) return;
int low = 0;
int high = A.size()-1;
for(int i = low; i<=high;) {
if(A[i]==0) {
// swap A[i] and A[low] and i,low both ++
int temp = A[i];
A[i] = A[low];
A[low]=temp;
i++;low++;
}else if(A[i]==2) {
//swap A[i] and A[high] and high--;
int temp = A[i];
A[i] = A[high];
A[high]=temp;
high--;
}else {
i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么i
当递增A[i]==0 …
Java文档说,Stack
最好从 a 创建 a Deque
,而不是使用 quintessential Stack<>
。不幸的是,它没有强调为什么会这样。
双端队列也可以用作 LIFO(后进先出)堆栈。应优先使用此接口而不是旧版 Stack 类。当双端队列用作堆栈时,元素从双端队列的开头推送和弹出。
有人可以指出为什么会这样吗?同样,是否还有其他情况我们应该避免使用内置Collections
对象?我是一名转向 Java 的 C++ 开发人员,因此任何此类微妙的指针都会有所帮助。
谢谢。
c++ ×2
algorithm ×1
collections ×1
constructor ×1
containers ×1
deprecated ×1
docker ×1
java ×1
new-operator ×1
obsolete ×1
stack ×1