分类标签归档:Java

Java 多线程 Atomic


本节思维导图:

1 Atomic 原子类介绍

Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。

所以,所谓原子类说简单点就是具有原子/原子操作特征的类。

并发包 java.util.concurrent 的原子类都存放在java.util.concurrent.atomic下,如下图所示。

 JUC 原子类概览

根据操作的数据类型,可以将JUC包中的原子类分为4类

基本类型

使用原子的方式更新基本类型

  • AtomicIn...

阅读全文...

Java 多线程 AQS


本节思维导图:

并发编程面试必备:AQS 原理以及 AQS 同步组件总结

1 AQS 简单介绍

AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。

enter image description here

AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore,其他的诸如ReentrantReadWriteLock,SynchronousQueue,FutureTask等等皆是基于AQS的。当然,我们自己也能利用AQS非常轻松容易地构造出符合我们自己需求的同步器。

2 AQS 原理

在面试中被问到并发知识的时候,...

阅读全文...

Java Collections 工具类和 Arrays 工具类常见方法


Collections

Collections 工具类常用方法:

  1. 排序
  2. 查找,替换操作
  3. 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合)

排序操作

void reverse(List list)//反转
void shuffle(List list)//随机排序
void sort(List list)//按自然排序的升序排序
void sort(List list, Comparator c)//定制排序,由Comparator控制排序逻辑
void swap(List list, int i , int j)//交换两个索引位置的元素
void ro...

阅读全文...

Java final,static,this,super 关键字总结


final 关键字

final关键字主要用在三个地方:变量、方法、类。

  1. 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

  2. 当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。

  3. 使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不...

阅读全文...

Eclipse Maven spring-mvc


1.创建Maven Web项目,Archetype选择 archetype-maven-webapp

2.添加spring-mvc依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId...

阅读全文...

Eclipse Maven Servlet freemarker


1.创建Maven Web项目,Archetype选择 archetype-maven-webapp

2.添加Servlet依赖

<dependency >
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
</dependency>

3.添加freemarker依赖

<dependency>
    &l...

阅读全文...

org.apache.maven.archiver.MavenArchiver.getManifest


使用https://start.spring.io/创建的项目,使用Eclipse导入会有错误:

org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)

解决办法:升级Eclipse Maven插件

1、点击help->install new software

2、出现下面弹窗后点击Add

3、输入:http://repo1.maven.org/mave...

阅读全文...

Eclipse Maven mybatis MySQL


1.创建Maven项目,选择Archetype为archetype-maven-quickstart

2.添加mysql依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

注意:版本太低会有问题,这里使用5.1.6测试通过

3.mybatis依赖

<dependen...

阅读全文...

Eclipse Maven MySQL Hibernate


1.创建Maven项目,选择Archetype为archetype-maven-quickstart

2.添加mysql依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.0.2</version>
</dependency>

注意:版本对应

3.添加Hibernate依赖

<dependency>
    <...

阅读全文...