自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 详解java并发原子类AtomicInteger(基于jdk1.8源码分析)

ava并发包里面的类一直是学习和面试的重点,这篇文章主要是对java并发包的其中一个类AtomicInteger的讲解。从为什么要出现AtomicInteger再到其底层原理来一个分析。一、从a++说起为什么使用AtomicInteger我们知道java并发机制中主要有三个特性需要我们去考虑,原子性、可见性和有序性。synchronized关键字可以保证可见性和有序性却无法保证原子性。而这个AtomicInteger的作用就是为了保证原子性。我们先看一个例子。在上面的这个例子中,我们定义了一

2020-07-14 21:17:18 157

原创 java volatile关键字作用及使用场景

1. volatile关键字的作用:保证了变量的可见性(visibility)。被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象。如以下代码片段,isShutDown被置为true后,doWork方法仍有执行。如用volatile修饰isShutDown变量,可避免此问题。public class VolatileTest3 { static class Work { boolean isShutDown = false;...

2020-07-14 21:10:03 393 1

转载 创建Gradle项目

在阅读或实践本文中的实例前,必须首先确保已将Gradle插件安装到Eclipse中。如果没有,可以点击下面的链接查看Gradle安装说明:https://blog.csdn.net/qq_42225507/article/details/88656218后续https://blog.csdn.net/qitongce/article/details/72466318...

2019-03-19 11:00:14 179

转载 eclipse 安装gradle 插件的三种方式

前言说明:Gradle也是一种通过依赖配置减少jar下载的方式,类似于Maven的原理。环境要求:环境jdk一定要是1.7以上,否则插件安装会失败。项目地址:https://github.com/eclipse/buildship原文地址 https://blog.csdn.net/boonya/article/details/533231191.离线安装方式第一步:下载...

2019-03-19 10:23:30 8743 2

原创 HashMap、TreeMap和ArrayList的替代

2019-03-12 22:13:31 479

转载 javadoc制作

当一个java或java web项目功能代码完成之后,通常我们会将这个项目发布。于是,如何让别人很轻松容易地了解或使用我们开发的项目就显得十分重要了。javadoc正是起着这样的作用,人们通过阅读项目的javadoc文档了解项目中各个类或接口的功能,从而更方便地使用我们的项目。下面讲解一下如何高效便捷地之所java项目doc文档。Step1:写注释,如何写j...

2019-03-04 11:40:39 429

转载 CountDownLatch、CyclicBarrier和Semaphore

在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,个人称他们为闭锁、循环锁和信号锁,为了方便记忆。今天我们就来学习一下这三个辅助类的用法。  以下是本文目录大纲:  一.CountDownLatch用法  二.CyclicBarrier用法  三.Semaphore用...

2019-02-20 15:54:29 121

转载 Timer的缺陷 用ScheduledExecutorService替代

1、Timer管理延时任务的缺陷a、以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗;然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,超过了两个任务的间隔时间,会发生一些缺陷:下面看例子:Timer的源码:public class Timer {    /**   ...

2019-02-20 11:54:12 106

转载 Java并发编程Semaphore的工作原理、源码分析及使用示例

简介:在多线程程序设计中有三个同步工具需要我们掌握,分别是Semaphore(信号量),countDownLatch(倒计数门闸锁),CyclicBarrier(可重用栅栏)欢迎探讨,如有错误敬请指正1. 信号量Semaphore的介绍我们以一个停车场运作为例来说明信号量的作用。假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了三辆车,看门人允许其中它们进入进入,然后...

2019-02-20 11:32:59 80

转载 CAP 定理的含义

 理解计算机CAP 定理的含义作者: 阮一峰日期: 2018年7月16日 分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。本文介绍该定理。它其实很好懂,而且是显而易见的。下面的内容主要参考了 Michael Whit...

2019-02-19 14:29:13 168

原创 Nginx 403 Forbidden 最终解决

我是在在本地用虚拟机中通过yum安装nginx的,安装一切正常,但是访问时报403,于是查看nginx日志,路径为/var/log/nginx/error.log。打开日志发现报错Permission denied,详细报错如下:1.    open() "/data/www/1.txt" failed (13: Permission denied), client: 192.168.1....

2018-11-28 09:47:48 2229

转载 enctype="multipart/form-data"表单传值问题

问题:form表单的enctype设置为multipart/form-data后,表单中除了文件后台能拿到,其他值后台都拿不到。知识点:一、application/x-www-form-urlencoded:1、表单中的enctype值如果不设置,则默认是application/x-www-form-urlencoded,它会将表单中的数据变为键值对的形式2、如果actio...

2018-11-05 14:39:21 447

转载 mina IoBuffer 常用方法

Limit(int) 如果position>limit, position = limit,如果mark>limit, 重置mark Mark() 取当前的position的快照标记mark Reset() 恢复position到先前标记的mark Cl...

2018-10-31 13:51:35 193

转载 mybatis中#{}和${}的区别

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".  2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为or...

2018-10-18 10:17:49 100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除