当前位置: 首页 > news >正文

React核心功能详解(一)

React是一个流行的JavaScript库,用于构建用户界面。其高级核心功能涵盖了多个方面,以下是对这些功能的详解:

一、组件化与模块化

  1. 组件化开发:React提倡将用户界面拆分成多个独立的组件,每个组件负责管理自己的状态和UI,使得代码更加模块化和可复用。开发者可以使用类组件或函数组件来定义这些组件,并通过props来进行数据传递。
  2. 高阶组件(HOC):高阶组件是一个函数,它接收一个组件作为参数,并返回一个新的组件。HOC可以用于复用组件逻辑、修改组件props、访问组件状态和生命周期等。
  3. Render Props:Render Props是一种技术,允许你通过函数组件的props来渲染组件。它提供了一种灵活的方式来共享代码和状态逻辑。

二、状态管理与数据流

  1. 状态管理:React中的状态管理使您能够跟踪组件的状态,并在状态发生变化时更新UI。React提供了一种称为状态提升(lifting state up)的模式,可以将共享状态提升到更高层的组件中管理。
  2. Context API:Context提供了一种在组件树中传递数据的方式,而不必在每个层级上手动地通过props传递。这对于需要在深层组件中共享数据时非常有用。
  3. Redux等第三方状态管理库:Redux是一个流行的JavaScript状态容器,用于管理应用程序的状态。它遵循Flux架构模式,并采用单一状态树和纯函数来执行状态更新。此外,还有MobX等其他状态管理库可供选择。

三、性能优化

  1. 虚拟DOM:React使用虚拟DOM技术来提高性能。它通过在内存中维护一份虚拟DOM树来跟踪页面状态的变化,然后与实际DOM进行比较,并只更新必要的部分,从而减少了页面重绘和重新布局的次数,提高了页面的性能。
  2. shouldComponentUpdate与PureComponent:shouldComponentUpdate是一个生命周期方法,允许开发者在组件更新之前进行条件判断,从而避免不必要的渲染。PureComponent是一个内置组件,它在shouldComponentUpdate中实现了浅比较,用于优化性能。
  3. React.memo:React.memo是一个高阶组件,用于对函数组件进行性能优化。它只会在props改变时重新渲染组件。
  4. 代码分割与懒加载:React支持代码分割和懒加载,允许开发者将应用程序拆分成更小的代码块,并在需要时动态加载它们。这有助于减少初始加载时间并提高应用程序的性能。

四、异步处理与数据请求

  1. 异步组件:React支持异步组件的加载,允许开发者在需要时动态加载组件。这可以通过React的lazy和Suspense特性来实现。
  2. 数据请求:在现代Web应用中,经常需要与后端服务器进行数据交互。React可以与各种异步处理库(如Axios、Fetch等)结合使用,来发起数据请求并更新组件状态。

五、生命周期方法与Hooks

  1. 生命周期方法:React组件具有生命周期方法,这些方法允许开发者在组件的不同阶段执行特定的逻辑,例如组件挂载、更新、卸载等。熟悉这些生命周期方法可以帮助开发者优化组件的性能并处理各种场景下的逻辑。
  2. Hooks:Hooks是React 16.8引入的一项新特性,它允许开发者在函数组件中使用状态和其他React特性,从而使函数组件具有类组件的功能。常用的Hooks包括useState、useEffect、useContext等,它们使得函数组件的编写更加简洁和灵活。

六、错误处理与调试

  1. 错误边界(Error Boundaries):React 16及更高版本引入了错误边界这一概念,它是一种特殊的React组件,能够在其子组件树中捕获任何渲染错误或其他JavaScript错误。当错误边界内的任何子组件抛出错误时,错误边界能够捕获这个错误,记录日志,并且可以选择性地显示恢复界面,而不是让整个应用程序崩溃。
  2. 开发工具:React提供了一系列开发工具,如React DevTools等,这些工具可以帮助开发者更好地调试和性能分析React应用程序。

综上所述,React的高级核心功能涵盖了组件化与模块化、状态管理与数据流、性能优化、异步处理与数据请求、生命周期方法与Hooks以及错误处理与调试等多个方面。这些功能使得React成为构建复杂、高性能Web应用程序的理想选择。

以下是对React中模块化开发、性能优化、组件化实践以及状态管理的详细解释,并附上相应的代码示例:

一、模块化开发

在React中,模块化开发主要使用CommonJS和ES6两种方式。

  1. CommonJS模块化开发
// 引入依赖
const React = require('react');
const ReactDOM = require('react-dom');// 定义组件
const App = React.createClass({render: function() {return <div>Hello World!</div>;}
});// 渲染组件
ReactDOM.render(<App />, document.getElementById('app'));
  1. ES6模块化开发
// 引入依赖
import React from 'react';
import ReactDOM from 'react-dom';// 定义组件
class App extends React.Component {render() {return <div>Hello World!</div>;}
}// 渲染组件
ReactDOM.render(<App />, document.getElementById('app'));

二、性能优化

在React中,性能优化是一个重要的方面。常见的性能优化方法包括使用shouldComponentUpdate方法、React.memouseMemouseCallback等。

  1. shouldComponentUpdate方法

shouldComponentUpdate方法用于控制组件是否应该更新。它接收两个参数:nextPropsnextState,表示组件将要更新的props和state。如果返回true,则组件需要重新渲染;如果返回false,则组件不需要重新渲染。

class Counter extends React.Component {shouldComponentUpdate(nextProps, nextState) {return nextProps.count !== this.props.count;}render() {return <div>{this.props.count}</div>;}
}
  1. React.memo

React.memo是一个高阶组件,用于对函数组件进行性能优化。它仅检查组件的props是否发生变更,如果未发生变更,则不会重新渲染组件。

import React, { useState, memo } from 'react';const Child = memo((props) => {console.log('子组件渲染');return <div>子组件</div>;
});const Parent = () => {const [count, setCount] = useState(0);return (<><button onClick={() => setCount(count + 1)}>+</button><p>计数器: {count}</p><Child /></>);
};
  1. useMemo

useMemo用于避免在每次渲染时都进行高开销的计算。它返回一个memoized值,该值在依赖项不变的情况下不会改变。

import React, { useState, useMemo } from 'react';const Child = (props) => {const { info } = props;console.log(`子组件接收: ${info.age}`);return <div>显示子组件</div>;
};const Parent = () => {const [age, setAge] = useState(6);const [sex, setSex] = useState('boy');const info = useMemo(() => {return { name: 'echo', age: age };}, [age]);return (<div><button onClick={() => setAge(age => age + 1)}>年龄+1</button><button onClick={() => setSex(sex => sex === 'boy' ? 'girl' : sex)}>改变性别</button><div>{`姓名:${info.name} 年龄:${info.age} 性别:${sex}`}</div><Child info={info} /></div>);
};
  1. useCallback

useCallback返回一个memoized版本的函数,该函数在依赖项不变的情况下不会改变。这可以避免在每次渲染时都重新创建函数。

import React, { useState, useCallback, memo } from 'react';const Child = memo(function({ onClick }) {console.log("子组件渲染");return <button onClick={onClick}>子组件</button>;
});const Parent = () => {const [name, setName] = useState(0);const [number, setNumber] = useState(0);const addClick = useCallback(() => {setNumber(number + 1);}, []);console.log("父组件渲染");return (<><button onClick={() => setName(name + 1)}>父组件</button><Child onClick={addClick} /></>);
};

三、组件化实践

组件化是React的核心思想之一。它允许将页面拆分成多个独立的组件,每个组件只关注自己的逻辑和样式。在实践中,可以将组件拆分成UI组件和容器组件。

  1. UI组件

UI组件只关注展示和交互,不关心数据来源和数据变化。

class Button extends React.Component {render() {const { onClick, text } = this.props;return <button onClick={onClick}>{text}</button>;}
}
  1. 容器组件

容器组件负责管理数据和业务逻辑,并渲染UI组件。

class App extends React.Component {constructor(props) {super(props);this.state = { count: 0 };}increment() {this.setState({ count: this.state.count + 1 });}render() {return (<div><Button onClick={() => this.increment()} text={`Count: ${this.state.count}`} /></div>);}
}

四、状态管理

React提供了几种管理状态的方法,其中最常用的是useStateuseReducer

  1. useState

useState是一个Hook,用于在函数组件中添加状态。它返回一个状态变量和一个更新该状态的函数。

import React, { useState } from 'react';function Counter() {const [count, setCount] = useState(0);const increment = () => {setCount(count + 1);};const decrement = () => {setCount(count - 1);};return (<div>Count: {count}<button onClick={increment}>Increment</button><button onClick={decrement}>Decrement</button></div>);
}
  1. useReducer

对于更复杂的状态逻辑,特别是当多个状态值之间存在依赖关系时,useReducer是一个更好的选择。它接受一个reducer函数和一个初始状态,并返回当前状态和一个dispatch函数。

import React, { useReducer, useEffect } from 'react';const initialState = { stories: [], isLoading: false, error: null };function reducer(state, action) {switch (action.type) {case 'FETCH_INIT':return { ...state, isLoading: true, error: null };case 'FETCH_SUCCESS':return { ...state, isLoading: false, stories: action.payload.stories };case 'FETCH_FAILURE':return { ...state, isLoading: false, error: action.payload.error };default:throw new Error();}
}function Stories() {const [state, dispatch] = useReducer(reducer, initialState);useEffect(() => {dispatch({ type: 'FETCH_INIT' });fetch('https://hn.algolia.com/api/v1/search?query=react').then(response => response.json()).then(data => dispatch({ type: 'FETCH_SUCCESS', payload: { stories: data.hits } })).catch(error => dispatch({ type: 'FETCH_FAILURE', payload: { error: error.message } }));}, []);const { stories, isLoading, error } = state;if (isLoading) return <div>Loading...</div>;if (error) return <div>Error: {error}</div>;return (<div>{stories.map(story => (<div key={story.objectID}>{story.title}</div>))}</div>);
}

以上就是React中模块化开发、性能优化、组件化实践以及状态管理的详细解释和代码示例。希望这些内容能够帮助你更好地理解React的相关概念和实践方法。

相关文章:

React核心功能详解(一)

React是一个流行的JavaScript库&#xff0c;用于构建用户界面。其高级核心功能涵盖了多个方面&#xff0c;以下是对这些功能的详解&#xff1a; 一、组件化与模块化 组件化开发&#xff1a;React提倡将用户界面拆分成多个独立的组件&#xff0c;每个组件负责管理自己的状态和…...

在vue中,根据后端接口返回的文件流实现word文件弹窗预览

需求 弹窗预览word文件&#xff0c;因浏览器无法直接根据blob路径直接预览word文件&#xff0c;所以需要利用插件实现。 解决方案 利用docx-preview实现word文件弹窗预览&#xff0c;以node版本16.21.3和docx-preview版本0.1.8为例 具体实现步骤 1、安装docx-preview插件 …...

基于Spring Boot的同城宠物照看系统的设计与实现

摘 要 科学技术日新月异&#xff0c;人们的生活都发生了翻天覆地的变化&#xff0c;同城宠物照看系统当然也不例外。过去的信息管理都使用传统的方式实行&#xff0c;既花费了时间&#xff0c;又浪费了精力。在信息如此发达的今天&#xff0c;我们可以通过网络这个媒介&#x…...

Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)

Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作&#xff08;三&#xff09; py2neo 删除 1、连接数据库 from py2neo import Graph graph Graph("bolt://xx.xx.xx.xx:7687", auth(user, pwd), nameneo4j)2、删除节点 # 删除单个节点 node graph.node…...

二分基本实现

模板 一般题目看到&#xff0c;最大&#xff0c;最小时优先考虑二分 //将区间分为 [l,mid-1] int erfen1(int l,int r) {while(l<r){int mid(lr1)/2;if(check())lmid;elsermid-1;}return l; }//将区间分为 [mid1,r] int erfen2(int l,int r) {while(l<r){int mid(lr)/2…...

数据结构中的随机抽取和顺序存取

在数据结构领域&#xff0c;随机存取与顺序存取是两种基本的存储模式。这两种模式在很大程度上决定了数据的组织与访问方式&#xff0c;从而对数据处理效率和存储空间的利用效果产生重要影响。本文将进一步探讨这两种存储模式的特点及其差异。 随机存取 随机存取&#xff0c;…...

大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

GPT中转站技术架构

本文介绍阿波罗AI中转站&#xff08;https://api.ablai.top/&#xff09;的技术架构&#xff0c;该中转API的技术架构采用了分布式架构、智能调度和API中转等技术&#xff0c;确保了全球范围内的高效访问和稳定运行。以下是对该技术架构的详细分析&#xff1a; 分布式架构 分…...

忽然就卷起来的AI Coding 赛道

忽然就卷起来的AI Coding 赛道 原创 松子 松子聊数据 2024年11月22日 17:03 2023年&#xff0c;大模型的爆发让整个行业经历了一场“拼尽一切”的竞赛——拼算力、拼参数、拼语料&#xff0c;再到今天开始拼智能体。 每一步都是技术的跃迁&#xff0c;也让市场竞争愈发白热化…...

十大网络安全事件

一、私有云平台遭攻击&#xff0c;美国数千家公司工资难以发放 1月&#xff0c;专门提供劳动力与人力资本管理解决方案的美国克罗诺斯&#xff08;Kronos&#xff09;公司私有云平台遭勒索软件攻击&#xff0c;事件造成的混乱在数百万人中蔓延。 克罗诺斯母公司UKG集团&#xf…...

1+X应急响应(网络)病毒与木马的处置:

病毒与木马的处置&#xff1a; 病毒与木马的简介&#xff1a; 病毒和木马的排查与恢复&#xff1a;...

nohup java -jar supporterSys.jar --spring.profiles.active=prod

文章目录 1、ps -ef | grep java2、kill 13713、ps -ef | grep java4、nohup java -jar supporterSys.jar --spring.profiles.activeprod &5、ps -ef | grep java1. 启动方式进程 1371进程 19994 2. 主要区别3. 可能的原因4. 建议 1、ps -ef | grep java rootshipper:~# p…...

二进制 分析工具:Radare2、r2frida、Binutils、file、string、as、nm、ldd、objdump、readelf、strip

1、二进制 分析工具 工欲善其事&#xff0c;必先利其器&#xff0c;在二进制安全的学习中&#xff0c;​使用工具尤为重要。遇到一个不熟悉的文件时&#xff0c; 首先要确定 "这是什么类型的文件"&#xff0c;回答这个问题的首要原则是&#xff0c;绝不要根据文件的扩…...

【Linux】基本指令

一、基本指令 1、pwd 语法&#xff1a;pwd 功能&#xff1a;显示用户当前所在的目录。 2.ls 语法&#xff1a;ls [命令行选项][目录或文件](对于选项可以是0个或多个) 功能&#xff1a;对于目录&#xff0c;该命令该目录下的目录和文件。对于文件&#xff0c;将列出文件名…...

Failed to start Docker Application Container Engine

说明&#xff1a; 1&#xff09;访问应用业务&#xff0c;读取不到数据&#xff0c;show databases;查看数据库报错 2&#xff09;重启docker服务&#xff0c;服务启动失败&#xff0c;查看日志报错如下图所示 3&#xff09;报错信息&#xff1a;chmod /data/docker: read-only…...

043 商品详情

文章目录 详情页数据表结构voSkuItemVo.javaSkuItemSaleAttrVo.javaAttrValueAndSkuIdVo.javaSpuAttrGroupVo.javaGroupAttrParamVo.java pom.xmlSkuSaleAttrValueDao.xmlSkuSaleAttrValueDao.javaAttrGroupDao.xmlAttrGroupServiceImpl.javaSkuInfoServiceImpl.javaSkuSaleAtt…...

股指期货的套保策略如何精准选择和规避风险?

在金融市场中&#xff0c;股指期货作为一种重要的风险管理工具&#xff0c;常被投资者用来规避投资风险。其原理在于&#xff0c;股指期货与现货股指的走势高度相关&#xff0c;因此可以通过在期货市场上建立与现货头寸相反的头寸&#xff0c;来对冲掉现货市场的价格波动风险。…...

基于物联网设计的人工淡水湖养殖系统(华为云IOT)_253

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…...

【动手学深度学习Pytorch】4. 神经网络基础

模型构造 回顾一下感知机。 nn.Sequential()&#xff1a;定义了一种特殊的module。 torch.rand()&#xff1a;用于生成具有均匀分布的随机数&#xff0c;这些随机数的范围在[0, 1)之间。它接受一个形状参数&#xff08;shape&#xff09;&#xff0c;返回一个指定形状的张量&am…...

python高阶技巧一

闭包 简单认识一下闭包 以下代码&#xff0c;内层inner函数不仅依赖于自身的参数b&#xff0c;还依赖于外层outer函数的参数a。inner就是一个闭包函数&#xff0c;既能访问外部变量&#xff0c;又保证外部变量不是全局的&#xff0c;不会被篡改掉&#xff0c;确保了外部变量的…...

智慧环保生态文明信息化解决方案

1. 生态文明建设背景 随着国家对生态文明建设的重视&#xff0c;一系列政策文件相继出台&#xff0c;将生态文明建设纳入国家发展总体布局&#xff0c;加大资源消耗、环境保护等指标权重&#xff0c;推动生态文明体制改革。 2. 智慧环保的定义与发展 智慧环保作为数字环保的…...

【Linux】权限

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 ⭐Linux权限的概念 &#x1f31f;权限管理 <1>文件访问者的分类 <2>文件类型和访问权限 <3>文件权限值的表示方法 <4>文件访问权限的相关设置方法 ✨chmod…...

docker 部署 kvm 图形化管理工具 WebVirtMgr

镜像构建 官方最后一次更新已经是 2015年6月22日 了&#xff0c;官方也没有 docker 镜像&#xff0c;这边选择咱们自己构建如果你的服务器有魔法&#xff0c;可以直接 git clone 一下 webvirtmgr 的包&#xff0c;没有的话&#xff0c;可以和我一样&#xff0c;提前从 github 上…...

Next.js- 链接和导航

#题引&#xff1a;我认为跟着官方文档学习不会走歪路 在介绍路由导航之前先了解下客户端组件和服务端组件 服务端组件&#xff08;Server Components&#xff09; &#xff08;1&#xff09; 渲染方式&#xff1a; 在服务器上渲染&#xff0c;生成 HTML 后发送到客户端。适…...

主机管理工具 WGCLOUD v3.5.6 更新了哪些特性

WGCLOUD-v3.5.6 更新说明&#xff0c;2024-11-20发布 1. 新增&#xff0c;个性化采集&#xff0c;查看 2. 新增&#xff0c;支持达梦数据库做数据源来存贮监控数据&#xff0c;查看说明(8) 3. 新增&#xff0c;日志监控支持配置自动处理指令&#xff0c;当发现日志出现告警关键…...

空间数据存储格式GeoJSON

GeoJSON 是一种用于表示地理信息的开放标准格式&#xff0c;广泛用于存储和交换地理空间数据。它基于 JSON 格式&#xff0c;因此易于理解和处理&#xff0c;尤其适用于 Web 和 JavaScript 环境中的地图应用。GeoJSON 支持多种地理信息类型&#xff0c;如点、线、面、坐标系统等…...

【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器

1.实验目的 通过实验课程与理论课的学习深入理解掌握的触发器的原理、创建、修改、删除、基本的使用方法、主要用途&#xff0c;并且可以在练习的基础上&#xff0c;熟练使用触发器来进行数据库的应用程序的设计&#xff1b;深入学习深刻理解与触发器相关的T-SQL语句的编写的基…...

Linux 中的 zoxide 命令详解与示例

文章目录 Linux 中的 zoxide 命令详解与示例zoxide 简介安装 zoxide使用包管理器Ubuntu/DebianArch LinuxFedoramacOS&#xff08;Homebrew&#xff09;Windows&#xff08;Scoop&#xff09; 使用脚本安装&#xff08;linux、Centos&#xff09;安装流程 集成到 ShellBashZshF…...

Etcd 框架

基本了解 客户端、长连接与租约的关系 客户端对象 etcd的客户端对象是用户与etcd服务进行交互的主要接口&#xff0c;主要功能就是存储、通知和事务等功能访问 键值存储&#xff1a;客户端通过put 和 get操作存储数据&#xff1b;数据存储在etcd的层级化键值数据库中监听器&a…...

在 CentOS 7 上安装 MinIO 的步骤

在 CentOS 7 上安装 MinIO 的步骤 在 CentOS 7 上安装 MinIO 的步骤1. 更新系统2. 安装依赖3. 下载 MinIO4. 赋予执行权限5. 移动 MinIO 到系统路径6. 创建 MinIO 用户7. 创建数据目录8. 创建 MinIO 服务文件9. 启动 MinIO 服务10. 设置开机自启11. 访问 MinIO12. 配置防火墙&a…...

【Linux】进程地址空间

目录 一、引入问题&#xff1a; 二、进程地址空间&#xff1a; 地址和数据总线&#xff1a; 三、页表&#xff1a; 权限&#xff1a; 缺页中断&#xff1a; 四、回到问题&#xff1a; 五、总结&#xff1a; 重新理解进程&#xff1a; 一、引入问题&#xff1a; 在C中&a…...

快速图像识别:落叶植物叶片分类

1.背景意义 研究背景与意义 随着全球生态环境的变化&#xff0c;植物的多样性及其在生态系统中的重要性日益受到关注。植物叶片的分类不仅是植物学研究的基础&#xff0c;也是生态监测、农业管理和生物多样性保护的重要环节。传统的植物分类方法依赖于人工观察和专家知识&…...

第 22 章 - Go语言 测试与基准测试

在Go语言中&#xff0c;测试是一个非常重要的部分&#xff0c;它帮助开发者确保代码的正确性、性能以及可维护性。Go语言提供了一套标准的测试工具&#xff0c;这些工具可以帮助开发者编写单元测试、表达式测试&#xff08;通常也是指单元测试中的断言&#xff09;、基准测试等…...

K8S + Jenkins 做CICD

前言 这里会做整体CICD的思路和流程的介绍&#xff0c;会给出核心的Jenkins pipeline脚本&#xff0c;最后会演示一下 实验/实操 结果 由于整体内容较多&#xff0c;所以不打算在这里做每一步的详细演示 - 本文仅作自己的实操记录和日后回顾用 要看保姆式教学的可以划走了&…...

http/https

1、http与https HTTPHTTPS信息明文传输加入ssl加密传输协议&#xff0c;可以使得报文加密传输默认端口80默认端口443连接简单TCP三次握手通信TCP三次握手后还要SSL/TLS握手过程&#xff0c;才可以加密报文传输无状态不安全需要到CA申请证书&#xff0c;身份认证&#xff0c;自…...

腾讯云 AI 代码助手:产品研发过程的思考和方法论

一、文章摘要 本文将详细阐述 腾讯云 AI 代码助手的历史发展形态与产品整体架构&#xff0c;并从技术、研发方法论的角度分别阐述了产品的研发过程。 全文阅读约 5&#xff5e;8 分钟。 二、产品布局 AI 代码助手产品经历了三个时代的发展 第一代诸如 Eclipse、Jetbrains、V…...

淘宝商品评论爬虫:Java实现指南

在当今的互联网时代&#xff0c;数据的价值日益凸显&#xff0c;尤其是用户生成的内容&#xff0c;如商品评论&#xff0c;对于理解消费者行为和市场趋势具有重要意义。淘宝作为中国最大的电商平台之一&#xff0c;拥有海量的商品评论数据。本文将介绍如何使用Java编写一个简单…...

银河麒麟v10 x86架构二进制方式kubeadm+docker+cri-docker搭建k8s集群(证书有效期100年) —— 筑梦之路

环境说明 master&#xff1a;192.168.100.100 node: 192.168.100.101 kubeadm 1.31.2 &#xff08;自编译二进制文件&#xff0c;证书有效期100年&#xff09; 银河麒麟v10 sp2 x86架构 内核版本&#xff1a;5.4.x 编译安装 cgroup v2启用 docker版本&#xff1a;27.x …...

【Linux】详解shell代码实现(上)

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 学校开始搞蓝桥的校选…...

Ruby 模块(Module)

Ruby 模块&#xff08;Module&#xff09; 概述 Ruby 是一种动态、开放源代码的编程语言&#xff0c;以其简洁明了的语法和强大的功能而闻名。在 Ruby 中&#xff0c;模块&#xff08;Module&#xff09;是一个重要的概念&#xff0c;它用于封装一组相关的方法和常量。模块提…...

成都睿明智科技有限公司怎么样可靠不?

在这个日新月异的数字时代&#xff0c;电商行业如同一股不可阻挡的洪流&#xff0c;席卷着每一个消费者的生活。而抖音&#xff0c;作为短视频与电商完美融合的典范&#xff0c;更是为无数商家开辟了一片全新的蓝海。在这片充满机遇与挑战的海洋中&#xff0c;成都睿明智科技有…...

内网安全隧道搭建-ngrok-frp-nps-sapp

1.ngrok 建立内网主机与公网跳板机的连接&#xff1a; 内网主机为客户机&#xff1a; 下载客户端执行 2.frp &#xff08;1&#xff09;以下为内网穿透端口转发 frp服务端配置&#xff1a; bindPort 为frp运行端口 服务端运行 ./frps -c frps.ini frp客户端配置&#xf…...

k8s 对外服务之 Ingress

LB ingress //Ingress 简介 service的作用体现在两个方面&#xff0c;对集群内部&#xff0c;它不断跟踪pod的变化&#xff0c;更新endpoint中对应pod的对象&#xff0c;提供了ip不断变化的pod的服务发现机制&#xff1b;对集群外部&#xff0c;他类似负载均衡器&#xff0c;…...

前端速通(JavaScript)

1 初识JavaScript 1 JavaScript是什么 JavaScript 是一种高层的、轻量级的、解释型的编程语言&#xff0c;最初由 Netscape 公司于 1995 年开发。它的特点包括&#xff1a; 动态性&#xff1a;JavaScript是动态类型语言&#xff0c;允许开发者灵活地操作数据。跨平台&#xf…...

Unity图形学之着色器之间传递参数

1.初始化 struct&#xff1a; UNITY_INITIALIZE_OUTPUT&#xff08;type,name&#xff09; Type: struct 名字 Name :变量的名字 struct Input{float2 uv_MainTex;float3 myColor;};half _Glossiness;half _Metallic;fixed4 _Color;void MyVertx(inout appdata_base v,out I…...

JavaScript中的this指向问题

JavaScript中的this指向问题 1.1 为什么需要this? 为什么需要this? 在常见的编程语言中&#xff0c;几乎都有this这个关键字&#xff08;Objective-C中使用的是self),但是在JavaScript中的this和常见的面向对象语言中的this不太一样 常见面向对象的编程语言中&#xff0c;比…...

Qt之QWidget相关

Qt概述 Qt 是一个跨平台的 C 开发框架。 跨平台支持&#xff1a;可以用于开发 Windows、macOS、Linux、Android、iOS 等多种操作系统下的应用程序。这意味着开发者使用 Qt 编写的代码&#xff0c;在经过适当的编译和配置后&#xff0c;能够在不同平台上运行&#xff0c;减少了…...

Ease Monitor 会把基础层,中间件层的监控数据和服务的监控数据打通,从总体的视角提供监控分析

1. 产品定位 Ease Monitor 有如下的产品定位&#xff1a; 关注于整体应用的SLA。 主要从为用户服务的 API 来监控整个系统。 关联指标聚合。 把有关联的系统及其指示聚合展示。主要是三层系统数据&#xff1a;基础层、平台中间件层和应用层。 快速故障定位。 对于现有的系统…...

苹果MacOS 调用自编译opencv的Dylib显示一个图片程序的步骤

前言 为了测试自编译的opencv库是否能在苹果MacOS系统下使用&#xff0c;需要写一个简单的测试程序。这个测试程序写起来不难&#xff0c;麻烦的是一些配置。网上的办法很多&#xff0c;里面因为版本的问题有一些坑。特此写了一个建立步骤&#xff0c;供大家参考。 1、新建一个…...

网页中调用系统的EXE文件,如打开QQ

遇到一个实际的问题&#xff0c;需要在网页中打开本地的某个工业软件。 通过点击exe文件就可以调用到程序。 比如双击qq的exe就可以启动qq的程序。 那么问题就变成了如何加载exe程序呢&#xff1f; 可以通过Java的 Process process Runtime.getRuntime().exec(command);通过…...