大数据:什么是数据分析及环境搭建

news2024/12/26 9:20:22

一、什么是数据分析

当今世界对信息技术的依赖程度在不断加深,每天都会有大量的数据产生,我们经常会感到数据越来越多,但是要从中发现有价值的信息却越来越难。这里所说的信息,可以理解为对数据集处理之后的结果,是从数据集中提炼出的可用于其他场合的结论性的东西,而从原始数据中抽取出有价值的信息的这个过程我们就称之为数据分析,它是数据科学工作的一部分。

定义:数据分析是有针对性的收集、加工、整理数据并采用统计、挖掘等技术对数据进行分析和解释的科学和艺术

数据分析师的职责和技能栈

HR在发布招聘需求时,通常将数据工程、数据分析、数据挖掘等岗位都统称为数据分析岗位,但是根据工作性质的不同,又可以分为偏工程的数据治理方向、偏业务的数据分析方向、偏算法的数据挖掘方向、偏开发的数据开发方向、偏产品的数据产品经理。我们通常所说的数据分析师主要是指业务数据分析师,很多数据分析师的职业生涯都是从这个岗位开始的,而且这个岗位也是招聘数量最多的岗位。业务数据分析师在公司通常不属于研发部门而属于运营部门,所以这个岗位也称为数据运营商业分析,这类人员通常也被称为“BI工程师”。通常招聘信息对这个岗位的描述(JD)是:

  1. 负责相关报表的输出。
  2. 建立和优化指标体系。
  3. 监控数据波动和异常,找出问题。
  4. 优化和驱动业务,推动数字化运营。
  5. 找出潜在的市场和产品的上升空间。

根据上面的描述,作为业务数据分析师,我们的工作不是给领导一个简单浅显的结论,而是结合公司的业务,完成监控数据揪出异常找到原因探索趋势等工作。作为数据分析师,不管是用 Python 语言、Excel、SPSS或其他的商业智能工具,工具只是达成目标的手段,数据思维是核心技能,从实际业务问题出发到最终发现数据中的商业价值是终极目标。数据分析师在很多公司只是一个基础岗位,精于业务的数据分析师可以向数据分析经理数据运营总监等管理岗位发展;对于熟悉机器学习算法的数据分析师来说,可以向数据挖掘工程师算法专家方向发展,而这些岗位除了需要相应的数学和统计学知识,在编程能力方面也比数据分析师有更高的要求,可能还需要有大数据存储和处理的相关经验。数据治理岗位主要是帮助公司建设数据仓库或数据湖,实现数据从业务系统、埋点系统、日志系统到分析库的转移,为后续的数据分析和挖掘提供基础设施。数据治理岗位对 SQL 和 HiveSQL 有着较高的要求,要求能够熟练的使用 ETL 工具,此外可能还需要对 Hadoop 生态圈有一个很好的认知。作为数据产品经理,除了传统产品经理的技能栈之外,也需要较强的技术能力,例如要了解常用的推荐算法、机器学习模型,能够为算法的改进提供依据,能够制定相关埋点的规范和口径,虽然不需要精通各种算法,但是要站在产品的角度去考虑数据模型、指标、算法等的落地

以下是我总结的数据分析师的技能栈,仅供参考。

  1. 计算机科学(数据分析工具、编程语言、数据库)
  2. 数学和统计学(数据思维、统计思维)
  3. 人工智能(机器学习中的数据挖掘算法)
  4. 业务理解能力(沟通、表达、经验)
  5. 总结和表述能力(商业PPT、文字总结)

全部文章请访问专栏:《Python全栈教程(0基础)》
再推荐一下最近热更的:《大厂测试高频面试题详解》 该专栏对近年高频测试相关面试题做详细解答,结合自己多年工作经验,以及同行大佬指导总结出来的。旨在帮助测试、python方面的同学,顺利通过面试,拿到自己满意的offer!

文章目录

    • 一、什么是数据分析
      • 数据分析师的职责和技能栈
      • 数据分析的流程
      • 数据分析相关库
        • 三大神器
        • 其他相关库
    • 二、环境准备
      • 安装和使用 Anaconda
        • conda命令
      • 使用Notebook
        • 安装和启动Notebook
        • Notebook使用技巧

数据分析的流程

我们提到数分析这个词很多时候可能指的都是狭义的数据分析,这类数据分析主要目标就是生成可视化报表并通过这些报表来洞察业务中的问题。广义的数据分析还包含了数据挖掘的部分,不仅要通过数据实现对业务的监控和分析,还要利用机器学习算法,找出隐藏在数据背后的知识,并利用这些知识为将来的决策提供支撑。简单的说,一个完整的数据分析应该包括基本的数据分析和深入的数据挖掘两个部分

基本的数据分析工作一般包含以下几个方面的内容,当然因为行业和工作内容的不同会略有差异。

  1. 确定目标(输入):理解业务,确定指标口径
  2. 获取数据:数据仓库、电子表格、三方接口、网络爬虫、开放数据集等
  3. 清洗数据:缺失值/重复值/异常值处理、数据变换(格式化、规范化)、离散化等
  4. 数据透视:运算、统计、分组、聚合、可视化
  5. 数据报告(输出):数据发布,工作成果总结汇报
  6. 分析洞察(后续):解释数据的变化,提出对应的方案

深入的数据挖掘工作通常包含以下几个方面的内容,当然因为行业和工作内容的不同会略有差异。

  1. 确定目标(输入):理解业务,明确挖掘目标
  2. 数据准备:数据采集、数据描述、数据探索、质量判定等
  3. 数据加工:提取数据、清洗数据、数据变换、特殊编码、降维、特征选择等
  4. 数据建模:模型比较、模型选择、算法应用
  5. 模型评估:交叉检验、参数调优、结果评价
  6. 模型部署(输出):模型落地、业务改进、运营监控、报告撰写

数据分析相关库

使用 Python 从事数据科学相关的工作是一个非常棒的选择,因为 Python 整个生态圈中,有大量的成熟的用于数据科学的软件包(工具库)。而且不同于其他的用于数据科学的编程语言(如:Julia、R),Python 除了可以用于数据科学,能做的事情还很多,可以说 Python 语言几乎是无所不能的。

三大神器

  1. NumPy:支持常见的数组和矩阵操作,通过ndarray类实现了对多维数组的封装,提供了操作这些数组的方法和函数集。由于 NumPy 内置了并行运算功能,当使用多核 CPU 时,Numpy会自动做并行计算。
  2. Pandas:pandas 的核心是其特有的数据结构DataFrameSeries,这使得 pandas 可以处理包含不同类型的数据的负责表格和时间序列,这一点是NumPy的ndarray做不到的。使用 pandas,可以轻松顺利的加载各种形式的数据,然后对数据进行切片、切块、处理缺失值、聚合、重塑和可视化等操作。
  3. Matplotlib:matplotlib 是一个包含各种绘图模块的库,能够根据我们提供的数据创建高质量的图形。此外,matplotlib 还提供了 pylab 模块,这个模块包含了很多像 MATLAB 一样的绘图组件。

其他相关库

  1. SciPy:完善了 NumPy 的功能,封装了大量科学计算的算法,包括线性代数、稀疏矩阵、信号和图像处理、最优化问题、快速傅里叶变换等。
  2. Seaborn:seaborn 是基于 matplotlib 的图形可视化工具,直接使用 matplotlib 虽然可以定制出漂亮的统计图表,但是总体来说还不够简单方便,seaborn 相当于是对 matplotlib 做了封装,让用户能够以更简洁有效的方式做出各种有吸引力的统计图表。
  3. Scikit-learn:scikit-learn 最初是 SciPy 的一部分,它是 Python 数据科学运算的核心,提供了大量机器学习可能用到的工具,包括:数据预处理、监督学习(分类、回归)、无监督学习(聚类)、模式选择、交叉检验等。
  4. Statsmodels:包含了经典统计学和经济计量学算法的库。

二、环境准备

如果希望快速开始使用 Python 处理数据科学相关的工作,建议大家直接安装 Anaconda,然后使用 Anaconda 中集成的 Notebook 或 JupyterLab 工具来编写代码。因为对于新手来说,先安装官方的 Python 解释器,再逐个安装工作中会使用到的三方库文件会比较麻烦,尤其是在 Windows 环境下,经常会因为构建工具或 DLL 文件的缺失导致安装失败,而一般新手也很难根据错误提示信息采取正确的解决措施,容易产生严重的挫败感。如果计算机上已经有 Python 解释器环境了,也可以直接使用 Python 的包管理工具 pip 安装 Jupyter,再根据实际工作的需要安装三方库,这种方式适合有一定经验的用户。

安装和使用 Anaconda

对于个人用户来说,可以从 Anaconda 的官方网站下载它的“个人版(Individual Edition)”安装程序,安装完成后,你的计算机上不仅拥有了 Python 环境和 Spyder(类似于PyCharm的集成开发工具),还拥有了与数据科学工作相关的近200个工具包,包括我们上面提到 Python 数据分析三大神器。除此之外,Anaconda 还提供了一个名为 conda 的包管理工具,通过这个工具不仅可以管理 Python 的工具包,还可以用于创建运行 Python 程序的虚拟环境。

如上图所示,可以通过 Anaconda 官网提供的下载链接选择适合自己操作系统的安装程序,建议大家选择图形化的安装程序,下载完成后双击安装程序开始安装。安装过程基本使用默认设置即可,完成安装后,macOS 用户可以在“应用程序”或“Launchpad”中找到名为“Anaconda-Navigator”的应用程序,运行该程序可以看到如下所示的界面,我们可以在这里选择需要执行的操作。

对于 Windows 用户,建议按照安装向导的提示和推荐的选项来安装 Anaconda(除了安装路径,基本也没有什么需要选择的),安装完成后可以在“开始菜单”中找到“Anaconda3”。

温馨提示:可以选择 Miniconda 作为 Anaconda 的替代品,Miniconda 只会安装 Python 解释器环境和一些必要的工具,其他的三方库由用户自行选择安装。其实我个人并不喜欢 Anaconda,因为它是给小白用户使用的,我们有了 Python 以后完全可以按照自己的意愿来安装需要的三方库。

conda命令

如果希望使用 conda 工具来管理依赖项或者创建项目的虚拟环境,可以在终端或命令行提示符中使用 conda 命令。Windows 用户可以在“开始菜单”中找到“Anaconda3”,然后点击“Anaconda Prompt”来启动支持 conda 的命令行提示符。macOS 用户建议直接使用“Anaconda-Navigator”中的“Environments”,通过可视化的方式对虚拟环境和依赖项进行管理。

  1. 版本和帮助信息。

    • 查看版本:conda -Vconda --version
    • 获取帮助:conda -hconda --help
    • 相关信息:conda list
  2. 虚拟环境相关。

    • 显示所有虚拟环境:conda env list
    • 创建虚拟环境:conda create --name venv
    • 指定 Python 版本创建虚拟环境:conda create --name venv python=3.7
    • 指定 Python 版本创建虚拟环境并安装指定依赖项:conda create --name venv python=3.7 numpy pandas
    • 通过克隆现有虚拟环境的方式创建虚拟环境:conda create --name venv2 --clone venv
    • 分享虚拟环境并重定向到指定的文件中:conda env export > environment.yml
    • 通过分享的虚拟环境文件创建虚拟环境:conda env create -f environment.yml
    • 激活虚拟环境:conda activate venv
    • 退出虚拟环境:conda deactivate
    • 删除虚拟环境:conda remove --name venv --all

    说明:上面的命令中,venvvenv2是虚拟环境文件夹的名字,可以将其替换为自己喜欢的名字,但是强烈建议使用英文且不要出现空格或其他特殊字符。

  3. 包(三方库或工具)管理。

    • 查看已经安装的包:conda list
    • 搜索指定的包:conda search matplotlib
    • 安装指定的包:conda install matplotlib
    • 更新指定的包:conda update matplotlib
    • 移除指定的包:conda remove matplotlib

    说明:在搜索、安装和更新软件包时,默认会连接到官方网站进行操作,如果觉得速度不给力,可以将默认的官方网站替换为国内的镜像网站,推荐使用清华大学的开源镜像网站。将默认源更换为国内镜像的命令是:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main。如果需要换回默认源,可以使用命令conda config --remove-key channels

使用Notebook

安装和启动Notebook

如果已经安装了 Anaconda,macOS 用户可以按照上面所说的方式在“Anaconda-Navigator”中直接启动“Jupyter Notebook”(以下统一简称为 Notebook)。Windows 用户可以在“开始菜单”中找到 Anaconda 文件夹,接下来选择运行文件夹中的“Jupyter Notebook”就可以开始数据科学的探索之旅。

对于安装了 Python 环境但是没有安装 Anaconda 的用户,可以用 Python 的包管理工具pip来安装jupyter,然后在终端(Windows 系统为命令行提示符)中运行jupyter notebook命令来启动 Notebook,如下所示。

安装 Notebook:

pip install jupyter

安装三大神器:

pip install numpy pandas matplotlib

运行 Notebook:

jupyter notebook

Notebook 是基于网页的用于交互计算的应用程序,可以用于代码开发、文档撰写、代码运行和结果展示。简单的说,你可以在网页中直接编写代码运行代码,代码的运行结果也会直接在代码块下方进行展示。如在编写代码的过程中需要编写说明文档,可在同一个页面中使用 Markdown 格式进行编写,而且可以直接看到渲染后的效果。此外,Notebook 的设计初衷是提供一个能够支持多种编程语言的工作环境,目前它能够支持超过40种编程语言,包括 Python、R、Julia、Scala 等。

首先,我们可以创建一个用于书写 Python 代码的 Notebook:
在这里插入图片描述
接下来,我们就可以编写代码、撰写文档和运行程序啦:
在这里插入图片描述

Notebook使用技巧

如果使用 Python 做工程化的项目开发,PyCharm 肯定是最好的选择,它提供了一个集成开发环境应该具有的所有功能,尤其是智能提示、代码补全、自动纠错这类功能会让开发人员感到非常舒服。如果使用 Python 做数据科学相关的工作,Notebook 并不比 PyCharm 逊色,在数据和图表展示方面 Notebook 更加优秀。这个工具的使用非常简单,大家可以看看 Notebook 菜单栏,相信理解起来不会有太多困难,在知乎上有一篇名为《最详尽使用指南:超快上手Jupyter Notebook》的文章,也可以帮助大家快速认识 Notebook。

说明:Jupyter 官网上还有一个名为 JupyterLab 的工具,被称之为“Next-Generation Notebook”,用户界面较之 Notebook 更加友好,有兴趣的读者可以使用pip install jupyterlab命令来安装这个工具,然后通过jupyter lab来启动它。

下面我为大家介绍一些 Notebook 的使用技巧,希望能够帮助大家提升工作效率。

  1. 自动补全。在使用 Notebook 编写代码时,按Tab键会获得代码提示。

  2. 获得帮助。在使用 Notebook 时,如果希望了解一个对象(如变量、类、函数等)的相关信息或使用方式,可以在对象后面使用?并运行代码, 窗口下方会显示出对应的信息,帮助我们了解该对象,如下所示:
    在这里插入图片描述

  3. 搜索命名。如果只记得一个类或一个函数名字的一部分,可以使用通配符*并配合?进行搜索,如下所示。
    在这里插入图片描述

  4. 调用命令。可以在 Notebook 中使用!后面跟系统命令的方式来执行系统命令。

  5. 魔法指令。Notebook 中有很多非常有趣且有用的魔法指令,例如可以使用%timeit测试语句的执行时间,可以使用%pwd查看当前工作目录等。如果想查看所有的魔法指令,可以使用%lsmagic,如果了解魔法指令的用法,可以使用%magic来查看,如下图所示:

    在这里插入图片描述

    常用的魔法指令有:

    魔法指令功能说明
    %pwd查看当前工作目录
    %ls列出当前或指定文件夹下的内容
    %cat查看指定文件的内容
    %hist查看输入历史
    %matplotlib inline设置在页面中嵌入matplotlib输出的统计图表
    %config Inlinebackend.figure_format='svg'设置统计图表使用SVG格式(矢量图)
    %run运行指定的程序
    %load加载指定的文件到单元格中
    %quickref显示IPython的快速参考
    %timeit多次运行代码并统计代码执行时间
    %pruncProfile.run运行代码并显示分析器的输出
    %who / %whos显示命名空间中的变量
    %xdel删除一个对象并清理所有对它的引用
  6. 快捷键。Notebook 中的很多操作可以通过快捷键来实现,使用快捷键可以提升工作效率。Notebook 的快捷键又可以分为命令模式下的快捷键和编辑模式下的快捷键,所谓编辑模式就是处于输入代码或撰写文档状态的模式,在编辑模式下按Esc可以回到命令模式,在命令模式下按Enter可以进入编辑模式。

    命令模式下的快捷键:

    快捷键功能说明
    Alt + EnterOption + Enter运行当前单元格并在下面插入新的单元格
    Shift + Enter运行当前单元格并选中下方的单元格
    Ctrl + EnterCommand + Enter运行当前单元格
    j / kShift + j / Shift + k选中下方/上方单元格、连续选中下方/上方单元格
    a / b在下方/上方插入新的单元格
    c / x复制单元格 / 剪切单元格
    v / Shift + v在下方/上方粘贴单元格
    dd / z删除单元格 / 恢复删除的单元格
    l / Shift + l显示或隐藏当前/所有单元格行号
    ii / 00中断/重启Notebook内核
    Space / Shift + Space向下/向上滚动页面

    编辑模式下的快捷键:

    快捷键功能说明
    Shift + Tab获得提示信息
    Ctrl + ]Command + ])/ Ctrl + [Command + [增加/减少缩进
    Alt + EnterOption + Enter运行当前单元格并在下面插入新的单元格
    Shift + Enter运行当前单元格并选中下方的单元格
    Ctrl + EnterCommand + Enter运行当前单元格
    Ctrl + Left / RightCommand + Left / Right光标移到行首/行尾
    Ctrl + Up / DownCommand + Up / Down光标移动代码开头/结尾处
    Up / Down光标上移/下移一行或移到上/下一个单元格

    温馨提示:如果记不住这些快捷键也没有关系,在命令模式下按h键可以打开 Notebook 的帮助系统,马上就可以看到快捷键的设置,而且可以根据实际的需要重新编辑快捷键,如下图所示。

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/879629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 逻辑回归是一种用于二分类问题的统计学习方法,尽管名字中含有“回归”&#xff0c…

ORCA优化器浅析——IMDRelation Storage type of a relation GP6与GP7对比

如上图所示IMDRelation作为Interface for relations in the metadata cache,其定义了Storage type of a relation表的存储类型,如下所示: enum Erelstoragetype {ErelstorageHeap,ErelstorageAppendOnlyCols,ErelstorageAppendOnlyRows,Erels…

如何使用CSS实现一个模态框(Modal)效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现模态框(Modal)效果⭐ HTML 结构⭐ CSS 样式⭐ JavaScript⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎…

重磅:谷歌发布多平台应用 AI 编程神器

前几天, 谷歌发布了一个多平台应用开发神器:IDX 。 IDX 背靠 AI 编程神器 Codey,支持 React、Vue 等框架,还能补全、解释代码。 更有特色的一点就是:这是一款基于浏览器的开发全栈、用于多平台应用开发的工具。 这款开…

C语言题目的多种解法分享 2之字符串左旋和补充题

前言 有的时候,这个系列专栏中的解法之间并无优劣,只是给大家提供不同的解题思路 我决定将代码实现的过程写成注释,方便大家直接找到对应的函数,只有需要补充说明的知识才会单拿出来强调 这个系列的文章会更的比较慢&#xff0…

级联(数据字典)

二级级联: 一:新建两个Bean 父级: /*** Description 数据字典* Author WangKun* Date 2023/7/25 10:15* Version*/ Data AllArgsConstructor NoArgsConstructor TableName("HW_DICT_KEY") public class DictKey implements Seri…

学习笔记整理-JS-06-函数

一、函数基本使用 1. 什么是函数 函数就是语句的封装,可以让这些代码方便地被复用。函数具有"一次定义,多次调用"的优点。使用函数,可以简化代码,让代码更具有可读性。 2. 函数的定义和调用 和变量类似,函…

C++:模拟实现list及迭代器类模板优化方法

文章目录 迭代器模拟实现 本篇模拟实现简单的list和一些其他注意的点 迭代器 如下所示是利用拷贝构造将一个链表中的数据挪动到另外一个链表中&#xff0c;构造两个相同的链表 list(const list<T>& lt) {emptyinit();for (auto e : lt){push_back(e);} }void test_…

【ES】【elasticsearch】分布式搜索

文章目录 ☀️安装elasticsearch☀️1.部署单点es&#x1f338;1.1.创建网络&#x1f338;1.2.下载镜像&#x1f338;1.3.运行 ☀️2.部署kibana&#x1f338;2.1.部署&#x1f338;2.2.DevTools ☀️3.安装IK分词器&#x1f338;3.1.在线安装ik插件&#xff08;较慢&#xff0…

ARM汇编快速入门

本文主要分享如何快速上手ARM汇编开发的经验、汇编开发中常见的Bug以及Debug方法、用的Convolution Dephtwise算子的汇编实现相对于C版本的加速效果三方面内容。 前言 神经网络模型能够在移动端实现快速推理离不开高性能算子&#xff0c;直接使用ARM汇编指令来进行算子开发无疑…

ad+硬件每日学习十个知识点(32)23.8.12 (元器件封装、PCB封装、3D的PCB封装)

文章目录 1.元器件封装属性值说明2.PCB封装标准说明&#xff08;M、N、L&#xff09;3.电阻的PCB封装&#xff08;阻焊层&#xff09;4.电感的PCB封装&#xff08;CD、CDRH&#xff09;1.CD31的意思是&#xff0c;直径3mm&#xff0c;高度1mm![在这里插入图片描述](https://img…

【SQL应知应会】索引(二)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 索引 • MySQL版 前言一、索引1.简介2.创建2.1 索引…

Gradio——快速部署可视化人智能应用

前言 Gradio是一个开源的Python库&#xff0c;用于快速构建机器学习和数据科学演示的应用。它可以帮助你快速创建一个简单漂亮的用户界面&#xff0c;以便向客户、合作者、用户或学生展示你的机器学习模型。此外&#xff0c;还可以通过自动共享链接快速部署模型&#xff0c;并获…

IntelliJ IDEA热部署:JRebel插件的安装与使用

热部署 概述JRebel 概述 热部署&#xff0c;指修改代码后&#xff0c;无需停止应用程序&#xff0c;即可使修改后的代码生效&#xff0c;其有利于提高开发效率。 热部署方式&#xff1a; 手动热部署&#xff1a;修改代码后&#xff0c;重新编译项目&#xff0c;然后启动应用程…

【软件测试】Linux系统下安装jdk配置环境变量(详细步骤)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、安装环境 操作…

UGUI事件系统EventSystem

一. 事件系统概述 Unity的事件系统具有通过鼠标、键盘、游戏控制柄、触摸操作等输入方式&#xff0c;将事件发送给对象的功能。事件系统通过场景中EventSystem对象的组件EventSystem和Standalone Input Module发挥功能。EventSystem对象通常实在创建画布的同时被创建的&#xf…

c++杂谈-5

目录 一、一些c11新特性1. decltype关键字及函数后置返回类型2. 函数后置返回类型 二、c的内存模型三、函数指针和回调函数四、函数模版的注意事项 一、一些c11新特性 1. decltype关键字及函数后置返回类型 在C11中&#xff0c;decltype操作符&#xff0c;用于查询表达式的数…

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

2023年8月6日华为开发者大会2023&#xff08;HDC.Together&#xff09;圆满收官&#xff0c;伴随着HarmonyOS 4的发布&#xff0c;华为向开发者发布了汇聚所有最新开发能力的HarmonyOS NEXT开发者预览版&#xff0c;并分享了围绕“一次开发&#xff0c;多端部署” “可分可合&a…

通过Microsoft Loopback Adapter实现虚拟机和物理机的通信

问题 问&#xff1a;不借助路由器或交换机的情况下&#xff0c;能不能实现主机和虚拟及之间两个软件的通信呢&#xff1f;要求主机和虚拟及均有独立的ip地址&#xff0c;从而进行指定源的组播通信。 答&#xff1a;可以。通过借助虚拟网络适配器&#xff0c;不需要路由器或交…

深度思考rpc框架面经系列之三

6 一个rpc框架的请求调用的流程&#xff08;小红书面试&#xff09; 6.1 讲讲rpc调用原理&#xff0c;比如服务怎么发现&#xff0c;怎么调用&#xff0c;提供者怎么响应。怎么去请求&#xff0c;又怎么回来的 一个RPC&#xff08;远程过程调用&#xff09;框架的核心目的是允…