From 40104d978fd30d53a17da7c21d87f09ae66fad93 Mon Sep 17 00:00:00 2001 From: fanxb Date: Fri, 21 Jun 2019 13:48:55 +0800 Subject: [PATCH 1/7] add --- 前端/react/1.antd table 设置单元格单行显示.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 前端/react/1.antd table 设置单元格单行显示.md diff --git a/前端/react/1.antd table 设置单元格单行显示.md b/前端/react/1.antd table 设置单元格单行显示.md new file mode 100644 index 0000000..d89c020 --- /dev/null +++ b/前端/react/1.antd table 设置单元格单行显示.md @@ -0,0 +1,24 @@ +--- +id: "20190507" +date: 2019/05/07 10:58:00 +title: "antd组件中table设置单行显示" +tags: ["react", "antd", "table"] +categories: + - "前端" + - "react" +--- + +今天在开发中遇到了这样一个问题,antd 的 table 组件,在内容太多时会折行显示,如何才能让它不折行并且用省略号显示超出内容呢? + +可以同给给单元格设置这样的 css 来达到效果: + +```css +/* 设置最大宽度,不能用width */ +max-width: 133px; +/* 不折行 */ +white-space: nowrap; +/* 超出部分隐藏 */ +overflow: hidden; +/* 显示... */ +text-overflow: ellipsis; +``` From e769157b6e69ba847a7336c5161a22e9eafb6099 Mon Sep 17 00:00:00 2001 From: fanxb Date: Fri, 21 Jun 2019 13:49:42 +0800 Subject: [PATCH 2/7] update --- 前端/react/1.antd table 设置单元格单行显示.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/前端/react/1.antd table 设置单元格单行显示.md b/前端/react/1.antd table 设置单元格单行显示.md index d89c020..2c8dd79 100644 --- a/前端/react/1.antd table 设置单元格单行显示.md +++ b/前端/react/1.antd table 设置单元格单行显示.md @@ -1,6 +1,6 @@ --- -id: "20190507" -date: 2019/05/07 10:58:00 +id: "20190621" +date: 2019/06/21 10:58:00 title: "antd组件中table设置单行显示" tags: ["react", "antd", "table"] categories: From 46d59134b1a02834a1016cb3d1b8c70c042df05a Mon Sep 17 00:00:00 2001 From: fanxb Date: Mon, 24 Jun 2019 13:47:30 +0800 Subject: [PATCH 3/7] update --- java/web相关/1.web跨域相关问题.md | 14 +++++++------- wx.png | Bin 0 -> 36769 bytes 二维码推广图.png | Bin 78038 -> 0 bytes 3 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 wx.png delete mode 100644 二维码推广图.png diff --git a/java/web相关/1.web跨域相关问题.md b/java/web相关/1.web跨域相关问题.md index 9f6e738..416775b 100644 --- a/java/web相关/1.web跨域相关问题.md +++ b/java/web相关/1.web跨域相关问题.md @@ -1,14 +1,12 @@ --- -id: '2019-03-05-13-41' -date: '2019/03/05 13:41' -title: 'web跨域及cookie学习' -tags: ['web', 'http请求跨域', 'cookie共享', 'get', 'post'] +id: "2019-03-05-13-41" +date: "2019/03/05 13:41" +title: "web跨域及cookie学习" +tags: ["web", "http请求跨域", "cookie共享", "get", "post"] categories: - - 'web' + - "web" --- -**本篇原创发布于:**[FleyX 的个人博客](http://tapme.top/blog/detail/2019-03-05-13-41) -   之前对于跨域相关的知识一致都很零碎,正好现在的代码中用到了跨域相关的,现在来对这些知识做一个汇总整理,方便自己查看,说不定也可能对你有所帮助。 **本篇主要内容如下:** @@ -110,3 +108,5 @@ server { - Domain : `.example`,path : `/a`可获取 cookie:http://example:8081/a , https://localhost:8081/a , http://test.example:889/a **注意**:在跨域请求中,即时目标地址有 cookie 且发起请求的页面也能读取到该 cookie,浏览器也不会将 cookie 自动设置到该跨域请求中。比如在http://localhost:8082/a页面中请求http://localhost:8081/abc,这两个地址下拥有共享cookie,http请求也不会携带cookie。 + +**本篇原创发布于:**[FleyX 的个人博客](http://tapme.top/blog/detail/2019-03-05-13-41) diff --git a/wx.png b/wx.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ffed42113d50c3b6cab657cc94099e2f9ec04c GIT binary patch literal 36769 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 Date: Thu, 27 Jun 2019 17:48:21 +0800 Subject: [PATCH 4/7] add --- java/web相关/2.spring boot SSO单点登录.md | 23 +- .../react/react实战/1.react实战_聊天室-总览.md | 20 + .../2.react实战之多人聊天室-react环境搭建.md | 469 ++++++++++++++++++ .../1.antd table 设置单元格单行显示.md | 0 4 files changed, 498 insertions(+), 14 deletions(-) create mode 100644 前端/react/react实战/1.react实战_聊天室-总览.md create mode 100644 前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md rename 前端/react/{ => 其他}/1.antd table 设置单元格单行显示.md (100%) diff --git a/java/web相关/2.spring boot SSO单点登录.md b/java/web相关/2.spring boot SSO单点登录.md index 949de53..b4815c2 100644 --- a/java/web相关/2.spring boot SSO单点登录.md +++ b/java/web相关/2.spring boot SSO单点登录.md @@ -1,22 +1,15 @@ --- -id: '2019-03-01-18-52' -date: '2019/03/01 18:52' -title: 'spring boot 基于JWT实现单点登录' -tags: ['spring-boot', 'SSO', '单点登录', 'jwt'] +id: "2019-03-01-18-52" +date: "2019/03/01 18:52" +title: "spring boot 基于JWT实现单点登录" +tags: ["spring-boot", "SSO", "单点登录", "jwt"] categories: - - 'java' - - 'spring boot学习' + - "java" + - "spring boot学习" --- -**本篇原创发布于:**[FleyX 的个人博客](http://tapme.top/blog/detail/2019-03-01-18-52) - -**源码:**[github](https://github.com/FleyX/demo-project/tree/master/1.SSO%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95) - -照例配个图: ![塞尔达,林克](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190301190816.png) -
我叫林克,不是塞尔达
-   最近我们组要给负责的一个管理系统 A 集成另外一个系统 B,为了让用户使用更加便捷,避免多个系统重复登录,希望能够达到这样的效果——用户只需登录一次就能够在这两个系统中进行操作。很明显这就是**单点登录(Single Sign-On)**达到的效果,正好可以明目张胆的学一波单点登录知识。 本篇主要内容如下: @@ -143,4 +136,6 @@ SSO 说:好嘞,这个地址是合法的可以送 jwt 过去,这就跳转 可以看到,在系统 A 登录系统后,系统 B,系统 C 都不再需要输入用户名密码进行登录。如果速度足够快甚至都注意不到调到 SSO 再跳回来的过程。 -  如果有什么问题,可以在下方留言,或者邮件给我。看到都会回复的。 +**源码:**[github](https://github.com/FleyX/demo-project/tree/master/1.SSO%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95) + +**本篇原创发布于:**[www.tapme.top/blog/detail/2019-03-01-18-52](https://www.tapme.top/blog/detail/2019-03-01-18-52) diff --git a/前端/react/react实战/1.react实战_聊天室-总览.md b/前端/react/react实战/1.react实战_聊天室-总览.md new file mode 100644 index 0000000..2782eed --- /dev/null +++ b/前端/react/react实战/1.react实战_聊天室-总览.md @@ -0,0 +1,20 @@ +--- +id: "20190625" +date: 2019/06/25 10:58:00 +title: "react实战之聊天室-1(总览)" +tags: ["react", "antd", "table"] +categories: + - "前端" + - "react" +--- + +一个合格的全栈开发怎么能不会react呢?所以从现在开始系统的学习react开发。目标:完成完成一个简易的多人聊天室,包含前后台。 + +基于`create-react-app`进行开发,选择这个有以下两个原因: + +- 从头开始配置webpack太复杂,不用了解的这么细致。 +- 也不使用`antd pro`,`umi.js`这类开箱即用的,隐藏了太多细节,也不考虑。 + +在学习过程中产生了如下的笔记: + +- [1.react环境搭建](https://www.tapme.top/blog/detail/20190626) \ No newline at end of file diff --git a/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md b/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md new file mode 100644 index 0000000..dcdfc2e --- /dev/null +++ b/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md @@ -0,0 +1,469 @@ +--- +id: "20190626" +date: 2019/06/26 10:58:00 +title: "2.react实战之多人聊天室-react环境搭建" +tags: ["react", "antd", "less", "create-react-web"] +categories: + - "前端" + - "react" +--- + +总集篇:[react 实战之多人聊天室](https://www.tapme.top/blog/detail/20190625) + +本篇是实战系列的第一篇,主要是搭建 react 开发环境,在`create-react-app`的基础上加上如下功能: + +- 按需引入 antd 组件库,支持主题定制 +- 支持 less 语法,并使用 css-module 形式 css +- 支持路由 +- 支持 http 请求 +- 支持 redux + +**注意**:需要 node 版本大于 8.0. + +## 创建 create-react-app + +1. 安装 + +```bash +npm install -g create-react-app +``` + +2. 创建 react 应用 + +```bash +create-react-app chat-room +``` + +生成的目录结构如下图所示: + +![目录结构](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190625160702.png) + +## 配置 antd,less + +有两种方法能够对其配置进行修改: + +- 通过`npm run eject`暴露出配置文件,进行配置修改,相比于下面的方法不太优雅,因此不考虑. +- 通过`react-app-rewired`覆盖配置. + +### 首先安装依赖 + +在 2.1.x 版本的 react-app-rewired 需要配合`customize-cra`来进行配置覆盖。所以需要安装如下依赖: + +- react-app-rewired ,配置覆盖 +- customize-cra ,配置覆盖 +- antd ,ui 库 +- babel-plugin-import ,按需引入 antd +- less ,less 支持 +- less-loader ,less 支持 + +代码如下: + +```bash +npm install --save react-app-rewired customize-cra antd babel-plugin-import less less-loader +``` + +### 修改 package.json + +用`react-app-rewired`替换掉原来的`react-scripts` + +```json +/* package.json */ +"scripts": { +- "start": "react-scripts start", ++ "start": "react-app-rewired start", +- "build": "react-scripts build", ++ "build": "react-app-rewired build", +- "test": "react-scripts test", ++ "test": "react-app-rewired test", +} +``` + +### 创建 config-overrides.js + +在项目根目录,也就是`package.json`的同级目录创建`config-overrides.js`文件.内容如下: + +```javascript +const { override, fixBabelImports, addLessLoader } = require("customize-cra"); + +module.exports = override( + fixBabelImports("import", { + libraryName: "antd", + libraryDirectory: "es", + style: true + }), + addLessLoader({ + localIdentName: "[local]--[hash:base64:5]", + javascriptEnabled: true, + modifyVars: { "@primary-color": "#1DA57A" } + }) +); +``` + +### 使用 css-module + +要使用 css-module 需要将 css 文件命名为`fileName.module.less`,然后就能在组件中引入了,如下: + +```javascript +import React, { Component } from "react"; +import { Button } from "antd"; +import styles1 from "./index.module.less"; + +class Hello extends Component { + render() { + return ( +
+ hello +
world
+ +
heihei
+
+ ); + } +} + +export default Hello; +``` + +## 配置路由 + +首先修改 src 目录结构。改成如下所示: + +![目录结构](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190627115439.png) + +目录解释: + +- assets: 存放图标,小图片等资源文件 +- components:存放公共组件 +- layout: 存放样式组件,用于嵌套路由和子路由中复用代码 +- pages: 存放页面组件 +- redux:存放 redux 相关 + - action: 存放 action + - reducer: 存放 reducer 操作 +- util: 工具类 + +删除`serviceWorker.js`文件,并在`index.js`中删除和它相管的代码。这个是和离线使用相关的。 + +然后安装`react-router`依赖: + +```bash +cnpm install --save react-router-dom +``` + +从路由开始就能体会到 react 一切都是 js 的精髓,react-router-dom 提供了一些路由组件来进行路由操作。本程序使用`history`路由。 + +首先修改`index.js`根组件放到``下,以开启 history 路由。代码如下: + +```javascript +// index.js +import React from "react"; +import ReactDOM from "react-dom"; +import "./index.css"; +import App from "./App"; +import { BrowserRouter } from "react-router-dom"; + +const s = ( + + + +); + +ReactDOM.render(s, document.getElementById("root")); +``` + +然后路由的配置方式有很多种,这里采用代码的方式组织路由,并将将 App.jsx 作为路由配置中心。 + +先加入登录和主页的路由,主要代码如下: + +```javascript + +render() { + const mainStyle = { + fontSize: "0.16rem" + }; + return ( + +
+ + + + + {/* 当前面的路由都匹配不到时就会重定向到/404 */} + + +
+
+ ); +} +``` + +名词解释: + +- Switch: 该组件表示只匹配一个,匹配到后不再继续往下匹配 +- Route:路由组件 +- exact:表示完全匹配,如果开启这个,`/`只匹配`/`,否则匹配所有的路径 +- Redirect:重定向组件,当前面的都不匹配就会匹配这个(因为没有开启`exact`且 path 为`/`),然后重定向到`/404` + +后续用到嵌套路由时会更加深入的讲解路由相关。 + +## 配置 http 请求工具 + +http 请求工具这里选择的是`axios`。 + +首先安装依赖: + +```bash +cnpm install --save axios +``` + +然后编写工具类`util/httpUtil.js`,代码如下: + +```javascript +// httpUtil.js + +import { notification } from "antd"; +import axios from "axios"; + +//定义http实例 +const instance = axios.create({ + // baseURL: "http://ali.tapme.top:8081/mock/16/chat/api/", + headers: { + token: window.token + } +}); + +//实例添加拦截器 +instance.interceptors.response.use( + function(res) { + return res.data; + }, + function(error) { + console.log(error); + let message, description; + if (error.response === undefined) { + message = "出问题啦"; + description = "你的网络有问题"; + } else { + message = "出问题啦:" + error.response.status; + description = JSON.stringify(error.response.data); + //401跳转到登录页面 + } + notification.open({ + message, + description, + duration: 2 + }); + setTimeout(() => { + if (error.response && error.response.status === 401) { + let redirect = encodeURIComponent(window.location.pathname + window.location.search); + window.location.replace("/public/login?redirect=" + redirect); + } + }, 1000); + return Promise.reject(error); + } +); + +export default instance; +``` + +主要实现了如下功能: + +- 自动添加 token,设计前后端通过 jwt 做认证,因此每个请求都要加上 token +- 响应预处理,如果有错误,自动弹窗提示。如果响应码为 401,重定向到登录页面。 + +## 配置 redux + +redux 算是 react 的一大难点。这里我们可以把 redux 理解成一个内存数据库,用一个对象来存储所有的数据. + +对这个数据的修改有着严格的限制,必须通过 reducer 来修改数据,通过 action 定义修改的动作。 + +这里以用户登录数据为例。 + +### 定义 + +1. 首先定义 action,创建文件`redux/action/loginInfoAction.js`,代码如下: + +```javascript +// 定义登录信息在store中的名字 +export const DATA_NAME = "loginInfo"; + +//定义修改loginInfo type +export const CHANGE_LOGIN_INFO = "changeLoginStatus"; + +export const changeLoginInfo = (token, userInfo) => { + return { + type: CHANGE_LOGIN_INFO, + data: { + token, + userInfo + } + }; +}; +``` + +- CHANGE_LOGIN_INFO :定义操作类别 +- changeLoginInfo: 定义一个 action,在组件中调用,传入要修改的数据,在这里加上 type 上传递到 reducer 中处理. + +2. 定义 reducer,创建文件`redux/reducer/loginInfo.js`,代码如下: + +```javascript +import * as loginAction from "../action/loginInfoAction"; + +function getInitData() { + let token, userInfo; + try { + token = localStorage.getItem("token"); + userInfo = JSON.parse(localStorage.getItem("userInfo")); + } catch (e) { + console.error(e); + token = null; + userInfo = null; + } + window.token = token; + window.userInfo = userInfo; + return { + token, + userInfo + }; +} + +const LoginStatusReducer = (state = getInitData(), action) => { + switch (action.type) { + case loginAction.CHANGE_LOGIN_INFO: + return { ...action.data }; + default: + return state; + } +}; + +export default LoginStatusReducer; +``` + +- getInitData 方法用于初始化 userInfo 数据,这里写的比较复杂,会先从 localeStore 中取数据,然后挂载到 window 中,方便`httpUtil`中获取 token。 +- LoginStatusReducer 方法用于处理 action 中的数据,输出处理后的 loginInfo 数据。 + +3. 编写 reducer 汇总类(redux/reducer/index.js),所有 reducer 都要汇总到一个方法中,这样就能生成整个系统的 store 对象。代码如下: + +```javascript +import { combineReducers } from "redux"; +import { DATA_NAME } from "../action/loginInfoAction"; +import loginInfo from "./loginInfo"; + +const data = {}; +data[DATA_NAME] = loginInfo; + +const reducer = combineReducers(data); + +export default reducer; +``` + +4. 编写`redux/index.js`,这里生成真正的数据对象,代码如下: + +```javascript +import { createStore } from "redux"; +import reducer from "./reducer"; + +const store = createStore(reducer); + +export default store; +``` + +5. 最后将 store 绑定到根节点(App.js)中即可,修改部分如下: + +![](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190627165936.png) + +![](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190627170032.png) + +### 使用 + +这里以登录页为例,学习如何获取到 loginInfo 和修改 loginInfo. + +1. 创建登录页组件,`pages/public/Login/index.js` + 登录页代码如下: + +```javascript +import React, { Component } from "react"; +import queryString from "query-string"; +import { Button, Input, message } from "antd"; +import IconFont from "../../../components/IconFont"; +import styles from "./index.module.less"; +import { connect } from "react-redux"; +import { changeLoginInfo, DATA_NAME } from "../../../redux/action/loginInfoAction"; +import axios from "../../../util/httpUtil"; + +function mapStateToProps(state) { + return state[DATA_NAME]; +} + +function mapDispatchToProps(dispatch) { + return { + updateLoginInfo: (token, userInfo) => dispatch(changeLoginInfo(token, userInfo)) + }; +} + +class Login extends Component { + constructor(props) { + super(props); + this.state = { + username: "", + password: "" + }; + this.query = queryString.parse(window.location.search); + } + + usernameInput = e => { + this.setState({ username: e.target.value }); + }; + passwordInput = e => { + this.setState({ password: e.target.value }); + }; + + submit = () => { + axios.post("/public/login", this.state).then(res => { + localStorage.setItem("token", res.token); + localStorage.setItem("userInfo", JSON.stringify(res.userInfo)); + window.token = res.token; + window.userInfo = res.userInfo; + message.success("登录成功"); + this.props.updateLoginInfo(res.token, res.userInfo); + if (this.query.redirect) { + this.props.history.replace(decodeURIComponent(this.query.redirect)); + } else { + this.props.history.replace("/"); + } + }); + }; + + render() { + return ( +
+ // 省略其他部分 + + ... +
+ ); + } +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(Login); +``` + +其中最关键的是下面三个部分: + +- mapStateToProps:本方法从整个 store 中获取需要的数据,传递到 Login 组件的 props 中。 +- mapDispatchToProps:本方法用于修改 store 数据,返回的函数对象也会绑定到 Login 组件的 props 中,其中的 dispath 参数,用于调用 reducer 中的处理函数,根据 changeLoginInfo 返回的 action。 +- connect 方法用于将上面两个函数和 Login 组件绑定起来,这样就能在 props 中获取到了。**如果还有 withRouter**,应将 withRouter 放在最外层。 + +目前登录访问的接口为 yapi 的 mock 数据,真正的后台代码将会在后面编写。 + +## 结尾 + +由于我也是刚开始系统学习 react,有问题的地方希望大家能够指出。 + +源码:[github](https://github.com/FleyX/ChatRoom),切换到 tag:`第一篇:环境搭建`,便可以看到到目前为止的源码。 + +**本文原创发布于:**[www.tapme.top/blog/detail/20190626](http://www.tapme.top/blog/detail/20190626) diff --git a/前端/react/1.antd table 设置单元格单行显示.md b/前端/react/其他/1.antd table 设置单元格单行显示.md similarity index 100% rename from 前端/react/1.antd table 设置单元格单行显示.md rename to 前端/react/其他/1.antd table 设置单元格单行显示.md From 8307d463c29b4f11587da0e62b3a615fcc77b5b1 Mon Sep 17 00:00:00 2001 From: fanxb Date: Thu, 27 Jun 2019 20:29:09 +0800 Subject: [PATCH 5/7] update --- 前端/react/react实战/1.react实战_聊天室-总览.md | 8 +++++--- .../react实战/2.react实战之多人聊天室-react环境搭建.md | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/前端/react/react实战/1.react实战_聊天室-总览.md b/前端/react/react实战/1.react实战_聊天室-总览.md index 2782eed..66cd8c3 100644 --- a/前端/react/react实战/1.react实战_聊天室-总览.md +++ b/前端/react/react实战/1.react实战_聊天室-总览.md @@ -8,13 +8,15 @@ categories: - "react" --- -一个合格的全栈开发怎么能不会react呢?所以从现在开始系统的学习react开发。目标:完成完成一个简易的多人聊天室,包含前后台。 +一个合格的全栈开发怎么能不会 react 呢?所以从现在开始系统的学习 react 开发。目标:完成完成一个简易的多人聊天室,包含前后台。 基于`create-react-app`进行开发,选择这个有以下两个原因: -- 从头开始配置webpack太复杂,不用了解的这么细致。 +- 从头开始配置 webpack 太复杂,不用了解的这么细致。 - 也不使用`antd pro`,`umi.js`这类开箱即用的,隐藏了太多细节,也不考虑。 + + 在学习过程中产生了如下的笔记: -- [1.react环境搭建](https://www.tapme.top/blog/detail/20190626) \ No newline at end of file +- [1.react 环境搭建](https://www.tapme.top/blog/detail/20190626) diff --git a/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md b/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md index dcdfc2e..84527f0 100644 --- a/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md +++ b/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md @@ -34,6 +34,8 @@ npm install -g create-react-app create-react-app chat-room ``` + + 生成的目录结构如下图所示: ![目录结构](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190625160702.png) From d3a0b6087135973cd2033210f3f21357b53df826 Mon Sep 17 00:00:00 2001 From: fanxb Date: Tue, 2 Jul 2019 14:46:32 +0800 Subject: [PATCH 6/7] update --- java/其他/2.Java线程池问题.md | 1 + java/其他/5.java多线程总结1-线程基础.md | 20 +++++----- java/其他/6.java多线程总结2--同步.md | 16 ++++---- ...7.java多线程总结3--阻塞队列和线程安全集合.md | 14 +++---- .../2.react实战之多人聊天室-react环境搭建.md | 4 +- .../3.react实战之多人聊天室-非核心功能实现.md | 38 +++++++++++++++++++ 6 files changed, 66 insertions(+), 27 deletions(-) create mode 100644 前端/react/react实战/3.react实战之多人聊天室-非核心功能实现.md diff --git a/java/其他/2.Java线程池问题.md b/java/其他/2.Java线程池问题.md index e912e25..d2febfb 100644 --- a/java/其他/2.Java线程池问题.md +++ b/java/其他/2.Java线程池问题.md @@ -13,6 +13,7 @@ categories: 最近在开发中用到了 java 的线程池,然后就很疑惑这个线程池到底要不要手动关闭,感觉是要关闭的,但是没人强调线程池用完要关闭。so 今天来试验下到底线程池用完要不要关闭。 **为避免引起误解被喷,特此说明下:下面的代码是为了验证 gc 在回收线程池对象时,线程池对象管理的线程是否会销毁掉。如下在循环中创建线程池是为了模拟线程池使用一次后不再使用的情况。 + 虽然通常线程池都是作为全局变量使用,但是如果作为局部变量使用呢?使用完要不要手动关闭掉?** diff --git a/java/其他/5.java多线程总结1-线程基础.md b/java/其他/5.java多线程总结1-线程基础.md index b848161..708740a 100644 --- a/java/其他/5.java多线程总结1-线程基础.md +++ b/java/其他/5.java多线程总结1-线程基础.md @@ -1,15 +1,13 @@ --- -id: '2019-04-08-20-52' -date: '2019/04/08 20:52' -title: '最全java多线程总结1--线程基础' -tags: ['java', 'thread'] +id: "2019-04-08-20-52" +date: "2019/04/08 20:52" +title: "最全java多线程学习总结1--线程基础" +tags: ["java", "thread"] categories: - - 'java' - - 'java基础' + - "java" + - "java基础" --- -本篇所用全部代码:[github](https://github.com/FleyX/demo-project/tree/master/2.javaThreadDemo) -   《java 核心技术》这本书真的不错,知识点很全面,翻译质量也还不错,本系列博文是对该书中并发章节的一个总结。 # 什么是线程 @@ -110,7 +108,7 @@ public class CustomThreadImplementInterface implements Runnable {   通过查看 Thread 源码可以看到 Thread 类也是 Runnable 接口的一个实现类。 -**PS:的代码全部使用 runnable 创建线程** +**PS:后续代码全部使用 runnable 创建线程** # 线程状态 @@ -164,7 +162,7 @@ public class CustomThreadImplementInterface implements Runnable { ## 守护线程 -  通过调用`Thread.setDaemon(true)`将一个线程转换为守护线程。守护线程唯一的用户是为其他线程提供服务,比如计时线程,定时发送计时信号给其他线程。因此当虚拟机中只有守护线程时,虚拟机就会关闭推出。**不要在守护线程中访问任何资源,比如文件、数据库等** +  通过调用`Thread.setDaemon(true)`将一个线程转换为守护线程。守护线程唯一的用户是为其他线程提供服务,比如计时线程,定时发送计时信号给其他线程。因此当虚拟机中只有守护线程时,虚拟机就会关闭退出。**不要在守护线程中访问任何资源,处理任何业务逻辑** ## 未捕获异常处理器 @@ -192,4 +190,6 @@ public class CustomExceptionHandler implements Thread.UncaughtExceptionHandler {   如果不设置默认处理器且不为独立的线程设置处理器,那么该线程的处理器就为该线程的线程组对象--ThreadGroup(因为线程组对象实现了`Thread.UncaughtExceptionHandler`接口)。 +本篇所用全部代码:[github](https://github.com/FleyX/demo-project/tree/master/2.javaThreadDemo) + **本篇原创发布于:**[https://www.tapme.top/blog/detail/2019-04-08-20-52](https://www.tapme.top/blog/detail/2019-04-08-20-52) diff --git a/java/其他/6.java多线程总结2--同步.md b/java/其他/6.java多线程总结2--同步.md index dc2eab0..6ee22e9 100644 --- a/java/其他/6.java多线程总结2--同步.md +++ b/java/其他/6.java多线程总结2--同步.md @@ -1,15 +1,13 @@ --- -id: '2019-04-10-20-52' -date: '2019/04/10 20:52' -title: '最全java多线程总结2--如何进行线程同步' -tags: ['java', 'thread', 'lock', 'condition', 'synchronized'] +id: "2019-04-10-20-52" +date: "2019/04/10 20:52" +title: "最全java多线程总结2--如何进行线程同步" +tags: ["java", "thread", "lock", "condition", "synchronized"] categories: - - 'java' - - 'java基础' + - "java" + - "java基础" --- -本篇所用全部代码:[github](https://github.com/FleyX/demo-project/tree/master/2.javaThreadDemo) -   上篇对线程的一些基础知识做了总结,本篇来对多线程编程中最重要,也是最麻烦的一个部分——**同步**,来做个总结。   创建线程并不难,难的是如何让多个线程能够良好的协作运行,大部分需要多线程处理的事情都不是完全独立的,大都涉及到数据的共享,本篇是对线程同步的一个总结,如有纰漏的地方,欢迎在评论中指出。 @@ -270,4 +268,6 @@ class Bank { - 如果能用 synchronized 的,尽量用它,这样既可以减少代码数量,减少出错的几率。 - 如果上面都不能解决问题,那就只能使用 Lock/Condition 了。 +本篇所用全部代码:[github](https://github.com/FleyX/demo-project/tree/master/2.javaThreadDemo) + **本文原创发布于:**[https://www.tapme.top/blog/detail/2019-04-10-20-52](https://www.tapme.top/blog/detail/2019-04-10-20-52) diff --git a/java/其他/7.java多线程总结3--阻塞队列和线程安全集合.md b/java/其他/7.java多线程总结3--阻塞队列和线程安全集合.md index 9c5be4b..9ed433b 100644 --- a/java/其他/7.java多线程总结3--阻塞队列和线程安全集合.md +++ b/java/其他/7.java多线程总结3--阻塞队列和线程安全集合.md @@ -1,14 +1,14 @@ --- -id: '2019-04-11' -date: '2019/04/11 00:00:00' -title: '最全java多线程总结3——了解阻塞队列和线程安全集合不' -tags: ['java', 'list', 'set', 'map'] +id: "2019-04-11" +date: "2019/04/11 00:00:00" +title: "最全java多线程总结3——了解阻塞队列和线程安全集合不" +tags: ["java", "list", "set", "map"] categories: - - 'java' - - 'java基础' + - "java" + - "java基础" --- -  看了前两篇你肯定已经理解了 java 并发编程的低层构建。然而,在实际编程中,应该经可能的远离低层结构,毕竟太底层的东西用起来是比较容易出错的,特别是并发编程,既难以调试,也难以发现问题,我们还是使用由并发处理的专业人员实现的较高层次的结构要方便、安全得多。 +  看了前两篇你肯定已经理解了 java 并发编程的底层构建。然而,在实际编程中,应该经可能的远离底层结构,毕竟太底层的东西用起来是比较容易出错的,特别是并发编程,既难以调试,也难以发现问题,我们还是使用由并发处理的专业人员实现的较高层次的结构要方便、安全得多。 # 阻塞队列 diff --git a/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md b/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md index 84527f0..e62e482 100644 --- a/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md +++ b/前端/react/react实战/2.react实战之多人聊天室-react环境搭建.md @@ -464,8 +464,8 @@ export default connect( ## 结尾 -由于我也是刚开始系统学习 react,有问题的地方希望大家能够指出。 +作为一个刚开始学习 react 的菜鸟,欢迎各位大牛批评指正。 -源码:[github](https://github.com/FleyX/ChatRoom),切换到 tag:`第一篇:环境搭建`,便可以看到到目前为止的源码。 +源码:[github](https://github.com/FleyX/ChatRoom),切换到 tag:`第一篇:环境搭建`,便可以看到截止到本篇的源码。 **本文原创发布于:**[www.tapme.top/blog/detail/20190626](http://www.tapme.top/blog/detail/20190626) diff --git a/前端/react/react实战/3.react实战之多人聊天室-非核心功能实现.md b/前端/react/react实战/3.react实战之多人聊天室-非核心功能实现.md new file mode 100644 index 0000000..4b62449 --- /dev/null +++ b/前端/react/react实战/3.react实战之多人聊天室-非核心功能实现.md @@ -0,0 +1,38 @@ +--- +id: "20190628" +date: 2019/06/28 10:58:00 +title: "2.react实战之多人聊天室-登录、注册、重置密码功能前后端实现" +tags: ["react", "antd", "less", "create-react-web"] +categories: + - "前端" + - "react" +--- + +总集篇:[react 实战之多人聊天室](https://www.tapme.top/blog/detail/20190625) + +上一篇搭建了 reat 的环境,本篇正式开始编码了。先实现以下三个通用功能: + +- 注册 +- 登录 +- 重置密码 + +鉴于本人设计水平有限(抠脚),所以这三个页面的风格将参考简书网页版。 + +# 模板编写 + +打开简书的注册页和登录页发现结构都是一样的,背景加上中间的输入框,如下图所示: + +![简书登录页](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190629172621.png) + +观察登录、注册两个页面的结构可以发现真正变化的部分只有中间的表单,所以我们可以将表单外的其他部分作为一个公共模板来编写。 + +创建`src/layout/LoginLayout`目录,然后在目录下建立`index.jsx`,`index.module.less`文件,如下图所示: + +![创建登录模板](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190628192835.png) + +index.jsx 代码如下: + +```javascript +``` + +# 注册功能实现 From 912a83d7d476ce5ff4d604efafa58b6f7a363dba Mon Sep 17 00:00:00 2001 From: fanxb Date: Tue, 2 Jul 2019 14:49:26 +0800 Subject: [PATCH 7/7] update --- java/springboot系列/2.springboot事务处理(自动或手动).md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/springboot系列/2.springboot事务处理(自动或手动).md b/java/springboot系列/2.springboot事务处理(自动或手动).md index cda6aaf..fd268a0 100644 --- a/java/springboot系列/2.springboot事务处理(自动或手动).md +++ b/java/springboot系列/2.springboot事务处理(自动或手动).md @@ -25,6 +25,8 @@ categories: 通过`@Transactional`开启事务。在`UserService`中定义一个事务方法`save`.然后在`UserController`中注入`UserDao`,并调用`save`方法。 + + ```java @Service public class UserService{