update
This commit is contained in:
parent
8307d463c2
commit
d3a0b60871
@ -13,6 +13,7 @@ categories:
|
||||
最近在开发中用到了 java 的线程池,然后就很疑惑这个线程池到底要不要手动关闭,感觉是要关闭的,但是没人强调线程池用完要关闭。so 今天来试验下到底线程池用完要不要关闭。
|
||||
|
||||
**为避免引起误解被喷,特此说明下:下面的代码是为了验证 gc 在回收线程池对象时,线程池对象管理的线程是否会销毁掉。如下在循环中创建线程池是为了模拟线程池使用一次后不再使用的情况。
|
||||
|
||||
虽然通常线程池都是作为全局变量使用,但是如果作为局部变量使用呢?使用完要不要手动关闭掉?**
|
||||
|
||||
<!-- more -->
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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 并发编程的底层构建。然而,在实际编程中,应该经可能的远离底层结构,毕竟太底层的东西用起来是比较容易出错的,特别是并发编程,既难以调试,也难以发现问题,我们还是使用由并发处理的专业人员实现的较高层次的结构要方便、安全得多。
|
||||
|
||||
# 阻塞队列
|
||||
|
||||
|
@ -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)
|
||||
|
38
前端/react/react实战/3.react实战之多人聊天室-非核心功能实现.md
Normal file
38
前端/react/react实战/3.react实战之多人聊天室-非核心功能实现.md
Normal file
@ -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
|
||||
```
|
||||
|
||||
# 注册功能实现
|
Loading…
x
Reference in New Issue
Block a user