自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bemyself

Java小白的吐槽

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

原创 快速排序算法及优化(Java实现)

快速排序思想:1.找基准:定义high,low,temp,先让tmp=low值,从high位置开始找比tmp小的值,没有就high–,有就让low值等于high值,然后从low位置开始找比tmp大的值,没有就low++,有就让high值等于low值,然后又从high位置开始找比tmp小的值,以此类推,直到high和low相遇跳出返回low下标(此时的基准)找基准全程都是和tmp值(就是基准值)...

2019-03-22 11:18:21 1339

原创 Spring中的bean对象

Spring的三种管理bean对象的方式:1.xml配置文件中进行bean的配置ClassPathXmlApplicationContext2.基于JavaConfig配置类进行bean的配置(完全舍弃了xml配置文件)AnnotationConfigApplicationContext3.spring自动扫描bean 涉及的一系列的注解@Component 组件(spring的be...

2019-03-22 11:07:05 745

原创 SpringMVC实现原理及方法

SpringMVC原理M => Model 模型 响应请求并返回相关数据V =》View视图 对数据进行视图渲染C =》controller 控制器 监听用户的请求以及最终响应用户处理流程:1.url /login =》DispatcherServlet(/和/*) @Controller @RequestMapping DispatcherServlet...

2019-03-22 11:01:08 259

原创 hashcode,equals,== 的区别

hashcode和equals的区别如果两个对象相同也就是equals判断相同之后那么两个对象的HashCode一定是相同的,但是HashCode相同的两个对象不一定是相同的。也就是说equals()判断两个对象相等之后 两个对象的hashCode()一定是相同的但是hashCode()的返回值相同之后,并不代表equals()就会相同。所以当你重写了equals()方法之后你一定要重写H...

2019-03-01 16:26:04 131

原创 死锁概念?如何分析死锁和避免死锁?

什么是死锁?如何分析死锁和避免死锁?死锁就是在多线程运行时,线程对象在获取操作资源时,操作资源被其他线程对象占用而获取不到,导致线程运行阻塞首先用jsp命令查看当前进程pid是否发生死锁,然后利用可视化工具Jvisualvm查看当前进程的各个线程运行状态(颜色),通过Jvisualvm的线程dump或jstack命令,把当前进程的所有线程的堆栈信息打印出来,然后分析主线程和子线程有没有wa...

2019-03-01 16:23:32 643

原创 JVM发生Full GC情况及防止策略

1、 System.gc()方法的调用调用此方法是建议JVM进行Full GC,只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full GC的频率,也即增加了间歇性停顿的次数。可通过设置参数-XX:+ DisableExplicitGC来禁止RMI调用System.gc。2、老年代空间不足a:连续空间碎片不足:当有大对象、大数组进入老年代时,老年代的连续空间碎片放不下,此...

2019-03-01 16:21:54 4553

原创 深入理解JVM原理

1.JVM本质本质:① Java源文件—->编译器—->字节码文件② 字节码文件—->JVM—->机器码Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。2.JVM生命周期(1)JVM实例的诞生当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String...

2019-03-01 16:19:58 160

原创 设计模式——代理模式

代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。代理模式的优势:开闭原则,增加功能:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修改委托类,符合代码设计的开闭原则。代理模式的应用很多,比如Spring容器的延迟加载,AOP增强...

2019-02-24 20:08:54 94

原创 设计模式——工厂模式

工厂模式:工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、工厂方法模式、以及抽象工厂模式。意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。关键代码:创建过程在其子类执行。...

2019-02-24 14:29:17 138

原创 浅谈volatile关键字

1、可见性可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。在修改变量的时候:1、将修改变量的副本写入主内存2、其它线程的副本置为无效在读取变量的时候先判断volatile关键字修饰的变量副本是否有效,有效直接读取反之,则到主内存获取最新值2、有序性有序性:即程序执行的顺序按照代码的先后顺序执行阻止指令的重排序:在汇编层会对volati...

2019-02-24 14:08:32 115

原创 设计模式——单例模式

1、设计模式的定义:设计过程中可以反复使用的、可以解决特定问题的通用设计方法。2、设计模式的目的:为了可重用代码、让代码更容易被他人理解。3、单例模式定义 :确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。4、主要解决:一个全局使用的类频繁地创建与销毁。5、何时使用:当您想控制实例数目,节省系统资源的时候。6、 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有...

2019-02-24 14:04:27 163

原创 Java多线程实现复制文件

/** * 实现文件复制功能 * 多线程实现文件从一个目录复制到另一个目录 * @param sourceFile:给定源文件路径名 * @param desPath:复制点文件路径 * @return */代码实现如下:package com.tulun.thread;import java.io.File;import java.io.FileNotFoundExcep...

2018-09-24 15:55:33 3700 1

原创 Java线程池基础知识解析

一、线程池概念线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,由于单个线程的创建和销毁需要开辟单独的线程内存空间和资源,所以频繁的创建和销毁线程也是需要系统开销的,线程池可以将使用完成的线程暂时回收到线程池中,避免重复创建和销毁带来的资源消耗问题。 二、为什么要有线程池?线程池改进了一个应用程序的响应时间。由于线程池中的线程已经准备好且等待被分配任务,应用程序可以直接拿来使...

2018-08-05 20:41:10 239

原创 中兴捧月——婚姻匹配问题

题目:建立一个模型,来模拟推导社会男女择偶过程。为了模型简化,一个人的特性指标有三个,这里假设为财富、样貌、品格,每个指标均可取值1-100之间任意数字。同样也对这3项指标有自己的需求。这3个需求值取值范围都在1-98间,当然三者的和必须为100.所以任意一个人可以用以下数组来表述:G(A、B、C、A1、B1、C1)G代表男,M代表女。举例G11(80、50、40、10、30、60...

2018-08-05 11:11:39 253

原创 Java面向对象——多态

1.面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。2.多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用) 3.实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。4.多态的作用:...

2018-07-24 20:55:06 162

原创 Java集合总结

集合按照其储存结构可分为两大类:即单列集合Collection和双列集合Map.Collection:单列集合类的根接口,用于储存一系列复合某种规则的元素,它有两个重要的子接口,分别为List和Set。其中List的特点是元素有序,元素可重复。Set的特点是元素无序并且不可重复。List接口的主要实现类有ArrayList和LinkedList,Set接口的主要实现类有HashSet和Tree...

2018-07-20 15:44:00 393

原创 Java自身实现ArrayList

要实现ArrayList,首先理解ArrayList的底层数据结构是数组,是一个动态数组,其容量能够自动增长,据此特性来实现ArrayList。实现代码:public class MyArrayList<O>{/** * 数组默认长度 */private static final int DEFAULT_SIZE = 10;/** * 存储队列中的元素 */...

2018-07-19 18:49:26 276

原创 Java自身实现LinkedList

要实现LinkedList,首先理解LinkedList的底层数据结构是链表,直白的说是一个双向链表,双向链表本身前继域和后继域还有数据本身所在区域。Node类:/** * 定义节点 */public class Node { Node previous; //前继,指向前一个Node Object data; //节点数据 ...

2018-07-19 17:26:40 178

原创 Java练习题——集合对象线程安全

(不定项选择题)以下集合对象哪几个是线程安全() A、 LinkedList B、 ArrayList C、 Vector D、 Hashtable正确答案:C D解析:Collection是对象集合,Collection有两个子接口List和Set。List可以通过下标(1,2……)来取得值,值可以重复,Set只能通过游标来取值,并且值是不能重复的。ArrayList,v...

2018-07-17 14:28:18 904

原创 Java练习题——子类调用父类构造方法问题

阅读Test.java代码,运行结果为?class Person {String name = "No name";public Person(String nm) {name = nm;}}class Employee extends Person {String empID = "0000";public Employee(Srting id) {empID = id;...

2018-07-14 12:10:08 1144

原创 Java集合中HashMap与Hashtable的区别

HashMap和Hashtable都是基于数组+链表的数据结构,同时两者都实现了Map接口。HashMap和Hashtable的主要区别在于:线程安全性,同步和速度。1、HashMap类大致等同于Hashtable,不同之处在于它是非同步的并且允许空值。 (HashMap允许空值作为键key和值value,而Hashtable不允许空值)。2、HashMap是非同步的,而Hashtab...

2018-07-03 14:56:45 236

原创 Java泛型应用——泛型实现单链表

泛型实现单链表:import fanxing.GenericLink.Entry;/*泛型实现单链表*/class GenericLink<T> { public Entry<T> head;//定义头结点 class Entry<T>{ private T data;//数据 pr...

2018-06-06 11:51:57 1519

原创 Java泛型基础学习

一、什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型...

2018-06-06 11:38:21 1644

原创 Java基础——类加载机制

类加载概念: 每个Java文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载。 1、如何识别.class文件? 2、识别到对应的class文件后,该如何加载它?依赖加载器?...

2018-06-05 21:23:33 130

原创 Java基础——反射机制

反射的概念: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.(使用的前提条件:必...

2018-06-03 12:03:04 135

原创 Java中如何进行对象克隆

如何进行一个简单变量的克隆?int tmp = 7; int val = tmp; 不仅仅是int类型,其它七种原始数据类型(byte,char,short,float,double.long,boolean)同样适用于该类情况。但是如果你克隆的是一个对象,情况就有些复杂了。class Student { private int number; ...

2018-05-30 10:25:23 204

原创 Java中重载与重写的区别

重载Overload 1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载是一个类中多态性的一种表现。2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。3) 重载的时候,方法名要一样,但是...

2018-05-29 18:35:00 140

原创 接口练习之模拟银行存取款

接口练习——模拟银行存取款 要求: 1、 创建基接口BankAccount,包含 存款方法playIn(),取款方法withdraw(),查询余额方法getBalance()。 2、 创建接口ITransferBankAccount(继承基接口BankAccount),包含转账方法transferTo(). 3、 创建类CurrentAccount(实现基接口ITransferB...

2018-05-29 17:07:39 2455

原创 抽象类和接口用法及区别

一.抽象类 当定义一个类时,常常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现是无法确定的。在这种情况下,Java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字来修饰。当一个类中包含了抽象方法,该类必须使用abstract关键字来修饰,使用abstract关键字修饰的类为抽象类,具体示例如下://定义抽象类Animala...

2018-05-29 16:58:18 293

原创 浅析Java继承总结

一.继承的概念 在java中,类的继承是指在一个现有类的基础上创建一个新的类,构建出的新类被称作子类,子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。//定义Animal类class Animal {String name;//定义动物叫的方法void shout() {System.out.println("动物...

2018-05-23 16:01:25 196

原创 详解Java类与对象

1.类的定义: 类是对象的抽象,它用于描述一组对象的共同特征和行为。类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也被称为属性,成员方法用于描述对象的行为,可简称为方法。class Person{int age; //定义int类型的变量age //定义speak()方法 void speak(){ System.out.println("大家好,我...

2018-04-22 18:54:32 1006

原创 java的装箱与拆箱

1.什么是装箱?什么是拆箱? 装箱就是把值类型转变为引用类型Integeri=10; 拆箱就是把引用类型转变为值类型inti=newInteger(10)。 实践程序:public class Test1{ public static void main (String [] args){ //装箱int i=0; Integer integer = i;//i这么一个基本...

2018-03-31 23:12:42 122

空空如也

空空如也

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

TA关注的人

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