摘要:
前面介绍了线程的基本用法,以及多线程并发的问题处理,但实际开发中往往存在许多性质相似的任务,比如批量发送消息、批量下载文件、批量进行交易等等。这些同类任务的处理流程一致,不存在资源共享问题,相互之间也不需要通信交互,总之每个任务都可以看作是单独的事务,仿佛流水线上的原材料经过一系列步骤加工之后变为成品。可要是开启分线... 阅读原文
2019-05-30 11:41:02 阅读(2435) 评论(0)
摘要:
前言
本篇文章主要介绍的是SpringBoot项目实现文件上传和邮件发送的功能。
SpringBoot 文件上传
说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码。
开发准备
环境要求
JDK:1.8
SpringBoot:1.5.9.RELEASE
首先还是Maven的相关依赖:
pom.xml文... 阅读原文
2019-05-30 10:34:07 阅读(2287) 评论(0)
摘要:
一、为什么要用Maven多模块
假设有这样一个项目,很常见的Java Web应用。在这个应用中,我们分了几层:
Dao层负责数据库交互,封装了Hibernate交互的类。
Service层处理业务逻辑,放一些Service接口和实现相关的Bean。
Web层负责与客户端交互,主要有一些Structs的A... 阅读原文
2019-05-30 08:46:08 阅读(2308) 评论(0)
摘要:
个人理解:
Set接口是Collection接口的子类,其继承了所有方法,HashSet集合则实现了Set接口,其内部存储数据时依靠哈希表,一个类似数组和链表的结合体。设置空集合时,存在默认的容量和加载因子,再用HashSet对象调用add方法时,其实是先比较其Hash值,若是没有的话,则直接添加到集合中,若有... 阅读原文
2019-05-30 08:18:06 阅读(2217) 评论(0)
摘要:
Files类是一个工具类,提供了大量的静态方法来操作文件、文件夹。
Files类常用方法:
long size(Path path) //返回文件大小
boolean isDirectory(Path path) //是否是文件夹
boolean isExec... 阅读原文
2019-05-30 07:08:01 阅读(2268) 评论(0)
摘要:
这一篇我们说说反射和动态代理,为什么这两个要一起说呢?因为动态代理中会用到反射,而且java中反射的用处太多了,基本上无处不在,而且功能十分强大;
1.反射简介
反射是什么呢?一般都是很专业的说法:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;我最初看这句话我是没看出来什么厉害的地方,运... 阅读原文
2019-05-30 06:00:27 阅读(2273) 评论(0)
摘要:
引言
引用自《阿里巴巴JAVA开发手册》
【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。
说明:使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。
之... 阅读原文
2019-05-30 00:50:06 阅读(1556) 评论(0)
摘要:
概述
ReentrantReadWriteLock是Lock的另一种实现方式,我们已经知道了ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWriteLock允许多个读线程同时访问,但不允许写线程和读线程、写线程和写线程同时访问。相对于排他锁,提高了并发性。在实际... 阅读原文
2019-05-30 00:22:02 阅读(1004) 评论(0)
摘要:
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized。对于当时的我们来说,synchronized是如此的神奇且强大。我们赋予它一个名字“同步”,也成为我们解决多线程情况的良药,百试不爽。但是,随着学习的深入,我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以... 阅读原文
2019-05-29 23:24:02 阅读(957) 评论(0)
摘要:
现在比较流行的操作数据库操作层框架Mybatis,下面我们就来看看Springboot如何整合mybatis, 之前一直在用xml形式写sql,这次依然用xml的方式感觉这种还是比较灵活方便。
添加mybatis关键就是要引入mybatis-spring-boot-starter到pom文件中,如果你用My... 阅读原文
2019-05-29 22:56:02 阅读(1668) 评论(0)