- 博客(33)
- 收藏
- 关注
原创 事务总结(概念、ACID特性、并发时出现的问题、隔离级别、传播特性)
事务总结(概念、ACID特性、并发时出现的问题、隔离级别(SQL、Spring)、传播特性)1、事务的概念1)一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元;2)要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果。保证事务执行要的原子操作;3)事务的所有SQL语句全部执行成功,才能提交(commit)事务,把结果写回磁盘上。事务执行过程中,有的SQL出...
2019-08-17 18:11:57
225
原创 java内存区域及异常总结
java内存区域及异常总结在java中,把内存控制的权利交给了java虚拟机去执行,所以在这里主要看一下java虚拟机内存的各个区域,以及各区域的作用、服务对象,以及可能产生的问题。Java虚拟机在执行java程序的过程中会把所管理的内存划分为以下几个运行时数据区域,如图:Java虚拟机运行时数据区:1、程序计数器性质:线程私有。概念:程序计数器,是一块较小的内存空间,它的作用可以看...
2019-08-16 14:29:44
142
原创 java KMP模式匹配算法解析,及其代码实现
KMP算法思想及其代码实现概念解释:KMP也是一种模式匹配算法,简单来说就是将子串与主串去匹配,查找子串是否存在与主串中。之前分析过得BF算法,虽然它也是一种简单常用的模式匹配算法,但我们可以发现,在BF算法中主串的每一个字符都要和子串第一位进行匹配,时间复杂度是O(m*n),有很多重复的步骤,所以KMP算法算是简化了BF的步骤,利用之前判断过得信息,通过一个next数组,保存模式串中前后最长...
2019-08-14 18:15:36
217
原创 java朴素(BF)模式匹配算法解析,及其代码实现
BF(朴素)匹配算法概念:BF(朴素)是简单的模式匹配算法,就是通过主串str匹配是否存在子串sub举例:假设我们从下面的主串String str = "abcababcabc"中,找到String sub = "abcabc"这个子串的位置,我们通常需要以下步骤:1、分别定义i和j为主串和子串所对应的下标;主串str从0号下标开始,str与sub 4号下标以前,字母都匹配成功,但s...
2019-08-14 14:59:29
777
原创 java左旋转数组的实现,例如:String str = “abcdef”;从第2个开始旋转,旋转后的结果为: ”cdefab”
编写函数,将字符串从左数第n个开始进行旋转(也叫左旋数组)。例如:String str = “abcdef”;从第2个开始旋转,旋转后的结果为: ”cdefab”。理解思路:有n个整数或者n个字符,,要实现旋转,比如要从二号下标开始旋转,可将二号下标以前的数顺序向后移,然后将二号下标以及二号下标以后对应的数顺序往前移,就可以完成旋转,代码如下: 有n个整数或字符,使其前面各数顺序向后移m个位...
2019-08-13 17:19:37
672
原创 Java二分查找的实现---递归与非递归
二分查找的思想简单描述:通过访问数组下标查找对应的值定义数组最左端(left)下标、最右端(right)下标和中间值(middle)下标确定整个查找区间的中间位置middle = (right-left)/2+left用待查值num与中间值arr[middle]作比较若相等,查找成功,直接返回true或对应的下标若小于中间值,则变最右边下标为right = middle-1,在前半个...
2019-08-11 16:44:01
106
原创 类加载顺序常考题:A{i = method();static int j = method2();}B extends A{m = method3();static int n = method4()
判断输出运行结果:class A{public int i = method();public static int j = method2();public int k = 0;}public class B extends A{public int m = method3();public static int n = method4();public int t = 0;...
2019-08-09 16:45:25
374
原创 Java Spring 中IOC(控制反转)与DI(依赖注入)区别解释
IOC(控制反转)与DI(依赖注入)总结一、IOC控制反转1、IOC即控制反转:它不是一个技术,而是一种设计思想,在java开发过程中,控制反转意味着将设计好的java对象交给容器控制,会帮助创建对象,并将对象的管理(创建 维护 销毁)交给spring管理,在使用对象的时候将对象反转给使用方,而不是传统的在对象内部直接控制,也就是本该自己做的事情交给系统去做,我们只需要在配置文件xml中...
2019-08-07 23:19:17
350
原创 java设计模式--工厂模式
工厂模式:工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的,工厂模式可分为三类:简单工厂模式、工厂方法模式和抽象工厂模式。1) 简单工厂又叫静态工厂,是三种模式中状态结构最简单的,用来接受参数,并根据参数决定返回返回实现同一接口的不同类的实例。假设客户需要冰箱,他只需要工厂帮他生产就好了,因为这个工厂可以生产产品,2) 工厂方法模式为了满...
2019-07-31 16:59:22
128
原创 java类的加载过程详细解释(图文结合)
java类的加载过程是什么(详解)类加载主要是由jvm虚拟机负责的,过程比较复杂,类加载分三步:加载(双亲委派模型)—》连接—》初始化(1)加载(靠加载器完成,明白加载机制)Java虚拟机一般使用Java类的流程:编辑.java文件转换成class文件,程序运行之前jvm类加载器会把编译完成的.class二进制文件加载到内存,将它放在运行时数据区的方法区内,然后在堆区创建一个java.lan...
2019-07-31 15:32:48
523
原创 java设计模式--单例模式
单例设计模式:单例模式是java中常见的一种设计模式,它确保一个类只有一个实例,也就是说采用单例模式的类(Singleton类)永远只会有一个实例化对象产生,而且该实例易于外界访问。这里主要介绍两种单例模式实现方式:懒汉式、饿汉式。1) 懒汉式单例线程安全,必须加锁,但效率低,第一次使用的时候实例化自己 /** * 懒汉式单例类。 只在外部对象第一次请求实例的时候才会去创建...
2019-07-30 16:46:52
97
原创 java线程的同步和异步解释
java线程的同步和异步1)同步:就是排队,发送一个请求,等待返回,然后再发送下一个请求,如:A线程请求资源,好巧该线程正在被B线程使用,那不好意思,A就只能排队等待。在java多线程中,多个线程同时请求同一个资源,很可能会导致资源的数据不安全,一般共享某一资源的时候,如果每个人都有有权利修改,两人同时修改了一个文件,这时读到的可能就是错误的数据了,所以就引进了同步机制。例如:银行的转账,...
2019-07-26 16:37:51
251
原创 java线程优先级 及其特性
1、线程优先级现代操作系统基本采用时分的形式调度运行的线程,操作系统会分出一个个时间片,线程被分配到的时间片用完了就会发生线程调度,等待的下次分配。线程分配到的时间片多少决定了线程使用处理器资源的多少,而线程优先级就是决定线程需要多或者少分配一些处理器资源的线程属性。Java线程中,通过一个整型成员变量priority来控制优先级,优先级范围1—10,在线程构建的时候可以通过setPriori...
2019-07-26 12:37:14
253
原创 java_ReantrantLock和Synchronized比较(笔记总结)
ReantrantLock和Synchronized比较(笔记总结)相同点:1) 协调多线程对共享变量、对象的访问2) 可重入,同一线程可多次获得同一个锁3) 都保证了可见性和互斥性不同点:1) ReantrantLock显示获得释放锁,Synchronized隐式获得释放锁2) ReantrantLock可响应中断(通过Lock.lockInterruptibly()或tryLoc...
2019-07-24 18:03:50
410
原创 为什么使用多线程(详解)
解释上下文切换:CPU通过给线程分配时间片来使线程执行,每个时间片非常短,CPU通过时间片分配算法来循环执行任务,当前任务一个时间片后会切换到下一个任务,但此时会保存上一个任务的状态,以便下次再切换回这个任务时,还可以再加载这个任务的状态,所以任务从保存到再加载的过程就是一次上下文切换。为什么使用多线程:1) 更多的处理器核心:处理器上的核心数量越来越多,以及超线程技术的广泛运用,现在大多数...
2019-07-24 16:34:16
410
原创 线程的状态及各状态之间的转换
1、线程的状态Java线程在运行的生命周期中可能处于6种不同的状态,在给定的一个时刻,线程只能处于其中的一个状态,6种状态如下:1)NEW:初始状态,线程被构建,但还没有调用start()方法2)RUNNABLE:调用start()可进入运行状态,java线程将操作系统中的就绪和运行两种状态统称为“运行中”3)BLOCKED:阻塞状态,线程阻塞于锁,线程可能调用了join()方法,此时停止...
2019-07-23 17:51:13
672
原创 java 线程与进程定义、关系?进程间通信?
什么是线程?什么是进程?线程与进程的关系定义:进程:资源分配的基本单位,执行的程序就是一个进程线程:是CPU独立运行和独立调度的基本单位,是进程内部一条执行路径或序列,也叫轻量级进程,一个线程只能属于一个进程,而一个进程可以并发多个线程,每条线程并行执行不同的任务。线程自己不拥有系统资源,但拥有各自的计数器、栈空间等,用来存放所有局部变量和临时变量,能够访问共享的内存变量。两者的区别:1...
2019-07-23 12:12:40
151
原创 java序列化与反序列化
序列化和反序列化?序列化ID表示什么意思?Java的对象序列化就是将实现了Serializable接口的对象转换成一个字节序列,并在以后将这个字节序列完全恢复为原来的对象,这一过程可通过网络进行,意味着序列化机制能自动弥补不同操作系统之间的差异。对象序列化可以实现轻量级持久性。“持久性”意味着对象的生存周期不取决于程序是否正在执行;它可生存与程序的调用之间。通过将一个序列化对象写入磁盘,然后再...
2019-07-23 10:29:56
92
原创 java中强软弱虚四个引用
强软弱虚四个引用引用的目的:在一定程度上与垃圾回收器进行交互,更好的帮助垃圾回收器管理好应用的内存1) 强引用(Strong):默认情况下对象使用强引用,在程序代码中普遍存在,对象实例没被引用时GC回收,使用new关键字创建出来的对象就是强引用,如:People p=new People,对象具有强引用,垃圾回收器就不会回收。2) 软引用(Soft):对象只具有软引用,就像可有可无的东西,描...
2019-07-22 11:30:35
141
原创 HashMap的工作原理以及解决哈希冲突的方法
**1、**HashMap的工作原理? (如何哈希 put)HashMap基于hashing原理,通过put()和get()方法储存和获取对象。当将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,...
2019-07-21 13:37:39
569
原创 Arraylist和Linkedlist的异同点?附加Vector类
Arraylist和Linkedlist的异同点?相同点:1)他们都是线程不安全的,只在单线程下适合使用. arrayList在多线程环境下可以考虑使用.Collections.synchronizedList(list)函数返回一个线程安全的ArrayList类.也可以使用concurrent并发包下的CopyOnWriteArrayList类.2.)LinkedList和ArrayLis...
2019-07-21 13:21:45
116
原创 集合类的基本接口(Collection,Set,List,Map)及其介绍
1、对象序列化要实现的接口是(c)a)Cloneable b)Runnable c)Serializable d)Comparator2、集合框架中,要实现堆集合的元素进行自定义排序,要实现哪个接口(d)a)Cloneable b)Runnable c)Serializable d)Comparator3、在JAVA中,集合类最基本的接口有哪些,位于集合框架顶层的接口...
2019-07-21 13:05:50
1179
原创 集合知识总结1("==",equals和hashcode的作用区别、迭代器的作用、HashMap和HashTable 、WeakHashMap、ConcurrentHashMap)
集合知识总结1("==",equals和hashcode的作用区别、迭代器的作用、HashMap和HashTable、WeakHashMap、ConcurrentHashMap)1、‘’,equals和hashcode的作用区别1)关系操作符“”和“!=”适用于所有的基本数据类型、所有的对象基本数据类型:byte,short,char,int,long,float,double,boolea...
2019-07-21 12:27:23
128
原创 java基础总结(接上篇)
1.组合和继承有什么区别1)继承是隐式的获得父类的对象,被包含类和父类对应,是is-a的关系;组合可以显式的获得被包含类(继承中称为父类)的对象,组合外部类和子类对应。2)继承关系在编译期决定;组合关系在运行期决定。3)继承是父类与子类之间一种紧耦合关系;组合是在组合类和被包含类之间的一种松耦合关系。4)选择组合关系,在组合类中包含了外部类的对象,组合类可以调用外部类必须的方法;使用继承类...
2019-07-17 16:16:00
74
原创 Java基础、类和对象面试题总结
Java基础、类和对象面试题总结:**1.问:**byte a = 127;a+=5;System.out.println(a); 请问输出结果是什么?答:-124,byte取值范围是-128—127,当a+=1时就已经超过了byte的临界值,此时输出的为-128;a+=2时,输出-127,以此类推a+=5输出-1242.问:不同类型的变量在相互赋值时,什么情况下需要进行强制类型转换...
2019-07-16 14:35:41
258
原创 Java集合框架的基础接口
Java集合框架的基础接口1)Collection接口Collection是最基本的集合接口,位于集合框架库的顶层,一个Collection代表一组Object,即Collection的元素(Elements)。所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Coll...
2019-01-17 23:03:18
706
原创 排序总结
排序总结一、 冒泡排序1、思想介绍冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。冒泡排序流程至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2...
2019-01-10 22:40:40
183
原创 java循环报数游戏,有n个人,每一个人编号从1开始,依次编号到n。从1到3报数,报3的退出游戏,得出最后获胜人的编号
1、import java.util.Arrays;import java.util.Scanner;//有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数public class NumberMove {public static void main(String[] args) {int[] arr = {5,6,8,1,14,2,16,7,3};//定义一个...
2019-01-02 15:46:21
604
原创 Java多态总结
Java多态总结1、介绍在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。派生类对象可以表示多个类型的能力,称为对象的多态性。2、多态条件多态可以分为动多态和静多态动多态条件:1)继承(父类——子类,基类——派生类)2)方法重写(父子关系,作用域不同、方法名相同、参数列表相同)3)父类引用引用派生类对象(向上造型)静多态条件:1)方法重载(作用域相同、方法...
2019-01-02 15:28:03
269
原创 Java泛型总结
Java泛型总结1、概念泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。2、泛型优点Java语言中引入泛型的好处是安全简单。可以将运行时错误提前到编译时错误。泛型的主要目的之一就是用来指定容器要持有什么类型的的对象,而且由编译器来保证类型的正确性。在没有...
2019-01-01 22:17:42
202
原创 继承 接口 抽象
总结:继承:定义很多部分具有相同属性和行为的类时,为了避免大量的代码重复书写,为了允许使用现有的类的功能,并在无须改写原来的类的情况下,便引入了继承的概念。我们把允许重用现有类称为父类(或基类),由父类派生出来的类称为子类(派生类)。java类的继承主要由 extends 关键字来完成。继承后,子类将获得父类的成员属性跟成员方法。(class 类名 extends 父类名 { }),如果没有...
2018-11-15 20:21:53
130
原创 JAVA 访问权限修饰词理解
JAVA 访问权限修饰词理解 Java语言中有4种访问修饰符从最大权限到最小权限依次为:public、protected、包访问权限(没有关键词or package)和private,他们在使用时是置于类中每个成员的定义之前,无论它是一个域还是一个方法。每个访问权限修饰词仅控制它所修饰的特定定义的访问权。Public:接口访问权限使用关键字public,就意味着public之后紧跟着的成...
2018-11-02 13:36:28
216
原创 JAVA语言中Arrays类的方法使用
JAVA语言中Araays类的方法使用Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。该类中包含了一 些方法可用来直接操作数组,比如可直接实现数组的排序、搜索等。该类的常用方法如下:1、数组中的元素排序:sort()默认由小到大排序(升序),不只对于数值型的可以排序,对于字符串等也都可以进行排序例如:int []arr = {4,3,2,6,5};Arra...
2018-10-23 16:59:08
381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人