自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 SpringBoot之从零搭建博客网站(可提供源码)

文字不够,图片来凑。 前言 为什么想要搭建这个博客? 我还记得,在大二寒假的某天,同往常一样的在家解决这某个bug,不停地问度娘,很巧的碰到了一个同行在他的博客中完美的记录了我的bug的解决方案,随后我又看了看他写的其他博客文章,觉得都非常的不...

2018-08-05 21:53:45 37898 136

原创 JDK1.7和JDK1.8中HashMap为什么是线程不安全的?

前言 只要是对于集合有一定了解的一定都知道HashMap是线程不安全的,我们应该使用ConcurrentHashMap。但是为什么HashMap是线程不安全的呢,之前面试的时候也遇到到这样的问题,但是当时只停留在***知道是***的层面上,并没有深入理解***为什么是***。于是今天重温一个Has...

2019-03-30 19:57:35 11895 11

原创 LinkedHashMap源码解读

前言 之前在看HashMap的源码时看到几个空实现的函数,当时也没有在意,今天在了解LinkedHashMap时突然明白了那个空实现函数(钩子函数)的意义。 本文源码版本依旧是JDK1.8。 LinkedHashMap 钩子函数 首先先来看看HashMap中所谓的钩子函数。 为什么...

2019-03-15 16:34:19 164 0

原创 从源码初步了解ConcurrentHashMap

为什么要了解ConcurrentHashMap 首先先说下为什么我们需要了解ConcurrentHashMap。原因其实很简单:①HashMap在多线程环境下会有线程不安全的情况,比如在put时会造成死循环。②线程安全的HashTable效率低,HashTable的所有方法都使用Synchroiz...

2019-02-23 16:57:41 147 0

原创 数据库索引到底是什么鬼?

进行后端开发经常会与数据库打交道,对于数据库的一些核心基础了解太浅,比如经常听到的数据库索引、锁等,在小项目开发过程中也没有过于严格的执行索引的建立,而是想当然的对表直接设置一个自增字段作为主键,这些还是源于对于索引的认识不够深喃。 索引 在此之前,对于索引的认识如下: 索引相当于一张表...

2019-01-13 13:03:38 344 0

转载 Intellij IDEA 快捷键整理

【常规】 Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关闭文件 Ctrl+[ OR ],可以跑到大括号的开头与结尾 Ctrl+F12,可以显示当前文件的...

2019-01-08 11:06:30 155 0

原创 逝去的2018年,年度总结

特意选在2018年的最后一天来总结下今年都干了些什么蠢事 时间过得很快,转眼间就到了一年的最后一天。在我的脑海里对于2018好像没有什么记忆,不过仔细想想今年干过的事还挺多的,于是打算花点时间对这一年做一个总结。 写在前面 以前,对于自己的生活都是匆匆过往,没有留下点什么东西,也感觉比较...

2019-01-04 11:38:24 915 3

原创 如何通关设计模式之适配器模式

“补救模式” 经常在业务开发过程中都会遇到需求变动等情况,一个再好的程序猿也难免设计出一个“完美”的业务系统。因为,需求永远是变化的。 “智者千虑必有一失,愚者千虑必有一得”,我们都是平庸之人,无法做到百分百的完美系统,对于有些“意外”,该来的总会来,而为了去弥补这些意外,就需要使用到一些补救措施...

2018-12-30 17:24:01 93 0

原创 如何通关设计模式之责任链模式

责任在哪? 责任链模式看名称可以理解为责任连成一条链。这也没有什么毛病,责任链模式的重点也在于“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果。 责任链模式的核心在“链”上,链是由多个处理者组成的。 “古代妇女的枷锁”——责任链的体现 中国古代对于妇女指定了“...

2018-12-28 22:22:36 98 0

原创 如何通关设计模式之代理模式

代理模式在我们平常应用中极为常见,尤其是对于JavaWeb开发来说,使用的Spring框架中AOP(面向切面编程)就是使用的代理模式中的动态代理。 代理模式的定义 对其他对象提供一种代理以控制对这个对象的访问。 听起来有点玄乎,换个栗子来将,平常在生活中打官司,你会请名律师,律师的任务就是帮...

2018-12-22 20:37:34 94 0

原创 你必须知道的HashMap面试题

1.HashMap的工作原理,其中get()方法的工作原理? HashMap基于hash原理,通过put()和get()方法存储和获取元素。它内部使用数组+链表或红黑树的结构,通过hash运算找到bucket位置来存储Entey对象,通过equals()方法找到正确的键值对。HashMap使用链地...

2018-12-20 22:15:28 916 2

原创 如何通关设计模式之工厂模式

何为工厂模式? 工厂模式主要为创建对象提供过渡接口。屏蔽对象的实例化具体过程,以达到灵活的作用。 工厂模式分为以下三种: 简单工厂模式(静态工厂模式) 工厂方法模式 抽象工厂模式 简单工厂模式和抽象工厂模式是对工厂方法模式的扩展。与工厂方法模式也有千丝万缕的关系。下面就以工厂方法模式为例。 工...

2018-12-19 20:49:08 54 0

原创 如何通关设计模式之单例模式

一、单例模式的定义 单例模式可谓是设计模式中最简单的一个,没有之一。它的作用也跟其名一样,单例单例,只能生成一个该类的实例。通常我们可以使用new来创建对象,想要多少女朋友就new多少女朋友。但是现在不行了,单例模式规定,你只准有一个女朋友。于是乎… 二、单例模式的实现 现在我们想要有一个女朋友,...

2018-12-18 20:01:00 71 0

原创 从源码深入理解HashMap(附加HashMap面试题)

HashMap向来是面试中的热点话题,深入理解了HashMap的底层实现后,才能更好的掌握它,也有利于在项目中更加灵活的使用。 本文基于JDK8进行解析 一、HashMap解析 1. 结构 HashMap结构由数组加**链表(或红黑树)**构成。主干是Entry数组,Entry是H...

2018-12-17 14:09:48 101 0

原创 排序算法之基数排序

基本思想 基数排序是将整数按位数分割成不同的数字,然后按每个位数分别比较,得到一个有序的序列。具体做法则是将一个数组中的每一个数统一成相同位数,位数不足高位补零。从个位开始按大小排序,当遇到位数大小相同时,要保证顺序与原数组相同。这样从个位一直到高位,就得到一个有序的序列。 实现思路 文字性的语言...

2018-11-23 22:06:23 60 0

原创 排序算法之交换排序(冒泡排序、快速排序)

前言 在前面几篇博客中总结了插入排序(直接插入和希尔排序)、选择排序(直接选择和堆排序)以及归并排序,这里将讲下两种选择排序算法——冒泡排序和快速排序。 冒泡排序 基本概念 冒泡排序相对快速排序而言相对简单。冒泡就如同水里的鱼吐泡泡一样,刚开始时泡泡很小,但随着上浮离水面越来越近,泡泡也逐渐变大。...

2018-11-12 13:52:24 782 1

原创 排序算法之归并排序

基本思想 归并排序是利用归并的思想,合并两个已排序的表,将结果输出到第三个表中。基本的合并算法是去两个输入数组A和B,一个输出数组C,以及3个计数器Actr、Bctr、Cctr,它们初始置于对应数组的开始端,当数组A[Actr]或数组B[Bctr]中的较小者被拷贝到C中的下一个位置时,相关的计数器...

2018-11-07 14:03:38 63 0

原创 关于垃圾收集器的内存回收机制

前言 对于垃圾收集器回收内存应该有以下几点思考: 哪些内存需要回收? 什么时候被回收? 如何回收? 哪些内存需要被回收? 在Java内存运行时区域中,虚拟机栈、本地方法栈、程序计数器3个区域随线程而生,随线程而亡。所以它们不需要垃圾收集器来管理。 而堆和方法区则不一样,堆中存...

2018-11-03 22:17:13 51 0

原创 JVM的内存区域的划分

JVM运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。分别是方法区、虚拟机栈、本地方法栈、堆、程序计数器。 程序计数器 字节码解释器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。 每条线程都需要有一个独立的程序计数器...

2018-11-02 21:55:26 97 0

原创 排序算法之选择排序(直接选择、堆排序)

排序算法稳定性 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。 ————百度百科 排序原理 ...

2018-11-01 18:10:43 285 0

原创 排序算法之插入排序(直接插入、希尔排序)

前言 一个好的排序算法对于程序的优化会有很大的提升,虽然在许多语言的类库中就存在了N种排序方法,但是只有在了解了每一种排序算法后才能更好的在实际中运用这些算法。这里我主要说明插入排序中的直接插入以及希尔排序的实现。 直接插入 直接插入排序是最简单的排序算法之一。对于直接插入排序,它始终维护着一个有...

2018-10-31 16:19:45 89 0

原创 Java中的注解原来是这样回事的

前言 在我们平常的代码开发过程中,遇见过无数的注解,大多数注解都是我们使用的框架所给我们集成好了的,相信也很少有人使用自己编写的注解,我也如此,但是只有当你了解了注解背后的秘密后,一定会对它有不同的看法。 注解,也被称为元数据,可以为我们在代码中添加信息提供一种形式化的方法,使我们可以在稍后某...

2018-10-24 22:32:06 141 0

原创 云服务器CentOS安装mysql数据库

之前也不止一次在服务器上安装mysql了,为了以后方便,于是记录下本次安装过程。 开始 准备 服务器:腾讯云服务器 操作系统:CentOS 7.5 64位 CPU:1核 内存:2GB 公网带宽:1 Mbps 安装方式 使用yum方式安装 自己下载mysql安装包进行...

2018-10-21 20:33:52 295 0

原创 完全二叉树——二叉堆(BinaryHeap)

前言 优先队列是允许至少下列两种操作的数据结构:insert(插入)以及deleteMin(删除最小者),其中deleteMin的工作是找出、返回、并删除优先队列中最小的元素。insert操作等价于enqueue(入队),而deleteMin则相当于dequeue(出队)。 二叉堆的性质 二...

2018-10-20 15:48:20 886 0

原创 AVL平衡树的旋转与实现

前言 上一篇博客中讲解了二叉查找树的实现,但是我们在对其进行删除操作时,采用的是用被删除节点的右子树中的最小元素代替该节点,并将最小元素节点删除,这样导致的后果可想而知,再经过不断的remove操作后,整棵树会处于极度不平衡状态,会导致该树的左子树过深,而右子树过浅的问题。要想解决这种问题,就需...

2018-10-13 13:11:58 137 0

原创 查找树之二叉查找树

写在前面 最近一直在专心学习数据结构,刚好看到树这一章。之前大一学习的数据结构是以C语言为基础的,然而当时也没有好好听讲,现在也是比较后悔,通过接下来的这段时间准备好好学习一下树的知识,也通过博客来记录一下对于其中的理解。 概述 先简单介绍一下树以及二叉树的概念。 树的概念 树(Tr...

2018-10-07 19:48:32 87 0

原创 数据结构之栈篇

前言 栈是一种只能在一端进行插入和删除操作的特殊线性表。 其中,允许插入和删除的一端称为栈顶,另一端称为栈底。对于栈的操作有两种:进栈(push)和出栈(pop)。前者相当于插入栈元素,后者则是删除栈元素。 由于对于栈元素的操作只能位于栈顶,因此,栈中最先插入的元素一定位于栈底,而最后插入的...

2018-10-07 19:46:17 110 0

原创 Java集合中的ArrayList和LinkedList

前言 在平时的开发过程中我们会使用到许多的数据结构,其中表也许是使用最多的一种。明白Collections容器的朋友一定都是使用过其中的List容器。这里我将通过创建自己的List来说明表的源码实现。 这里主要实现两个库类重要子集ArrayList和LinkedList的代码。 区别 Ar...

2018-10-02 14:23:46 97 0

原创 死磕Java正则表达式

前言 正则表达式是一种强大而灵活的文本处理工具。通过正则表达式,我们能够以编程的方式,构建复杂的文本模式,对输入的字符串进行搜索。一旦找到匹配的部分,我们就能随心所欲的对它们进行处理。 初学正则表达式时,它的语法是对初学者的一门考验,只有琢磨透了其真正的内涵,我们才能从本质上看到它确实...

2018-09-04 23:43:12 209 0

原创 Java多态的动态绑定和静态绑定

在上一篇文章《详解Java中的覆写与重载》中介绍了什么是覆写以及重载,如何理解区分这两者的概念还是十分重要的。而谈到覆写和重载又会引入一个概念,那就是多态。多态有两种具体的表现,那就是上面所说的覆写以及重载了。 先来看个小栗子: public class Main { ...

2018-08-27 15:30:33 104 0

转载 详解Java中的覆写与重载

区别 1.override 覆写(重写) 重写发生在子类继承父类时,覆写(重新实现)父类中的方法。 重写方法的参数列表必须完全与被重写的方法相同,否则不能称为重写而是重载。 重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected&a...

2018-08-24 12:48:26 89 0

原创 Linux基础扫盲篇之高级键盘技巧

UNIX 是专为喜欢敲键盘的人设计的操作系统 UNIX中存在命令行就恰好说明了这点。往往用户希望能够敲更少的键盘而实现更多的功能,UNIX也很好的解决了这个问题。省事(即用最少的击键次数执行最多的任务)是命令行最希望达到的目标之一。 编辑命令行 光标移动 组合件 ...

2018-08-23 20:51:06 147 0

原创 Linux基础扫盲篇之Shell中的重定向和管道

I/O 重定向 I/O 是输入/输出的缩写,通过I/O重定向可将命令行的输入重定向为从文件中获取内容,也可以将命令行的输出结果重定向到文件中。 重定向标准输出 需要使用到的重定向符>,但是这只能用于标准输出,标准错误信息仍会显示在屏幕上。 //将ls命令的输出...

2018-08-23 20:49:38 189 0

原创 Linux基础扫盲篇之神奇的Shell

当我们谈起命令行时,我们实际上指的是shell。当使用图形用户界面时,需要另一种叫做终端仿真器的程序与shell进行交互。终端仿真器的存在就是便于用户访问shell。shell是及其强大的,有时对于图形界面的操作使用shell能够更快的达到我们的需要。 shell是一个接收由键盘输入的命令...

2018-08-23 20:48:46 208 0

原创 服务器压力测试之JMeter篇(二)

前言 在上一篇《服务器压力测试之JMeter篇(一)》中我简单的介绍了一下JMeter的下载安装以及基本使用,在这一节中我将给大家说一说JMeter如何通过读取参数化进行web调试。 说之前先放出JMeter的官方文档:http://jmeter.apache.org/usermanual/i...

2018-08-23 20:47:45 395 0

原创 服务器压力测试之JMeter篇(一)

前言 前两天突然发现博客网页登不进去,急坏了我,后来排查问题发现,在那天的中午某一时间段内有较多用户连接该网站,导致了服务器CPU猛升,直达100%了,这也就导致了网站无法访问。于是今天想着测试一下网站的服务器能承受的压力有多大。 目前网络上可提供的压测工具有很多,Apache JMeter、...

2018-08-23 20:46:41 242 0

原创 《操作系统》第五章 虚拟存储器

第五章 5.1 虚拟存储器的概述 5.1.1 常规存储管理方式和局部性原理 1.常规存储器管理方式的特征 (1)一次性 (2)驻留性 2.局部性原理 (1)时间局限性 如果程序中的某条指令被执行,则不久以后该指令可能再次执行;如果某数据被访问过,则不久以后该数据可能再次被访问。 (...

2018-05-24 21:23:31 486 0

原创 《操作系统》第四章 存储器管理

第四章 4.1 程序的装入和连接 4.1.1 程序的装入 1.绝对装入方式 用户程序经编译后,将产生绝对地址(物理地址)的目标代码。 2.可重定位装入方式 根据内存的具体情况将装入模块装入到内存的适当位置。 3.动态运行时的装入方式 把装入模块装入内存后,并不立即把装入模块中的逻...

2018-05-24 21:22:16 601 0

原创 《操作系统》第三章 处理机调度与死锁

第三章 3.1 处理机调度的层次和调度算法 3.1.1 处理机调度的层次 1.高级调度 又称长程调度或作业调度。调度对象是作业。功能是根据某种算法,将外存上处于后备队列中的哪几个作业调入内存,为他们创建进程、分配资源,并放入就绪队列。 2.低级调度 又称进程调度或短程调度。调度对象...

2018-05-24 21:20:53 204 0

原创 《操作系统》第二章 进程管理

第二章 2.1 前趋图和程序执行 2.1.1 前趋图 前趋图是指一个有向无循环图 2.1.2 程序顺序执行 特点: - 顺序性:一个程序开始执行必须要等到前一个程序已执行完成 - 封闭性:程序一旦开始执行,其计算结果不受外界因素影响 - 可再现性:程序的结果与它的执行...

2018-05-24 21:18:10 178 0

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