React学习(一)

1.React环境安装

这里会直接使用 React.js 官网所推荐使用的工具 create-react-app 工具

1 npm install -g create-react-app
2 create-react-app hello-react
3 cd hello-react
4 npm startt

在安装之前可以修改npm 的源,会加速下载:

npm config set registry https://registry.npm.taobao.org

2.使用JSX结构描述UI信息

我们可以用JavaScript对象来描述多有能用HTML表示的UI信息,但是用JavaScript写起来太长了,结构看起来很不清晰,用HTML的方式写起来就方便许多,因此React.js把JavaScript的语法扩展了一下,就有了JSX。

如这样一个DOM元素的结构:

  

React 小书

用JSX语言表示为:

import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import './index.css'

class Header extends Component {
  render () {
    return (
      

React 小书

) } } ReactDOM.render(
, document.getElementById('root') )

经过编译后:

import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import './index.css'

class Header extends Component {
  render () {
    return (
     React.createElement(
        "div",
        null,
        React.createElement(
          "h1",
          { className: 'title' },
          "React 小书"
        )
      )
    )
  }
}

ReactDOM.render(
  React.createElement(Header, null), 
  document.getElementById('root')
);

JSX语言经过Babel编译后,会生成如上图所示的React.createElement 结构,React.createElement会创建一个JavaScript对象来描述HTML结构的信息,包括标签、属性和子元素等,这样的代码就是合法的JS代码了。所谓的JSX其实就是JS对象ReactDOM.render功能就是把组件渲染并且构造DOM树,然后插到页面上某个特定的元素上(这里是id为rootdiv元素)。

React学习(一)_第1张图片
JSX转换图.png

总结

  1. JSX 是 JavaScript 语言的一种语法扩展,长得像 HTML,但并不是 HTML。

  2. React.js 可以用 JSX 来描述你的组件长什么样的。

  3. JSX 在编译的时候会变成相应的 JavaScript 对象描述。

  4. react-dom 负责把这个用来描述 UI 信息的 JavaScript 对象变成 DOM 元素,并且渲染到页面上。

3.组件中的render方法

一个组件类必须实现一个render方法,这个render方法必须要返回一个JSX元素。这里要注意的是必须要用一个外层的JSX元素把素有内容能够包裹起来。返回并列的对个JSX元素是不合法的。

如这种是错误的做法:

render () {
  return (
    
第一个
第二个
) }

必须要用一个外层元素把里层元素包裹起来:

render () {
  return (
    
第一个
第二个
) }
表达式插入{}

在JSX当中可以插入JavaScript的表达式,返回的结果会相应的炫染道页面上。表达式用{}包裹。如在JSX中插入变量:

render(){
  const word='is good'
  return(
    

React {word}

) }

页面上就会显示“React is good”。也可以插入表达式计算{1+2}。也可以把它写成一个函数执行表达式返回:

render () {
  return (
    

React {(function () { return 'is good'})()}

) }

{}表达式插入除了可以卸载标签内部,也可以用在标签的属性上,比如插入一个类名:

render () {
  const className = 'header'
  return (
    

React

) }

这样可以给div添加一个header类名。

注意

在react中用calssName给元素添加类名,因为class是JS中的关键字,用在类名上不合法。在JSX中用htmlFor替代for属性。其他的styledata-*等就可以像普通的HTML属性那样直接添加上去。

条件返回

在JSX内部除了可以放置任何表达式内容外,还可以放置JSX,在render函数内可以根据不同条件返回不同的JSX。比如:

render () {
  const isGoodWord = true
  return (
    

React {isGoodWord ? is good : is not good }

) }

上面的代码中定义了一个常量isGoodWordtrue,在JSX中插入例如一个条件表达式{},isGoodWordtrue就返回 is good的JSX内容,否则返回 is not good

如果在表达式中条件返回null,那么react就什么都不显示。

JSX元素变量

在react总可以直接定义JSX变量,如:

 const goodWord =  is good
 const badWord =  is not good

代码练习:见练习2

4.组件的组合、嵌套和组件树

组件可以和组件组合在一起、组件内部也可以使用别的组件。这样的组件嵌套构成了组件树。

例如:

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

class Title extends Component {
  render () {
    return (
      

React 小书

) } } class Header extends Component { render () { return (
<h2>This is Header</h2> </div> ) } } class Main extends Component { render () { return ( <div> <h2>This is main content</h2> </div> ) } } class Footer extends Component { render () { return ( <div> <h2>This is footer</h2> </div> ) } } class Index extends Component { render () { return ( <div> <Header /> <Main /> <Footer /> </div> ) } } ReactDOM.render( <Index />, document.getElementById('root') ) </code></pre> <p>在这代码中,<code>Index</code>组件嵌套了Header<code>、</code>Main<code>、</code>Footer组件,而<code>Header</code>组件又嵌套了<code>Title</code>组件。用组件树表示为如下图:</p> <div class="image-package"> <div class="image-container" style="max-width: 500px; max-height: 357px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/382bc2aed71744a480d48008b2da7ef5.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/382bc2aed71744a480d48008b2da7ef5.jpg" width="500" height="357" alt="React学习(一)_第2张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 组件树.png </div> </div> <p>代码练习:见练习3</p> <h4>5.事件监听</h4> <ol> <li><p>只需要使用<code>on*</code>方法就可以为React.js的组件添加事件监听,这些方法兼容所有的浏览器;</p></li> <li><p>React会给每个事件监听传入一个<code>event</code>是对象,这个对象提供的功能和浏览器提供的功能一致,而且它是兼容所有浏览器的;</p></li> <li> <p>Reat.js的事件监听方法需要手动<code>bind</code>到当前实例,这种模式在React.js中非常常用;</p> <p>​</p> <h5>on*方法</h5> <p>React为我们封装很多类型的事件;</p> <p>(1)剪贴板事件(Clipboard Events)</p> <pre><code class="properties"> onCopy(复制) onCut(剪切) onPaste(粘贴) </code></pre> <p>​</p> <p>(2)文字输入事件(Composition Events)</p> <pre><code class="properties">onCompositionEnd(输入截止) onCompositionStart(输入开始) onCompositionUpdate(输入更新) </code></pre> <p>(3)键盘事件(KeyboardEvents)</p> <pre><code class="properties">onKeyDown(当按下任何键盘键时) onKeyPress(当用户按下并放开任何字母数字键时发生) onKeyUp(当用户放开人格先前按下的键盘键时发生) </code></pre> <p>(4)焦点事件(Focus Events)</p> <pre><code class="properties">onFocus(在对象获得焦点时发生) onBlur(在对象失去焦点时发生) </code></pre> <p>(5)表单事件(Form Events)</p> <pre><code class="properties">onChange(当表单发生改变时发生) onInput(当输入表单时发生) onInvalid(当表单失效时发生) onSubmit(当表单提交时发生) </code></pre> <p>(6)鼠标事件(Mouse Events)</p> <pre><code class="shell">onClick(点击时) onContextMenu(事件在元素中用户右击鼠标时触发并打开上下文菜单) onDoubleClick(当用户双击某个对象时) onDrag(元素正在拖动时触发) onDragEnd(用户完成元素拖动后触发) onDragEnter(当被鼠标拖动的对象进入其容器范围内时触发此事件) onDragExit(当元素不再是拖动操作的直接选择元素时触发() onDragLeave(当被鼠标拖动的对象离开其容器范围内时触发此事件) onDragOver(当某被拖动的对象在另一对象容器范围内拖动时触发此事件) onDragStart(用户开始拖动元素时触发) onDrop(在一个拖动过程中,释放鼠标键时触发此事件) onMouseDown(鼠标按钮被按下) onMouseEnter(当鼠标指针移动到元素上时触发) onMouseLeave(当鼠标指针移出元素时触发) onMouseMove(鼠标被移动) onMouseOut(鼠标从某元素移开) onMouseOver(鼠标移到某元素之上) onMouseUp(鼠标按键被松开) </code></pre> <p>​</p> <p>(7)选择事件(Selection Events)</p> <pre><code>onSelect(事件会在文本框中的文本被选中时发生) </code></pre> <p>(8)触屏事件(Touch Events)</p> <pre><code>onTouchCancel(当取消触屏操作) onTouchEnd(当移走手指时) onTouchMove(当移动手指时) onTouchStart(当按下手指时) </code></pre> <p>(9)UI事件(UI Events)</p> <pre><code>onScroll(元素滚动时执行) </code></pre> <p>(10)滚轮事件(wheel Events)</p> <pre><code>onWheel(在鼠标滚轮在元素上下滚动时触发、同样可以在触摸板上滚动或放大缩小区域时触发(如笔记本上的触摸板)) </code></pre> <p>(11)媒体事件(Media Events)</p> <pre><code>onAbort(在视频/音频(audio/video)终止加载时触发) onCanPlay(在视频(video)准备开始播放时执行 ) onCanPlayThrough(当视频可以正常播放且无需停顿时执行 ) onDurationChange(当视频的时长发生变化时执行) onEmptied(期播放列表为空时触发 ) onEncrypted(当视频加密时发生) onEnded(当音频播放结束后执行) onError(当音频加载出错时执行) onLoadedData(在当前帧的数据可用时执行) onLoadedMetadata(在视频的元数据加载后执行) onLoadStart(在视频开始加载时执行) onPause(在视频暂停时执行) onPlay(当视频播放时执行) onPlaying(在视频暂停后准备开始播放时执行) onProgress(视频正在下载时执行) onRateChange(当视频的播放速度发生改变时执行) onSeeked(在用户重新定位视频的播放位置后执行) onSeeking( 在用户开始重新定位视频的播放位置时执行) onStalled(在浏览器尝试获取媒体数据且数据不可用时执行) onSuspend(在浏览器读取媒体数据中止时执行) onTimeUpdate(在当前播放位置改变时执行) onVolumeChange(当视频的音量改变时执行) onWaiting(在视频由于要播放下一帧而需要缓冲时执行) </code></pre> <p>(12)图片事件(Image Events)</p> <pre><code>onLoad(图片加载时触发) onError(图片加载出错时触发) </code></pre> <p>(13)动画事件(Animation Events)</p> <pre><code>onAnimationStart(动画开始时执行) onAnimationEnd(动画完成时执行) onAnimationIteration( 动画重复播放时触发) </code></pre> <p>(14)过渡事件</p> <pre><code>onTransitionEnd(过渡结束时触发) </code></pre> <p>(15)其他事件(Other Events)</p> <pre><code>onToggle(当元素打开或者关闭时执行) </code></pre> <h5>Events</h5> <p>React.js中的Event事件和普通浏览器的Event事件不一样,它将浏览器提供的Event事件进行了封装,可以兼容所有的浏览器。</p> <h5>有关this和bind</h5> </li> </ol> <hr> <p>错误示例:</p> <pre><code class="react">class Title extends Component { handleClickOnTitle (e) { console.log(this) } render () { return ( <h1 onClick={this.handleClickOnTitle}>React 小书</h1> ) } } </code></pre> <p>控制台输出为:undefined</p> <p>正确示例:</p> <pre><code class="react">class Title extends Component { handleClickOnTitle (e) { console.log(this) } render () { return ( <h1 onClick={this.handleClickOnTitle.bind(this)}>React 小书</h1> ) } } </code></pre> <p>输出为:Title</p> <p>在React.js中调用你传给它的方法时,并不是通过对象方法的方式调用(<code>this.handleCliclkOnTitle</code>),而是直接通过(<code>handleCliclOnTitle</code>),所以事件监听函数并不能通过<code>this</code>获取到实例。</p> <p>如果你想在事件函数当中使用当前的实例,你需要手动地将实例方法 <code>bind</code> 到当前实例上再传入给 React.js</p> <p>bind的作用会把实例方法绑定到当前实例上</p> <p><strong>代码练习:见练习1</strong></p> <h4>6.组件的state和setState</h4> <ul> <li><p>Reat中的state是用来存储组件状态变化的;</p></li> <li><p>setState方法由父类<code>Component</code>所提供,当我们调用这个函数的时候,Reat会更新组件的状态<code>state</code>,并且重新调用render方法,然后再把<code>render</code>方法所渲染的最新的内容显示到页面上;</p></li> <li><p>setState方法接受一个对象或者函数作为参数;</p></li> <li> <p>当调用setState时<strong>并不会马上修改state</strong>。而是把这个对象放到一个更新队列里面,稍后才会从队列当中把新的状态提取出来合并到 <code>state</code> 当中,然后再触发组件更新。</p> <p>如下面的例子:</p> <pre><code class="react"> constructor (props) { super(props) this.state = { isLiked: false } } handleClickOnLikeButton () { console.log(this.state.isLiked) this.setState({ isLiked: !this.state.isLiked }) console.log(this.state.isLiked) } </code></pre> <p>​</p> </li> </ul> <p>输出:false false</p> <p>第二次不是true的原因是setState并不会马上修改state的状态,而是React会把你传进来的状态缓存进来,稍后才会帮你更新到<code>state</code>上。所以我们获取到的还是之前的state。</p> <p>但是可以采用让<code>setstate</code>函数接受参数的方式,将结果传入到下一个函数中。例如:</p> <pre><code class="react">handleClickOnLikeButton () { this.setState((prevState) => { return { count: 0 } }) this.setState((prevState) => { return { count: prevState.count + 1 } // 上一个 setState 的返回是 count 为 0,当前返回 1 }) this.setState((prevState) => { return { count: prevState.count + 2 } // 上一个 setState 的返回是 count 为 1,当前返回 3 }) // 最后的结果是 this.state.count 为 3 } </code></pre> <p><strong>代码练习:见练习4</strong></p> <h4>7.配置组件的props</h4> <p>props可以让我们的组件达到可配置性的效果。每个组件都可以接受一个对象包含了所有我们对这个组件的配置。</p> <p>如:</p> <pre><code class="react">class LikeButton extends Component { constructor () { super() this.state = { isLiked: false } } handleClickOnLikeButton () { this.setState({ isLiked: !this.state.isLiked }) } render () { const likedText = this.props.likedText || '取消' const unlikedText = this.props.unlikedText || '点赞' return ( <button onClick={this.handleClickOnLikeButton.bind(this)}> {this.state.isLiked ? likedText : unlikedText} </button> ) } } </code></pre> <p>从render函数中我们可以看到,通过<code>this.props</code>获取组件的参数,如果``this.props里面有我们需要的参数我们就采用它的属性没有就采用默认的属性。</p> <p><strong>那么props是怎么传进去的呢</strong></p> <p>在使用一个组件的时候,可以把参数放在标签的属性当中,所有的属性都会作为 props 对象的键值,例如上面的组件<code>LikeButton</code>在别的组件中使用它的时候,我们可以给把参数加在它的标签属性中:</p> <pre><code class="react">class Index extends Component { render () { return ( <div> <LikeButton likedText='已赞' unlikedText='赞' /> </div> ) } } </code></pre> <p>我们给<code>LikeButton</code>组件定义了两个标签属性作为组件的参数,组件内部就可以通过<code>this.props</code>来访问到这些配置参数了。</p> <p><em>补充</em></p> <hr> <p>可以把任何类型的数据作为组件的参数,包括字符串、数字、对象、数组、甚至是函数等等,因为JSX的表达式可以插入到标签属性上使用。比如:</p> <pre><code class="react">class Index extends Component { render () { return ( <div> <LikeButton wordings={{likedText: '已赞', unlikedText: '赞'}} /> </div> ) } } </code></pre> <p>我们将<code>likeText</code>和<code>unlikeText</code>这两个参数封装到一个叫做<code>wording</code>的对象参数内,然后传入组件内部。<code>{{}}</code>其实就是在<code>{}</code>内部用对象字面了返回一个对象而已。</p> <h5>默认配置defaultProps</h5> <p>默认配置的方式除了设置<code>||</code>(或)方法外,还有一种方式<code>defaultProps</code></p> <p>只用在子组件内定义<code>defaultProps</code>变量即可。如:</p> <pre><code class="react"> static defaultProps = { likedText: '取消', unlikedText: '点赞' } </code></pre> <h5>props不可变</h5> <p>props一旦传进来就不能改变。要想在组件内改变组件的形态,可以采用<code>setState</code>的方法主动修改组件的状态</p> <h4>8.state vs props</h4> <p><code>state</code> 的主要作用是用于组件保存、控制、修改<strong>自己</strong>的可变状态。<code>state</code> 在组件内部初始化,可以被组件自身修改,而外部不能访问也不能修改。你可以认为 <code>state</code> 是一个局部的、只能被组件自身控制的数据源。<code>state</code> 中状态可以通过 <code>this.setState</code>方法进行更新,<code>setState</code> 会导致组件的重新渲染。</p> <p><code>props</code> 的主要作用是让使用该组件的父组件可以传入参数来配置该组件。它是外部传进来的配置参数,组件内部无法控制也无法修改。除非外部组件主动传入新的 <code>props</code>,否则组件的 <code>props</code> 永远保持不变。</p> <p><code>state</code> 和 <code>props</code> 有着千丝万缕的关系。它们都可以决定组件的行为和显示形态。一个组件的 <code>state</code> 中的数据可以通过 <code>props</code> 传给子组件,一个组件可以使用外部传入的 <code>props</code> 来初始化自己的 <code>state</code>。但是它们的职责其实非常明晰分明:<strong><code>state</code> 是让组件控制自己的状态,props 是让外部对组件自己进行配置</strong>。</p> <p>记住一个原则:</p> <p><strong>尽量少地用<code>state</code>,尽量多地用<code>props</code>。</strong></p> <p>因为状态太多,维护和管理起来难度大。</p> <h4>9.渲染列表数据</h4> <h5>渲染存放JSX元素的数组</h5> <p>因为JSX的表达式插入<code>{ }</code>里面可以放任何数据,所以也可以存放数组,如</p> <pre><code class="react">class Index extends Component { render () { return ( <div> {[ <span>React.js </span>, <span>is </span>, <span>good</span> ]} </div> ) } } ReactDOM.render( <Index />, document.getElementById('root') ) </code></pre> <p>页面上会看到:React.js is good</p> <p>如果你往 <code>{}</code>放一个数组,React.js 会帮你把数组里面一个个元素罗列并且渲染出来。</p> <h5>使用map渲染列表数据</h5> <pre><code class="react">class Index extends Component { render () { return ( <div> {users.map((user) => { return ( <div> <div>姓名:{user.username}</div> <div>年龄:{user.age}</div> <div>性别:{user.gender}</div> <hr /> </div> ) })} </div> ) } } </code></pre> <h5>Key!Key!Key!</h5> <p>规则:</p> <p><strong>对于用表达式套数组罗列到页面上的元素,都要为每个元素加上 <code>key</code>属性,这个 <code>key</code> 必须是每个元素唯一的标识。一般来说,<code>key</code> 的值可以直接后台数据返回的 <code>id</code>,因为后台的 <code>id</code> 都是唯一的。</strong></p> <p>如果没有id可以用循环计数器<code>i</code>作为<code>key</code></p> <pre><code class="react">class Index extends Component { render () { return ( <div> {users.map((user, i) => <User key={i} user={user} />)} </div> ) } } </code></pre> <h4>参考资料:</h4> <p>1 React.js 小书</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1288547354244358144"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(React学习(一))</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1902409069495382016.htm" title="python pandas 读取excel单元门公式值_Python pandas对excel的操作实现示例" target="_blank">python pandas 读取excel单元门公式值_Python pandas对excel的操作实现示例</a> <span class="text-muted">weixin_39585761</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E5%8F%96excel%E5%8D%95%E5%85%83%E9%97%A8%E5%85%AC%E5%BC%8F%E5%80%BC/1.htm">读取excel单元门公式值</a> <div>最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程。本篇介绍pandas的DataFrame对列(Column)的处理方法。示例数据请通过明哥的gitee进行下载。增加计算列pandas的DataFrame,每一行或每一列都是一个序列(Series)。比如:importpandasaspddf1=pd.read_e</div> </li> <li><a href="/article/1902409070137110528.htm" title="httpcanary动态注入_HttpCanary" target="_blank">httpcanary动态注入_HttpCanary</a> <span class="text-muted">weixin_39760721</span> <a class="tag" taget="_blank" href="/search/httpcanary%E5%8A%A8%E6%80%81%E6%B3%A8%E5%85%A5/1.htm">httpcanary动态注入</a> <div>HttpCanary是一款功能十分强大网络抓包工具,它可以分析多个协议HTTP、https、http2等,这是一款最新的专为移动端设计的抓包工具,用户可以根据这个工具来应用,使用非常的简单,一学就会。对这款HttpCanary感兴趣的用户点击下载就可以使用啦!软件介绍HttpCanary是一款功能齐全的互联网包抓取和分析工具,相当于是移动端的Fiddler或是Charles,可是HttpCanar</div> </li> <li><a href="/article/1902408942781263872.htm" title="pandas整表写入excel指定位置_pandas操作Excel的常用场景及问题" target="_blank">pandas整表写入excel指定位置_pandas操作Excel的常用场景及问题</a> <span class="text-muted">那个吴小明</span> <div>很多场景下使用pandas就能够胜任手上的excel处理任务,之前写的用python操作具体到excel单元格的方法参考:贺霆:python操作Excel实现自动化报表zhuanlan.zhihu.com现在主要介绍使用pandas读取excel的几种常用场景:一、常规读取importpandasaspdfrompandasimportDataFrame,Seriesimportosos.chdi</div> </li> <li><a href="/article/1902408943271997440.htm" title="httpcanary小米 闪退_Android HttpCanary最强抓包工具!" target="_blank">httpcanary小米 闪退_Android HttpCanary最强抓包工具!</a> <span class="text-muted">ssslience</span> <a class="tag" taget="_blank" href="/search/httpcanary%E5%B0%8F%E7%B1%B3/1.htm">httpcanary小米</a><a class="tag" taget="_blank" href="/search/%E9%97%AA%E9%80%80/1.htm">闪退</a> <div>迎使用HttpCanary——最强Android抓包工具!HttpCanary是一款功能强大的HTTP/HTTPS/HTTP2网络包抓取和分析工具,你可以把他看成是移动端的Fiddler或者Charles,但是HttpCanary使用起来更加地简单容易,因为它是专门为移动端设计的!最重要的是:无需root权限!无需root权限!无需root权限!HttpCanary支持对HTTP协议包的抓取和注入</div> </li> <li><a href="/article/1902408687436230656.htm" title="单片机中断系统的关键作用" target="_blank">单片机中断系统的关键作用</a> <span class="text-muted">weGuru</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a> <div>单片机中断系统的关键作用单片机中断系统在嵌入式系统中扮演着至关重要的角色。它是一种机制,允许单片机在执行正常程序时,根据特定事件的发生而中断当前任务的执行,转而执行与该事件相关的处理程序。中断系统的设计和实现可以极大地提高系统的可靠性、响应性和灵活性。下面将详细介绍单片机中断系统的重要性,并提供一些相关的源代码示例。提高系统的可靠性:中断系统允许单片机根据外部事件的发生立即中断当前任务的执行。这对</div> </li> <li><a href="/article/1902408689906675712.htm" title="pandas 读取某一单元格的值_07-Pandas Excel新建/读取/填充(一)" target="_blank">pandas 读取某一单元格的值_07-Pandas Excel新建/读取/填充(一)</a> <span class="text-muted">扇贝编程</span> <a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E5%8F%96%E6%9F%90%E4%B8%80%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E5%80%BC/1.htm">读取某一单元格的值</a> <div>Excel是微软的经典之作,几乎可以满足我们日常工作的所有需求,但是在处理海量数据时,Excel在效率及性能方面就显得很吃力。正因为Pandas在数据处理方面有着独特的优势,所有掌握pandas库处理excel格式的数据就显得十分必要。目录excel文档新建读取excel文档行列操作空值自动填充行列函数运算excel数据排序excel数据按条件筛选#1.创建excel文件在jupyter中导入pa</div> </li> <li><a href="/article/1902408561074434048.htm" title="EmbodiedSAM:在线实时3D实例分割,利用视觉基础模型实现高效场景理解" target="_blank">EmbodiedSAM:在线实时3D实例分割,利用视觉基础模型实现高效场景理解</a> <span class="text-muted">数据猎手小k</span> <a class="tag" taget="_blank" href="/search/3D/1.htm">3D</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E4%BE%8B%E5%88%86%E5%89%B2/1.htm">实例分割</a><a class="tag" taget="_blank" href="/search/%E5%9C%A8%E7%BA%BF%E5%AE%9E%E6%97%B6%E6%84%9F%E7%9F%A5/1.htm">在线实时感知</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E8%A7%89%E5%9F%BA%E7%A1%80%E6%A8%A1%E5%9E%8B%EF%BC%88VFM%EF%BC%89%E5%BA%94%E7%94%A8/1.htm">视觉基础模型(VFM)应用</a> <div>2025-02-12,由清华大学和南洋理工大学的研究团队开发一种名为EmbodiedSAM(ESAM)的在线3D实例分割框架。该框架利用2D视觉基础模型辅助实时3D场景理解,解决了高质量3D数据稀缺的难题,为机器人导航、操作等任务提供了高效、准确的视觉感知能力。一、研究背景随着机器人技术和人工智能的发展,机器人在复杂环境中执行任务(如导航、操作和交互)的能力越来越依赖于对三维(3D)场景的实时、准</div> </li> <li><a href="/article/1902408309026123776.htm" title="Docker安装Nginx并部署vue项目" target="_blank">Docker安装Nginx并部署vue项目</a> <span class="text-muted">sdgiuser</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>拉取Nginx镜像dockerpullnginx查看本地镜像dockerimages运行容器dockerrun--namenginx-p8080:80-dnginx–namenginx:容器名称。-p8080:80:端口进行映射,将本地8080端口映射到容器内部的80端口。-dnginx:设置容器在在后台一直运行。访问端口通过浏览器可以直接访问8080端口的nginx服务修改配置文件查看容器内部的</div> </li> <li><a href="/article/1902408180764307456.htm" title="初探 Threejs 物理引擎CANNON,解锁 3D 动态魅力" target="_blank">初探 Threejs 物理引擎CANNON,解锁 3D 动态魅力</a> <span class="text-muted">伶俜Monster</span> <a class="tag" taget="_blank" href="/search/Threejs/1.htm">Threejs</a><a class="tag" taget="_blank" href="/search/webgl/1.htm">webgl</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/3d/1.htm">3d</a><a class="tag" taget="_blank" href="/search/threejs/1.htm">threejs</a><a class="tag" taget="_blank" href="/search/cannon.js/1.htm">cannon.js</a> <div>简介Cannon.js是一个基于JavaScript的物理引擎,它可以在浏览器中模拟物理效果。它支持碰撞检测、刚体动力学、约束等物理效果,可以用于创建逼真的物理场景和交互。参考文档官方示例原理Cannon.js使用了欧拉角来表示物体的旋转,而不是四元数。这使得它在处理旋转时更加直观和易于理解。Cannon.js还支持多种碰撞检测算法,包括离散碰撞检测和连续碰撞检测。Cannon.js还支持多种约束</div> </li> <li><a href="/article/1902408182584635392.htm" title="STC51单片机-中断控制LED-物联网应用系统设计项目开发" target="_blank">STC51单片机-中断控制LED-物联网应用系统设计项目开发</a> <span class="text-muted">Yeats_Liao</span> <a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91%E5%BA%94%E7%94%A8%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/1.htm">物联网应用系统设计</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a> <div>目录一、说明二、重点三、实现四、下载一、说明单片机中“中断”处理主要是指单片机暂停当前主程序的执行,而去执行更重要或需急迫处理的事件请求的处理程序,处理完成后,再回到主程序暂停处继续执行。这个事件叫“中断源”,发出的中断信号叫“中断请求”,事件处理程序叫“中断处理程序”或“中断服务程序”,暂停主程序的程序位置叫“断点”。中断技术主要用于实时监测与控制,避免单片机CPU花大量的时间去查询和判断需要处</div> </li> <li><a href="/article/1902407421578506240.htm" title="正则表达式全解" target="_blank">正则表达式全解</a> <span class="text-muted">程序喵;</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>Regexregularexpressions先理解什么是正则表达式,有什么用途理解:是表达一类串的抽象模式的串,来匹配字符串中符合模式的子串人话:举例,例如abc9,abcd9,a&*&%*()9,这三个字符串有相同的模式(人话来说就是他们有共同点):都以a开头,9结尾.正则表达式就能用来表示这种以a开头,9结尾的模式(共同点),来匹配这一类字符串.a开头,9结尾的模式用正则表达式表示就是:a.</div> </li> <li><a href="/article/1902407169412755456.htm" title="奥林巴斯道Olympus DAO、奥拉丁模式、诺瓦银行、RWA模型合约解析开发" target="_blank">奥林巴斯道Olympus DAO、奥拉丁模式、诺瓦银行、RWA模型合约解析开发</a> <span class="text-muted">白马区块Crypto100</span> <a class="tag" taget="_blank" href="/search/web3/1.htm">web3</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE%E9%A1%B9%E7%9B%AE/1.htm">区块链项目</a> <div>关于OlympusDAO技术合约解析的文章草稿,整体结构偏向技术向,适合有一定DeFi或区块链背景的读者。你可以根据自己的需求微调。技术帮助“Crypto100”深入理解DeFi2.0的创新机制一、引言2021年,OlympusDAO凭借其颠覆性的机制和“协议拥有流动性”(Protocol-OwnedLiquidity,POL)概念引发了DeFi世界的巨大关注。它不是一个传统意义上的稳定币项目,而</div> </li> <li><a href="/article/1902406791283666944.htm" title="国产信创AI IDE:开启智能编程新时代" target="_blank">国产信创AI IDE:开启智能编程新时代</a> <span class="text-muted">InsCode AI IDE</span> <div>国产信创AIIDE:开启智能编程新时代随着信息技术的迅猛发展,软件开发工具也在不断演进。近年来,人工智能(AI)技术的应用为编程工具带来了革命性的变化。其中,国产信创AIIDE——InsCodeAIIDE,作为一款由CSDN、GitCode和华为云CodeArtsIDE联合开发的新一代集成开发环境(IDE),以其智能化、高效化的特点,正在引领智能编程的新时代。最新接入DeepSeek-V3模型,点</div> </li> <li><a href="/article/1902406664972201984.htm" title="如何用Python批量将CSV文件编码转换为UTF-8并转为Excel格式?" target="_blank">如何用Python批量将CSV文件编码转换为UTF-8并转为Excel格式?</a> <span class="text-muted">字节王德发</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/excel/1.htm">excel</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在处理数据时,CSV文件格式常常用作数据的交换格式。不过,很多情况下我们会遇到编码问题,特别是当文件不是UTF-8编码时。为了更好地处理这些文件,可能需要将它们转换为UTF-8编码,并且将其转换为Excel格式,这样可以方便后续的数据分析和使用。今天就来聊聊如何用Python实现这一过程。准备工作:安装必要的库我们需要确保安装了所需的Python库。主要用到的库有pandas和openpyxl。p</div> </li> <li><a href="/article/1902406661402849280.htm" title="【产品小白】什么是AI产品经理" target="_blank">【产品小白】什么是AI产品经理</a> <span class="text-muted">百事不可口y</span> <a class="tag" taget="_blank" href="/search/%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86%E7%9A%84%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5/1.htm">产品经理的一步一步</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86/1.htm">产品经理</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%A7%E5%93%81%E8%BF%90%E8%90%A5/1.htm">产品运营</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AE%B9%E8%BF%90%E8%90%A5/1.htm">内容运营</a><a class="tag" taget="_blank" href="/search/%E7%94%A8%E6%88%B7%E8%BF%90%E8%90%A5/1.htm">用户运营</a> <div>一、AI产品经理的定义与角色定位AI产品经理是人工智能技术与商业应用之间的核心桥梁,负责将复杂的AI技术转化为满足市场需求的产品。需同时具备技术理解力、商业洞察力和用户思维,既要参与算法选型与数据建模,又要定义产品功能与市场策略,是贯穿产品全生命周期的关键角色。与传统互联网产品经理相比,AI产品经理的独特之处在于:技术深度参与:需理解机器学习、自然语言处理(NLP)、计算机视觉等技术原理,并参与数</div> </li> <li><a href="/article/1902406283676413952.htm" title="用 Vue 3.5 TypeScript 重新开发3年前甘特图的核心组件" target="_blank">用 Vue 3.5 TypeScript 重新开发3年前甘特图的核心组件</a> <span class="text-muted">云烟,不再年轻</span> <a class="tag" taget="_blank" href="/search/Vue/1.htm">Vue</a><a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E7%94%98%E7%89%B9%E5%9B%BE/1.htm">甘特图</a> <div>回顾3年前曾经用Vue2.0开发了一个甘特图组件,如今3年过去了,计划使用Vue3.5TypeScript把组件重新开发,有机会的话再开发一个React版本。关于之前的组件以前文章Vue2.0甘特图组件下面录屏是是用Vue3.5TypeScript开发的目前进展,不再使用Vue2里用过的snapsvg-cjs库,主要是对TypeScript支持的不太好,使用SVG.js库代替snapsvg-cjs</div> </li> <li><a href="/article/1902405653247356928.htm" title="【图像处理基石】什么是HDR图片?" target="_blank">【图像处理基石】什么是HDR图片?</a> <span class="text-muted">AndrewHZ</span> <a class="tag" taget="_blank" href="/search/AI%E7%AE%97%E6%B3%95%E5%B7%A5%E7%A8%8B%E5%B8%88%E9%9D%A2%E8%AF%95%E6%8C%87%E5%8C%97/1.htm">AI算法工程师面试指北</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86%E5%9F%BA%E7%9F%B3/1.htm">图像处理基石</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86/1.htm">图像处理</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/HDR/1.htm">HDR</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%8A%A8%E6%80%81%E8%8C%83%E5%9B%B4/1.htm">高动态范围</a><a class="tag" taget="_blank" href="/search/%E5%8C%85%E5%9B%B4%E6%9B%9D%E5%85%89/1.htm">包围曝光</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a> <div>1.什么是HDR图片?HDR(高动态范围图像,HighDynamicRange)是一种通过技术手段扩展照片明暗细节的成像方式。以下是关于HDR的详细说明:核心原理动态范围:指图像中最亮和最暗区域之间的亮度差。人眼能感知的动态范围远高于普通相机,HDR通过合成多张不同曝光的照片(如欠曝、正常、过曝),平衡高光和阴影细节。HDR的优势保留细节:避免强光下过曝(如天空发白)或阴影中欠曝(如暗部死黑)。增</div> </li> <li><a href="/article/1902404770300227584.htm" title="ubuntu为pycharm添加系统快捷启动图标" target="_blank">ubuntu为pycharm添加系统快捷启动图标</a> <span class="text-muted">金大大诶</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a> <div>一、首先,在桌面创建一个文件:pycharm.desktop二、编辑文件,添加以下内容:(Exec是sh文件位置,icon是图标文件位置)[DesktopEntry]Version=1.0Type=ApplicationName=PycharmIcon=/home/du/Documents/pycharm-community-2017.3.3/bin/pycharm.pngExec=/home/d</div> </li> <li><a href="/article/1902404770728046592.htm" title="C语言中的函数" target="_blank">C语言中的函数</a> <span class="text-muted">NaZiMeKiY</span> <a class="tag" taget="_blank" href="/search/C%2FC%2B%2B/1.htm">C/C++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>一.函数:1.函数的概念:函数就是程序中独立的功能2.函数的使用场景:我们需要反复书写的代码,但是又不确定什么时候会用到二.函数的定义和调用:①:函数的结构返回值类型函数名(形参1,形参2,...,形参n){函数体;return返回值;}②:举例:#includevoidstudy(){printf("准备开始学习\n");printf("打开b站\n");printf("打开自己想要学习的课程\</div> </li> <li><a href="/article/1902404771805982720.htm" title="错排(数学层面)" target="_blank">错排(数学层面)</a> <span class="text-muted">想做后端的小C</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%A6/1.htm">数学</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>错排,即对于n个物品,每个物品有一个对应的位置,但是在排列时将他们全部错开放置,并计算有n个物体时,错排共有几种排列可能假设位置标号为a~z对于选定的A物体,将它放到b位置排列的第一种可能,B物体放到a位置剩下的物体排列时的总可能次数为f(n−2)f(n-2)f(n−2)排列的第二种可能,B物体放到除a、b以外的位置此时,可以把B物体当成原本应该放到a位置,但是此时要把除b位置以外的n-1个位置错</div> </li> <li><a href="/article/1902404266467848192.htm" title="单片机中断系统" target="_blank">单片机中断系统</a> <span class="text-muted">C_Xurn</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a> <div>前言:中断系统是单片机非常重要的组成部分,是为了使单片机能够对外部或者内部随机发生的事件实时处理而设置的。一:单片机的概念一个高速主机和一个低俗外设连接时,效率极低,低俗外设工作时无端大量占用CPU时间。一个高速主机和多个低速外设连接时,高速主机无法进行多任务并行处理。此时需引入“中断”。CPU在处理某一事件A时,另一事件B发出请求(中断请求);CPU暂时中断当前的工作,转去处理事件B(中断响应和</div> </li> <li><a href="/article/1902403636709879808.htm" title="普通鼠标的500连击的工具来了!!!" target="_blank">普通鼠标的500连击的工具来了!!!</a> <span class="text-muted">2501_90713682</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%A4%96%E8%AE%BE/1.htm">计算机外设</a> <div>今天介绍的这款软件叫:鼠标录制器,是一款大小只有54K的鼠标连点器,软件是绿色单文件版。抢票,拍牌,摇号都能用上。文末有分享链接在使用先我们先设置快捷键,这样我们在录制和停止录制的时候会更方便。软件使用很简单,首先是录制,点击【录制启停】或者按上面设置的快捷键,然后软件就开始录制。录制完成后在【名称】处,我们可以对此次的录制命个名,这样方便我们下次使用。我们还可以设置播放次数,然后点【播放】即可。</div> </li> <li><a href="/article/1902403007077740544.htm" title="小蓝的图书馆" target="_blank">小蓝的图书馆</a> <span class="text-muted">琴声码语</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%93%88%E5%B8%8C%E8%A1%A8/1.htm">哈希表</a><a class="tag" taget="_blank" href="/search/unordered_map/1.htm">unordered_map</a> <div>问题描述小蓝是一个热爱阅读的年轻人,他有一个小型图书馆。为了能够管理他的书籍库存,他需要一个程序来记录图书的信息并执行两种操作:添加图书add和查找作者find。初始小蓝没有书,给出n个操作。add操作给出两个字符串bookname,author,表示添加的图书图书名和作者;find操作给出一个字符串author,你需要输出小蓝的图书馆里这个author有多少本图书。输入格式第一行一个整数n,表示</div> </li> <li><a href="/article/1902402880678195200.htm" title="Linux系统下基于mplayer媒体播放器源码" target="_blank">Linux系统下基于mplayer媒体播放器源码</a> <span class="text-muted">落幕</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>主函数:main.c#include"public.h"#include"serial.h"musicfile_t*pmusic;//记录正在播放哪一首intmain(void){structlist_headphead;INIT_LIST_HEAD(&phead);mkfifo("/tmp/myfifo",0777);creat_musiclist(&phead);pid_tpid1;pid1=</div> </li> <li><a href="/article/1902401369898283008.htm" title="Canary Capital 向 SEC 递交首个 SUI ETF 申请文件" target="_blank">Canary Capital 向 SEC 递交首个 SUI ETF 申请文件</a> <span class="text-muted">Sui_Network</span> <a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6/1.htm">智能合约</a><a class="tag" taget="_blank" href="/search/ETF/1.htm">ETF</a> <div>随着对Sui这一L1区块链的机构兴趣不断增长,其生态正在加速迈向大规模采用。作为一项重大里程碑,CanaryCapital已向美国证券交易委员会(SEC)提交注册申请,拟推出首支基于SUI的交易所交易基金(ExchangeTradedFund,ETF)。SEC已正式受理该申请,这是ETF获批的关键初期步骤,一旦获得批准,该基金将能够在美国公开交易所上市交易。该ETF计划以传统基金产品的形式,为机构</div> </li> <li><a href="/article/1902399858262732800.htm" title="记录学习的第七天" target="_blank">记录学习的第七天</a> <span class="text-muted">xiufeia</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>还是老规矩,力扣的每日一题这道题我的思路是有了,不过在实现思路的时候遇到很多问题我首先也是想到了用一个哈希表之类的把出现次数最多的元素依次记录下来,然后再进行分配,不过由于我的STL不太熟练,所以我用的方法存在问题我的思路与题解的思路存在最大的差异就是,题解是根据每一行来存的,而我想的是每一列进行存元素。接着写了两道滑动窗口的题。滑动窗口需要注意的就是外循环扩展右指引,内循环扩展左指引,然后进行出</div> </li> <li><a href="/article/1902399858740883456.htm" title="知识库中的知识如何进行分类和标签管理?" target="_blank">知识库中的知识如何进行分类和标签管理?</a> <span class="text-muted">自不量力的A同学</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>知识库中的知识如何进行分类和标签管理?基于主题分类明确主题层级:首先确定主要的知识主题领域,如在一个企业知识库中,可以分为“人力资源”“市场营销”“技术研发”等大主题。然后在每个大主题下细分小主题,例如在“人力资源”主题下可以有“招聘”“培训”“绩效考核”等子主题。这样的层级分类有助于用户快速定位到自己需要的知识领域。参考行业标准和最佳实践:按照行业内公认的分类标准来划分知识。以医学知识库为例,可</div> </li> <li><a href="/article/1902399605778214912.htm" title="软件设计师之树与二叉树:非线性数据结构的深度探索" target="_blank">软件设计师之树与二叉树:非线性数据结构的深度探索</a> <span class="text-muted">一杯年华@编程空间</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E8%80%83%E4%B8%AD%E7%BA%A7/1.htm">软考中级</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>软件设计师之树与二叉树:非线性数据结构的深度探索在软件开发领域,数据结构是程序设计的核心基础,其中树和二叉树作为重要的非线性数据结构,在众多场景中都有着广泛应用。我写这篇博客,就是希望和大家一起学习进步,深入解析树和二叉树的相关知识,用通俗易懂的语言结合图表和Java代码示例进行讲解,帮助大家更好地掌握这些内容。一、树的定义与基本概念树的定义树是由n(n≥0)个结点组成的有限集合。当n=0时,为空</div> </li> <li><a href="/article/1902399101849366528.htm" title="大模型相关网站整理" target="_blank">大模型相关网站整理</a> <span class="text-muted">gorgor在码农</span> <a class="tag" taget="_blank" href="/search/AI%E5%AE%9E%E6%88%98/1.htm">AI实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>目录一:大模型开发网站1.开源模型平台2.私有化部署大模型3.LangChain中文网4.LangChain4j5.通过标准的OpenAIAPI格式访问所有的大模型二:国内AI大模型应用盘点聊天1、阿里云--通义千问2、科大讯飞--星火大模型园3、百度--文心一言4、字节跳动豆包5、智谱华章--智谱清言6、华为云园--盘古7、百川智能--百小应8、腾讯--腾讯元宝9、商汤--商量10、MiniMa</div> </li> <li><a href="/article/1902398849809444864.htm" title="清晰易懂的Java8安装教程" target="_blank">清晰易懂的Java8安装教程</a> <span class="text-muted">Tee xm</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>小白也能看懂的Java8安装教程(JDK和JRE分目录安装)本教程将手把手教你如何在Windows系统上安装Java8(JDK1.8),并将JDK和JRE安装到不同的目录中,同时提供国内Java8下载源和方法。即使你是编程小白,也能轻松学会!一、准备工作操作系统:Windows10或更高版本。下载工具:一个浏览器(如Chrome、Edge)。存储空间:确保你的电脑有至少500MB的可用空间。二、下</div> </li> <li><a href="/article/106.htm" title="书其实只有三类" target="_blank">书其实只有三类</a> <span class="text-muted">西蜀石兰</span> <a class="tag" taget="_blank" href="/search/%E7%B1%BB/1.htm">类</a> <div>一个人一辈子其实只读三种书,知识类、技能类、修心类。 知识类的书可以让我们活得更明白。类似十万个为什么这种书籍,我一直不太乐意去读,因为单纯的知识是没法做事的,就像知道地球转速是多少一样(我肯定不知道),这种所谓的知识,除非用到,普通人掌握了完全是一种负担,维基百科能找到的东西,为什么去记忆? 知识类的书,每个方面都涉及些,让自己显得不那么没文化,仅此而已。社会认为的学识渊博,肯定不是站在</div> </li> <li><a href="/article/233.htm" title="《TCP/IP 详解,卷1:协议》学习笔记、吐槽及其他" target="_blank">《TCP/IP 详解,卷1:协议》学习笔记、吐槽及其他</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/tcp/1.htm">tcp</a> <div>《TCP/IP 详解,卷1:协议》是经典,但不适合初学者。它更像是一本字典,适合学过网络的人温习和查阅一些记不清的概念。 这本书,我看的版本是机械工业出版社、范建华等译的。这本书在我看来,翻译得一般,甚至有明显的错误。如果英文熟练,看原版更好: http://pcvr.nl/tcpip/ 下面是我的一些笔记,包括我看书时有疑问的地方,也有对该书的吐槽,有不对的地方请指正: 1.</div> </li> <li><a href="/article/360.htm" title="Linux—— 静态IP跟动态IP设置" target="_blank">Linux—— 静态IP跟动态IP设置</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/IP/1.htm">IP</a> <div>一.在终端输入 vi /etc/sysconfig/network-scripts/ifcfg-eth0 静态ip模板如下: DEVICE="eth0" #网卡名称 BOOTPROTO="static" #静态IP(必须) HWADDR="00:0C:29:B5:65:CA" #网卡mac地址 IPV6INIT=&q</div> </li> <li><a href="/article/487.htm" title="Informatica update strategy transformation" target="_blank">Informatica update strategy transformation</a> <span class="text-muted">18289753290</span> <div>更新策略组件: 标记你的数据进入target里面做什么操作,一般会和lookup配合使用,有时候用0,1,1代表 forward  rejected rows被选中,rejected row是输出在错误文件里,不想看到reject输出,将错误输出到文件,因为有时候数据库原因导致某些column不能update,reject就会output到错误文件里面供查看,在workflow的</div> </li> <li><a href="/article/614.htm" title="使用Scrapy时出现虽然队列里有很多Request但是却不下载,造成假死状态" target="_blank">使用Scrapy时出现虽然队列里有很多Request但是却不下载,造成假死状态</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/request/1.htm">request</a> <div>现象就是: 程序运行一段时间,可能是几十分钟或者几个小时,然后后台日志里面就不出现下载页面的信息,一直显示上一分钟抓取了0个网页的信息。 刚开始已经猜到是某些下载线程没有正常执行回调方法引起程序一直以为线程还未下载完成,但是水平有限研究源码未果。 经过不停的google终于发现一个有价值的信息,是给twisted提出的一个bugfix 连接地址如下http://twistedmatrix.</div> </li> <li><a href="/article/741.htm" title="利用预测分析技术来进行辅助医疗" target="_blank">利用预测分析技术来进行辅助医疗</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E5%8C%BB%E7%96%97/1.htm">医疗</a> <div>2014年,克利夫兰诊所(Cleveland Clinic)想要更有效地控制其手术中心做膝关节置换手术的费用。整个系统每年大约进行2600例此类手术,所以,即使降低很少一部分成本,都可以为诊 所和病人节约大量的资金。为了找到适合的解决方案,供应商将视野投向了预测分析技术和工具,但其分析团队还必须花时间向医生解释基于数据的治疗方案意味着 什么。  克利夫兰诊所负责企业信息管理和分析的医疗</div> </li> <li><a href="/article/868.htm" title="java 线程(一):基础篇" target="_blank">java 线程(一):基础篇</a> <span class="text-muted">DavidIsOK</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B/1.htm">线程</a> <div>                                                        &nbs</div> </li> <li><a href="/article/995.htm" title="Tomcat服务器框架之Servlet开发分析" target="_blank">Tomcat服务器框架之Servlet开发分析</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a> <div>最近使用Tomcat做web服务器,使用Servlet技术做开发时,对Tomcat的框架的简易分析: 疑问: 为什么我们在继承HttpServlet类之后,覆盖doGet(HttpServletRequest req, HttpServetResponse rep)方法后,该方法会自动被Tomcat服务器调用,doGet方法的参数有谁传递过来?怎样传递? 分析之我见: doGet方法的</div> </li> <li><a href="/article/1122.htm" title="揭秘玖富的粉丝营销之谜 与小米粉丝社区类似" target="_blank">揭秘玖富的粉丝营销之谜 与小米粉丝社区类似</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/%E6%8F%AD%E7%A7%98%E7%8E%96%E5%AF%8C%E7%9A%84%E7%B2%89%E4%B8%9D%E8%90%A5%E9%94%80%E4%B9%8B%E8%B0%9C/1.htm">揭秘玖富的粉丝营销之谜</a> <div>玖富旗下悟空理财凭借着一个微信公众号上线当天成交量即破百万,第七天成交量单日破了1000万;第23天时,累计成交量超1个亿……至今成立不到10个月,粉丝已经超过500万,月交易额突破10亿,而玖富平台目前的总用户数也已经超过了1800万,位居P2P平台第一位。很多互联网金融创业者慕名前来学习效仿,但是却鲜有成功者,玖富的粉丝营销对外至今仍然是个谜。     近日,一直坚持微信粉丝营销</div> </li> <li><a href="/article/1249.htm" title="Java web的会话跟踪技术" target="_blank">Java web的会话跟踪技术</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/url%E4%BC%9A%E8%AF%9D/1.htm">url会话</a><a class="tag" taget="_blank" href="/search/Cookie%E4%BC%9A%E8%AF%9D/1.htm">Cookie会话</a><a class="tag" taget="_blank" href="/search/Seession%E4%BC%9A%E8%AF%9D/1.htm">Seession会话</a><a class="tag" taget="_blank" href="/search/Java+Web/1.htm">Java Web</a><a class="tag" taget="_blank" href="/search/%E9%9A%90%E8%97%8F%E5%9F%9F%E4%BC%9A%E8%AF%9D/1.htm">隐藏域会话</a> <div>会话跟踪主要是用在用户页面点击不同的页面时,需要用到的技术点   会话:多次请求与响应的过程     1,url地址传递参数,实现页面跟踪技术          格式:传一个参数的 url?名=值     传两个参数的 url?名=值 &名=值   关键代码</div> </li> <li><a href="/article/1376.htm" title="web.xml之Servlet配置" target="_blank">web.xml之Servlet配置</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/Servlet%E9%85%8D%E7%BD%AE/1.htm">Servlet配置</a> <div>定义: <servlet> <servlet-name>myservlet</servlet-name> <servlet-class>com.myapp.controller.MyFirstServlet</servlet-class> <init-param> <param-name></div> </li> <li><a href="/article/1503.htm" title="利用svnsync实现SVN同步备份" target="_blank">利用svnsync实现SVN同步备份</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/SVN/1.htm">SVN</a><a class="tag" taget="_blank" href="/search/%E5%90%8C%E6%AD%A5/1.htm">同步</a><a class="tag" taget="_blank" href="/search/E000022/1.htm">E000022</a><a class="tag" taget="_blank" href="/search/svnsync/1.htm">svnsync</a><a class="tag" taget="_blank" href="/search/%E9%95%9C%E5%83%8F/1.htm">镜像</a> <div>1. 在备份SVN服务器上建立版本库    svnadmin create test 2. 创建pre-revprop-change文件     cd test/hooks/     cp pre-revprop-change.tmpl pre-revprop-change 3. 修改pre-revprop-</div> </li> <li><a href="/article/1630.htm" title="【分布式数据一致性三】MongoDB读写一致性" target="_blank">【分布式数据一致性三】MongoDB读写一致性</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>本系列文章结合MongoDB,探讨分布式数据库的数据一致性,这个系列文章包括: 数据一致性概述与CAP 最终一致性(Eventually Consistency) 网络分裂(Network Partition)问题 多数据中心(Multi Data Center) 多个写者(Multi Writer)最终一致性 一致性图表(Consistency Chart) 数据</div> </li> <li><a href="/article/1757.htm" title="Anychart图表组件-Flash图转IMG普通图的方法" target="_blank">Anychart图表组件-Flash图转IMG普通图的方法</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/Flash/1.htm">Flash</a> <div>问题背景:项目使用的是Anychart图表组件,渲染出来的图是Flash的,往往一个页面有时候会有多个flash图,而需求是让我们做一个打印预览和打印功能,让多个Flash图在一个页面上打印出来。   那么我们打印预览的思路是获取页面的body元素,然后在打印预览界面通过$("body").append(html)的形式显示预览效果,结果让人大跌眼镜:Flash是</div> </li> <li><a href="/article/1884.htm" title="Window 80端口被占用 WHY?" target="_blank">Window 80端口被占用 WHY?</a> <span class="text-muted">bozch</span> <a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3%E5%8D%A0%E7%94%A8/1.htm">端口占用</a><a class="tag" taget="_blank" href="/search/window/1.htm">window</a> <div>平时在启动一些可能使用80端口软件的时候,会提示80端口已经被其他软件占用,那一般又会有那些软件占用这些端口呢?    下面坐下总结:         1、web服务器是最经常见的占用80端口的,例如:tomcat , apache  , IIS , Php等等;         2</div> </li> <li><a href="/article/2011.htm" title="编程之美-数组的最大值和最小值-分治法(两种形式)" target="_blank">编程之美-数组的最大值和最小值-分治法(两种形式)</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> import java.util.Arrays; public class MinMaxInArray { /** * 编程之美 数组的最大值和最小值 分治法 * 两种形式 */ public static void main(String[] args) { int[] t={11,23,34,4,6,7,8,1,2,23}; int[] </div> </li> <li><a href="/article/2138.htm" title="Perl正则表达式" target="_blank">Perl正则表达式</a> <span class="text-muted">chenbowen00</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/perl/1.htm">perl</a> <div>首先我们应该知道 Perl 程序中,正则表达式有三种存在形式,他们分别是: 匹配:m/<regexp>;/ (还可以简写为 /<regexp>;/ ,略去 m) 替换:s/<pattern>;/<replacement>;/ 转化:tr/<pattern>;/<replacemnt>;</div> </li> <li><a href="/article/2265.htm" title="[宇宙与天文]行星议会是否具有本行星大气层以外的权力呢?" target="_blank">[宇宙与天文]行星议会是否具有本行星大气层以外的权力呢?</a> <span class="text-muted">comsci</span> <div>       举个例子: 地球,地球上由200多个国家选举出一个代表地球联合体的议会,那么现在地球联合体遇到一个问题,地球这颗星球上面的矿产资源快要采掘完了....那么地球议会全体投票,一致通过一项带有法律性质的议案,既批准地球上的国家用各种技术手段在地球以外开采矿产资源和其它资源........    &</div> </li> <li><a href="/article/2392.htm" title="Oracle Profile 使用详解" target="_blank">Oracle Profile 使用详解</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/profile/1.htm">profile</a><a class="tag" taget="_blank" href="/search/%E8%B5%84%E6%BA%90%E9%99%90%E5%88%B6/1.htm">资源限制</a> <div>Oracle Profile 使用详解 转 一、目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。 二、条件: 创建profile必须要有CREATE PROFIL</div> </li> <li><a href="/article/2519.htm" title="How HipChat Stores And Indexes Billions Of Messages Using ElasticSearch & Redis" target="_blank">How HipChat Stores And Indexes Billions Of Messages Using ElasticSearch & Redis</a> <span class="text-muted">dengkane</span> <a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/Lucene/1.htm">Lucene</a> <div>This article is from an interview with Zuhaib Siddique, a production engineer at HipChat, makers of group chat and IM for teams. HipChat started in an unusual space, one you might not </div> </li> <li><a href="/article/2646.htm" title="循环小示例,菲波拉契序列,循环解一元二次方程以及switch示例程序" target="_blank">循环小示例,菲波拉契序列,循环解一元二次方程以及switch示例程序</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div># include <stdio.h> int main(void) { int n; int i; int f1, f2, f3; f1 = 1; f2 = 1; printf("请输入您需要求的想的序列:"); scanf("%d", &n); for (i=3; i<n; i</div> </li> <li><a href="/article/2773.htm" title="macbook的lamp环境" target="_blank">macbook的lamp环境</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/lamp/1.htm">lamp</a> <div>  sudo vim /etc/apache2/httpd.conf   /Library/WebServer/Documents 是默认的网站根目录   重启Mac上的Apache服务   这个命令很早以前就查过了,但是每次使用的时候还是要在网上查: 停止服务:sudo /usr/sbin/apachectl stop 开启服务:s</div> </li> <li><a href="/article/2900.htm" title="java ArrayList源码 下" target="_blank">java ArrayList源码 下</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/ArrayList%E6%BA%90%E7%A0%81/1.htm">ArrayList源码</a> <div>版本 jdk-7u71-windows-x64   JavaSE7 ArrayList源码上:http://flyouwith.iteye.com/blog/2166890     /** * 从这个列表中移除所有c中包含元素 */ public boolean removeAll(Collection<?> c) {</div> </li> <li><a href="/article/3027.htm" title="Spring Security(08)——intercept-url配置" target="_blank">Spring Security(08)——intercept-url配置</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/intercept-url/1.htm">intercept-url</a><a class="tag" taget="_blank" href="/search/%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90/1.htm">访问权限</a><a class="tag" taget="_blank" href="/search/%E8%AE%BF%E9%97%AE%E5%8D%8F%E8%AE%AE/1.htm">访问协议</a><a class="tag" taget="_blank" href="/search/%E8%AF%B7%E6%B1%82%E6%96%B9%E6%B3%95/1.htm">请求方法</a> <div>intercept-url配置 目录 1.1     指定拦截的url 1.2     指定访问权限 1.3     指定访问协议 1.4     指定请求方法   1.1   &n</div> </li> <li><a href="/article/3154.htm" title="Linux环境下的oracle安装" target="_blank">Linux环境下的oracle安装</a> <span class="text-muted">jayung</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>linux系统下的oracle安装 本文档是Linux(redhat6.x、centos6.x、redhat7.x) 64位操作系统安装Oracle 11g(Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production),本文基于各种网络资料精心整理而成,共享给有需要的朋友。如有问题可联系:QQ:52-7</div> </li> <li><a href="/article/3281.htm" title="hotspot虚拟机" target="_blank">hotspot虚拟机</a> <span class="text-muted">leichenlei</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">虚拟机</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E6%A1%A3/1.htm">文档</a> <div>JVM参数  http://docs.oracle.com/javase/6/docs/technotes/guides/vm/index.html   JVM工具 http://docs.oracle.com/javase/6/docs/technotes/tools/index.html   JVM垃圾回收 http://www.oracle.com</div> </li> <li><a href="/article/3408.htm" title="读《Node.js项目实践:构建可扩展的Web应用》 ——引编程慢慢变成系统化的“砌砖活”" target="_blank">读《Node.js项目实践:构建可扩展的Web应用》 ——引编程慢慢变成系统化的“砌砖活”</a> <span class="text-muted">noaighost</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>读《Node.js项目实践:构建可扩展的Web应用》 ——引编程慢慢变成系统化的“砌砖活” 眼里的Node.JS 初初接触node是一年前的事,那时候年少不更事。还在纠结什么语言可以编写出牛逼的程序,想必每个码农都会经历这个月经性的问题:微信用什么语言写的?facebook为什么推荐系统这么智能,用什么语言写的?dota2的外挂这么牛逼,用什么语言写的?……用什么语言写这句话,困扰人也是阻碍</div> </li> <li><a href="/article/3535.htm" title="快速开发Android应用" target="_blank">快速开发Android应用</a> <span class="text-muted">rensanning</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>Android应用开发过程中,经常会遇到很多常见的类似问题,解决这些问题需要花时间,其实很多问题已经有了成熟的解决方案,比如很多第三方的开源lib,参考 Android Libraries 和 Android UI/UX Libraries。 编码越少,Bug越少,效率自然会高。 但可能由于 根本没听说过、听说过但没用过、特殊原因不能用、自己已经有了解决方案等等原因,这些成熟的解决</div> </li> <li><a href="/article/3662.htm" title="理解Java中的弱引用" target="_blank">理解Java中的弱引用</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div> 不久之前,我 面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给我介绍一些Java中得弱引用吗?”,如果面试者这样说,“嗯,是不是垃圾回收有关的?”,我就会基本满意了,我并不期待回答是一篇诘究本末的论文描述。   然而事与愿违,我很吃惊的发现,在将近20多个有着平均5年开发经验和高学历背景的应聘者中,居然只有两个人知道弱引用的存在,但是在这两个人之中只有一个人真正了</div> </li> <li><a href="/article/3789.htm" title="关于<c:out value=""/>标签输出html标签" target="_blank">关于<c:out value=""/>标签输出html标签</a> <span class="text-muted">xshdch</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a> <div>http://back-888888.iteye.com/blog/1181202 关于<c:out value=""/>标签的使用,其中有一个属性是escapeXml默认是true(将html标签当做转移字符,直接显示不在浏览器上面进行解析),当设置escapeXml属性值为false的时候就是不过滤xml,这样就能在浏览器上解析html标签, &nb</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>