java SE基础
蜜蜂采蜜
乐观、豁达、开朗的小蜜蜂,努力奔跑......
展开
-
单例模式详解
java设计模式--单例模式 单例设计模式Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。核心知识点如下:(1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。(2) 在其内部产生该类的实例化对象,并将其封装成private static类型。(3) 定义...原创 2017-04-12 13:55:08 · 1688 阅读 · 0 评论 -
Java8新特性之Lambda表达式学习一
刚毕业入职新工作,在职岗位培训时,老师在操作集合老使用Lambda表达式。这使一个之前完全没有接触过Lambda表达式的少年甚是苦恼,看不懂,闲余时间决定搞一搞Lambda表达式到底是啥东西?底层原理怎么实现的,接下来我将我的学习成果一起分享给大家......一、Lambda表达式的简介: Lambda表达式首先不是一种新的知识点,而是Java8推出来的一种新的语...原创 2018-07-28 13:45:01 · 324 阅读 · 0 评论 -
Java8新特性之Lambda表达式学习二
大家好,又来到超超博客大本营啦!欢迎大家......上一章我们讲解了Lambda表达式的基础语法,参数列表、变量等知识点,接下来我们接续探究Lambda的表达式、以及其中的方法引用。一、Lambda的表达式:(1)如果表达式只有一行,那么可以直接写(不需要{});(2)如果表达式有多行,就需要用{}变成代码块,就应该要符合正常的Java语法;(3)如果表达式是代码块,并且方法需...原创 2018-07-28 14:49:19 · 316 阅读 · 0 评论 -
深入解析ThreadLocal底层实现原理
学习Java中常用的开源框架,Mybatis、Hibernate中设计到线程通过数据库连接对象Connection,对其数据进行操作,都会使用ThreadLocal类来保证Java多线程程序访问和数据库数据的一致性问题。就想深入了解一下ThreadLocal类是怎样确保线程安全的!详解如下:一、对其ThreadLocal类的大致了解 ThreadLocal ,也叫线程本...原创 2018-04-16 13:06:06 · 7016 阅读 · 0 评论 -
浅谈Java中的volatile关键字
(1)内存可见性: volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演者重要角色。同Synchronized相比(Synchronized称为重量级锁),volatile更轻量级,能保证多个线程共享资源的可见性。public class TestVolatile { boolean status = false; /** ...原创 2018-04-15 20:54:30 · 348 阅读 · 0 评论 -
Java7中的HashMap详解
HashMap和HashSet是Java Collection接口两个重要的成员,其中HashMap是Map接口常用的实现类,HashSet是Set接口常用的实现类。虽然HashMap和HashSet实现的接口不一样,但是底层实现都使用了哈希表算法,存储机制完全一样。甚至HashSet本身就采用了HashMap来实现的!详解HashSet、HashMap的源代码分析及其哈希表存储机制:Ha原创 2017-06-22 12:34:11 · 2306 阅读 · 0 评论 -
手动HashMap的简单实现
说起HashMap的强大之处,就是其内部使用了哈希算法和链表算法,充分利用好加载因子的强大推动,使得在时间和空间上的成本寻求一种折中,其内部元素在存储和提取不仅可以充分利用好HashMap初始化的空间,而且查询效率及其的高!在面试中,面试官会常问HashMap的底层源码的实现,接下来我简单的手动实现一个HashMap集合:(一)HashMap中存储的元素类型即为键值对存在,定义一个能包含键原创 2017-07-22 10:38:01 · 1929 阅读 · 1 评论 -
两个队列实现一个栈 + 两个栈实现一个队列 Java
面试中常出现让你手写两个队列实现一个栈,两个栈实现一个队列的问题,很是头疼!今天就仔细将我分析,思考过的Java代码给大家分享一下:(一)两个队列实现一个栈:两个队列添加元素,哪个队列为空,由于在输出元素时,要进行相应元素的移动(除去尾部元素),所以要在对应不为空的队列进行元素的添加;在输出数据时,要进行两个队列的变相操作,不为空的队列要依次向为空的队列中添加元素,直到尾元素输出即可!原创 2017-07-16 17:18:14 · 9155 阅读 · 1 评论 -
线程的实例讲解
上一节我们讲解了进程和线程的区别,概念比较繁重,可能读者会出现大脑昏晕的状态,接下来我就实例讲解一下具体的使用,供大家更加深入的理解概念:(一)操作进程:在Java代码中如何运行一个进程,主要有两种方式:实现功能:在Java程序中如何开启一个进程:运行记事本程序!方式一:Runtime类的exec()方法即可开启一个进程(每一个应用程序中都会有一个Runtime类的实例对象,这个类构造原创 2017-06-13 22:30:25 · 734 阅读 · 0 评论 -
线程同步
前一篇讲到线程的两种实现方式,一种继承Thread类,一种实现了Runabble接口;也说到多个线程共享同一资源问题,由于线程在多cpu环境下是并行执行的,就会出现线程安全问题,此篇幅,我就来讲解一下多线程访问统一资源的安全问题:(一)通过同步代码块和同步方法,在多线程之间通过加同步锁(synchronized)来操作如何访问共同资源的线程安全问题!(1)同步代码块:语法:synchr原创 2017-06-15 17:53:24 · 420 阅读 · 0 评论 -
进程、线程的联系与区别
最近学了一些线程和进程之间关系和区别,接下来我就总结一下最近所学:(一)讲解一下并发和并行的区别:并行:指两个或多个事件在同一时刻点发生;并发:指两个或多个事件在同一时间段发生。(1)在操作系统中,多道程序环境下,并发性是指在一段时间内宏观上由多个程序在同时运行,但在单cpu系统中,每一时刻都却仅有一道程序执行(时间片轮转法),故微观上这些程序只能是分时的交替运行。倘若计算机系原创 2017-06-13 22:04:51 · 521 阅读 · 0 评论 -
Java集合简单介绍
学了这么长时间的Java集合框架了,虽然说细节方面掌握的不是很牢靠,但是具体的使用头脑里还是很清楚,接下来我就分享一下我对Java集合的认识:话不多说,先上一张图看看:(1)Collection接口最最基本的集合接口,它提供了多个最基本的方法,供其集合接口使用。Collection接口派生出了两个子接口List接口,Set接口。(2)List接口实际派生出三个实原创 2017-06-22 14:21:30 · 746 阅读 · 0 评论 -
HashSet集合中hashCode及equals方法详解
首先我们熟知HashSet集合中元素存储的特点:1)不允许元素重复;2)不会记录元素添加的先后顺序;3)HashSet中比较两个对象是否想用,要使用equals()方法,不能使用 ==; 4)底层依然使用哈希表(散列)算法,其本质就是数组形式,采用此算法就为提高查询的效率;5)插入速度也比较快,但适合于少量元素插入操作;一旦所存储元素个数满足(size * loadFocto原创 2017-06-21 12:07:20 · 2076 阅读 · 0 评论 -
线程通信之生产者消费者详解
先前我们讲解了多线程互斥访问同一资源问题,接下来我们讲解一下线程通信问题之经典:生产者与消费者线程通信:不同的线程在执行不同的任务,如果这些任务的执行之间存在先后顺序,那么线程之间必须要能够通信,协调的完成工作。(一)经典案例:(1)生产者和消费者等多个线程在访问共同资源时, 必须要互斥(即要访问的临界资源一样),只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以原创 2017-06-19 18:05:53 · 653 阅读 · 0 评论 -
Collection接口之List子接口详解
讲解之前先讨论一个问题:容器类(集合类)可以存储多个数据,既然数组可以存储,为什么需要定义容器类?数组的弊端:1)长度是可变的,一旦数组初始化以后,长度就固定了; 2)若是在多个地方需要存储多个数据,都得特意编写数组的操作方法,如此以来就没有体现DRY原则(Don‘t repeat yourself),即为代码的重用性不高!为了解决这一弊端,Collection接口就诞生出原创 2017-06-19 14:42:20 · 1007 阅读 · 0 评论 -
LinkedList的手动实现
上一篇我们讲解了Collection接口之List子接口中的ArrayList、Vector以及Stack的实现类,由于比较简单,不在赘述,下来我们讲解List接口之LinkedList实现类(1)LinkedList类本质上是一个双向链表,也是单向队列,双向队列,栈的实现类;(2)LinkedList类实现了单向队列,双向队列的接口,自身也提供了栈操作的方法,链表操作的方法;(3)L原创 2017-06-19 15:00:04 · 660 阅读 · 0 评论 -
java 程序编译和运行过程详解
java整个编译以及运行的过程相当繁琐,我就举一个简单的例子说明:Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode); 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)原创 2017-05-09 11:40:08 · 36273 阅读 · 5 评论 -
String,StringBuffer以及StringBuilder的区别
最近学到StringBuilder,就想搞明白关于String,StringBuilder,StringBuilder的区别,现在我就整理一下。关于这三个类在字符串界的位置是不言而喻的,那么它们之间有啥重要的区别和有优点呢?(1)三者在执行速率方面的比较:StringBuilder > StringBuffer > String;(2)String唯一的好处:它是常量,程序的至始至终不原创 2017-05-24 17:46:17 · 345 阅读 · 0 评论 -
迭代器模式
网址链接:https://www.cnblogs.com/chenssy/p/3250409.html 你项目组接到一个项目:对电视机的电视频道、电影和收音机菜单进行统一管理,建立一个统一的菜单管理界面,能够看到所有的电视界面、电影界面和收音机频道。你有三个手下:小李子、小杏子、小安子,他们分别就每个模块做开发工作,看他们都做了哪些工作。 这是主菜单JavaBean,用于显示每个...转载 2018-11-01 17:20:01 · 355 阅读 · 0 评论