当前位置: 首页 > 编程日记 > 正文

React 学习

一、搭建webpack4.x环境

1.创建工程文件夹(ReactDemo)

2.在工程文件夹下,快速初始化项目

npm init -y        // 创建一个package.json文件

3.在工程文件夹下,创建源码文件夹(src)和编译打包文件夹(dist)

4.在源码文件夹下,创建index.html和入口index.js文件

5.在工程文件夹下,安装webpack

npm i webpack webpack-cli -D

6.在工程文件夹下,创建webpack.config.js文件

// 向外暴露一个配置对象
module.exports = {mode: 'development' // development:打包文件不压缩   production:打包文件压缩
}

7.配置package.json文件

{"name": "ReactDemo","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev": "webpack"},"keywords": [],"author": "","license": "ISC","devDependencies": {"webpack": "^4.39.3","webpack-cli": "^3.3.8"}
}

8.在工程文件夹下,执行打包,会在dist文件夹下生成main.js

npm run dev

二、工具使用

1.配置实时打包

npm i webpack-dev-server -D
{"name": "ReactDemo","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev": "webpack-dev-server --open --port 3000 --hot"},"keywords": [],"author": "","license": "ISC","devDependencies": {"webpack": "^4.39.3","webpack-cli": "^3.3.8","webpack-dev-server": "^3.8.0"}
}

注:--open:自动打开浏览器(谷歌),--port:指定端口,--hot:热打包,--host:指定地址

2.配置将html页面加载到内存中

npm i html-webpack-plugin -D
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')// 创建一个插件实例对象
const htmlPlugin = new HtmlWebpackPlugin({template: path.join(__dirname, './src/index.html'),  // 源文件路径filename: 'index.html'                               // 生成内存中首页的名称
})// 向外暴露一个配置对象
// 因为 webpack 是基于Node构建的;所以 webpack 支持所有Node API 和语法
// 那些 特性 Node 支持呢?Node是基于Chrome V8引擎实现的Javascript运行环境,如果 chrome 浏览器支持哪些,则 Node 就支持哪些;
module.exports = {mode: 'development', // development   production
    plugins: [htmlPlugin]
}

三、配置React

1.引入包,react用于创建虚拟DOM和生命周期,react-dom用于将虚拟DOM渲染到页面

npm i react react-dom -S

2.配置index.js文件

import React from 'react'
import ReactDOM from 'react-dom'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈')// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(h1, document.getElementById('app'))

3.配置识别JSX。安装babel,添加.babelrc配置文件,配置webpack.config.js,修改index.js

npm i babel-core@6.26.3 babel-loader@7.1.2 babel-plugin-transform-runtime@6.26.0 -D
npm i babel-preset-env@1.7.0 babel-preset-stage-0@6.24.1 -D
npm i babel-preset-react@6.24.1 -D
{"presets": ["env", "stage-0", "react"],"plugins": ["transform-runtime"]
}
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')// 创建一个插件实例对象
const htmlPlugin = new HtmlWebpackPlugin({template: path.join(__dirname, './src/index.html'),  // 源文件路径filename: 'index.html'                               // 生成内存中首页的名称
})// 向外暴露一个配置对象
// 因为 webpack 是基于Node构建的;所以 webpack 支持所有Node API 和语法
// webpack默认只能处理.js后缀名的文件,需要配置规则
module.exports = {mode: 'development', // development   production
    plugins: [htmlPlugin],// 所有第三方模块的配置规则
    module: {rules: [{test: /\.js|jsx$/, use: ['babel-loader'], exclude: /node_modules/}]}
}
// 以下的写法不行,这是ES6中向外导出模块的API,与之对应的是import ** from '标识符'
// export default {}
import React from 'react'
import ReactDOM from 'react-dom'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <div>欢迎</div>
const div = React.createElement('div', null, '欢迎')
const divJsx = <div>欢迎JSX</div>// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈', div, divJsx)// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(divJsx, document.getElementById('app'))

4.React语法之引用变量

import React from 'react'
import ReactDOM from 'react-dom'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <div>欢迎</div>
const div = React.createElement('div', null, '欢迎')
// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈', div)const a = "欢迎JSX"
const divJsx = <div>{a}</div>// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(divJsx, document.getElementById('app'))

5.React语法之引用变量数组使用map

import React from 'react'
import ReactDOM from 'react-dom'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <div>欢迎</div>
const div = React.createElement('div', null, '欢迎')
// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈', div)const a = "欢迎JSX"
const b = ['sad', 'da', 'daszc', 'dafc']
const divJsx = <div>{a}<hr />{b.map(item => <div key={item}>{item}</div>)}</div>// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(divJsx, document.getElementById('app'))

5.React语法之注意事项

  • 属性:使用className替代class,使用htmlFor替代label的for
  • jsx注释:{ /* 这是注释 */ }
  • 虚拟DOM:在jsx创建DOM时,所有节点必须有唯一的根节点包裹
  • 标签:须成对出现(必须紫自闭合)
  • 事件:属性名须小驼峰onClick

6.React语法之创建组件

import React from 'react'
import ReactDOM from 'react-dom'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <div>欢迎</div>
const div = React.createElement('div', null, '欢迎')
// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈', div)const a = "欢迎来到JSX"
const b = ['sad', 'da', 'daszc', 'dafc']// 创建组件方式一
function Hello() {return (<div className="container">{a}<hr />{"创建组件方式一"}<hr />{b.map(item => <div key={item}>{item}</div>)}</div>)
}// 创建组件方式二
class He extends React.Component{render() {return (<div className="container">{a}<hr />{"创建组件方式二"}<hr />{b.map(item => <div key={item}>{item}</div>)}</div>)}
}// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(<div className="continer"><Hello /><hr /><He /></div>, document.getElementById('app'))

7.React语法之给主键传值(只读)

import React from 'react'
import ReactDOM from 'react-dom'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <div>欢迎</div>
const div = React.createElement('div', null, '欢迎')
// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈', div)const a = "欢迎来到JSX"
const b = ['sad', 'da', 'daszc', 'dafc']
const c = {name: 'pascall',age: 20,sex: 'man'
}// 创建组件方式一
function Hello(props) {return (<div className="container">{a}<hr />{"创建组件方式一: 接收值(只读):{name=" + props.name + ",age=" + props.age + ",sex=" + props.sex + "}"}<hr />{b.map(item => <div key={item}>{item}</div>)}</div>)
}// 创建组件方式二
class He extends React.Component{render() {return (<div className="container">{a}<hr />{"创建组件方式二: 接收值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}<hr />{b.map(item => <div key={item}>{item}</div>)}</div>)
    }
}// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(<div className="continer"><Hello {...c} /><hr /> <He  {...c} /></div>, document.getElementById('app'))

8.React语法之组件内部属性state创建和获取

import React from 'react'export default class Hi extends React.Component{// 构造器
    constructor(props) {super(props)this.state = {name: 'god'}}render() {return (<div className="container">{"创建组件方式二"}<br />{"获取props值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}{"获取state值(读写):" + this.state.name}</div>)
    }
}

9.React语法之组件内部属性state修改

import React from 'react'export default class Hi extends React.Component{// 构造器
    constructor(props) {super(props)this.state = {name: 'god',seg: 0}}handleClink() {this.setState({seg: this.state.seg + 1,name: this.state.name.substring(0, 3) + this.state.seg})}render() {return (<div className="container">{"创建组件方式二"}<br />{"获取props值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}{"获取state值(读写):" + this.state.name}<br /><button onClick={this.handleClink.bind(this)}>修改state值</button></div>)
    }
}

10.React语法之组件内部css样式

  • 方式一:行内样式
import React from 'react'export default class Hi extends React.Component{// 构造器
    constructor(props) {super(props)this.state = {name: 'god',seg: 0}}handleClink() {this.setState({seg: this.state.seg + 1,name: this.state.name.substring(0, 3) + this.state.seg})}render() {return (<div className="container-style-2">{"创建组件方式二"}<br />{"获取props值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}{"获取state值(读写):" + this.state.name}<br /><button onClick={this.handleClink.bind(this)} style={{color: 'red'}}>修改state值</button></div>)
    }
}
  • 方式二:外联样式(css, less)
npm i style-loader css-loader less less-loader sass-loader node-loader -D
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')// 创建一个插件实例对象
const htmlPlugin = new HtmlWebpackPlugin({template: path.join(__dirname, './src/index.html'),  // 源文件路径filename: 'index.html'                               // 生成内存中首页的名称
})// 向外暴露一个配置对象
// 因为 webpack 是基于Node构建的;所以 webpack 支持所有Node API 和语法
// webpack默认只能处理.js后缀名的文件,需要配置规则
module.exports = {mode: 'development', // development   production
    plugins: [htmlPlugin],// 所有第三方模块的配置规则
    module: {rules: [{test: /\.js|jsx$/, use: ['babel-loader'], exclude: /node_modules/},{test: /\.css$/, use: ['style-loader', 'css-loader']},{test: /\.scss$/, use: ['style-loader', {loader: 'css-loader',options: {modules: {localIdentName: '[path][name]-[local]-[hash:base64:5]',},},},'sass-loader'],exclude: /node_modules/},{test: /\.less$/, use: [ 'style-loader', {loader: 'css-loader',options: {modules: {localIdentName: '[path][name]-[local]-[hash:base64:5]',},},},'less-loader'],exclude: /node_modules/}]},// 配置省略后缀名和路径别名
    resolve: {// 默认.js, .jsonextensions: [".js", ".jsx", ".json"],alias: {'@': path.join(__dirname, "./src")}}
}
import React from 'react'
import hi from '@/css/hi.less'export default class Hi extends React.Component{// 构造器
    constructor(props) {super(props)this.state = {name: 'god',seg: 0}}handleClink() {this.setState({seg: this.state.seg + 1,name: this.state.name.substring(0, 3) + this.state.seg})}render() {return (<div className={hi.containerStyle2}>{"创建组件方式二"}<br />{"获取props值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}<div className={hi.content}>{"获取state值(读写):" + this.state.name}</div><br /><button onClick={this.handleClink.bind(this)}>修改state值</button></div>)
    }
}
.containerStyle2{.content{color: red}
}
  • 样式作用域(默认全局)(配置局部)普通样式模块化局部或全局
// hi.less
// :local:会被模块化,隐式使用,所以不用显示使用
// :local(.containerStyle2)与.containerStyle2效果一致
// :global:不会被模块化
:local(.containerStyle2){:global(.content){color: red}
}
import React from 'react'
import hi from '@/css/hi.less'export default class Hi extends React.Component{// 构造器
    constructor(props) {super(props)this.state = {name: 'god',seg: 0}}handleClink() {this.setState({seg: this.state.seg + 1,name: this.state.name.substring(0, 3) + this.state.seg})}render() {return (<div className={hi.containerStyle2}>{"创建组件方式二"}<br />{"获取props值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}<div className='content'>{"获取state值(读写):" + this.state.name}</div><br /><button onClick={this.handleClink.bind(this)}>修改state值</button></div>)
    }
}
  • 使用外部样式bootstrap@3.3.7
npm i bootstrap@3.4.1 -S
npm i url-loader file-loader -D
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')// 创建一个插件实例对象
const htmlPlugin = new HtmlWebpackPlugin({template: path.join(__dirname, './src/index.html'),  // 源文件路径filename: 'index.html'                               // 生成内存中首页的名称
})// 向外暴露一个配置对象
// 因为 webpack 是基于Node构建的;所以 webpack 支持所有Node API 和语法
// webpack默认只能处理.js后缀名的文件,需要配置规则
module.exports = {mode: 'development', // development   production
    plugins: [htmlPlugin],// 所有第三方模块的配置规则
    module: {rules: [{test: /\.js|jsx$/, use: ['babel-loader'], exclude: /node_modules/},{test: /\.ttf|woff|woff2|eot|svg|jpg|png|gif$/, use: ['url-loader']},{test: /\.css$/, use: ['style-loader', 'css-loader']},{test: /\.scss$/, use: ['style-loader', {loader: 'css-loader',options: {modules: {localIdentName: '[path][name]-[local]-[hash:base64:5]',},},},'sass-loader'],exclude: /node_modules/},{test: /\.less$/, use: [ 'style-loader', {loader: 'css-loader',options: {modules: {localIdentName: '[path][name]-[local]-[hash:base64:5]',},},},'less-loader'],exclude: /node_modules/}]},// 配置省略后缀名和路径别名
    resolve: {// 默认.js, .jsonextensions: [".js", ".jsx", ".json"],alias: {'@': path.join(__dirname, "./src")}}
import React from 'react'
import hi from '@/css/hi.less'
import 'bootstrap/dist/css/bootstrap.css'export default class Hi extends React.Component{// 构造器
    constructor(props) {super(props)this.state = {name: 'god',seg: 0}}handleClink() {this.setState({seg: this.state.seg + 1,name: this.state.name.substring(0, 3) + this.state.seg})}render() {return (<div className={hi.containerStyle2}>{"创建组件方式二"}<br />{"获取props值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}<div className='content'>{"获取state值(读写):" + this.state.name}</div><br /><button onClick={this.handleClink.bind(this)} className="btn btn-primary">修改state值</button></div>)
    }
}

11.React语法之组件事件

import React from 'react'
import hi from '@/css/hi.less'
import 'bootstrap/dist/css/bootstrap.css'export default class Hi extends React.Component{// 构造器
    constructor(props) {super(props)this.state = {name: 'god',seg: 0,nickName: [{id: 1, name: 'sa'},{id: 2, name: 'da'}, {id: 3, name: 'adac'},{id: 4, name: 'asx'}]}}handleClink() {console.log(this)this.setState({seg: this.state.seg + 1,name: this.state.name.substring(0, 3) + this.state.seg})}handleClinkNickName(item) {console.log("state nickName: {id=" + item.id + ",name=" + item.name + "}")}render() {return (<div className={hi.containerStyle2}>{"创建组件方式二"}<hr />{"获取props值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}<div className='content'>{"获取state值(读写):" + this.state.name}</div><hr /><button onClick={this.handleClink.bind(this)} className="btn btn-primary">修改state值</button><hr />{this.state.nickName.map(item =>{return (<div key={item.id}>{item.name}<button onClick={this.handleClinkNickName.bind(this, item)} className="btn btn-primary">获取本item值</button></div>)
        })}</div>)
    }
}

12.webpack语法之组件抽离成独立文件,在src下创建hello文件夹,并在其下创建Hello.jsx和Hi.jsx文件,修改index.js

// Hello.jsx
import React from 'react'// 创建组件方式一
export default function Hello(props) {return (<div className="container">{"创建组件方式一: 接收值(只读):{name=" + props.name + ",age=" + props.age + ",sex=" + props.sex + "}"}</div>)
}
// Hi.jsx
import React from 'react'export default class Hi extends React.Component{render() {return (<div className="container">{"创建组件方式二: 接收值(只读):{name=" + this.props.name + ",age=" + this.props.age + ",sex=" + this.props.sex + "}"}</div>)
    }
}
import React from 'react'
import ReactDOM from 'react-dom'// 创建组件方式一二
import Hello from './hello/Hello.jsx'
import Hi from './hello/Hi.jsx'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <div>欢迎</div>
const div = React.createElement('div', null, '欢迎')
// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈', div)const a = "欢迎来到JSX"
const b = ['sad', 'da', 'daszc', 'dafc']
const c = {name: 'pascall',age: 20,sex: 'man'
}// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(<div className="continer"><Hello {...c} /><hr /><Hi  {...c} /></div>, document.getElementById('app'))

13.webpack语法之配置省略后缀名(webpack.config.js)

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')// 创建一个插件实例对象
const htmlPlugin = new HtmlWebpackPlugin({template: path.join(__dirname, './src/index.html'),  // 源文件路径filename: 'index.html'                               // 生成内存中首页的名称
})// 向外暴露一个配置对象
// 因为 webpack 是基于Node构建的;所以 webpack 支持所有Node API 和语法
// webpack默认只能处理.js后缀名的文件,需要配置规则
module.exports = {mode: 'development', // development   production
    plugins: [htmlPlugin],// 所有第三方模块的配置规则
    module: {rules: [{test: /\.js|jsx$/, use: ['babel-loader'], exclude: /node_modules/}]},// 配置省略后缀名
    resolve: {// 默认.js, .jsonextensions: [".js", ".jsx", ".json"]}
}
import React from 'react'
import ReactDOM from 'react-dom'// 创建组件方式一二
import Hello from './hello/Hello'
import Hi from './hello/Hi'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <div>欢迎</div>
const div = React.createElement('div', null, '欢迎')
// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈', div)const a = "欢迎来到JSX"
const b = ['sad', 'da', 'daszc', 'dafc']
const c = {name: 'pascall',age: 20,sex: 'man'
}// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(<div className="continer"><Hello {...c} /><hr /><Hi  {...c} /></div>, document.getElementById('app'))

14.webpack语法之配置路径别名

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')// 创建一个插件实例对象
const htmlPlugin = new HtmlWebpackPlugin({template: path.join(__dirname, './src/index.html'),  // 源文件路径filename: 'index.html'                               // 生成内存中首页的名称
})// 向外暴露一个配置对象
// 因为 webpack 是基于Node构建的;所以 webpack 支持所有Node API 和语法
// webpack默认只能处理.js后缀名的文件,需要配置规则
module.exports = {mode: 'development', // development   production
    plugins: [htmlPlugin],// 所有第三方模块的配置规则
    module: {rules: [{test: /\.js|jsx$/, use: ['babel-loader'], exclude: /node_modules/}]},// 配置省略后缀名和路径别名
    resolve: {// 默认.js, .jsonextensions: [".js", ".jsx", ".json"],alias: {'@': path.join(__dirname, "./src")}}
}
import React from 'react'
import ReactDOM from 'react-dom'// 创建组件方式一二
import Hello from '@/hello/Hello'
import Hi from '@/hello/Hi'// 1.创建虚拟DOM元素
// parm1:字符串,元素名称
// parm2:对象或null,元素属性
// parm3:子节点(虚拟DOM或文本节点)
// ...
// parmn:子节点
// <div>欢迎</div>
const div = React.createElement('div', null, '欢迎')
// <h1 id="header">首页</h1>
const h1 = React.createElement('h1', {id: 'header'}, '首页,哈哈', div)const a = "欢迎来到JSX"
const b = ['sad', 'da', 'daszc', 'dafc']
const c = {name: 'pascall',age: 20,sex: 'man'
}// 2.渲染虚拟DOM
// parm1:虚拟DOM
// parm2:挂在节点
ReactDOM.render(<div className="continer"><Hello {...c} /><hr /><Hi  {...c} /></div>, document.getElementById('app'))

github.com-ReactDemo源码

转载于:https://www.cnblogs.com/pascall/p/11482073.html

相关文章:

python创建mysql数据库_python 怎么创建create mysql的数据库

展开全部 我采用的是MySQLdb操作的MYSQL数据库。先来一个简单的例2113子吧&#xff1a; import MySQLdb try: connMySQLdb.connect(hostlocalhost,userroot,passwdroot,dbtest,port3306) curconn.cursor() cur.execute(select * from user) cur.close() conn.close() except My…

杂谈---改变个人习惯

在提升编码技术的过程&#xff0c;自己也在生活中学到了很多。发现了自己的很多缺陷&#xff1a;不够勇敢、不够冒险、骄傲的无厘头&#xff0c;还有自己对情绪的掌控远没有自己想象的那么有火候&#xff0c;这段时间也得好好谢谢她&#xff0c;要不然我压根意识不到问题有多严…

ldconcig详解

ldconfig是一个动态链接库管理命令&#xff0c;为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfigldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib…

第3章—高级装配—条件化的Bean

条件化的Bean 通过活动的profile&#xff0c;我们可以获得不同的Bean。Spring 4提供了一个更通用的基于条件的Bean的创建方式&#xff0c;即使用Conditional注解。 Conditional根据满足某个特定的条件创建一个特定的Bean。比如&#xff0c;当某一个jar包在一个类路径下时&#…

c#委托与事件(二)

这篇博客是在上篇的基础开始讲述了一下委托的一些用法&#xff0c;首先我举一个例子说明了一下前面章节的知识点&#xff0c;接下来我说了将方法作为参数传递的一个案例&#xff0c;接下来实现了一个委托实现冒泡排序的方法&#xff0c;如果你们和我一样正在学习&#xff0c;希…

互联网公司java面试题(一)

1、JDK和JRE区别&#xff1f; JDK是整个JAVA的核心&#xff0c;包括了Java运行环境JRE&#xff0c;一堆Java工具和Java基础的类库。通过JDK开发人员将源码文件(java文件)编译成字节码文件(class文 件)。JRE是Java运行环境&#xff0c;不含开发环境&#xff0c;即没有编译器和调…

python属于哪种类型的语言_Python是什么类型的编程语言,有什么特性

由于近几年人工智能的不断发展&#xff0c;Python也跟着火了&#xff0c;因为Python是深度学习技术的主流应用编程语言。同时它的应用场景很多&#xff0c;被称为“胶水语言”。下面给大家科普一下Python这门神奇的编程语言&#xff0c;以及语言特性&#xff0c;帮大家更清晰的…

Linux下C语言线程池的实现(1)

http://hi.baidu.com/lingiloveyou/blog/item/21e57cf3322a6b40342accc7.html 什么时候需要创建线程池呢&#xff1f;简单的说&#xff0c;如果一个应用需要频繁的创建和销毁线程&#xff0c;而任务执行的时间又非常短&#xff0c;这样线程创建和销毁的带来的开销就不容忽视&am…

一篇简单易懂的原理文章,让你把JVM玩弄与手掌之中

jvm原理 Java虚拟机是整个java平台的基石&#xff0c;是java技术实现硬件无关和操作系统无关的关键环节&#xff0c;是java语言生成极小体积的编译代码的运行平台&#xff0c;是保护用户机器免受恶意代码侵袭的保护屏障。JVM是虚拟机&#xff0c;也是一种规范&#xff0c;他遵循…

python代码画皮卡丘_Python气象绘图实例我们一起画台风(代码+数据)

前段时间袭击中国的超强台风“利奇马”&#xff0c;以及这两天袭击美国的五级飓风“多利安”&#xff0c;让我们感受到了大自然的力量。所以&#xff0c;今天分享一个简单的Python实例&#xff0c;也算是延续前面python气象绘图系列(点击链接1&#xff1b;点击链接2)&#xff0…

Windows Socket编程笔记之最简单的小Demo

Windows Socket编程的大致过程:服务器端:----过程-------------对应的API------- 0.初始化 | WSAStartup() 1.创建Socket | socket() 2.绑定Socket | bind() 3.监听 | listen() 4.接受连接 | accept() 5.接收/发送数据 | recv()/send()…

React项目实战

一、环境搭建 1.安装react-cli脚手架&#xff08;保证提前安装好Node最新版本&#xff09; npm config set registry http://registry.npm.taobao.org/ npm config set sass-binary-site http://npm.taobao.org/mirrors/node-sass npm isntall -g create-react-app 2.查看react…

win7完美兼容DynamipsGUI(小凡模拟器)攻略

博主又是好久没写了&#xff0c;今天闲来无事与大家一起分享一下如何在windows7平台下完美兼容DynamipsGUI&#xff08;小凡模拟器&#xff09;的一个小窍门~ 对于学习cisco的朋友来说&#xff0c;DynamipsGUI&#xff08;小凡模拟器&#xff09;一定不陌生&#xff0c;在这就不…

使用PHPExcel 对表格进行,读取和写入的操作。。。。

下面的代码是使用PHPExcel 对多个表格数据进行读取&#xff0c; 然后整合的写入新的表格的方法&#xff01;&#xff01;&#xff01;代码有点粗糙 &#xff0c; 多多保函&#xff01;&#xff01;&#xff01; 这里有些地方注意下&#xff0c;如果你的表格数据过大&#xff0c…

c# .netframwork 4.0 调用 2.0时报错 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。...

“System.IO.FileLoadException”类型的未经处理的异常在 XXX.dll 中发生 其他信息: 混合模式程序集是针对“v2.0.50727”版的运行时生成的&#xff0c;在没有配置其他信息的情况下&#xff0c;无法在 4.0 运行时中加载该程序集。 这时需要改dbconfig配置 在configuration 节点…

python多线程并发_Python进阶记录之基础篇(二十四)

回顾在Python进阶记录之基础篇(二十三)中&#xff0c;我们介绍了进程的基本概念以及Python中多进程的基本使用方法。其中&#xff0c;需要重点掌握多进程的创建方法、进程池和进程间的通信。今天我们讲一下Python中的多线程。线程的基本概念线程是操作系统能够进行运算调度的最…

awk处理文件内容格式

今天运营出了点问题&#xff0c;需要对特定时间段充值数做一个处理&#xff0c;文件格式有特定要求&#xff0c;要符合erlang的格式{roleID,gold}.mysql导出所有数据结果如下【取部分数据看】&#xff1a;kuwo 4 50004106230500 100kuwo 4 50004106230900 …

QQ远程协助没动静?QQ版本有讲究

一位网友觉得电脑反应速度慢了&#xff0c;想通过QQ远程协助让我处理一下。不料接受请求后&#xff0c;等了许久都显示网友电脑的桌面&#xff0c;而网友那边QQ也没有任何提示。 反复尝试了几次都是如此。 询问网友得知他用的QQ为2011版&#xff0c;而我使用的QQ是2008版。难…

java课堂测试样卷-----简易学籍管理系统

程序设计思路&#xff1a;分别建立两个类&#xff1a;ScoreInformation类(用来定义学生的基本信息以及设置set和get函数&#xff09;ScoreManagement类&#xff08;用来定义实现学生考试成绩录入&#xff0c;考试成绩修改&#xff0c;绩点计算等功能的函数&#xff09;和一个主…

python3安装setuptools步骤_setuptools、pip的安装

第2篇分享 安装setuptools 下载setuptools源码setuptools-25.2.0.tar.gz选择需要的版本 这是一个压缩文件&#xff0c;将其解压到桌面&#xff0c;并进入该文件夹 按住shift键后&#xff0c;在文件夹空白处点击鼠标右键&#xff0c;选择&#xff1a;在此处打开命令窗重点&#…

如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本

等下要去坐车&#xff0c;今天就不继续唠叨开发过程了&#xff0c;来谈一下普遍比较关心的后台语言问题。学习Ext JS&#xff0c;笔者一直强调学习的中心思路是“界面与数据是分离”。只要好好掌握这个思路&#xff0c;深入了解Ext JS的运作过程&#xff0c;就不会为后台语言使…

[面试]future模式

Future模式 什么是future模式? 传统单线程环境下&#xff0c;调用函数是同步的&#xff0c;必须等待程序返回结果后&#xff0c;才可进行其他处理。 Futrue模式下&#xff0c;调用方式改为异步。 Futrue模式的核心在于&#xff1a;充分利用主函数中的等待时间&#xff0c;利用…

java ide

tidespringsource sts a vmware product plugin:Aptana Studio 3(集成了Git) Run on Jettyeclipse for jee plugin:JBoss Tools,m2eclipe,spirng tools,svn

成长秘笈:是你教我,不是我教你

郑昀 20180622 “谢谢你&#xff0c;你是第一个面试的时候跟我说这么详细的。那我到你们公司之后怎么就能成长了呢&#xff1f;” “你们这些人最大的问题是出不了方案。 为什么出不了方案&#xff1f; 因为没有养成深度思考问题的习惯。 实现方案、算法、数据迁移、准备数据、…

计算机网络面试题(一)

1、OSI&#xff0c;TCP/IP&#xff0c;五层协议的体系结构&#xff0c;以及各层协议 OSI分层 &#xff08;7层&#xff09;&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层&#xff08;4层&#xff09;&#xff1a;网络接口 网络层、运…

Ubuntu下安装和配置Apache2

在Ubuntu中安装apache 安装指令&#xff1a;sudo apt-get install apache2 安装结束后&#xff1a; 产生的启动和停止文件是&#xff1a;/etc/init.d/apache2 启动&#xff1a;sudo apache2ctl -k start 停止&#xff1a;sudo apache2ctl -k stop 重新启动&#xff1a;sudo apa…

苹果电脑安装python3密码_mac系统安装Python3初体验

前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7。 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 Xcode command line tool 1.2.1 打开命令行terminal工具 control space 输入terminal 回车 1.2.2 安装Xcode command line tool…

【IBM Tivoli Identity Manager 学习文档】3 系统部署

作者&#xff1a;gnuhpc 出处&#xff1a;http://www.cnblogs.com/gnuhpc/ ITIM 5.0 单服务器配置和部署。 部署ITIM之前要对其组件进行部署&#xff1a; IBM DB2 Enterprise 9.1 with FP2 IBM WebSphere Application Server 6.1 with FP9 IBM Tivoli Directory Server 6.2 IB…

数据结构Java版之红黑树(八)

红黑树是一种自动平衡的二叉查找树&#xff0c;因为存在红黑规则&#xff0c;所以有效的防止了二叉树退化成了链表&#xff0c;且查找和删除的速度都很快&#xff0c;时间复杂度为log(n)。 什么是红黑规则&#xff1f; 1.根节点必须是黑色的。 2.节点颜色要么是红要么是黑。 3.…

你真的了解Grid布局吗?

Grid网格布局 概述&#xff1a;Grid将容器划分为一个个网格&#xff0c;通过任意组合不同的网格&#xff0c;做出你想想要的布局 Grid与flex布局相似&#xff0c;将整个Grid分为了容器与子项&#xff08;格子&#xff09; Grid容器的三个重要的概念&#xff1a; 行和列单元格网…