【语言的灵魂】C语言的灵魂 “ 指针 ”

🌟 前言

本篇是关于指针初阶的一个总结,其实指针被誉为 C语言的灵魂!

如果你不深入理解指针的话,你对指针的认识可能仅仅只停留在 指针就是变量的地址,会比较害怕使用指针,特别是一些高级操作!

但是,万事开头难!Let’s get it!

文章目录
一、内存本质
1. 内存编址
2. 内存地址空间
3. 变量的本质
二、指针是什么?
1. 变量放在哪里?
2. 总结
3. 思考
三、指针和指针类型
1. 指针 ± 整数
2. 解引用
四、野指针
1. 野指针成因
2. 规避野指针
🌳 指针初始化
🌳 小心指针越界
🌳 指针指向空间释放即使置NULL
🌳 指针使用之前检查有效性
五、指针运算
1. 指针 ± 整数(加减)
2. 指针 - 指针(减)
3. 指针的关系运算
六、指针和数组
1. 一维数组
七、多级指针
八、指针数组
九、总结
一、内存本质
1. 内存编址

什么是内存?

计算机的内存是一块用于存储数据的空间由一系列连续的存储单元组成,就像下面这样:
image-20211127221513175

 

每一个单元格都表示 1 个 bit,一个bit在 CS 同学看来就是 0、1 两种状态。
 
由于 1 个bit只能表示两个状态,所以规定 8个bit 为一组,命名为 byte(字节)。
 
并且将 byte 作为内存寻址的最小单元,也就是给每个 byte 一个编号,这个编号就叫内存的地址。

image-20211127221656474这就相当于,我们给小区里的每个单元、每个住户都分配一个门牌号: 301、302、401、402、501…

 

在生活中,我们需要保证门牌号唯一,这样就能通过门牌号很精准的定位到一家人。
 
同样,在计算机中,我们也要保证给每一个 byte 的编号都是唯一的,这样才能够保证每个编号都能访问到唯一确定的 byte。

2. 内存地址空间
上面我们说给内存中每个byte 唯一的编号,那么这个编号的范围就决定了计算机可寻址内存的范围。

所有编号连起来就叫做内存的地址空间,这和大家平时常说的电脑是 32 位还是 64 位有关。

早期 Intel 8086、8088 的 CPU 就是只支持 16 位地址空间,寄存器和地址总线都是 16 位,这意味着最多对 2^16 = 64 Kb 的内存编号寻址。
 
这点内存空间显然不够用,后来,80286 在 8086 的基础上将地址总线和地址寄存器扩展到了20 位,也被叫做 A20 地址总线。
 
但是,现在的计算机一般都是 32 位起步了,32 位意味着可寻址的内存范围是 2^32 byte = 4GB。
 
所以,如果你的电脑是 32 位的,那么你装超过 4G 的内存条也是无法充分利用起来的。

这就是内存和内存编址。

3. 变量的本质
有了内存,接下来我们需要考虑,int、double这些变量是如何存储在 0、1 单元格的。

在 C 语言中我们会这样定义变量:

int a = 999;
char c = 'c';
1
2
当你写下一个变量定义的时候,实际上是向内存申请了一块空间来存放你的变量。

我们都知道int 类型占 4个字节,并且在计算机中数字都是用补码表示的。

(不了解补码的可以看我这篇文章,在 移位操作符 这里详细介绍过:史上最全C语言操作符详解)

999换算成补码就是:0000 0011 1110 0111这里有 4 个byte,所以需要四个单元格来存储:
image-20211127224946356

 

有没有注意到,我们把高位的字节放在了低地址的地方。
 
那能不能反过来呢?
 
当然,这就引出了大端和小端。(关于大端和小端后期会专门写一篇文章介绍)
 
上面这种将高位字节放在内存低地址的方式叫做大端;
 
反之,将低位字节放在内存低地址的方式就叫做小端;
 
如图,小端存储:

image-20211127225105008

上面只说明了int型的变量如何存储在内存,而 floatchar 等类型实际上也是一样的,都需要先转换为补码

 

对于多字节的变量类型,还需要按照大端或者小端的格式,依次将字节写入到内存单元。

记住上面这两张图,这就是编程语言中所有变量的在内存中的样子,不管是int、char、指针、数组、结构体、对象.等等都是这样放在内存的。

二、指针是什么?
指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的内存单元,可以说地址指向该内存单元。

因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
通过上面对内存的解释,那我们可以画个图来理解内存:
image-20211127221245513

 

1. 变量放在哪里?
上面我说,定义一个变量实际就是向计算机申请了一块内存来存放。
 
那如果我们要想知道变量到底放在哪了呢?
 
可以通过运算符&(取地址) 来取得变量实际的地址,这个值就是变量所占内存块的起始地址。
(PS: 实际上这个地址是虚拟地址,并不是真正物理内存上的地址)
 
那获取之后如何来表示这是一个地址,而不是一个普通的值呢?

也就是在 C 语言中如何表示地址这个概念呢?

对,就是指针!

代码示例:

int main()
{
    int a = 10;//在内存中开辟一块空间存放变量a=10

    int* p = &a;//p为一个整形指针变量,int* 是p的类型,即整形指针
                //这里我们对变量a,取出它的地址,可以使用&(取地址)操作符。
                //将a的地址存放在p变量中,p就是一个之指针变量。
    return 0;
}

解析:

上面代码中,指针p指向变量a,意思就是指针变量p里面存放的是变量a的地址

p 中存储的就是变量 a 的地址,也叫做指向 a 的指针。

如图:
image-20211127223717506

 

关于指针的大小为什么是4个字节?

这里再说明一下:

32位操作系统之所以被称之为32位操作系统, 是因为CPU所能处理的数据的最大位数是32位;
 
32位操作系统所能支持的最大内存的大小是(2^32-1)Byte ≈ 4G。

指针存放的是一个地址,地址是一个8位十六进制的数字,也就是32位二进制的数字,而一个字节刚好是8位二进制数字,因此是4个字节;

任何类型的指针其大小都是4,因为其存放的都是一个地址,地址的大小就是4个字节。

那如果是64位操作系统呢?

在64位机器上,如果有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。

2. 总结
指针是个变量,存放内存单元的地址。

指针是用来存放地址的,地址是唯一标识一块地址空间的。

指针的大小在32位平台是4个字节,在64位平台是8个字节。

3. 思考
为什么我们需要指针?直接用变量名不行吗?
 
当然可以,但是变量名是有局限的。

变量名的本质是什么?
 
是变量地址的符号化,变量是为了让我们编程时更加方便,对人友好,可计算机可不认识什么变量 a,它只知道地址和指令。

假设我有一个需求:

代码示例:

int func(...) {
    ...
};

int main() {
    int a;
    func(...);
};

要求在func 函数里要能够修改 main 函数里的变量 a,这下咋整?在 main 函数里可以直接通过变量名去读写 a 所在内存。
 
但是在 func 函数里是看不见a 的呀!

你说可以通过&取地址符号,将 a 的地址传递进去:

int func(int address) {
  ....
};

int main() {
 int a;
 func(&a);

这样在func 里就能获取到 a 的地址,进行读写了。

理论上这是完全没有问题的,但是问题在于:

编译器该如何区分一个int里你存的到底是int类型的值,还是另外一个变量的地址(即指针)。
 
这如果完全靠我们编程人员去人脑记忆了,会引入复杂性,并且无法通过编译器检测一些语法错误。
 
而通过int * 去定义一个指针变量,会非常明确:这就是另外一个 int 型变量的地址。
 
编译器也可以通过类型检查来排除一些编译错误。

这就是指针存在的必要性。

实际上任何语言都有这个需求,只不过很多语言为了安全性,给指针戴上了一层枷锁,将指针包装成了引用。

同时,在这里提点小问题:

既然指针的本质都是变量的内存首地址,即一个 int类型的整数。

那为什么还要有各种类型呢?

比如 int 指针,float 指针,这个类型影响了指针本身存储的信息吗?

这个类型会在什么时候发挥作用?

三、指针和指针类型
我们都知道,变量有不同的类型,整形,浮点型等。

那指针有没有类型呢?当然有!

指针的定义方式是: type + *

不同类型的指针用来存放对应类型的变量:

char* 类型的指针是为了存放 char 类型变量的地址;
int* 类型的指针存放的是int类型的变量地址;
float* 类型的指针存放的是float类型的变量地址等。
代码示例:

char  *pc = NULL;
int   *pi = NULL;
short *ps = NULL;
long  *pl = NULL;
float *pf = NULL;
double *pd 若指针类型为int * 的指针+1,那么它将跳过4个字节的大小指向4个字节以后的内容:
image-20211128205412396= NULL;

 

若指针类型为char * 的指针+1,那么它只会跳过1个字节的大小指向下一个字节的内容,以此类推。

总结: 指针的类型决定了指针向前或者向后走一步有多大(距离)。

2. 解引用
上面的思考问题,就是为了引出指针解引用的。

pa中存储的是a变量的内存地址,那如何通过地址去获取a的值呢?

这个操作就叫做解引用,在 C 语言中通过运算符 *就可以拿到一个指针所指地址的内容了。

比如*pa就能获得a的值。

下面是指针内存示意图:
image-20211128213543110

 pa 指针首先是一个变量,它本身也占据一块内存,这块内存里存放的就是 a 变量的首地址。

这里主要解释下为什么要用int型来接受getchar函数。

很多时候,我们会写这样的两行代码:

char c;
c = getchar();
1
2
这样就很有可能出现问题。

因为getchar函数除了返回终端输入的字符外,在遇到Ctrl+D(Linux下)即文件结束符EOF时,getchar ()的返回EOF,这个EOF在函数库里一般定义为-1。

因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。

例题
下面用一个题目来看其实如何获取字符和输出字符的。

#include <stdio.h> 

int main() 

  char c,d,e,f; 
  printf("please input two characters:\n"); 
  c=getchar(); 
  putchar(c); 
  putchar('\n'); 
  d=getchar(); 
  putchar(d); 
  putchar('\n'); 
  e=getchar(); 
  putchar(e); 
  putchar('\n'); 
  f=getchar(); 
  putchar(f); 
  putchar('\n'); 
  printf("c= %c\n",c); 
  printf("d= %c\n",d); 
  printf("e= %c\n",e); 
  printf("f= %c\n",f); 

下面具体解释一下:

getchar函数每次从缓冲区中得到一个字符,putchar函数每次输出一个字符。

首先输入了两个字符12,然后回车,注意这时写入缓存中的有3个字符: 1,2,回车。

程序中有四个getchar(),于是c='1',d='2',e='\n'。

这时运行到f=getchar();输入缓存中的三个字符均被前三个getchar获取,这时需要用户输入,

这里输入了34

于是f='3',4和后面的回车没有被利用。

这便是整个流程。
 

 
当解引用的时候,就会从这个首地址连续划出 4 个 byte,然后按照 int类型的编码方式解释。
 
指针的类型决定了指针解引用的时候能够访问几个字节的内容。若指针类型为int *,那么将它进行解引用操作,它将可以访问从指向位置开始向后4个字节的内容:
image-20211128205722001

 

总结: 指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。

比如:char* 的指针解引用就只能访问一个字节,而 int*的指针的解引用就能访问四个字节。

四、野指针
概念:

野指针就是指向位置是不可知的(随机的、不正确的、没有明确限制的)指针。
指针越界也会导致野指针问题;

这里解释下:就是当你指针指向的范围超过数组名范围时,那么那个指针就是野指针了。

1. 野指针成因
指针未初始化
int main()
{
    int* p;//局部变量指针未初始化,默认为随机值

    *p = 20;

    return 0;

局部指针变量p未初始化,默认为随机值,所以这个时候的p就是野指针。

指针越界访问
int main()
{
    int arr[10] = { 0 };
    int* p = arr;//p指向数组的首元素
    int i = 0;

    for (i = 0; i < 12; i++)
    {
        //当指针指向的范围超出数组arr的范围时,p就是野指针
        *(p++) = i;//*(p+1)不断访问数组中的元素
    }

    return 0;
}

p为11时,此时p的地址已经不是数组内元素的地址了,它已经指向了数组后面的内存,这块内存属于哪个变量是未知的,因此访问这块内存空间是非法的。

简单来说:当指针指向的范围超出arr数组时,p就是野指针。

指针指向的空间释放
int* test() //返回值类型是int* 型
{
    int a = 10;
    return &a;
}
int main()
{
    int* p = test();
    return 0;
}

这样子写就会有问题,因为test()函数里面的a在出函数时候就被销毁了,a的空间就还给系统了;

这里执行很可能还是10,这个空间的内容还没有清除;

在c语言陷阱中有这个解释:(有的时候可能已经清除);总之不建议这样写

PS:其实你可以把野指针理解为 野狗🤣

2. 规避野指针
🌳 指针初始化
在定义指针时就对其进行初始化,即指向一个变量的地址,如果没有变量地址可指向,就赋值为空指针NULL;

    int a = 10;         
    int* pa = &a;      //指针变量的初始化
1

先导知识
1、十进制转R进制
例:100D(十进制)转换成二进制是多少?
例:100D(十进制)转换成八进制是多少?
例:100D(十进制)转换成十六进制是多少?
2、R进制转十进制(乘权求和法)
例:1001B(二进制)转换成十进制是多少?
例:102Q(八进制)转换成十进制是多少?
例:100H(十六进制)转换成十进制是多少?
3、二进制转八进制或十六进制
例:1010101B(二进制)转换成八进制是多少?
例:10101011B(二进制)转换成十六进制是多少?
4、八进制或十六进制转二进制
例:105Q(八进制)转成二进制是多少?
例:ABCH(十六进制)转成二进制是多少?
5、八进制和十六进制相互转换(以二进制位中间)
例:10H(十六进制)转成八进制是多少?
例:123Q(八进制)转成十六进制是多少?
其实关于进制转换的文章,我在网上也看到了很多教程,要么就是太啰嗦!

要么就是写的“花里胡哨”的,就没有那种简言易懂的文章!

但是我相信 只要你看了我这篇文章,再练习几道题,就简单啦!

话不多说,直接上干货!

先导知识
先介绍一下各种进制的表示字母:

B:二进制

O或者Q:八进制

D(或者不写):十进制

H:十六进制

1、十进制转R进制
注:这里的R代表任意进制(二进制、八进制、十六进制)

其实十进制转换任意进制,我们直接拿十进制除以要转换的进制

比如:

十进制转换二进制,我们就除以二

十进制转换八进制,我们就除以八

十进制转换十六进制,我们就除以十六

多说无益,直接上例题!

例:100D(十进制)转换成二进制是多少?

指针常见错误:引用未初始化的指针变量

试图引用未初始化的指针变量是初学者最容易犯的错误。
 
未初始化的指针变量就是“野”指针,它指向的是无效的地址。
 
有些书上说:“如果指针变量不初始化,那么它可能指向内存中的任何一个存储单元,这样就会很危险。
 
如果正好指向存储着重要数据的内存单元,而且又不小心向这个内存单元中写入了数据,把原来的重要数据给覆盖了,这样就会导致系统崩溃。
 
”这种说法是不正确的!如果真是这样的话就是编译器的一个严重的 BUG!

🌳 小心指针越界
特别是在数组的访问中,注意不要越界访问;

#include<stdio.h>
 
int main(void)
{
    int arr[10] = { 0 };
    int i = 0;                
    int* p = arr;             //接收arr数组首元素的地址
    for (i = 0; i <= 12; i++)//当i=10的时候已经是非法访问内存了,因为,我数组名的常量表达式内容只有10个元素。
    {
        *p = i;                //i每次循环赋值给指针p
        p++;                //指针自增+1,代指arr元素+1
 
        //*p++ = i 也是可以,这里虽说++优先级更高,但是它是后置运算符
    }
    return 0;
}

指针变量越界数组导致野指针问题!

🌳 指针指向空间释放即使置NULL
NULL:空指针,用来初始化指针或者给指针赋值;

说的简单一点就是:当你指针不知道怎么赋值,就赋值给一个空指针 NULL

Null是在计算中具有保留的值,用于指示指针不引用有效对象。
 
程序通常使用空指针来表示条件,例如未知长度列表的结尾或未执行某些操作;
 
这种空指针的使用可以与可空类型和选项类型中的Nothing值进行比较。
 
**空指针不应与未初始化的指针混淆:**保证空指针与指向有效对象的任何指针进行比较。
 
但是,根据语言和实现,未初始化的指针可能没有任何此类保证。
 
它可能与其他有效指针相等; 或者它可能比较等于空指针。它可能在不同的时间做两件事。

代码示例:

    int a = 10;            
    int* pa = &a;
 
    printf("%d\n", *pa);
 
    *pa = 20;                //此时当我们不想用它时候
    pa = NULL;                //就把pa指针置成NULL
 
    printf("%d\n",pa);

🌳 指针使用之前检查有效性
当你指针变量不可以用的时候就把它设置成NULL,当你指针变量可以用的时候就不是NULL。

就是当我们对这个指针进行初始化的话,那么它就是有效的,如果没有初始化那么就是无效的。

在使用指针前可以先判断指针是否为空指针NULL;

int main()
{
    int* p = NULL;
    //....
    int a = 10;
    p = &a;
    if (p != NULL)
    {
        *p = 20;
    }
    return 0;
}

五、指针运算
1. 指针 ± 整数(加减)
指针加或减一个整数,指针的内存将跳过指针类型个大小,比如:

int main()
{
    int arr[10] = { 0 };
    int* p = arr;//p指向arr的首元素地址
    int i = 0;
    
    for (i = 0; i < 10; i++)
    {
        *(p + i) = i;
    }
    
    for (i = 0; i < 10; i++)
    {
        printf("%d\n", arr[i]);
    }
    
    return 0;运行结果:
image-20211128212142129

 

认识
getchar是以 行 为单位进行存取的

当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D)

那么只有当最后一个输入字符为换行符'\n'(也可以是文件结束符EOF,EOF将在后面讨论)时, getchar才会停止执行,整个程序将会往下执行。

譬如下面程序代码:

while((c = getchar()) != EOF){
  putchar(c);
}

前言
实验准备
1、挂载光盘镜像
2、查看
3、创建挂载点并写入配置文件
挂载点
写入配置文件
挂载
4、创建repo文件
进入配置目录
添加yum源配置
5、清除并生成yum缓存
6、验证
前言
RedHat8和RedHat7相对而言,ISO镜像的目录结构发生了变化,完全按照7版本的方式去搭建本地yum源会导致不可用

而且8版本用的管理软件变成了DNF

下边介绍下8版本如何配置本地yum源

实验准备
1、一台rhel8.4主机

2、选择最小化安装(图形化安装也一样)

注意:因为最小化安装的话,是不能用vim编辑器的,只能用vi
只有等配好yum软件仓库以后运行:yum install vim -y 自己安装一个

1、挂载光盘镜像

2
3
执行程序,输入:abc,然后回车。

则程序就会去执行putchar(c),然后输出abc,这个地方不要忘了,系统输出的还有一个回车。然后可以继续输入,再次遇到换行符的时候,程序又会把那一行的输入的字符输出在终端上。

对于getchar,肯定很多初学的朋友会问,getchar不是以字符为单位读取的吗?

那么,既然我输入了第一个字符a,肯定满足while循环(c = getchar()) != EOF的条件阿,那么应该执行putchar(c)在终端输出一个字符a。

不错,我在用getchar的时候也是一直这么想的,但是程序就偏偏不着样执行,而是必需读到一个换行符或者文件结束符EOF才进行一次输出。

对这个问题的一个解释是:

在编写C的时候,当时并没有所谓终端输入的概念,所有的输入实际上都是按照文件进行读取的,文件中一般都是以行为单位的。因此,只有遇到换行符,那么程序会认为输入结束,然后采取执行程序的其他部分。
同时,输入是按照文件的方式存取的,那么要结束一个文件的输入就需用到EOF (Enf Of File). 这也就是为什么getchar结束输入退出时要用EOF的原因。

再来看一段代码:

#include <stdio.h>

int main()
{
  int c;
  c = getchar();
  
  while (c != EOF)
  {
     putchar();
       c= getchar(); 
  }
  return 0;
  
}

⭐解析:

因为p是int* 型的指针,当p+i 时,p跳过 ix(乘)4个字节的内存;
 
而数组中一个元素的大小就是四个字节,这个时候会跳过 i 个元素,p将直接指向数组第i个元素的地址,此时 *p访问四个字节的内存,就可以访问到第i个元素,并将第i个元素的值赋值为i。

2. 指针 - 指针(减)
指针减去指针的绝对值得到的是指针和指针中间的元素个数。

代码示例:

int main()
{
    int arr[10] = { 0 };

    printf("%d\n", &arr[5] - &arr[0]);

    printf("%d\n", &arr[0] - &arr[5]);

    return 0;
}运行结果:
image-20211128212701867

 

你会发现耳熟能详记得技术架构都被囊括其中:K8S、ETCD、Tars、Buildpacks、Mysql、MongoDb、Nginx…

容器技术使得应用具有了一种 “自包含” 的定义方式。所以,这样的应用才能以敏捷的、以可扩展可复制的方式发布在云上,发挥出云的能力。这也就是容器技术对云发挥出的革命性影响所在,所以说,容器技术正是云原生技术的核心底盘。

3. 技术范畴
云原生的技术范畴包括了以下几个方面:

1、云应用定义与开发流程。这包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等。

2、云应用的编排与管理流程。这也是 Kubernetes 比较关注的一部分,包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh。

3、监控与可观测性。这部分所强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。

4、云原生的底层技术,比如容器运行时、云原生存储技术、云原生网络技术等。

5、云原生工具集,在前面的这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等。

6、最后就是Serverless。Serverless 是一种 PaaS 的特殊形态,它定义了一种更为 “极端抽象” 的应用编写方式,包含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按实际使用计费(Pay as you go),因此 Serverless 计费也是重要的知识和概念。

4. 趋势
应用上云的大潮不可阻挡,云原生是目前软件行业最大的趋势之一。随着云原生成为各行业数字化转型的必选项,软件开发、部署和运维的方式正在发生前所未有的改变。

数字化转型是大趋势和必然选择,企业的发展也由平台技术驱动向应用服务驱动转变。而云原生正在重塑企业数字化转型的基础技术平台,是构建现在企业应用的基础技术架构,无论是互联网应用、企业交易类应用,还是大数据应用,甚至人工智能相关的负载等,都需要基于云原生架构。

5. 发展
趋势形成的原因,除了云原生的架构让开发可以快速持续发布,让服务按需快速伸缩,让系统更具弹性从而更具可用性等技术优势,就企业发展而言,云原生相关技术和标准来源于开源项目也是一个极其重要的原因。开源的生态,企业不用担心被供应商卡脖子,也不用担心技术迭代成本高的问题。基于这些基本点,云原生成为企业发展的战略是必然的。

6. 未来
对从业者而言,思维方式要进行转变。必须意识到云原生技术对企业应用开发方式将是一次全方位的重构。要思考如何利用容器、微服务等技术重写应用,利用 DevOps 重塑企业的研发和运维流程,利用 GitOps、声明式架构重新定义企业的流水线和运维方式,利用可观测性和 SLA(Service-Level Agreement,服务等级协议)升级原来的监控系统,利用云原生的以身份为中心的安全体系保障企业安全。

对开发人员、运维人员、软件交付人员、数据库管理人员等,利用趋势形成前的窗口期,系统掌握云原生技术体系,提升云原生技术实操能力,全面掌握容器、Kubernetes(K8s)、服务网格、DevOps等云原生技术,具备搭建和运维云原生平台的能力,是获得更大职业发展空间和更多可能性的必然选择。

最后
数字产业蓬勃发展,传统云计算产业走向成熟,大数据、物联网、人工智能、区块链各种新兴技术百花齐放,开发者大有用武之地。但与此同时,新技术层出不穷的涌现,也让开发者对现有技术能力产生焦虑,对于未来道路的选择变得困惑。

不可否认的是,云原生让开发者看到了更多可能。云原生技术的演进为开发者提供了更加 “聪明的方式” 去工作,即充分利用云原生平台的组件及工具链,屏蔽底层技术并节省不必要的时间花费,更加专注地聚焦业务价值创造以及创新。

如果说云是一种信仰,那么云原生就是一种态度,时代呼唤人人都应成为云原生开发者。

不用考虑云原生是不是未来,是不是趋势,因为当下,云原生已经到来!在我心中,云原生更多来说,是一个状态,或者是发展的一个过程,简单来说就是软件应用在上云过程为了适应云、用好云的一种技术架构。

你会发现耳熟能详记得技术架构都被囊括其中:K8S、ETCD、Tars、Buildpacks、Mysql、MongoDb、Nginx…

容器技术使得应用具有了一种 “自包含” 的定义方式。所以,这样的应用才能以敏捷的、以可扩展可复制的方式发布在云上,发挥出云的能力。这也就是容器技术对云发挥出的革命性影响所在,所以说,容器技术正是云原生技术的核心底盘。

3. 技术范畴
云原生的技术范畴包括了以下几个方面:

1、云应用定义与开发流程。这包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等。

2、云应用的编排与管理流程。这也是 Kubernetes 比较关注的一部分,包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh。

3、监控与可观测性。这部分所强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。

4、云原生的底层技术,比如容器运行时、云原生存储技术、云原生网络技术等。

5、云原生工具集,在前面的这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等。

6、最后就是Serverless。Serverless 是一种 PaaS 的特殊形态,它定义了一种更为 “极端抽象” 的应用编写方式,包含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按实际使用计费(Pay as you go),因此 Serverless 计费也是重要的知识和概念。

4. 趋势
应用上云的大潮不可阻挡,云原生是目前软件行业最大的趋势之一。随着云原生成为各行业数字化转型的必选项,软件开发、部署和运维的方式正在发生前所未有的改变。

数字化转型是大趋势和必然选择,企业的发展也由平台技术驱动向应用服务驱动转变。而云原生正在重塑企业数字化转型的基础技术平台,是构建现在企业应用的基础技术架构,无论是互联网应用、企业交易类应用,还是大数据应用,甚至人工智能相关的负载等,都需要基于云原生架构。

5. 发展
趋势形成的原因,除了云原生的架构让开发可以快速持续发布,让服务按需快速伸缩,让系统更具弹性从而更具可用性等技术优势,就企业发展而言,云原生相关技术和标准来源于开源项目也是一个极其重要的原因。开源的生态,企业不用担心被供应商卡脖子,也不用担心技术迭代成本高的问题。基于这些基本点,云原生成为企业发展的战略是必然的。

6. 未来
对从业者而言,思维方式要进行转变。必须意识到云原生技术对企业应用开发方式将是一次全方位的重构。要思考如何利用容器、微服务等技术重写应用,利用 DevOps 重塑企业的研发和运维流程,利用 GitOps、声明式架构重新定义企业的流水线和运维方式,利用可观测性和 SLA(Service-Level Agreement,服务等级协议)升级原来的监控系统,利用云原生的以身份为中心的安全体系保障企业安全。

对开发人员、运维人员、软件交付人员、数据库管理人员等,利用趋势形成前的窗口期,系统掌握云原生技术体系,提升云原生技术实操能力,全面掌握容器、Kubernetes(K8s)、服务网格、DevOps等云原生技术,具备搭建和运维云原生平台的能力,是获得更大职业发展空间和更多可能性的必然选择。

最后
数字产业蓬勃发展,传统云计算产业走向成熟,大数据、物联网、人工智能、区块链各种新兴技术百花齐放,开发者大有用武之地。但与此同时,新技术层出不穷的涌现,也让开发者对现有技术能力产生焦虑,对于未来道路的选择变得困惑。

不可否认的是,云原生让开发者看到了更多可能。云原生技术的演进为开发者提供了更加 “聪明的方式” 去工作,即充分利用云原生平台的组件及工具链,屏蔽底层技术并节省不必要的时间花费,更加专注地聚焦业务价值创造以及创新。

如果说云是一种信仰,那么云原生就是一种态度,时代呼唤人人都应成为云原生开发者。

不用考虑云原生是不是未来,是不是趋势,因为当下,云原生已经到来!在我心中,云原生更多来说,是一个状态,或者是发展的一个过程,简单来说就是软件应用在上云过程为了适应云、用好云的一种技术架构。

你会发现耳熟能详记得技术架构都被囊括其中:K8S、ETCD、Tars、Buildpacks、Mysql、MongoDb、Nginx…

容器技术使得应用具有了一种 “自包含” 的定义方式。所以,这样的应用才能以敏捷的、以可扩展可复制的方式发布在云上,发挥出云的能力。这也就是容器技术对云发挥出的革命性影响所在,所以说,容器技术正是云原生技术的核心底盘。

3. 技术范畴
云原生的技术范畴包括了以下几个方面:

1、云应用定义与开发流程。这包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等。

2、云应用的编排与管理流程。这也是 Kubernetes 比较关注的一部分,包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh。

3、监控与可观测性。这部分所强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。

4、云原生的底层技术,比如容器运行时、云原生存储技术、云原生网络技术等。

5、云原生工具集,在前面的这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等。

6、最后就是Serverless。Serverless 是一种 PaaS 的特殊形态,它定义了一种更为 “极端抽象” 的应用编写方式,包含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按实际使用计费(Pay as you go),因此 Serverless 计费也是重要的知识和概念。

4. 趋势
应用上云的大潮不可阻挡,云原生是目前软件行业最大的趋势之一。随着云原生成为各行业数字化转型的必选项,软件开发、部署和运维的方式正在发生前所未有的改变。

数字化转型是大趋势和必然选择,企业的发展也由平台技术驱动向应用服务驱动转变。而云原生正在重塑企业数字化转型的基础技术平台,是构建现在企业应用的基础技术架构,无论是互联网应用、企业交易类应用,还是大数据应用,甚至人工智能相关的负载等,都需要基于云原生架构。

5. 发展
趋势形成的原因,除了云原生的架构让开发可以快速持续发布,让服务按需快速伸缩,让系统更具弹性从而更具可用性等技术优势,就企业发展而言,云原生相关技术和标准来源于开源项目也是一个极其重要的原因。开源的生态,企业不用担心被供应商卡脖子,也不用担心技术迭代成本高的问题。基于这些基本点,云原生成为企业发展的战略是必然的。

6. 未来
对从业者而言,思维方式要进行转变。必须意识到云原生技术对企业应用开发方式将是一次全方位的重构。要思考如何利用容器、微服务等技术重写应用,利用 DevOps 重塑企业的研发和运维流程,利用 GitOps、声明式架构重新定义企业的流水线和运维方式,利用可观测性和 SLA(Service-Level Agreement,服务等级协议)升级原来的监控系统,利用云原生的以身份为中心的安全体系保障企业安全。

对开发人员、运维人员、软件交付人员、数据库管理人员等,利用趋势形成前的窗口期,系统掌握云原生技术体系,提升云原生技术实操能力,全面掌握容器、Kubernetes(K8s)、服务网格、DevOps等云原生技术,具备搭建和运维云原生平台的能力,是获得更大职业发展空间和更多可能性的必然选择。

最后
数字产业蓬勃发展,传统云计算产业走向成熟,大数据、物联网、人工智能、区块链各种新兴技术百花齐放,开发者大有用武之地。但与此同时,新技术层出不穷的涌现,也让开发者对现有技术能力产生焦虑,对于未来道路的选择变得困惑。

不可否认的是,云原生让开发者看到了更多可能。云原生技术的演进为开发者提供了更加 “聪明的方式” 去工作,即充分利用云原生平台的组件及工具链,屏蔽底层技术并节省不必要的时间花费,更加专注地聚焦业务价值创造以及创新。

如果说云是一种信仰,那么云原生就是一种态度,时代呼唤人人都应成为云原生开发者。

不用考虑云原生是不是未来,是不是趋势,因为当下,云原生已经到来!在我心中,云原生更多来说,是一个状态,或者是发展的一个过程,简单来说就是软件应用在上云过程为了适应云、用好云的一种技术架构。

你会发现耳熟能详记得技术架构都被囊括其中:K8S、ETCD、Tars、Buildpacks、Mysql、MongoDb、Nginx…

容器技术使得应用具有了一种 “自包含” 的定义方式。所以,这样的应用才能以敏捷的、以可扩展可复制的方式发布在云上,发挥出云的能力。这也就是容器技术对云发挥出的革命性影响所在,所以说,容器技术正是云原生技术的核心底盘。

3. 技术范畴
云原生的技术范畴包括了以下几个方面:

1、云应用定义与开发流程。这包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等。

2、云应用的编排与管理流程。这也是 Kubernetes 比较关注的一部分,包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh。

3、监控与可观测性。这部分所强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。

4、云原生的底层技术,比如容器运行时、云原生存储技术、云原生网络技术等。

5、云原生工具集,在前面的这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等。

6、最后就是Serverless。Serverless 是一种 PaaS 的特殊形态,它定义了一种更为 “极端抽象” 的应用编写方式,包含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按实际使用计费(Pay as you go),因此 Serverless 计费也是重要的知识和概念。

4. 趋势
应用上云的大潮不可阻挡,云原生是目前软件行业最大的趋势之一。随着云原生成为各行业数字化转型的必选项,软件开发、部署和运维的方式正在发生前所未有的改变。

数字化转型是大趋势和必然选择,企业的发展也由平台技术驱动向应用服务驱动转变。而云原生正在重塑企业数字化转型的基础技术平台,是构建现在企业应用的基础技术架构,无论是互联网应用、企业交易类应用,还是大数据应用,甚至人工智能相关的负载等,都需要基于云原生架构。

5. 发展
趋势形成的原因,除了云原生的架构让开发可以快速持续发布,让服务按需快速伸缩,让系统更具弹性从而更具可用性等技术优势,就企业发展而言,云原生相关技术和标准来源于开源项目也是一个极其重要的原因。开源的生态,企业不用担心被供应商卡脖子,也不用担心技术迭代成本高的问题。基于这些基本点,云原生成为企业发展的战略是必然的。

6. 未来
对从业者而言,思维方式要进行转变。必须意识到云原生技术对企业应用开发方式将是一次全方位的重构。要思考如何利用容器、微服务等技术重写应用,利用 DevOps 重塑企业的研发和运维流程,利用 GitOps、声明式架构重新定义企业的流水线和运维方式,利用可观测性和 SLA(Service-Level Agreement,服务等级协议)升级原来的监控系统,利用云原生的以身份为中心的安全体系保障企业安全。

对开发人员、运维人员、软件交付人员、数据库管理人员等,利用趋势形成前的窗口期,系统掌握云原生技术体系,提升云原生技术实操能力,全面掌握容器、Kubernetes(K8s)、服务网格、DevOps等云原生技术,具备搭建和运维云原生平台的能力,是获得更大职业发展空间和更多可能性的必然选择。

最后
数字产业蓬勃发展,传统云计算产业走向成熟,大数据、物联网、人工智能、区块链各种新兴技术百花齐放,开发者大有用武之地。但与此同时,新技术层出不穷的涌现,也让开发者对现有技术能力产生焦虑,对于未来道路的选择变得困惑。

不可否认的是,云原生让开发者看到了更多可能。云原生技术的演进为开发者提供了更加 “聪明的方式” 去工作,即充分利用云原生平台的组件及工具链,屏蔽底层技术并节省不必要的时间花费,更加专注地聚焦业务价值创造以及创新。

如果说云是一种信仰,那么云原生就是一种态度,时代呼唤人人都应成为云原生开发者。

不用考虑云原生是不是未来,是不是趋势,因为当下,云原生已经到来!在我心中,云原生更多来说,是一个状态,或者是发展的一个过程,简单来说就是软件应用在上云过程为了适应云、用好云的一种技术架构。

你会发现耳熟能详记得技术架构都被囊括其中:K8S、ETCD、Tars、Buildpacks、Mysql、MongoDb、Nginx…

容器技术使得应用具有了一种 “自包含” 的定义方式。所以,这样的应用才能以敏捷的、以可扩展可复制的方式发布在云上,发挥出云的能力。这也就是容器技术对云发挥出的革命性影响所在,所以说,容器技术正是云原生技术的核心底盘。

3. 技术范畴
云原生的技术范畴包括了以下几个方面:

1、云应用定义与开发流程。这包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等。

2、云应用的编排与管理流程。这也是 Kubernetes 比较关注的一部分,包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh。

3、监控与可观测性。这部分所强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。

4、云原生的底层技术,比如容器运行时、云原生存储技术、云原生网络技术等。

5、云原生工具集,在前面的这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等。

6、最后就是Serverless。Serverless 是一种 PaaS 的特殊形态,它定义了一种更为 “极端抽象” 的应用编写方式,包含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按实际使用计费(Pay as you go),因此 Serverless 计费也是重要的知识和概念。

4. 趋势
应用上云的大潮不可阻挡,云原生是目前软件行业最大的趋势之一。随着云原生成为各行业数字化转型的必选项,软件开发、部署和运维的方式正在发生前所未有的改变。

数字化转型是大趋势和必然选择,企业的发展也由平台技术驱动向应用服务驱动转变。而云原生正在重塑企业数字化转型的基础技术平台,是构建现在企业应用的基础技术架构,无论是互联网应用、企业交易类应用,还是大数据应用,甚至人工智能相关的负载等,都需要基于云原生架构。

5. 发展
趋势形成的原因,除了云原生的架构让开发可以快速持续发布,让服务按需快速伸缩,让系统更具弹性从而更具可用性等技术优势,就企业发展而言,云原生相关技术和标准来源于开源项目也是一个极其重要的原因。开源的生态,企业不用担心被供应商卡脖子,也不用担心技术迭代成本高的问题。基于这些基本点,云原生成为企业发展的战略是必然的。

6. 未来
对从业者而言,思维方式要进行转变。必须意识到云原生技术对企业应用开发方式将是一次全方位的重构。要思考如何利用容器、微服务等技术重写应用,利用 DevOps 重塑企业的研发和运维流程,利用 GitOps、声明式架构重新定义企业的流水线和运维方式,利用可观测性和 SLA(Service-Level Agreement,服务等级协议)升级原来的监控系统,利用云原生的以身份为中心的安全体系保障企业安全。

对开发人员、运维人员、软件交付人员、数据库管理人员等,利用趋势形成前的窗口期,系统掌握云原生技术体系,提升云原生技术实操能力,全面掌握容器、Kubernetes(K8s)、服务网格、DevOps等云原生技术,具备搭建和运维云原生平台的能力,是获得更大职业发展空间和更多可能性的必然选择。

最后
数字产业蓬勃发展,传统云计算产业走向成熟,大数据、物联网、人工智能、区块链各种新兴技术百花齐放,开发者大有用武之地。但与此同时,新技术层出不穷的涌现,也让开发者对现有技术能力产生焦虑,对于未来道路的选择变得困惑。

不可否认的是,云原生让开发者看到了更多可能。云原生技术的演进为开发者提供了更加 “聪明的方式” 去工作,即充分利用云原生平台的组件及工具链,屏蔽底层技术并节省不必要的时间花费,更加专注地聚焦业务价值创造以及创新。

如果说云是一种信仰,那么云原生就是一种态度,时代呼唤人人都应成为云原生开发者。

不用考虑云原生是不是未来,是不是趋势,因为当下,云原生已经到来!在我心中,云原生更多来说,是一个状态,或者是发展的一个过程,简单来说就是软件应用在上云过程为了适应云、用好云的一种技术架构。

你会发现耳熟能详记得技术架构都被囊括其中:K8S、ETCD、Tars、Buildpacks、Mysql、MongoDb、Nginx…

容器技术使得应用具有了一种 “自包含” 的定义方式。所以,这样的应用才能以敏捷的、以可扩展可复制的方式发布在云上,发挥出云的能力。这也就是容器技术对云发挥出的革命性影响所在,所以说,容器技术正是云原生技术的核心底盘。

3. 技术范畴
云原生的技术范畴包括了以下几个方面:

1、云应用定义与开发流程。这包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等。

2、云应用的编排与管理流程。这也是 Kubernetes 比较关注的一部分,包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh。

3、监控与可观测性。这部分所强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。

4、云原生的底层技术,比如容器运行时、云原生存储技术、云原生网络技术等。

5、云原生工具集,在前面的这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等。

6、最后就是Serverless。Serverless 是一种 PaaS 的特殊形态,它定义了一种更为 “极端抽象” 的应用编写方式,包含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按实际使用计费(Pay as you go),因此 Serverless 计费也是重要的知识和概念。

4. 趋势
应用上云的大潮不可阻挡,云原生是目前软件行业最大的趋势之一。随着云原生成为各行业数字化转型的必选项,软件开发、部署和运维的方式正在发生前所未有的改变。

数字化转型是大趋势和必然选择,企业的发展也由平台技术驱动向应用服务驱动转变。而云原生正在重塑企业数字化转型的基础技术平台,是构建现在企业应用的基础技术架构,无论是互联网应用、企业交易类应用,还是大数据应用,甚至人工智能相关的负载等,都需要基于云原生架构。

5. 发展
趋势形成的原因,除了云原生的架构让开发可以快速持续发布,让服务按需快速伸缩,让系统更具弹性从而更具可用性等技术优势,就企业发展而言,云原生相关技术和标准来源于开源项目也是一个极其重要的原因。开源的生态,企业不用担心被供应商卡脖子,也不用担心技术迭代成本高的问题。基于这些基本点,云原生成为企业发展的战略是必然的。

6. 未来
对从业者而言,思维方式要进行转变。必须意识到云原生技术对企业应用开发方式将是一次全方位的重构。要思考如何利用容器、微服务等技术重写应用,利用 DevOps 重塑企业的研发和运维流程,利用 GitOps、声明式架构重新定义企业的流水线和运维方式,利用可观测性和 SLA(Service-Level Agreement,服务等级协议)升级原来的监控系统,利用云原生的以身份为中心的安全体系保障企业安全。

对开发人员、运维人员、软件交付人员、数据库管理人员等,利用趋势形成前的窗口期,系统掌握云原生技术体系,提升云原生技术实操能力,全面掌握容器、Kubernetes(K8s)、服务网格、DevOps等云原生技术,具备搭建和运维云原生平台的能力,是获得更大职业发展空间和更多可能性的必然选择。

最后www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.iyiou.com/search?p=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.iyiou.com/search?p=%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.iyiou.com/search?p=%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
www.iyiou.com/search?p=%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.iyiou.com/search?p=%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E9%93%B6%E9%92%BB%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%85%AC%E5%8F%B8%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E9%93%BE%E6%8E%A5-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E5%AE%98%E7%BD%91-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
www.huoxing24.com/search/%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.iyiou.com/search?p=%E8%85%BE%E9%BE%99%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.iyiou.com/search?p=%E6%96%B0%E9%94%A6%E6%B1%9F%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值