当前位置: 首页 > news >正文

做外贸网站推广什么比较好站长工具手机综合查询

做外贸网站推广什么比较好,站长工具手机综合查询,简单大气的企业网站,自个网站作者#xff1a;运维有术星主 Milvus 是一个为通用人工智能#xff08;GenAI#xff09;应用而构建的开源向量数据库。它以卓越的性能和灵活性#xff0c;提供了一个强大的平台#xff0c;用于存储、搜索和管理大规模的向量数据。Milvus 能够执行高速搜索#xff0c;并以… 作者运维有术星主 Milvus 是一个为通用人工智能GenAI应用而构建的开源向量数据库。它以卓越的性能和灵活性提供了一个强大的平台用于存储、搜索和管理大规模的向量数据。Milvus 能够执行高速搜索并以最小的性能损失扩展到数百亿向量。其分布式架构确保了系统的高可用性和水平可扩展性满足不断增长的数据需求。同时Milvus 提供了丰富的 API 和集成选项使其成为机器学习、计算机视觉和自然语言处理等 AI 应用的理想选择。 随着 AI 大模型的兴起Milvus 成为了众多 AI 应用的首选向量数据库。本文将引导您探索如何在 KubeSphere 管理的 Kubernetes 集群上高效地部署和管理 Milvus 集群让您的应用能够充分利用 Milvus 的强大功能。 实战服务器配置(架构 1:1 复刻小规模生产环境配置略有不同) 主机名IPCPU内存系统盘数据盘用途ksp-registry192.168.9.904840200Harbor 镜像仓库ksp-control-1192.168.9.914840100KubeSphere/k8s-control-planeksp-control-2192.168.9.924840100KubeSphere/k8s-control-planeksp-control-3192.168.9.934840100KubeSphere/k8s-control-planeksp-worker-1192.168.9.9481640100k8s-worker/CIksp-worker-2192.168.9.9581640100k8s-workerksp-worker-3192.168.9.9681640100k8s-workerksp-storage-1192.168.9.974840400ElasticSearch/Longhorn/Ceph/NFSksp-storage-2192.168.9.984840300ElasticSearch/Longhorn/Cephksp-storage-3192.168.9.994840300ElasticSearch/Longhorn/Cephksp-gpu-worker-1192.168.9.10141640100k8s-worker(GPU NVIDIA Tesla M40 24G)ksp-gpu-worker-2192.168.9.10241640100k8s-worker(GPU NVIDIA Tesla P100 16G)ksp-gateway-1192.168.9.1032440自建应用服务代理网关/VIP192.168.9.100ksp-gateway-2192.168.9.1042440自建应用服务代理网关/VIP192.168.9.100ksp-mid192.168.9.1054840100部署在 k8s 集群之外的服务节点Gitlab 等合计15681526002100 实战环境涉及软件版本信息 操作系统openEuler 22.03 LTS SP3 x86_64KubeSpherev3.4.1Kubernetesv1.28.8KubeKey: v3.1.1Milvus Helm Charts4.2.0Milvus v.2.4.6 1. Milvus 部署规划 部署目标官方架构图所示的 Milvus 集群不包含 Load Balancer。 由于是初次安装部署对 Milvus 的架构、组件关系仅有一个初步的了解所以第一次部署只做如下考虑 使用 Helm 的方式大部分配置采用默认的 Values 部署更改组件镜像地址为本地私有仓库持久化存储使用自定义的 NFS 存储类 nfs-sc生产不建议用可能会造成磁盘 IO 不满足 etcd 的需求coordinators 没有选择 mixCoordinator而是使用多个独立的 coordinators这种方案运维成本高维护麻烦消息队列使用官方默认推荐的 pulsar不选择 kafka 后续会深入研究更正式的部署考虑 使用 Helm 和自定义 values 生成部署资源清单修改清单使用原生 kubectl 方式部署使用 Ceph 或是其它高性能存储不使用 NFS 存储消息队列继续使用官方推荐的 pulsar使用社区官方推荐的包含所有 coordinators 的 mixCoordinator 降低运维成本合理规划 Minio、Etcd、pulsar 等组件使用持久化存储时所分配的存储空间默认配置不可能满足所有场景Milvus 日志存储到持久化存储适配没有集中日志采集能力的 k8s 集群 重要说明 本文的内容对于安装部署 Milvus 有一定的借鉴意义但切勿将本文的实战过程直接用于任何类型的正式环境。 2. 前置条件 以下内容来自 Milvus 官方环境需求文档比较好理解不做翻译了。 2.1 硬件需求 ComponentRequirementRecommendationNoteCPUIntel 2nd Gen Core CPU or higherApple SiliconStandalone: 4 core or moreCluster: 8 core or moreCPU instruction setSSE4.2AVXAVX2AVX-512SSE4.2AVXAVX2AVX-512Vector similarity search and index building within Milvus require CPUs support of single instruction, multiple data (SIMD) extension sets. Ensure that the CPU supports at least one of the SIMD extensions listed. See CPUs with AVX for more information.RAMStandalone: 8GCluster: 32GStandalone: 16GCluster: 128GThe size of RAM depends on the data volume.Hard driveSATA 3.0 SSD or CloudStorageNVMe SSD or higherThe size of hard drive depends on the data volume. 2.2 软件需求 Operating systemSoftwareNoteLinux platformsKubernetes 1.16 or laterkubectlHelm 3.0.0 or laterminikube (for Milvus standalone)Docker 19.03 or later (for Milvus standalone)See Helm Docs for more information. SoftwareVersionNoteetcd3.5.0See additional disk requirements.MinIORELEASE.2023-03-20T20-16-18ZPulsar2.8.2 2.3 磁盘需求 磁盘性能对 etcd 至关重要。官方强烈建议使用本地 NVMe SSD 磁盘。较慢的磁盘响应可能导致频繁的集群选举最终降低 etcd 服务的性能甚至是集群的崩溃。 这个需求比较重要我刚接触 Milvus 时由于时间比较仓促在略知一二的情况下使用默认配置部署了一套半生产的 Milvus 集群。 因为选择了 NFS 存储且没有测试磁盘 IO 性能经常会出现 etcd 服务异常响应慢被 Kubernetes 的存活检测机制判断为不可用导致频繁自动重建 etcd 集群。 因此在 K8s 上创建 Milvus 集群时最好先测试一下集群持久化存储的性能。 Milvus 官方给出的测试磁盘性能的工具和命令如下 mkdir test-data fio --rwwrite --ioenginesync --fdatasync1 --directorytest-data --size2200m --bs2300 --namemytest 测试结果理想情况下您的磁盘应该达到 500 IOPS 以上99th percentile fsync latency 低于 10ms。请阅读 etcd 官方文档 了解更详细的需求。 具体的磁盘性能测试过程请参考下文。 2.4 Kubernetes 集群配置 k8s 集群一定要配置默认存储类Milvus 的 Helm 控制 storageClass 的参数不够灵活最好直接使用默认存储类简化配置。 3. 持久化存储性能测试 实战环境使用了自建的 NFS 存储部署 Milvus 之前先测试存储性能 官方建议的测试工具是 fio 为了在 K8s 中模拟测试我选择了 openEBS 官方提供的 openebs/tests-fio:latest 作为测试镜像创建测试 Pod。 3.1 创建测试 pvc 编辑测试 PVC 资源清单vi test-nfs-fio-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata:name: test-nfs-fio-pvc spec:storageClassName: nfs-scaccessModes:- ReadWriteManyresources:requests:storage: 1Gi 执行命令创建 PVC。 kubectl apply -f test-nfs-fio-pvc.yaml 3.2 创建测试 Pod 编辑测试 Pod 资源清单vi test-nfs-fio-pod.yaml kind: Pod apiVersion: v1 metadata:name: test-nfs-fio-pod spec:containers:- name: test-nfs-fio-podimage: openebs/tests-fio:latestcommand:- /bin/shargs:- -c- touch /mnt/SUCCESS sleep 86400volumeMounts:- name: nfs-fio-pvcmountPath: /mntrestartPolicy: Nevervolumes:- name: nfs-fio-pvcpersistentVolumeClaim:claimName: test-nfs-fio-pvc 执行命令创建 Pod。 kubectl apply -f test-nfs-fio-pod.yaml 3.3 连接测试 Pod 终端 执行下面的命令打开 fio 测试 Pod 终端。 kubectl exec -it test-nfs-fio-pod -- /bin/bash 查看已经挂载的 NFS 存储。 roottest-nfs-fio-pod:/# df -h Filesystem Size Used Avail Use% Mounted on overlay 100G 6.5G 94G 7% / tmpfs 64M 0 64M 0% /dev tmpfs 7.6G 0 7.6G 0% /sys/fs/cgroup 192.168.9.97:/datanfs/k8s/default-test-nfs-fio-pvc-pvc-7158aa17-f003-47a2-b6d6-07c69d014178 100G 746M 100G 1% /mnt /dev/mapper/openeuler-root 35G 2.3G 31G 7% /etc/hosts /dev/mapper/data-lvdata 100G 6.5G 94G 7% /etc/hostname shm 64M 0 64M 0% /dev/shm tmpfs 14G 12K 14G 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 7.6G 0 7.6G 0% /proc/acpi tmpfs 7.6G 0 7.6G 0% /proc/scsi tmpfs 7.6G 0 7.6G 0% /sys/firmware 3.4 测试磁盘性能 执行下面的测试命令。 mkdir /mnt/test-data fio --rwwrite --ioenginesync --fdatasync1 --directory/mnt/test-data --size2200m --bs2300 --namenfstest 测试结果 roottest-nfs-fio-pod:/# fio --rwwrite --ioenginesync --fdatasync1 --directory/mnt/test-data --size2200m --bs2300 --namenfstest nfstest: (g0): rwwrite, bs2300-2300/2300-2300/2300-2300, ioenginesync, iodepth1 fio-2.2.10 Starting 1 process nfstest: Laying out IO file(s) (1 file(s) / 2200MB) Jobs: 1 (f1): [W(1)] [100.0% done] [0KB/956KB/0KB /s] [0/426/0 iops] [eta 00m:00s] nfstest: (groupid0, jobs1): err 0: pid26: Tue Jul 23 02:55:35 2024write: io2199.2MB, bw870003B/s, iops378, runt2651558msecclat (usec): min4, max87472, avg224.30, stdev309.99lat (usec): min4, max87473, avg224.71, stdev310.00clat percentiles (usec):| 1.00th[ 7], 5.00th[ 8], 10.00th[ 8], 20.00th[ 9],| 30.00th[ 10], 40.00th[ 12], 50.00th[ 302], 60.00th[ 338],| 70.00th[ 366], 80.00th[ 398], 90.00th[ 442], 95.00th[ 482],| 99.00th[ 588], 99.50th[ 700], 99.90th[ 1848], 99.95th[ 3120],| 99.99th[ 7008]bw (KB /s): min 1, max 1078, per100.00%, avg873.03, stdev221.69lat (usec) : 1025.84%, 2016.33%, 501.64%, 1000.03%, 2500.23%lat (usec) : 50052.30%, 7503.19%, 10000.15%lat (msec) : 20.20%, 40.05%, 100.03%, 200.01%, 500.01%lat (msec) : 1000.01%cpu : usr0.38%, sys1.56%, ctx1567342, majf0, minf12IO depths : 1100.0%, 20.0%, 40.0%, 80.0%, 160.0%, 320.0%, 640.0%submit : 00.0%, 4100.0%, 80.0%, 160.0%, 320.0%, 640.0%, 640.0%complete : 00.0%, 4100.0%, 80.0%, 160.0%, 320.0%, 640.0%, 640.0%issued : totalr0/w1002985/d0, shortr0/w0/d0, dropr0/w0/d0latency : target0, window0, percentile100.00%, depth1Run status group 0 (all jobs):WRITE: io2199.2MB, aggrb849KB/s, minb849KB/s, maxb849KB/s, mint2651558msec, maxt2651558msec 测试结果说明 测试结果明显不符合官方建议的最低值。由于是个人测试环境也就无所谓了。生产环境请严谨测试、评估。 4. 使用 Helm 安装 Milvus 集群 Milvus 官方提供了 Operator、Helm 等多种方式的集群安装文档。本文实战演示了 Helm 的安装方式。其他方式请参考 Milvus 官方文档。 4.1 安装 Milvus Helm Chart 添加 Milvus Helm repository。 helm repo add milvus https://zilliztech.github.io/milvus-helm/ 更新本地 charts。 helm repo update milvus 4.2 安装 Milvus 官方默认安装命令仅供参考本文未用。 helm install my-release milvus/milvus 按规划设置自定义配置项执行下面的安装命令 helm install --namespace opsxlab --create-namespace opsxlab milvus/milvus \--set image.all.repositorymilvusdb/milvus \--set image.tools.repositorymilvusdb/milvus-config-tool \--set etcd.image.registrydocker.io \--set etcd.image.repositorymilvusdb/etcd \--set pulsar.images.broker.repositorymilvusdb/pulsar \--set pulsar.images.autorecovery.repositorymilvusdb/pulsar \--set pulsar.images.zookeeper.repositorymilvusdb/pulsar \--set pulsar.images.bookie.repositorymilvusdb/pulsar \--set pulsar.images.proxy.repositorymilvusdb/pulsar \--set pulsar.images.pulsar_manager.repositorymilvusdb/pulsar-manager \--set pulsar.pulsar_metadata.image.repositorymilvusdb/pulsar \--set minio.image.repositorymilvusdb/minio \--set etcd.persistence.storageClassnfs-sc \--set minio.persistence.storageClassnfs-sc \--set pulsar.zookeeper.volumes.data.storageClassNamenfs-sc \--set pulsar.bookkeeper.volumes.journal.storageClassNamenfs-sc 自定义配置说明 指定并自动创建命名空间 opsxlab设置组件的镜像地址本文为了演示修改方法保留了默认值实际使用中可以修改为自己的镜像仓库地址etcd 的镜像地址比较特殊有两个配置项请注意设置持久化存储类为 nfs-sc适用于 k8s 有多种存储类需要部署到指定存储类的场景所有配置仅供参考请参考官方文档查看更详细的配置 附录 默认安装的组件镜像地址及版本 序号组件名称默认 repository组件版本1milvusmilvusdb/milvusv2.4.62milvus-config-toolmilvusdb/milvus-config-toolv0.1.23etcdmilvusdb/etcd3.5.5-r44pulsarapachepulsar/pulsar2.9.55pulsar-managerapachepulsar/pulsar-managerv0.1.06miniominio/minioRELEASE.2023-03-20T20-16-18Z 4.3 查看安装结果 Helm 安装命令成功执行后观察 Pod 运行状态。 kubectl get pods -n opsxlab 安装成功后输出结果如下 $ kubectl get pods -n opsxlab NAME READY STATUS RESTARTS AGE opsxlab-etcd-0 1/1 Running 0 8m9s opsxlab-etcd-1 1/1 Running 0 8m20s opsxlab-etcd-2 1/1 Running 0 11m opsxlab-milvus-datacoord-6cd875684d-fbkgx 1/1 Running 6 (9m19s ago) 13m opsxlab-milvus-datanode-5c5558cbc7-r24vj 1/1 Running 6 (9m40s ago) 13m opsxlab-milvus-indexcoord-f48d66647-52crb 1/1 Running 0 13m opsxlab-milvus-indexnode-c6979d59b-rvm5p 1/1 Running 6 (9m44s ago) 13m opsxlab-milvus-proxy-79997676f9-hftdf 1/1 Running 6 (9m22s ago) 13m opsxlab-milvus-querycoord-5d94f97dc4-tv52n 1/1 Running 6 (9m43s ago) 13m opsxlab-milvus-querynode-59b9bd7c8b-7qljj 1/1 Running 6 (9m26s ago) 13m opsxlab-milvus-rootcoord-745b9fbb68-mr7st 1/1 Running 6 (9m36s ago) 13m opsxlab-minio-0 1/1 Running 0 13m opsxlab-minio-1 1/1 Running 0 13m opsxlab-minio-2 1/1 Running 0 13m opsxlab-minio-3 1/1 Running 0 13m opsxlab-pulsar-bookie-0 1/1 Running 0 13m opsxlab-pulsar-bookie-1 1/1 Running 0 13m opsxlab-pulsar-bookie-2 1/1 Running 0 13m opsxlab-pulsar-bookie-init-7l4kh 0/1 Completed 0 13m opsxlab-pulsar-broker-0 1/1 Running 0 13m opsxlab-pulsar-proxy-0 1/1 Running 0 13m opsxlab-pulsar-pulsar-init-ntbh8 0/1 Completed 0 13m opsxlab-pulsar-recovery-0 1/1 Running 0 13m opsxlab-pulsar-zookeeper-0 1/1 Running 0 13m opsxlab-pulsar-zookeeper-1 1/1 Running 0 13m opsxlab-pulsar-zookeeper-2 1/1 Running 0 12m KubeSphere 管理控制台查看部署的组件信息。 Depolyment8 个 StatefulSet7 个 Services17 个 从上面的 Deployment、StatefulSet、Services 资源数量来看默认部署的 Milvus 组件还是比较多的后期运维成本比较高。 4.4 配置认证并开启外部访问 默认配置部署的 Milvus没有启用安全认证任何人都可以随意读写。这不符合生产环境要求因此需要增加认证配置。 创建并编辑 Helm 自定义 values 配置文件vi custom-milvus.yaml。 extraConfigFiles:user.yaml: |common:security:authorizationEnabled: true 执行 helm 命令更新配置。 helm upgrade opsxlab milvus/milvus --values custom-milvus.yaml -n opsxlab 注意 如果安装时自定义了镜像地址上面的操作会导致所有组件的镜像地址被还原成 helm 默认值请谨慎使用。 默认配置部署的 Milvus 只能被 K8s 集群内部资源访问如果开放给集群外部需要定义外部访问方式本文选择最简单的 NodePort 方式。 创建并编辑外部访问 svc 资源清单vi milvus-external-svc.yaml。 kind: Service apiVersion: v1 metadata:name: opsxlab-milvus-externalnamespace: opsxlablabels:app: opsxlab-milvus-externalapp.kubernetes.io/name: milvus spec:ports:- name: milvusprotocol: TCPport: 19530targetPort: 19530nodePort: 31011selector:app.kubernetes.io/instance: opsxlabapp.kubernetes.io/name: milvuscomponent: proxyclusterIP:type: NodePort 执行命令创建外部服务。 kubectl apply -f milvus-external-svc.yaml 4.5 验证测试 Milvus 服务可用性 Milvus 官方默认提供了 hello_milvus.py 工具用来测试数据库的连接和读写。 工具获取方式 wget https://raw.githubusercontent.com/milvus-io/pymilvus/master/examples/hello_milvus.py 该脚本运行需要 Python 环境为了测试方便我自己制作了一个 Docker 镜像可用于在 Docker、k8s 环境中进行测试。 创建并编辑 milvus 测试 Pod 资源清单vi test-milvus-pod.yaml。 kind: Pod apiVersion: v1 metadata:name: test-milvus-pod spec:containers:- name: test-milvus-podimage: opsxlab/milvus-hello:v2.3.7-amd64command:- /bin/shargs:- -c- sleep 86400restartPolicy: Never 执行命令创建测试 Pod。 kubectl apply -f test-milvus-pod.yam 登录测试容器终端等待一段时间确认 Pod 创建成功后执行。 kubectl exec -it test-milvus-pod -- /bin/bash 官方hello_milvus.py 脚本默认连接不带密码认证的 Milvus 集群。我们的集群增加了认证需要修改脚本添加认证配置默认的用户名和密码为 root/Milvus 。 # 原内容32行connections.connect(default, hostlocalhost, port19530)# 修改为 connections.connect(default, host192.168.9.91, port31011, userroot, passwordMilvus) 执行测试命令。 python hello_milvus.py 正确执行后输出结果如下 : roottest-milvus-pod:/app# python hello_milvus.py start connecting to Milvus Does collection hello_milvus exist in Milvus: False Create collection hello_milvus Start inserting entities Number of entities in Milvus: 3001 Start Creating index IVF_FLAT Start loading Start searching based on vector similarity hit: id: 2998, distance: 0.0, entity: {random: 0.9728033590489911}, random field: 0.9728033590489911 hit: id: 999, distance: 0.09934990108013153, entity: {random: 0.9519034206569449}, random field: 0.9519034206569449 hit: id: 1310, distance: 0.10135537385940552, entity: {random: 0.26669865443188623}, random field: 0.26669865443188623 hit: id: 2999, distance: 0.0, entity: {random: 0.02316334456872482}, random field: 0.02316334456872482 hit: id: 2502, distance: 0.13083189725875854, entity: {random: 0.9289998713260136}, random field: 0.9289998713260136 hit: id: 2669, distance: 0.1590736210346222, entity: {random: 0.6080847854541138}, random field: 0.6080847854541138 search latency 0.2742s Start querying with random 0.5 query result: -{random: 0.6378742006852851, embeddings: [np.float32(0.8367804), np.float32(0.20963514), np.float32(0.6766955), np.float32(0.39746654), np.float32(0.8180806), np.float32(0.1201905), np.float32(0.9467144), np.float32(0.6947491)], pk: 0} search latency 0.2361s query pagination(limit4):[{random: 0.6378742006852851, pk: 0}, {random: 0.5763523024650556, pk: 100}, {random: 0.9425935891639464, pk: 1000}, {random: 0.7893211256191387, pk: 1001}] query pagination(offset1, limit3):[{random: 0.5763523024650556, pk: 100}, {random: 0.9425935891639464, pk: 1000}, {random: 0.7893211256191387, pk: 1001}] Start hybrid searching with random 0.5 hit: id: 2998, distance: 0.0, entity: {random: 0.9728033590489911}, random field: 0.9728033590489911 hit: id: 999, distance: 0.09934990108013153, entity: {random: 0.9519034206569449}, random field: 0.9519034206569449 hit: id: 1553, distance: 0.12913644313812256, entity: {random: 0.7723335927084438}, random field: 0.7723335927084438 hit: id: 2502, distance: 0.13083189725875854, entity: {random: 0.9289998713260136}, random field: 0.9289998713260136 hit: id: 2669, distance: 0.1590736210346222, entity: {random: 0.6080847854541138}, random field: 0.6080847854541138 hit: id: 2628, distance: 0.1914074569940567, entity: {random: 0.940077754658375}, random field: 0.940077754658375 search latency 0.2026s Start deleting with expr pk in [0 , 1] query before delete by exprpk in [0 , 1] - result: -{embeddings: [np.float32(0.8367804), np.float32(0.20963514), np.float32(0.6766955), np.float32(0.39746654), np.float32(0.8180806), np.float32(0.1201905), np.float32(0.9467144), np.float32(0.6947491)], pk: 0, random: 0.6378742006852851} -{embeddings: [np.float32(0.27875876), np.float32(0.95355743), np.float32(0.976228), np.float32(0.54545516), np.float32(0.16776836), np.float32(0.82360446), np.float32(0.65080017), np.float32(0.21096307)], pk: 1, random: 0.43925103574669633}query after delete by exprpk in [0 , 1] - result: [] Drop collection hello_milvus 5. 部署可视化管理工具 Attu Milvus 的可视化GUI管理工具官方推荐 Attu。它是一款 all-in-one 的 Milvus 管理工具。使用 Attu可以显著的降低 Milvus 运维管理成本。 5.1 安装 Attu Milvus Helm Chart 自带 Attu 的部署能力默认是禁用的。我本人比较喜欢手工安装所以下面介绍 kubectl 原生安装 Attu 的方法。 创建并编辑 Attu 部署资源清单 vi milvus-attu.yaml。 apiVersion: v1 kind: Service metadata:name: milvus-attu-externalnamespace: opsxlablabels:app: attu spec:type: NodePortclusterIP:ports:- name: attuprotocol: TCPport: 3000targetPort: 3000nodePort: 31012selector:app: attu--- apiVersion: apps/v1 kind: Deployment metadata:name: milvus-attunamespace: opsxlablabels:app: attu spec:replicas: 1selector:matchLabels:app: attutemplate:metadata:labels:app: attuspec:containers:- name: attuimage: zilliz/attu:v2.4imagePullPolicy: IfNotPresentports:- name: attucontainerPort: 3000protocol: TCPenv:- name: MILVUS_URLvalue: opsxlab-milvus:19530 执行命令创建 Attu 资源。 kubectl apply -f milvus-attu.yaml 5.2 登录 Attu 管理控制台 打开浏览器访问 K8s 集群任意节点 IP 的 31012 端口例如 http://192.168.9.91:31012默认用户名密码 root/Milvus。登录后请立即修改密码。 下面以一组 Attu 管理界面的预览截图结束本文。请各位自己探究 Attu 的强大功能。 登录页面 首页 系统视图 数据库-概览 数据库-向量搜索 数据库-数据 数据库-分区 数据库-数据段 数据库-属性 免责声明 笔者水平有限尽管经过多次验证和检查尽力确保内容的准确性但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。本文所述内容仅通过实战环境验证测试读者可学习、借鉴但严禁直接用于生产环境。由此引发的任何问题作者概不负责 本文由博客一文多发平台 OpenWrite 发布
http://www.hkea.cn/news/14342174/

相关文章:

  • 大学生兼职网网站建设计划书西安市市政建设网站
  • 瀑布流网站有哪些wordpress怎么加站点图标
  • 织梦怎么做网站地图成品网站和模板建站
  • 网站开发付款方式和比例自助建站网
  • 如何创建网站内容在线排名优化工具
  • 崇明网站建设如何做网站里的子网站
  • 用国外服务器做网站网站搜资源的搜索引擎
  • 适合用struts2做的网站网络营销策略是什么
  • 做电影网站的资源从哪里换邢台做网站哪家便宜
  • php做网站速成软件开发一天收费多少
  • 广州好的做网站公司做贷款的网站有哪些
  • 网站收录提交入口网站建设要什么软件
  • 做网站商城需要什么条件低调赚大钱的灰色行业
  • 响应式网站有什么好处中文 wordpress插件下载
  • 品牌网站建设黑白H狼做靓号网站
  • 做本地分类信息网站赚钱吗国外产品展示网站源码
  • 优秀的图片设计网站推荐wordpress网站布局
  • 长春做个人网站做不了class wp wordpress
  • 法治建设网站模块阳澄湖大闸蟹网站建设
  • 免费网站建设一级深圳做网站排名哪家好
  • 怎么做网站端口代理帝国cms 网站名称
  • 网站建设内页徐州建设工程招标公示
  • 腾讯网qq网站做网站多少流量可以做广告
  • 零陵做网站国内主流网站开发技术
  • 做广告在哪个网站做效果人流最多适合手机的网站
  • 知道一个网站怎么知道是谁做的百度优化中软属于国企还是央企
  • 广东品牌网站建设平台wordpress qqworld
  • 专升本需要考些什么科目百度seo公司整站优化软件
  • 贵阳网站建设多少钱?开发网站用什么语言最好吗
  • 成立网站是不是需要先成立公司应届生招聘去哪个网站