Facebook 的框架及技术栈
一、前端框架与技术
- React.js 及其生态系统
- 核心原理与特点
- React.js 是 Facebook 开源的用于构建用户界面的 JavaScript 库。它的核心概念是组件化,将用户界面拆分成一个个独立的、可复用的组件。每个组件都有自己的状态(state)和属性(props)。状态是组件内部的数据,用于控制组件的渲染和行为,而属性是从外部传递给组件的数据。例如,在 Facebook 的新闻推送组件中,新闻列表项就是一个组件,它的状态可能包括是否被用户点赞、评论数量等,属性可能包括新闻的标题、发布时间等。
- 虚拟 DOM(Document Object Model)是 React 的另一个关键特性。当组件的状态或属性发生变化时,React 会先更新虚拟 DOM。虚拟 DOM 是真实 DOM 的一个轻量级副本,它在内存中以 JavaScript 对象的形式存在。React 通过比较新旧虚拟 DOM 的差异(这个过程称为 Diffing),只将发生变化的部分更新到真实 DOM 中。这样可以大大减少对真实 DOM 的操作次数,因为直接操作真实 DOM 是比较耗时的,尤其是在复杂的页面结构中。例如,当用户在新闻推送中展开一条评论时,React 会快速计算出需要更新的虚拟 DOM 部分(可能是评论的显示状态和内容),然后高效地更新真实 DOM,使评论能够快速展开,而不会引起整个页面的重新渲染。
- 相关工具和库
- React Router:用于处理单页应用(SPA)中的路由。在 Facebook 的单页应用部分,如用户设置页面或者特定的功能模块页面,React Router 可以根据 URL 的变化来加载和渲染不同的组件。例如,当用户访问 “/settings/profile” 路径时,React Router 会加载并渲染用于编辑个人资料的组件;当访问 “/settings/privacy” 路径时,会加载隐私设置组件。它通过定义路由规则,将 URL 路径和组件进行映射,使得用户在不同页面之间切换时,能够实现无缝的体验。
- Redux 或 MobX(状态管理库):在大型应用中,组件之间的状态管理变得复杂。Redux 是一个可预测的状态容器,用于管理应用的全局状态。以 Facebook 的消息应用为例,用户的消息列表状态(包括未读消息数量、消息排序等)可能需要在多个组件中共享和更新。Redux 通过定义 action(描述发生的事件)、reducer(根据 action 更新状态)和 store(存储状态的容器)来实现状态的集中管理。MobX 则是另一种状态管理方式,它采用响应式编程的理念,通过将数据定义为可观察对象,当数据发生变化时自动更新与之相关的组件。这两种状态管理库都有助于保持组件状态的一致性和可维护性。
- 实践应用
- 在 Facebook 的实际应用中,React 组件的层次结构可能会非常复杂。例如,在新闻推送组件中,可能有外层的新闻容器组件,内部包含新闻标题组件、新闻内容组件、评论组件等。每个组件都可以有自己的状态和属性,并且通过 props 在组件之间传递数据。评论组件可能会接收新闻的 ID 作为属性,以便在用户提交评论时将评论与正确的新闻关联起来。
- 核心原理与特点
- JavaScript ES6 + 和 TypeScript 的应用
- ES6 + 新特性与优势
- ES6(ECMAScript 2015)及后续版本带来了众多新的语言特性,这些特性在 Facebook 的前端开发中发挥了重要作用。箭头函数是其中一个常用的特性,它提供了更简洁的函数语法。例如,在处理事件回调函数时,箭头函数可以避免 this 指针的混淆问题。在传统的 JavaScript 函数中,this 的指向会根据函数的调用方式而改变,而箭头函数的 this 指向定义时所在的上下文。比如在一个类方法中作为回调函数使用时,箭头函数可以确保 this 指向类实例,方便访问类的其他属性和方法。
- 模板字面量允许在字符串中嵌入表达式,这使得构建动态字符串更加方便。在 Facebook 的前端代码中,当需要根据用户数据动态生成消息提示或者页面内容时,模板字面量就非常有用。例如,在显示用户的欢迎消息时,可以这样写:
const welcomeMessage = \
Welcome, ,其中{user.name}` 会被替换为用户的真实姓名。 - 类语法使得面向对象编程在 JavaScript 中更加规范。在构建复杂的 UI 组件或者数据模型时,可以使用类来组织代码。例如,定义一个用户信息类:
- TypeScript 的引入与作用
- TypeScript 是 JavaScript 的超集,它为 JavaScript 添加了静态类型检查。Facebook 在一些对代码可靠性要求较高的项目中可能会使用 TypeScript。通过为变量、函数参数和返回值等定义类型,可以在编译阶段发现很多潜在的错误。
- 这样,如果在调用这个函数时传递了非数字类型的参数,TypeScript 编译器会报错。这有助于提高代码的健壮性,特别是在大型团队开发和复杂的代码库中,减少运行时错误的出现。
- ES6 + 新特性与优势
- CSS 预处理器(Less 和 Sass)
- Less 的特点与应用场景
- Less 是一种 CSS 预处理器,它允许开发者使用变量、嵌套规则、混合(mixin)等高级特性来编写 CSS。在 Facebook 的样式开发中,变量的使用可以方便地统一主题颜色和字体等样式。例如,可以定义一个主色调变量
@primary-color: #3498db;
,然后在整个样式表中使用这个变量来设置按钮颜色、标题颜色等元素的颜色。当需要更换主题颜色时,只需要修改这个变量的值,而不需要逐个修改每个元素的颜色属性。 - 规则可以让 CSS 代码的结构更清晰,更符合 HTML 的嵌套结构。l
然后在需要使用圆角边框的元素中引用这个 mixin,如
.button {.rounded - corners(10px);}
,可以方便地为按钮添加圆角边框,并且可以根据需要调整半径值。 - Less 是一种 CSS 预处理器,它允许开发者使用变量、嵌套规则、混合(mixin)等高级特性来编写 CSS。在 Facebook 的样式开发中,变量的使用可以方便地统一主题颜色和字体等样式。例如,可以定义一个主色调变量
- Sass 与 Less 的比较及 Facebook 的选择考量
- Sass 也是一种流行的 CSS 预处理器,它和 Less 有很多相似之处。Sass 的语法更加接近传统的 CSS,它有两种语法格式:SCSS(和 CSS 语法非常相似)和缩进语法(更具特色但学习曲线稍陡)。Sass 在变量、嵌套、混合等功能上和 Less 类似,但也有一些细节上的差异。例如,Sass 的变量使用
$
符号开头,而 Less 使用@
。 - Facebook 选择 Less 可能是基于团队的熟悉程度、与现有工具链的集成情况以及项目的历史遗留因素等。Less 在 Facebook 的大规模样式开发中已经证明了其有效性,能够满足快速迭代和维护大型样式代码库的需求。
- Sass 也是一种流行的 CSS 预处理器,它和 Less 有很多相似之处。Sass 的语法更加接近传统的 CSS,它有两种语法格式:SCSS(和 CSS 语法非常相似)和缩进语法(更具特色但学习曲线稍陡)。Sass 在变量、嵌套、混合等功能上和 Less 类似,但也有一些细节上的差异。例如,Sass 的变量使用
- Less 的特点与应用场景
二、后端框架与技术
- PHP(Hack)与 HHVM
- 从 PHP 到 Hack 的演变与优势
- Facebook 最初是基于 PHP 构建的,随着业务的发展和代码规模的扩大,Facebook 开发了 Hack。Hack 是一种与 PHP 兼容的编程语言,它在 PHP 的基础上添加了静态类型检查等特性。静态类型检查可以在编译阶段发现类型相关的错误,提高代码的质量和可靠性。
- Hack 还保留了 PHP 的动态特性,使得开发者在需要灵活性的时候仍然可以像使用 PHP 一样编写代码。这使得 Facebook 能够在保证代码质量的同时,利用 PHP 的生态系统和开发人员的经验。
- HHVM(HipHop Virtual Machine)的工作原理与性能提升
- HHVM 是 Facebook 开发的用于运行 PHP 和 Hack 代码的虚拟机。它通过将 PHP/Hack 代码编译为字节码,然后在虚拟机中执行,提高了代码的执行效率。与传统的 PHP 解释器相比,HHVM 采用了 Just - In - Time(JIT)编译技术,能够在运行时将频繁执行的代码段编译为机器码,从而大大提高了性能。例如,在处理高并发的用户请求时,如用户登录验证或者内容加载,HHVM 可以更快地执行后端 PHP/Hack 代码,减少响应时间。
- HHVM 还对内存管理进行了优化,通过垃圾回收机制等方式,减少内存泄漏的风险,提高服务器的资源利用率。这对于 Facebook 这样拥有海量用户和大量后端服务的平台来说非常重要,可以在相同的硬件资源下处理更多的请求。
- 从 PHP 到 Hack 的演变与优势
- Python 及其在数据处理和机器学习中的应用
- Python 在 Facebook 后端的多领域应用
- 在数据处理方面,Python 是 Facebook 的重要工具之一。Facebook 使用 Python 的数据分析库(如 Pandas、NumPy)来处理和分析大量的用户行为数据。例如,Pandas 可以方便地对用户的操作记录(如点赞、评论、分享等)进行数据清洗、转换和统计分析。通过读取存储在数据库或者文件中的数据,将其转换为 Pandas 的 DataFrame 格式,然后可以使用各种方法进行数据分析。
- 在机器学习领域,Facebook 广泛使用 Python 的深度学习框架。以 PyTorch 为例,它用于图像识别、自然语言处理等多种任务。在图像识别方面,Facebook 可以使用 PyTorch 来训练模型,用于识别用户上传的照片中的人物、物体等内容。在自然语言处理中,PyTorch 可以用于构建内容推荐系统中的文本理解模块,例如对用户的兴趣爱好进行文本分类,以便更精准地推荐内容。
- 在 Facebook 的实际应用中,机器学习模型的训练和应用会更加复杂。例如,在构建推荐系统时,可能会涉及到大规模的用户数据和内容数据,需要使用分布式训练技术、复杂的特征工程和模型评估方法来确保推荐的准确性和高效性。
- Python 在 Facebook 后端的多领域应用
- GraphQL 的架构与应用优势
- GraphQL 的核心架构与工作原理
- GraphQL 是 Facebook 开发的一种查询语言和运行时环境,它改变了传统的 API 数据获取方式。在传统的 RESTful API 中,客户端通常需要访问多个端点来获取完整的数据。而 GraphQL 允许客户端精确地指定需要的数据结构。它由三个主要部分组成:模式(Schema)、查询(Query)和解析器(Resolver)。
- 模式定义了数据的类型和结构,类似于数据库中的表结构定义。例如,定义一个用户类型的模式可能包括用户的姓名、年龄、好友列表等字段。查询是客户端发送的请求,用于获取特定的数据。解析器则负责根据查询从数据源(如数据库、其他服务等)中获取并返回数据。例如,客户端发送一个查询请求获取用户的姓名和好友列表,解析器会从存储用户数据的地方获取这些信息并返回给客户端。
- 在 Facebook 应用开发中的优势体现
- 在 Facebook 的移动应用和网页应用开发中,GraphQL 提供了很大的灵活性。以移动应用为例,不同的页面可能需要不同的数据子集。比如,在用户个人资料页面,可能需要获取用户的基本信息、发布的内容列表等;而在消息列表页面,只需要获取消息相关的数据。通过 GraphQL,客户端可以根据每个页面的具体需求精确地请求数据,避免了过度获取或获取不足的数据。这不仅提高了数据传输的效率,还减少了客户端和服务器的资源消耗。
- 另外,GraphQL 的强类型系统有助于在开发过程中发现错误。因为查询是基于定义好的模式进行的,如果查询的字段不存在或者类型不匹配,在开发和测试阶段就可以发现问题,提高了应用的稳定性和可维护性。
- GraphQL 的核心架构与工作原理
三、数据存储和管理技术
- MySQL 的深度定制与应用场景
- Facebook 对 MySQL 的定制策略
- Facebook 为了满足其大规模数据存储和高并发访问的需求,对 MySQL 进行了大量的定制。其中一个重要的方面是存储引擎的优化。Facebook 开发了自己的存储引擎,例如 MyRocks,它在存储效率和性能方面进行了改进。MyRocks 采用了日志结构合并树(LSM - Tree)的存储结构,相比于传统的 InnoDB 存储引擎,在写入性能和空间利用率方面有一定的优势。在处理大量的用户数据写入(如用户注册信息、内容发布记录等)时,MyRocks 可以更高效地存储这些数据。
- 另外,Facebook 还对 MySQL 的集群管理进行了定制。通过构建大规模的数据库集群,采用分布式和分片技术,将数据分散存储在多个节点上,以提高数据的可用性和扩展性。例如,对于用户账户信息表,可以根据用户 ID 的范围或者哈希值将数据分布到不同的数据库节点上,这样在处理高并发的用户登录验证和数据查询时,可以并行地从多个节点获取数据,减少单个节点的压力。
- 主要应用场景与数据存储结构
- MySQL 主要用于存储 Facebook 的结构化数据,如用户账户信息(包括用户名、密码、注册时间、个人资料等)、社交关系数据(好友列表、群组关系、关注列表等)和内容数据(如用户发布的文字、图片、视频等的元数据)。这些数据以表的形式存储在 MySQL 数据库中。
- 社交关系表可能通过外键关联用户表,如好友列表表:
sql
CREATE TABLE friends (friendship_id INT AUTO_INCREMENT PRIMARY KEY,user_id INT,friend_id INT,FOREIGN KEY (user_id) REFERENCES users(user_id),FOREIGN KEY (friend_id) REFERENCES users(user_id) );
- Facebook 对 MySQL 的定制策略
- Cassandra 的分布式存储与高可用性
- 分布式架构与数据分布策略Cassandra 是一种分布式 NoSQL 数据库,它的分布式架构是其核心优势之一。Cassandra 采用环形架构,数据通过一致性哈希算法分布在多个节点上。当有新的数据写入时,Cassandra 会根据数据的分区键(通常是一个或多个字段)计算哈希值,然后确定数据存储在哪个节点上。同时,数据会根据配置的复制因子复制到多个节点上,以保证数据的冗余和高可用性。例如,在存储 Facebook Messenger 的聊天消息时,消息数据可能根据聊天会话 ID 或者消息发送者和接收者.
总结
facebook采用的技术和工具也是移动互联网比较普遍和简单的工具,包含网页三剑客,CSS,HTML,Javascript,PHP,pyphon,以及其他第三方的产品模块,mysql,nosql,memcached等,但他们的团队用最简单的工具创造了世界上非常受欢迎的非常庞大的产品;
相关文章:
Facebook 的框架及技术栈
一、前端框架与技术 React.js 及其生态系统 核心原理与特点 React.js 是 Facebook 开源的用于构建用户界面的 JavaScript 库。它的核心概念是组件化,将用户界面拆分成一个个独立的、可复用的组件。每个组件都有自己的状态(state)和属性&#…...
QT中的布局管理
在 Qt 中,布局管理器(如 QHBoxLayout 和 QVBoxLayout)的构造函数可以接受一个 QWidget* 参数,用于指定该布局的父控件。如果指定了父控件,布局会自动将其管理的控件添加到父控件中。 在你的代码中,QHBoxLa…...
如何学习VBA_3.2.20:DTP与Datepicker实现日期的输入
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。 如果…...
在 LaTeX 中强制表格位于页面顶部
在 LaTeX 中强制表格位于页面顶部,可以通过以下 多种方法结合使用,按优先级推荐: 方法 1:使用 [!t] 位置限定符 原理:通过 [!t] 强制 LaTeX 优先将表格放置在页面顶部(Top),! 表示忽…...
dify+mysql的诗词助手
目录 数据库表结构: 数据库查询的http服务搭建: 流程引擎搭建: 开始, HTTP查询数据库, LLM数据分析, 直接回复, 效果测试: 下载链接: 数据库表结构:…...
PyTorch 入门学习
目录 PyTorch 定义 核心作用 应用场景 Pytorch 基本语法 1. 张量的创建 2. 张量的类型转换 3. 张量数值计算 4. 张量运算函数 5. 张量索引操作 6. 张量形状操作 7. 张量拼接操作 8. 自动微分模块 9. 案例-线性回归案例 PyTorch 定义 PyTorch 是一个基于 Python 深…...
【视频】SRS将RTMP转WebRTC、HLS流;获取RTSP转其它流
1、安装依赖库 sudo apt install tclsh sudo apt install cmake sudo apt install autotools-dev automake m4 perl sudo apt install libtool2、源码安装 1)下载源码 https://github.com/ossrs/srs/releases/tag/v5.0-r32)配置、编译 ./configure && make -j83、…...
linux中如何查询文件夹大小
在 Linux 中,可以使用 du 命令查看文件夹大小。以下是常用方法: 标题1. 查看文件夹大小 du -sh /path/to/directory-s:显示总大小。 -h:以易读格式(如 KB、MB、GB)显示大小。 标题2:查看文件…...
MySQL增删改查操作 -- CRUD
个人主页:顾漂亮 目录 1.CRUD简介 2.Create新增 使用示例: 注意点: 3.Retrieve检索 使用示例: 注意点: 4.where条件查询 前置知识:-- 运算符 比较运算符 使用示例: 注意点…...
uniapp+Vue3 组件之间的传值方法
一、父子传值(props / $emit 、ref / $refs) 1、props / $emit 父组件通过 props 向子组件传递数据,子组件通过 $emit 触发事件向父组件传递数据。 父组件: // 父组件中<template><view class"container">…...
TDengine SQL 函数
单行函数 数学函数 ABSACOSASINATANCEILCOSDEGREESEXPFLOORGREATESTLEASTLNLOGMODPIPOWRADIANSRANDROUNDSIGNSINSQRTTANTRUNCATE 字符串函数 ASCIICHARCHAR_LENGTHCONCATCONCAT_WSLENGTHLOWERLTRIMPOSITIONREPEATREPLACERTRIMSUBSTRING/SUBSTRSUBSTRING_INDEXTRIMUPPER 转换函数…...
智能三防手持终端破解传统仓储效率困局
在数字化浪潮的推动下,传统仓储管理模式正面临效率低、成本高、错误频发等瓶颈。如何实现精准、高效、智能化的仓储管理,上海岳冉三防智能手持终端机以RFID技术为核心,结合工业级三防(防水、防摔、防尘)设计࿰…...
力扣——K个一组翻转链表
题目链接: 链接 题目描述: 思路: 可以理解为把原链表的每一段进行反转 把链表的每一段看成新链表,单独进行反转,然后再放回原链表 关键是截取k个节点、进行反转后,怎么再和原链表链接起来 我们把截取的…...
5-27 临摹大师-IP-Adapter
前言: 前一节我们主要介绍ControlNet中如何对黑白照片进行上色 主要介绍ControlNet中的IP-Adapter。这个也是一种类似的风格借鉴,类似Reference的能力。 当然IP-Adapter有两点或许可以吸引我们,一个是国人腾讯公司制作的。另一个在速度和效…...
MinIO的预签名直传机制
我们传统使用MinIo做OSS对象存储的应用方式往往都是在后端配置与MinIO的连接和文件上传下载的相关接口,然后我们在前端调用这些接口完成文件的上传下载机制,但是,当并发量过大,频繁访问会对后端的并发往往会对服务器造成极大的压力…...
树莓科技集团董事长:第五代产业园运营模式的深度剖析与展望
第五代产业园运营模式,以创新为核心驱动,强调数字化、网络化和资源整合。树莓科技集团在这一领域具有代表性,其运营模式值得深入剖析。 核心特征 数字化转型:第五代产业园高度重视数字化技术的应用,通过构建数字化平…...
项目组织管理类型-职能式组织和矩阵式组织的区别
在职能式组织和矩阵式组织中,任务分配和人员安排确实有显著的不同,让我们通过以下例子来进一步解释: 职能式组织在职能式组织中,任务通常是根据部门的职能进行下达的。 例如,一家制造公司的组织结构如下: …...
树莓科技(成都)集团:如何铸就第五代产业园标杆
树莓科技(成都)集团铸就第五代产业园标杆,主要体现在以下几个方面: 精准定位与前瞻布局 树莓科技并非盲目扩张,而是精准锚定数字经济发展方向。以成都为起点,迅速构建起全国性的园区版图,体现…...
【Quest开发】手柄交互震动
软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72(要提前导入哦) 硬件:Meta Quest3 参考Meta开发文档:https://developers.meta.com/horizon/documentation/unity/unity-haptics-sdk-integrate 这篇官…...
《Transformer如何进行图像分类:从新手到入门》
引言 如果你对人工智能(AI)或深度学习(Deep Learning)感兴趣,可能听说过“Transformer”这个词。它最初在自然语言处理(NLP)领域大放异彩,比如在翻译、聊天机器人和文本生成中表现出…...
数字图像处理与Python语言实现-Box模糊CUDA实现
Box模糊CUDA实现 文章目录 Box模糊CUDA实现1、Box模糊的基本原理2、算法优化:滑动窗口技术3、参数对模糊效果的影响4、Box模糊的优缺点5、与高斯模糊的对比6、实际应用场景7、算法实现7.1 PyCUDA实现7.2 CuPy实现7.3 C++与CUDA实现8、总结在图像处理领域,**Box模糊(方框模糊…...
MAVEN解决版本依赖冲突
文章目录 一、依赖冲突概念1、什么是依赖冲突2、依赖冲突的原因3、如何解决依赖冲突 二、查看依赖冲突-maven-helper1、安装2、helper使用1、conflicts的阅读顺序(从下向上看)2、dependencies as List的阅读顺序(从下向上看)3、de…...
Compose 实践与探索五 —— AnimationSpec
不论是 animateXxxAsState() 还是 Animatable 的 animateTo() 都可以传入 AnimationSpec 以配置动画的规格: Composable fun animateDpAsState(targetValue: Dp,animationSpec: AnimationSpec<Dp> dpDefaultSpring,label: String "DpAnimation",…...
Embedding模型到底是什么?
嵌入模型(Embedding Model)是一种将高维数据映射到低维空间的工具,广泛应用于自然语言处理(NLP)、推荐系统和图像识别等领域。它的核心目标是将复杂的数据(如文本、图像或用户行为)转换为稠密的…...
数据结构(一)——绪论
一、数据结构的研究内容 1.数据的各种逻辑结构和物理结构,以及他们之间的相应关系 2.存储结构的方法,对每种结构定义相适应的各种运算 3.设计出相应的算法 4.分析算法的效率 二、数据结构的基本概念 1.数据(data):…...
VMware虚拟机网络连接模式介绍以及nat模式访问公网实践
在 VMware 虚拟机中,网络配置是非常重要的一部分。VMware 提供了三种主要的网络连接模式,分别是桥接模式(Bridged)、NAT模式(NAT) 和仅主机模式(Host-Only)。每种模式都有其特定的用…...
Selenium Manager和webdriver manager的区别与联系
一、引言 1.1 自动化测试的重要性 在现代软件开发流程中,自动化测试已经成为保证软件质量和提高交付效率的关键实践。随着软件开发周期的缩短和软件复杂性的增加,手工测试已无法满足快速迭代的需求。自动化测试能够快速、准确地执行重复性测试任务&…...
八叉树地图的原理与实现
八叉树与体素图 八叉树地图 八叉树地图是可变分辨率的三维栅格地图,可以自由调整分辨率,如下所示: 根据点云的数量或密度决定每个叶子方块是否被占据 体素图 体素就是固定分辨率的三维栅格地图,如下所示: 根据点云…...
DeepSeek模型本地化部署方案及Python实现
DeepSeek实在是太火了,虽然经过扩容和调整,但反应依旧不稳定,甚至小圆圈转半天最后却提示“服务器繁忙,请稍后再试。” 故此,本文通过讲解在本地部署 DeepSeek并配合python代码实现,让你零成本搭建自己的AI…...
【Linux】浅谈冯诺依曼和进程
一、冯诺依曼体系结构 冯诺依曼由 输入设备、输出设备、运算器、控制器、存储器 五部分组成。 冯诺依曼的设计特点 二进制表示 所有数据(包括程序指令)均以二进制形式存储和运算,简化了硬件逻辑设计,提高了可靠性。 存储程序原理…...
基于深度学习的多模态人脸情绪识别研究与实现(视频+图像+语音)
这是一个结合图像和音频的情绪识别系统,从架构、数据准备、模型实现、训练等。包括数据收集、预处理、模型训练、融合方法、部署优化等全流程。确定完整系统的组成部分:数据收集与处理、模型设计与训练、多模态融合、系统集成、部署优化、用户界面等。详…...
【蓝桥杯】第15届c++B组--R格式
问题描述 小蓝最近在研究一种浮点数的表示方法:RR 格式。对于一个大于 0 的浮点数 dd,可以用 RR 格式的整数来表示。给定一个转换参数 nn,将浮点数转换为 RR 格式整数的做法是: 将浮点数乘以 2n2n; 四舍五入到最接近的整数。 …...
【初阶三】认识C语言—下
【初阶三】认识C语言—下 1.函数2.数组3.操作符3.1算数操作符3.2移位操作符和位操作符3.3赋值操作符3.4单目操作符 4.常见关键字4.1关键字typedef4.2 关键字static 5. define定义常宏6.指针6.1内存6.2取地址操作符& 7.结构体 1.函数 函数就像一个工厂,通过输入原…...
【C#】使用DeepSeek帮助评估数据库性能问题,C# 使用定时任务,每隔一分钟移除一次表,再重新创建表,和往新创建的表追加5万多条记录
🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…...
前端学习笔记(三)——ant-design vue表单传递数据到父页面
前言 善用AI,快速解决定位 原理 a-form所在的SFC(单文件)vue中需要将表单数据传递给父页面SFC文件中,使用emit方法 代码 子组件(Form.vue) <template><a-form submit"handleSubmit&qu…...
计算机视觉算法实战——驾驶员玩手机检测(主页有源码)
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 1. 领域简介:玩手机检测的重要性与技术挑战 驾驶员玩手机检测是智能交通安全领域的核心课题。根据NHTSA数据࿰…...
C语言(23)
字符串函数 11.strstr函数 1.1函数介绍: 头文件:string.h char *strstr ( const char * str1,const char *str2); 作用:在一个字符串(str1)中寻找另外一个字符串(str2)是否出现过 如果找到…...
Python入门教程:从零开始学习Python编程
引言 Python是一种高级编程语言,因其简洁的语法和强大的功能而广受欢迎。无论你是编程新手,还是有经验的开发者,Python都是一个非常好的选择。本文将带你从零开始学习Python编程,涵盖基础语法、常用库以及一些实用的编程技巧。 目…...
SAIL-RK3576核心板应用方案——无人机视觉定位与地面无人设备通信控制方案
本方案以 EFISH-RK3576-SBC工控板 或 SAIL-RK3576核心板 为核心,结合高精度视觉定位、实时通信与智能控制技术,实现无人机与地面无人设备的协同作业。方案适用于物流巡检、农业植保、应急救援等场景,具备高精度定位、低延迟通信与强环境适应性…...
14.C语言const的使用规范,详细说明
目录 修饰变量 修饰指针 指向常量的指针 常量指针 指向常量的常量指针 修饰函数参数 修饰函数返回值 总结 在 C 语言里,const 是一个类型限定符,它的作用是将变量定义为只读,也就是不允许对其值进行修改,用来修饰函数中的…...
安装操作系统ubuntu-20.04.6-live-server-amd64
一、下载虚拟机软件、远程控制软件及操作系统镜像 下载VMware Workstation: 下载 VMware Workstation Pro 个人免费版(可能会访问不了,那就随便找个能下载的版本安装)下载XShell: XShell 家庭/学校免费版下载ubuntu操作系统 ubuntu-20.04.6-…...
使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b或DeepSeek-r1:1.5b 模型(完成度80%)
原文:🚣♂️ 使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b 模型 🚣 — PaddleNLP 文档 使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b 模型 🚣 PaddleNLP 在支持 AVX 指令的 CPU 上对 llama 系列模型进行了…...
【Golang】第五弹----函数
笔上得来终觉浅,绝知此事要躬行 🔥 个人主页:星云爱编程 🔥 所属专栏:Golang 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 一、函数 1.1基本介绍…...
适合二次开发的Web组态软件推荐
在选择适合二次开发的Web组态软件时,需要考虑多个因素,包括开源与否、功能、社区支持、文档完整性等。以下是一些适合二次开发的Web组态软件: 1. Node-RED 简介: Node-RED 是一个基于流的编程工具,最初由IBM开发,现为…...
三、Docker 集群管理与应用
(一)项目案例 1、准备主机 (1)关闭防火墙,或者开放TCP端口2377(用于集群管理通信)、TCP/UPD端口7946(用于节点之间的通信)、UDP端口4789(用于overlay网络流…...
Spring 注解解析
一、Import 1、核心作用 Import 是 Spring 模块化配置的核心注解,用于将外部配置类、组件或动态逻辑导入当前 Spring 上下文。其核心功能包括: 配置类聚合:整合多个分散的 Configuration 类,解决大型项目中配置分散的问题。动态…...
DeepSeek-R1思路训练多模态大模型-Vision-R1开源及实现方法思路
刚开始琢磨使用DeepSeek-R1风格训练多模态R1模型,就看到这个工作,本文一起看看,供参考。 先提出问题,仅靠 RL 是否足以激励 MLLM 的推理能力? 结论:不能,因为如果 RL 能有效激励推理能力&#…...
mysql select distinct 和 group by 哪个效率高
在有索引的情况下,SELECT DISTINCT和GROUP BY的效率相同;在没有索引的情况下,SELECT DISTINCT的效率高于GROUP BY。这是因为SELECT DISTINCT和GROUP BY都会进行分组操作,但GROUP BY可能会进行排序,触发filesort&…...
阿里云操作系统控制台评测:国产AI+运维 一站式运维管理平台
阿里云操作系统控制台评测:国产AI运维 一站式运维管理平台 引言 随着云计算技术的飞速发展,企业在云端的运维管理面临更高的要求。阿里云操作系统控制台作为一款集运维管理、智能助手和系统诊断等多功能于一体的工具,正逐步成为企业高效管理…...
Linux基础开发工具—vim
目录 1、vim的概念 2、vim的常见模式 2.1 演示切换vim模式 3、vim命令模式常用操作 3.1 移动光标 3.2 删除文字 3.3 复制 3.4 替换 4、vim底行模式常用命令 4.1 查找字符 5、vim的配置文件 1、vim的概念 Vim全称是Vi IMproved,即说明它是Vi编辑器的增强…...