自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java-JDBC

1)JDBC是什么Java DataBase Connectivity(Java语言连接数据库)2)JDBC的本质是什么JDBC的本质是一套接口。(有利于降低耦合度)思考:为什么SUN制定一套JDBC接口?因为每一个数据库的底层实现原理不一样。因此每个数据库厂家都实现了JDBC接口。3)JDBC编程六步(重点)第一步:注册驱动 (作用:告诉java程序,即将要连接的是那个品牌的数据库)第二步:获取连接 (表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后一定要关闭

2021-04-07 21:54:57 158

原创 Java-注解

1)注解的作用①生成文档。Java最早提供的注解,如:@see @return等②跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring2.5开始的基于注解配置,作用:减少配置文件③在编译时进行格式检查。如:@override放在方法前,如果这个并不是覆盖超类方法,则编译时就能检查出来2)怎么自定义注解 [修饰符列表] @interface 注解类型名{ }public @interface MyAnnotation { /** * 在注解当中可以定义属性,以下这个

2021-04-05 11:50:23 126

原创 Java-反射(入门)

1)什么是反射机制及作用反射机制:可以操作字节码文件作用:可以让程序更加灵活2)反射机制相关的主要的类java.lang.Class;java.lang.reflect.Method;java.lang.reflect.Constructor;java.lang.reflect.Field;3)Java中获取Class的三种方式第一种:Class c=Class.forName("完整类名");第二种:Class c=对象.getClass();第三种:Class c=Strin

2021-04-02 00:32:36 136

原创 关于JDK自带的类加载器

1)什么是类加载器?专门负责加载类的命令/工具。 ClassLoader2)JDK中自带3个类加载器启动类加载器:rt.jar扩展类加载器:ext/*.jar应用类加载器:classpath3)Java中为了保证类加载的安全,使用了双亲委派机制  优先从启动类加载器中加载,这个称为“父”。如果“父”无法加载到,再从扩展类加载器中加载,这个称为“母”。双亲委派。如果都加载不到,才会考虑从应用类加载器中加载,直到加载到为止。注意:代码在开始执行之前,会将所需要的类全部加载到JVM的方法区

2021-04-01 21:44:09 157

原创 java-多线程

1)多线程的介绍1.1、进程和线程的区别进程是一个应用程序(一个进程是一个软件)线程是一个进程中的执行场景/执行单元一个进程可以启动多个线程1.2、进程和线程的关系进程可以比作是现实生活当中的中公司线程可以比作是公司当中的某个员工注意:  进程A和进程B的内存独立不共享  在Java语言中,线程A和线程B的堆内存和方法区内存共享。但是栈内存独立,一个线程一个栈。...

2021-03-28 13:35:20 293 1

原创 java-io流

1)IO流,什么是io?I:InputO:Output通过IO可以完成硬盘文件的读和写2)IO流的分类一:按照流的方向进行分类&esmp;以内存为参照物,  往内存中去,叫输入(Input),或者叫读(Read)  从内存中出来,叫输出(Output),或者叫写(Write)二:按照读取数据方式不同进行分类 第一种方式:有的流是按照字节的方式读取数据,一次读取一个字节byte(相当于一次读取8个二进制位)。这种流是万能的,什么类型的文件都可读取。 第二种方式:有的流是按照字符的

2021-03-24 01:13:11 208 1

原创 java中的集合

1)集合的继承结构图1.1、Collection集合结构图1.2、Map集合的继承结构图2)关于Java.until.Collection接口中常用的方法2.1、Collection c=new ArrayList(); //创建一个集合对象。(Collection是接口,抽象的,无法实例化,用多态)//(1) boolean add(Object e) 向集合中添加元素c.add("java"); //(2) int size() 获取集合中元素的个数c.siae();

2021-03-21 01:19:00 103 3

原创 java中的异常

1)Java的异常处理机制1.1、异常在Java中以类和对象的形式存在。异常的继承结构:  Object  Object下有Throwable(可抛出的)  Throwable下有两个分支:Error(不可处理,直接退出JVM)和Exception(可处理的)  Exception下有两个分支:   Exception的直接子类:编译时异常(要求在编写程序阶段必须预先对这些异常进行处理,如果不处理编译器报错)   RuntimeException:运行时异常。(在编写程序阶段可以做预先处理,

2021-03-16 21:57:28 82

原创 Java中包装类、日期类、数字类、随机数以及字符串拼接

1)八大基本数据类型对应的包装类1.八种包装数据类型属于引用数据类型,其父类为Object。2.八种数据类型:  Byte、Short、Integer、Long、Double 父类为Number  Boolean、Character 父类为Object以Integer为例3.Integer有两个构造方法Integer i=new Integer(1); //int-->IntegerInteger a=new Integer("23"); //String-->Integer

2021-03-15 23:22:20 227 2

原创 String类中的一些知识及方法

11

2021-03-13 22:24:22 210 2

原创 static及final关键字的知识点、访问权限范围

1)static关键字的知识点static修饰的方法及变量都用“类名."访问。(不需要new对象就能访问)static{ }是静态代码块,在类加载时执行,并执行一次。 { }实例语句块,在构造方法前执行,构造一次执行一次。static的也能用”引用."的方式访问,不过运行时仍然和此对象无关空指针异常充分的说明了以上的结论。(用空引用访问静态的不会出现空指针异常)2)final关键字的知识点final修饰的类无法继承final修饰的方法无法覆盖final修饰的变量只能赋一

2021-03-13 17:57:03 527 3

原创 数据库设计三范式

1)什么是设计三范式 设计表的依据。按照这个三范式设计的表不会出现数据冗杂。2)三范式分别是? 第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。 第二范式:建立在第一范式的基础上,所有非主键字段完全依赖主键,不能产生部分依赖。多对多,三张表,关系表两个外键eg:学生和老师一张学生表,一张老师表,一张学生老师关系表 第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。一对多,两张表,多的表加外键注意:在实际开发中,以满足客户的需求为主,有时候会

2021-03-13 14:31:31 60

原创 事务、索引、视图

1)事务(Transaction)1.1、什么是事务?  一个事务是一个完整的业务逻辑单元,不可再分。  eg:银行账户转账,从A账户B账户,要执行两条update语句:update t_act aet balance=balance-

2021-03-13 14:04:16 134

原创 MySQL中的约束

1)约束(Constraint)1.1、什么是约束?  在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性1.2、常见的约束有哪些?  非空约束(not null):约束的字段不能为NULL(只有列级约束)  唯一约束(unique):约束的字段不能重复,可以为NULL(有列级、表级约束)  主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)(同上)  外键约束(foreign key):。。。(简

2021-03-13 00:31:14 71

原创 sql语句创建表,及对表数据进行增删改

关于MySQL中的字段的数据类型int   整数型bigint   长整型flaot   浮点型char   定长字符串varchar   可变长字符串(最大为255个字符)date   日期类型BLOB   二进制大对象(储存图片、视频等流媒体信息)CLOB   字符大对象(储存较大文本,如:储存4G的字符串)char和varchar如何选择当某个字段中的数据长度不发生改变的时候,则采用char,例如:性别、生日等;当一个字段的数据长度不确定时,则采用varchar,例如:姓名等

2021-03-12 17:00:51 367

原创 sql查询语句入门

sql语句分类1)DQL(数据查询语言):查询语句,凡是select语句都是DQL2)DML(数据操作语言):insert delete update,对表当中的数据进行增删改3)DDL(数据定义语言):create drop alter,对表结构的增删改4)TCL(事务控制语言):commit提交事务,rollback回滚事务。(TCL中的T是Transaction)5)DCL(数据控制语言):grant授权,revoke撤销权限等一些基本的Mysql语句1)查看有那些数据库2

2021-03-12 15:38:44 357

原创 基数排序

基数排序(桶排序)1)基数排序属于“分配式排序”,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用2)基数排序法属于效率高的稳定性排序法3)基数排序是桶排序的扩展4)基数排序实现:将整数按位数切割成不同的数字,然后按每个位数分别比较基数排序图文说明将数组{53,3,542,748,14,214}使用基数排序,进行升序排序代码实现不过要注意,上述代码只适合正整数的排序,如果是负数的话,就会出现下标越界异常,但通过一些优化,即对元素的正负进行判断,如果是负数,则需要绝

2021-02-09 18:32:31 73 1

原创 归并排序

归并排序法介绍归并排序就是利用归并的思想实现的排序方法。**原理:**假设初始序列含有n个元素,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2] ([x]表示不小于x的最小整数)个长度为2或1的有序子序列;再两两归并,······,如此重复,直到得到一个长度为n的有序序列为止归并排序法示意图来看一下治阶段,将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个有序的子序列,合并为最终序列[1,2,3,4,5

2021-02-08 00:11:54 69 1

原创 快速排序

快速排序法介绍快速排序和冒泡排序一样都属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。快速排序在每一轮中挑选一个基准元素,并让其他比它大的元素移到数列的一边,比它小的元素移到数列的另一边,从而把数列拆成两部分。每一部分在下一轮又分别拆分成两部分,直到不可再分为止,以此达到整组数据变成有序序列快速排序法示意图代码实现import java.util.Arrays;public class QuickSort { /** * 分治法(双边循环法) * @pa

2021-02-07 00:05:57 66

原创 希尔排序

希尔排序法介绍希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序希尔排序法基本思想将原本有大量记录数的记录进行分组。分割成若干个子序列,此时每个子序列待排序的记录个数就比较少了,然后在这些子序列内分别进行直接插入排序,当整个序列基本都有序时,再对全体记录进行一次直接插入排序希尔排序法示意图代码实现public class ShellSort { public static void main(String[] args) { i

2021-02-05 23:55:29 64 1

原创 插入排序

插入排序法思想把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素,排序过程中每次从无序表取出第一个元素,把它的排序码(值大小)依次与有序表元素的排序码进行比较,将它插入到有序表中适当的位置,使之成为新的有序表插入排序思路图代码实现import java.util.Arrays;public class InsertSort { public static void main(String[] args){ int[] arr

2021-02-04 22:38:12 55

原创 选择排序

选择排序思想一共有n个数据。 第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]-arr[n-1]中选取最小值,与arr[1]交换,···,第i次从arr[i-1]-arr[n-1]中选取最小值,与arr[i-1]交换,···,第n-1次从arr[n-2]-arr[n-1]中选取最小值,与arr[n-2]交换,总共通过n-1次,得到一个按从小到大排列的有序序列。选择排序思路1)选择排序一共有(数组大小-1)轮排序2)每一轮排序又是一个循环3)循环规则如下:

2021-02-03 22:56:59 50 1

原创 冒泡排序算法

基本介绍通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前面移向后面,就像水底下的气泡一样逐渐向上冒优化因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag元素判断是否进行过交换。从而减少不必要的比较。演示冒泡过程的例子原始数据:3, 2, 7, 6, 8第1次循环:(最大的跑到最右边。)2, 3, 7, 6, 8 (3和2比较,2 < 3,所以2

2021-01-30 23:23:20 79 2

原创 递归--八皇后问题

八皇后问题介绍在8x8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后不能处于同一行、同一列或同一斜线上,问有多少种摆法(92种)八皇后问题思路分析1)第一个皇后先放在第一行第一列2)第二个皇后放在第二行第一列,然后判断是否可以,如果不可以,则放在第二列、第三列、依次把所有的列都放完,找到一个合适的位置3)继续放第三个皇后,重复步骤(2)······直到第八个皇后也能放在一个不冲突的位置时,便是找到了一种方法4)当得到一种正确方法时,在栈回退到上一个栈时,就会开始回溯,即:将第一个

2021-01-30 00:30:43 135

原创 中缀表达式转换为后缀表达式实现基本计算机功能

前缀、中缀、后缀表达式(逆波兰表达式)举例说明运算表达式:(3+4)*5-6前缀表达式:- * + 3 4 5 6(从右向左扫描)中缀表达式:(3+4)*5-6 (我们人常见的运算表达式)后缀表达式:3 4 + 5 * 6 -(从左向右扫描,与前缀表达式相反)中缀表达式转为后缀表达式的思路1)初始化两个栈:运算符栈s1和储存中间结果的栈s22)从左到右扫描中缀表达式3)遇到数字时,将其压入s24)遇到运算符时,比较其与s1栈顶运算符的优先级1.如果s1为空,或

2021-01-29 17:59:40 465 2

原创 Java实现单向环形链表

单向环形链表介绍单向环形链表就是在单向链表(没有头节点)的基础上,让链表的最后一个节点的next指向该链表的第一个节点。如下图所示用单向环形链表解决约瑟夫问题1)1.约瑟夫问题设编号为1,2,···n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依此类推,直到所有人出列为止,由此产生一个出队编号的序列。2.提示先构成一个有n个节点的环形链表,然后由k节点起从1开始计数,计到m时,对应的节点从链表

2021-01-28 17:26:34 303 2

原创 java实现双向链表的基本功能

单向链表的缺点1)单向链表,查找的方向只能是一个方向,而双向链表可以向前或向后查找2)单向链表不能自我删除,需要借助辅助变量,而双向链表可以自我删除双向链表的增删改、遍历的操作思路1)添加节点(默认添加到双向链表的最后)1.先找到双向链表的最后节点2.temp.next=newHero(temp为辅助节点)3.newHero.pre=temp2)删除节点1.直接找到要删除的这个节点,比如temp2.temp.pre.next=temp.next3.temp.next.pre=temp.

2021-01-23 01:04:58 165 1

原创 Java编写单向链表

链表(Linked List)介绍1)链表是以节点的方式来存储数据,是链式存储。2)每个节点包含data域及next域。next域:指向下一个节点。3)链表的各个节点不一定是连续存储的。4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定。单链表实现增删改查的思路(用水浒传英雄排行耪来说明)1)添加数据第一种方法:数据直接添加到链表的尾部;思路该链表为空链表时:1.先创建一个head头节点(不存放具体的数据),作用是表示单链表的头(head.next)。2.后面每添加一个节

2021-01-22 17:36:15 178

原创 队列

#队列1.队列介绍1)队列是一个有序列表,可以用数组或是链表实现。2)遵循先进先出原则。即:先存入列表的数据,先取出。后存入的后取出2.数组模拟循环队列思路1)队列的输出、输入时分别从前后两端来处理,因此需要两个变量front(队头)及rear(队尾)来实现输入及输出。2)front初始值=0;front指向队列的第一个元素。3)rear的初始值=0;rear指向队列的最后一个元素的后一个位置。因此队列的最大容量比数组的长度少1。4)队列满的条件为...

2021-01-21 14:25:02 69

原创 稀疏数组与二维数组的转换

#稀疏数组的应用1.基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。2.处理方法1)记录数组一共有几行几列,有多少个不同的值2)把具有不同值的元素的行列及值记录在稀疏数组中,从而减少内存损耗。3.思路二维数组转成稀疏数组1.遍历 原始的二维数组,得到有效数据的个数sum2.根据sum就可以创建 稀疏数组 sparseArr int[sum+1][3]3.将二维数组的有效数据存入到 稀疏数组稀疏数组转原始的二维数...

2021-01-20 23:50:05 107 3

空空如也

空空如也

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

TA关注的人

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