前端工程化理解 (2024 面试题)
- 最好介绍远古世界
- 最好随性一点,不要太刻板 ,不然像背书
什么是前端工程化? - 知乎
前端工程化的历史
互联网初期,09 年以前,页面只需要展示一些列表、表格、文章内容以及简单图片即可,其目的是为了传送信息。这个时候构建内容非常简单 html 即可,对文章内容进行一些简单排版可以传输就ok了。
互联网开始向个人普及的时候,更多的桌面应用的缺点越来越明显,越来越多的软件专项web应用,用户从科研人员变成了普通大众。相对的获取\传输信息依旧很重要,但是对于界面交互就希望有更高的要求。这个时候构建内容的工具从简单的 html 增加了一项 css 来美化html在浏览器上输出的内容。当然也是这段时间,人机交互也稍微复杂了一些,通过js来控制一些页面展示的效果(例如:轮播图、文字滚动)
第一阶段 桌面应用到web应用
越来越多的行业依赖软件,但明显桌面应用的限制越来越突出
- 一个软件一个包,
- 需要经常更新
- 跨端 跨电脑需要重新安装
随着软件需求爆炸性增长
后来互联网的用户数量爆炸式增长(个人PC普及后期),前端(页面展示,那个时候可能还没有专职的前端)需要负载的功能日益复杂,浏览器版本、种类层出不穷。这个时候需要解决的主要问题是不同浏览器的兼容性。2006年诞生的jquery就是其中的代表。兼容性问题要解决,交互问题同样需要解决。页面和服务器的交互逻辑受困于jsp等技术这些代码只能由服务端代码完成,有什么变更需要页面全部刷新。所以ajax应运而生。大概就是08年前后,jquery技术风靡数年至今。
第二阶段 web应用 到单页应用
- ajax 诞生
- 2008 html5
- 网速增加
- 浏览器和硬件升级
- 浏览器兼容性问题变少,前端h5,es5相继发布web 前端 的主要矛盾由 浏览器的兼容性问题 前端的工作有组织dom结构、动画效果、页面交互逻辑 变成 除此之外大量 JS 代码的组织,与 View 层的绑定。都比较麻烦。可以理解为开发效率和可维护性问题
可维护性举例
- js 的类型
- 庞大的 CSS包
- 打包
- 编码规范
2009 之后前端需要利用软件工程化的思想来解决瓶颈问题
当时出现了很多 template模板工具,基于 jq,实现简单的 view 和 model 层包装。也出现了了 gulp、
再往后就是以react\vue为主导的spa(单页面应用的时代),然后就是以扩充前端能力为主的浏览器+node全栈时代,前端的severless和*sr(ssr、nsr、csr...)百花齐放。这个时代如果没有工程化的支持,那~这些都不会存在。
SASS(英文全称:Syntactically Awesome Stylesheets)Sass 诞生于 2007 年,使用Ruby 编写,是一种对css的一种扩展提升,增加了规则、变量、混入、选择器、继承等等特性。可以理解为用js的方式去书写,然后编译成css。比如说,sass中可以把反复使用的css属性值定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值。
LESS(2009年开源的一个项目,受Sass的影响较大,但又使用CSS的语法,让大部分开发者和设计师更容易上手。LESS保留了css的任何功能,同时提供了多种方式能平滑的将写好的代码转化成标准的CSS代码,可以在任何使用随时切换到css的语法进行书写。
2011 年以前
大概 09 年 - 10 年期间,CommonJS 社区大牛云集。CommonJS 原来叫 ServerJS,推出 Modules/1.0 规范后,在 Node.js 等环境下取得了很不错的实践。
09年下半年这帮充满干劲的小伙子们想把 ServerJS 的成功经验进一步推广到浏览器端,于是将社区改名叫 CommonJS,同时激烈争论 Modules 的下一版规范。分歧和冲突由此诞生,逐步形成了三大流派:
- Modules/1.x 流派。这个观点觉得 1.x 规范已经够用,只要移植到浏览器端就好。要做的是新增 Modules/Transport 规范,即在浏览器上运行前,先通过转换工具将模块转换为符合 Transport 规范的代码。主流代表是服务端的开发人员。现在值得关注的有两个实现:越来越火的 component 和走在前沿的 es6 module transpiler。
- Modules/Async 流派。这个观点觉得浏览器有自身的特征,不应该直接用 Modules/1.x 规范。这个观点下的典型代表是 AMD 规范及其实现 RequireJS。这个稍后再细说。
- Modules/2.0 流派。这个观点觉得浏览器有自身的特征,不应该直接用 Modules/1.x 规范,但应该尽可能与 Modules/1.x 规范保持一致。这个观点下的典型代表是 BravoJS 和 FlyScript 的作者。BravoJS 作者对 CommonJS 的社区的贡献很大,这份 Modules/2.0-draft 规范花了很多心思。FlyScript 的作者提出了 Modules/Wrappings 规范,这规范是 CMD 规范的前身。可惜的是 BravoJS 太学院派,FlyScript 后来做了自我阉割,将整个网站(flyscript.org)下线了。这个故事有点悲壮,下文细说。
2015 年
前端的ES module发布后,rollup应声而出。
rollup编译ES6模块,提出了Tree-shaking,根据ES module静态语法特性,删除未被实际使用的代码,支持导出多种规范语法,并且导出的代码非常简洁,如果看过 vue 的dist 目录代码就知道导出的 vue 代码完全不影响阅读。
browserify、webpack、rollup、parcel这些工具的思想都是递归循环依赖,然后组装成依赖树,优化完依赖树后生成代码。但是这样做的缺点就是慢,需要遍历完所有依赖,即使 parcel 利用了多核,webpack 也支持多线程,在打包大型项目的时候依然慢可能会用上几分钟,存在性能瓶颈。
前端模块化/构建工具从最开始的基于浏览器运行时加载的 RequireJs/Sea.js 到将所有资源组装依赖打包 webpack/rollup/parcel的bundle类模块化构建工具,再到现在的bundleless基于浏览器原生 ES 模块的 snowpack/vite,前端的模块化/构建工具发展到现在已经快 10 年了。
工程化解决的问题就是提高整个工作系统的效率。大量的js代码,堆积的程序最麻烦的就是如何去维护。100行代码,看一遍,打着断点过一下,就知道是在做什么了。但是1000行,10000行甚至是10万行的代码,你怎么维护?真的要一点一点看?那这个对企业来说维护的成本就是天文数字甚至于不可估量。随着浏览器的不断更新迭代,大量的能力扩充,对我们构建前端应用来说也是一个挑战。
什么是前端工程化
- 历史背景
- 出现原因
- 主要工具
- 现状
- 未来展望
前端工程化是指,使用软件工程的技术和方法,将前端的开发流程、技术、工具、经验等规范化和标准化,其主要目的,是为了提高效率和降低维护成本,即提高开发过程中的开发效率,减少不必要的重复工作时间。前端工程化具体包含:
- 标准化,定义编码、目录结构、接口以及源码管理等规范;
- 组件化,组件分为HTML、JS和CSS;
- 模块化,功能封装;
- 自动化,持续集成和持续部署。
核心关键词: 标准规范 降本提效
落地四大块:标准模块组件自动化
不同时代的理解
第一个阶段是选择框架、库:像jquery,这时候的工程化就是在开发时忽略对兼容性的考虑、提高编码效率降低开发成本
第二个阶段是优化构建:以grunt、gulp为代表的这些工具。这时候的工程化是解决应用体积变大后输出产物的优化
第三阶段是html+js+css模块化开发:这时候的工程化的代表是angluar。
第四个阶段是组件开发与资源的管理:在这个阶段 react/vue 引领了前端开发应用的潮流,webpack + rollup 则引领了优化构建的方向。
第五个阶段是前端能力的扩充与完善:以node全栈和h5规范为基础的百花齐放。说实在的h5规范现阶段扩充了很多能力并且浏览器厂商也在逐步支持,并且这些能力愈来愈强大,如视频/音频的播放能力、canvas与webGL、WebAssembly等等多样的能力意味着更多的接口、代码以及业务逻辑。node全栈给前端扩充了N多能力,首当其冲的是ssr,目前看来非常重要的数据安全性(以通过graphGL来进行数据组合过滤实现为代表)。其次是前端的serverless,不受制于传统后端与前端的业务范围。
首先前端工程化是把软件工程相关的方法和思想应用到前端开发中。
狭义上的理解:将开发阶段的代码发布到生产环境,包含:构建,分支管理,自动化测试,部署
广义上理解:前端工程化应该包含从编码开始到发布,运行和维护阶段
工具是工程化的手段,只要我们引入的方法、技术方案、工具可以提升开发效率、提高前端应用质量,那么都属于前端工程化
工程化主要特点是什么
- 不建议大家盲目地追求工程化,对于大部分规模不大的前端团队而言,工程体系的建设和规范并不是当务之急
工程化如何实践
我的理解里把 前端工程化分为 5 类
开发、构建、部署、性能、规范化
还有第六类 需求
规范化需求
- 性能优化
- 团队规范
- 开发
-
- 框架选型
- 前后端分离
- 组件化
- 脚手架
- 本地开发服务器
- mock 服务
- 微前端
- 规范化
-
- 目录结构规范
- 编码规范
- 技术栈规范
- 前后端接口规范
- git 规范
-
-
- commit 规范
- 分支名、提交等规范
-
-
- cr 规范
- 设计规范
- 图标规范
- 文档规范
- 版本规范
- 开发流程规范
- 发布规范(测试、灰度、预发、线上)
- 构建
-
- 依赖打包
- 文件压缩
- 代码分割
- 增量更新与缓存
- 资源定位
- 图标合并
- es 与 babel
- css 预编译和 postcss
- 持续构建与集成
- 类库打包
- 构建优化
- 部署
-
- 持续部署
- 部署流程设计
- 静态资源部署策略
- nginx 反向代理
- spa 路由配置
- 跨域
- https 证书
- http2 配置
- 灰度发布
- 预发布环境
- 性能
-
- 缓存策略
- 缓存复用
- cdn 内容分发网络
- 按需加载
- 同步异步加载
- 请求合并
- 首屏渲染速度
- http2 服务推送
- 日志性能监控
- 预加载
- 性能测试
前端工程项目
执行 npm run serve 发生了什么
- 读取 package.json 文件:
-
- 当你在项目的根目录下执行 npm run serve 命令时,npm 首先会查找 package.json 文件中的 "scripts" 字段,找到与 "serve" 对应的命令。
- 执行对应的脚本命令:
-
- 一旦找到对应的命令,npm 就会执行它。这个命令可能是一个构建命令,也可能直接启动开发服务器。在 React 项目中,这通常是一个如 react-scripts start 或类似的命令(如果使用 CRA)。
- 启动开发服务器:
-
- 如果脚本命令是启动开发服务器的命令,那么在这一步,开发服务器将被启动。这通常是一个基于 Node.js 的服务器,如 Webpack Dev Server。
- 开发服务器会监听文件变化,并在文件被修改时重新构建应用程序。这样,你就可以在开发过程中实时看到更改的效果。
- 编译和打包应用程序:
-
- 在服务器启动之前或启动时,项目代码会被编译和打包成浏览器可以理解的格式(如 JavaScript、CSS 等)。这通常是通过 Babel、Webpack 等工具完成的。
- 在开发模式下,编译和打包的过程通常不会进行代码压缩和混淆,以便于调试。
- 提供静态文件:
-
- 开发服务器会提供一个静态文件服务,将编译后的文件(如 HTML、JavaScript、CSS 等)提供给浏览器。这样,你就可以在浏览器中查看和测试你的 React 应用程序了。
- 监听源代码变化:
-
- 开发服务器会持续监听源代码文件的变化。一旦检测到文件被修改或保存,服务器会自动重新编译和打包应用程序,并刷新浏览器以显示最新的更改。这通常是通过热模块替换(HMR)或浏览器自动刷新来实现的。
- 输出日志和错误信息:
-
- 在服务器运行过程中,如果有任何错误或警告信息产生,它们通常会被输出到控制台或日志文件中。这样,你就可以及时发现和修复问题。
- 保持服务器运行:
-
- 除非手动停止或遇到错误导致服务器崩溃,否则开发服务器将一直保持运行状态。你可以通过关闭命令行窗口、按下 Ctrl+C 或使用其他方法来停止服务器。
四种类型版本号代表什么
- 指定版本:比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
- 波浪号(tilde):比如~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,也就是说安装时不改变大版本号和次要版本号。
- 插入号(caret):比如ˆ1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
- latest:安装最新版本。
Webpack Dev Server 启动时发生了什么
Webpack Dev Server 是一个小型的Node.js Express服务器,它使用webpack-dev-middleware 来服务于webpack的包。除了静态文件,此包还包含一些额外的特性,如热模块替换(Hot Module Replacement)和Source Maps等。以下是Webpack Dev Server启动时的步骤:
- 启动开发服务器:通过运行webpack-dev-server命令或在webpack配置文件中设置devServer属性,可以启动webpack-dev-server。它将监听指定的端口,并根据配置文件中的配置进行工作。
- 读取配置文件:Webpack Dev Server会读取webpack的配置文件(默认为webpack.config.js)。这个配置文件包含了项目的入口文件、输出路径、加载器(loaders)、插件(plugins)等关键信息。
- 编译和构建:根据配置文件中的信息,Webpack Dev Server会使用webpack来编译和构建项目。它会将项目的源代码转化为可在浏览器中运行的代码,并生成一个或多个bundle文件。
- 启动服务器并监听文件变化:Webpack Dev Server会启动一个本地的开发服务器,并监听项目的文件变化。当检测到文件变化时,它会自动重新编译和构建项目,并实时更新浏览器中的页面。
- 提供实时重载和热模块替换功能:Webpack Dev Server还提供了实时重载(live reloading)和热模块替换(Hot Module Replacement)功能。实时重载是指当项目中的文件发生变化时,服务器会自动重新加载整个页面。而热模块替换则更加高效,它只替换发生变化的模块,而不是重新加载整个页面。
需要注意的是,Webpack Dev Server将所有的项目文件存储在内存中的虚拟文件系统中,而不是写入磁盘。这使得每次修改源代码时,无需重新写入磁盘,可以更快地更新文件。开发服务器能够直接提供文件,而无需访问实际的物理文件。当浏览器接收到通知后,可以选择重新加载整个页面或仅更新受影响的模块。
以上步骤描述了大体流程,但实际的启动过程可能还包含更多的细节和步骤,具体取决于项目的配置和需求。
搭建cli 要做哪些工作
当搭建一个用于PC项目的React CLI工具时,主要任务包括但不限于以下几个方面:
- 项目初始化:
-
- 创建CLI工具的基础结构,通常会基于Node.js编写命令行工具,使用
npm init
初始化一个新的Node.js包,并设置必要的元数据和依赖项。
- 创建CLI工具的基础结构,通常会基于Node.js编写命令行工具,使用
- 命令行接口设计:
-
- 使用诸如
commander.js
之类的库来设计交互式命令行界面,开发如create
、add
、build
、start
等核心命令,以便用户可以通过命令行快速创建项目、添加模块、构建项目以及启动开发服务器。
- 使用诸如
- 项目模板创建:
-
- 设计并实现一套标准的React PC项目模板,包含基本的文件结构、配置文件(如Webpack)、公共样式和脚本文件、示例组件、以及可能的路由配置等。
- 依赖管理:
-
- 内置脚本负责在创建新项目时自动安装React、ReactDOM以及相关的开发依赖,例如Babel、Webpack及其loader、开发服务器(如webpack-dev-server)等。
- 开发环境配置:
-
- 设置开发环境下的Webpack配置,包括HMR(Hot Module Replacement)、source map、CSS处理、ES6转译等。
- 实现一键启动开发服务器,开启自动刷新功能。
- 构建流程:
-
- 编写或引用现有的Webpack或其他构建工具配置文件模板,支持生产环境的代码压缩、优化、分包及静态资源处理。
- 添加
build
命令用于编译和打包项目到生产环境。
- 可定制化和扩展性:
-
- 支持用户自定义模板或者添加额外的特性,比如TypeScript支持、CSS预处理器等。
- 提供插件机制,允许开发者扩展CLI的功能。
- 文档撰写与发布:
-
- 编写详细的README和使用指南,说明如何安装、使用和配置CLI工具。
- 将CLI工具发布到npm仓库,便于全球开发者通过npm install命令轻松获取和使用。
- 测试与维护:
-
- 编写单元测试和集成测试,保证CLI工具稳定可靠。
- 随着React和其他相关技术的发展,持续跟踪最新进展,更新CLI工具中的模板和依赖,保持其与时俱进。
最后,考虑到用户友好性和易用性,还会考虑添加一些附加功能,如代码质量检测工具集成(如ESLint、Prettier)、代码格式化、代码拆分方案等。
相关文章:

前端工程化理解 (2024 面试题)
最好介绍远古世界最好随性一点,不要太刻板 ,不然像背书 什么是前端工程化? - 知乎 前端工程化的历史 互联网初期,09 年以前,页面只需要展示一些列表、表格、文章内容以及简单图片即可,其目的是为了传送信…...

10 Php学习:循环
在 PHP 中,提供了下列循环语句: while - 只要指定的条件成立,则循环执行代码块do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环for - 循环执行代码块指定的次数foreach - 根据数组中每个元素来循环代码块 当…...
FreeSWITCH 1.10.10 简单图形化界面17 - ubuntu22.04或者debian12 安装FreeSWITCH
FreeSWITCH 1.10.10 简单图形化界面17 - ubuntu22.04或者debian12 安装FreeSWITCH 界面预览00、先看使用手册0、安装操作系统1、下载脚本2、开始安装3、登录网页FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/132479324 界面预览 http://myfs.f3…...

ZStack Cloud 5.0.0正式发布——Vhost主存储、隔离PVLAN网络、云平台报警优化、灰度升级增强四大亮点简析
近日,ZStack Cloud 5.0.0正式发布,推出了包含Vhost主存储、隔离PVLAN网络、云平台报警优化、灰度升级增强在内的一系列重要功能。云主机管理、物理机运维、密评合规、灾备服务等诸多使用场景和功能模块均有更新,为您带来更完善的平台服务、更…...

商标没有去注册有哪些不好的影响!
有些商家咨询普推知产老杨,商标没有去注册有哪些不好的影响,其实对企业来说还有许多实际不利的影响,有时代价比注册一个商标要大很多。 想的商标名称没去注册商标,如果别人抢注拿下商标注册证,那就会涉及侵权…...

【小程序】常用方法、知识点汇总1
欢迎来到《小5讲堂》 这是《小程序》系列文章,每篇文章将以博主理解的角度展开讲解, 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言请求超时Markdown解析逐行显示效果文本变动事件转发…...

AugmentedReality之路-平面检测(5)
本文介绍通过AR检测水平平面和垂直平面,并将检测到的平面转化为Mesh 1、在首页添加功能入口 在首页添加一个按钮,命名为Start World Track 2、自定义ExecStartAREvent 创建ARSessionConfig并取名为ARSessionConfig_World 自定义ExecStartAREvent&…...

MQ:延迟队列
6.1场景: 1.定时发布文章 2.秒杀之后,给30分钟时间进行支付,如果30分钟后,没有支付,订单取消。 3.预约餐厅,提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间: 7*30 * 60 *…...

Element ui 动态展示表格列,动态格式化表格列的值
需求 后台配置前端展示的表格列,遇到比如 文件大小这样的值,如果后台存的是纯数字,需要进行格式化展示,并且能控制显示的小数位数,再比如,部分列值需要加单位等信息,此外还有状态类࿰…...
xxl-job调度任务原理解析
xxljob可以对定时任务进行调度,现在看下定时任务调度的过程。XxlJobAdminConfig实现了InitializingBean接口,spring会调用afterPropertiesSet()进行初始化。大致有以下几个过程: admin服务端初始化 JobTriggerPoolHelper.java#toStart()方法…...

实验2 路由器基本配置
实验2 路由器基本配置 一、 原理描述二、 实验目的三、 实验内容四、 实验步骤1.建立实验拓扑2.基础配置3.配置路由器接口IP地址4.查看路由器配置信息5.连通性测试6.使用抓包工具 一、 原理描述 华为设备支持多种配置方式,操作人员要熟悉使用命令行的方式进行设备管…...
docker部署安装整理
centos下安装部署docker 在CentOS下部署Docker,你需要按照以下步骤进行操作: 更新系统: 首先,确保你的CentOS系统是最新的。打开终端,并运行以下命令来更新你的系统: sudo yum update -y安装所需的软件包…...

为什么你明明拥有5年开发经验,但是依然写不出来一份简历?
前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello,大家好,我是 Sunday。 在最近不到一年的时间里,我跟上千位同学进行了沟通&#x…...
【ZZULIOJ】1062: 最大公约数(Java)
目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 code 题目描述 输入两个不大于10的9次方的正整数,输出其最大公约数。 输入 输入两个正整数m和n,数据之间用空格隔开。 输出 输出一个整数,表示m和n的最大公约数。 样…...
北斗导航 | ARAIM算法的原理和性能测试
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== ARAIM算法的原理和性能测试 针对高级接收机自主完好性监视(ARAIM)算法…...

elasticsearch7安全配置--最低安全等级,用户名密码
上一篇博客在centos7上安装了elasticsearch7 接下来对elasticsearch进行安全方面的配置 minimal security 最低安全等级,用户名密码 首先开启xpack vim config/elasticsearch.yml xpack.security.enabled: true由于我是单机配置的,还加了如下配置 d…...

项目架构MVC,DDD学习
写在前面 本文一起看下项目架构DDD,MVC相关的内容。 1:MVC 不管我们做什么项目,自己想想其实只是做了三件事,如下: 其实,这三件事完全在一个类中做完也可以可以正常把项目完成的,就像下面这…...
SQLite的PRAGMA 声明
PRAGMA 语句是特定于 SQLite 的 SQL 扩展,用于 修改 SQLite 库的操作或查询 SQLite 库 内部(非表)数据。PRAGMA声明使用相同的 接口作为其他 SQLite 命令(例如 SELECT、INSERT)但 在以下重要方面有所不同: …...

使用ArrayList.removeAll(List list)导致的机器重启
背景 先说一下背景,博主所在的业务组有一个核心系统,需要同步两个不同数据源给过来的数据到redis中,但是每次同步之前需要过滤掉一部分数据,只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…...
如何在项目中使用uni-ui组件库
1、安装uni-ui npm i dcloudio/uni-ui 2、组件自动引用 配置easycom 使用 npm 安装好 uni-ui 之后,需要配置 easycom 规则,让 npm 安装的组件支持 easycom 打开项目根目录下的 pages.json 并添加 easycom 节点: // pages.json {"e…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...