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

网站建设6135678/公司网址怎么制作

网站建设6135678,公司网址怎么制作,简单的生产管理系统,网站做cpa组件与模块 前期准备 安装React官方浏览器调试工具,浏览器扩展搜索即可 比如红色的React就是本地开发模式 开启一个用React写的网站,比如美团 此时开发状态就变成了蓝色 组件也能解析出来 何为组件&模块 模块,简单来说就是JS代…

组件与模块

前期准备

安装React官方浏览器调试工具,浏览器扩展搜索即可
在这里插入图片描述
比如红色的React就是本地开发模式
在这里插入图片描述
在这里插入图片描述

开启一个用React写的网站,比如美团
此时开发状态就变成了蓝色
在这里插入图片描述
组件也能解析出来
在这里插入图片描述

何为组件&模块

模块,简单来说就是JS代码分块了:
在这里插入图片描述
组件,简单来说就是把H5,CSS,JS,图像一些杂七杂八的整合到一个模块里:
在这里插入图片描述


模块化: 当应用的JS都以模块来编写,这个应用就是一个模块化的应用
组件化: 当应用是以多组件的方式实现,这个应用就是一个组件化的应用

函数式组件

函数式组件,那就先写一个函数放在script标签里备着
在这里插入图片描述
写完就需要渲染,光一个函数在那放着肯定不行,所以用ReactDOM.render渲染到真实DOM上
在这里插入图片描述
打开页面,很明显,不行,因为React不会直接认识函数
在这里插入图片描述
之前我们说过,React自定义的组件首字母一定大写

我们的函数式组件函数名就是组件的名字,所以组件名要大写,那么函数名也要大写!

如果小写了就会出现这种错误,因为小写的标签会先去h5原生的标签找,所以会找不到
在这里插入图片描述


改一下,注意标签闭合
在这里插入图片描述
在这里插入图片描述

执行ReactDom.render发生了什么

  • 1.React解析组件标签,然后找到了目标组件,比如上面的<Demo/>组件

  • 2.发现组件是使用函数定义的,随后调用该函数,将返回的虚拟DOM转为真实DOM,随后渲染到页面上

类的基本知识复习

原型链

原型链:当在实例化的对象中访问一个属性时,首先会在该对象内部(自身属性)寻找,如找不到,则会向其__proto__指向的原型中寻找,如仍找不到,则继续向原型中__proto__指向的上级原型中寻找,直至找到或Object.prototype.__proto__为止(值为null),这种链状过程即为原型链。如下图所
原型链的作用:查找对象的属性(方法)

子类找不到就去父类去找

代码

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><title>Hello React!</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"></head><body><script type="text/javascript">// 用class创建类,类中无需定义变量,构造器只有在需要赋值的时候才需要定义class Person{constructor(name,age){//this指向当前实例对象this.name=name;this.age=age;//当然可以在构造器里固定写值this.school="尚硅谷"}// 类中定义方法不要用function,function就变成函数了speak(){console.log(`名字:${this.name},年龄:${this.age}`)}talk(){console.log("people talk")}}//继承class Student extends Person{constructor(name,age,grande){// 继承用super关键字复用父类的构造// surper(父类构造参数)super(name,age);// 子类独有的构造要单独写this.grande=grande;}speak(){//直接调用构造的值即可console.log(`名字:${this.name},年龄:${this.age},年级:${this.grande}`)}study(){console.log("努力学习")}}const p=new Person("张三","23");const student=new Student("李四","25","大三");console.log(p);p.speak();student.speak();student.study();//调用父类方法,先去原型链找,找到了就调用,找不到继续往下面的原型链找student.talk();</script></body>
</html>

类的创建

类构造器

子类

子类构造器

总结

  • 1.类中的构造器不是必须写的,只有要对实例做一些初始化的时候,比如添加指定属性时才写
  • 2.如果A类继承了B类,且A类写了构造器,那么A构造器中的super是必须调用的
  • 3.类中定义的方法都是放在了类的原型对象上的

类组件

创建类组件

类组件,类名就是组件名

// 类组件必须继承于React的Component
// 创建类组件
class MyComponet extends React.Component{// render是放在MyComponet的原型对象上面,供实例对象是用// render中的this是谁?//  实际上是指向MyComponet的实例对象,同时也是MyComponent组件实例对象render(){console.log("render中的this",this)return <div>aaa</div>}
}
// ReactDOM的render和类组件里的render没有关系,只是单纯的名字一样
ReactDOM.render(<MyComponet/>,document.getElementById("test"))

打印的this对象:
在这里插入图片描述


执行代码,成功渲染

ReactDOM.render如何渲染类组件

ReactDOM.render(<MyComponet/>,document.getElementById("真实DOM的id"))执行时发生了什么

  • 1.React解析对象,通过找到同名 MyComponet class组件
  • 2.发现组件是类组件,随后自动将MyComponet类new出来对象,并且自动调用render方法
  • 3.将render返回的虚拟DOM转换为真实DOM,随后页面显示

类组件的实例核心属性

注意,我们这里说的是,类组件实例的核心属性

也就是说,只有实例对象才有属性

所以这里直接pass掉函数组件,函数组件的是无法创建对象的,只有类组件才能创建实例对象

给Java程序员一个类比
比如定义一个方法 public void test(){},方法是没办法创建对象的。(类比函数组件)
但是定义一个类,public class Test{},类是可以创建对象的。(类比类组件)

在这里插入图片描述

核心属性1:state

组件的状态里面存着数据,数据的改变驱动页面展示
在这里插入图片描述

state例子

通过state对画面进行动态控制

<script type="text/babel">// 借助构造器,对state设置值class MyComponet extends React.Component{constructor(props){// 由于继承于React.Component// 所以用构造器设置state值时,必须调用父类构造器(类组件语法,子类使用构造器时必须先用super调用父类构造器)// 参数固定为属性propssuper(props);// 对当前对象state进行修改,注意是state,而不是states,这两个是不同的东西// state在设置时需要用{key1:value1,key2:value2,...}这样来setthis.state={isHot:true}}render() {console.log(this);return (<div>今天天气{this.state.isHot?'炎热':'凉爽'}</div>);}}// ReactDOM的render和类组件里的render没有关系,只是单纯的名字一样ReactDOM.render(<MyComponet/>,document.getElementById("test"))
</script>

如图,state已经成功set上值
在这里插入图片描述
在这里插入图片描述


利用React工具看一下组成:
在这里插入图片描述

将组件绑定事件

先回顾一下原生的几种绑定方式
在这里插入图片描述

注意,H5中一些原生的属性在React中已经完成了重写
比如:
onclick在React中变成了onClick
onblur变成了onBlur
class变成了className

如果写错了在控制台就会有提示
在这里插入图片描述

最后引入React的推荐写法

先分享一个错误写法

 <script type="text/babel">// 借助构造器,对state设置值class MyComponet extends React.Component{constructor(props){super(props);this.state={isHot:false}}render() { return (//  <div onClick="test()">这种函数用字符串的形式肯定是不可以的<div onClick={test()}> //换用表达式写法今天天气{this.state.isHot?'炎热':'凉爽'}</div>);}}// ReactDOM的render和类组件里的render没有关系,只是单纯的名字一样ReactDOM.render(<MyComponet/>,document.getElementById("test"))function test(){console.log("OK")}

这里会造成一个问题,就是把 表达式传给了onClick()事件
也就是onClick传了个函数表达式进去,而不是函数名

而这个函数表达式是个undefined的返回值,就会导致onClick事件触发函数后接收了undefined,如果是有小括号这样传值,会触发一次回调,onClick在接收到undefined之后就会不动了,导致后续事件都失效

<div onClick={test()}></div> //表达式
<div onClick={test}></div> //函数名function test(){console.log("OK")}
所以主要是记住,**如果要绑定事件,传一个函数名就行**
有的小伙伴可能会问,那这样怎么传参?
答案是箭头函数,用箭头函数传参

最后改成正确答案

<script type="text/babel">// 借助构造器,对state设置值class MyComponet extends React.Component{constructor(props){super(props);this.state={isHot:false}}render() { return (<div onClick={test}>今天天气{this.state.isHot?'炎热':'凉爽'}</div>);}}// ReactDOM的render和类组件里的render没有关系,只是单纯的名字一样ReactDOM.render(<MyComponet/>,document.getElementById("test"))function test(){console.log("OK")}
</script>

在这里插入图片描述

将函数优化进组件里

理论上,函数和组件应该是融为一体的,不应该相互独立

所以将function函数放进类组件,只保留函数名+函数体即可
在这里插入图片描述

运行代码会报错,因为onClick没有指定this的指向
在这里插入图片描述
在这里插入图片描述

如果放入类组件内部,则意味着属于这个类,所以onClick回调时需要用this指向,指向当前实例

修改指向,不再报错
在这里插入图片描述

解决类中的this指向问题

<script type="text/babel">// 借助构造器,对state设置值class MyComponet extends React.Component{constructor(props){// 由于继承于React.Component// 所以用构造器设置state值时,必须调用父类构造器(类组件语法,子类使用构造器时必须先用super调用父类构造器)// 参数固定为属性propssuper(props);// 对当前对象state进行修改,注意是state,而不是states,这两个是不同的东西this.state={isHot:false}// 解决test中的指向问题,这时如果再在test中输出,就不再是undefinedthis.test=this.test.bind(this)}test(){console.log("OK")// test 函数放在哪? 放在MyComponet的原型对象上,供实例使用// 由于test方法是onClick的回调,所以就不能用对象实例调用,直接调用即可// 类方法中默认开启了局部的严格模式,所以此时如果输出this对象,即为undefinedconsole.log(this)}render() { return (<div onClick={this.test}>今天天气{this.state.isHot?'炎热':'凉爽'}</div>);}}// ReactDOM的render和类组件里的render没有关系,只是单纯的名字一样ReactDOM.render(<MyComponet/>,document.getElementById("test"))</script>

状态不可直接更改,要用setState

反例:直接操作状态(state)来实现boolean值切换
在这里插入图片描述
在这里插入图片描述


由此可见,state是不可以直接修改的!所以要借助对象内部的API来修改

打印一下对象,看看原型链,找到最顶层的ReactComponent的原型对象,类似于Object的性质
在这里插入图片描述
所以我们如果想修改,就只能用setState({key:value})
调用时:

this.setState({key:value})
setState是一个合并操作

比如我定义了一个state

this.state({"key1":value1},{"key2":value2})

如果此时,我对key1进行修改操作,此时仅仅只针对key1进行覆盖操作,不会影响key2以及key2的值。

this.setState({"key1":test})

那么此时的state就会变成

this.state({"key1":test},{"key2":value2})

如果再来一个key3,就再合并进去,这就是所谓的合并操作

组件各部分渲染次数

构造器 constructor => 有几个ReactDOM.render提及了这个组件,就构造几次,一般来说是一次
ReactDOM.render(<MyComponet/>,document.getElementById("test"))

普通函数 test => 有几次事件触发,或者被调用,这个函数就调用几次

渲染 render => 1+n次,1是初始化时的渲染,n是state的修改次数

<script type="text/babel">class MyComponet extends React.Component{constructor(props){// 构造器 }test(){// 普通函数console.log(this)this.setState({"key1":value1},{"key2":value2})}render() { // render函数负责渲染 return (<div onClick={this.test}>今天天气{this.state.isHot?'炎热':'凉爽'}</div>);}}ReactDOM.render(<MyComponet/>,document.getElementById("test"))
</script>

setState的简写方式

首先看看类中的一个知识,就是定义一个固定的值是不需要去像函数一样,定义变量类型变量名一连串操作… 直接赋值即可

构造器中定义固定值,和构造器外类内去定义效果一样

class MyComponet extends React.Component{constructor(props){this.name=namethis.state={isHot:false}//构造器定义固定值this.age=25}// 直接定义值是一样的,类中不需要定义变量,直接赋值即可age=25// 就连state也不用在构造器去写了,直接定义即可state={isHot:false}render() { return (<div onClick={this.test}>今天天气{this.state.isHot?'炎热':'凉爽'}</div>);}
}

自定义方法改写

为了解决类中方法的this指向问题,而采用了赋值语句接收箭头函数,如果是箭头函数,那么里面的this就会自动向外寻找,寻找其再外面一层的this,所以函数的再外一层的指向就是类,随即解决this指向问题。

test作为变量接收箭头函数的返回值
这样就相当于把箭头函数,赋值给了对象的属性上,
在属性调用的时候,相当于通过属性调用函数
属性一定有this,所以就解决了this的指向问题
实际开发过程中,自定义方法要用箭头函数,而不是这种写法test(){console.log(this)this.state({"key1":value1},{"key2":value2})}
箭头函数,test作为变量接收箭头函数的返回值,这样就相当于把箭头函数,赋值给了对象的属性上,这样在属性调用的时候,相当于通过属性调用函数,这样就解决了this指向问题test = ()=>{console.log(this)this.state({"key1":value1},{"key2":value2})}

注意:类里面不支持这种箭头函数写法,必须去用值接收

  test ()=>{console.log(this)this.state({"key1":value1},{"key2":value2})}

state总结


理解:

1.state是组件对象最重要的属性,值是对象({"key1":value1},{"key2":value2})

2.组件被称为状态机,通过更新组件的state来更新对应的页面显示(重新渲染组件)


强烈注意:

1.组件中render方法中的this为组件实例对象

2.组件自定义的方法中this为undefined,如何解决?

  • a. 强制绑定this:通过函数对象的bind()方法来创建一个新函数
  • b. 用属性接收一个箭头函数

3.状态数据,不能直接修改或更新,需要通过特定API来处理

核心属性2:props

前面看state只是类组件内部的东西,类组件内部可以提前准备一些数据用

回顾js展开运算符

首先回顾一下js的展开符号 ...

首先以打印一个数组为例:

 <script type="text/javascript">let a=[1,2,3]console.log(a)</script>

这种的输出就是结果就是这样,是叠在一起的
,


但如果是用了展开符号,再打印,数组内部结构就会被展开铺开

 <script type="text/javascript">let a=[1,2,3]console.log(...a)</script>

在这里插入图片描述

展开运算符的其他用法

可以用作两个数组连接

反例:
在这里插入图片描述
用展开符连接
在这里插入图片描述

注意:展开符无法直接展开对象
比如,直接展开a对象会报错
在这里插入图片描述
但是利用展开符复制对象是可以的
在这里插入图片描述
点击这里查看MDN官方文档对于展开符的解释

在这里插入图片描述

展开复制过程中直接修改某个属性

如果对于某个属性不满意,当然可以直接在复制过程中直接修改

let 新对象 = {...展开源对象,key:value,key2:value2......}

在这里插入图片描述

展开符就复习到这,开始进入React部分


React Props传参

如果总是用对象中的state,就好像只能内部操作属性,无法获取外部的值,此时就得用Props属性,来实现从外部对类标签进行传值的操作

直接在标签上,以key=value的形式传值,注意,这里value先按照字符串来填写,写数字会报错,后面会解释为什么
在这里插入图片描述
但是不难发现,如果写了n多个属性,就会很繁琐,所以引入展开符,效果一样,更加方便

注意,传入对象和被使用的对象key之间,key要匹配上,不然key都对不上了,肯定找不到value了
在这里插入图片描述
这里有一个非常有意思的点,之前上面刚刚才说过,对象不可以用展开符直接展开,这里就用到了展开符去传参。

因为这个是在React中的特殊语法,标签上可以这么去搞。有React依赖+babel就可以这么用

标签传值数字问题

直接传一个数字是不行的,因为React默认value是有数据类型的,双引号默认是String。
在这里插入图片描述
所谓数据类型,只有在JS中才有,既然是这样,我们传一个JS代码就可以了,即传入参数用{}包裹,这样数字就会被识别为Number类型,自然不会有问题
在这里插入图片描述

对象.propTypes和PropTypes的区别

就和Java一样,React传参编译没有明显提示

  • 问题1:如果我希望传一个String,但是方法调用者传了一个Number就会有问题
  • 问题2:某个属性没有值,那我希望给一个默认值,这个默认值该如何设置

可以看下面两个:

属性类型约束

React16以前的类型指定
对象.propTypes来写规则代码

React.PropTypes.类型来指定类型

在这里插入图片描述
React16及以后,因为React对象过于臃肿因此对象类型不再集成在React中,所以就引入了prop-types.js来做类型指定
在这里插入图片描述
直接用PropTypes.类型即可,测试可以正常渲染
在这里插入图片描述
甚至可以传函数进去,注意函数的关键字是func而不是function,这么写是避免重名
在这里插入图片描述

属性默认值

简单指定一下即可,不是很难

 MyComponet.defaultProps={// 如果不传值,则默认张三name:"张三",// 如果不传值,则默认18age:18,}
将默认属性值和属性约束集成在类中

前面我们看到,默认属性值和属性约束都写在类的外面,这就违反了我们类组件的初衷,所以我们要把这个写在类内部

注意,是类的内部,render的外部
直接用static来修饰即可,同时去掉 类名称调用

在这里插入图片描述

props是只读的

直接修改props是会报错的,因为其是只读的
在这里插入图片描述
补充一下
在这里插入图片描述

函数式组件使用Props

首先,函数式组件,是没有实例对象的
所以,对象的三大属性,就有两个废掉了用不了,唯有props可以留下,因为比较特殊,在函数组件需要传参使用。
除此以外,像static这种类才会有的关键字就用不了了

以下是例子:

在这里插入图片描述

核心属性3:ref

可以理解为标签用来标识自己用的(类似于id)

组件内的标签可以定义ref属性来标识自己

每个标签上可以定义ref,对象会将这些ref收集起来到对象身上,对象身上有refs的属性,代表多个标签的ref被收集起来,我们可以通过这些ref来获取真实DOM

传统获取DOM的方式

 class MyComponet extends React.Component{showDate=()=>{
//这种传统形式获取太麻烦,因为React是操作DOM的,所以我们借助React的ref来获取真实DOMconst inputDiv=document.getElementById("input1")console.log(inputDiv.value)}render(){return (<div><input id="input1" type="text"></input></div>)}}}

下面介绍React中的ref,ref有很多形式,具体可以看下面的介绍

字符串形式的ref(弃用)

React已弃用,一些问题指的是效率问题
在这里插入图片描述

字符串形式的ref指的是标签里的ref="字符串"
接受了一个字符串,所以是字符串形式的ref

注意,写在标签里的是ref,在标签外收集的时候是用this.refs来进行收集,最后通过解构的方式拿到key

<!DOCTYPE html>
<html lang="en"><head><title>Hello React!</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"></head><body><div id="test"></div></body><script type="text/javascript" src="../js/react.development.js"></script> <!--React核心的库--><script type="text/javascript" src="../js/react-dom.development.js"></script><!--React操作Dom相关库--><script type="text/javascript" src="../js/babel.min.js"></script><!--JSX转换成JS用的依赖,因为浏览器不认识JSX,只认识JS--><script type="text/babel">class MyComponet extends React.Component{showData=()=>{//这种传统形式获取太麻烦,因为React是操作DOM的,所以我们借助React的ref来获取真实DOMconst inputDiv=document.getElementById("input1")alert(inputDiv.value)}showData2=()=>{// 通过React对象来操作,通过refs属性获取完之后解构// 这里解构是依靠input2的ref名字来进行解构的const {input2}=this.refs;alert(input2.value)}render(){return (<div><input id="input1" type="text" placeholder="点击按钮弹出左侧数据"></input><button onClick={this.showData2}></button><input ref="input2" onBlur={this.showData2} type="text" placeholder="获得焦点提示数据"></input></div>)}}ReactDOM.render(<MyComponet/>,document.getElementById("test"))</script></html>

回调函数形式的ref

主要是标签上的ref参数,通过回调函数的形式,将当前节点通过箭头函数传传递到当前对象上

其中,current代表传入的DOM,即当前组件this.test=current代表了在对象上创建一个test属性,并且将当前传入的current DOM给挂载到对象上

这里的this指向是谁? 因为这个标签是在render里面的,所以ref里的回调函数,会向外扩散寻找对象,即找到类组件的对象

<input ref={(current)=>{this.test=current}}><input/>
提示,ES6语法:const {test}=this
这两个写法并不等价const {test}=this.test
在JavaScript ES6中,你可以使用解构赋值(destructuring assignment)来从对象中提取属性。
当你写 const {test}=this 时,你是在从 this 对象中提取 test 属性,并将其赋值给 test 变量。然而,当你尝试 const {test}=this.test 时,你实际上是在尝试从 this.test 这个值(而不是对象)中提取属性。
如果 this.test 是一个对象,那么这个表达式就会尝试从该对象中提取 test 属性。
如果 this.test 不是一个对象,那么这个表达式就会失败,因为它无法从非对象值中提取属性。(属性自己是不能再拿出一个属性的,只有对象才能拿出属性)

代码示例:

<script type="text/babel">class MyComponet extends React.Component{showData=()=>{// 直接解构对象属性,获取DOMconst {test}=this// 获取属性alert(test.value)}render(){return (<div><input ref={(current)=>this.test=current} type="text" placeholder="点击按钮弹出左侧数据"></input><button onClick={this.showData}>点击触发</button></div>)}}ReactDOM.render(<MyComponet/>,document.getElementById("test"))
</script>

回调ref的执行次数问题

回调ref的次数在组件被更新的时候会触发两次,在组件第一次创建的时候只触发一次

为什么更新的时候是触发两次

  • 第一次是为了在更新之前,把上一次的处理后的属性内容都清空掉,传一个null进去。(清空的动作)
  • 第二次就是正常的触发,该正常传DOM就传DOM。(更新的动作)

多的代码就不放了,这个不必纠结,直接正常用回调函数即可,不必纠结两次回调
在这里插入图片描述

createRef 官方推荐

这个是React官方大力推荐的ref的创建方式,主要指的是React.createRef()函数

React.createRef(),调用后可以返回一个容器,该容器可以存储被ref标识的节点,该容器是“调用ref的标签专属的”,如果后续还有组件用了同名的ref属性,就会覆盖之前的ref

// 直接就可以挂载到对象属性上
对象属性=React.createRef()

在这里插入图片描述

除此以外,React官方是不推荐去多用ref,尽量多用state来管理属性,ref主要是与DOM绑定在一起

在这里插入图片描述

JSX的注释问题

JSX的注释需要用花括号括起来

括起来之后,就可以在内部写JS的注释了,因为被识别为JS语句了

比如:
在这里插入图片描述

相关文章:

02-React组件与模块

组件与模块 前期准备 安装React官方浏览器调试工具&#xff0c;浏览器扩展搜索即可 比如红色的React就是本地开发模式 开启一个用React写的网站&#xff0c;比如美团 此时开发状态就变成了蓝色 组件也能解析出来 何为组件&模块 模块&#xff0c;简单来说就是JS代…...

项目实战:新增@RequestMapping和@GetMapping和@PostMapping三个注解

1、RequestMapping package com.csdn.mymvc.annotation; import java.lang.annotation.*; Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Inherited public interface RequestMapping {String value(); }2、PostMapping package com.csdn.mymvc.annotation; im…...

基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小

文章目录 基于AOSP源码Android-10.0.0_r41分支编译&#xff0c;framework开发&#xff0c;修改系统默认字体大小 基于AOSP源码Android-10.0.0_r41分支编译&#xff0c;framework开发&#xff0c;修改系统默认字体大小 主要修改一个地方就行 代码源码路径 frameworks/base/co…...

如何再kali中下载iwebsec靶场

这个靶场有三种搭建方法&#xff1a; 第一种是在线靶场&#xff1a;http://www.iwebsec.com:81/ 第二种是虚拟机版本的&#xff0c;直接下载到本地搭建 官网地址下载&#xff1a;http://www.iwebsec.com/ 而第三种就是利用docker搭建这个靶场&#xff0c;我这里是用kali进行…...

Spring Boot 使用断言抛出自定义异常,优化异常处理机制

文章目录 什么是断言&#xff1f;什么是异常&#xff1f;基于断言实现的异常处理机制创建自定义异常类创建全局异常处理器创建自定义断言类创建响应码类创建工具类测试效果 什么是断言&#xff1f; 实际上&#xff0c;断言&#xff08;Assertion&#xff09;是在Java 1.4 版本…...

vue基于ElementUI/Plus自定义的一些组件

vue3-my-ElementPlus 源码请到GitHub下载使用MyTable、MySelect、MyPagination 置顶|Top | 使用案例&#xff1a; 1.0 定义表格数据&#xff08;测试使用&#xff09; data() {return {tableData: [],value:[],valueList: [],}; },// 构造表格测试数据// 1 第一行&#xf…...

leetcode刷题日记:69.sqrt(x)

给出一个非负的整数x&#xff0c;返回x的平方根向下取整的结果&#xff0c;这个被返回的数也应该是一个非负的值。 对我们的要求是不能使用任何内置的指数函数与操作&#xff0c;官方还给了我们例子&#xff1a; 在C种不能使用pow(x, 0.5) 在python不能使用 x**0.5 既然官方已经…...

[尚硅谷React笔记]——第9章 ReactRouter6

目录&#xff1a; 课程说明一级路由重定向NavLink高亮useRoutes路由表嵌套路由路由的params参数路由的search参数路由的state参数编程式路由导航useRouterContextuseNavigationTypeuseOutletuseResolvedPath()总结项目地址 1.课程说明 概述 React Router以三个不同的包发布…...

强大的pdf编辑软件:Acrobat Pro DC 2023中文

Acrobat Pro DC 2023是一款强大的PDF编辑和管理软件&#xff0c;它提供了广泛的功能&#xff0c;使用户能够轻松创建、编辑、转换和共享PDF文档。通过直观的界面和先进的工具&#xff0c;用户可以快速进行文本编辑、图像调整、页面管理等操作&#xff0c;同时支持OCR技术&#…...

玩一下Spring Boot

文章目录 1 开发环境1.1 JDK1.2 IntelliJ IDEA2 Spring Boot2.1 创建项目2.2 创建模板页面2.3 创建控制器2.4 启动项目2.5 访问页面1 开发环境 1.1 JDK 安装JDK21 配置环境变量 在命令行查看JDK版本 玩一玩jshell...

一个高性能类型安全的.NET枚举实用开源库

从零构建.Net前后端分离项目 枚举应该是我们编程中&#xff0c;必不可少的了&#xff0c;今天推荐一个.NET枚举实用开源库&#xff0c;它提供许多方便的扩展方法&#xff0c;方便开发者使用开发。 01 项目简介 Enums.NET是一个.NET枚举实用程序库&#xff0c;专注于为枚举提…...

c#字符串格式化

字符串格式化是一种将变量的值插入到字符串中的方法。它允许我们创建动态的字符串&#xff0c;其中包含变量的值。 string.Format 通过在字符串中使用占位符{0}&#xff0c;{1}等&#xff0c;我们可以指定要插入的变量的位置。然后&#xff0c;通过在string.Format方法的参数…...

AMD老电脑超频及性能提升方案及实施

收拾电子元件的时候找到了若干古董的CPU 其中有一个X3 440 是原来同学主板烧了之后给我的&#xff0c;我从网上配了AM2 昂达主板&#xff0c;然后又买了AMD兼容内存&#xff0c;组成了win7 64位电脑&#xff0c;用起来非常不错&#xff0c;我把硬件配置和升级过程说明下&#x…...

Github 自动化部署到GitHub Pages

1.准备工作 新建仓库 新建项目 配置 vite.config.ts base: ./,部署应用包时的基本URL&#xff0c;例&#xff1a;vue-cli 5.x 配置 publicPath 推送到远程仓库 2.配置 GitHub Token 点击 Settings -> Actions -> General 找到 Workflow permissions&#xff0c;选中第…...

Golang 串口通信

简介 串口通信是一种常见的硬件通信方式&#xff0c;用于在计算机和外部设备之间传输数据。Golang&#xff08;Go语言&#xff09;作为一种高效、可靠的编程语言&#xff0c;提供了丰富的库和工具用于串口通信。本文将介绍如何使用Golang进行串口通信&#xff0c;包括串口配置…...

项目管理之如何识别并应对项目风险

项目风险管理是项目管理中不可忽视的环节&#xff0c;如何识别并应对项目的风险对于项目的成功实施至关重要。本文将介绍风险管理的流程、风险分解结构、定性及定量风险评估方法&#xff0c;以及消极和积极的风险应对策略&#xff0c;旨在帮助读者更好地理解和应对项目风险。 …...

vue封装独立组件:实现手写签名功能

目录 第一章 效果展示 第二章 准备工作 2.1 使用的工具vue-sign 2.1.1 安装 2.1.2 了解 2.1.3 参数说明 第三章 源代码 第一章 效果展示 第二章 准备工作 2.1 使用的工具vue-esign 2.1.1 安装 npm install vue-esign --save 2.1.2 了解 兼容pc端和移动端有对应的参…...

图及谱聚类商圈聚类中的应用

背景 在O2O业务场景中&#xff0c;有商圈的概念&#xff0c;商圈是业务运营的单元&#xff0c;有对应的商户BD负责人以及配送运力负责任。这些商圈通常是一定地理围栏构成的区域&#xff0c;区域内包括商户和用户&#xff0c;商圈和商圈之间就通常以道路、河流等围栏进行分隔。…...

npx 和 npm 区别

文章目录 背景作用执行流程 背景 解决 npm 之前的执行包中的命令行需要先下载的问题&#xff0c;如果有多个不同版本的包就需要下载多次比如已经装了全局的 webpack 1.x 版本并且还要继续使用&#xff0c;还需要装个 webpack 4.x 使用的其相应功能,这个时候可以不装在全局&…...

HTML_案例1_注册页面

用纯html页面&#xff0c;不用css画一个注册页面。 最终效果如下&#xff1a; html页面代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册页面</title> </head>…...

Adobe After Effects 2024(Ae2024)在新版本中的升级有哪些?

After Effects 2024是Adobe公司推出的一款视频处理软件&#xff0c;它适用于从事设计和视频特技的机构&#xff0c;包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。通过After Effects&#xff0c;用户可以高效且精确地创建无数种引人注目的动态图形和震撼人心…...

超越 GLIP! | RegionSpot: 识别一切区域,多模态融合的开放世界物体识别新方法

本文的主题是多模态融合和图文理解&#xff0c;文中提出了一种名为RegionSpot的新颖区域识别架构&#xff0c;旨在解决计算机视觉中的一个关键问题&#xff1a;理解无约束图像中的各个区域或patch的语义。这在开放世界目标检测等领域是一个具有挑战性的任务。 关于这一块&…...

webgoat-(A1)injection

SQL Injection (intro) SQL 命令主要分为三类&#xff1a; 数据操作语言 &#xff08;DML&#xff09;DML 语句可用于请求记录 &#xff08;SELECT&#xff09;、添加记录 &#xff08;INSERT&#xff09;、删除记录 &#xff08;DELETE&#xff09; 和修改现有记录 &#xff…...

51单片机-中断

文章目录 前言 前言 #include <reg52.h> #include <intrins.h>sbit key_s2P3^0; sbit flagP3^7;void delay(unsigned int z){unsigned int x,y;for(xz;x>0;x--)for(y114;y>0;y--); }void int_init(){EA1;EX11;IT11;}void main(){int_init();while(1){if (key…...

Canvas 梦幻树生长动画

canvas可以制作出非常炫酷的动画&#xff0c;以下是一个梦幻树的示例。 效果图 源代码 <!DOCTYPE> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>梦幻数生长动画</title&…...

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)

一、效果 UI跟随鼠标移动, 动态修改屏幕分辨率、锚点、pivot等参数也不会受到影响。同时脚本中包含3d物体跟随ui位置、鼠标位置移动 二、屏幕坐标、Canvas自适应、锚点、中心点 在说原理之前我们需要先了解屏幕坐标、Canvas自适应、锚点、中心的特性和之间的关系。 1.屏幕坐标…...

竞赛 深度学习猫狗分类 - python opencv cnn

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习猫狗分类 ** 该项目较为新颖&a…...

S4.2.4.7 Start of Data Stream Ordered Set (SDS)

一 本章节主讲知识点 1.1 xxx 1.2 sss 1.3 ddd 二 本章节原文翻译 2.1 SDS 数据流开始有序集 SDS 代表传输的数据类型从有序集转为数据流。它会在 Configuration.Idle&#xff0c;Recovery.Idle 和 Tx 的 L0s.FTS 状态发送。Loopback 模式下&#xff0c;主机允许发送 SDS。…...

CentOS操作系统的特点

CentOS操作系统的特点如下&#xff1a; 免费开源&#xff1a;CentOS是一个免费开源的操作系统&#xff0c;完全免费&#xff0c;无需花费任何成本。 稳定性高&#xff1a;CentOS以其出色的稳定性和安全性而闻名。它是一个基于Red Hat Enterprise Linux&#xff08;RHEL&#x…...

Go基础(待更新)

Go基础&#xff08;待更新&#xff09; 参考Go 语言教程 文章目录 Go基础&#xff08;待更新&#xff09;一、基本语法1、格式化输出2、声明并赋值1&#xff09;单变量赋值2&#xff09;多变量赋值 二、math工具包的使用三、函数1、参数传递1&#xff09;普通传递2&#xff09…...