自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ConcurrentHashMap源码分析

前言 ConcurrentHashMap是java.util.concurrent包下的一个类,它设计出来是用来在某些情况下替换Hashtable的。相比Hashtable它能够更加高效的进行多线程操作,并不一定需要像Hashtable一样,当一个线程占有锁的时候其他的线程都必须进入阻塞状态,因此在多线程环境下它更加的高效。至于,ConcurrentHashMap是否能够完全替代Hashtabl...

2018-06-18 12:00:38 189

原创 HashMap和Hashtable的比较

在面试的时候,java集合最容易被问到的知识就是HashMap与Hashtable的比较,通常我们也很容易回答出一下几点: 1、HashMap是线程不安全的,在多线程环境下会容易产生死锁,但是单线程环境下运行效率高;Hashtable线程安全的,很多方法都有synchronized修饰,但同时因为加锁导致单线程环境下效率较低。 2、HashMap允许有一个key为null,允许多个value为...

2018-06-02 12:40:07 361

原创 jdk1.8 ThreadLocal源码研究

ThreadLocal是什么 顾名思义,ThreadLocal为线程局部变量 使用场景 JDBC的连接connection对象都是非线程安全对象。所以在web环境下,使用一个线程处理一个请求的时候,需要从数据库连接池中取出connection对象,但是为了保证connection对象的线程安全性,很简单的一个方案就是将它线程私有化,这个时候就需要用到我们的线程局部变量ThreadLocal。...

2018-05-27 18:30:26 815

原创 将数组的0元素都移动到最后

给定一个整数的数组,要求将数组中的所有的0元素移动到数组的最后,其他的元素保持原来的顺序。要求:空间复杂度不能超过O(1)example:给定数组[0,2,0,7]转换后应为[2,7,0,0]输入:第一行输入一个数位数组的长度其他的数为数组中元素。分析:该题目的难点在于将非0的元素移动到数组的前端的时候必须要保持数组原来元素的顺序。我们可以看出0元素是确定的元素,我们可以统计0元素的个数之后,我们...

2018-03-30 18:58:01 4211 1

原创 两个Integer对象比较

我们都知道java中对象之间用==进行的比较是内存地址之间的比较,也就是说==比较的话,如果两个引用指向堆内存中同一个对象那么就返回true,否则返回false。Integer对象之间的比较首先来看一下这样一段代码:public static void main(String[] args) { // case 1 Integer a1 = Integer.valueOf(60);

2017-08-16 10:37:15 1175

原创 快速排序

快速排序主要采用分治的思想。假设对一个数组arr[l…r]进行快速排序,采用分治思想可以分为三分:分解:选取一个主元,假设它的索引位置为q,将arr[l…r]以q为分割点分割为两个(可能为空)子数组arr[l…q-1]和arr[q+1…r],使得arr[l…q-1]这部分的元素都小于arr[q],而arr[q+1…r]这部分的元素都大于arr[q],同时在划分的过程中也要计算出分割点q。解决:通过递

2017-08-14 16:59:44 189

原创 java内存模型

前言 并发处理的广泛应用是使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类“压榨”计算机运算能力的最有力武器。 现代计算机的处理器在追求运算速度的提升的同时,也朝着多核化方向发展。这个趋势越来越明显,已经成为现代处理器发展的主流趋势。 为什么我们希望计算机可以多做一些事呢? 原因是计算机的处理器的处理速度和计算机的存储设备的读写速度相差甚大,我们不希望处

2017-07-07 12:07:15 218

原创 java垃圾回收

垃圾回收当一个对象不再被使用的时候,虚拟机就需要找到不在被使用的对象,然后将其所占的堆内存回收,以供后面的对象创建使用。 意义 引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存

2017-05-15 16:56:05 578

原创 打招呼

前记写博客,记录发生在自己身上的点点滴滴,这可能是一件让我开心的事,或者是一件让我感到难过的是事。但是,重要的不是事情的本身,而是我在这件事当中的过与得失,以及自己的体会到的人情世故。 我相信,发生在自己身边对自己成长有帮助的事,自己有必要把它记录下来。也许将来的哪一天我们会忘记这件事,但是,我们回来翻阅自己的博客的时候,我们会惊讶的发现原来还有这么一件事、这样一个人在我们生命中出现过。恨不会持续

2017-05-14 18:26:57 371

原创 java类加载机制

类加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。 过程如下图: 类的生命周期 它的整个生命周期包括:加载

2017-05-14 14:19:00 321

原创 jvm内存模型

jvm内存模型

2017-05-11 12:58:53 311

原创 java多态

面向对象的三大基本特征:封装,继承和多态。封装:就是将类的内部实现细节封装和数据封装起来,不对外暴露实,向外部提供接口,来操作内部封装的数据。 继承:为了提高代码的重用性,如果一个类A和类B是IS-A关系,则可以使用继承。 多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)。 作用:可以根据实现类的不同而实现不同的功能

2017-04-09 20:55:23 243

原创 java 继承

为什么需要继承?//大学生类 public class UnStudent{ //定义属性 String name; Int ID; Int age; //定义方法 public void study(){ System.out.println("学习!"); } public void sleep(){

2017-03-24 12:18:18 267

原创 java网络编程

什么是网络? 网络就是讲一些计算机连在一起,并且可以实现计算机与计算机之间的通信。 通常来说将网络分为:局域网,城域网和互联网。 那么在网络中计算机之间是如何区分的呢或者说我们在使用计算机通信的时候怎么才能知道指定的计算机呢? 此时就有一个IP地址标识一台计算机,IP地址就好像是一个人的身份证一样或者是一栋房子的地址,具有唯一性。 同时计算机里面往往有多的进程,那么计算机

2016-09-07 15:42:57 254

原创 java多线程

什么是程序,进程和线程? 程序:是为了实现某些目的使用计算机语言编写的指令集。 进程:一个程序运行起来就会形成一个进程,程序退出后进程也就结束了。进程有独立的内存和数据空间。 线程:轻量级的进程。线程是进程里面不同的路径,或独立的任务。 多线程的实现 1.继承Thread类 继承Thread类,并且重写Thread类里面的run方法,再创建对象并且调用start方法。 pub

2016-08-18 08:35:21 308

原创 java五子棋

java五子棋总结 刚刚学习java不久,尝试自己做了一个五子棋先附上一个运行效果的图: 五子棋的主要目的: 1.练习java面向对象的编程思想 2.掌握监听器的使用(鼠标监听器) 制作五子棋为了代码的可扩充性,我们首先要定义一个五子棋的各个属性的接口: /** * 五子棋的相关属性 * @author Administrator * */ public int

2016-08-11 08:52:25 8696 6

原创 java事件监听机制

java事件监听机制 为何按钮无法登录? 在刚刚开始学习java的图形化界面编程的时,我们模仿qq制作一个简单的qq登录界面的时候。我们点击登录那个按钮,会发现并没有任何反应,而当我们使用qq的时候我们点击登录的按钮会出现一个新的界面出来。那么为什么我们点击我们制作的登录按钮的时候程序没有任何反应呢?这里就涉及到了下面要讲的事件监听机制。 什么是事件监听机制? 比如说我们也

2016-07-29 21:48:41 1073

原创 Java中的类与对象

Java中的类与对象 程序是实体在计算机中的体现,而对于一个实体主要是从属性和方法上面来描述,例如一个人就是一个实体。每一个人都有自己的名字,性别,年龄等,这些就是一个人所具有的属性,同时人还有学习、吃饭、睡觉等,这些就是一个人所具有的方法。在现实生活中可找出很多事物作为实体,例如学生、教师、飞机、发动机等都是实体;在思维世界中许多的概念也可以作为一个实体,例如复数,矩阵,堆栈,队列等,它们也有

2016-07-13 19:50:21 1229

空空如也

空空如也

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

TA关注的人

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