- 主键一定会创建一个唯一索引,但是有唯一索引的列不一定是主键;
- 主键不允许为空值,唯一索引列允许空值;
- 一个表只能有一个主键,但是可以有多个唯一索引;
- 主键可以被其他表引用为外键,唯一索引列不可以;
- 主键是一种约束,而唯一索引是一种索引,是表的冗余数据结构,两者有本质的差别
Docker中无法停止或删除容器服务问题处理
有一个容器服务无法 stop、rm(docker rm -f)和 kill 等操作,也就是说这个容器服务无法终止
# ll /var/lib/docker/containers | grep caf8ef20f3c1
# cd /var/lib/docker/containers
# rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8
这个时候我们会收到这样的报错:
rm: 无法删除"/var/lib/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/secrets": 设备或资源忙
无法删除"/var/lib/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/shm": 设备或资源忙
(2)从上面报错我们可以看到“secrets”和“shm”共享挂载导致无法删除,首先找到挂载的位置,然后取消挂载后,再删除
# cat /proc/mounts |grep "docker" |grep "caf8ef20f3c1"
(3)取消挂载:
# umount /data/sys/var/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/secrets
# umount /data/sys/var/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/shm
(4)再次查看:
# cat /proc/mounts |grep "docker" |grep "caf8ef20f3c1" //已经没有啦
(5)现在执行删除docker的目录:
# cd /var/lib/docker/containers
# rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8
(6)删除容器服务
现在我们使用 rm 或 kill 来删除 容器服务:
# docker rm -f caf8ef20f3c1c
或
# docker kill --signal=SIGINT caf8ef20f3c1
最近实现了一套数据拼接的语法
开发中经常碰到需要拼接数据的情况,例如元数据
{
"order":[
{
"orderNo":"1234567899975554444",
"userId":"12",
"productId":"200"
},
{
"orderNo":"1234567899975554445",
"userId":"13",
"productId":"300"
}
],
"user":[
{
"id":"12",
"name":"timi",
"phone":"1333333333"
},
{
"id":"13",
"name":"timi2",
"phone":"1333333333"
}
],
"product":[
{
"id":"200",
"name":"name",
"imageId":"1"
},
{
"id":"300",
"name":"name",
"imageId":"1"
}
],
"image":[
{
"id":"1",
"url":"/aa/bb.jpg"
},
{
"id":"2",
"url":"/cc/dd.jpg"
}
]
}
一般需要拼接成
{
"order":[
{
"orderNo":"1234567899975554444",
"userName":"timi",
"userPhone":"1333333333",
"productName":"name",
"imageUrl":"/aa/bb.jpg"
}
]
}
一般都是需要写代码实现,而且中间还有数据字段需要隐藏或者转换,最近实现了一套规则,减少类似的代码书写,提升工作效率,全部使用规则实现数据的输出,找个时间整理一下开源出来
{
"order|rangeArray":[
{
"orderNo":"$(order.[#].orderNo)",
"userName":"$(order.[#].userId)|$(user.#(id=="$(variable)").name)",
"userPhone":"$(order.[#].userId)|$(user.#(id=="$(variable)"). phone)",
"productName":"$(order.[#].productId)|$(product.#(id=="$(variable)").name)",
"imageUrl":"$(order. productId)|$(product.#(id=="$(variable)").imageId)|$(image.#(id=="$(variable)").url)"
}
]
}
MySQL BIGINT UNSIGNED value is out of range 问题
原因是数据库字段类型相加的时候有些是有符号有些是无符号,改成统一的即可。当然根本原因是超过了数值的范围,我碰到的主要是有符号和无符号的计算问题
找出数组中比左边都大比右边的都小的元素,要求时间复杂度O(n),空间复杂度O(n)
var testArray = []int{1, 8, 6, 9, 10, 15, 12, 20}
testArrayLen := len(testArray)
minNum := testArray[testArrayLen-1]
maxNum := testArray[0]
minArray := make([]int, testArrayLen)
for i := testArrayLen - 1; i >= 0; i-- {
if testArray[i] < minNum {
minNum = testArray[i]
}
minArray[i] = minNum
}
for i := 0; i < testArrayLen-1; i++ {
if testArray[i] > maxNum {
maxNum = testArray[i]
if testArray[i] < minArray[i+1] {
fmt.Println(i)
}
}
}