react 更新input 默认值setfieldsvalue_值得收藏的React面试题

d30d79bb3f36ec3866eb727690e2a62e.png

react

1、什么是虚拟DOM?

难度: ⭐

虚拟 DOM (VDOM)是真实 DOM 在内存中的表示。UI 的表示形式保存在内存中,并与实际的 DOM 同步。这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤,整个过程被称为调和。

2、类组件和函数组件之间的区别是啥?

难度: ⭐⭐

  • 类组件可以使用其他特性,如状态 state 和生命周期钩子。
  • 当组件只是接收 props 渲染到页面时,就是无状态组件,就属于函数组件,也被称为哑组件或展示组件。

函数组件和类组件当然是有区别的,而且函数组件的性能比类组件的性能要高,因为类组件使用的时候要实例化,而函数组件直接执行函数取返回结果即可。为了提高性能,尽量使用函数组件。

区别函数组件类组件是否有 this没有有是否有生命周期没有有是否有状态 state没有有

3、React 中 refs 干嘛用的?

难度: ⭐⭐

Refs 提供了一种访问在render方法中创建的 DOM 节点或者 React 元素的方法。在典型的数据流中,props 是父子组件交互的唯一方式,想要修改子组件,需要使用新的pros重新渲染它。凡事有例外,某些情况下咱们需要在典型数据流外,强制修改子代,这个时候可以使用 Refs。

咱们可以在组件添加一个 ref 属性来使用,该属性的值是一个回调函数,接收作为其第一个参数的底层 DOM 元素或组件的挂载实例。

class UnControlledForm extends Component { handleSubmit = () => { console.log("Input Value: ", this.input.value) } render () { return ( 
this.input = input} /> Submit ) }}

请注意,input 元素有一个ref属性,它的值是一个函数。该函数接收输入的实际 DOM 元素,然后将其放在实例上,这样就可以在 handleSubmit 函数内部访问它。

经常被误解的只有在类组件中才能使用 refs,但是refs也可以通过利用 JS 中的闭包与函数组件一起使用。

function CustomForm ({handleSubmit}) { let inputElement return ( 
handleSubmit(inputElement.value)}> inputElement = input} /> Submit )}

4、在 React 中如何处理事件

难度: ⭐⭐

为了解决跨浏览器的兼容性问题,SyntheticEvent 实例将被传递给你的事件处理函数,SyntheticEvent是 React 跨浏览器的浏览器原生事件包装器,它还拥有和浏览器原生事件相同的接口,包括 stopPropagation() 和 preventDefault()。

比较有趣的是,React 实际上并不将事件附加到子节点本身。React 使用单个事件侦听器侦听顶层的所有事件。这对性能有好处,也意味着 React 在更新 DOM 时不需要跟踪事件监听器。

5、state 和 props 区别是啥?

难度: ⭐⭐

props和state是普通的 JS 对象。虽然它们都包含影响渲染输出的信息,但是它们在组件方面的功能是不同的。即

  • state 是组件自己管理数据,控制自己的状态,可变;
  • props 是外部传入的数据参数,不可变;
  • 没有state的叫做无状态组件,有state的叫做有状态组件;
  • 多用 props,少用 state,也就是多写无状态组件。

6、如何创建 refs

难度: ⭐⭐

Refs 是使用 React.createRef() 创建的,并通过 ref 属性附加到 React 元素。在构造组件时,通常将 Refs 分配给实例属性,以便可以在整个组件中引用它们。

class MyComponent extends React.Component { constructor(props) { super(props); this.myRef = React.createRef(); } render() { return 

或者这样用:

class UserForm extends Component { handleSubmit = () => { console.log("Input Value is: ", this.input.value) } render () { return ( 
this.input = input} /> // Access DOM input in handle submit Submit ) }}

7、什么是高阶组件?

难度: ⭐⭐

高阶组件(HOC)是接受一个组件并返回一个新组件的函数。基本上,这是一个模式,是从 React 的组合特性中衍生出来的,称其为纯组件,因为它们可以接受任何动态提供的子组件,但不会修改或复制输入组件中的任何行为。

const EnhancedComponent = higherOrderComponent(WrappedComponent);

HOC 可以用于以下许多用例

  • 代码重用、逻辑和引导抽象
  • 渲染劫持
  • state 抽象和操作
  • props 处理

8、在构造函数调用 super 并将 props 作为参数传入的作用是啥?

难度: ⭐⭐

在调用 super() 方法之前,子类构造函数无法使用this引用,ES6 子类也是如此。将 props 参数传递给 super() 调用的主要原因是在子构造函数中能够通过this.props来获取传入的 props。

传递 props

class MyComponent extends React.Component { constructor(props) { super(props); console.log(this.props); // { name: 'sudheer',age: 30 } }}

没传递 props

class MyComponent extends React.Component { constructor(props) { super(); console.log(this.props); // undefined // 但是 Props 参数仍然可用 console.log(props); // Prints { name: 'sudheer',age: 30 } } render() { // 构造函数外部不受影响 console.log(this.props) // { name: 'sudheer',age: 30 } }}

上面示例揭示了一点。props 的行为只有在构造函数中是不同的,在构造函数之外也是一样的。

9、什么是控制组件?

难度: ⭐⭐⭐

在 HTML 中,表单元素如 、和通常维护自己的状态,并根据用户输入进行更新。当用户提交表单时,来自上述元素的值将随表单一起发送。

而 React 的工作方式则不同。包含表单的组件将跟踪其状态中的输入值,并在每次回调函数(例如onChange)触发时重新渲染组件,因为状态被更新。以这种方式由 React 控制其值的输入表单元素称为受控组件。

10、如何 React.createElement ?

难度: ⭐⭐⭐

问题:

const element = ( 

Hello, world!

)

上述代码如何使用 React.createElement 来实现:

const element = React.createElement( 'h1', {className: 'greeting'}, 'Hello, world!');

11、讲讲什么是 JSX ?

难度: ⭐⭐⭐

当 Facebook 第一次发布 React 时,他们还引入了一种新的 JS 方言 JSX,将原始 HTML 模板嵌入到 JS 代码中。JSX 代码本身不能被浏览器读取,必须使用Babel和webpack等工具将其转换为传统的JS。很多开发人员就能无意识使用 JSX,因为它已经与 React 结合在一直了。

class MyComponent extends React.Component { render() { let props = this.props; return ( 

{props.name}

); }}

12、根据下面定义的代码,可以找出存在的两个问题吗 ?

难度: ⭐⭐⭐

请看下面的代码:

2ac7f55a3749ef820578a1ac94ab133b.png

答案:

1.在构造函数没有将 props 传递给 super,它应该包括以下行

constructor(props) { super(props); // ...}

2.事件监听器(通过addEventListener()分配时)的作用域不正确,因为 ES6 不提供自动绑定。因此,开发人员可以在构造函数中重新分配clickHandler来包含正确的绑定:

constructor(props) { super(props); this.clickHandler = this.clickHandler.bind(this); // ...}

13、为什么不直接更新 state 呢 ?

难度: ⭐⭐⭐

如果试图直接更新 state ,则不会重新渲染组件。

 // 错误 This.state.message = 'Hello world';

需要使用setState()方法来更新 state。它调度对组件state对象的更新。当state改变时,组件通过重新渲染来响应:

// 正确做法This.setState({message: ‘Hello World’});

14、React 组件生命周期有哪些不同阶段?

难度: ⭐⭐⭐

在组件生命周期中有四个不同的阶段:

  1. Initialization:在这个阶段,组件准备设置初始化状态和默认属性。
  2. Mounting:react 组件已经准备好挂载到浏览器 DOM 中。这个阶段包括componentWillMount和componentDidMount生命周期方法。
  3. Updating:在这个阶段,组件以两种方式更新,发送新的 props 和 state 状态。此阶段包括shouldComponentUpdate、componentWillUpdate和componentDidUpdate生命周期方法。
  4. Unmounting:在这个阶段,组件已经不再被需要了,它从浏览器 DOM 中卸载下来。这个阶段包含 componentWillUnmount 生命周期方法。

除以上四个常用生命周期外,还有一个错误处理的阶段:

Error Handling:在这个阶段,不论在渲染的过程中,还是在生命周期方法中或是在任何子组件的构造函数中发生错误,该组件都会被调用。这个阶段包含了 componentDidCatch 生命周期方法。

dbb07a315427434e74a2373ca091d0aa.png

15、React 的生命周期方法有哪些?

难度: ⭐⭐⭐

  • componentWillMount:在渲染之前执行,用于根组件中的 App 级配置。
  • componentDidMount:在第一次渲染之后执行,可以在这里做AJAX请求,DOM 的操作或状态更新以及设置事件监听器。
  • componentWillReceiveProps:在初始化render的时候不会执行,它会在组件接受到新的状态(Props)时被触发,一般用于父组件状态更新时子组件的重新渲染
  • shouldComponentUpdate:确定是否更新组件。默认情况下,它返回true。如果确定在 state 或 props 更新后组件不需要在重新渲染,则可以返回false,这是一个提高性能的方法。
  • componentWillUpdate:在shouldComponentUpdate返回 true 确定要更新组件之前件之前执行。
  • componentDidUpdate:它主要用于更新DOM以响应props或state更改。
  • componentWillUnmount:它用于取消任何的网络请求,或删除与组件关联的所有事件监听器。

16、这三个点(...)在 React 干嘛用的?

难度: ⭐⭐⭐

... 在React(使用JSX)代码中做什么?它叫什么?

这个叫扩展操作符号或者展开操作符,例如,如果this.props包含a:1和b:2,则

等价于下面内容:

扩展符号不仅适用于该用例,而且对于创建具有现有对象的大多数(或全部)属性的新对象非常方便,在更新state 咱们就经常这么做:

this.setState(prevState => {  return {foo: {...prevState.foo, a: "updated"}};});

17、使用 React Hooks 好处是啥?

难度: ⭐⭐⭐

首先,Hooks 通常支持提取和重用跨多个组件通用的有状态逻辑,而无需承担高阶组件或渲染 props 的负担。Hooks 可以轻松地操作函数组件的状态,而不需要将它们转换为类组件。

Hooks 在类中不起作用,通过使用它们,咱们可以完全避免使用生命周期方法,例如 componentDidMount、componentDidUpdate、componentWillUnmount。相反,使用像useEffect这样的内置钩子。

18、什么是 React Hooks?

难度: ⭐⭐⭐

Hooks是 React 16.8 中的新添加内容。它们允许在不编写类的情况下使用state和其他 React 特性。使用 Hooks,可以从组件中提取有状态逻辑,这样就可以独立地测试和重用它。Hooks 允许咱们在不改变组件层次结构的情况下重用有状态逻辑,这样在许多组件之间或与社区共享 Hooks 变得很容易。

19、React 中的 useState() 是什么?

难度: ⭐⭐⭐

下面说明useState(0)的用途:

...const [count, setCounter] = useState(0);const [moreStuff, setMoreStuff] = useState(...);...const setCount = () => { setCounter(count + 1); setMoreStuff(...); ...};

useState 是一个内置的 React Hook。useState(0) 返回一个元组,其中第一个参数count是计数器的当前状态,setCounter 提供更新计数器状态的方法。

咱们可以在任何地方使用setCounter方法更新计数状态-在这种情况下,咱们在setCount函数内部使用它可以做更多的事情,使用 Hooks,能够使咱们的代码保持更多功能,还可以避免过多使用基于类的组件。

20、React 中的StrictMode(严格模式)是什么??

难度: ⭐⭐⭐

React 的StrictMode是一种辅助组件,可以帮助咱们编写更好的 react 组件,可以使用包装一组组件,并且可以帮咱们以下检查:

  • 验证内部组件是否遵循某些推荐做法,如果没有,会在控制台给出警告。
  • 验证是否使用的已经废弃的方法,如果有,会在控制台给出警告。
  • 通过识别潜在的风险预防一些副作用。

21、为什么类方法需要绑定到类实例?

难度: ⭐⭐⭐

在 JS 中,this 值会根据当前上下文变化。在 React 类组件方法中,开发人员通常希望 this 引用组件的当前实例,因此有必要将这些方法绑定到实例。通常这是在构造函数中完成的:

class SubmitButton extends React.Component { constructor(props) { super(props); this.state = { isFormSubmitted: false }; this.handleSubmit = this.handleSubmit.bind(this); } handleSubmit() { this.setState({ isFormSubmitted: true }); } render() { return ( Submit ) }}

22、什么是 prop drilling,如何避免?

难度: ⭐⭐⭐

在构建 React 应用程序时,在多层嵌套组件来使用另一个嵌套组件提供的数据。最简单的方法是将一个 prop 从每个组件一层层的传递下去,从源组件传递到深层嵌套组件,这叫做prop drilling。

prop drilling的主要缺点是原本不需要数据的组件变得不必要地复杂,并且难以维护。

为了避免prop drilling,一种常用的方法是使用React Context。通过定义提供数据的Provider组件,并允许嵌套的组件通过Consumer组件或useContext Hook 使用上下文数据。

23、描述 Flux 与 MVC?

难度: ⭐⭐⭐

传统的 MVC 模式在分离数据(Model)、UI(View和逻辑(Controller)方面工作得很好,但是 MVC 架构经常遇到两个主要问题:

数据流不够清晰:跨视图发生的级联更新常常会导致混乱的事件网络,难于调试。

缺乏数据完整性:模型数据可以在任何地方发生突变,从而在整个UI中产生不可预测的结果。

使用 Flux 模式的复杂用户界面不再遭受级联更新,任何给定的React 组件都能够根据 store 提供的数据重建其状态。Flux 模式还通过限制对共享数据的直接访问来加强数据完整性。

24、受控组件和非受控组件区别是啥?

难度: ⭐⭐⭐

  • 受控组件是 React 控制中的组件,并且是表单数据真实的唯一来源。
  • 非受控组件是由 DOM 处理表单数据的地方,而不是在 React 组件中。

尽管非受控组件通常更易于实现,因为只需使用refs即可从 DOM 中获取值,但通常建议优先选择受控制的组件,而不是非受控制的组件。

这样做的主要原因是受控组件支持即时字段验证,允许有条件地禁用/启用按钮,强制输入格式。

25、这段代码有什么问题吗?

难度: ⭐⭐⭐⭐

这段代码有什么问题:

this.setState((prevState, props) => {  return { streak: prevState.streak + props.count }} )

答案:

没有什么问题。这种方式很少被使用,咱们可以将一个函数传递给setState,该函数接收上一个 state 的值和当前的props,并返回一个新的状态,如果咱们需要根据以前的状态重新设置状态,推荐使用这种方式。

26、什么是 React Context?

难度: ⭐⭐⭐⭐

Context 通过组件树提供了一个传递数据的方法,从而避免了在每一个层级手动的传递 props 属性。

27、什么是 React Fiber?

难度: ⭐⭐⭐⭐

Fiber 是 React 16 中新的协调引擎或重新实现核心算法。它的主要目标是支持虚拟DOM的增量渲染。React Fiber 的目标是提高其在动画、布局、手势、暂停、中止或重用等方面的适用性,并为不同类型的更新分配优先级,以及新的并发原语。

React Fiber 的目标是增强其在动画、布局和手势等领域的适用性。它的主要特性是增量渲染:能够将渲染工作分割成块,并将其分散到多个帧中。

28、如何在 ReactJS 的 Props上应用验证?

难度: ⭐⭐⭐⭐

当应用程序在开发模式下运行时,React 将自动检查咱们在组件上设置的所有 props,以确保它们具有正确的数据类型。对于不正确的类型,开发模式下会在控制台中生成警告消息,而在生产模式中由于性能影响而禁用它。强制的 props 用 isRequired定义的。

下面是一组预定义的 prop 类型:

  • React.PropTypes.string
  • React.PropTypes.number
  • React.PropTypes.func
  • React.PropTypes.node
  • React.PropTypes.boo

例如,咱们为用户组件定义了如下的propTypes

import PropTypes from 'prop-types';class User extends React.Component { render() { return ( 

Welcome, {this.props.name}

Age, {this.props.age} ); }}User.propTypes = { name: PropTypes.string.isRequired, age: PropTypes.number.isRequired};

29、在 React 中使用构造函数和 getInitialState 有什么区别?

难度: ⭐⭐⭐⭐

构造函数和getInitialState之间的区别就是ES6和ES5本身的区别。在使用ES6类时,应该在构造函数中初始化state,并在使用React.createClass时定义getInitialState方法。

class MyComponent extends React.Component { constructor(props) { super(props); this.state = { /* initial state */ }; }}

等价于:

var MyComponent = React.createClass({ getInitialState() { return { /* initial state */ }; },});var MyComponent = React.createClass({ getInitialState() { return { /* initial state */ }; },});

30、如何有条件地向 React 组件添加属性?

难度: ⭐⭐⭐⭐

对于某些属性,React 非常聪明,如果传递给它的值是虚值,可以省略该属性。例如:

var InputComponent = React.createClass({ render: function() { var required = true; var disabled = false; return (  ); }});

渲染结果:

另一种可能的方法是:

var condition = true;var component = ( 

31、Hooks会取代 render props 和高阶组件吗?

难度: ⭐⭐⭐⭐

通常,render props和高阶组件仅渲染一个子组件。React团队认为,Hooks 是服务此用例的更简单方法。

这两种模式仍然有一席之地(例如,一个虚拟的 scroller 组件可能有一个 renderItem prop,或者一个可视化的容器组件可能有它自己的 DOM 结构)。但在大多数情况下,Hooks 就足够了,可以帮助减少树中的嵌套。

32、如何避免组件的重新渲染?

难度: ⭐⭐⭐⭐

React 中最常见的问题之一是组件不必要地重新渲染。React 提供了两个方法,在这些情况下非常有用:

  • React.memo():这可以防止不必要地重新渲染函数组件
  • PureComponent:这可以防止不必要地重新渲染类组件

这两种方法都依赖于对传递给组件的props的浅比较,如果 props 没有改变,那么组件将不会重新渲染。虽然这两种工具都非常有用,但是浅比较会带来额外的性能损失,因此如果使用不当,这两种方法都会对性能产生负面影响。

通过使用 React Profiler,可以在使用这些方法前后对性能进行测量,从而确保通过进行给定的更改来实际改进性能。

33、什么是纯函数?

难度: ⭐⭐⭐⭐⭐

纯函数是不依赖并且不会在其作用域之外修改变量状态的函数。本质上,纯函数始终在给定相同参数的情况下返回相同结果。

34、当调用setState时,React render 是如何工作的?

难度: ⭐⭐⭐⭐⭐

咱们可以将"render"分为两个步骤:

  1. 虚拟 DOM 渲染:当render方法被调用时,它返回一个新的组件的虚拟 DOM 结构。当调用setState()时,render会被再次调用,因为默认情况下shouldComponentUpdate总是返回true,所以默认情况下 React 是没有优化的。
  2. 原生 DOM 渲染:React 只会在虚拟DOM中修改真实DOM节点,而且修改的次数非常少——这是很棒的React特性,它优化了真实DOM的变化,使React变得更快。

35、如何避免在React重新绑定实例?

难度: ⭐⭐⭐⭐⭐

有几种常用方法可以避免在 React 中绑定方法:

1.将事件处理程序定义为内联箭头函数

class SubmitButton extends React.Component { constructor(props) { super(props); this.state = { isFormSubmitted: false }; } render() { return (  { this.setState({ isFormSubmitted: true }); }}>Submit ) }}

2.使用箭头函数来定义方法:

class SubmitButton extends React.Component { state = { isFormSubmitted: false } handleSubmit = () => { this.setState({ isFormSubmitted: true }); } render() { return ( Submit ) }}

3.使用带有 Hooks 的函数组件

const SubmitButton = () => { const [isFormSubmitted, setIsFormSubmitted] = useState(false); return (  { setIsFormSubmitted(true); }}>Submit )};

36、React中keys的作用是什么?

难度: ⭐

  • 用于追踪哪些列表中元素被修改、被添加或者被移除的辅助(唯一)标识
  • 在diff算法中减少不必要的元素重渲染
  • 借助 Key 值来判断元素与本地状态的关联关系

37、React中,shouldComponentUpdate 是做什么的

难度: ⭐

  • return true 继续更新/false阻止更新
  • 判断是否需要调用 render 方法重新描绘 dom,
  • 性能优化

38、React 的工作原理?

难度: ⭐⭐⭐⭐

  • 基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,
  • 每当数据变化时,React都会重新构建整个DOM树,
  • 然后React将当前整个DOM树和上一次的DOM树进行对比(diff算法),
  • 得到DOM结构的区别,
  • 然后‘仅仅’将需要变化的部分进行实际的浏览器DOM更新

39、diff算法?

难度: ⭐⭐⭐⭐

  • 把树形结构按照层级分解,只比较同级元素。
  • 给列表结构的每个单元添加唯一的 key 属性,方便比较。
  • React 只会匹配相同 class 的 component(这里面的 class 指的是组件的名字)
  • 合并操作,调用 component 的 setState 方法的时候, React 将其标记为 dirty.到每一个事件循环结束, React 检查所有标记 dirty 的 component 重新绘制.
  • 选择性子树渲染。开发人员可以重写 shouldComponentUpdate 提高 diff 的性能。

40、react性能优化方案

难度: ⭐⭐⭐

  • 重写shouldComponentUpdate来避免不必要的dom操作。
  • 使用 production 版本的react.js。
  • 使用key来帮助React识别列表中所有子组件的最小变化

41、应该在 React 组件的何处发起 Ajax 请求?

难度: ⭐

  • 应该在 componentDidMount 中发起网络请求

42、React.Fragment有什么用途?它的简写是什么?

难度: ⭐

  • 无需向 DOM 添加额外节点,
  • 简写:<>>

43、解释下React中component和pureComponent两者的区别是什么?

难度: ⭐⭐

  • 后者只有当前组件props或者state改变时,才会引起dom重新渲染,提高性能,注意props/state的变化是浅比较

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

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

相关文章

实验二Step1-有序顺序表

1 #include<stdio.h>2 3 struct job4 {5 char name[10];//作业名称6 char status;//当前状态7 int arrtime;//到达时间8 int reqtime;//要求服务时间9 int startime;//调度时间 10 int finitme;//完成时间 11 float TAtime,TAWtime;//周转时…

ocx控件 postmessage消息会消失_APP控件之二——弹框

弹框分为两种&#xff1a;模态弹框和非模态弹框一、模态弹框模态弹框和非模态弹框最大的区别就是是否强制用户交互。模态弹框会打断用户的当前操作流程&#xff0c;用户不在弹框上操作的话&#xff0c;其余功能都使用不了。优点是&#xff1a;可以很好的获取的用户的视觉焦点缺…

结对编程(1)

我的结对编程项目搭档是王以正&#xff0c;我们的代码也是基于他个人项目的代码修改的。 由于王以正同学不在宿舍住也不怎么会宿舍&#xff0c;我们结对编程的时间较少&#xff0c;不过他将他的代码代码放到了github上面&#xff0c;这也让我有机会学习了github的使用。感觉这个…

伪代码block转换成程序流程图_程序设计基础

1、程序与程序设计语言的基本知识1&#xff09;程序&#xff1a;为解决某一问题而采用程序设计语言编写的一个指令集合。程序算法&#xff08;对操作的描述&#xff09;数据结构&#xff08;对数据的描述&#xff09;程序设计语言语言工具和环境。2&#xff09;程序的特点&…

mysql 内联函数_C++之内联函数

C继承C的一个重要特性是效率&#xff0c;在C中保护效率的一个方法是使用宏(macro),宏的实现是使用预处理器而不是编译器&#xff0c;预处理器直接用宏代码替换宏调用&#xff0c;所以就没有了参数压栈、生成汇编语言的CALL、返回参数、执行汇编语言的RETURN的时间花费&#xff…

10桌面管理文件收纳_二十余件精选桌面好物推荐,让学习工作生活满满正能量!...

这些提升办公桌幸福感的好物&#xff0c;能让你的学习与工作正能量满满&#xff01;01 笔记本支架笔记本是为了人们出行方便而设计的&#xff0c;显示器的位置并没有照顾到长期对着显示器码字的人群&#xff0c;许多以笔记本为主力的办公族也被迫成为了低头族。绿巨能(llano)笔…

hash 值重复_面试题:HashSet是如何保证元素不重复的

面试官&#xff1a;你能简单介绍List和Set有什么区别吗&#xff1f;小憨&#xff1a;List是一个有序的集合&#xff0c;在内存是连续存储的&#xff0c;可以存储重复的元素&#xff0c;List查询快&#xff0c;增删慢&#xff1b;Set是一个无序的集合&#xff0c;在内存中不连续…

RabbitMQ 原文译03--发布和订阅

发布/订阅 在之前的案例中我们创建了一个工作队列,这个工作队列的实现思想就是一个把每一个任务平均分配给每一个执行者,在这个篇文章我们会做一些不一样的东西,把一个消息发送给多个消费者,这种模式就被称作"发布/订阅". 为了说明这个模式,我们将要创建一个简单的日…

html富文本编辑器插件_vue中使用vuequilleditor富文本编辑器

点击上方“小姚同学技术栈”快速关注我哟&#xff01;vue-quill-editor是一个基于quill、适用于vue的富文本编辑器开源项目&#xff0c;支持服务端渲染和单页应用。目前项目热度还算可以&#xff0c;如果不考虑使用markdown&#xff0c;vue-quill-editor是一个比较好的选择。本…

二元函数图像生成器_GAN生成图像综述

点击上方“CVer”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达作者&#xff1a;YTimo(PKU EECS) 研究方向&#xff1a;深度学习&#xff0c;计算机视觉本文转载自&#xff1a;SIGAI摘要生成对抗网络(Generative adversarial network, GAN)…

设计模式之禅读书笔记

》设计原则《 》Single Responsibility Principle&#xff08;单一职责原则&#xff09;类只有一个修改的原因。 ●类的复杂性降低&#xff0c;实现什么职责都有明确的定义。 ●可读性高 ●可维护性高 ●变更引起的风险降低。 PS&#xff1a;基本不可能实现 》里氏替换原则&…

mysql mysql_set_charset_SQL注入攻击之 mysql_set_charset [转]

本文转载地址&#xff1a;http://hi.baidu.com/cuttinger/blog/item/e9a93901934755147bec2cb0.html1。老话题&#xff0c;mysql_real_escape_string单引号&#xff0c;大多数情况下&#xff0c;防止sql注入攻击足够了。$mysql mysql_connect("host","user&quo…

idea导入maven项目依赖报错_解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?

1、何为依赖冲突Maven是个很好用的依赖管理工具&#xff0c;但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子&#xff0c;现在你的项目中&#xff0c;使用了两个Jar包&#xff0c;分别是A和B。现在A需要依赖另一个Jar包C&#xff0c;B也需要依赖C。但…

java线程创建方式_Java创建线程安全的方法

原文链接 译者&#xff1a;秦建平 校对&#xff1a;方腾飞首先来看一个问题&#xff1a;下面这个方法是线程安全的吗&#xff1f;如何才能让这个方法变成线程安全的&#xff1f;public class MyCount {private static int counter 0;public static int getCount(){return coun…

win7 能下node什么版本_微软从未公开的win10版本,3GB+极度精简,老爷机有救了

在windows家族中&#xff0c;最好用的就是win7和XP系统。堪称经典&#xff0c;而且还是发展最成功的系统版本。前几天韩博士也发布一篇关于XP系统的文章&#xff0c;评论区引发极大争论。大家众说纷纭&#xff0c;觉得XP系统是顺畅&#xff0c;但是很多软件硬件都不支持&#x…

【Swift学习】Swift编程之旅(一)

学习一门新语言最经典的例子就是输出“Hello World&#xff01;” print("Hello World!")  swift就是这样来输出的。 如果你使用过其他语言&#xff0c;那么看上去是非常的熟悉吧。但比一些c要简单的多吧 1、不需要导入一些单独的库&#xff0c;比如输入/输出或字符…

孔夫子二手书采集

文章目录 项目演示软件采集单本数据网页搜索数据对比 使用场景概述部分核心逻辑Vb工程图数据导入与读取下拉框选择参数设置线程 使用方法下载软件授权导入文件预览处理后的数据 项目结构附件说明 项目演示 操作视频详见演示视频&#xff0c;以下为图文演示 软件采集单本数据 …

为什么用redis做缓存而不是mybatis自带的缓存_如何用Java设计一个本地缓存,涨姿势了...

最近在看Mybatis的源码&#xff0c;刚好看到缓存这一块&#xff0c;Mybatis提供了一级缓存和二级缓存&#xff1b;一级缓存相对来说比较简单&#xff0c;功能比较齐全的是二级缓存&#xff0c;基本上满足了一个缓存该有的功能。当然如果拿来和专门的缓存框架如ehcache来对比可能…

process 类 java_编写可执行jar——java的Process类的使用(二)

你知道怎么在控制台使用ping吗&#xff1f;那你知道怎么在java中使用ping吗&#xff1f;1.批处理文件批处理文件大家一定不陌生。接触最多的应该就是tomcat中的start.bat或者start.sh了。bat是在windows环境下运行的批处理文件&#xff0c;sh则是linux的shell脚本。2.adb指令安…

2782: [HNOI2006]最短母串

2782: [HNOI2006]最短母串 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3 Solved: 2[Submit][Status][Web Board]Description 给定n个字符串&#xff08;S1,S2,„,Sn&#xff09;&#xff0c;要求找到一个最短的字符串T&#xff0c;使得这n个字符串&#xff08;S1,S2,„,…