自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [面试必备]深入理解Java的volatile关键字

前言在Java并发编程中,volatile关键字有着至关重要的作用,在面试中也常常会是必备的一个问题。本文将会介绍volatile关键字的作用以及其实现原理。volatile作用volatile在并发编程中扮演着重要的角色,volatile是轻量级的synchronized,volatile关键字有两个作用:1)保证共享变量的可见性可见性的意思是当一个线程修改一个共享变量时,另外一个线...

2019-09-05 21:56:01 166

原创 Win10家庭版获取策略组功能

将以下内容保存为cmd文件:@echo offpushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Windows\servicing\Packages\Microsoft...

2019-08-29 14:29:16 128

原创 【面试必备】快速理解数据库事务隔离级别

事务简介相信用过MySQL的朋友都知道事务,我们也常常通过这个例子来讲解事务的作用:A向B转账,这里可以分为两步操作数据库,A账户余额减少,B账户余额增加。但是,如果在A账户余额减少的时候突然出现了数据库宕机了等情况,是不是会出现A的余额变少了,但是B的余额却没有增加的情况呢?答案是否定的。原因就是数据库支持事务(常用的关系型数据,如MySQL、Oracle等)。事务是应用程序中一系列严密的操...

2019-08-27 21:32:25 157

原创 为什么阿里Java手册推荐慎用 Object 的 clone 方法来拷贝对象

前言在阿里Java开发手册中,有这么一条建议:慎用 Object 的 clone 方法来拷贝对象。对象 clone 方法默认是浅拷贝,若想实现深拷贝需覆写 clone 方法实现域对象的深度遍历式拷贝 。Java中的对象拷贝,有浅拷贝和深拷贝两种,如果没有搞清楚这两者的区别,那么可能会给自己的代码埋下隐患。什么是浅拷贝和深拷贝浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其...

2019-08-27 21:31:27 265

原创 【快学SpringBoot】Spring Cache+Redis实现高可用缓存解决方案

前言之前已经写过一篇文章介绍SpringBoot整合Spring Cache,SpringBoot默认使用的是ConcurrentMapCacheManager,在实际项目中,我们需要一个高可用的、分布式的缓存解决方案,使用默认的这种缓存方式,只是在当前进程里缓存了而已。Spring Cache整合Redis来实现缓存,其实也不是一件复杂的事情,下面就开始吧。关于Spring Cache的运用...

2019-08-27 21:30:38 168

原创 【快学SpringBoot】快速上手好用方便的Spring Cache缓存框架

前言缓存,在开发中是非常常用的。在高并发系统中,如果没有缓存,纯靠数据库来扛,那么数据库压力会非常大,搞不好还会出现宕机的情况。本篇文章,将会带大家学习Spring Cache缓存框架。原创声明本文发布于掘金号【Happyjava】。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的个人博客:http://blo...

2019-08-27 21:30:07 132

原创 【快学Docker】快速创建容器,容器常用命令

前言容器是Docker的三大核心概念之一。简单地说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。通过这篇文章,我们来讲讲Docker容器的一些常用命令,如创建,停止,重启,暂停等等。原创声明本文发布于掘金号【Happyjava】。Happy的掘金地址:https://juejin.i...

2019-08-27 21:29:35 255

原创 【快学SpringBoot】SpringBoot+Docker构建、运行、部署应用

前言Docker技术发展为当前流行的微服务提供了更加便利的环境,使用SpringBoot+Docker部署和发布应用,其实也是一件比较简单的事情。当前,前提是得有Docker的基础。源码在文末文末有项目源码的github地址构建一个SpringBoot项目本人最早的一篇文章,就是教大家如何使用Spring Initialise工具,快速的创建一个SpringBoot项目,如果还不懂的,可...

2019-08-27 21:28:10 198

原创 开发中,GA、Beta、GA、Trial到底是什么含义

前言用过maven的都应该知道,创建maven项目时,其版本号默认会以SNAPSHOT结尾,如下:通过英文很容易就可以知道这是一个快照版本。但是,在开发中,或者使用别的软件的时候,我们常常会见到各种各样的版本命名,比如:GA、Beta、OEM等等,不去了解下的话,就很容易被这些版本号整懵了。通过本篇文章,将带大家了解下常见的一些版本的含义。SNAPSHOT快照版本,用于开发阶段的命名,快...

2019-08-27 21:27:18 590

原创 Spring中解决循环依赖报错的问题

什么是循环依赖当一个ClassA依赖于ClassB,然后ClassB又反过来依赖ClassA,这就形成了一个循环依赖:ClassA -> ClassB -> ClassA原创声明本文发布于掘金号【Happyjava】。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的个人博客:(http://blo...

2019-08-27 21:25:27 631

原创 Docker镜像加速,设置国内源

源地址设置在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件){ "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com", "https://registry.docker-cn.com" ]}重启Doc...

2019-08-27 21:24:28 276

原创 CentOS修改各大yum源(centos5,centos6,centos7)

备份原配置文件进入yum源配置目录:cd /etc/yum.repos.d如果没有先安装wget:sudo yum install wget修改yum源,就是修改CentOS-Base.repo的内容,所以我们要先备份一下原来的:sudo mv CentOS-Base.repo CentOS-Base.repo.backup下载新配置文件然后用wget下载国内的yum源(即Cent...

2019-08-17 18:46:16 183

原创 SpringBoot+JWT+SpringSecurity+MybatisPlus实现Restful鉴权脚手架

前言JWT(json web token)的无状态鉴权方式,越来越流行。配合SpringSecurity+SpringBoot,可以实现优雅的鉴权功能。关于SpringBoot+ Security的讲解,可以参考我之前的文章:https://www.toutiao.com/i6704647082659021319/为了减少重复造轮子的工作量,方便大家复制和参考,我把一个完整的SpringBo...

2019-08-17 18:45:31 424

原创 Java8新特性——Optional

前言在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现。Java8引入了Optional类,为的就是优雅地处理判空等问题。现在也有很多类库在使用Optional封装返回值,比如Spring Data JPA等。下面,我们就来了解下Optional的常用用法Optional方法列表Optional的方法列表如下:初始化初始化一个Optional有三种方式,如下:// 创建一...

2019-08-17 18:10:17 99

原创 【快学Docker】Docker镜像相关操作

前言镜像是Docker的三大核心概念之一(另外两个分别是:容器和仓库)。Docker运行容器前需要本地存在镜像,如果本地不存在镜像,Docker则会尝试从远端仓库拉去镜像。镜像是Docker一大核心,我们今天就来了解下Docker镜像的相关操作。获取镜像命令格式:docker pull <name:tag>如果不显式指定tag,则会默认选择latest标签,即下载仓库中最...

2019-08-17 17:56:00 103

原创 你是否还在写try-catch-finally?来使用try-with-resources优雅地关闭流吧

前言开发中,我们常常需要在最后进行一些资源的关闭。比如读写文件流等,常见的,我们会在最后的finally里进行资源的关闭。但是这种写法是很不简洁的。其实,早在JDK1.7就已经引入了try-with-resources来关闭资源的方式,我们今天就来体验一下try-with-resources的简洁之处。旧版关闭资源的一些例子在旧版的写法中(其实现在还有很多程序员是这么写的),资源都放在fin...

2019-08-17 17:55:18 164

原创 面试官:说说Spring中的事务传播行为

前言在开发中,相信大家都使用过Spring的事务管理功能。那么,你是否有了解过,Spring的事务传播行为呢?Spring中,有7种类型的事务传播行为。事务传播行为是Spring框架提供的一种事务管理方式,它不是数据库提供的。不知道大家是否听说过“不要在service事务方法中嵌套事务方法,这样会提交多个事务”的说法,其实这是不准确的。了解了事务传播行为之后,相信你就会明白!Spring中七...

2019-08-17 17:54:42 113

原创 【快学springboot】SpringBoot整合Mybatis Plus

mybatis plus简介来自官方对于mybatis plus的介绍:MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其支持以下特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD ...

2019-08-17 17:53:51 77

原创 「快学springboot」集成Spring Security实现鉴权功能

Spring Security介绍Spring Security是Spring全家桶中的处理身份和权限问题的一员。Spring Security可以根据使用者的需要定制相关的角色身份和身份所具有的权限,完成黑名单操作、拦截无权限的操作等等。本文将讲解Springboot中使用spring security。引入依赖<dependency> <groupId>...

2019-08-17 17:53:12 146

原创 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

前言有的时候,配置信息是我们无法在开发过程中就能确定的。比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等。这时候,就需要把配置文件放在外面,让用户自定义配置部署了。SpringBoot应对这种情况简直就是游刃有余,其有多种加载配置文件的方式。下面我们就来认识一下配置文件放在外部SpringBoot支持把配置文件放在外部。只要把配置文件放在jar包的同...

2019-08-17 17:52:37 131

原创 「快学springboot」SpringBoot整合freeMark模板引擎

前言虽然现在流行前后端分离开发和部署,但是有时候还是需要用到服务端渲染页面的。比如:需要考虑到SEO优化等问题的时候,FreeMark其实还是很有作用的。本人的博客本来是用React开发的,但是后来发现搜索引擎难以收集由JS渲染的页面,所以前段时间,是用jQuery+FreeMark重写了我的博客前端页面。感兴趣的朋友,可以点击下面的查看更多的链接跳转至本人的博客。在springboot中,不...

2019-08-17 17:52:02 195

原创 「快学springboot」SpringBoot多环境配置文件

前言我们都知道springboot的配置卸载application.properties配置文件上(或者application.yml)。但是,如果想要把不同的环境(如开发环境,测试环境,生产环境)的配置文件分离,这要怎么做呢?其实,SpringBoot是支持指定不同的配置文件的。SpringBoot配置文件格式在Spring Boot中多环境配置文件名需要满足application-{pr...

2019-08-17 17:51:18 84

原创 「快学Docker」Docker简介、安装和Hello World实现

前言Docker已经成为了一门炙手可热的技术,每个程序员(特别是后端程序员)都应该学习下Docker这门技术。Docker是什么来自官网的定义:Docker是以Docker容器为资源分割和调度的基本单位,封装了整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行应用的平台。Docker是开源的,其基于Go语言开发。Docker通过操作系统内核技术(namespace、cgro...

2019-08-17 17:50:28 81

原创 为什么阿里规约手册要求谨慎使用Arrays.asList方法

前言在开发中,有时候会碰到把多个参数,或者说把数组转成List的需求,通常我们会使用 Arrays.asList()方法。但是该方法在使用的过程中,稍有不慎就会出现严重的异常。有如下代码:@Testpublic void test() { List<String> list = Arrays.asList("a", "a", "2"); System.out.pr...

2019-08-17 17:49:49 57

原创 Java中的transient关键字

前言之前写过一篇序列化相关的文章,今天要讲的这个文件自transient也是跟序列化有关系的。但是,挺多人没有了解过该关键字甚至是不知道该关键字的存在。transient关键字介绍在Java中,当一个类实现了java.io.Serializable接口,即表明了该类可以被序列化。我们可以把该类的属性序列化然后保存在外部,或者跟另外一个jvm进行数据传递。但是,我们是否想过,如果一个类包含隐私...

2019-08-17 17:49:18 55

原创 IDEA设置窗口标签换行显示

windows -> editor tabs -> tabs placement 关掉 show tabs in sigle row即可

2019-08-17 17:48:44 8021

原创 Java并发编程:Java内存模型JMM

简介Java内存模型英文叫做(Java Memory Model),简称为JMM。Java虚拟机规范试图定义一种Java内存模型来屏蔽掉各种硬件和系统的内存访问差异,实现平台无关性。CPU和缓存一致性讲JMM之前,我们应该先了解下CPU和缓存一致性的问题。计算机在执行程序的时候,每条指令都是在CPU中执行的,而执行的时候,又要和数据打交道。而计算机上面的数据,是存放在内存当中的。随着CPU的...

2019-08-17 17:47:56 59

原创 面试官:说说你知道多少种线程池拒绝策略

前言线程池,相信很多人都有用过,没用过相信的也有学习过。但是,线程池的拒绝策略,相信知道的人会少许多。四种线程池拒绝策略当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException...

2019-08-17 17:47:17 82

原创 为什么不要在MySQL中使用UTF-8编码方式

MySQL的UTF-8编码方式MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才造就了MySQL中的UTF-8与我们日常开发中的UTF-8不一致,从到导致了些问题。MySQL的UTF-8只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。问题复现有数据库表如下:utf8编...

2019-08-17 17:46:25 121

原创 为什么我强烈推荐你用枚举来实现单例模式

单例模式简介单例模式是 Java 中最简单,也是最基础,最常用的设计模式之一。在运行期间,保证某个类只创建一个实例,保证一个类仅有一个实例,并提供一个访问它的全局访问点。下面就来讲讲Java中的N种实现单例模式的写法。饿汉式public class Singleton { private static Singleton instance = new Singleton(); ...

2019-08-17 17:45:50 67

原创 为什么阿里Java规约要求谨慎使用SimpleDateFormat

前言在阿里Java开发规约中,有强制性的提到SimpleDateFormat 是线程不安全的类 ,在使用的时候应当注意线程安全问题,如下:其实之前已经介绍过使用JDK1.8的DateTimeFormatter 和LocalDateTime来处理时间了,还在用SimpleDateFormat?Java8都发布N年了,转LocalDateTime吧。今天,就来说说SimpleDateFormat...

2019-08-17 17:45:13 86

原创 为什么阿里Java规约要求谨慎修改serialVersionUID字段

serialVersionUID简要介绍serialVersionUID是在Java序列化、反序列化对象时起作用的一个字段。Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出...

2019-08-17 17:44:19 68

原创 使用MyCat实现MySQL读写分离

说明配置MyCat读写分类前需要先配置MySQL的主从复制,参考我上一篇的文章,已经做了比较详细地讲解了。环境centos7、MySQL5.7、mycat1.6配置MyCat账号密码和数据库名(server.xml)MyCat作为数据库的中间件,对于上层应用来说,他就是一个数据库。因此需要配置数据库的用户名,密码,数据库名,以及读写权限。下面是MyCat的默认配置(部分):serv...

2019-08-17 17:43:09 63

原创 MySQL实现主从复制功能

环境说明        centos7.3、MySQL5.7前言        MySQL安装参考之前的文章https://www.jianshu.com/p/452aa99c7476有讲解。基本概念  &nb...

2019-08-17 17:40:23 62

原创 在centos7中安装MySQL5.7

1.下载mysql源安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm2.安装mysql源yum localinstall mysql57-community-release-el7-8.noarch.rpm3.检查mysql源是否安装成功yum repolist enabled | g...

2019-08-17 17:39:30 85

原创 你知道HTTP协议的ETag是干什么的吗?

前言在HTTP1.1规范中,新增了一个HTTP头信息:ETag。对于普通开发者来说,可能平时真的不会接触到该HTTP头。平时接触不到或者说用得少,不代表这个请求头不重要。ETag使用得当,是可以减少服务器带宽压力的。什么是ETag?Etag是 Entity tag的缩写,可以理解为“被请求变量的实体值”,Etag是服务端的一个资源的标识,在 HTTP 响应头中将其传送到客户端。所谓的服务端资...

2019-08-17 17:38:39 276

原创 通俗易懂地理解并发和并行的区别

前言并发和并行的区别,相信很多初出茅庐的程序员都会被问到这个问题吧,这两个概念极容易混淆。今天,我们就来通俗地聊聊并发和并行的区别。概念通俗的讲解之前,先看一下并发和并行的概念吧。并发:并发(Concurrent),在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。并行:并行(Parallel),当系统有一个以上CPU时,当一个...

2019-08-17 17:38:00 248

原创 Java基于redis实现分布式锁(SpringBoot)

前言分布式锁,其实原理是就是多台机器,去争抢一个资源,谁争抢成功,那么谁就持有了这把锁,然后去执行后续的业务逻辑,执行完毕后,把锁释放掉。可以通过多种途径实现分布式锁,例如利用数据库(mysql等),插入一条记录(唯一索引),谁插入成功,谁就持有锁;还可通过zookeeper来实现分布式锁,谁创建节点成功,谁就持有锁。本文介绍通过redis来实现分布式锁。本文使用springboot提供的R...

2019-08-17 17:36:11 91

原创 Java8使用Stream优雅地处理集合

说明集合和数组是我们经常会用到的数据结构,在jdk1.8之前,集合和数组的处理并不是很便捷。但是到了JDK1.8之后,使用Stream处理集合会使代码变得更加的简洁明了。作为一名开发者,其实很有必要学习新特性的用法,即使是说项目中没有采用。虽然JDK1.8已经发布数年,但是还是发现很多人都不会使用JDK1.8给我们带来的新的API。比如之前写过的一篇文章还在用SimpleDateFormat?J...

2019-08-17 17:34:09 243

原创 别再写getter,setter方法了,用Lombok来简化你的代码吧

前言在实际开发中,有些代码是重复的、IDE一键生成的,不写不行,写了又觉得代码太臃肿,不美观。如果你也有这种体会,那么,请使用Lombok插件吧,真的非常好用。Lombok的使用也非常简单,都是各种各样的注解。引入依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>...

2019-08-17 17:29:11 275

空空如也

空空如也

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

TA关注的人

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