thymeleaf3与springboot2的使用
Thread类
Thread的生命周期
new状态
即通过new关键字创建的一个Thread对象,此时与一个普通的Java对象无异。
Runnable状态
就绪状态,线程通过调用start方法后,不会立即被CPU执行,而是具备可执行的资格,期间等待CPU资源。
Running状态
运行状态,此时才执行线程的逻辑代码。同时,running状态下的线程也是runnable状态的(CPU的高速切换执行),但反过来不成立。
Blocked状态
阻塞状态只有在running状态下才会进入(出现),即
- 线程逻辑中调用sleep、wait方法。
- 进行某个阻塞的IO操作
- 等待获取某个锁资源,从而加入了该锁的阻塞队列
Terminated状态
线程死亡状态,如线程正常结束,运行出错,jvm崩溃等。死亡的线程不能在转换到任何其他状态,也不能被重新启动start[详情见start()方法源码)]。
Spring boot使用POI导出EXCEL的简单教程
为什么写这笔记
- 导出excel在web管理系统中是一个经典的功能。
- 项目已经有新的解决方案,即让前端基于获取的json数据通过js插件来生成excel。好处在于任何的页面上的json数据都可以这样导出Excel,方便很多。
- 所以,后端已经不需要提供这个功能,删除无用代码,把自制的工具代码搬到笔记这边
centos7.2 FastDFS分布式文件系统单机搭建
本人这两天经历了FastDFS分布式文件系统的配置折磨,随将这个坑写下来,其实也很简单。
先来看看FastDFS的介绍,看看你是不是需要这个服务。
简单了解一下FastDFS分布式文件系统
本人的系统操作环境 centos 7.2 64位
截止2018/02这是一个最新版最稳定的教程,因为该项目2017/05 已经没有再更新了(也不知道会不会继续更新),版本的差异会使得安装配置出错,请及时检查github地址上的版本
这是余庆老师的github地址
本篇是单机配置教程,但已经是完整的FastDFS配置,与分布式配置的差异在于增加不同的组和更多的服务器。(如果你了解过fastdfs你应该知道 分组 的概念)如果对于linux不熟悉,请细心操作(面向百度编程)
多线程问题及解决方法
本文属于多线程的学习笔记,并不成完整的只是体系
安全性问题
首先需要确认的是: 线程安全问题都是由全局变量及静态变量引起的,即共享资源。
若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;
若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
- 线程安全性(定义):当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步和协同,
- 这个类都能表现出正确的行为,那么就称这个类的线程安全的。
- 竞态条件:当多个线程竞争操作相同资源时,其中访问资源的顺序是重要的,称为竞态条件。
- 临界区:导致竞态条件的代码部分称为临界区。临界区用于表示公共资源或共享数据,可以被多个线程使用,但任意时刻只有一个线程使用它,一旦临界区的资源被占用,其他线程想要使用这个资源,就必须等待。
美好的生活从相信假象开始
一、美好的生活从相信假象开始。
如果一个人的生活没有假象,那他肯定生活在痛苦之中。这是旁观者和其自身都能一致感受的,由现实带来的真实感。
二、人生最大的悲剧是人与人之间无法感同身受。