Day9

c语言基础部分终于结束了。可以上数据结构了。但是目前感觉对指针这一块儿还需要加深理解!!!(指的我头皮发麻)

- 有关于指针参数传递非常重要的一点:
- 如果int n = 5. n的类型是int,&n的类型是*int,那么*(&n)的类型是等价于n的类型,也就是int

- 动态内存分配。
1. 为什么需要动态内存分配?
2. 栈空间的局限性:
  1栈帧的大小,需要在编译时确定。栈空间不能存放动态大小的数据 、
  2栈空间大小是受限的:在典型的linux系统中主线程8MB,其他线程2MB。如果存放太多数据会栈溢出,程序崩溃。因此栈空间不能存放太大的数据。
  3每个线程都有自己的栈空间,栈空间不适合存放多线程共享的数据。
3. 他作用于:堆(heap)
[图片]
4. sp寄存器;bp寄存器(Stack pointer; base pointer)它的作用
[图片]
5. 如何进行动态内存分配?malloc(内存分配) , calloc(清0分配), relloc(调整之前分配出来的内存大小) 他们返回的类型都是void*(通用指针类型:我不知道他的基类型int or double?)
6. 通过在main函数里面定义指针指向(无名字)的预先分配的内存空间里面。但是由于无名字特性。我们该怎么操作呢:通过栈上的指针变量访问堆上的数据。

- 动态数组(当数组空间不够的时候,他可以自动扩容)
1. 我们通过写Vector.h的头文件以及他的实现来创建动态数组。(我感觉类似于java里面的getter setter?)
[图片]
2. vector.h ; main.c ; vector.c 的三方关系:
[图片]
3. 利用realloc函数进行扩容 realloc(void* ptr, size_t size): void* ptr-> 指向旧的内存块儿  size_t size:新内存的大小。
- 如果返回值为NULL:重新分配的内存失败,旧的内存块不会被释放。
- 不为NULL:重新分配成功。
- realloc既可以扩容,也可以缩容。
  - 缩容:把多余的释放掉。
  - 扩容:第一步尽量原地扩容。第二步:如果不能原地扩容,那么就复制到大的内存空间的位置,然后吧旧空间释放掉。

- 释放内存:(free)
1. 注意事项:
2. 严禁 double free
3. free之后对野指针进行解引用会产生未定义行为。

- 内存泄漏:程序中存在垃圾的现象。(这就会导致OOM现象。out of memory)
[图片]
- 动态分配的结构体:(链表)
[图片]
- 如果定义的链表类型是void的话就会发生head下一个节点是空值的现象。(怎么解决?二级指针**phead)

- 二级指针:Node** pp -> Node*p -> Node node !!!
[图片]
- 问题:传递参数的时候到底传一级指针还是二级指针。
- 解决:想修改哪个变量的值,就穿哪个变量的地址!!!
  - 如果是想修改指针变量的指向(值),传二级指针
  - 如果是想修改指针变量指向的对象,传一级指针

- 函数指针:
  - 他是什么?指向一个函数的首入口(首字节),那么这个指针就是函数指针。
  - 函数指针你只要知道他的入口他就会一直往下执行。
1. 怎么操作?他只支持两个操作:解引用,函数调用。
2. 编程范式:面向过程,面向对象,函数式编程(一等公民)<包含复制,作为参数,作为返回值>,逻辑式编程。
3. 在c语言中,函数不是一等公民,函数指针是一等公民
4. 在c语言中,可以通过函函数指针,进行函数式编程(有利于解耦合,易组合)。
[图片]
- qshort()函数就是典型利用了函数指针。它的功能:可以对任意一个数组排序。
- 解耦合的形象图例:compare是钩子函数
[图片]

#我的求职进度条#
全部评论

相关推荐

万喜油烟机售后维修服务热线号码羽技术支持万喜油烟机售后业务中的细微变化&nbsp;作为万喜油烟机售后维修企业容器技术支持的一员,每天会面对全球各地企业级客户提出的关于容器的各种问题,通过这几年的技术支持的经历,逐步发现容器问题客户的一些惯性,哪些是重度用户,哪些是轻度客户,这些客万喜油烟机户大概分布在什么行业等等。万喜油烟机售后服务电话400一1819一193在渐渐地接触过程中,发现有些万喜油烟机重度容器使用客户,所提出的问题场景也在逐步变化中,由于涉及法律法规,下面数据无法完整提供,只是提供相关简要说明。纵向维度&nbsp;从去年底开始,关于边缘集群的工单数量逐渐开始上升,增长幅度较大。其中涉及问题的边缘集群,超过一半左右来的客户集群规模比较大,集群节点规模数量级在几百个节点,甚至几千个节点规模。横向维度&nbsp;客户一:该用户是目前是国内&nbsp;ToC&nbsp;端个性化推荐服务提供商之一,该客户在今年才开始使用&nbsp;容器服务&nbsp;Edge&nbsp;版&nbsp;ACK&nbsp;Edge&nbsp;产品,到目前为止边缘集群的节点数已经快速破百。客户二:该用户是目前是国内电动汽车行业先驱者,并且一直处于新能源热门话题榜中,该客户第一次使用容器服务&nbsp;Edge&nbsp;版&nbsp;ACK&nbsp;Edge&nbsp;产品,到目前为止,边缘集群的节点数已经破千,占该客户所有容器集群节点数的近一半。客户三:该用户是全球著名无人&nbsp;IoT&nbsp;设备提供商之一。于去年开始使用容器服务&nbsp;Edge&nbsp;版&nbsp;ACK&nbsp;Edge&nbsp;产品后,快速增加&nbsp;ACK&nbsp;Edge&nbsp;比重,目前边缘集群已经承担了该客户容器的大部分业务形态,同时该客户提问的容器工单,一大半是关于边缘集群的。客户四:该用户是私域电商领域的领头羊企业,于今年开始使用容器服务&nbsp;Edge&nbsp;版&nbsp;ACK&nbsp;Edge产品,并快速的进行集群规模的扩张,到目前为止,边缘集群的节点数规模已经过千。这些客户在边缘集群上的使用,和我这几个月服务企业客户的体感是一致的,那就是边缘计算似乎越来越成为客户业务云原生化的一个方向,并且该比重会越来越高。这些短平快使用边缘集群的客户貌似并没统一的客户行业属性和画像,既有互联网电商,也有制造业,新能源骑车等交通行业线等等,并不像公有云具有强烈的行业属性,比如互联网,教培客户偏向于公有云,ToG,大交通客户偏向于专有云等等,似乎边缘计算出现就是为了终端复杂业务场景而生的。概念和业务形态&nbsp;边缘云计算构筑在位于中心云与终端之间的边缘基础设施上的新型分布式计算,是云计算能力由中心向边缘的下沉,强调通过云边一体、协同管理实现中心云计算模式下所无法满足的业务需求,是一种更加靠近数据产生源的云计算。“边缘”是一个非绝对的相对概念,边缘业务对网络时延、带宽、数据量级、经济性等多方面的不同需求都会影响边缘云部署的最佳位置。自动驾驶、云游戏等共享型业务,可部署在区域级别&nbsp;or&nbsp;省市级别的区域边缘云上,而面向工厂、港口、园区等的专享型边缘云业务既可以部署在贴近客户现场的边缘数据中上,也可以通过边缘网关等更轻量级的设备来实现。从技术路线上看,区域边缘云和现场边缘云同是基于边缘数据中心,是通过&nbsp;ICT&nbsp;基础设施的下沉实现边缘云的能力,而&nbsp;IoT&nbsp;边缘云是对于以工业场景为代表的各类现场设备进行云化的升级改造。定位和核心价值边缘云计算出现是为了补充集中式云计算能力的不足,因此边缘云计算的出现不是为了替代集中式云计算,当我们广义上去讨论的时候,其实应放在云-边-端的整体框架之下,将边缘云视作中心云在靠近终端用户的下沉。其实边缘云计算就类比章鱼,章鱼的大脑仅有&nbsp;40%&nbsp;的神经元,其余的&nbsp;60%&nbsp;神经元分布在章鱼个各个大腿之上,形成了“1&nbsp;个大脑+N&nbsp;个小脑”神经计算结构。这个和中心云+边缘云+终端用户架构极为相似,各种各样的终端用户采集到海量数据后,将需要进行实时处理的小规模、局部数据就近在边缘云上完成处理和反馈;而复杂、大规模的全局性的数据处理,则交给中心云进行处理和发布,中心云与边缘云统一管控、智能调度,形成算力的合理分配和业务逻辑的实现。边缘云计算相比中心云计算更加贴近数据产生和使用的终端用户,这些终端用户对网络时延和传输成本方面具有非常大的敏感性,而边缘云计算是云计算能力向边缘的下沉,同时也契合了低延迟和低成本的诉求。但是边缘侧的物理物理设备和运行环境不像中心云有统一的标准,硬件的性能参差不齐,因此边缘云需要与中心云进行协同处理,结合中心云的大规模计算能力和边缘云的低延迟,成本低的特点,既要实现在集中式云计算模式下无法实现的超低延时的信息交互,又要实现一部分的数据自闭环处理和反馈。超低延迟现阶段应用边缘云最主要的动力即为时延,尤其是需要实时交互、实时反馈的场景,比如智能终端设备,车辆网,自动驾驶等等。传统云计算模式下,从终端用户到中心云因物理距离的强力限制,网络延迟难以进一步降低,同时智能终端设备数量级的增长,必然对海量数据处理带来了要求。传输成本中心云计算下终端用户产生的数据都需要回传到云端进行处理,远距离的数据传输消耗的成本比较高,且大多数传回云端的数据,多是无用信息,在终端量级爆发增长下,对中心云的计算能力产生了大量损耗。网络安全有些行业因国家政策、行业特性、数据隐私保护等要求,对数据安全要求极高,敏感数据无法传回云端,但是这些行业也有业务云化的需求。典型应用场景&nbsp;超低时延需求、海量数据处理、边缘智能调度、数据安全规范是促使企业选择边缘云计算的几个主要因素,目前超低延迟特性和海量数据处理是边缘云计算相比中心云计算的最大优势。如右图所示,在工业互联网、&nbsp;车联网、智慧交通、云游戏和&nbsp;VR/AR&nbsp;等场景中,数据的传输和计算能力的需求是巨大的,边缘云计算恰好能满足这些高要求。Kubernetes:从中心化走向边缘化&nbsp;经过前面的铺垫,我们可以对未来云计算有大概的一个初步判断。那么作为云原生基石的&nbsp;Kubernetes&nbsp;在边缘计算场景下又是该如发展呢?是类似于&nbsp;IOE&nbsp;这种随着时代潮流逐渐淘汰,还是类似&nbsp;Vmware&nbsp;在自己的私域里不受影响,还是像现在&nbsp;AI&nbsp;大模型成为未来主流呢。这里先说下个人观点,Kubernetes&nbsp;插件体系和&nbsp;list-watch&nbsp;机制,让它天生就适合边缘云计算。Kubernetes&nbsp;是以应用为中心而设计的架构方案,以&nbsp;Kubernetes&nbsp;为编排工具,向下屏蔽底层基础设施和架构,实现不同底层资源架构的统一调度和管理;向上通过标准的容器镜像手段,实现承载多种业务形态和应用的自动化部署和快速恢复;横向拓展实现了突破中心云计算的边界,让底层算力的调用突破地域、云厂商和物理设备的限制,形成了云-边-端一体化的协同部署方案。Kubernetes&nbsp;在边缘云计算下的挑战&nbsp;Kubernetes&nbsp;是一个分布式架构的云原生系统,实现了管控-业务的分离,master&nbsp;节点负责管理&nbsp;worker&nbsp;节点,调度&nbsp;Pod&nbsp;以及控制集群运行状态。worker&nbsp;节点,负责运行容器,架空容器状态并及时上报。在边缘云计算场景下,主要面临以下挑战:服务范围广泛:苏州、上海、南京、成都、北京、台州、武汉、长沙、合肥、天津、南宁、广州、深圳、重庆、济南、昆明、东莞、无锡、南京、南昌、温州、杭州、宁波、佛山等地,均可享受我们的优质服务。全国24小时售后服务Kubernetes&nbsp;是一个强一致性的中心存储架构,相关&nbsp;Kubernetes&nbsp;资源的状态都会记录到管控侧并对这些资源进行统一调度和管理,那么在边缘多场景下,边缘和中心之间的网络状态是不稳定的,那么这种强一致性的逻辑就会遇到挑战;Worker&nbsp;节点通过&nbsp;List-Watch&nbsp;机制与&nbsp;Matser&nbsp;节点通信,实现该节点的上&nbsp;Kubernetes&nbsp;资源的同步,但是当出现边缘和中心的网络瓶颈时候,Worker&nbsp;节点是无自治能力,无法进行自我决策。Kubelet&nbsp;所需要执行的策略比较多,比如容器&nbsp;CRI,CSI,&nbsp;CNI&nbsp;等网络,存储,计算等资源,在大规模节点,有时候&nbsp;kubelet&nbsp;占用的资源接近&nbsp;1GB,这对边缘低配置硬件版本设施是个挑战。Kubernetes&nbsp;社区的主版本并没有主流开源边缘版本,而且边缘云计算涉及场景更加复杂,目前&nbsp;CNCF&nbsp;社区的边缘云计算开源项目主要针对就是上面三点挑战,利用&nbsp;Kubernetes&nbsp;多插件支持能力,将管控中心任务分布是部署,实现&nbsp;Kubernetes&nbsp;Master&nbsp;节点统一管控,智能调度;各个边缘集群节点有独立管控实现各自边缘的自治和业务同步,从而实现了云端管控、边缘自治的云-边-端一体化协同。
投递大连飞创信息技术有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务