我在使用redis数据库中的数据创建docker redis容器的映像时遇到问题。目前,我正在这样做:
docker pull redis
docker run --name my-redis -p 6379:6379 -d redis
redis-cli
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379> exit
docker stop my-redis
docker commit my-redis redis_with_data
docker run --name my-redis2 -p 6379:6379 -d redis_with_data
redis-cli
127.0.0.1:6379> keys *
(empty list or set)
Run Code Online (Sandbox Code Playgroud)
我显然不明白这里的一些基本知识。docker commit不会从现有容器创建新映像吗?
好吧,我一直在做一些挖掘工作。hub.docker上的默认redis映像使用数据量,然后将其安装在容器中的/ data处。为了在容器之间共享此卷,您必须使用以下参数启动一个新容器:
docker run -d --volumes-from <name-of-container-you-want-the-data-from> --name <new-container-name> -p 6379:6379 redis
Run Code Online (Sandbox Code Playgroud)
请注意,参数的顺序很重要,否则docker run将静默失败。
docker volume ls
Run Code Online (Sandbox Code Playgroud)
会告诉您docker在您的计算机上已经创建了哪些数据卷。我还没有找到一种方法来给这些卷起一个琐碎的名字,而不是一个很长的随机字符串。
我还没有找到挂载数据卷的方法,而只是使用--volumes-from命令。
好的。我现在可以使用它了,但是很笨拙。
用
docker volume ls
docker volume inspect <id of docker volume> …Run Code Online (Sandbox Code Playgroud) 有没有办法在保存对象时自动删除关联?
这样的事情:
type Parent struct {
gorm.Model
Name string
Children []*Child
}
type Child struct {
gorm.Model
Name string
ParentID uint
}
func myFunc(db *gorm.DB) {
p := &Parent{Name: "foo", Children:[]*Child{ {Name:"Bar"}, {Name:"Foobar"}}}
db.Save(&p)
p.Children = p.Children[1:]
db.Save(&p) // both children still exist in the database. i'd like the first child to be deleted here
}
Run Code Online (Sandbox Code Playgroud)
`
我发现了db.Model(&Parent).Association("Children").Clear()的一些技巧,但只是将ParentID值设置为NULL,而不是删除记录.有一个简单的方法吗?
提前谢谢了 :)
如果我的服务器上的sql数据库中有大量的类型化数据,那么如何使用协议缓冲区将此数据发送到dart客户端?
我正在尝试从 stdin 中读取输入,例如
3 2 1<ENTER>
Run Code Online (Sandbox Code Playgroud)
并将其保存在整数列表中。目前我的代码如下所示:
nums = make([]int, 0)
var i int
for {
_, err := fmt.Scan(&i)
if err != nil {
if err==io.EOF { break }
log.Fatal(err)
}
nums = append(nums, i)
}
Run Code Online (Sandbox Code Playgroud)
目前程序永远不会离开 for 循环。我找不到在文档中检查换行符的简单方法。我该怎么做?
编辑:
由于我知道几乎肯定会有四个数字,因此我尝试了以下操作:
var i0,i1,i2,i3 int
fmt.Scanf("%d %d %d %d\n", &i0, &i1, &i2, &i3)
Run Code Online (Sandbox Code Playgroud)
但这仅扫描了第一个数字,然后退出了程序。我不确定这是否是因为我使用的 z-shell。
编辑:
为了澄清,程序将暂停并要求用户输入由空格分隔并以换行符终止的 n 个数字的列表。这些数字应该存储在一个数组中。
我正在尝试在 ghdl 中使用我自己的包。有人可以帮助我进行结构和编译吗?目前我的代码如下所示:
在 ./my_package/my_package.vhd 中
library IEEE;
use IEEE.std_logic_1164.all;
package my_package is
constant my_constant : std_logic_vector(3 downto 0) := "1111";
end my_package;
Run Code Online (Sandbox Code Playgroud)
我将其编译到 my_package 中,如下所示:
myname@myrechner my_package$ ghdl -a --work=my_package my_package.vhd
Run Code Online (Sandbox Code Playgroud)
然后在./uses_my_package/uses_my_package.vhd中
library IEEE;
use IEEE.std_logic_1164.all;
entity uses_my_package is
port(
vector_in : in std_logic_vector(3 downto 0);
vector_out : out std_logic_vector(3 downto 0));
end uses_my_package;
architecture impl of uses_my_package is
begin
vector_out <= vector_in;
end impl;
Run Code Online (Sandbox Code Playgroud)
并在 ./uses_my_package/testbench.vhd 中:
library IEEE;
use IEEE.std_logic_1164.all;
library work;
use work.my_package.all;
entity testbench is …Run Code Online (Sandbox Code Playgroud) 我写一些应该很直接的东西很难,但我似乎无法正确理解语法.
我有食物的类层次结构:
Food :> Vegetable :> Bamboo
Run Code Online (Sandbox Code Playgroud)
而对于动物:
Animal :> Herbivore :> Panda
Run Code Online (Sandbox Code Playgroud)
而我正试图在动物中定义一种吃法,这样熊猫一般不能吃蔬菜,只能吃竹子.目前,我的代码如下所示:
class Food(val name : String)
class Vegetable(name: String) extends Food(name)
class Bamboo extends Vegetable("bamboo")
class Animal[F <: Food](val name : String) {
def eat[T <: F](f : T) = println(s"$name eats some yummy ${f.name}")
}
class Herbivore[F <: Vegetable](name :String) extends Animal[Vegetable](name)
class Panda extends Herbivore[Bamboo]("panda")
Run Code Online (Sandbox Code Playgroud)
我的麻烦是,当我制作蔬菜时,熊猫可以吃它:
(new Panda) eat (new Vegetable("potato"))
Run Code Online (Sandbox Code Playgroud)
出了点问题:(
任何帮助将非常欢迎:)