7 大脑补丁

尚未进行身份认证

一名Autodidact。

等级
TA的排名 1w+

Java中Synchronized的可重入性和不可中断性的分析和代码验证

简介本文介绍synchronized关键字的两个重要的性质可重入性和不可中断性,我们将用代码来实现和验证这两个性质。明白这种理论性质有什么用?明白了特性你才能懂得Synchronized的作用范围,使用的时候才不容易犯错。一.可重入性可重入性:同一个线程的外层函数获得锁后,内存函数可以直接获取该锁。举个生活中的可重入性的例子:当我们排队的时候,经常遇到有个别不文明的人,他们会让自己的好友直接插队在他的位置,而且有时还一次插队好几个。这就是一个人获得了优先权后,会让投靠他的所有人都获得该权利,

2020-05-28 09:54:51

Java多线程访问Synchronized同步方法的八种使用场景

简介本文将介绍7种同步方法的访问场景,我们来看看着七种情况下,多线程访问同步方法是否还是线程安全的。这些场景是多线程编程中经常遇到的,而且也是面试时高频被问到的问题,所以不管是理论还是实践,这些都是多线程场景必须要掌握的场景。七种使用场景:接下来,我们来通过代码实现,分别判断以下场景是不是线程安全的,以及原因是什么。两个线程同时访问同一个对象的同步方法两个线程同时访问两个对象的同步方法两个线程同时访问(一个或两个)对象的静态同步方法两个线程分别同时访问(一个或两个)对象的同步方法和非同步方法

2020-05-22 09:20:15

Java中synchronized实现类锁的两种方式及原理解析

简介上一篇文章《Java中synchronized实现对象锁的两种方式及原理解析》中,介绍了方法锁的两种实现方式及Synchronized的底层原理,本文将讲解synchronized的类锁的两种实现方式。一.类锁的定义什么是类锁类锁指synchronize修饰的静态方法或指定锁为class对象。类锁来自何处?不同的线程,访问使用类锁的方法的时候,他们获取到的“锁”,其实是Class对象。因为同一个类中有且只有一个Class对象,但同一个类中可以有很多个其他对象。此时,就出现了同一个类中多个对

2020-05-20 09:24:29

Java中synchronized实现对象锁的两种方式及原理解析

简介本文将介绍Java中两种对象锁及其实现方式。分别是同步代码块锁和方法锁。我们将解决上一篇文章《Java中线程安全和线程不安全解析和示例》中提到的线程不安全问题,看看通过synchronized的对象锁,怎样轻松解决该问题。一.同步代码块锁案例:通过同步代码块锁,实现两个线程对同一个全局变量count,各自执行1万次count++,验证结果是否等于2万,而不会出现小于2万的情况。完整代码实现:public class SynchronizeCodeBlockLock implements Run

2020-05-17 19:25:28

Java中线程安全和线程不安全解析和示例

简介本文作为多线程编程的第一篇文章,将从一个简单的例子开始,带你真正从代码层次理解什么是线程不安全,以及为什么会出现线程不安全的情况。文章中将提供一个完整的线程不安全示例,希望你可以跟随文章,自己真正动手运行一下此程序,体会一下多线程编程中必须要考虑的线程安全问题。一.从经典的线程不安全的示例开始经典案例: 两个线程,共同读写一个全局变量count,每个线程执行10000次count++,count的最终结果会是20000吗,在心中猜测一下运行结果?经典案例的代码实现:package com.st

2020-05-16 19:38:25

Intellij IDEA或Pycharm配置Git忽略文件.gitignore(最简单方式)

简介IDEA或者Pycharm在提价代码到GIt时,经常会把项目根目录下的一些编译或输出文件自动添加进来,每次都得手动去掉勾选,十分浪费时间。为了解决此问题,GIt提供了.gitIgnore文件,来过滤不想提交的文件。本文在此基础上,给大家讲解一种方式,值在IDE界面,就完成对.gitIgnore文件文件的配置和生效。不需要安装gitignore插件或者进入系统的CMD命令行操作。IDEA和Pycharm都可以使用,共三个步骤,一分钟轻松搞定。一.在项目根目录创建.gitIgnore文件右键单击项目名

2020-05-11 14:47:56

IntelliJ IDEA下载GitHub私有仓库到本地(新版)

一.简介本文将介绍,如何使用新版IntelliJ IDEA 2020.1将GitHub上的私有项目下载到本地,并测试提交代码到GitHub,以及讲解下可能遇到的问题。什么是私有项目?私有项目就是只有自己和自己指定的开发人员浏览或开发的项目,没有权限的其他人是无法浏览的,也不会知道在你个人仓库中,有这个项目的存在。而公开项目,是所有访问GitHub网站的人,都可以浏览,下载的项目。GitHub在被微软收购以前,私有项目是收费的,想要使用这一功能必须要付费。但现在,我们可以免费的使用私有项目了,你可以写

2020-05-10 09:51:22

IntelliJ IDEA设置方法注释模板并解决入参和返回值为空问题

简介网上的说设置方法注释的模板很多,尝试了很多方法后,发现在方法体外生成的模板入参值和返回值都是null,而放到方法体内的入参值和返回值就可以自动生成。苦试N次,终于发现诀窍。Idea的这个设置真的不太人性化,建议完善。此设置浪费了自己很多时间,固分享于此,望助你解决问题。本方法适用于IntelliJ IDEA 2019.3 x64及之后版本(截止到发稿日期最新版:2020.03版)应该都可以使...

2020-04-28 16:35:47

Freemarker整合poi导出带有图片的Excel教程

序言前一篇文章《Freemarker导出复杂Excel图文教程》,讲解了使用Freemarker导出复杂的Excel,本文将在前文的基础之上,讲解使用Freemarker导出Excel后,在整合poi插入图片到Excel,从而实现Freemarker导出带有图片的Excel工具。为什么要做这个工具呢?因为Freemarker是不支持导出带有图片的Excel的,不支持的原因是Freemarke...

2020-04-22 10:34:59

Freemarker导出复杂Excel图文教程

简介使用Freemarker导出Excel,比用poi操作Excel的方式要简单的很多,尤其像那种首行是表头,剩余行是数据的Excel,Freemarker几行代码就可以搞定。可是如果出现合并单元格、合并行的复杂Excel导出时,Freemarker的模板的插值也会变得复杂,但还是要比poi简单的多,用过Freemarker后,只要Freemarker能做到的,再也不想用poi导出Excel了。...

2020-04-20 13:42:45

SpringCloud邮件工具类

简介SpringCloud使用的邮件工具和Springboot中的一样,都可以使用spring-boot-starter-mail起步依赖来实现。本文将提供两个邮件工具方法,分别是发送带有单个附件的方法和发送带有多个附件的方法,二者只是入参不同而已。本文还将介绍实际使用中遇到的问题及解决方法。一.添加Maven依赖<dependency> <groupId>org....

2020-04-13 17:11:15

SpringCloud微服务搭建教程

SpringCloud是什么?SpringCloud是分布式一站式的解决方案。SpringCloud是微服务技术的一种落地的体现和实现。SpringCloud和SpringBoot的区别和关系?1.SpringBoot专注于快速方便的开发单个个体微服务。2.SpringCloud是关注全局的微服务协调整理治理框架以及一整套的落地解决方案,它将SpringBoot开发的一个个单体微服务整合...

2020-02-23 15:50:24

Spring Boot2.x集成Redis(两种方式)

前言:本文介绍下Spring Boot2.x版本下使用Redis的方式,较1.x版有些许改变。本文介绍两种方式来配置,第一种是快速配置,1分钟完成配置。第二种方式,支持定义定义多个Redis实例,可同时操作不同的RedisDB,不会因为线程不安全紊乱,读写错数据库。你可以根据自己需求,选择如何集成Redis。方式一:Spring Boot2.x1分钟快速集成Redis方式1.引入Maven依...

2019-12-05 15:51:02

Eclipse或MyEclipse中使用EGit插件解决代码冲突图文教程

前言本文介绍使用Eclipse或MyEclipse的Egit插件,来解决本地和服务器代码冲突的问题,帮助0基础新手,掌握Git代码的合并代码技巧和解决冲突的方式,合并代码变成一种基本的编码能力,不在搞丢队友同事的代码,让人唾弃,我用最通俗的语言和一个冲突小案例带你一步一步学会解决代码冲突。一.代码冲突原因:自己本地修改的文件的版本跟服务器版本不一致导致。通俗的讲就是你修改的这个文件,别人在你...

2019-08-16 15:17:30

Java Redis Template批量查询指定键值对

一.Redis使用pipeline批量查询所有键值对一次性获取所有键值对的方式:private RedisTemplate redisTemplate;@SuppressWarnings({ "rawtypes", "unchecked" }) public List executePipelined(Collection<String> keySet) { return...

2019-07-23 17:10:05

HBase架构基础介绍

HBase是什么?为啥使用HBase?什么时候选择HBase?

2019-03-29 16:13:30

Java导入Excel工具类使用教程

本工具类提供了Excel导入功能,通过反射机制将Excel中数据映射到实体类中,从而获取Excel数据,工具类依赖`org.apache.poi`包。支持RESTful API,支持Spring MVC中使用。本工具类支持功能:- 支持File类型导入- 支持MultipartFile类型导入- 支持Excel2003及以上版本

2019-03-26 11:06:43

Java之Excel导出工具类使用教程

前言:本工具类经过PostMan和web页面严格测试可用,经过了多个版本迭代优化,可以直接使用,也方便大家根据自己的业务需求,修改定制自己的导出工具。市面上有很多封装好的导出工具(如:阿里的easyExcel,GitHub上xxl-excel等),但如果直接引用依赖,扩展性和定制性比较差,所以博主通过apache.poi,自己实现一款Excel导出工具,方便定制使用。本工具类支持SpringM...

2019-03-20 17:34:02

Eclipse安装和拆卸Scala IDE以及解决无法打断点问题

前言本文将Scala IDE在Eclipse上的安装和拆卸,以及解决无法打断点的问题。一.出问题的版本和问题描述Eclipse Scala IDE 4.7版(慎用):官方下载地址:http://downloads.typesafe.com/scalaide/sdk/lithium/e47/scala212/dev/site问题:此版本在安装后,在Debug打断点时,会弹框报错:“An...

2018-10-31 15:47:51

InfluxDB使用教程:Java版InfluxDB工具类

前言:上几讲,介绍了Influx在Linux和Windows上的使用之后,本节开始介绍Influx在Java中的使用,先提供一个InfluxDB Java API 封装的工具类,方便大家直接上手使用。1.InfluxDB工具类先奉上工具类,接下来介绍使用方法。package com.common.utils.influxdb;import java.util.List;import ...

2018-10-20 20:29:31

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取