自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常量池详解(含栈、堆、方法区简析)

1 位置分布图2 内存区域类型寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制;堆:存放所有new出来的对象;栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。);静态域:存放静态成员(static定义的);常量池:存放字符串常量对象和基本类型常量(public static final)。有时,在嵌入式系统中,常量本身会和其他部分分割离开

2020-10-31 20:13:05 6861 5

原创 原子性说明

1. java多线程中的原子性的理解众所周知,原子是构成物质的基本单位(当然电子等暂且不论),所以原子的意思代表着——“不可分”。由不可分性可知,原子性是拒绝多线程操作的,因此不论是多核还是单核,具有原子性的量,同一时刻只能有一个线程来对它进行操作(其他线程的读操作也不行,因为要防止脏读)!以创建对象为例:Person per = new Person();,看似一步创建对象的操作,但是对于计算机底层操作来说,这一步实际上可以分解成以下三个步骤:分配内存空间初始化对象将对象指向刚分配的内存空间

2020-10-16 11:51:14 549

原创 单例模式双重检测锁机制及volatile防指令重排

单例模式:其变量只有一份,即通过设置为static实现只有一份的要求为什么反射能破坏单例模式?解:因为单例模式类的构造器是私有的,因此不能在其他类中通过"new 类名(参数…);"调用构造器来创建对象,只能通过调用单例类中的创建静态对象的方法(详见下面例子中的getInstance()方法)来获取对象(单例类对象是静态的,全局只能有一个对象)。然而,反射可以无视构造器私有的限制,其仍能通过构造方法创建普通对象(非静态对象,不是全局唯一的),反射可以创建多个不同的非静态的普通对象,导致对象不唯一,破坏了

2020-10-16 11:49:33 953

原创 可重入锁理解及原理

1. 可重入锁介绍首先,在Synchronized和ReentrantLock的区别中,我们介绍了两者都是可重入锁,那么究竟什么是可重入锁呢?其内部原理又是如何实现的呢?概念:可重入锁意味着:若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,执行线程可以再次进入并执行它,仍然获得符合设计时预期的结果。与多线程并发执行的线程安全不同,可重入强调对单个线程执行时重

2020-10-16 11:47:17 1382

原创 java中遍历Map的几种方法

java中遍历Map的几种方法重要提示(同最后的总结):如果只是获取key,或者value,推荐使用keySet或者values方式如果同时需要key和value推荐使用entrySet如果需要在遍历过程中删除元素推荐使用Iterator如果需要在遍历过程中增加元素,可以新建一个临时map存放新增的元素,等遍历完毕,再把临时map放到原来的map中java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体

2020-10-16 11:42:55 470 1

原创 Gin框架介绍及使用

Gin框架介绍及使用Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin。Gin框架介绍Go世界里最流行的Web框架,Github上有32K+star。 基于httprouter开发的Web框架。 中文文档齐全,简单易用的轻量级框架。Gin框架安装与使用安装下载并安装Gin:go get -u github.com/gin-gonic/gin第一个

2020-10-16 11:36:17 2918 2

原创 java IO流学习笔记

I/O 框架1 流的概念内存与存储设备之间传输数据的通道2 流的分类2.1 按方向【重点】输入流:将<存储设备>中的内容读到<内存>中输出流:将<内存>中的内容写到<存储设备>中2.2 按单位字节流:以字节为单位,可以读写所有数据字符流:以字符为单位,只能读写文本数据2.3 按功能节点流:具有实际传输数据的读写功能过滤流:在节点流的基础之上增强功能3 字节流下面两个为字节流的父类(抽象类)//InputStream

2020-10-07 09:13:23 199 1

原创 docker联合文件系统,镜像和容器关系等原理

1 Docker镜像是什么镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。2 UnionFS(联合文件系统)Union文件系统(UnionFS) 是一种分层、轻量级并且高性能的文件系统,他支持对文件系统的修改作为一次提交来层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesyste

2020-10-06 20:33:55 916

原创 解决idea中Maven依赖包无法下载的问题——非常规问题

有很多原因都会导致这个问题,比如没配置阿里云镜像仓库或者配置本地仓库不正确等等,但是这些都是很常见也很容易解决的问题,但是总会用有这些常规手段无法解决的问题,我之前搜遍各种博客等资料依然无法解决自己无法下载maven依赖包的问题,但是最后我通过下面的方式解决了自己的问题。下面两张图片红色方框中添加的内容如下:-Dmaven.wagon.http.ssl.insecure=true -Dmave...

2020-04-13 20:06:40 5652 5

原创 git删除已经push的远程文件或文件夹

git删除已经push的远程文件或文件夹在使用git提交项目时,有时候会误提交一下文件,比如:.iml,.project,*.settings,.idea/*等文件,有时候这些不需要提交的文件可以加入到.gitignore,在提交的时候可以忽略这些文件,但是有时候我们忘记,就会出现误提交一些文件,这时就需要我们删除误提交的文件,下面是使用git命令来删除已经push的误提交的文件:注意:该方法...

2020-03-28 13:12:01 3344

原创 Git快速学习笔记

先了解什么是版本控制版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。实现跨区域多人协同开发追踪和记载一个或者多个文件的历史记录组织和保护你的源代码和文档统计工作量并行开发、提高开发效率跟踪记录整个软件的开发过程减轻开发人员的负担,节省时间,同时降低人为错误...

2020-03-28 13:06:03 321

空空如也

空空如也

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

TA关注的人

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