lian2

Posted 坑坑尔不坑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lian2相关的知识,希望对你有一定的参考价值。

这个https://www.cnblogs.com/6262lonely/articles/11119625.html里收集了在kt工作时遇到问题后查找的一些链接。那时的自己,问题解决了就行,未将每一个问题仔细整理。在魔兽世界吧里面看到了几篇很老的帖子,那时的网友大部分还是很可爱。这一篇只能是杂记了……

看到了一个运维开发的博客,看到了docker inspect --format这篇。

https://www.escapelife.site/posts/8bf741fb.html#toc-heading-2

之前看和k8s有关的视频的时候,看到docker inspect --format这块,只是用了下。后面的工作中就用如下格式了:

 docker inspect containerID | grep -i network

docker inspect 输出的是json格式的数据,而docker inspect --format则使用给定的Go模板格式化输出。

 -f, --format string   Format the output using the given Go template

JSON中的数据类型:(插入的是Python格式的,需要现在前面加#号)

# number:和JavaScript的number完全一致;
# boolean:就是JavaScript的true或false;
# string:就是JavaScript的string;
# null:就是JavaScript的null;
# array:就是JavaScript的Array表示方式——[];
# object:就是JavaScript的 ... 表示方式。

并且,JSON还定死了字符集必须是UTF-8,表示多语言就没有问题了。为了统一解析,JSON的字符串规定必须用双引号"",Object的键也必须用双引号""。

参考:https://www.liaoxuefeng.com/wiki/1022910821149312/1023021554858080

Go模板语法:

 # 输出文本: . ,其中 . 表示当前的数据对象。
 # 输出变量: .variable ,其中 variable 表示要输出的变量名。
 # 输出变量的某个字段: .variable.field ,其中 field 表示要输出的字段名。
 # 条件判断: if condition  ...  end ,其中 condition 表示要判断的条件,如果条件成立,会执行 ... 中的代码。
 # 条件判断和 else: if condition  ...  else  ...  end ,其中 else 表示条件不成立时要执行的代码。
 # 循环: range array  ...  end ,其中 array 表示要循环的数组或切片,... 中的代码会对数组或切片中的每个元素进行渲染。
 # 变量赋值: $variable := value ,其中 variable 表示要赋值的变量名,value 表示要赋给变量的值。
 # 模板嵌套: template "name" . ,其中 name 表示要嵌套的模板名称,. 表示要传递给模板的数据对象。
 # 函数调用: function parameter ,其中 function 表示要调用的函数名,parameter 表示要传递给函数的参数。

ChatGPT给的答案。

Go官方:https://golang.org/pkg/text/template/

docker network inspect bridge
[
    
        "Name": "bridge",
        "Id": "bec9bbf537fd27653663bb7e8da59945280f4d60a48b6eb9f2094507eca56ecb",
        "Created": "2023-04-08T09:35:40.370935879+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": 
            "Driver": "default",
            "Options": null,
            "Config": [
                
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                
            ]
        ,
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": 
            "Network": ""
        ,
        "ConfigOnly": false,
        "Containers": 
            "0d12098b1009edcdeb1a7e3d124a124e0d20bc16aa480f64212fac1e6096a97d": 
                "Name": "inspiring_curie",
                "EndpointID": "a3dadd39d62010ebb1a0e4f32687033780156e385f462b3ee6734a6c36b05155",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            ,
            "fccb368b8e7d4b50c66c8057bf344fad049f17d3f46415a97b6c79cd30473671": 
                "Name": "ecstatic_dijkstra",
                "EndpointID": "525ebea7378729afd888c5e62f77ea2af0e4744fc848b7d24a7bdbfe9bb708bd",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            
        ,
        "Options": 
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        ,
        "Labels": 
    
]
`点号表示当前对象及上下文,和 JavaC++ 中的 this 类似,可以直接通过点来获取当前对象。另外,如果返回结果也是一个 Struct 对象(Json 中以花括号/大括号包含),则可以直接通过点号级联调用,获取子对象的指定属性值。`
[root@k8s-rancher ~]# docker network inspect -f \'.Name\' bridge bridge
`如果需要获取的属性名称包含点号(比如下列示例数据)或者以数字开头,则不能直接通过级联调用获取信息。因为属性名称中的点号会被解析成级联信息,进而导致返回错误结果。即便使用引号将其包含也会提示语法格式错误。此时,需要通过 index 来读取指定属性信息。`
`index是Go语言的内置函数,用于获取一个数组或切片(.Options)中指定索引位置(
com.docker.network.bridge.name)的元素。`
[root@k8s-rancher ~]# docker inspect -f \'/*读取网络在hosts上的名称*/index .Options "com.docker.network.bridge.name"\' bridge
docker0
# 自定义变量
[root@k8s-rancher ~]# docker inspect -f \'printlnrange $p,$conf := .NetworkSettings.Ports$p -> (index $conf 0).HostPortprintlnend\' fcc

  443/tcp -> 443
  80/tcp -> 80

 # range

  [root@k8s-rancher ~]# docker inspect --format \'range .Containers.NameprintlnelseWith No Containersend\' bridge
  inspiring_curie
  ecstatic_dijkstra

  [root@k8s-rancher ~]# docker inspect --format \'range .Containers.NameprintlnelseWith No Containersend\' none
  With No Containers

  # index(Config属性一个Map)

  [root@k8s-rancher ~]# docker inspect bridge -f \'(index .IPAM.Config 0).Gateway\'
  172.17.0.1

  [root@k8s-rancher ~]# docker inspect bridge -f \'(index .IPAM.Config 0).Subnet\'
  172.17.0.0/16

  # else

  1)not

  [root@k8s-rancher ~]# docker inspect -f \'if not .State.Restarting容器没有配置重启策略end\' $(docker ps -q)

 

SQL 联合查询

http://www.3lian.com/edu/2013/05-14/69869.html

 

内联inner join (类似交集)、左联left outer join 、右联right outer join 、全联full outer join(类似并集)。

 

内联:(类似交集)

select * from T1 ,T3 where T1.userid = T3.userid(其实这样的结果等同于select * from T1 inner join T3 on T1.userid=T3.userid 

 

SELECT S_USER.USERNAME, S_OFFICE.FULLNAME FROM S_USER, S_OFFICE WHERE S_USER.OFFICEID = S_OFFICE.OFID;

相当于

SELECT S_USER.USERNAME, S_OFFICE.FULLNAME FROM S_USER INNER JOIN S_OFFICE ON S_USER.OFFICEID = S_OFFICE.OFID;

以上是关于lian2的主要内容,如果未能解决你的问题,请参考以下文章