【React】基本语法
基本语法
- 通过jsx的语法可以在js中写html
- 函数组件 / class组件的语法、父子组件传参、事件
- react 生命周期
- 根据状态(数据)动态渲染组件 / 列表渲染 / 表单渲染
- class组件中的ref、ref回调函数
-
什么是react ?
用于构建用户界面的 JavaScript 库,
主要用于构建UI。起源于facebook内部项目,facebook团队更名meta -
react特点 ?
1)完全组件化。
没有基础很难上手(vue是渐进式的)
2)和ts结合比较好
3)用于构建用户界面的 JavaScript 库(vue生态(cli vuex vue-router)都是本身开发团队参与开发和封装的,而react不是,react团队只做核心内容开发,它的生态都是第三方写的,
封装灵活不像vue高度集成,所有都规范好了)
4)跨平台,pc 移动都可以使用,react-native
5)虚拟dom(react最早提出)。什么是虚拟dom?虚拟DOM是一种在内存中表示真实DOM结构的技术;通过比较虚拟DOM和真实DOM的差异,框架可以最小化更新操作,只在必要时更新DOM树中的变化部分
。为什么说操作dom最损耗性能?(减少重绘重排,使用虚拟dom
)
6)对原生js,尤其es6,要求比较高
7)使用了自己的jsx语法,目的是为了更加方便的写dom结构,react和别的框架的区别,html写在js里面。浏览器并不能识别jsx语法,react的项目都需要引入babel.js(将浏览器无法识别的语法解析成浏览器能够识别的语法)
-
react 两大文件
react:
核心包,提供创建元素,组件等功能;react-dom:
提供了dom相关功能 ,虚拟dom,负责将创建的元素、组件渲染到页面
//CDN链接的方式引入
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
通过jsx的语法可以在js中写html
React.createElement("元素",{元素属性1:值,元素属性2:值
},元素内容)ReactDOM.render(text,document.getElementById("root")); //将指定的内容渲染在root根节点下前提:浏览器无法识别jsx语法,需要babel解析。如果是script标签引入的话,必须加上<!-- <script type="text/babel"> -->1.但是jsx的内容必须包裹在一个根元素内部,不能有两个根元素
2.单标签必须闭合( / 符号)
3.随便缩进
4.可以随便写变量,但是它的变量是放在单花括号中的( {} )
5.而且标签中可以调用函数,简单计算,三元运算
6.属性要使用变量,去掉"",在{}中放变量,<img src={src}/>
7.class的使用需要用className,因为class是关键词
8.在标签上添加style属性需要用到双花括号。外面的括号是包裹变量用到,设置样式的时候里面的花括号表示样式json对象用的
9.jsx中可以放哪些数据类型?let a=5 | "hello" | <div></div>;9.1 数字9.2 字符串9.3 布尔值,可以写成三元展示 let msg=true; {msg?"真":"假"}9.4 数组,数组会直接展示数组中的内容 let msg=[1,2,3]9.5 对象,不能被直接展示,只能转成字符串后展示let msg={name:"月亮"};<h1 className="colorR" data-index="1">内容:{JSON.stringify(msg)}</h1>10.事件1)事件属性是驼峰写法2)绑定的事件放在花括号中3)调用事件直接写事件名,不要打括号11.注释{/* 内容 */}
<style>.colorR{color: red;}
</style><!--挂载的根节点-->
<div id="root"></div><script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">/*React.createElement("元素",{元素属性1:值,元素属性2:值},元素内容)*//*const text=React.createElement("h1",{title:"hello",id:"my1"},"初识react,hello")*/let fn=()=>{alert("哈哈哈哈")};let fn2=()=>{console.log("fn2")}let src="https://fanyi-cdn.cdn.bcebos.com/static/cat/asset/logo.2481f256.png";let msg={name:"月亮"};let num=100;let text=(<div><h1 className="colorR" data-index="1">内容:{JSON.stringify(msg)}</h1><img src={src}/><div>{123+5}</div><h2>{num>100?"大于100":"小于100"}</h2>{/*<p>{fn()}</p>*/}<span style={{color:"green",backgroundColor:"yellow"}}>内联样式</span><button onClick={fn2}>事件</button></div>)ReactDOM.render(text,document.getElementById("root"));
</script>
函数组件 / class组件的语法、父子组件传参、事件
1)class组件语法定义方式:class 组件名首字母大写 extends React.Component{render(){return 模板}}2)函数组件语法定义方式:function 函数名(){return (模板)}或简写:const 组件名=()=>模板组件的使用:<组件名></组件名> 或 <组件名/>版本16.8之前的函数组件和类组件的区别:生命周期 状态(数据管理) ref this 用途函数组件 没有 没有 没有 普通函数this指向会变化,需要用箭头函数 布局,UI组件class组件 有 有 有 this指向class组件的实例 常用组件版本16.8之后作者加入了hook,函数组件什么 都可以做:两种组件的呈现没有多少区别了,甚至于函数组件会显得更简洁,因为class组件所有的东西都会写在类里面,最后class比较大函数组件的好处就是每个函数都可以分离出来,需要的时候调用或者传参就好了(具体使用哪个看公司是否有要求)父子组件传参:函数组件中props传递参数,但是父组件传递参数,子组件props接受的参数只能读取,不能赋值事件:1.<button onClick={this.changeColor1}>点击修改1</button>如果函数不是箭头函数,this指向就会有问题如果函数中不使用this就不会有问题如果要使用this,解决方式就是将函数变成箭头函数2.<button onClick={this.changeColor2.bind(this)}>点击修改2</button>直接将正确的this传递给函数,函数调用不会报错3.<button onClick={this.changeColor3.bind(this,1,2,3)}>点击修改3</button>在传参的时候使用事件对象event:在react中事件对象是react自己封装的1.阻止冒泡 event.stopPropagation()2.阻止默认行为 event.preventDefault()3.键码 event.keyCodeevent对象的获取:<script>myEvent1(event){ /*不传参*/console.log(event);}myEvent2=(ev)=>{ /*箭头函数*/console.log(ev);}myEvent3(a,b,c,event){ /*传参,event写在最后获取*/console.log(a,b,c,event);}</script>
<div id="root"></div>
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">/*-------------class组件--------------*///-------语法,父子组件传参------/*class Child extends React.Component{render(){ //React中的render()函数是渲染的生命周期函数,负责渲染组件的输出console.log(this.props); //通过props获取到父组件传递过来的参数return <div><h5 style={{color:this.props.color}}>子组件:{this.props.tit}</h5></div>}}class Com extends React.Component{ //组件名首字母要大写render(){return <div><h2>父组件</h2><p>这是一个class组件</p><Child color="red" tit="红组件"/>{/!*父组件使用的时候需要传递参数给子组件,告诉颜色*!/}<Child color={"green"} tit={"绿组件"}/></div>}}*///-------事件------class Com extends React.Component{constructor() {super();this.state={ //当前组件的状态tit:"这是class组件需要用到的状态",color:"red"}};changeColor1=()=>{ //不写成箭头函数的话this执行有问题,导致找不到setState// this.state.color="green"; //错误方式,不能通过赋值的方式修改状态this.setState({color:"green"})};changeColor2(){this.setState({color:"green"})};changeColor3(a,b,c){console.log(a,b,c);this.setState({color:"green"})};myEvent1(event){console.log(event);};myEvent2=(ev)=>{console.log(ev);};myEvent3(a,b,c,event){console.log(a,b,c,event);};render(){return <div style={{color:this.state.color}}>{this.state.tit}<button onClick={this.changeColor1}>点击修改1</button><button onClick={this.changeColor2.bind(this)}>点击修改2</button><button onClick={this.changeColor3.bind(this,1,2,3)}>点击修改3-带参</button><button onClick={this.myEvent1}>事件对象1</button><button onClick={this.myEvent2}>事件对象2</button><button onClick={this.myEvent3.bind(this,1,2,3)}>事件对象3-带参</button></div>}}/*-------------函数组件--------------*///-------语法------/*function Com(){return (<div><p>这是一个函数组件</p></div>)}*//*const Com=()=><div><p>这是一个箭头函数组件</p></div>*///-------父子组件传参------// const Child=(props)=><div style={{color:props.color}}>函数式的子组件:{props.tit}</div>;/*const Child=(props)=>{// props.tit="哈哈哈"; //props的属性只能读取不能赋值return <div style={{color:props.color}}>函数式的子组件:{props.tit}</div>;}const Com=()=><div><p>函数式的父组件</p><Child color="red" tit="红组件"/><Child color={"green"} tit={"绿组件"}/></div>;*/const root=ReactDOM.createRoot(document.querySelector("#root"));root.render(<Com/>);</script>
react 生命周期
1.组件挂载前(18版本已经没有了)componentWillMount
2.组件挂载后 componentDidMount(发起ajax请求)
3.组件更新前(18版本已经没有了)componentWillUpdate
4.组件更新后 componentDidUpdate
5.组件卸载前 componentWillUnmount(清除组件的定时器)不管是在vue或者react或者小程序中,都是通过数据来决定页面的内容是否渲染,而不是通过节点删除或新增来操作
<div id="root"></div>
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">class Com extends React.Component{constructor() {super();this.state={tit:"测试生命周期",color:"red"}};changeColor=()=>{this.setState({color:"green"})};render(){return <div><h2 style={{color:this.state.color}}>{this.state.tit}</h2><button onClick={this.changeColor}>点击修改</button></div>};/*生命周期*/componentDidMount(){console.log("挂载后")};componentDidUpdate(){console.log("数据更新后")};componentWillUnmount(){console.log("销毁前")}}const root=ReactDOM.createRoot(document.querySelector("#root"));root.render(<Com/>);</script>
根据状态(数据)动态渲染组件 / 列表渲染 / 表单渲染
动态渲染组件:
<div id="root"></div>
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script><!--点击对应按钮,显示对应组件-->
<script type="text/babel">class Com1 extends React.Component{render(){console.log(this.props.mystatus);if(this.props.mystatus===1){return <div>Com1</div>}else{return <div>Com2</div>}}};class Com extends React.Component{constructor() {super();this.state={status:1 //status值是 1 和 2,分别展示不同的内容}}//按钮触发的事件,可以不用写在这外面,可直接写在按钮上render(){return <div><button onClick={()=>{this.setState({status: 1})}}>按钮1</button><button onClick={()=>{this.setState({status: 2})}}>按钮2</button>{/*引入子组件,同时像子组件传递参数,子组件根据参数决定展示什么内容*/}<Com1 mystatus={this.state.status}/></div>}}ReactDOM.createRoot(document.querySelector("#root")).render(<Com/>);
</script>
列表渲染:
<div id="root"></div>
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script><!--列表渲染-->
<script type="text/babel">class Com extends React.Component{constructor() {super();this.state={list:[{name:"庄寒雁",age:31},{name:"傅云夕",age:30},{name:"月亮",age:25},{name:"太阳",age:100},{name:"太阳",age:100}],// arr:[1,2,3] //直接展示 123arr:[<h5>1</h5>,<h5>2</h5>,<h5>3</h5>]}}render(){let list=this.state.list.map((v,i)=>{ /*map()方法会返回一个新数组[]*/return <p key={i}>我叫{v.name},今年{v.age}岁</p>})//简写:{/*let list = this.state.list.map((v, i) => <p key={i}>我叫{v.name},今年{v.age}岁</p>)*/}console.log(list); //[<p>我叫{v.name},今年{v.age}岁</p>,<p>我叫{v.name},今年{v.age}岁</p>]return <div>{/*{this.state.arr}*/}{list}</div>}}ReactDOM.createRoot(document.querySelector("#root")).render(<Com/>);
</script>
表单渲染:
表单分为受控表单和非受控表单:受控表单: onChange ev.target.value非受控表单: defaultValue
<div id="root"></div>
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script><!--表单渲染-->
<script type="text/babel">class Com extends React.Component{constructor() {super();this.state={val:"输入框的初始数据"}}valChange=(ev)=>{console.log(ev.target.value); //ev.target指向事件源(表示当前这个event对象是谁触发的)this.setState({val:ev.target.value})}render(){return <div><input type="text" value={this.state.val} onChange={this.valChange}/> {/*受控表单*/}<input type="text" defaultValue={this.state.val}/> {/*非受控*/}{this.state.val}</div>}}ReactDOM.createRoot(document.querySelector("#root")).render(<Com/>);
</script><!--1. 输入框的值绑定在页面的状态中:this.state.val2. react的语法要求,需要一个onChange函数2.1 valChange函数(通过event对象获取了当前输入框的值)2.2 将获取的值,重新设置给状态:this.state.val输入框输入的值就是状态中的值
-->
class组件中的ref、ref回调函数
ref:可以获取到dom真实节点,但是并不推荐,有需要才用
<div id="root"></div>
<script src="./js/react.development.js"></script>
<script src="./js/react-dom.development.js"></script>
<script src="./js/babel.min.js"></script>
<script type="text/babel">/*1.props单向数据流,以声明式渲染组件,而ref是命令式操作组件,命令式破坏了原本的数据流,不要滥用ref2.无论vue还是react或微信小程序,思路都不应该是操作节点,大部分的时候都应该是通过数据的改变来使页面变化,而非操作节点3.react中ref的使用方法(不能在函数式组件上用,原因:函数式组件上没有实例)*//*ref回调函数:ref属性它接受一个回调函数,它在组件被加载或者卸载的时候会立即执行1.当html元素添加ref属性,ref回调函数接收底层的dom元素作为参数2.当组件添加ref属性时,ref回调函数接收当前组件实例作为参数3.当组件卸载的时候,会传入null4.ref回调会在componentDidMount 或者 componentDidUpdate这些生命周期回调之前执行*//*class MyRef extends React.Component{constructor() {super();this.myInput=React.createRef()}myFocus=()=>{console.log(this.myInput.current) //找到input节点this.myInput.current.focus();}render(){return <div><input type="text" defaultValue="123" ref={this.myInput}/><input type="button" value="获取焦点" onClick={this.myFocus}/></div>}componentDidMount(){console.log(this.myInput.current)}}*///ref回调函数/*class MyRef extends React.Component{constructor() {super();this.myInput=null;}setInputRef=(element)=>{console.log(element) //input元素this.myInput=element;}myFocus=()=>{this.myInput.focus()}render(){return <div><input type="text" defaultValue="123" ref={this.setInputRef}/><button onClick={this.myFocus}>聚焦</button></div>}}*///通过ref获取子组件的节点,以及子组件内部真正挂载的节点class ChildInput extends React.Component{render(){return <div><input type="text"/></div>}}class MyRef extends React.Component{render(){return <div><ChildInput ref={"child"}/></div>}componentDidMount(){console.log(this.refs.child)console.log(ReactDOM.findDOMNode(this.refs.child)) //访问真正的dom}}ReactDOM.createRoot(document.querySelector("#root")).render(<MyRef/>)
</script>
相关文章:
【React】基本语法
基本语法 通过jsx的语法可以在js中写html函数组件 / class组件的语法、父子组件传参、事件react 生命周期根据状态(数据)动态渲染组件 / 列表渲染 / 表单渲染class组件中的ref、ref回调函数 什么是react ? 用于构建用户界面的 JavaScript 库,主要用于构建…...
ubunut24.04 bash和zsh同时使用conda
文章目录 ubunut24.04 bash和zsh同时使用conda功能一、安装miniconda3二、bash中初始化conda以及安装命令补全1. bash中初始化conda2. bash中安装conda命令补全功能 三、zsh中初始化conda以及安装命令补全1. zsh中初始化conda2. zsh中安装conda命令补全功能3. 在~/.zshrc文件中…...
深度学习入门:神经网络
目录 1. 从感知机到神经网络1.1 神经网络的例子1.2 复习感知机1.3 激活函数登场 2 激活函数2.1 sigmoid函数2.2 阶跃函数的实现2.3 阶跃函数的图形2.4 sigmoid函数的实现2.5 sigmoid函数和阶跃函数的比较2.6 非线性函数2.7 ReLU函数 3 多维数组的运算3.1 多维数组 恒等函数soft…...
Unity有限制状态机FSM
我是标题 前言有限制状态机框架框架图:主要代码: 前言 一般的小型游戏的状态机会使用一个枚举类来枚举所有的状态,然后使用一个switch case来处理所有状态的行为逻辑,但是用这种方式会形成大量的冗余,因为所有的行为逻…...
bash的特性-命令和文件自动补全
在Linux或Unix操作系统中,Bash(Bourne Again SHell)是最常用的命令行解释器之一。它提供了丰富的功能来提升用户的交互体验,其中命令和文件名的自动补全是提高效率的一大利器。本文将详细介绍Bash中的自动补全功能,包括…...
聊聊价值投资
投资的必要性 如果手上现在有10w元,投资时间是50年,就算年化收益率只有15%,最终的财富值也会超过1亿元。而且通货膨胀会让你的存款购买力越来越少,如果你有无法及时花出去的钱,投资是必要的。05年的时候我家楼下的包子…...
ADI的BF561双核DSP怎么做开发,我来说一说(十六)触摸屏的设计
作者的话 ADI的双核DSP,最早的一颗是Blackfin系列的BF561,这颗DSP我用了很久,比较熟悉,且写过一些给新手的教程。 硬件准备 ADZS-BF561-EZKIT开发板:ADI原厂评估板 AD-ICE20000仿真器:ADI现阶段性能最好…...
基于labview的2PSK调制与解调
前面板如上图所示。 以上为产生随机序列的程序 以上为星座图程序 如需要源代码可联系我...
2021-11-01 C++输入十个数求最大最小和第二大第二小的值
缘由c语言输入十个数求最大最小和第二大第二小的值-编程语言-CSDN问答 这是个有意思的题目,考虑可扩展...如果是4个元素的数组,实现O(N)排序 void 输入十个数求最大最小和第二大第二小的值() {//缘由https://ask.csdn.net/ques…...
红人矩阵化运营策略:2025跨境电商如何高效布局海外红人营销
在全球社交媒体营销日益精细化的今天,跨境电商品牌正从单一红人合作转向系统化、团队化的“红人矩阵化运营”。尤其在TikTok、Instagram、YouTube等主流平台逐渐成熟的背景下,如何构建高效的海外红人营销矩阵,成为品牌实现全域曝光与精准转化…...
c# Kestrel
Kestrel 是 .NET 中用于 ASP.NET Core 应用程序的跨平台 Web 服务器。它是轻量级且高性能的,能够处理大量并发连接,常被用作 ASP.NET Core 应用的默认服务器。以下为你介绍 Kestrel 的基本使用和配置: 基本使用 创建一个简单的 ASP.NET Cor…...
算法训练之贪心
♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...
ThreeJs实现裸眼3D地球仪
一、实现效果 使用Three.js实现裸眼3D地球仪 二、实现代码 代码如下: <!DOCTYPE html> <html> <head><title>3D Earth</title><style>body { margin: 0; }canvas { display: block; }</style> </head> <body…...
0x07.Redis 的 hash 是什么?
回答重点: Redis 的 Hash 是一种键值对集合,允许将多个字段与其对应的值存储在同一个键中,从而方便管理和操作关联数据。它的主要特点包括: 高效存储:Hash 采用哈希表实现,能够在内存中高效地存储和操作小规模的数据集,非常适合存储对象的属性。快速操作:支持对字段的…...
今日一记:逆序打印字符、五人年龄计算、对N个数排序
今日进行三道题的练习 题目一:逆序打印字符 核心需求:将输入的n个字符以相反顺序输出。 算法分析: 递归思想: 递归函数先读取字符,直到输入结束(如换行符或EOF)。 在递归返回时打印字符&…...
【笔记】对抗训练-GAN
对抗训练-GAN 深度学习中 GAN 的对抗目标函数详解与最优解推导一、GAN 的基本对抗目标函数二、判别器与生成器的博弈目标三、判别器的最优解推导四、最优判别器的含义五、总结六、WGAN 的动机(为后续铺垫) 深度学习中 GAN 的对抗目标函数详解与最优解推导…...
Python六大数据类型与可变类型
数字类型包括整型(int),浮点型(float),布尔型(bool),复数型(complex)。整型只能存储整数,浮点型可以存储整数和小数,布尔型…...
回溯-day65
回溯 什莫事回溯 回溯法也可以叫做回溯搜索法,它是一种搜索的方式 回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本…...
(2)VTK C++开发示例 --- 绘制多面锥体
文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 VTK C开发示例程序; 使用C 和VTK绘制一个多面锥体。 环境说明系统ubuntu22.04、windows11cmake3.22、3.2…...
合同智能审核技术的发展与应用
一、背景与行业现状 合同审查作为企业合同管理的关键环节,其核心价值在于确保合同内容符合法律法规要求并契合企业内部政策。随着企业业务规模扩张带来的合同数量激增,传统人工审查方式在效率和成本方面的局限性日益凸显。这一现状为人工智能技术在合同…...
cryptozombies合约7
我们的合约几乎就要完成了!让我们加上一个事件. 事件 是合约和区块链通讯的一种机制。你的前端应用“监听”某些事件,并做出反应。 例子: // 这里建立事件 event IntegersAdded(uint x, uint y, uint result);function add(uint _x, uint _y) public…...
DeepSeek 接入 Word 完整教程
一、前期准备 1.1 注册并获取 API 密钥 访问 DeepSeek 平台: 打开浏览器,访问 DeepSeek 官方网站(或您使用的相应平台)。注册并登录您的账户。 创建 API 密钥: 在用户控制面板中,找到“API Keys”或“API…...
ARCGIS PRO DSK 利用两期地表DEM数据计算工程土方量
利用两期地表DEM数据计算工程土方量需要准许以下数据: 当前地图有3个图层,两个栅格图层和一个矢量图层 两个栅格图层:beforeDem为工程施工前的地表DEM模型 afterDem为工程施工后的地表DEM模型 一个矢量图层…...
大数据学习栈记——Redis安装及其使用
本文介绍NoSQL技术:Redis的安装及其使用。操作系统:Ubuntu24.04 Redis介绍 Redis是一个键值(key-value)存储系统,即键值对非关系型数据库,和Memcached类似,目前正在被越来越多的互联网公司采用…...
前端工程化之自动化构建
自动化构建 自动化构建的基本知识历史云构建 和 自动化构建 的区别:部署环境:构建:构建产物构建和打包的性能优化页面加载优化构建速度优化 DevOps原则反馈的技术实践 encode-bundlepackage.json解读src/cli-default.tssrc/cli-node.tssrc/cl…...
camx的xml解析
ls out/target/product/<product>/gen/STATIC_LIBRARIES/libcamxgenerated_intermediates/generated g_chromatix g_facedetection g_parser g_sensorg_chromatix/ tuning相关xml的解析codeg_facedetection/ 人脸检测相关xml的解析codeg_parser/ 主要的解析manager 流…...
虚幻引擎 Anim To Tex| RVT | RT
本文上篇分为4个部分:动画驱动材质,虚拟纹理,Rendertarget,以及其他杂项的地编ta干货整理。(其中RT部分基本为UOD重要截图摘录) 本文下篇为:skylight和directional light的区别,未完…...
计算机视觉与深度学习 | 钢筋捆数识别
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 钢筋捆数 1、初始结果2、处理效果不佳时的改进方法1、预处理增强2、后…...
关于PHP开源CMS系统ModStart的详细介绍及使用指南
关于PHP开源CMS系统ModStart的详细介绍及使用指南: 🔍 ModStart是什么? 基于Laravel框架开发的模块化CMS系统采用Apache 2.0 开源协议,完全免费可商用特别适合需要快速搭建企业级网站/管理系统的开发者 🚀 核心优势…...
VMware vCenter Server 安全漏洞升级方案一则
一、安全漏洞情况 根据VMware提供的安全建议(VMSA-024-0012),VMware vCenter Server可能经受以下漏洞的威胁: 漏洞一为VMware vCenter Server堆溢出漏洞(CVE-2024-37079,CVE-2024-37080)&…...
Linux服务之网络共享
目录 一.存储类型 二.NFS 2.1定义 2.2工作原理 2.3优势 2.4NFS工具 2.4.1exportfs 2.4.2showmount 2.5NFS相关软件及命令 2.6模拟实现NFS 准备工作(服务端和客户端都需要) 服务端位置 客户端配置 测试 补充:设置自动挂载 一.存…...
接口幂等性问题
幂等性问题出现在创建和更新数据时: 一、创建 1、在创建数据时,数据库方面,创建有效的唯一索引,用来数据兜底,并在程序中做异常捕获。 2、在插入数据时可以创建一个防重表做过滤,如果防重数据比较小又需…...
LeetCode每日一题4.14
1534. 统计好三元组 问题分析 遍历数组,满足好三元组定义,count1 思路 枚举i,j,k 代码 class Solution:def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int:n len(arr)count 0for i in range…...
活动安排问题 之 前缀和与差分
文章目录 D. Robert Hood and Mrs Hood 考虑到一个活动开始时间和结束时间s,e,那么可以影响到的范围就是 s-d1,e,所以我们只需对这个每一个活动可以影响到的区域进行标记即可,当然为了降低时间复杂度,我们将使用前缀和与差分 t int(input()…...
HTTP 和 HTTPS 协议的区别及使用场景
在互联网的世界里,HTTP 和 HTTPS 是我们经常接触到的两种网络协议,它们在数据传输、安全性等方面存在诸多差异,适用的场景也各有不同。 一、HTTP 和 HTTPS 的基本概念 HTTP,即超文本传输协议(Hyper - Text Transfer Protocol),是一种用于分布式、协作式和超媒体信息…...
SAP 供应链:采购订单ME21N创建关键点
一、ME21N创建采购订单关键点 采购组织/采购组 字段:EKORG(采购组织)、EKGRP(采购组)关键点:采购组织必须与公司代码(Company Code)关联,采购组对应采购员职责范围示例&…...
重构无人机动力控制范式:Breeze 55A FOC 电调技术深度测评 ——全新Vfast 观测器如何突破效率与精度双重瓶颈
一、引言 在无人机动力系统中,电调(电子调速器)作为连接电池与电机的核心枢纽,其控制精度、效率及可靠性直接影响飞行性能。南昌长空科技的Breeze 55A FOC 电调凭借全新 Vfast 观测器技术与成熟的 FOC(矢量控制&#…...
LLM做逻辑推理题-哪一项圈出后不用找零
题目: 某天,两男两女走进一家自助餐厅,每人从机器上取下一许如下图所示的标价单。 50、95 45、90 40、85 35、80 30、75 25、70 20、65 15、60 10、55 (1)四人要同样的食品…...
第十章 json操作
第十章 json操作 文章目录 第十章 json操作一、Marshal 序列化二、Unmarshal 反序列化1 已知数据解析2 未知数据解析3 json测试 一、Marshal 序列化 package mainimport ("encoding/json""fmt" ) type Animal struct {Name string json:"name"…...
Python-Django集成yolov识别模型摄像头人数监控网页前后端分离
程序示例精选 Python-Django集成yolov识别模型摄像头人数监控网页前后端分离 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Python-Django集成yolov识别模型摄像头人数监控网页前后端分离…...
「出海匠」借助CloudPilot AI实现AWS降本60%,支撑AI电商高速增长
🔎公司简介 「出海匠」(chuhaijiang.com)是「数绘星云」公司打造的社交内容电商服务平台,专注于为跨境生态参与者提供数据支持与智能化工作流。平台基于大数据与 AI 技术,帮助商家精准分析市场趋势、优化运营策略&…...
tsconfig.json配置不生效
说明一下我遇到的问题,这是我的配置文件代码的 {"compilerOptions": {"module": "none","target": "ES5","outFile": "./dist/bundle.js"} } 和我想象不同的是,我编译成 js 没…...
WebFlux应用中获取x-www-form-urlencoded数据的六种方法
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
GPT4O画图玩法案例,不降智,非dalle
网址如下: 玩法1:吉卜力(最火爆) 提示词:请将附件图片转化为「吉卜力」风格,尺寸不变 玩法2:真人绘制 提示词:创作一张图片,比例4:3,一个20岁的中国女孩…...
【Python爬虫】简单案例介绍1
目录 三、Python爬虫的简单案例 3.1 网页分析 单页 三、Python爬虫的简单案例 本节以科普中国网站为例。 3.1 网页分析 单页 在运用 Python 进行爬虫开发时,一套严谨且有序的流程是确保数据获取高效、准确的关键。首先,深入分析单个页面的页面结构…...
【CAPL实战:以太网】MAC地址由整数形式转换为字符串形式的自定义函数
我在文章MAC地址在字符串形式、数字形式和byte数组中的转换中讲过MAC地址在字符串形式、数字形式和byte数组中的转换方法和思想。如果你仔细阅读过这篇文章,那么MAC地址的形式要如何转换,自定义函数要如何实现它肯定也能信手拈来。如果你还不会也没有关系,今天我们尝试用另一…...
#4 我们为什么使用物联网? 以及 物联网的整体结构
设备不物联是否可以? 答案 是可以的,从项目实战的角度,还是有很多包括分拣,控制,检测等应用是分立的,这个和成本,场景,客户接受度等因素有关。 局部看,一些系统的确很简…...
MQTT、HTTP短轮询、HTTP长轮询、WebSocket
一、协议“明星定位”仿写 MQTT:物联网领域的**“明星协议”**,专为低带宽、高延迟网络环境下的设备通信而生。HTTP短轮询:数据拉取界的**“劳模”**,用简单粗暴的频繁请求换取数据更新。HTTP长轮询:短轮询的**“智能…...
Apache Commons CLI 入门教程:轻松解析命令行参数
文章目录 Apache Commons CLI 入门教程:轻松解析命令行参数一、什么是 Commons CLI?二、为什么选择 Commons CLI?三、快速开始1. 添加依赖2. 基础示例3. 运行示例1. 在Idea中运行2. 命令行中运行3. 使用 Maven/Gradle 运行(推荐&a…...
Kubernetes Operator 是什么,以及它们的用途
最近一个朋友问我关于EKS的升级问题: 场景: 如果我有 100 个 EKS 集群需要升级,那么所有集群都安装了安全插件。由于我不想在升级后手动在每个EKS中重复安装此插件,如何实现EKS升级后自动安装这个安全插件? 答案有多…...