Java
myrhythm_
这个作者很懒,什么都没留下…
展开
-
堆排序
堆排序算法堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序。堆是具有以下性质的二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。一般升序采用大顶堆,降序采用小顶堆。堆排序的基本思想:将待排序的序列构造成一个大顶堆此时,整个序列的最大值就是堆顶的根节点将其与末尾元素进行交换,此时末尾就是最大值然后将剩余的n-1个元素重新构造成一个大顶堆,这样会得到n个元素的次小值。如此反复执行,便可以得到一个有序序列原创 2020-09-06 20:34:32 · 164 阅读 · 0 评论 -
基数排序
基数排序算法基数排序,是通过键值的各个位的值,将要排序的元素分配至某些”桶“中,达到排序的作用。基数排序是稳定性的排序,基数排序是效率高的稳定性排序。基数排序思想:将所有待比较的数值统一为同样的长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。public static void radixSort(int[] arr){ // 得到数组中最大的数的位数 int max = arr[0]; // 先假原创 2020-09-06 20:33:06 · 160 阅读 · 0 评论 -
归并排序
归并排序算法归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法是将问题分为一些小的问题然后递归求解,而治的阶段则是将分的阶段得到的各答案”修补“在一起,即分而治之)。public static void mergeSort(int[] arr, int left, int right, int[] temp){ if(left < right){ int mid = (left + right) / 2; merge(arr, lef原创 2020-09-06 20:31:56 · 162 阅读 · 0 评论 -
快速排序
快速排序算法快速排序思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。public static void quickSort(int[] arr, int left, int right){ int l = left; // 左下标 int r = right; // 右下标 // 中轴值 int pivot =原创 2020-09-06 20:30:44 · 108 阅读 · 0 评论 -
希尔排序
希尔排序算法简单的插入排序存在的问题:当待插入的数时较小的数时,后移的次数明显增多,对效率有影响。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。希尔排序思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰好被分成一组,算法便终止。对有序序列进行插入时使用交换法:public static void shellSort(int[] arr){ int原创 2020-09-06 20:29:20 · 176 阅读 · 0 评论 -
插入排序
插入排序算法插入排序是对欲排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的。插入排序的思想:把n个待排序的元素看成一个有序表和一个无序表,开始的时候有序表只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次和有序表中的元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。public static void insertSort(int[] arr){ int insertVal = 0; int insert原创 2020-09-06 20:27:52 · 97 阅读 · 0 评论 -
选择排序
选择排序算法选择排序时从待排序的序列中,按指定的规则选出某一元素,再按规定交换位置后达到排序的目的。选择排序算法思想:第一次从arr[0] – arr[n-1]中选择出最小值,与arr[0]交换;第二次从arr[1] – arr[n-1]中选取最小值,与arr[1]交换;第三次从arr[2] – arr[n-1]中选取最小值,与arr[2]交换;… ;第i次从arr[i] – arr[n-1]中选取最小值,与arr[i]交换;… ;第n-1次从arr[n-2] – arr[n-1]中选取最小值,与arr原创 2020-08-21 22:52:01 · 120 阅读 · 0 评论 -
冒泡排序
冒泡排序算法冒泡排序的基本思想:通过对待排序列从前往后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部。public static void bubbleSort(int[] arr){ int temp = 0; // 临时变量 for(int i = 0; i < arr.length - 1; i++){ for(j = 0; j < arr.length - 1 - i; j++){原创 2020-08-21 22:49:28 · 96 阅读 · 0 评论 -
IDEA Error during artifact deployment. See server log for details.
问题:Artifact ssmbuild:war exploded: Error during artifact deployment. See server log for details.遇到这样的问题,可能就是依赖没有添加。解决办法:原创 2020-03-04 22:05:11 · 713 阅读 · 2 评论 -
SSM整合
环境SSM整合的环境要求:IDEAMySQL 5.7.19Tomcat 9Maven 3.6数据库环境创建一个存放书记数据的数据库和表:CREATE DATABASE `ssmbuild`;USE `ssmbuild`;DROP TABLE IF EXISTS `books`;CREATE TABLE `books` ( `bookID` INT(10) NO...原创 2020-03-04 21:22:55 · 176 阅读 · 0 评论 -
Spring整合MyBatis及事务
Spring整合MyBatis步骤,简单来说就是三步:导入相关的jar包编写配置文件进行测试下面详细说明。先测试mybatis是否成功:1、创建一个maven项目。2、导入jar包 <dependency> <groupId>org.projectlombok</groupId> <ar...原创 2020-03-04 21:18:54 · 209 阅读 · 0 评论 -
Spring之AOP
代理模式SpringAOP的底层是代理模式。代理模式可以分为:静态代理动态代理静态代理静态代理的角色一般分为以下几个:抽象角色:一般使用接口或者抽象类来解决真实角色:被代理的角色代理角色:代理真实角色,代理真实角色后,一般还会做一些附属的操作客户:访问代理对象的人代理模式的好处:可以使真实角色的操作更加纯粹(不用去关注一些公共的业务)公共业务交给代理角色(实现了...原创 2020-03-04 21:15:49 · 134 阅读 · 0 评论 -
Spring入门及IOC
Spring简介Spring 意为 春天,指的是给软件行业带来春天。在2002 年,首次推出了Spring框架的雏形interface21框架。Spring框架以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。Spring 是个Java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台...原创 2020-02-24 16:19:01 · 239 阅读 · 0 评论 -
MyBatis-日志、分页、缓存
日志如果一个数据库的操作出现了异常,这时候我们需要排错,日志就是最好的助手。之前使用的是输出语句或者debug。现在使用的是日志工厂。在MyBatis中具体使用哪一个日志实现,在设置中进行设定即可。在设定的时候注意区分大小写。STDOUT_LOGGINGSTDOUT_LOGGING标准日志输出。在MyBatis核心配置文件中,配置日志。<settings> <...原创 2020-02-24 16:11:48 · 200 阅读 · 0 评论 -
MyBatis-一对多、多对一
一对多和多对一,是一个相对的概念。以老师和学生为例,最常见的情况就是:一个老师教授很多学生。站在学生的角度,是很多学生被一个老师教,即很多学生关联一个老师(多对一);站在老师的角度,是一个老师教授很多学生,即一个老师有多个学生(一对多)。在MyBatis中,处理多对一的问题使用 association标签(关联);处理一对多的问题使用 collection标签(集合)。多对一按照查询嵌套...原创 2020-02-24 16:08:54 · 274 阅读 · 0 评论 -
MyBatis-动态SQL
MyBatis 最强大的特性之一是它的动态SQL功能。动态SQL:是根据不同的条件生成不同的SQL语句。动态的SQL标签主要有:if、choose(when,otherwise)、trim(where,set)以及foreach等。搭建环境:创建数据库:CREATE TABLE `blog` ( `id` varchar(50) NOT NULL COMMENT '博客id', ...原创 2020-02-24 16:07:27 · 207 阅读 · 0 评论 -
MyBatis-CRUD
CRUDselectselect:选择,查询语句。select标签中,有几个常用的属性:id:对应的namespace中的方法名resultType:sql语句执行的返回值parameterType:参数类型select标签案例1、编写接口User getUserById(int id);2、编写对应接口的mapper.xml文件中的sql语句<select id...原创 2020-02-24 16:05:17 · 210 阅读 · 0 评论 -
MyBatis入门
MyBatis简介MyBatis 是一个基于Java的持久层框架。它本来是apache的一个开源项目iBatis,可以说iBatis是MyBatis的前身,2010年这个项目 由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。MyBatis目前最新的版本是MyBatis 3.5.4 ,发布时间...原创 2020-02-19 22:59:29 · 298 阅读 · 0 评论 -
JavaWeb学习之入门
JavaWeb概述JavaWeb可以分为两个单词来理解:Java和Web。Web:即网页的意思。Web分类Web可以分为静态web和动态web。静态web静态的网页,提供给所有人看的数据始终不会发生变化!如html,css动态web动态的网页,与静态网页相反,提供给所有人看的数据始终会发生变化!所有人在不同的时间、不同的地点看到的数据是不同的。如淘宝、京东等。现在几乎...原创 2020-02-11 20:04:32 · 1813 阅读 · 0 评论 -
浅谈Java中的反射
反射机制概述静态语言和动态语言:动态语言,是一类运行时可以改变其结构的语言:例如新的函数、对象甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。主要动态语言:Object-C、C#、JavaScript、PHP、Python等。静态语言,是与动态语言相对的,运行时结构不可变的就是静态语言。如 Java、C、C++。Ja...原创 2019-12-12 12:13:37 · 361 阅读 · 0 评论 -
浅谈Java中的注解
注解概述注解即Annotation是JDK5.0开始引入的新技术。作用:注解不是程序本身,但是可以对程序作出解释。这一点的功能类似于注释(comment)。注解可以被其他程序读取,如编译器。格式: 注解 是以 “@注释名” 的形式在程序中存在的,还可以添加一些参数。例如:@SuppressWarnings(value=“unchecked”)。使用范围:注解可以附加在packa...原创 2019-12-11 18:20:52 · 148 阅读 · 0 评论 -
网络编程
概述网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。网络编程最主要的目的就是进行数据的交换、通信。网络通信的要素进行网络通信的时候,我们需要知道通信双方的主机的地址,即需要知道IP以及端口号。同时,在进行网络通信的时候,通信...原创 2019-12-05 17:37:52 · 124 阅读 · 0 评论 -
GUI编程之Swing
Swing是AWT的升级版。要使用Swing技术进行GUI编程的话,就要用到javax.swing包,该包下有很多类和接口,提供一组“轻量级”组件。JFramepublic class JFrame extends Frameimplements WindowConstants, Accessible, RootPaneContainerJFrame是java.awt.Frame 的扩...原创 2019-12-05 15:57:11 · 324 阅读 · 0 评论 -
GUI编程之AWT
GUI,全称为 Graphical User Interface,意为 用户图形界面,是指采用图形方式显示的计算机操作用户界面。GUI编程的核心技术是AWT以及Swing。可以说Swing是AWT的升级版本。那么就先来了解一下AWT。AWT中包含了很多的类和接口,用于进行GUI编程。GUI编程中有很多元素:窗口、按钮、文本框等。在使用AWT编程中,我们主要使用到的包是java.awt包,在此...原创 2019-12-05 11:52:16 · 222 阅读 · 0 评论 -
浅谈Java中的IO流
在进行设备、文件之间的数据传输的时候,如 文件的上传和下载 ,我们可以使用IO流来进行处理。在对文件和目录进行操作时,我们需要将其包装称为Java程序可以处理的形式,此时,就需要用到File类了。File类public class File extends Object implements Serializable, Comparable<File>文件和目录路径名的抽...原创 2019-11-20 22:17:52 · 176 阅读 · 0 评论 -
浅谈Java中的异常
异常就是Java程序在运行过程中出现的错误。当出现的问题很严重时,就称其为错误,即Error,我们对其不予处理,因为这种问题一般是很严重的我们无法处理的问题。当出现的问题不是很严重时,就称其为异常,即Exception。异常又分为了编译时异常和运行时异常。对于编译时异常(非RuntimeException),我们是一定要处理的,否则程序无法运行;对于运行时异常(RuntimeException...原创 2019-11-13 19:49:21 · 153 阅读 · 0 评论 -
浅谈Java中的Map
Map概述将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。Map接口和Collection接口有何不同:Map是双列的,Collection是单列的Map的键唯一,Collection的子体系Set是唯一的Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效EntryMap中还有一个嵌套接口Entry成员方...原创 2019-11-13 19:48:45 · 475 阅读 · 0 评论 -
浅谈Java中的Set集合
Java中的集合Collection是集合的顶层父接口,Set为其的子接口之一,而它也是我们经常食用到的集合。下面就来谈谈Set集合。Set集合概述Set集合中的元素特点是:元素不允许重复,即元素唯一。Set集合的成员方法HashSet集合HashSet是Set的一个实现子类,即此类实现Set接口,它由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭...原创 2019-11-13 19:46:24 · 978 阅读 · 0 评论 -
浅谈Java中的泛型
泛型的由来:通过Object转型问题引入。早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题,由于存在着隐患,所以Java提供了泛型来解决这个安全问题。泛型概述:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,即把类型当作参数一样的传递。泛型的格式为: <数据类型>这里的数据类型只能是引用数据类型使用...原创 2019-11-07 11:32:52 · 159 阅读 · 0 评论 -
浅谈Java中的集合
集合概述面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,Java就提供了集合类。数组和集合的区别:长度区别:数组的长度是固定的;集合的长度是可变的存储数据类型的区别:数组可以存储基本数据类型,也可以存储引用数据类型数据;集合只能存储引用数据类型内容区别:数组只能存储同种数据类型的元素;集合可以存储不同类型的元素Collection集合的成员方法Coll...原创 2019-11-07 11:32:02 · 153 阅读 · 0 评论 -
Java中与日期有关的类
DateDate类概述类Date表示特定的书剑,精确到毫秒。构造方法类Date重载了构造方法且有空参构造。成员方法Date类中的成员方法,大部分已经过时了。由Calendar类中的方法替代。下面就谈谈没有过时的成员方法。Date和long的转换Date到long的转换:调用Date类的getTime()方法long到Date的转换可以使用Date类的构造方...原创 2019-11-07 11:27:55 · 290 阅读 · 0 评论 -
浅谈Java中的正则表达式
正则表达式的概述正则表达式,简单来说就是正确规则的表达式,而这个规则是由java给我们定的。具体解释就是 正则表达式是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串(一种规则),有着自己特殊的应用。在我们需要对qq号码、电子邮箱、车牌号、身份证号码等进行验证时,可使用if else这种非正则表达式实现,但是这样子会比较繁琐。用正则表达式实现的话可以几行语句就搞定。正则表...原创 2019-11-07 11:26:49 · 158 阅读 · 0 评论 -
Java中的Math类
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。成员变量表示自然对数的底数表示圆周率成员方法去绝对值对该数向上取整对该数向下取整求两个数的最大值求两个数的最小值获取a的b次幂获取随机数 返回的是带正号的double类型的值,该值大于等于0.0且小于等于1.0获取该数四舍五入之后的结果获取该数的正平方根由于Math...原创 2019-11-07 11:24:08 · 296 阅读 · 0 评论 -
Java中基本类型的包装类
基本类型包装类概述为什么会有基本类型包装类?为了对基本数据类型进行更多的操作,更方便的操作,java就针对每一种基本数据类型提供了对应的类类型。常用的操作之一:用于基本数据类型与字符串之间的转换。基本类型和包装类的对应:基本类型包装类byteByteshortShortintIntegercharCharacterlongLong...原创 2019-10-30 19:56:45 · 166 阅读 · 0 评论 -
Java中数组的二分查找
二分查找也称折半查找(Binary Search),它充分利用了元素间的次序关系,采用分治策略进行查找,它是一种效率较高的查找方法。但是二分查找有一个前提就是数组必须有序。二分查找的思想首先假设数组元素呈升序排列,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如果x<a[n/2],则我们只要在数组a的左半部继续搜索x;如果x&...原创 2019-10-30 19:26:39 · 735 阅读 · 0 评论 -
Java中的Arrays类
Arrays类概述Arrays类是针对数组进行操作的工具类,该类提供了排序,查找等功能。常用的对数组进行操作的功能有转换成字符串,排序,二分查找,比较,复制等方法。toString()方法该方法返回指定数组内容的字符串表示形式。字符串表示形式由数组的元素列表组成,括在方括号("[]")中。相邻元素用字符 ", "(逗号加空格)分隔。这些元素通过 String.valueOf(int) 转换...原创 2019-10-30 18:51:44 · 232 阅读 · 0 评论 -
数组排序
有关数组的排序有冒泡排序、插入排序、选择排序、快速排序、希尔排序、堆排序等。冒泡排序冒泡排序思想:将数组中的元素两两进行比较,第一轮比较后,最大的元素放在数组的最大索引处。冒泡排序原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。...原创 2019-10-30 18:27:17 · 183 阅读 · 0 评论 -
Java中的StringBuffer类
StringBuffer类概述当我们对字符串进行拼接操作的时候,每次拼接,都会创建一个新的String对象,这样的话既耗时又浪费空间。而StringBuffer可以解决这个问题。StringBuffer类是线程安全的可变字符序列,是一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。String...原创 2019-10-30 15:12:17 · 321 阅读 · 0 评论 -
Java中的String类
String类概述String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现即Java程序中的所有字符串字面值都是String类的对象。字符串是常量,它们的值在创建之后不能更改(若对字符串进行拼接("+")等操作时会创建新的对象)。因为 String 对象是不可变的,所以可以共享。String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索...原创 2019-10-30 14:22:19 · 268 阅读 · 0 评论 -
Java中的Scanner类
Scanner类,简单来讲就是用来获取用户的键盘输入(JDK5以后)。Scanner类概述Scanner类继承了Object类实现了Iterator接口。是一个公共的final类,所以是不能够被继承的。具体解释Scanner类:Scanner类是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配...原创 2019-10-30 10:59:19 · 316 阅读 · 0 评论