React的入门操作

一.编写第一个react应用程序

1.全局安装create-react-app

$ npm install -g create-react-app

如果不想全局安装,可以直接使用npx

$ npx create-react-app your-app	也可以实现相同的效果

2.创建一个项目

$ create-react-app your-app 注意命名方式

Creating a new React app in /dir/your-app.

Installing packages. This might take a couple of minutes. 安装过程较慢,可以推荐使用yarn
Installing react, react-dom, and react-scripts... 

这需要等待一段时间,这个过程实际上会安装三个东西

  • react: react的顶级库
  • react-dom: 因为react有很多的运行环境,比如app端的react-native, 我们要在web上运行就使用react-dom
  • react-scripts: 包含运行和打包react应用程序的所有脚本及配置

出现下面的界面,表示创建项目成功:

Success! Created your-app at /dir/your-app
Inside that directory, you can run several commands:

  npm start
    Starts the development server.

  npm run build
    Bundles the app into static files for production.

  npm test
    Starts the test runner.

  npm run eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

  cd your-app
  npm start

Happy hacking!

根据上面的提示,通过cd your-app命令进入目录并运行npm start即可运行项目。

生成项目的目录结构如下:

├── README.md							使用方法的文档
├── node_modules					所有的依赖安装的目录
├── yarn-lock.json			锁定安装时的包的版本号,保证团队的依赖能保证一致。
├── package.json					
├── public								静态公共目录
└── src										开发用的源代码目录

常见问题:

  • npm安装失败

    • 切换为npm镜像为淘宝镜像

    • 使用yarn,如果本来使用yarn还要失败,还得把yarn的源切换到国内

      yarn config set registry https://registry.npm.taobao.org // 配置yarn镜像源
      
      yarn config list // 查看yarn 镜像列表
      
    • 如果还没有办法解决,请删除node_modules及yarn-lock.json然后重新执行cnpm install命令

    • 再不能解决就删除node_modules及yarn-lock.json的同时清除npm缓存npm cache clean --force之后再执行npm install命令

    • 环境变量问题

    • react-scripts 版本过高问题 ( 降低版本 [email protected]

二.元素与组件
react开发需要引入多个依赖文件:react.js、react-dom.js,分别又有开发版本和生产版本,create-react-app里已经帮我们把这些东西都安装好了。把通过CRA创建的工程目录下的src目录清空,然后在里面重新创建一个index.js. 写入以下代码:

// 从 react 的包当中引入了 React。只要你要写 React.js 组件就必须引入React, 因为react里有一种语法叫JSX,稍后会讲到JSX,要写JSX,就必须引入React
import React from 'react'
// ReactDOM 可以帮助我们把 React 组件渲染到页面上去,没有其它的作用了。它是从 react-dom 中引入的,而不是从 react 引入。
import ReactDOM from 'react-dom'

// ReactDOM里有一个render方法,功能就是把组件渲染并且构造 DOM 树,然后插入到页面上某个特定的元素上
ReactDOM.render(
// 这里就比较奇怪了,它并不是一个字符串,看起来像是纯 HTML 代码写在 JavaScript 代码里面。语法错误吗?这并不是合法的 JavaScript 代码, “在 JavaScript 写的标签的”语法叫 JSX- JavaScript XML。
  

欢迎进入React的世界

, // 渲染到哪里 document.getElementById('root') )

三.函数式组件( 无状态组件 PureComponent)

由于元素没有办法传递参数,所以我们就需要把之前定义的变量改为一个方法,让这个方法去return一个元素:

import React from 'react'
import ReactDOM from 'react-dom'

// 特别注意这里的写法,如果要在JSX里写js表达式(只能是表达式,不能流程控制),就需要加 {},包括注释也是一样,并且可以多层嵌套
const app = (props) => 

欢迎进入{props.name}的世界

ReactDOM.render( app({ name: 'react' }), document.getElementById('root') )

这里我们定义的方法实际上也是react定义组件的第一种方式-定义函数式组件,这也是无状态组件。但是这种写法不符合react的jsx的风格,更好的方式是使用以下方式进行改造

import React from 'react'
import ReactDOM from 'react-dom'

const App = (props) => 

欢迎进入{props.name}的世界

ReactDOM.render( // React组件的调用方式 , document.getElementById('root') )

这样一个完整的函数式组件就定义好了。但要注意!注意!注意!组件名必须大写,否则报错。

四.class组件
ES6的加入让JavaScript直接支持使用class来定义一个类,react的第二种创建组件的方式就是使用的类的继承,ES6 class是目前官方推荐的使用方式,它使用了ES6标准语法来构建,看以下代码:

import React from 'react'
import ReactDOM from 'react-dom'

class App extends React.Component {
  render () {
    return (
      // 注意这里得用this.props.name, 必须用this.props
      

欢迎进入{this.props.name}的世界

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

运行结果和之前完全一样,因为JS里没有真正的class,这个class只是一个语法糖, 但二者的运行机制底层运行机制不一样。

  • 函数式组件是直接调用, 在前面的代码里已经有看到

  • es6 class组件其实就是一个构造器,每次使用组件都相当于在实例化组件,像这样:

    import React from 'react'
    import ReactDOM from 'react-dom'
    
    class App extends React.Component {
      render () {
        return (
      		

    欢迎进入{this.props.name}的世界

    ) } } const app = new App({ name: 'react' }).render() ReactDOM.render( app, document.getElementById('root') )

五.组件的组合、嵌套
将一个组件渲染到某一个节点里的时候,会将这个节点里原有内容覆盖

组件嵌套的方式就是将子组件写入到父组件的模板中去,且react没有Vue中的内容分发机制(slot),所以我们在一个组件的模板中只能看到父子关系

// 从 react 的包当中引入了 React 和 React.js 的组件父类 Component
// 还引入了一个React.js里的一种特殊的组件 Fragment
import React, { Component, Fragment } from 'react'
import ReactDOM from 'react-dom'

class Title extends Component {
  render () {
    return (
      

欢迎进入React的世界

) } } class Content extends Component { render () { return (

React.js是一个构建UI的库

) } } /** 由于每个React组件只能有一个根节点,所以要渲染多个组件的时候,需要在最外层包一个容器,如果使用div, 会生成多余的一层dom class App extends Component { render () { return (
<Content /> </div> ) } } **/ // 如果不想生成多余的一层dom可以使用React提供的Fragment组件在最外层进行包裹 class App extends Component { render () { return ( <Fragment> <Title /> <Content /> </Fragment> ) } } ReactDOM.render( <App/>, document.getElementById('root') ) </code></pre> <p>#JSX 原理</p> <p>要明白JSX的原理,需要先明白如何用 JavaScript 对象来表现一个 DOM 元素的结构?</p> <p>看下面的DOM结构</p> <pre><code class="prism language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">'</span>app<span class="token punctuation">'</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">'</span>appRoot<span class="token punctuation">'</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">'</span>title<span class="token punctuation">'</span></span><span class="token punctuation">></span></span>欢迎进入React的世界<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span> React.js 是一个帮助你构建页面 UI 的库 <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span> </code></pre> <p>上面这个 HTML 所有的信息我们都可以用 JavaScript 对象来表示:</p> <pre><code class="prism language-js"><span class="token punctuation">{ </span> tag<span class="token punctuation">:</span> <span class="token string">'div'</span><span class="token punctuation">,</span> attrs<span class="token punctuation">:</span> <span class="token punctuation">{ </span> className<span class="token punctuation">:</span> <span class="token string">'app'</span><span class="token punctuation">,</span> id<span class="token punctuation">:</span> <span class="token string">'appRoot'</span><span class="token punctuation">}</span><span class="token punctuation">,</span> children<span class="token punctuation">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{ </span> tag<span class="token punctuation">:</span> <span class="token string">'h1'</span><span class="token punctuation">,</span> attrs<span class="token punctuation">:</span> <span class="token punctuation">{ </span> className<span class="token punctuation">:</span> <span class="token string">'title'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> children<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'欢迎进入React的世界'</span><span class="token punctuation">]</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{ </span> tag<span class="token punctuation">:</span> <span class="token string">'p'</span><span class="token punctuation">,</span> attrs<span class="token punctuation">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span> children<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'React.js 是一个构建页面 UI 的库'</span><span class="token punctuation">]</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span> </code></pre> <p>但是用 JavaScript 写起来太长了,结构看起来又不清晰,用 HTML 的方式写起来就方便很多了。</p> <p>于是 React.js 就把 JavaScript 的语法扩展了一下,让 JavaScript 语言能够支持这种直接在 JavaScript 代码里面编写类似 HTML 标签结构的语法,这样写起来就方便很多了。编译的过程会把类似 HTML 的 JSX 结构转换成 JavaScript 的对象结构。</p> <p>下面代码:</p> <pre><code class="prism language-jsx">import React from 'react' import ReactDOM from 'react-dom' class App extends React.Component { render () { return ( <div className='app' id='appRoot'> <h1 className='title'>欢迎进入React的世界</h1> <p> React.js 是一个构建页面 UI 的库 </p> </div> ) } } ReactDOM.render( <App />, document.getElementById('root') ) </code></pre> <p>编译之后将得到这样的代码:</p> <pre><code class="prism language-jsx">import React from 'react' import ReactDOM from 'react-dom' class App extends React.Component { render () { return ( React.createElement( "div", { className: 'app', id: 'appRoot' }, React.createElement( "h1", { className: 'title' }, "欢迎进入React的世界" ), React.createElement( "p", null, "React.js 是一个构建页面 UI 的库" ) ) ) } } ReactDOM.render( React.createElement(App), document.getElementById('root') ) </code></pre> <p><code>React.createElement</code> 会构建一个 JavaScript 对象来描述你 HTML 结构的信息,包括标签名、属性、还有子元素等, 语法为</p> <pre><code class="prism language-jsx">React.createElement( type, [props], [...children] ) </code></pre> <p>所谓的 JSX 其实就是 JavaScript 对象,所以使用 React 和 JSX 的时候一定要经过编译的过程:</p> <blockquote> <p>JSX —使用react构造组件,bable进行编译—> JavaScript对象 — <code>ReactDOM.render()</code>—>DOM元素 —>插入页面</p> </blockquote> <p>#组件中DOM样式</p> <p>一共有四种</p> <ul> <li>行内样式</li> </ul> <p>想给虚拟dom添加行内样式,需要使用表达式传入样式对象的方式来实现:</p> <pre><code class="prism language-jsx">// 注意这里的两个括号,第一个表示我们在要JSX里插入JS了,第二个是对象的括号 <p style={ {color:'red', fontSize:'14px'}}>Hello world</p> </code></pre> <p>行内样式需要写入一个样式对象,而这个样式对象的位置可以放在很多地方,例如<code>render</code>函数里、组件原型上、外链js文件中</p> <ul> <li>使用<code>class</code></li> </ul> <p>React推荐我们使用行内样式,因为React觉得每一个组件都是一个独立的整体</p> <p>其实我们大多数情况下还是大量的在为元素添加类名,但是需要注意的是,<code>class</code>需要写成<code>className</code>(因为毕竟是在写类js代码,会收到js规则的限制,而<code>class</code>是关键字)</p> <pre><code class="prism language-jsx"><p className="hello" style = {this.style}>Hello world</p> </code></pre> <ul> <li>不同的条件添加不同的样式</li> </ul> <p>有时候需要根据不同的条件添加不同的样式,比如:完成状态,完成是绿色,未完成是红色。那么这种情况下,我们推荐使用<strong>classname</strong>/classnames这个包:</p> <ul> <li>css-in-js ( 在js中写css )</li> </ul> <p><code>styled-components</code>是针对React写的一套css-in-js框架,简单来讲就是在js中写css。npm链接</p> <p>styled-components是一个第三方包,要安装</p> <p>#todoList</p> <p>组件化开发React todolist, 项目开发中的组件的基本目录结构基本上是这样的:</p> <blockquote> <p>/your-project</p> <ul> <li>src <ul> <li>…</li> <li>components <ul> <li>YourComponentOne <ul> <li>index.js/YourComponentOne.js</li> </ul> </li> <li>YourComponentTwo <ul> <li>index.js/YourComponentTwo.js</li> </ul> </li> <li>index.js 用于导出组件</li> </ul> </li> </ul> </li> </ul> </blockquote> <p>注意:一个组件只干一件事情 ,所以TodoList和TodoItem要做成两个组件,这样也方便于后期理解shouldComponentUpdate</p> <p><strong>六.组件的数据挂载方式</strong></p> <p>React中数据分为两个部分</p> <ol> <li>属性()</li> <li>状态<br> 经验: 频繁变化的就写成状态<br> Vue中数据只有状态这一种类型</li> </ol> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1305742910469214208"></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/1950193455162519552.htm" title="19.0-《超越感觉》-说服他人" target="_blank">19.0-《超越感觉》-说服他人</a> <span class="text-muted">SAM52</span> <div>Becausethoughtfuljudgmentsdeservetobeshared,andthewaytheyarepresentedcanstronglyinfluencethewayothersreacttothem.因为经过深思熟虑的判断值得分享,而这些判断的呈现方式会强烈影响其他人对它们的反应。Bylearningtheprinciplesofpersuasionandapplying</div> </li> <li><a href="/article/1950178478011772928.htm" title="全面解析:Spring Gateway如何优雅处理微服务的路由转发?" target="_blank">全面解析:Spring Gateway如何优雅处理微服务的路由转发?</a> <span class="text-muted">万猫学社</span> <a class="tag" taget="_blank" href="/search/gateway/1.htm">gateway</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>SpringGateway简介SpringGateway,这是一个基于Spring5、SpringBoot2和ProjectReactor的API网关。它旨在为微服务架构提供一个简单、有效的统一的API路由、限流、熔断等功能。在微服务的世界里,SpringGateway就像一个交通警察,负责指挥和引导各个微服务之间的交通。相较于其他的网关技术,比如Nginx、Zuul等,SpringGateway</div> </li> <li><a href="/article/1950169526440095744.htm" title="从零到一:打造基于GigaChat AI的艺术创作平台 | 笙囧同学的全栈开发实战" target="_blank">从零到一:打造基于GigaChat AI的艺术创作平台 | 笙囧同学的全栈开发实战</a> <span class="text-muted"></span> <div>作者简介:笙囧同学,中科院计算机大模型方向硕士,全栈开发爱好者联系方式:3251736703@qq.com各大平台账号:笙囧同学座右铭:偷懒是人生进步的阶梯前言在AI技术飞速发展的今天,如何将前沿的大模型技术与实际应用相结合,一直是我们开发者关注的焦点。今天,笙囧同学将带大家从零开始,构建一个基于GigaChatAI的艺术创作平台,实现React前端+Django后端的完整全栈解决方案。这不仅仅是</div> </li> <li><a href="/article/1950055310613868544.htm" title="Vue3组合API初体验" target="_blank">Vue3组合API初体验</a> <span class="text-muted">DTcode7</span> <a class="tag" taget="_blank" href="/search/Vue%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/1.htm">Vue实战指南</a><a class="tag" taget="_blank" href="/search/VUE/1.htm">VUE</a><a class="tag" taget="_blank" href="/search/HTML/1.htm">HTML</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/vue%E6%A1%86%E6%9E%B6/1.htm">vue框架</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Vue3组合API初体验基本概念与作用说明示例一:使用ref创建响应式数据示例二:使用reactive创建响应式对象示例三:使用computed计算属性示例四:使用watch监听数据变化示例五:使用provide/inject进行父子组件间通信功能使用思路与实际开发技巧1.何时使用ref与reactive?2.如何在组合式API中保持逻辑的清晰?3.如何处理异步操作?随着Vue3的发布,组合式AP</div> </li> <li><a href="/article/1949951567260086272.htm" title="第七篇 快速开始-序" target="_blank">第七篇 快速开始-序</a> <span class="text-muted">深圳都这么冷</span> <div>快速开始欢迎使用React文档!本页将向您介绍您每天会用到的80%的React概念。本章内容预告如何创建和嵌套组件如何添加标记和样式如何显示数据如何渲染条件表达式和列表表达式如何响应事件和更新屏幕如何在组件之间共享数据创建和嵌套组件React应用程序由组件组成。组件是UI(用户界面)的一部分,具有自己的逻辑和外观。组件可以小到一个按钮,也可以大到整个页面。React组件是返回标记的JavaScri</div> </li> <li><a href="/article/1949936521918345216.htm" title="maven指定子项目打包" target="_blank">maven指定子项目打包</a> <span class="text-muted"></span> <div>Maven多个mudule只编译、打包指定module在多module的maven项目中,如果每次打包整个工程显得有些冗余和笨重。例如A,B,P的继承关系为P|—–A|—–B即P包含A,B的module,每次打包P都会将A,B都打包。假如我只修改了A模块,那么每次都要将B都一块打包吗?当然不是,maven提供了自定义参数:-pl,--projectsBuildspecifiedreactorpro</div> </li> <li><a href="/article/1949935132882300928.htm" title="React组件中的this指向问题" target="_blank">React组件中的this指向问题</a> <span class="text-muted"></span> <div>在React组件中,函数定义方式影响this指向的核心原因是箭头函数与普通函数的作用域绑定规则不同,具体差异如下:1.普通函数(function定义)需要手动bind(this)的原因当用function在组件内定义方法时:classMyComponentextendsReact.Component{handleClick(){console.log(this);//若未绑定,此处this为und</div> </li> <li><a href="/article/1949861487262625792.htm" title="Rust 全栈应用框架 Dioxus:从前端到桌面再到 WASM 的统一开发体验" target="_blank">Rust 全栈应用框架 Dioxus:从前端到桌面再到 WASM 的统一开发体验</a> <span class="text-muted">掘金安东尼</span> <a class="tag" taget="_blank" href="/search/%E5%AD%97%E8%8A%82/1.htm">字节</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C/1.htm">阿里</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/wasm/1.htm">wasm</a> <div>如果你正在寻找一个能用Rust写前端、桌面应用、移动应用甚至WebAssembly的统一框架,Dioxus是目前生态中最具潜力的选择之一。为什么需要Dioxus?随着WebAssembly(WASM)与Rust的发展,越来越多开发者开始思考:Rust是否能做“全栈”?是否能有像React一样的组件模型?是否可以用Rust写桌面GUI,甚至Web前端?Dioxus正是这个愿景下的产物。它是一个受Re</div> </li> <li><a href="/article/1949740580871401472.htm" title="IntelliJ IDEA 高效开发指南:从基础操作到高级技巧" target="_blank">IntelliJ IDEA 高效开发指南:从基础操作到高级技巧</a> <span class="text-muted">zqmgx13291</span> <a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>一、IDEA概述与环境配置1.1IDEA的核心优势智能代码辅助:基于上下文的代码补全(Ctrl+Space)、方法参数提示、错误实时检测全栈开发支持:内置Java/Python/JavaScript等20+语言支持,框架集成(SpringBoot/Vue/React)工具链集成:版本控制(Git/SVN)、数据库(MySQL/PostgreSQL)、容器(Docker/K8s)一站式开发性能优化:</div> </li> <li><a href="/article/1949548048325603328.htm" title="react class和function 如何模拟vue中的 双向绑定 监听 computed的方式" target="_blank">react class和function 如何模拟vue中的 双向绑定 监听 computed的方式</a> <span class="text-muted"></span> <div>在React中,类组件和函数组件的写法有所不同。你提到的「双向绑定」、「监听」和「computed(计算属性)」这几个概念,原本来源于Vue,但在React中我们也可以通过特定方式实现类似功能。下面我将分别介绍:1.类组件中的双向绑定在类组件中,要实现双向绑定(如表单输入),我们通常使用state和onChange:importReactfrom'react';classMyFormextends</div> </li> <li><a href="/article/1949546785684910080.htm" title="PostGIS面试题及详细答案120道之 (021-030 )" target="_blank">PostGIS面试题及详细答案120道之 (021-030 )</a> <span class="text-muted">还是大剑师兰特</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%91%E5%B8%88/1.htm">大剑师</a><a class="tag" taget="_blank" href="/search/postgis%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">postgis面试题</a> <div>《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux…。前后端面试题-专栏总目录文章目录一、本文面试题目录21.为什么要在PostGIS中使用空间索引?22.PostGIS支持哪些类型的</div> </li> <li><a href="/article/1949546658601693184.htm" title="Java面试题及详细答案120道之(081-100)" target="_blank">Java面试题及详细答案120道之(081-100)</a> <span class="text-muted">还是大剑师兰特</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E5%90%8E%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">前后端面试题</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%91%E5%B8%88/1.htm">大剑师</a><a class="tag" taget="_blank" href="/search/java%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">java面试题</a> <div>《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux…。前后端面试题-专栏总目录文章目录一、本文面试题目录81.Java中的`ConcurrentHashMap`与`HashMap`在并</div> </li> <li><a href="/article/1949546532227313664.htm" title="Openlayers 面试题及答案180道(41-60)" target="_blank">Openlayers 面试题及答案180道(41-60)</a> <span class="text-muted">还是大剑师兰特</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E5%90%8E%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">前后端面试题</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%91%E5%B8%88/1.htm">大剑师</a><a class="tag" taget="_blank" href="/search/Openlayers%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">Openlayers面试题</a><a class="tag" taget="_blank" href="/search/Openlayers%E7%A4%BA%E4%BE%8B/1.htm">Openlayers示例</a><a class="tag" taget="_blank" href="/search/Openlayers%E6%95%99%E7%A8%8B/1.htm">Openlayers教程</a> <div>《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux…。前后端面试题-专栏总目录文章目录一、本文面试题目录41.如何在OpenLayers中加载WFS数据?42.在OpenLayers中</div> </li> <li><a href="/article/1949540859238215680.htm" title="CSS面试题及详细答案140道之(41-60)" target="_blank">CSS面试题及详细答案140道之(41-60)</a> <span class="text-muted">还是大剑师兰特</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E5%90%8E%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">前后端面试题</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%91%E5%B8%88/1.htm">大剑师</a><a class="tag" taget="_blank" href="/search/CSS%E9%9D%A2%E8%AF%95/1.htm">CSS面试</a><a class="tag" taget="_blank" href="/search/CSS%E7%A4%BA%E4%BE%8B/1.htm">CSS示例</a> <div>《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux…。前后端面试题-专栏总目录文章目录一、本文面试题目录41.如何在不使用额外标记的情况下隐藏文本但保留其可访问性?42.解释`text</div> </li> <li><a href="/article/1949536826452668416.htm" title="2025年02月13日 · Go生态洞察:可扩展的 WebAssembly 应用" target="_blank">2025年02月13日 · Go生态洞察:可扩展的 WebAssembly 应用</a> <span class="text-muted">猫头虎</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Go%E7%94%9F%E6%80%81%E6%B4%9E%E5%AF%9F/1.htm">Go生态洞察</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/wasm/1.htm">wasm</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/go1.19/1.htm">go1.19</a><a class="tag" taget="_blank" href="/search/go/1.htm">go</a><a class="tag" taget="_blank" href="/search/beego/1.htm">beego</a> <div>2025年02月13日·Go生态洞察:可扩展的WebAssembly应用摘要大家好,我是猫头虎。本篇文章将带领大家深入剖析Go1.24在WebAssembly(Wasm)领域的最新特性:go:wasmexport指令、WASIReactor构建模式、丰富类型支持及其限制,并通过示例代码演示如何在实际项目中灵活运用。关键词:WebAssembly、WASI、Go1.24、go:wasmexport、</div> </li> <li><a href="/article/1949467093661446144.htm" title="每天一个前端小知识 Day 17 - 微前端架构实战与 Module Federation" target="_blank">每天一个前端小知识 Day 17 - 微前端架构实战与 Module Federation</a> <span class="text-muted"></span> <div>微前端架构实战与ModuleFederation为什么要微前端?✅传统SPA的问题:问题描述构建时间越来越长单体应用构建缓慢,难以增量部署多团队协作困难不同业务线互相依赖紧耦合技术栈难以迁移老项目技术债,无法局部替换✅微前端目标:像微服务一样拆前端系统各子应用独立开发、独立部署、独立运行支持多技术栈共存(React+Vue+原生)核心架构方案一览架构方式技术实现适用场景iframe方式每个子应用独</div> </li> <li><a href="/article/1949459858382188544.htm" title="你的一个箭头函数让我找了几天" target="_blank">你的一个箭头函数让我找了几天</a> <span class="text-muted">JsLin_</span> <div>同事的h5的相关内容给我接手了,上线后发现好多手机浏览器不显示内容,就是这个问题断断续续找了有两个星期的时间,迫使我把他的h5相关的内容用react重构了一遍,重构完又发现一大堆事情。先抱怨下吧首先,一个网站的域名竟然不指定首页?大图片资源不压缩?找了一段时间,没找到原因,迫使我把它的代码用react重构了,也正好练练手。重构完了之后,发现运维那里的以前的工程nginx部署没有指定主页,才发现官网</div> </li> <li><a href="/article/1949392722615922688.htm" title="面试复盘:为什么Vue2的data数据量大时内存开销大?" target="_blank">面试复盘:为什么Vue2的data数据量大时内存开销大?</a> <span class="text-muted">neon1204</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>背景描述今天前端技术面试中,面试官针对Vue2的源码和性能方面提问:“当data中存储大量数据时,为什么内存开销显著增加?”。本文复盘梳理我的回答思路:一、核心机制:Object.defineProperty的递归与闭包Vue2的响应式系统通过递归遍历data中的每个属性,将其转换为getter/setter。这一过程在源码中由defineReactive函数实现,其内存开销主要来自以下三点:1.</div> </li> <li><a href="/article/1949327524823625728.htm" title="React入门指南——指北指南(第二节)" target="_blank">React入门指南——指北指南(第二节)</a> <span class="text-muted">逢着</span> <a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a> <div>React实践:创建你的第一个待办事项列表在前面的章节中,我们学习了React的核心概念(组件、Props、State等)。本节将通过一个实际案例——创建待办事项列表(TodoList),帮助你巩固这些概念,并掌握React中处理用户交互、动态数据的基本方法。案例目标我们将构建一个简单但功能完整的待办事项应用,包含以下功能:输入框中输入文本,点击按钮添加新的待办项;显示所有待办项的列表;点击单个待</div> </li> <li><a href="/article/1949327525301776384.htm" title="React入门学习——指北指南(第三节)" target="_blank">React入门学习——指北指南(第三节)</a> <span class="text-muted">逢着</span> <a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>React组件在前面的内容中,我们了解了React的基础知识和入门案例。本节将深入探讨React中最核心的概念之一——组件。组件是构建React应用的基础,理解组件的工作原理和使用方法,对于掌握React开发至关重要。什么是组件?在React中,组件是具有独立功能和UI的可复用代码块。可以将组件看作是构建用户界面的“积木”,通过组合不同的组件,能够搭建出复杂的页面。组件就像一个函数,它可以接收输入</div> </li> <li><a href="/article/1949301425460801536.htm" title="Java面试题及详细答案120道之(041-060)" target="_blank">Java面试题及详细答案120道之(041-060)</a> <span class="text-muted">还是大剑师兰特</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E5%90%8E%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">前后端面试题</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%91%E5%B8%88/1.htm">大剑师</a><a class="tag" taget="_blank" href="/search/java%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">java面试题</a> <div>《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux…。前后端面试题-专栏总目录文章目录一、本文面试题目录41.什么是工厂模式?简单工厂、工厂方法、抽象工厂的区别?42.Java中的泛型</div> </li> <li><a href="/article/1949256916337225728.htm" title="快速梳理遗留项目" target="_blank">快速梳理遗留项目</a> <span class="text-muted">lixzest</span> <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/c%2B%2B/1.htm">c++</a> <div>梳理一个别人写的代码项目是开发者常遇到的任务,尤其是接手遗留项目或团队协作时。以下是系统化的步骤和技巧,帮助快速理解项目结构和逻辑:1.了解项目背景项目目标:与产品经理或前任开发者沟通,明确项目用途(如电商系统、数据分析工具等)。技术栈:确认语言(Python/Java/Go等)、框架(Spring/Django/React等)、数据库(MySQL/MongoDB等)。文档检查:优先阅读READM</div> </li> <li><a href="/article/1949236611715756032.htm" title="如何实现零成本裂变?微信推客带货小程序开发功能模式全解析" target="_blank">如何实现零成本裂变?微信推客带货小程序开发功能模式全解析</a> <span class="text-muted">开发加微信:hedian116</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1/1.htm">微信</a> <div>引言在当今社交电商蓬勃发展的背景下,微信推客系统作为一种基于社交关系的分销模式,其技术实现和架构设计值得开发者深入探讨。本文将从技术角度分析微信推客系统的核心组件和实现原理,避免商业营销,专注于技术层面的分享。一、微信推客系统的基本架构1.1前端架构微信推客系统通常采用混合开发模式:小程序前端:使用WXML+WXSS+JavaScript技术栈H5页面:Vue.js或React框架实现跨平台兼容原</div> </li> <li><a href="/article/1949208866151526400.htm" title="React Native启动android报错 Failed to install the app. Command failed with exit code 1: gradlew.b(亲测有效)" target="_blank">React Native启动android报错 Failed to install the app. Command failed with exit code 1: gradlew.b(亲测有效)</a> <span class="text-muted">安心不心安</span> <a class="tag" taget="_blank" href="/search/React/1.htm">React</a><a class="tag" taget="_blank" href="/search/Native%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">Native学习笔记</a><a class="tag" taget="_blank" href="/search/react/1.htm">react</a><a class="tag" taget="_blank" href="/search/native/1.htm">native</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a> <div>一、原因react-nativerun-android或npxreact-nativestart命令的默认行为是:编译APK(通过Gradle)。安装APK到设备(通过adbinstall)。启动应用(通过adbshellamstart)。如果模拟器未提前启动:adb可能找不到设备,导致安装步骤失败。错误可能表现为Noconnecteddevices!或INSTALL_FAILED。二、解决方法注</div> </li> <li><a href="/article/1949198772189851648.htm" title="算法在前端框架中的集成" target="_blank">算法在前端框架中的集成</a> <span class="text-muted"></span> <div>引言算法是前端开发中提升性能和用户体验的重要工具。随着Web应用复杂性的增加,现代前端框架如React、Vue和Angular提供了强大的工具集,使得将算法与框架特性(如状态管理、虚拟DOM和组件化)无缝集成成为可能。从排序算法优化列表渲染到动态规划提升复杂计算效率,算法的集成能够显著改善应用的响应速度和资源利用率。本文将探讨如何将常见算法(排序、搜索和动态规划)集成到前端框架中,重点介绍框架特性</div> </li> <li><a href="/article/1949090081813884928.htm" title="React Native 双向无限滚动组件教程" target="_blank">React Native 双向无限滚动组件教程</a> <span class="text-muted"></span> <div>ReactNative双向无限滚动组件教程项目介绍react-native-bidirectional-infinite-scroll是一个基于ReactNative的FlatList组件扩展库,旨在实现双向无限滚动功能,并保持平滑的滚动体验。该组件允许用户在列表的顶部和底部进行无限滚动加载,适用于需要大量数据展示的应用场景。项目快速启动安装首先,通过npm或yarn安装react-native-</div> </li> <li><a href="/article/1949040142429777920.htm" title="1、云原生开发:Go 与 React 构建之路" target="_blank">1、云原生开发:Go 与 React 构建之路</a> <span class="text-muted">sea99</span> <a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BC%80%E5%8F%91/1.htm">云原生开发</a><a class="tag" taget="_blank" href="/search/Go%E8%AF%AD%E8%A8%80/1.htm">Go语言</a><a class="tag" taget="_blank" href="/search/React%E6%A1%86%E6%9E%B6/1.htm">React框架</a> <div>云原生开发:Go与React构建之路1.香港天际线与海港之景香港以其壮观的天际线和海港闻名。据相关数据,香港拥有315座高度至少150米的建筑,数量超过全球任何其他城市。近四分之三的摩天大楼为住宅,这也解释了为何香港居住在14层以上的居民比其他城市更多。香港最高的建筑是国际商业中心,高达484米,比帝国大厦尖顶还高出40多米。在天气良好的夜晚,游客可以欣赏到“幻彩咏香江”灯光音乐汇演,这场灯光和激</div> </li> <li><a href="/article/1948979508900065280.htm" title="Rails:为什么这个“过气”框架还能让你爽到飞起?(Web开发老炮的真心话)" target="_blank">Rails:为什么这个“过气”框架还能让你爽到飞起?(Web开发老炮的真心话)</a> <span class="text-muted">datadreamer</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</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/%E5%85%B6%E4%BB%96/1.htm">其他</a> <div>文章目录伙计们,聊聊Rails吧!RubyonRails。这名字,在如今React、Vue、各种微服务满天飞的时代,听起来是不是有点…**复古**?我第一次接触Rails还是十几年前(暴露年龄了!),当时就被它惊到了:**“写Web应用还能这么爽?!”**这么多年过去,经历各种技术浪潮冲刷,Rails不仅没死,反而活得挺滋润?为啥?因为它抓住了开发者的**核心痛点**——**效率**和**愉悦感*</div> </li> <li><a href="/article/1948927069853380608.htm" title="Java面试题及详细答案120道之(021-040)" target="_blank">Java面试题及详细答案120道之(021-040)</a> <span class="text-muted">还是大剑师兰特</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E5%90%8E%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">前后端面试题</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%91%E5%B8%88/1.htm">大剑师</a><a class="tag" taget="_blank" href="/search/java%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">java面试题</a> <div>《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux…。前后端面试题-专栏总目录文章目录一、本文面试题目录21.对象在java中如何序列化?22.Java中的try…catch是用于异常</div> </li> <li><a href="/article/1948907776386330624.htm" title="前端 JavaScript 跨端开发框架对比" target="_blank">前端 JavaScript 跨端开发框架对比</a> <span class="text-muted">AI实战架构笔记</span> <a class="tag" taget="_blank" href="/search/AI%E6%9E%B6%E6%9E%84%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI架构开发实战</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a> <div>前端JavaScript跨端开发框架对比关键词:JavaScript、跨端开发、ReactNative、Flutter、Weex、Taro、Uni-app、性能优化摘要:本文深入对比了当前主流的JavaScript跨端开发框架,包括ReactNative、Flutter、Weex、Taro和Uni-app。我们将从架构原理、性能表现、开发体验、生态支持和实际应用场景等多个维度进行全面分析,帮助开发</div> </li> <li><a href="/article/64.htm" title="关于旗正规则引擎中的MD5加密问题" target="_blank">关于旗正规则引擎中的MD5加密问题</a> <span class="text-muted">何必如此</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/MD5/1.htm">MD5</a><a class="tag" taget="_blank" href="/search/%E8%A7%84%E5%88%99/1.htm">规则</a><a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86/1.htm">加密</a> <div>一般情况下,为了防止个人隐私的泄露,我们都会对用户登录密码进行加密,使数据库相应字段保存的是加密后的字符串,而非原始密码。 在旗正规则引擎中,通过外部调用,可以实现MD5的加密,具体步骤如下: 1.在对象库中选择外部调用,选择“com.flagleader.util.MD5”,在子选项中选择“com.flagleader.util.MD5.getMD5ofStr({arg1})”; 2.在规</div> </li> <li><a href="/article/191.htm" title="【Spark101】Scala Promise/Future在Spark中的应用" target="_blank">【Spark101】Scala Promise/Future在Spark中的应用</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Promise/1.htm">Promise</a> <div>Promise和Future是Scala用于异步调用并实现结果汇集的并发原语,Scala的Future同JUC里面的Future接口含义相同,Promise理解起来就有些绕。等有时间了再仔细的研究下Promise和Future的语义以及应用场景,具体参见Scala在线文档:http://docs.scala-lang.org/sips/completed/futures-promises.html</div> </li> <li><a href="/article/318.htm" title="spark sql 访问hive数据的配置详解" target="_blank">spark sql 访问hive数据的配置详解</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/spark+sql/1.htm">spark sql</a><a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/thriftserver/1.htm">thriftserver</a> <div>spark sql 能够通过thriftserver 访问hive数据,默认spark编译的版本是不支持访问hive,因为hive依赖比较多,因此打的包中不包含hive和thriftserver,因此需要自己下载源码进行编译,将hive,thriftserver打包进去才能够访问,详细配置步骤如下:   1、下载源码   2、下载Maven,并配置 此配置简单,就略过</div> </li> <li><a href="/article/445.htm" title="HTTP 协议通信" target="_blank">HTTP 协议通信</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E9%80%9A%E4%BF%A1/1.htm">通信</a> <div>                        一:简介  HTTPCLIENT,通过JAVA基于HTTP协议进行点与点间的通信!     二: 代码举例      测试类: import java</div> </li> <li><a href="/article/572.htm" title="java unix时间戳转换" target="_blank">java unix时间戳转换</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>把java时间戳转换成unix时间戳: Timestamp appointTime=Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())) SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:m</div> </li> <li><a href="/article/699.htm" title="web报表工具FineReport常用函数的用法总结(报表函数)" target="_blank">web报表工具FineReport常用函数的用法总结(报表函数)</a> <span class="text-muted">老A不折腾</span> <a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8/1.htm">web报表</a><a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/%E6%80%BB%E7%BB%93/1.htm">总结</a> <div>说明:本次总结中,凡是以tableName或viewName作为参数因子的。函数在调用的时候均按照先从私有数据源中查找,然后再从公有数据源中查找的顺序。   CLASS CLASS(object):返回object对象的所属的类。   CNMONEY CNMONEY(number,unit)返回人民币大写。 number:需要转换的数值型的数。 unit:单位,</div> </li> <li><a href="/article/826.htm" title="java jni调用c++ 代码 报错" target="_blank">java jni调用c++ 代码 报错</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/jni/1.htm">jni</a> <div># # A fatal error has been detected by the Java Runtime Environment: # #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000777c3290, pid=5632, tid=6656 # # JRE version: Java(TM) SE Ru</div> </li> <li><a href="/article/953.htm" title="Spring中事件处理de小技巧" target="_blank">Spring中事件处理de小技巧</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Spring+%E6%95%99%E7%A8%8B/1.htm">Spring 教程</a><a class="tag" taget="_blank" href="/search/Spring+%E5%AE%9E%E4%BE%8B/1.htm">Spring 实例</a><a class="tag" taget="_blank" href="/search/Spring+%E5%85%A5%E9%97%A8/1.htm">Spring 入门</a><a class="tag" taget="_blank" href="/search/Spring3/1.htm">Spring3</a> <div>Spring 中提供一些Aware相关de接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到de匙ApplicationContextAware.实现ApplicationContextAwaredeBean,在Bean被初始后,将会被注入 Applicati</div> </li> <li><a href="/article/1080.htm" title="linux shell ls脚本样例" target="_blank">linux shell ls脚本样例</a> <span class="text-muted">annan211</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/linux+ls%E6%BA%90%E7%A0%81/1.htm">linux ls源码</a><a class="tag" taget="_blank" href="/search/linux+%E6%BA%90%E7%A0%81/1.htm">linux 源码</a> <div> #! /bin/sh - #查找输入文件的路径 #在查找路径下寻找一个或多个原始文件或文件模式 # 查找路径由特定的环境变量所定义 #标准输出所产生的结果 通常是查找路径下找到的每个文件的第一个实体的完整路径 # 或是filename :not found 的标准错误输出。 #如果文件没有找到 则退出码为0 #否则 即为找不到的文件个数 #语法 pathfind [--</div> </li> <li><a href="/article/1207.htm" title="List,Set,Map遍历方式 (收集的资源,值得看一下)" target="_blank">List,Set,Map遍历方式 (收集的资源,值得看一下)</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/set/1.htm">set</a><a class="tag" taget="_blank" href="/search/Map%E9%81%8D%E5%8E%86%E6%96%B9%E5%BC%8F/1.htm">Map遍历方式</a> <div>List特点:元素有放入顺序,元素可重复 Map特点:元素按键值对存储,无放入顺序 Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的) List接口有三个实现类:LinkedList,ArrayList,Vector LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身</div> </li> <li><a href="/article/1334.htm" title="解决SimpleDateFormat的线程不安全问题的方法" target="_blank">解决SimpleDateFormat的线程不安全问题的方法</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/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8/1.htm">线程安全</a> <div>在Java项目中,我们通常会自己写一个DateUtil类,处理日期和字符串的转换,如下所示: public class DateUtil01 { private SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public void format(Date d</div> </li> <li><a href="/article/1461.htm" title="http请求测试实例(采用fastjson解析)" target="_blank">http请求测试实例(采用fastjson解析)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95/1.htm">测试</a> <div>        在实际开发中,我们经常会去做http请求的开发,下面则是如何请求的单元测试小实例,仅供参考。 import java.util.HashMap; import java.util.Map; import org.apache.commons.httpclient.HttpClient; import </div> </li> <li><a href="/article/1588.htm" title="【RPC框架Hessian三】Hessian 异常处理" target="_blank">【RPC框架Hessian三】Hessian 异常处理</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hessian/1.htm">hessian</a> <div>RPC异常处理概述   RPC异常处理指是,当客户端调用远端的服务,如果服务执行过程中发生异常,这个异常能否序列到客户端?   如果服务在执行过程中可能发生异常,那么在服务接口的声明中,就该声明该接口可能抛出的异常。   在Hessian中,服务器端发生异常,可以将异常信息从服务器端序列化到客户端,因为Exception本身是实现了Serializable的</div> </li> <li><a href="/article/1715.htm" title="【日志分析】日志分析工具" target="_blank">【日志分析】日志分析工具</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90/1.htm">日志分析</a> <div>1. 网站日志实时分析工具 GoAccess http://www.vpsee.com/2014/02/a-real-time-web-log-analyzer-goaccess/ 2. 通过日志监控并收集 Java 应用程序性能数据(Perf4J) http://www.ibm.com/developerworks/cn/java/j-lo-logforperf/ 3.log.io 和</div> </li> <li><a href="/article/1842.htm" title="nginx优化加强战斗力及遇到的坑解决" target="_blank">nginx优化加强战斗力及遇到的坑解决</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/nginx+%E4%BC%98%E5%8C%96/1.htm">nginx 优化</a> <div>   先说遇到个坑,第一个是负载问题,这个问题与架构有关,由于我设计架构多了两层,结果导致会话负载只转向一个。解决这样的问题思路有两个:一是改变负载策略,二是更改架构设计。    由于采用动静分离部署,而nginx又设计了静态,结果客户端去读nginx静态,访问量上来,页面加载很慢。解决:二者留其一。最好是保留apache服务器。      来以下优化:       </div> </li> <li><a href="/article/1969.htm" title="java-50-输入两棵二叉树A和B,判断树B是不是A的子结构" target="_blank">java-50-输入两棵二叉树A和B,判断树B是不是A的子结构</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>思路来自: http://zhedahht.blog.163.com/blog/static/25411174201011445550396/ import ljn.help.*; public class HasSubtree { /**Q50. * 输入两棵二叉树A和B,判断树B是不是A的子结构。 例如,下图中的两棵树A和B,由于A中有一部分子树的结构和B是一</div> </li> <li><a href="/article/2096.htm" title="mongoDB 备份与恢复" target="_blank">mongoDB 备份与恢复</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/mongDB%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D/1.htm">mongDB备份与恢复</a> <div>Mongodb导出与导入 1: 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的. 所以,都有如下通用选项: -h host   主机 --port port    端口 -u username 用户名 -p passwd   密码 2: mongoexport 导出json格式的文件 </div> </li> <li><a href="/article/2223.htm" title="[网络与通讯]椭圆轨道计算的一些问题" target="_blank">[网络与通讯]椭圆轨道计算的一些问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>      如果按照中国古代农历的历法,现在应该是某个季节的开始,但是由于农历历法是3000年前的天文观测数据,如果按照现在的天文学记录来进行修正的话,这个季节已经过去一段时间了。。。。。       也就是说,还要再等3000年。才有机会了,太阳系的行星的椭圆轨道受到外来天体的干扰,轨道次序发生了变</div> </li> <li><a href="/article/2350.htm" title="软件专利如何申请" target="_blank">软件专利如何申请</a> <span class="text-muted">cuiyadll</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E4%B8%93%E5%88%A9/1.htm">软件专利</a><a class="tag" taget="_blank" href="/search/%E7%94%B3%E8%AF%B7/1.htm">申请</a> <div>软件技术可以申请软件著作权以保护软件源代码,也可以申请发明专利以保护软件流程中的步骤执行方式。专利保护的是软件解决问题的思想,而软件著作权保护的是软件代码(即软件思想的表达形式)。例如,离线传送文件,那发明专利保护是如何实现离线传送文件。基于相同的软件思想,但实现离线传送的程序代码有千千万万种,每种代码都可以享有各自的软件著作权。申请一个软件发明专利的代理费大概需要5000-8000申请发明专利可</div> </li> <li><a href="/article/2477.htm" title="Android学习笔记" target="_blank">Android学习笔记</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>1.启动一个AVD 2.命令行运行adb shell可连接到AVD,这也就是命令行客户端 3.如何启动一个程序   am start -n package name/.activityName   am start -n com.example.helloworld/.MainActivity 启动Android设置工具的命令如下所示: # am start -</div> </li> <li><a href="/article/2604.htm" title="apache虚拟机配置,本地多域名访问本地网站" target="_blank">apache虚拟机配置,本地多域名访问本地网站</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a> <div>现在假定你有两个目录,一个存在于 /htdocs/a,另一个存在于 /htdocs/b 。 现在你想要在本地测试的时候访问 www.freeman.com 对应的目录是 /xampp/htdocs/freeman ,访问 www.duchengjiu.com 对应的目录是 /htdocs/duchengjiu。 1、首先修改C盘WINDOWS\system32\drivers\etc目录下的 </div> </li> <li><a href="/article/2731.htm" title="yii2 restful web服务[速率限制]" target="_blank">yii2 restful web服务[速率限制]</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a> <div>速率限制 为防止滥用,你应该考虑增加速率限制到您的API。 例如,您可以限制每个用户的API的使用是在10分钟内最多100次的API调用。 如果一个用户同一个时间段内太多的请求被接收, 将返回响应状态代码 429 (这意味着过多的请求)。 要启用速率限制, [[yii\web\User::identityClass|user identity class]] 应该实现 [[yii\filter</div> </li> <li><a href="/article/2858.htm" title="Hadoop2.5.2安装——单机模式" target="_blank">Hadoop2.5.2安装——单机模式</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/hadoop%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2/1.htm">hadoop单机部署</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2185414 一、概述        Hadoop有三种模式 单机模式、伪分布模式和完全分布模式,这里先简单介绍单机模式 ,默认情况下,Hadoop被配置成一个非分布式模式,独立运行JAVA进程,适合开始做调试工作。   二、下载地址 Hadoop 网址http:</div> </li> <li><a href="/article/2985.htm" title="LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构" target="_blank">LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>一切为了快速迭代 import java.util.ArrayList; import org.json.JSONObject; import android.animation.ObjectAnimator; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayo</div> </li> <li><a href="/article/3112.htm" title="三道简单的前端HTML/CSS题目" target="_blank">三道简单的前端HTML/CSS题目</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E9%A2%98%E7%9B%AE/1.htm">题目</a> <div>使用CSS为多个网页进行相同风格的布局和外观设置时,为了方便对这些网页进行修改,最好使用( )。http://hovertree.com/shortanswer/bjae/7bd72acca3206862.htm   在HTML中加入<table style=”color:red; font-size:10pt”>,此为( )。http://hovertree.com/s</div> </li> <li><a href="/article/3239.htm" title="overrided方法编译错误" target="_blank">overrided方法编译错误</a> <span class="text-muted">kane_xie</span> <a class="tag" taget="_blank" href="/search/override/1.htm">override</a> <div> 问题描述: 在实现类中的某一或某几个Override方法发生编译错误如下: Name clash: The method put(String) of type XXXServiceImpl has the same erasure as put(String) of type XXXService but does not override it   当去掉@Over</div> </li> <li><a href="/article/3366.htm" title="Java中使用代理IP获取网址内容(防IP被封,做数据爬虫)" target="_blank">Java中使用代理IP获取网址内容(防IP被封,做数据爬虫)</a> <span class="text-muted">mcj8089</span> <a class="tag" taget="_blank" href="/search/%E5%85%8D%E8%B4%B9%E4%BB%A3%E7%90%86IP/1.htm">免费代理IP</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86IP/1.htm">代理IP</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%88%AC%E8%99%AB/1.htm">数据爬虫</a><a class="tag" taget="_blank" href="/search/JAVA%E8%AE%BE%E7%BD%AE%E4%BB%A3%E7%90%86IP/1.htm">JAVA设置代理IP</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E5%B0%81IP/1.htm">爬虫封IP</a> <div>推荐两个代理IP网站:   1. 全网代理IP:http://proxy.goubanjia.com/   2. 敲代码免费IP:http://ip.qiaodm.com/   Java语言有两种方式使用代理IP访问网址并获取内容,   方式一,设置System系统属性   // 设置代理IP System.getProper</div> </li> <li><a href="/article/3493.htm" title="Nodejs Express 报错之 listen EADDRINUSE" target="_blank">Nodejs Express 报错之 listen EADDRINUSE</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a> <div>当你启动 nodejs服务报错: >node app Express server listening on port 80 events.js:85 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at exports._errnoException (</div> </li> <li><a href="/article/3620.htm" title="C++中三种new的用法" target="_blank">C++中三种new的用法</a> <span class="text-muted">_荆棘鸟_</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/new/1.htm">new</a> <div>转载自:http://news.ccidnet.com/art/32855/20100713/2114025_1.html 作者: mt 其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧。new表达式比较常见,也最常用,例如: string* ps = new string("</div> </li> <li><a href="/article/3747.htm" title="Ruby深入研究笔记1" target="_blank">Ruby深入研究笔记1</a> <span class="text-muted">wudixiaotie</span> <a class="tag" taget="_blank" href="/search/Ruby/1.htm">Ruby</a> <div>module是可以定义private方法的 module MTest def aaa puts "aaa" private_method end private def private_method puts "this is private_method" end end </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><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>