自己的学习网站
转: https://chenhe.me/post/inheritance-in-go/继承 vs 组合一句话解释,继承是「is sth」,组合是「has sth」。Go 采用组合完美契合了它鸭子类型(duck typing)的设计理念。“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。鸭子类型中,我们重点关注对象能做什么,而不在意它究竟是什么。对这个理念我略有感触。曾经在 Kotlin (java) 开发中遇到过这样的问题:第三方包中有个类,没有抽象出接口,我恰恰需要扩展这个东西。于是只好自己定义一个接口,然后写个代理类或者用其他奇奇怪怪的方法达成目的。你看,它明明是我接口的实现,仅仅因为缺少 implements 关键字,我就得大费周章。在鸭子类型中这个问题不复存在。组合要比继承灵活得多。比如 java 中不能让「卡车」既继承「车」又继承「货运工具」,这又偏偏是显示情况。你不能建模为「车 <- 货运工具 <- 卡车」,因为货运工具也可能是飞机。而组合可以轻松办到:type Car struct { Id string } type
获取所有索引curl --location 'http://xx.xx.xx.xx:9200/_cat/indices?v=null&h=index&s=index%3Aasc' \ --header 'Authorization: xxx' \ --data ''将所有index放入index.txt中创建账号密码凭证auth.iniuser=xxx password="xxx"修改代码 es.py# -*- coding=utf-8 -*- import os import multiprocessing index_names = 'index_1,index_2' index_list = [] from_host = 'xxx' to_host = 'xxx' def migrate_one_index_child(index_name): print(str.format("### begin to migrate index, pid: {}, index: {}", os.getpid(), ind
阿里云CentOS服务器挂载数据盘阿里云购买机器或者数据盘,并不会自动挂载在ECS机器上,需要手动的挂载。第一步:查看ECS是否存在数据盘,命令:sudo fdisk -l第二步:从命令上看有一个/dev/vdb的64.4G的数据盘,没有挂载,需要挂载。sudo fdisk /dev/vdb第三步:格式化数据盘(可选)mkfs.ext4 /dev/vdb1第四步:分区信息写入 fstab下次开机启动时可以自动挂载, 不然每次开机都要手动挂载echo /dev/vdb1 /mnt ext4 defaults 0 0 >> /etc/fstab第五步:创建文件,将数据盘挂载到创建的文件中mount /dev/vdb1 /home/mysqldata比如:我创建的文件是 /home/mysqldata第六步:查看是否挂载成功阿里云 ECS 重启后,挂载的依然消失了?数据挂到了 /mnt 下(重新挂载回去,并且数据不能有删除)如果需要将数据盘挂载到 /home/mysqldata 目录下,之前是在 /home/mysqldata 目录下的,先执行 umount /dev/vdb1
# 第一阶段: 构建依赖和工具 FROM osgeo/gdal:ubuntu-small-3.5.2 AS builder # 设置apt源 RUN sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list \ && sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list # 禁用时区设置 ENV DEBIAN_FRONTEND=noninteractive # 安装编译环境和工具 RUN apt-get update && apt-get install -y git pip build-essential libboost-dev \ libboost-filesystem-dev libboost-iostreams-dev libboos
Xinbo