react中概念性总结(三)

目录

React中事件绑定函数的方法有哪些? 函数如何传递参数?

什么是重绘与回流,触发条件,如何减少回流和重绘

React 生命周期中 getDerivedStateFromProps怎么使用,怎么理解?

React中路由单页面应用的优缺点都有哪些?

React 路由组件和组件的区别?

谈谈你对BFC的理解,列举几个实例?

React中路由模式BrowserRoute和HashRouter的区别,最少说出三点不同?

withRouter的作用是什么?

React中如何使用防抖节流

React中getSnapshotBeforeUpdate如何使用,怎么理解?

React实现触底加载实现,需要哪些相关属性?

React中state、props、ref三大核心属性的特点和使用方式?

state:

props(属性):

ref(引用):


React中事件绑定函数的方法有哪些? 函数如何传递参数?

在 React 中给元素添加点击事件,通常可以通过在 JSX 中使用 onClick 属性来实现。你可以在 onClick 属性中指定一个事件处理函数,用于处理点击事件。

class MyComponent extends React.Component {handleClick() {// 处理点击事件的逻辑}
​render() {return (<button onClick={this.handleClick}>点击我</button>);}
}

上述代码中,我们在 MyComponent 组件中定义了一个 handleClick 方法,用于处理点击事件的逻辑。在 JSX 中,我们将这个方法赋值给按钮的 onClick 属性,这样当按钮被点击时,handleClick 方法就会被调用。

关于事件方法中 this 指向 undefined 的问题,通常可以通过以下几种方式解决:

        使用 bind 绑定 this

class MyComponent extends React.Component {constructor() {super();this.handleClick = this.handleClick.bind(this);}
​handleClick() {// 处理点击事件的逻辑}
​render() {return (<button onClick={this.handleClick}>点击我</button>);}
}

在构造函数中使用 bind 方法将 handleClick 方法的 this 绑定到当前组件实例上,确保在点击事件中 this 的指向是正确的。

        使用箭头函数:

class MyComponent extends React.Component {handleClick = () => {// 处理点击事件的逻辑}
​render() {return (<button onClick={this.handleClick}>点击我</button>);}
}

使用 ES6 的箭头函数,它的特性是继承了外层作用域的 this。这样,在 handleClick 中的 this 就会自动指向组件实例,而不是 undefined

无论是使用 bind 还是箭头函数,都能解决事件方法中 this 指向 undefined 的问题,你可以根据自己的喜好和项目需求选择其中一种方式来使用。

什么是重绘与回流,触发条件,如何减少回流和重绘

重绘(Repaint)和回流(Reflow)是与网页渲染相关的概念。

重绘指的是当元素的样式发生改变,但不影响其布局的情况下,浏览器需要重新绘制(重新渲染)该元素。回流指的是当元素的布局发生改变,需要重新计算元素的几何属性(位置、大小等)并重新构建布局树。

触发重绘的条件包括:
- 修改元素的背景颜色、文字颜色等样式属性。
- 修改元素的可见性(visibility)或透明度(opacity)。
- 修改元素的盒模型属性(大小、边距、边框等)。

触发回流的条件包括:
- 添加、删除、修改 DOM 元素。
- 改变元素的尺寸(宽度、高度)。
- 修改元素的位置(top、left 等)。
- 修改元素的样式(除了仅影响视觉效果的样式,如颜色)。
- 修改元素的文本内容或字体大小。

由于回流涉及到重新布局整个页面或部分页面,所以它的开销比重绘要大。大量的回流和重绘操作会导致页面性能下降,影响用户体验。

要减少回流和重绘的次数,可以考虑以下几个优化方法:
- 使用 CSS3 的 transform 和 opacity 属性替代使用 top、left、position、visibility、display 等属性,因为前者不会触发回流。
- 对于需要多次修改样式的情况,可以使用 DocumentFragment 在内存中进行操作,最后一次性将其添加到 DOM 中。
- 将需要修改的元素脱离文档流,进行修改后再放回文档流,可以减少回流次数。
- 尽量避免频繁访问布局信息(比如读取 offsetTop、offsetLeft、offsetWidth、offsetHeight 等属性),可以将这些信息缓存起来,避免多次回流。
- 禁用页面滚动时的默认滚动条,并使用自定义滚动条插件,以减少滚动时的回流和重绘。

综上所述,通过合理的样式和布局设计,以及避免频繁的 DOM 操作,可以有效减少回流和重绘,提升页面的性能和用户体验。

React 生命周期中 getDerivedStateFromProps怎么使用,怎么理解?

在 React 生命周期中,getDerivedStateFromProps是一个静态方法,用于在组件接收到新的 props 时更新组件的状态(state)。

getDerivedStateFromProps方法会在组件挂载之后和每次接收到新的 props 时被调用。它接收两个参数:propsstate ,并返回一个对象,用于更新组件的状态。在getDerivedStateFromProps方法中,我们可以根据接收到的新 props 和当前状态来判断是否需要更新组件的状态。如果需要更新,可以通过返回一个包含更新状态的对象来实现。如果不需要更新状态,可以返回null

理解getDerivedStateFromProps的注意事项:

  1. getDerivedStateFromProps是一个静态方法,因此不能访问组件的实例(this)或使用其他实例方法。

  2. 它被调用的时机是在组件挂载之后、接收到新 props 之后,以及被调用setState之前。

  3. getDerivedStateFromProps方法应该具有一个纯净的实现,即只依赖于输入的 props 和 state,而不应该有任何副作用。它仅用于根据 props 来更新 state。

  4. getDerivedStateFromProps的返回值将被用于更新组件的状态。返回一个非null的值将会更新组件的状态,返回null将不会更新组件的状态。

  5. 过度使用getDerivedStateFromProps可能会导致代码复杂性增加,因此应该谨慎使用,并优先考虑使用其他适合的解决方案,如使用受控组件或componentDidUpdate生命周期方法。

总结:getDerivedStateFromProps方法在React生命周期中的作用是根据props更新state。根据nextProp和prevState的值计算并返回一个新的state对象

React中路由单页面应用的优缺点都有哪些?

优点:更快的加载速度,更好的用户体验,更高的可维护性,更好的代码复用,更好的SEO优化 缺点:初次加载速度较长,不利于SEO,对浏览器的兼容性要求较高

React 中的路由单页面应用指的是一种使用 React Router 等路由插件实现的前端单页面应用程序,它只有一个 HTML 页面,但通过路由切换可以展示不同的内容。其优缺点如下:

优点:

  1. 用户体验好:路由单页面应用不需要经常刷新页面,让用户的操作更加顺畅,快速响应用户的操作,并降低了访问网络带来的延迟所带来的等待时间,提升了用户体验。

  2. 支持按需加载:通过打包工具控制代码分割和异步加载,从而只在需要的时候加载组件和页面对应的 JavaScript 脚本,减少了首屏加载的时间,提高了应用程序的加载速度和性能。

  3. 优化搜索引擎的SEO效果:由于只有一个 HTML 页面和一个页面内的路由切换,页面的内容呈现上可以更加优化,利于搜索引擎的爬取和收录,更有机会被推荐和访问。

  4. 减轻服务器压力:与多页面应用相比,路由单页面应用的网络请求次数大大降低,减轻了服务器的负担。

缺点:

  1. 对浏览器版本有要求:由于路由单页面应用采用了现代化的技术和特性,可能需要一定程度上的浏览器版本支持,不支持 ES6 语法和新的 API 的浏览器将无法兼容或者只能基本呈现页面。

  2. 对搜索引擎友好程度略低:虽然对于搜索引擎来说,路由单页面应用可以被爬取和收录,但这个过程并不是很友好,使用者需要对 SEO 优化技巧有所了解,更多的依靠技术手段和工具来解决。

  3. 加载速度慢:虽然路由单页面应用的首屏时间可以做到比较快,但是对于某些 contained navigations,添加新页面需要加载大量的 JS。这样增加了每个页面的加载时间,可能导致用户的体验感降低。

  4. 不利于开发调试:在开发调试过程中,路由单页面应用比较复杂,难以调试每一个子页面,容易造成调试困难。

综合来说,路由单页面应用有很多优点,在现代前端开发中被广泛应用,但需要根据具体情况综合考虑,在权衡各种因素之后选择或者不选择使用。

React 路由组件和组件的区别?

在 React 中,路由组件和普通组件的主要区别在于其功能和用途。

  1. 功能:

    • 路由组件(Route components):用于管理和渲染应用程序的不同页面或视图。它们根据 URL 的路径匹配来确定要呈现的内容,并负责将相应的组件渲染到该位置。

    • 普通组件(Regular components):用于构建应用程序的各个部分,如布局、UI 元素、表单、业务逻辑等。它们通过接收 props 和维护自己的状态来渲染内容。

  2. 用途:

    • 路由组件:通常用于创建单页面应用(SPA)或多页面应用(MPA)中的路由系统,并管理页面之间的切换和导航。它们可以定义不同 URL 路径和对应的组件,并实现路由导航、参数传递、嵌套路由等功能。

    • 普通组件:用于构建应用程序的各种功能组件,如头部导航栏、侧边栏、内容区域、表单、列表等。它们负责渲染特定的 UI 元素,并处理与该组件相关的逻辑和交互。

通常情况下,应用程序会同时使用路由组件和普通组件来构建完整的应用程序。路由组件用于管理页面之间的切换和导航,而普通组件用于构建页面的各个功能和 UI 元素。

值得注意的是,路由组件一般是通过 React Router 这样的第三方库来实现,而普通组件则是在应用程序中自定义或使用第三方库提供的组件。路由组件和普通组件之间是可以相互嵌套和组合使用的,在应用程序中可以共同协作以实现所需的功能和用户界面。

谈谈你对BFC的理解,列举几个实例?

BFC是一种用于控制元素布局的机制,通过创建独立的布局环境,可以解决一些常见的布局问题, 如清除浮动、防止边距重叠等。FC可以提高页面的布局效果和可靠性

  1. BFC的原理:

    • BFC是块级元素形成的渲染上下文,其中的元素按照一定的规则进行布局和渲染。

    • BFC具有独立的布局流,内部元素在垂直方向上一个接一个地放置,从而避免了外边距的重叠。

    • BFC可以包含浮动元素,使得父元素可以正确地计算其高度。

    • BFC的边界会形成一个隔离区域,内部元素不会影响到外部元素。

触发条件:

1)根元素:根元素即html元素,它会自动形成一个BFC。

2) 浮动元素:元素的float属性值不为none。

3) 绝对定位:元素的position属性值为absolute或fixed。

4)行内块元素:元素的display属性设置为inline-block,会使元素形成BFC

5)overflow属性不为visible的块元素

BFC,即块级格式化上下文(Block Formatting Context),是 CSS 中的一个概念。它是指一个独立的渲染区域,在这个区域中,按照一定的规则,块级元素布局、定位和浮动等属性会生效。BFC 的主要作用是对页面上的元素进行隔离和约束,防止它们的布局互相影响。

以下是几个常见的实例,展示了 BFC 的一些特性和应用:

  1. 清除浮动(clearfix): 当一个容器内部包含了浮动元素时,该容器的高度会坍缩,导致容器外部的元素无法正确定位。为了解决这个问题,可以使用 BFC 的特性来清除浮动。通过在容器上触发 BFC(如设置 overflow: autodisplay: inline-block),可以使得容器能够包含浮动元素,并正确计算高度。

  2. 防止垂直边距合并(margin collapsing): 垂直边距合并指的是当两个相邻的块级元素都具有垂直外边距时,取其中较大的边距作为最终的边距,而不是两者相加。但是,如果两个块级元素属于不同的 BFC,它们的边距就不会合并。因此,可以通过在父元素上触发 BFC,避免垂直边距合并的问题。

  3. 制作多栏布局(column layout): BFC 的布局规则使得元素在垂直方向按照一定的规则进行布局。通过触发容器的 BFC,可以实现多栏布局。比如,可以设置容器的 column-countcolumn-width 属性,让内容自动分布到多个列中。

  4. 避免浮动元素覆盖(float clearing): 当一个容器内部包含浮动元素时,容器的高度会丢失,导致容器后面的元素会覆盖容器。通过触发容器的 BFC,可以使得容器自动包裹浮动元素,并恢复原有高度,防止其他元素的覆盖。

总结来说,BFC 是一种对块级元素进行隔离和约束的布局上下文,具有一些特性和应用场景。通过触发 BFC,可以解决一些常见的布局问题,如清除浮动、防止边距合并、实现多栏布局等。

React中路由模式BrowserRoute和HashRouter的区别,最少说出三点不同?

BrowserRoute 和 HashRouter 是 React Router 库中用于管理路由的两种不同的模式。它们的主要区别如下:

  1. URL 格式:

    • BrowserRoute:使用 HTML5 的 History API,可以使用常见的 URL 格式(例如 example.com/path),不会在 URL 中出现 # 符号。

    • HashRouter:使用 URL 中的哈希(#)作为导航路径的一部分,路径格式为 example.com/#/path。哈希部分的变化不会触发完整页面刷新,只会触发页面的片段更新。

  2. 兼容性:

    • BrowserRoute:由于使用了 HTML5 的 History API,需要浏览器的支持。一些旧版本的浏览器可能不支持这些 API。

    • HashRouter:不受浏览器支持的限制,可以在任何浏览器中正常运行。

  3. 服务器配置:

    • BrowserRoute:当使用 BrowserRoute 时,需要服务器配置来处理路径,确保在刷新或直接访问指定 URL 时服务器正确地返回相应的页面。

    • HashRouter:由于使用了哈希部分作为路由路径的一部分,不需要服务器配置的支持。在任何情况下,都会加载相同的起始页面并使用前端的路由机制加载不同的组件。

需要根据项目的需求和浏览器兼容性来选择合适的路由模式。如果需要支持较低版本的浏览器,或者没有配置服务器来处理路径,可以选择使用 HashRouter。而如果对浏览器兼容性没有特别的要求,并且能够正确配置服务器来处理路径,则可以选择使用 BrowserRoute。

withRouter的作用是什么?

withRouter是一个高阶组件,他的作用是将不是通过路由渲染的组件包裹在一个Router组件中,使得这些组将能够访问到路由相关的属性和方法

withRouter 是 React Router 库提供的一个高阶组件(Higher Order Component),用于将路由相关的属性传递给包裹的组件。它的作用主要有以下几个方面:

  1. 路由属性的访问:通过使用 withRouter,包裹的组件可以访问到路由的属性,如 matchlocationhistory。这些属性提供了关于当前路由的信息,使组件能够根据路由状态做出相应的行为。

  2. 路由的参数传递:在一些情况下,我们希望在组件之间传递路由参数。通过使用 withRouter,包裹的组件可以直接从 URL 中获取路由参数,并将参数传递给子组件。这样,子组件就可以使用这些参数进行相应的渲染或逻辑处理。

  3. 动态路由更新:当路由参数变化时,使用 withRouter 包裹的组件会自动重新渲染,以便显示与新路由匹配的内容。这样可以确保组件根据实际的路由变化来更新 UI,实现动态路由的效果。

总结来说,withRouter 的作用是将路由相关的属性传递给组件,使组件能够访问到当前路由的信息,并在需要时对路由进行响应式的处理。这样可以方便地在 React 应用中实现路由的功能和交互。

React中如何使用防抖节流

在 React 中,可以使用防抖(debounce)和节流(throttle)来限制某些事件的触发频率,以提高性能并减少不必要的更新。

        防抖:在特定时间间隔内,如果事件被连续触发多次,只执行最后一次触发的事件。

import React, { useState, useEffect } from 'react';
import { debounce } from 'lodash';function MyComponent() {const [searchValue, setSearchValue] = useState('');// 使用防抖处理搜索输入框的change事件const handleSearchChange = debounce((value) => {setSearchValue(value);// 在这里进行搜索操作}, 300);return (<inputtype="text"value={searchValue}onChange={(e) => handleSearchChange(e.target.value)}/>);
}

在上面的例子中,我们使用 lodash 库的 debounce 函数来创建一个处理搜索输入框 onChange 事件的防抖函数 handleSearchChange。在函数内部,我们更新搜索值的状态并执行搜索操作。防抖函数的时间间隔设置为 300 毫秒。

        节流:在特定时间间隔内,事件只会被执行一次。

import React, { useState, useEffect } from 'react';
import { throttle } from 'lodash';function MyComponent() {const [scrollPosition, setScrollPosition] = useState(0);// 使用节流处理窗口滚动事件const handleScroll = throttle(() => {const position = window.scrollY;setScrollPosition(position);// 在这里处理滚动操作}, 200);useEffect(() => {window.addEventListener('scroll', handleScroll);return () => {window.removeEventListener('scroll', handleScroll);};}, [handleScroll]);return <div>当前滚动位置:{scrollPosition}</div>;
}

在上面的例子中,我们使用 lodash 库的 throttle 函数来创建一个处理窗口滚动事件的节流函数 handleScroll。在函数内部,我们获取滚动位置并更新状态。节流函数的时间间隔设置为 200 毫秒。

请注意,在使用这些函数时,需要在 React 组件被卸载之前取消监听事件,以避免潜在的内存泄漏问题。

综上所述,在 React 中,可以使用 debounce 和 throttle 函数来实现防抖和节流的效果,从而限制事件的触发频率。这可以提高性能,并避免不必要的更新。

React中getSnapshotBeforeUpdate如何使用,怎么理解?

在 React 中,getSnapshotBeforeUpdate 是一个生命周期方法,它在组件更新后、DOM 更新前被调用。它的作用是获取当前 DOM 的快照(snapshot),并将其作为返回值传递给 componentDidUpdate

getSnapshotBeforeUpdate 的使用方式如下:

class MyComponent extends React.Component {constructor(props) {super(props);this.state = {scrollPosition: 0};this.divRef = React.createRef();}
​componentDidMount() {// 在组件挂载后,获取初始的滚动位置this.setState({scrollPosition: this.divRef.current.scrollHeight});}
​componentDidUpdate(prevProps, prevState, snapshot) {// 在组件更新后,使用快照来进行一些操作if (snapshot !== null) {// 这里可以根据前后状态的变化来判断是否需要执行某些操作}}
​getSnapshotBeforeUpdate(prevProps, prevState) {// 在组件更新前获取 DOM 的快照if (prevState.scrollPosition !== this.state.scrollPosition) {return this.divRef.current.scrollHeight;}return null;}
​render() {return <div ref={this.divRef}>{/* 组件内容 */}</div>;}
}

上述示例中,我们通过在组件的 getSnapshotBeforeUpdate 方法中获取 this.divRef.current.scrollHeight,也就是组件更新前的滚动位置的快照。然后,在 componentDidUpdate 方法中,我们可以通过 snapshot 参数来使用这个快照。在这个例子中,我们可以根据前后状态的变化来判断是否需要执行一些操作,比如根据滚动位置的变化来调整视图或滚动位置等。

理解 getSnapshotBeforeUpdate 的关键是明确它的执行时机和用途。它在组件更新后、DOM 更新前被调用,可以用来获取组件更新前的 DOM 快照,在 componentDidUpdate 中根据快照进行相关的操作。但需要注意的是,getSnapshotBeforeUpdate 必须要有一个非空的返回值,可以是任何类型的值或 null。返回的值将作为第三个参数传递给 componentDidUpdate 方法,供后续使用。

React实现触底加载实现,需要哪些相关属性?

要实现触底加载(Infinite Scrolling)功能,可以使用 React 中的以下相关属性:

  1. scroll事件监听:通过在组件的元素上绑定scroll事件,监听滚动条的滚动状态。可以使用addEventListener方法或特定的React库(如react-infinite-scroll-component)来添加scroll事件监听器。

  2. scrollTop属性:用于获取或设置滚动容器的滚动距离。可以通过ref来获取滚动容器的引用,然后通过访问scroll属性(ref.current.scroll.scrollTop)来获取或设置滚动条的位置。

  3. scrollHeight属性:表示滚动容器内部内容的高度(包括被隐藏的部分)。可以通过访问scrollHeight属性(ref.current.scroll.scrollHeight)来获取滚动容器的总高度。

  4. clientHeight属性:表示滚动容器的可见区域的高度。可以通过访问clientHeight属性(ref.current.scroll.clientHeight)来获取可见区域的高度。

基于以上属性,实现触底加载的一般思路是,在scroll事件触发时,检查滚动条的滚动距离与滚动容器总高度和可见区域的高度的关系,当滚动距离接近底部时(例如滚动距离与总高度的差值小于等于一个阈值),触发加载更多的数据。

需要注意的是,触底加载还需要其他相关的逻辑,例如加载中状态的处理、请求新数据的方法等。以上只是实现触底加载的基本属性,具体的实现还需要根据具体需求进行调整和扩展。

React中state、props、ref三大核心属性的特点和使用方式?
state:

特点:state是组件内部的可变数据,用于存储和管理组件的状态,当state发生变化时,react会自动重新渲染组件 ​ 使用:在类组件中,通过constructor中初始化state对象,然后通过this.state来访问和更新state的值

props(属性):

特点:是父组件传递给子组件的不可变数据,用于组件之间的通讯。props的值由父组件决定,子组件不能直接修改props的值 ​ 使用方式:在父组件通过给子组件添加属性来传递数据,子组件通过this.props来访问父组件来传递数据

ref(引用):

特点:ref用来获取组件或dom元素的引用,可以访问组件的方法或操作dom ​ 使用方式:在类组件中,可以通过创建ref对象并将其赋值给组件的ref属性来获取组件的引用。 ​ 总结:state用于存储和管理组件内部数据,通过this.state来访问和更新。props用于父子组件之间通讯,通过传递数据, ​ 子组件通过this.props来访问。ref用于获取dom或组件的引用,可以访问组件的方法或操作dom元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/625351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3+Vite项目搭建

为什么选择vite而不是vue-cli&#xff1a; vite下一代前端开发与构建工具 vite创建的项目默认vue3 优势&#xff1a; 开发环境中&#xff0c;无需打包&#xff0c;可快速的冷启动 轻量快速的热重载&#xff08;HMR&#xff09; 真正的按需编译&#xff0c;不在等待整个应用…

Android中两种选择联系人方式

1.在选择联系人方式网上也有很多案例 有的说是使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI也有的说是使用ContactsContract.Contacts.CONTENT_URI其实这两种方式都可以使用 只不过ContactsContract.Contacts.CONTENT_URI这种方式需要多查询一遍 一、使用Contacts…

23. 合并 K 个升序链表(递归分治)

这是我的第一个自己ak的分治题目&#xff01;&#xff01;&#xff01;好耶&#xff01;&#xff01;&#xff08;骄傲脸 思路参考&#xff1a;148. 排序链表&#xff08;归并排序&#xff09; /*** Definition for singly-linked list.* public class ListNode {* int v…

龙芯系统部署Elasticsearch

1.配置JDK环境 #查看是否安装jdk java -version#搜索java&#xff0c;结果&#xff1a;/usr/bin/java whereis java#&#xff08;1&#xff09;配置环境变量(临时有效) export JAVA_HOME/usr export PATH$PATH:$JAVA_HOME/bin#&#xff08;2&#xff09;配置环境变量(永久有效…

DA14531-高级应用篇-用户如何开启OTA服务

文章目录 1. OTA相关文件2.OTA宏定义列表3.OTA主要函数接口4.OTA具体实施步骤5.总结1. OTA相关文件 1)app_suotar_task.c和app_suotar_task.h 2)app_suotar.c和app_suotar.h 2.OTA宏定义列表 宏定义注解CFG_PRF_SUOTAR用户开启SOTA功能BLE_SUOTA_RECEIVERSOTA功能服务CFG_S…

把树状数组在页面显示成‘/‘/‘形式,并搜索想要的值

大概思路 在Vue中&#xff0c;若要将树状数组以类似于文件路径的形式&#xff08;即“/”分隔&#xff09;显示在页面上&#xff0c;可以按照以下步骤操作&#xff1a; 首先&#xff0c;假设您有一个树状数组&#xff0c;其结构可能如下所示&#xff1a; const treeData [{…

浅谈专项测试之弱网络测试

一&#xff0e;弱网络测试背景 移动端产品的使用并非完全都是在流畅的wifi环境&#xff0c;大部分用户主要使用4G,3G,2G等网络&#xff0c;另外因为移动端产品使用的场景多变&#xff0c;如进公交&#xff0c;上地铁&#xff0c;坐电梯&#xff0c;使得弱网测试显得尤为重要。考…

QT-JSON相关API/QJsonDocument/QJsonObject

QJsonObject类的相关操作 格式化排版创建JSON对象&#xff0c;使用字符串创建JSON对象&#xff0c;使用标准JSON对象获取JSON对象中的值&#xff0c;非数组获取JSON对象中的值&#xff0c;数组 格式化排版 下面的代码将一个符合JSON格式的字符串&#xff0c;格式化成具有缩进格…

HCIA基础知识

IP地址、静态路由、动态路由、交换机 OSPF RIP DHCP VLAN ACL NAT OSI TCP/IP UDP TCP 三次握手&#xff0c;四次挥手&#xff0c;报头 什么是网络&#xff1f; 由网络连接设备通过传输介质将网络终端设备连接起来&#xff0c;进行资源共享、信息传递的平台。 OSI七…

【C】函数指针 int (*addPtr)(int, int);

目录 函数指针1&#xff09;定义2&#xff09;声明和赋值3&#xff09;通过函数指针调用函数4&#xff09;用途&#xff1a;函数指针作为函数参数5&#xff09;函数名和函数指针6&#xff09;复杂一点的例子 函数指针 1&#xff09;定义 在C语言中&#xff0c;函数指针是指向…

智慧校园云桌面解决方案应用场景

​​​​​​教师办公解决方案 教师办公桌面现状 大多数学校一位教师配置一台个人计算机,实际上每位教师平时会使用到的计算机资源不超过15-20%,因此多数时间个人计算机都是处在闲置状态。教师常用的办公用机一般都使用台式机,所有的数据都存放在本地(“信息孤点”),根…

如何购买腾讯云服务器?图文教程超详细

腾讯云服务器购买流程很简单&#xff0c;有两种购买方式&#xff0c;直接在官方活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动…

​MyBatisPlus的批量插入方法saveBatch时速度缓慢​

一、场景描述 项目组在使用MyBatisPlus的批量插入方法saveBatch时速度缓慢&#xff0c;插入1w条数据&#xff0c;需要近1分钟的时间。 二、解决方案 解决方案很简单&#xff0c;在数据库配置的uri后面加上下面这个属性即可&#xff1a; urlxxxxxxxxxxxxxxxxxxxxxx?rewriteB…

2024年学鸿蒙开发就业前景怎么样?

随着科技的不断进步&#xff0c;鸿蒙系统作为华为自主研发的操作系统&#xff0c;逐渐引起了人们的关注。 2024年&#xff0c;鸿蒙开发就业前景如何&#xff1f; 对于那些对鸿蒙开发感兴趣并希望在这一领域寻找职业发展的人来说&#xff0c;这是一个非常重要的问题。 首先&a…

【cuda】三、矩阵相乘与coalescing writes(合并写操作)

Matrix Multiplication and Optimization 线程块 功能 并行执行&#xff1a;线程块是一组同时执行的线程。它们共同执行分配给它们的任务资源共享&#xff1a;线程块内的线程可以共享数据和同步执行。通过共享内存&#xff08;Shared Memory&#xff09;和同步原语&#xff…

[渗透测试学习] Hospital - HackTheBox

文章目录 信息搜集getshell提权信息搜集 nmap扫描一下端口 发现8080端口和443端口有http服务 然后发现3389端口是启用了ms-wbt-server服务 在对443端口的扫描没有收获,并且只有邮箱登录界面无法注册 接着看向8080端口,我们随便注册用户登录后发现有文件上传功能 getshell …

Python科学计算进阶:数值积分与微分求解算法应用在Python

在Python中进行科学计算时&#xff0c;数值积分和微分是非常常见的操作。下面我将介绍几种常用的数值积分和微分求解算法&#xff0c;并给出Python代码示例。 一、数值积分 矩形法 矩形法是一种简单的数值积分方法&#xff0c;它使用矩形近似代替被积函数。这种方法虽然简单&a…

利用淘宝/天猫API实现商品数据的实时获取、处理与分析

随着电子商务的飞速发展&#xff0c;对电商平台的数据需求越来越高。对于商家而言&#xff0c;实时获取商品数据是关键。淘宝和天猫作为中国最大的电商平台&#xff0c;提供了丰富的API接口&#xff0c;其中包括按关键字搜索商品API。本文将详细介绍如何使用淘宝/天猫提供的API…

【SpringMVC】—— 如何配置使用SpringMVC(详细步骤)

目录 引言 使用 1、新建模块 2、导入坐标 3、创建SpringMVC控制器类 4、初始化SpringMVC环境 5、初始化Servlet容器&#xff0c;加载SpringMVC环境 6、配置运行 引言 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架&#xff0c;SpringMVC是表现层(web层)的框架,也…

.Net6使用SignalR实现前后端实时通信

代码部分 后端代码 &#xff08;Asp.net core web api&#xff0c;用的.net6&#xff09;Program.cs 代码运行逻辑&#xff1a; ​1. 通过 WebApplication.CreateBuilder(args) 创建一个 ASP.NET Core 应用程序建造器。 2. 使用 builder.Services.AddControllers() 添加 MVC 控…