自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

To be a better man的博客

不驰于空想,不鹜于虚声,一步一个脚印,踏踏实实奋斗出幸福。

  • 博客(90)
  • 收藏
  • 关注

原创 阻塞队列实现生产者-消费者模式

代码实现如下:public class Test { private int queueSize = 10; private ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(queueSize); public static void mai

2018-09-10 16:31:22 746

转载 MySql索引+最左前缀原则

在学习mysql索引的时候,找到两篇写的比较好的博客,记录到这里。 https://blog.csdn.net/SkySuperWL/article/details/52583579 https://www.jb51.net/article/133625.htm

2018-09-08 09:45:14 1445

原创 mysql关于内连接和外连接的理解

inner join是我们最常见的连接方式了,只连接匹配的行外连接也是一种连接方式,不过和inner的区别主要在于对于不匹配行的处理上,不匹配的行也会选择上,不过左右和full在选择上有差异左外连接 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行 右外连接 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行 全...

2018-09-01 13:46:27 807

原创 HashMap为什么线程不安全?

put操作不安全resize操作不安全put操作不安全首先,我们都知道,HashMap的底层,是由一个Entry数组维护,数组中的每一个元素都存放着一个链表。当多线程情况下,我们进行put操作,例如:线程A: map.put("1",A);线程B: map.put("1",B);我们可以看到线程A、B分别进行了Put操作,经过hash计算之后,他们的key相同,...

2018-09-01 12:08:23 297

原创 Spring+TaskExecutor实现线程池管理

目录目录写在前面Spring配置信息线程池参数代码实现博客参考写在前面  线程池可以很好的帮助我们管理线程,它会预先创建若干数量的线程,并且不能由开发者直接对线程的创建进行控制,这样,消除了频繁创建和消亡线程的系统资源开销。   那么在Spring中,已经帮我们集成了线程池的功能,我们在项目中使用TaskExecutor类就可以实现线程池的管理。...

2018-08-29 20:37:19 2002

原创 Java双重校验锁实现单例模式

目录目录写在前面代码实现问题分析写在前面  之前在博客中过一次Java设计模式-单例模式的2种实现方式(懒汉式+饿汉式)。   博文链接:Java设计模式—(1)单例模式   这2种实现,在单线程模式下,也不会出现线程安全问题,但是,如果在多线程环境下,就可能出现线程安全问题,所以我们要对之前的代码进行改进—-双重校验锁。代码实现  话不多说,咱们...

2018-08-29 11:45:04 18038 12

原创 Linux常用命令总结

目录目录进入某一个文件夹创建某一个文件夹解压某一个.tar.gz文件vim模式下保存并退出更改文件夹,文件权限打开配置文件复制 文件到某一个文件夹创建新的文件不断更新中。。。。。进入某一个文件夹cd XXX创建某一个文件夹mkdir XXX解压某一个.tar.gz文件tar zxvf XXXvim模式下保存并退出:...

2018-08-28 18:30:34 312

原创 Java多线程面试问题总结

这篇博文总结一些面试之中Java多线程的一些关键问题。每一个问题,会简要介绍,一些问题,下面会附上详细的介绍博文链接,方便小伙伴们更好的学习和交流。谢谢大家。目录目录CASAQS自旋volatile关键字Volatile关键字CASCompare and Swap ,也就是比较和替换。假设有三个操作数:内存值V、旧的预期值A、要修改的值B。...

2018-08-28 18:17:00 324

原创 进程间的4种通信方式

写在前面:    这篇博客主要将会介绍进程间的4种主要通信方式。在介绍进程间如何通信之前,我们先来看看进程和线程的概念。了解进程和线程的区别。参考博客:https://blog.csdn.net/whl_program/article/details/70217354------------------------------------------------------------------...

2018-04-19 18:23:00 2050

原创 剑指offer--(21)链表中环的入口结点--Java描述

写在前面:    剑指offer中,面试中,都很经典的一个问题,今天进行总结,其实从这个题目中,可以解析,延伸出多个问题,如:链表中是否存在有环,如果有环,求链表中环的入口结点,环的长度是多少等。    题目链接:https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4    (1)链表中是否存在有环   ...

2018-04-19 13:12:55 220

原创 Java 是编译型语言还是解释型语言?

写在前面:    今天在牛客的面经上,看到大家讨论Java究竟是编译形语言还是解释形语言,自己看了些博客和知乎,在这篇博客中,将大家的意见进行总结,希望对你有所帮助。    知乎链接:https://www.zhihu.com/question/19608553    首先来看什么是编译形语言,什么又是解释形语言?    编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,就可以直接...

2018-04-18 18:47:04 2804

原创 Java的四种访问权限

写在前面:    在一些笔试题中,经常会出现判断Java的四种访问权限,博主平时总能区分的比较好,一考试就忘。。。。。所以用一个表格来总结一下包的访问权限。Java的四种访问权限    权限类内同包不同包子类不同包非子类Public✔️✔️✔️✔️默认(Default)✔️✔️✔️ Protected✔️✔️  Private✔️   ...

2018-04-16 18:04:47 611

原创 传输控制协议TCP概述

写在前面:    TCP和UDP协议是根据传输层中不同的程序需求的两种传输协议。即面向连接的TCP和面向无连接的UDP。在这篇博客中,将会总结TCP协议。    文章中部分内容参考《计算机网络》第五版--谢希仁。TCP协议的主要特点:    (1)TCP是面向连接的传输层协议。也就是应用程序在使用TCP协议之前,必须要建立TCP连接。在传输完毕后,要释放TCP连接。    (2)每一条TCP连接只...

2018-04-16 17:48:17 365

原创 当你输入一个网址会发生什么?

写在前面:    这是一道经常会被面试官问到的面试题,这篇博客,我们以www.baidu.com为例,总结当我们输入www.baidu.com,按下Enter之后,到显示Html网页,这个过程会发生什么?英文原文连接:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/(1)查找域名对应的IP地址    浏...

2018-04-16 14:58:49 1348

原创 Java中的Cglib代理

写在前面:    首先我们知道动态代理模式是实现AOP编程的核心,而动态代理这种设计模式又分为JDK代理和Cglib代理,在上一篇博客中,已经总结了JDK代理的实现过程(https://blog.csdn.net/may_3/article/details/79595432)。这篇博客,我们将总结Cglib代理,以及,这两种代理方式的区别,特点。    Cglib代理采用了asm框架的字节码技术。...

2018-03-23 19:04:15 402

原创 笔试题-(2)小朋友分糖果

写在前面:    题目比较简单,就是高中时候的排列组合挡板法,过了这么多年,忘得一干二净啊。题目:把60个糖果分给5个小朋友,每个小朋友至少分到10个糖果,请问有几种分法?    首先每个小朋友分10个,余下10个糖果。5个小朋友,每人可以有,也可以没有,所以,就在10个糖果内插入4个挡板,完成糖果分配=C(4)(14)。...

2018-03-22 16:44:40 3521

原创 笔试题-(1)1024的阶层结果末尾有多少个0

    由于末尾0的个数取决于乘法中因子2和因子5的个数。显然,乘法中因子2的个数>因子5的个数,所以我们只需要考虑因子5的个数。    是5的倍数有1024/5=204个。    是25的倍数有1024/25=40个。       是125的倍数有1024/125=8个。    是625的倍数有1024/625=1个。      所以1024!总共有204+40+8+1=253个因子5。 ...

2018-03-22 16:15:05 763

原创 深入理解Java虚拟机---(6)触发Full GC的条件

写在前面:    前面两篇博客中介绍了GC的收集算法,和7种收集器的特点,而在这篇博客,我们会讨论什么情况下回触发一次Full GC。分代收集补充:    在了解什么情况触发一次Full GC之前,我们先看一下JVM对象在内存区域中的年代划分。首先,我们知道GC收集器会根据回收对象的年龄,进行分代收集,如:Minor GC、Major GC。    Minor GC:    新生代GC,指发生在新...

2018-03-22 14:39:33 6458 1

原创 深入理解Java虚拟机---(5)HotSpot算法实现+GC的收集器

写在前面:    在上一篇博客中,为大家总结了GC的相关回收算法,以及怎么判断对象是否已经"死亡",在这篇博客中,将会以HotSpot虚拟机为例,讲解GC的收集器。HotSpot的算法实现:    (1)GC停顿    因为GC Roots的节点主要是全局性的引用(例如常量或类静态属性),如果逐个检查引用,会消耗大量的时间。GC分析工作会让所有的线程停顿在某个时间点上。    但时间上,HotSp...

2018-03-19 10:22:21 335

原创 Java中的正则表达式

写在前面:    你可能不知道正则表达式的含义,但你在实际开发的过程中,一定或多或少的使用过和正则表达式类似的应用场景。举一个例子,我们需要查找出某个文件夹下所有以 .mp3为后缀的文件,我们可能就是使用*.mp3。*是通配符,会匹配任意字符,这样不管前面如何,后缀为.mp3为后缀的文件就被找出来。那么正则表达式又是什么呢?正则表达式(Regular Expression):    即对字符串操作...

2018-03-18 18:33:21 426

原创 Java的JDK代理

写在前面:    Spring框架AOP的核心就是动态代理,动态代理又分为JDK代理和Cglib代理,这篇博客先来总结JDK代理的方法。JDK代理的核心是反射。所以要想手动实现动态代理,必须要实现InvocationHandler接口,并且有Proxy类动态创建一个代理对象。InvocationHandler:    InvocationHandler接口中只有一个方法:invoke方法。invo...

2018-03-17 22:12:15 300

原创 排序算法---(4)快速排序---Java实现

写在前面:    快速排序是冒泡排序的升级,他的排序思想为:对于给定的一组记录,选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分,直到序列中的所有记录均有序为止。例如:数组int [] arr = {4,3,5,6,1,2},选取基准点为...

2018-03-17 19:07:25 212

原创 String、StringBuilder、StringBuffer的总结

写在前面:    String、StringBuilder、StringBuffer都是Java用于定义一个字符串,三者看着相似,但在效率,线程安全方面有着区别。这篇博客就进行一些总结。    String:    String大概是我们学习Java SE最先接触到的一个关键字了,String是字符串常量,String对象一旦创建之后,不会改变。package string;public cl...

2018-03-15 12:09:16 186

原创 Java并发编程基础---(15)Java死锁总结

写在前面:    死锁是进程死锁的简称,死锁是操作系统层面的一个错误,是进程死锁的简称,最早在 1965 年由 Dijkstra 在研究银行家算法时提出的是指多个进程循环等待他方占有的资源而无限的僵持下去的局面。很显然,没有外力作用,那么死锁涉及到的各个进程都将永远处于封锁状态。死锁的产生:    计算机系统产生死锁的根本原因就是资源有限且操作不当。    (1)一种原因是系统提供的资源太少了,远...

2018-03-14 15:29:07 238

原创 JDK8下的HashMap源码分析

写在前面:    Java为了更方便的使用数据结构中的映射机制,提供了Java.util.Map接口,Map接口有4个常用的实现类:HashMap、LinkedHashMap、HashTable、TreeMap。在这篇博客中,我们将分实现原理。。。来对JDK8下的HashMap源码分析。    Java集合框架关系图:    Map的4个实现类对比:(1)HashMap:HashMap保存了一个键...

2018-03-13 19:47:41 262 1

原创 HTTP与HTTPS的区别

写在前面:    HTTP协议是OSI7层模型中的应用层协议,用于客户端与服务器之间传输超文本信息的协议,但不提供加密服务,如果攻击者截取了传输报文,那么如用户名,密码等就会被直接获取。因为HTTPS协议也就应运而生,HTTPS协议安全超文本传输协议,保证了数据传输的安全。    HTTPS协议:    HTTPS其实是安全的HTTP协议,由于HTTP协议的不安全性,由NetScape公司研发的S...

2018-03-13 11:58:29 275

原创 Java并发编程基础---(14)实现多线程的3种方式

写在前面:   Java 实现多线程共有3种方式,第一种是继承Thread类,第二种是实现Runnable接口,而在Java5之后,又增加了第三种方式,实现Callable接口。继承Thread类:package createthread;public class Demo1 { public static void main(String[] args) { ThreadDemo th...

2018-03-12 22:33:35 184

原创 finally块的执行情况分析与总结

写在前面:    我们在学习异常这一块内容时,老师一把把都会说,为了保证资源的释放,我们加入finally块,因为finally块中的代码一定会执行。但事实?却不然,这篇博客中将带来finally块的执行情况分析与总结。(1)finally块内容被执行    finally块的代码是在try代码块的return执行语句执行之后,方法返回之前,执行。说着比较绕口,我们来看一个Demo:package...

2018-03-12 19:26:47 375

原创 TCP协议的三次握手和四次挥手

写在前面:    在TCP/IP协议栈中,尽管TCP协议和UDP协议都是用网络层,但是他们向应用层却提供了不同的服务。TCP提供了一种面向连接的可靠地字节流传输,而UDP协议提供的是面向无连接的,简单不可靠的信息传输。    面向连接也就意味着客户端和服务器,在交换彼此数据之前,需要先建立一个TCP连接,这篇博客就将会介绍如何建立和释放一个TCP连接,也就是我们说的三次握手和四次挥手。TCP报文格...

2018-03-11 21:51:17 224

原创 深入理解Java虚拟机---(4)对象是否“死亡”的判断和GC的相关收集算法

写在前面:    在总结GC之前,首先要说,Java语言的一大好处就是讲程序员从繁杂的垃圾回收,释放对象内存空间中解放出来,相比之下,C++语言,还需要通过程序员手动的去管理,释放内存空间,省去了程序员的一大部分工作。在这一篇博客中,将会总结对象的“死亡”判断和GC的相关收集算法等。GC的研究范围:    首先在前一篇博客中,我们知道了JVM的内存区域划分,很多区域是线程独享的,比如:程序计数器、...

2018-03-11 18:06:59 376

原创 深入理解Java虚拟机---(3)内存溢出与内存泄漏

写在前面:    内存溢出和内存泄漏都是程序中,我们要极力避免出现的异常,二者在字面上看上去相似,但实际上是不一样的异常情况,在这篇博客中,我们会总结内存溢出与内存泄漏的区别。内存溢出和内存泄漏的定义:    内存溢出:Out Of Memory,指程序在申请内存时,没有足够的内存空间供其使用。    内存泄漏:是指程序在申请内存后,无法释放已申请的内存空间。    用通俗一点的话来解释,内存溢出...

2018-03-11 18:00:52 286

原创 数据库-乐观锁和悲观锁

写在前面:    锁根据其使用的方式可以划分为:乐观锁和悲观锁。乐观锁即乐观并发控制,悲观锁即悲观并发控制,他们是处理并发控制时主要采用的技术手段。其中,悲观锁正是数据库本身提供的锁机制实现的。    悲观锁:    悲观锁(Pessimistic Concurrency Control)缩写为PCC。从字面意义上理解,就是每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别...

2018-03-08 23:00:15 2501

原创 排序算法---(3)简单插入排序---Java实现

写在前面:    简单插入排序法其实比较好理解,他的算法过程类似于打扑克抓牌的过程。在我们抓到第一张牌之后,以后抓的每一张牌都会与之前手中的牌对比,对比之后,插入到合适的位置上,直到抓完最后一张牌。那么在算法实现中,也是同理,我们假设数组索引为0的元素有序,从数组索引为1的元素开始,将arr[1]与arr[0]对比,如果大于arr[1]>arr[0],则插入到arr[0]的后面,如果arr[...

2018-03-08 20:45:19 187

原创 排序算法---(2)选择排序---Java实现

写在前面:    在这篇博客中,将会总结选择排序算法的Java实现,分析选择排序算法的时间复杂度,空间复杂度等。选择排序算法的排序思想是,首先第一轮找到数组中最小的数字,并与数组索引为0的元素交换,第二轮从索引为1的位置开始寻找,同样是找到数组中剩余元素最小的元素,然后再与索引为1的元素交换,依次类推。。。。。核心思想即:每一轮找到数组中最小的元素,插在前面,最后完成排序。例如:数组int [] ...

2018-03-08 19:13:35 225

原创 Java并发编程基础---(13)wait和sleep的区别

写在前面:    在并发编程中,wait和sleep是常用的方法,相似却有着很大的区别,今天在博客中进行总结。我也是根据平常的并发编程经验和相关的博客总结了wait和sleep的区别,以及各自特点,肯定会有未想到的,希望大家帮忙留言补充,谢谢大家。wait是Object类的final方法,不可以被重写,而sleep方法时Thread类中静态、native修饰的本地方法。wait方法调用后,线程会释...

2018-03-07 19:42:16 271

原创 Java并发编程基础---(12)线程的中断

写在前面:    之前在一篇博客中介绍了线程中断的相关内容(http://blog.csdn.net/may_3/article/details/79393281),在Java锁的实现中也有使用中断的地方,所以想用一篇博客再好好总结一下线程的中断。    中断:概念:    中断是线程的一个标识位属性,表示运行中的线程是否对其他线程进行了中断操作。其他线程是通过interrupt方法来中断线程。应...

2018-03-07 19:36:07 173

原创 Java并发编程基础---(11)读写锁---ReadWriteLock

写在前面:    Mutex(互斥锁)、ReentrantLock(重入锁)本质上都是一种排他锁,在同一时刻只允许一个线程进行访问,而读写锁允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程都会被阻塞。    ReadWriteLock:引入:    在JDK5之前,读写锁的实现,是利用了等待通知机制+synchronized关键字。等待通知机制可以让所有晚于写操作的读操作进入等待状...

2018-03-07 16:35:53 337

原创 Java并发编程基础---(10)重入锁---ReentrantLock

写在前面:    在之前的博客中,我们总结了队列同步器的方法,在这篇博客中,将会总结Lock的实现类ReentrantLock,在ReentrantLock类的内部,就有一个内部类,继承了我们之前讨论过的队列同步器,我们也一起来看看队列同步器的实际应用。    公平锁和非公平锁:    在讲解ReentrantLock类之前,我们先引入一个概念--公平锁和非公平锁。    我们可以想象一个场景,比...

2018-03-06 23:00:37 249

原创 Java并发编程基础---(9)Java中的锁---队列同步器

写在前面:    在这一篇博客中,将会介绍Java中的锁等相关内容,篇幅较长,会循序渐进的总结从队列同步器再到Lock接口的相关实现类。队列同步器:    队列同步器 (AbstractQueuedSynchronizer) ,是用来构建锁和其他同步组件的基础,从Java API中,我们可以看出,在AbstractQueuedSynchronizer类中,定义了一个int 类型的变量-...

2018-03-06 19:34:12 273

原创 Java并发编程基础---(8)控制并发编程数量的Semaphore总结

写在前面:    在前面两篇博客中,介绍了CountDownLatch、CyclicBarrier类的使用,这篇博客中,将会总结Semaphore类的使用,完善Java并发包中的3个工具类的使用总结。Semaphore    Semaphore是用来控制程序中并发访问一个特定资源的线程数量,Semaphore通过协调各个线程,从而保证了资源的调度。Semaphore的构造器    我们来看一下JD...

2018-03-06 16:39:33 215

空空如也

空空如也

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

TA关注的人

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