自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

you_never_alone的博客

一个萌新的萌作

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

原创 排序算法——堆排序

最近对排序算法仔细研究之后,发现对于堆排的理解不够深刻,所以研究一段时候后,特来总结一下。堆排原理堆排序见名知意就是在堆中就行排序,利用堆的特性来排序,所以我们就先要知道,堆是什么?堆最直观的理解是完全二叉树(这里要区别和满二叉树的区别),这里要区别于平衡二叉树,堆只要求子节点小于或大于父节点(这里大小根据需求是大根堆还是小根堆决定),对左右节点大小没有要求(堆的特点)。现在我们对堆有...

2019-08-29 12:03:02 197

原创 排序算法之-快速排序(递归和非递归)

哭唧唧

2019-08-27 10:56:21 895

原创 编程--两数之和

问题是:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。解法一:可以暴力破解,两个for循环遍历,第一个for循环用来控制第一个数,第二个循环来寻找第二个数,这就不多做介绍。这个方法很容易理解,但是时间复杂度是O(n^2)空间复杂度O(1),...

2019-07-01 12:41:45 1160

原创 Mybatis中撞见的小错误

记录一下今天用mybatis调用方法时,发生了一个错误Error instantiating class MyBatisss.bean.user with invalid types () or values (). Cause: java.lang.NoSuchMethodException: MyBatisss.bean.user.<init>(),代码一切正常,但无论注解,还是通...

2019-06-20 20:38:49 140

原创 线程中简单的方法

start()和run()Start()方法:使线程开始执行,java虚拟机中调用该线程的run()方法。run()方法:如果该线程是使用独立的Runnable()运行对象构造的,则执行Runnable对象的run方法;否则什么都不执行,值得一提的是,一般我们继承的Thread类已经实现了Runnable接口。 运行的结果 main...运行...Thread-0......

2018-09-21 18:10:11 126

原创 synchronized与volatile的联系与区别

synchronized先来了解synchronized,首先我们知道互斥同步是一种常见的高并发保障手段。同步是指多个线程并发的访问数据时,保证共享数据在同一时刻只能被一个线程访问,而互斥是同步的实现手段之一。而被synchronized修饰的代码或代码块,在同一时刻只能被一个线程访问。在java中同步锁是依赖对象存在的。不同线程对于同步锁是互斥的(例如 一个线程拿到对象的同步锁,那么...

2018-09-19 18:02:52 194

原创 线程状态及其转换

线程基本状态转换 创建状态也叫新建(new):线程被创建后就进入了新建状态,Thread thraed = new Thread();就绪状态(Runnable):线程被创建后,调用start()方法,从而来启动该线程。运行(Running):线程获得cpu的执行权限。阻塞状态(Blocked):阻塞状态是运行的线程因为某种原因退出了cpu的使用权,暂停运行。阻塞的线程必须转入...

2018-09-19 16:49:38 172

原创 线程的三种创建方式

概念要了解线程,就要先知道进程的概念。进程:进程是程序的一次执行过程,是在系统中能独立运行并作为资源分配的基本单位,是由一组机器指令,数据和堆栈等组成的,是一个能独立运行的活动实体。这里注意的是程序和进程的区别:1,进程是一个动态概念,程序是一个静态概念。2,进程具有并发性,程序没有。3,进程是资源分配和处理机调度的独立单位,其并发性受系统的制约。4,一个程序,多次执行...

2018-09-19 13:24:44 181

原创 婚姻匹配

题目:建立一个模型,来模拟推导社会男女择偶过程。 为了模型简化,一个人的特性指标有三个,这里假设为财富、样貌、品格,每个指标均可取值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 23:39:50 2164

原创 java集合--PriorityQueue

PriorityQueue:1,成员属性public class PriorityQueue&lt;E&gt; extends AbstractQueue&lt;E&gt; implements java.io.Serializable { private static final long serialVersionUID = -7720805057305804111...

2018-07-22 23:51:59 172

原创 java集合--HashSet

HashSet:1.基本概念 它继承AbstractSet,实现了Set接口,Cloneable,java.io.Serializable HashSet是一个没有重复元素的集合 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用null public class HashSet&lt;E&gt; extends AbstractSet&...

2018-07-22 23:48:01 96

原创 java集合--Has和Map和HashTable的区别

HashTable:先来了解了解HashTable,和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。此外,...

2018-07-22 23:44:05 283

原创 java集合--HashMap

1.概念基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。另外,HashMap是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而Hashtable是线程安全的。public cl...

2018-07-22 23:03:41 113

原创 java集合--LinkedList

LinkedList 1.概念 LinkedList: 实现一个链表。由这个类定义的链表也可以像栈或队列一样被使用。  定义类: public class LinkedList&lt;E&gt; extends AbstractSequentialList&lt;E&gt; implements List&lt;E&gt;, Deque&lt;E&gt;, Cl...

2018-07-22 22:34:33 168

原创 java集合--ArrayList

ArrayList底层实现:ArrayList底层用数组来实现,与正常的数组相比,它能动态扩容。ArrayList继承了AbstractList,实现了List,RandomAccess,Cloneable,java.io.Serializable等接口public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt; ...

2018-07-22 22:15:21 120

原创 java集合框架开篇

 这就是我们Java中重要的集合模块。可以看到主要是由Colletion,Map和Iterator接口组成。Itreator主要是由ListIterator接口组成。Iterator主要是用来遍历集合元素的,我们称为迭代器,图中看到Collection类依赖Itreator,是因为Collection类中都实现了Iterator函数,并且返回一个Iterator对象。Collect...

2018-07-22 11:37:13 134

原创 泛型的简单介绍以应用

1,泛型的定义泛型也成为“参数化类型”,我们可以理解为在定义的时候由具体的类型参数化,类似与函数的变量参数,调用时传入具体的参数来调用。泛型的本质是为了参数化类型,也就是在不创建新的类型情况下,通过泛型指定不同的类型的形参具体控制限制的类型。2,泛型的引出在学习栈的时候我们常用的是int类型定义的栈,只能存放整数类型,但实际中我们需要将各种类型的数据放入栈中,所以我们想到了通用栈class Obj...

2018-06-01 16:05:20 234

原创 java中的类加载器

先了解一下类中的加载器加载的时候从底向上查询,在从上往下尝试加载。类加载器的加载机制,首先类加载器接收到类后不会直接加载,而会先把它委托给自己的父类加载器完成,每一个加载器都是这样,所以现象就是从底向上的查询,所以最终都会传送到顶层的启动类加载器,除非父类无法加载时,反馈给子类,子类才会尝试加载。如有错误,请多多指教。...

2018-05-27 17:33:27 142

原创 java中的反射

java中每一个class都有一个class对象,而当我们编写一个类,编写完成后,再生产的class文件中,就会产生一个class对象。class对象包含这class中的基本信息。简单的表示就是对于class类有几点是要注意的:1.class类不能人为生成,必须由系统产生。2,每个类只能有一个class对象。获取class类的方法:1.通过对象名getClass();class Student1{...

2018-05-27 17:01:24 136

原创 java中的String,StringBuilder,和StringBuffer的联系与区别

首先我们看这么一个程序public static void main(String[]args){ String str1 = "hello"; String str2 = str1+"word"; System.out.println(str2);}String就是简单的将str1与word相加赋给了str2,我们汇编了解一下可以看到在内部String类型new出来的是StringBu...

2018-05-27 16:08:52 400

原创 接口小例题

模拟银行存取款1,创建基接口BankAccount,包含存款方法playIn(), 取款方法withdraw(),查询余额方法getBalance()。2,创建接口ITransferBankAccount(继承基接口BankAccount)包含转账方法transferTo().类中包含 私有数据成员:名字name和余额balance, 取款方法:withdraw()查询余额getBanlan...

2018-05-25 15:59:03 292

原创 java中的接口

接口在java中是种抽象类型,主要是对行为进行抽象,用interface声明,一般用类来继承接口,进而继承实现接口中的抽象方法。interface A{ public static final int age = 10; public abstract void fun1();//不能有具体的实现}interface B{ int b =100; void fun2();}两个接口,...

2018-05-25 15:48:44 129

原创 java的抽象类和密封类

抽象类就是被abstract修饰的类,而抽象类可以拥有自己的抽象方法abstract class Animal{//抽象类 abstract public void cry();//抽象方法 不做具体实现 只能用public 或者 protected修饰 //不加修饰默认public public void fun1(){//抽象类中...

2018-05-25 14:29:27 1285

原创 面向对象的特征

面向对象的特征:继承 封装 多态继承:代码的复用1.派生类继承了基类的除了 基类的构造函数的其他数据成员class Base{ public int ma; public Base(int a){ this.ma = a; } public void show(){ System.out.println("Is show"); }}class Base1 extends Ba...

2018-05-23 12:30:54 134

原创 java基数排序的思想

基数排序是通过数字的特征不断放入对应的“桶”中,最终实现有序。举例说明:有十个桶,然后有这些数字,要将他们排序:首先根据个位放入与桶数相同的桶中然后从第一桶中依次取出相应的数字(从桶底取出):然后根据十位继续装入桶中:再依次从桶底取出:在按百位装入相应的桶中:最后按顺序取出:等到按最高位排完序后,该序列有序:...

2018-05-20 17:22:12 200

原创 java中的归并排序

java中的归并排序简单的说就是由小到大的排序(大问题小规模化),然后处理。举例说明:12   ,1   ,4   ,0   ,45   ,21   ,6我们对于这个数组表排序,首先我们两个为一组,然后组内有序我们一般在代码实现时会有定义start1 和end1 ,start2和end2来标识,我们来进行第一次归并:一小块排序:然后将s1,e1,s2,e2向下一块赋予,让s1=e2+1,e1 =s...

2018-05-20 16:08:08 798

原创 java堆排序

先让我们看以下序列:然我们把这个先序列堆存储:然后在进行一次排序,排序的规则是,从最底层开始,左右子树调出最大的值给父节点,一直到0号位置。最低层排序后,如上然后全部排序后:这就是一次排序,最大值到了0号,位置,然后0号和最后一个交换位置,确定9号位置的值,再进行剩下几次排序,确定整个序列。代码如下:public static void adjust(int array[],int start,i...

2018-05-18 16:02:43 101

原创 java中快速排序的优化

接上节讲的快速排序,我们来了解一下几种它的优化。1.随机取基准    上节我们采取的是以开头为基准,然后进行一次快速排序,但是如果原数组相对有序的话,那么就会出现每次找基准,原数组顺序不变,时间复杂度相当的高,为了处理这种情况我们采用随机选取基准,就是 public static void new_Quick(int[] array,int low,int high){ swa...

2018-05-18 15:47:14 1389

原创 java中的快速排序

我们先来举列子了解一下快速排序:如图,我们以队伍第一个元素为基准,然后我们从后面找比基准大的值后,将他的值放到基准的位置(注意 原位置还是他的值)一次后:第二次:第三次:第四次:最后一次:当两边的指标重合时,将基准放的那个位置,然后一次快速排序结束,结束后的结果是,基准左侧,全是比他小的,基准右侧全是比他大的。而递归就是一次快速排序后,两边递归子序列快排,函数实现:public static in...

2018-05-16 16:43:07 16121

原创 java中的shell排序

shell排序是基于插入排序而产生的一种排序方式,插入排序我们知道他的时间复杂度是基于原来的数组序列有无序而决定的,如果原数组有序,他的时间复杂度是O(n),但如果无序,他的时间复杂度是O(n^2),为了优化,于是我们的shell排序就是来优化这一情况。shell排序就是,列如15个元素,我们可以以n个为一组分组,然后n个元素有序后再合并,如n = 3相同颜色的为一组,然后进行排序,结果为然后 n...

2018-05-16 15:47:39 254

原创 java模式串匹配之KMP

上节我们讲了BF算法,我们很明显的发现虽然他能实现模式匹配,但明显他的速度太慢,每次匹配失败后i和j都要回到0号位置,继续匹配,时间复杂度是O(mn),所以KMP算法就来解决这个问题。KMP的核心是匹配失败后i不变,而j要回到他的“k”值位置,继续比较。于是问题来了,“k”值是什么,为什么要回到“k”值?以这个为例,我们规定 0号位置的“k”值是-1,1号位置的“k”值是0,从2号位置看,如图此时...

2018-05-13 17:01:16 455

原创 java字符串模式匹配之BF算法

字符串模式匹配问题在很多方面我们都会见到,简单的说就是在父串中,找到与子串相等的字符串,一般我们会返回匹配成功后的位置起点。BF算法BF算法我们一般称为“朴素”算法,或者男朋友算法,他的实现很简单,就是简单的一对一匹配对比,如 以下有两个字符串我们用字母 i 来充当遍历父串的变量,j 充当遍历子串的变量,例如一般是这样遍历1,当父串 i 号位置与子串 j 号位置对应的字符相等的时候    i++;...

2018-05-13 15:31:34 905 1

原创 两个队列实现一个栈

这里我们采用作图来说明例如,有两个队,我们用先用p1来装元素,要入栈,就继续入p1中,如果要出队就要把p1中的元素除了最后一个全部转到p2中然后p1.pop,于是有有人会问如果还要输出怎么办,这里有两步1,首先判断p1是否为空,如果为空,就把p2中的除最后一个转到p1中,然后p2.pop2.如果p1不为空,那么就把如第一步吧p1中的元素除最后一个元素入队到p2中,然后p1.pop例如,就先把p1中...

2018-05-11 10:54:46 126

原创 java中的优先队列

在生活中,我们常会遇到这样的问题,排队过程中女士优先,游戏中会员比普通用户的优先级也要高,这就有了我们的优先队列。优先队列的简单说就是在普通队列中加入标志,比如我们用数字 0  1 2 3来表示,数字小的对应节点的优先级就高,我们就将他放在合适的位置。如图新节点的标志等级是3,我们要把他插入到1后面,进而使得整个队列优先合适初始化class prioLink{ class Entry{ in...

2018-05-11 10:39:28 2939

原创 java中的链式队列

所谓链式队列就是用节点存储队列,对于队列的特点我们就不过多介绍,不过值得注意的是,链队不需要预先分配内存,也不会出现队满。如果我们以链头为队头的话:出队的时间复杂度为O(1),但入队的复杂度却是O(n)同样如果以链头为队尾的话:出队的时间复杂度为O(n),但入队的时间复杂度是O(1)为了是出队与入队的时间复杂度都为O(1)我们分别在链头链尾做两个标志节点,然后采用尾插的方法初始化队列class l...

2018-05-11 10:25:18 536

原创 链式栈和循环队列

上次我们讲到的栈采用的是用数组的格式,而链式栈是采用和链表一样的节点存储,和栈的存储方式一致,不过不需要预先分配内存,也没有栈满这种情况class listStack{ class Entry{ int data; Entry next; public Entry(){//无参构造 this.data = -1; this.next = null; } publi...

2018-05-08 22:43:25 204

原创 java中的栈

先来说说栈的结构特点:先进后出,顾名思义就是先存进去的元素,读取的时候最后一个读出。基于这种特点我们可以选择用数组来实现它,下面让我们来实现一下class stack{ int top; int []elem; public stack(){ this(10); } public stack (int size){ top=0; elem = new int [size...

2018-05-05 18:48:50 863 1

原创 java中的双向链表

为了使得链表可以找到他的前驱,我们基于单链表设定了双向链表,在next的基础上加了prio前驱用来指向节点前驱,让我们来了解一下。初始化class Entry{ int data; Entry next; Entry prio; public Entry(){ this.data =-1; this.next =null; this.prio = null;...

2018-05-05 18:30:19 275 1

原创 java中的循环单链表

先认识一下循环单链表,循环单链表就是在单链表的基础上让他首尾相接,实现逻辑上的循环。和单链表一样,先创建一下class TestClink{          //循环单链表 class Entry{ int data; Entry next; public Entry(){ data = -1; next = null; } public Entry(in...

2018-05-05 17:36:15 1688

原创 java中的顺序表及其简单的应用

我们先简单介绍一下顺序表,顺序表就是在单链表的基础上对它自身已经使用的空间加以标注,如我顺序表的长度是10,已经使用的长度是5,那么我们这里就会有一个变量来存储,这就是顺序表。接下来我们说一下顺序表的特点:1,逻辑上和物理上都相邻    顺序表采用数组存储,因此存储单元不仅会在逻辑上相邻在物理上也是相邻的。2,预先分配内存    因为采用数组存储,所以数组的长度要在初始化是分配好3,便于随机存取 ...

2018-05-03 22:46:54 436

空空如也

空空如也

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

TA关注的人

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