自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java 创建对象的几种方式

采用new通过反射采用clone通过序列化机制前2者都需要显式地调用构造方法。造成耦合性最高的恰好是第一种,因此你发现无论什么框架,只要涉及到解耦必先减少new的使用。...

2019-06-06 16:02:48 946

原创 基于xml配置完成转账系统操作

2019-05-29 15:17:14 245

原创 c3p0创建连接池

2019-05-21 17:56:50 259

原创 mysql增删改查

查增删改

2019-05-21 17:55:08 243

原创 JDBC连接数MySql

1.加载驱动2.构建链接3.创建statement4.执行sql语句5.遍历结果集6.处理异常7.断开链接

2019-05-19 18:11:50 743

原创 MySql基本语句

show databases 查看所有数据库create database +名字 创建数据库drop database +名字 删除数据库use +名字 使用数据库select databases 查看当前使用那个数据库create table+名字(id int primary key auto-increment,username varch(16),password var...

2019-05-19 15:23:25 152

原创 aop注解总结

@Aspect 声明切面,修饰切面类,从而获得 通知。@Before 前置@AfterReturning 后置@Around 环绕@AfterThrowing 抛出异常@After 最终切入点@PointCut ,修饰方法 private void xxx(){} 之后通过“方法名”获得切入点引用...

2019-05-18 19:22:35 106

原创 基于XML装配Bean

3种bean实例化方式:默认构造、静态工厂、实例工厂1.默认构造 必须提供默认构造2.静态工厂常用与spring整合其他框架(工具)静态工厂:用于生成实例对象,所有的方法必须是static6.1.3 实例工厂实例工厂:必须先有工厂实例对象,通过实例对象创建对象。提供所有的方法都是“非静态”的...

2019-05-18 11:20:22 201

原创 Spring框架之DI(依赖注入)

DI Dependency Injection ,依赖注入is a :是一个,继承。has a:有一个,成员变量,依赖。 class B { private A a; //B类依赖A类 }依赖:一个对象需要使用另一个对象注入:通过setter方法进行另一个对象实例设置。例如:class BookServiceImpl{ //之前开发:接口 = 实现类...

2019-05-18 09:59:53 128

原创 Spring框架

1 spring是开源的轻量级框架2 spring核心主要两部分:(1)aop:面向切面编程,扩展功能不是修改源代码实现(2)ioc:控制反转,比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象把对象的创建不是通过new方式实现,而是交给spring配置创建类对象3 spring是一站式框架(1)...

2019-05-13 15:00:12 107

原创 如何在Spring官网下载Spring jar包

打开Spring官网:https://spring.io,点击PROJECTS点击SPRING FRAMEWORK点击GitHub图标找到Access to Binaries,点击Spring Framework Artifacts点击Spring Artifactory点击libs-release-local点击org/,点击springframework,点击spring...

2019-05-11 15:42:21 356

原创 无序数组和有序数组

有序数组的最大的好处在于查找的时间复杂度是O(log n),而无序数组的时间复杂度是O(n)。有序数组的缺点是插入的世家复杂度是O(n),因为值大的元素需要往后移来给新元素腾位置,相反,无序数组的插入时间复杂度是常量O(1)...

2019-05-11 10:34:56 4239

原创 大O符号(big-O notation)

大O好表示程序运行时的渐变时间复杂度的上界大O描述当数据结构中的元素增加时,算法的规模和性能在最坏的情境下有多好大O还可以描述其他行为,比如内存消耗,大O符号可以对大量数据性能给予很好的说明...

2019-05-11 10:22:37 4629

原创 JAVA优先级队列

java优先级队列是基于一个优先堆的无界队列,它的元素是按照自然顺序排序的,在创建的时候,我们可以给它提供一个负责元素排序的比较器。Priority Queue不允许为null值,因为它们没有自然顺序,或者说它们没有任何相关联的比较器。Priority Queue不是线程安全的,入队和出队的时间复杂度是O(log(n))...

2019-05-11 09:34:54 328

原创 Comparable和Comparator

Comparable和Camparator都是用来实现集合中元素的比较,排序的。Comparable是在集合内部实现的排序,Comparator是在集合外部实现的排序。所以如果想排序,就要在集合内部实现comparable的方法或者在集合外部定义comparator的方法。Comparable位于包java.lang下,Comparator位于包java.util下自定义的类要在加入list...

2019-05-10 15:19:03 165

原创 ArrayList和LinkedList

都实现了List接口ArrayList的实现用的数组,LinkedList的实现基于链表,ArryList适合查找,LinkedList适合增删ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是...

2019-05-10 15:05:32 173

原创 Array和ArrayList区别

Araay可以包含基本类型和对象类型,ArrayList只能包含对象类型Array的大小是固定的,ArrayList的大小是动态的ArrayList可以算是Array的加强版 提供了新的功能 添加全部 addAll() 删除全部 removeAll() 返回迭代器 iteratorAll()使用场景:如果我们需要保存一些在整个程序运行期间都会存在而且不变的数据,我们可以使用Array。但是我...

2019-05-10 10:23:22 5453

原创 HashMap和HashTable区别

1.hashmap是非线程安全的,hashtable是线程安全的2.因为线程安全的问题,hashmap的效率要比hashtable高.3.hashmap的键和值可以为null,hashtable则不可以4.hashtable是同步的,hashmap不是,所以hashtable适合多线程,hashma适合单线程一般现在不建议用HashTable, ①是HashTable是遗留类,内部实现很多...

2019-05-10 10:04:08 105

原创 Hashcode()和equals()

HashMap使用Hashcode()和equals()方法来确定键值对的索引,当根据键来获取值的时候也用到这两个方法,如果没有正确的使用这两个方法,两个不同的见可能会有相同的hash值,因此,可能会被集合认为是相等的。并且,这两个方法也用来发现重复元素,所以这两个方法的实现对与hashmap的准确性和精确性是至关重要的。...

2019-05-09 17:33:08 112

原创 HashMap工作原理

HashMap是一个key-value键值对的数据结构,它是由数组+链表+红黑树的形式实现的。(默认长度是16,只能有一个key为null,可以有多个value为null。数组是一个个Node[]数组,我们叫它hash桶数组。它上面存放的是key-value键值对的节点,Hashmap是用hash表来存储的。)在hashmap里为了解决hash冲突,采用链地址法。简单来说就是数组加链表的形式来解决...

2019-05-09 17:08:32 132

转载 HashMap

接下来写的内容是看过众多大神的文章后,自己总结的一些心得体会,主要是为了让大家快速理解HashMap,应付面试百分百足矣。当然讲HashMap之前必须先讲一些必备知识(等你回答完面试官问题,再深入问下去的时候,这些知识可以防止露馅):map的定义首先你要知道什么是map,map就是用于存储键值对(<key,value>)的集合类,也可以说是一组键值对的映射(数学概念)。注意,我这...

2019-05-09 16:21:20 253

原创 快速失败(fail-fast)和安全失败(fail-safe)

快速失败(fail fast):在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改,则会抛出Concurront Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()/next()遍历下一个元...

2019-05-09 15:54:40 250

原创 迭代器

迭代器 iterator :是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象。开发者不需要了解该序列的底层结构,迭代器被称为“轻量级”对象,因为创建它的代价很小。java中的迭代器很简单,并且只能单项移动:(1)使用方法iterator()要求容器返回一个Iterator,第一次调用iterator的next()方法,将返回序列的第一个元素。(iterator()方法是java.la...

2019-05-09 15:00:44 151

原创 为什么集合类没有实现Cloneable和Serializable

因为克隆和序列化可以理解为去克隆和去序列化,所以应该是用在实现时的情景,所以应该由集合类的具体实现来决定去克隆和去序列化

2019-05-09 14:43:48 290

原创 集合类框架接口

总共有两大接口:Collection接口 和 Map接口,一个是元素集合,一个是键值对集合。其中List接口和Set接口继承了Collection接口,一个为有序元素集合,一个为无序元素集合。而ArrayList和LinkedList实现了List接口。HashSet实现了Set接口,这几个都比较常用。HashMap和HashTable实现了Map接口,并且HashTable是线程安全的,但是H...

2019-05-08 19:16:52 82

原创 N个线程访问N个资源而不发生死锁

多线程产生死锁需要四个条件,分别是互斥性,保持和请求性,不可剥夺性还有循环等待性,这四个条件缺一不可只要破坏了其中一个条件就可以破坏死锁,其中最简单的方法就是:线程都是以同样的顺序进行加锁和释放锁,也就是破坏了第四个条件...

2019-05-08 18:14:16 842

原创 死锁

死锁是指多个进程因竞争资源时所造成的互相等待的现象,若无外力作用,这些进程都将无法向前推进,死锁产生的四个必要条件:1.互斥条件:一个资源每次只能被一个线程使用2.不剥夺条件:进程已获得的资源,在未使用完之前不能强行剥夺3.请求和保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系这四个条件是死锁的必要条件,只要系统...

2019-05-08 17:58:17 82

原创 监视器内部如何做线程同步的?

监视器和锁在JVM中是一块使用的,监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块,每一个监视器都和一个对象引用相关联,线程在获取锁之前不允许执行同步代码块...

2019-05-08 16:56:48 414

原创 同步方法和代码块的区别

同步方法默认用 this 或者当前类class对象作为锁。使用关键则 synchronized来修饰方法同步代码块可以选择以什么来加锁,比同步方法更精细,可以选择只同步会发生同步问题的部分代码而不是整个方法。使用 synchronized修饰需要同步的代码,用**synchronized(objiect){代码内容}**进行修饰...

2019-05-08 16:41:40 213

转载 同步方法与同步代码块?

为什么要使用同步?java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。如何使用?1.同步方法即有synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会...

2019-05-08 16:33:45 175

原创 多态 继承

多态:相同类型的引用变量,调用同一个方法时呈现出多种不同的行为特征。对象的实例变量不具备多态性。Java引用变量有两个类型:编译时类型,运行时类型编译时类型由声明该变量时使用的类型决定运行时类型由实际赋给该变量的对象决定如果编译时类型和运行时类型不一致,就可能出现多态继承:继承是一种类与类之间的关系利用一个已经存在的类,快速的创建新的类的机制被继承的类称为父类/超类,继承者称为子类...

2019-04-28 16:07:55 114

原创 面向对象 (封装)

代码开发模块化:提高了代码的维护性,更容易修改代码的安全性:通过关键字 将代码中的成员方法 成员变量设置访问权限,保证了代码的安全性和可靠性增加了代码的可理解性和复用性 还有很多重要的特性 封装 继承 多态和抽象封装:就是将属性私有化,再提供公有的方法去访问私有化属性。做法就是:修改属性的可见性来限制对属性的访问,并为每个对象创建一对赋值(set),取值(get)方法用于对这些属性的访...

2019-04-28 11:41:09 84

原创 线程的几种可运行状态

1.新建(new):新创建了一个线程对象。2.可运行(runnable):线程被创建后,其他 线程(比如main线程)调用了该对象的的start()方法,该状态的线程处于可运行的线程池中,等待被线程调度使用,获取cpu的使用权3.运行(running):可运行线程获得了cpu时间片,执行程序代码4.阻塞(block):阻塞状态是指线程因为某种方法放弃了cpu使用权,也让出了cpu时间片,暂时...

2019-04-28 09:17:32 1016 2

原创 进程和线程的区别以及线程的创建方法

进程是运行中的程序,线程是进程内部的一个执行序列。进程是资源分布的一个单元,线程是执行行单元进程间切换代价大,线程间切换代价小进程拥有资源多,线程拥有资源少。多个线程共享进程的资源...

2019-04-27 16:26:26 379

原创 值传递和引用传递

值传递传递的是变量的一个副本,改变副本不影响原变量。引用传递传递的是该对象地址的一个副本,并不是原对象本身一般情况,基础类型的传递为值传递,实例对象的传递为引用传递...

2019-04-27 16:15:58 60

原创 接口和抽象类的区别

1.抽象类中方法可以同时包含抽象的或非抽象的方法。,而接口中所有的方法隐含的都是抽象的。2.实现抽象类的方法时,如果方法是抽象的,则需要重写子类中的方法,如果方法是非抽象的,子类可以选择继承。实现接口的方法时,则必须实现接口中的所有方法,因为接口中的方法默认全部都是抽象的。3.抽象类成员函数可以是private protected public ,接口的方法全部默认为public abstra...

2019-04-27 15:48:02 57

转载 接口

一、接口的概念  接口JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴是一种应该受到保护的东西”,金丝猴从“应该受到保护的东西”这个类继承。这样金丝猴可以同时从 “动物类”、“值钱的东西类”、“应该受到保护的东西” 这三个类继承,但由于JAVA只支持单继承,因...

2019-04-27 15:06:04 91

转载 java支持多继承吗?

Java中类不支持多继承,只支持单继承(即一个类只有一个父类)。 但是java中的接口支持多继承,,即一个子接口可以有多个父接口。(接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)...

2019-04-27 11:16:53 348

原创 构造方法

java中的构造函数是为了初始化对象,默认的构造函数名称与类名相同,没有参数,没有返回值,构造的函数体内没有内容构造函数的重载和方法的重载很相似,是函数名与类名相同,参数类型不同。可以为一个类创建多个构造方法。每一个构造方法必须有它自己唯一的参数列表。Java不支持像C++中那样的复制构造方法,这个不同点是因为如果你不自己写构造方法的情况下,Java不会创建默认的复制构造方法。...

2019-04-27 11:15:40 99

转载 方法重写和方法重载

方法重写:重写方法的方法名,参数列表必须相同,返回类型可以相同也可以是原类型的子类型。重写方法不能比原方法抛出更多的异常。重写方法的访问权限不能缩小方法重写只能用于子类重写父类的方法,父类的一个方法只能被子类重写一次。被重写的方法不能是final类型,因为final修饰的方法是无法重写的被重写的方法不能为static。如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了...

2019-04-27 10:56:57 177

空空如也

空空如也

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

TA关注的人

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