自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

巫山♔

一个程序猿的学习历程

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

原创 SpringBoot中静态资源放哪里

使用SpringBoot开发web时,静态资源放在那里?静态资源的存放路径,通过源码中WebMvcAutoConfiguration类中的addResourceHandlers()方法指定:"/webjars/**"目录下SpringBoot项目中放入的 js、css等静态资源,不像maven中放在webapp下,SpringBoot是把这些文件打成jar包引入,以 jar 包的形式提供静态资源。从webjar官网中获取依赖,引入到pom文件即可此时已经引入了jquery的jar包,在访问时直接从

2020-10-04 22:41:18 1366

原创 SpringBooot对日志的支持

市面上常见的日志框架非常多如JCL、JUL、jboos-logging、logback、log4j、log4j2、slf4jSpringBoot 默认选用的是 logback、slf4j对于以上两种日志,SpringBoot已经配置好了,可以直接使用,package com.mak.helloworld;import org.slf4j.Logger; //这里使用的slf4j@SpringBootTestclass HelloworldApplicationTests { // 参数是当

2020-10-04 14:55:47 263

原创 SpringBoot 配置文件位置

SpringBoot 默认读取application.properties和application.yml文件,properties 和 yml 中的配置相互补充,如果冲突,则 properties 优先级高。SpringBoot默认读取的配置文件可以存在以下四个目录中:hellowoeld - src - main - java - resource - static - templates - config - ③ - ④ - test

2020-10-04 14:09:51 1572 1

原创 SpringBoot 多环境切换

一般我们在开发阶段选择开发环境,测试选择测试环境,实施选择实施环境。1、利用 properties 文件修改环境默认SpringBoot会读取application.properties文件中的环境application.properties 默认环境server.port=8882# 选择要使用的开发环境spring.profiles.active=devapplication-dev.properties 开发环境server.port=8883application-test

2020-10-04 11:59:54 363

原创 @ImportResource和占位符表达式

@ImportResource注解在SpringBoot中不需要我们自己手动编写像spring配置之文件知类的文件,是因为SpringBoot有自动配置,不需要,如果非要用,可以使用SpringBoot中的 @ImportResource注解,该注解添加在SpringBoot主程序上@SpringBootApplication@ImportResource(locations = {"classpath:spring.xml"})public class HelloworldApplicatio

2020-10-03 19:42:44 237

原创 SpringBoot中@ConfigurationProperties和@Value的区别

1、在SpringBoot中,可以使用@ConfigurationProperties注解结合配置文件给实体赋值,也可以使用@Value注解直接赋值@Component//@ConfigurationProperties(prefix = "student")public class Student { @Value("ww") private String name; @Value("23") private int age; ... // 不管注入的

2020-10-03 19:07:18 289

原创 SpringBoot 配置文件给实体注入值

SpringBoot 默认的全局配置文件有两个 application.properties 和application.ymlproperties用法# 例如修改端口号 直接赋值server.port=8888yaml用法# 例如修改端口号server: port: 8888YML中赋值是以键值对的形式,且利用缩进表示层级关系,同一级缩进必须一致大小写敏感,支持松散写法,且冒号后面必须有一个空格通过配置文件给实体类注入属性// 实体类@Component // 把实体类放入到

2020-10-03 18:33:05 467

原创 PageHelper的使用方法

第一步导包使用maven <!--分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> <

2020-09-24 11:21:03 136

原创 在SSM项目利用SpringMVC实现文件或图像上传

利用 Spring MVC 实现文件上传功能,离不开对 MultipartResolver 的设置。MultipartResolver 这个类,你可以将其视为 Spring MVC 实现文件上传功能时的工具类,这个类也只会在文件上传中发挥作用。在配置了具体实现类之后,Spring MVC 中的 DispatcherServlet 在处理请求时会调用 MultipartResolver 中的方法判断此请求是不是文件上传请求。如果是,DispatcherServlet 将调用 MultipartResolver

2020-09-09 16:44:27 209

原创 Form表单实现提交PUT、DELETE请求(HiddenHttpMethodFilter | FormContentFilter)

在使用SPringMVC时,使用REST风格代码,让前端表单可以提交请求PUT、DELETE…浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter。在控制器规定不同的请求方式实现不同的业务GET 实现查询需求POST 实现新增需求PUT 实现更新需求DELETE 实

2020-09-09 15:24:32 2042

原创 使用Mybatis-generator XML配置形式和GUI界面形式反向生成 pojo实体类和mapper映射文件

使用Mybatis-generator自动构建工具,可以方便我们快速创建简单的实体类和映射文件导入四个 jar 包generatorConfig.xml 配置文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.o

2020-08-11 10:11:45 150

原创 Log4j 使用方法和输出格式控制--log4j的PatternLayout参数含义

Log4j由 Apache 推出的开源免费日志处理的类库可以控制日志信息输送的目的地是控制台、文件…等可以控制每一条日志的输出格式使用时导入 log4j 的 jar 包,并在 src 中 配置 log4j.properties 。(该文件名固定)Logger组件分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。FATAL 致命错误,不能解决ERROR 为严重错误 主要是程序的错误WARN 为警告INFO 为普通信息DEBUG 为程序的调试信息分别用来指定这

2020-06-12 15:47:05 2518

原创 排序介绍、冒泡排序和快速排序的实现

排序将一个数据元素的任意序列,重新排列成一个按关键字有序的序列内部排序和外部排序整个排序过程在内存储器中进行,称为内部排序由于数据量较大,内存储器无法容纳全部数据,需要借助外部存储设备来完成稳定排序和不稳定排序相同关键字元素的前后关系在排序中发生变化,则排序方法是不稳定的反之稳定无论稳定还是不稳定都能把数据排好序比较排序和非比较排序大部分排序都是通过比较来排序的有些不需要 计数排序、基数排序四类插入排序:将无序子序列中的一个或者几个记录插入到有序序列中,从

2020-05-27 21:31:18 143

原创 直接选择排序、堆排序和归并排序的实现

直接选择排序直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0] ~ R[n-1]中选取最小值,与R[0]交换,第二次从R[1] ~ R[n-1]中选取最小值,与R[1]交换,…,第i次从R[i-1] ~ R[n-1]中选取最小值,与R[i-1]交换,…,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列 // 选择排序(从小到大) pu

2020-05-27 21:31:01 257

原创 直接插入排序、希尔排序和二分排序的实现

直接插入排序将一个记录插入到已排好序的序列中,从而得到一个新的有序序列直接插入排序对于最坏情况(严格递减的数组),需要比较和移位的次数为n(n-1)/2;对于最好的情况(严格递增的数组),需要比较的次数是n-1,需要移位的次数是0。当然,对于最好和最坏的研究其实没有太大的意义直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1),同时也是稳定排序。void insert_sort(int a[], int n){ int i, j, k; for (i = 1; i &

2020-05-27 21:30:42 236

原创 哈希表结构特点、哈希表存取数据过程及解决冲突的方法

哈希表的结构和特点hashtable 散列表查询非常快结构有很多种 容易理解的顺序表+链表主结构是顺序表,每个顺序表的节点再单独引出一个链表哈希表添加数据计算哈希码(调用hashCode(),结果是一个int值,整数的哈希码取自身即可)计算在哈希表中的存储位置y=k(x)=x%11 x:哈希码 k(x)函数 y:在哈希表中存储的位置存入一次添加成功多次添加成功(出现了冲突,调用equals)和对应链表的元素进行比较,比较到最后,结果都是false,创建新节点,存储数据,并加入链

2020-05-27 21:30:15 709

原创 二叉查找树、平衡二叉树、红黑树、B树、B+树、B*树

二叉查找/搜索/排序树 BST (binary search/sort tree)或者是一颗空树或者具有以下性质若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值若它的右子树上所有的节点的值均大于它的根节点的值它的左、右子树也分别是二叉排序树平衡二叉树(Self-balancing binary search tree)自平衡二叉树 又称AVL树(有别于AVL算法)它是一颗空树或它的左右两个子树的高度差(平衡因子)的绝对值不超过1并且左右两个子树都是一颗平衡二叉树同时,

2020-05-24 14:07:16 255

原创 Oracle数据库使用常见问题及解决方法

Oracle XE学习中使用的Oracle XExe提供两个账户system:管理员账户sys: 超级管理员账户常规版提供三个账户:systemsysscott:普通用户默认密码是 tiger创建账户创建用户前需要登录到管理员账户下,就是Connect as 选择 SYSDBA-- 创建用户create user 用户名 identified by 密码-- 分配登录和访问资源权限grant connect, resourse to 用户名-- 取消

2020-05-22 16:22:07 439

原创 线性表查找(顺序查找和折半查找以及代码实现)

顺序查找存储结构可以使顺序表,也可以是链表逐个比较查询,找到返回数据或者索引,没找到返回null在各个节点查找概率相同的情况下,默认查询长度为一半长度,时间复杂度T(n) = O(n)public static void main(String[] args) { int [] scoreArr = {89, 45, 78, 45, 100, 98 ,86, 100, 65}; int score = 100; int index = search(scoreArr, score);

2020-05-22 14:41:33 3176

原创 网状结构(图)图的存储(邻接矩阵、邻接表)、图的遍历(深度DFS、广度BFS)、图的最短路径

图多对多关系是一种网状数据结构,图是由非空的顶点集合和一个描述顶点之间关系的集合组成其定义Graph = (V, E)V={x | x ∈某个数据对象}E = {<u, v> | P(u ,v) ∧ (u, v∈V )}V是具有相同特性的数据元素的集合,V中的数据元素通常称为顶点(Vertex)E是两个顶点之间关系的集合。P(u, v) 表示u和v之间有特定的关联属性若<u,v>∈E,则<u,v>表示从顶点u的一条弧,并称u为弧尾或起始点,称

2020-05-21 14:06:59 2804

原创 树的介绍以及二叉树的实现

树树状图是一种数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合每个元素称为结点(node)有一个特定的结点被称为根结点或树根(root)空集合也是树,称为空树。空树中没有结点结点的度:一个结点含有的子结点的个数称为该结点的度叶结点或终端结点:度为0的结点称为叶结点非终端结点或分支结点:度不为0的结点双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点兄弟结点:具有相同父结点的结点互

2020-05-20 13:44:19 135

原创 栈和队列的介绍

栈stack又称堆栈,是运算受限的线性表其限制只允许在表的一端进行插入和删除操作表中进行插入、删除操作的一端称为栈顶 top,栈顶保存的元素称为栈顶元素相对的表的另一端称为栈底 bottom当栈中没有数据元素时称为空栈向栈中插入数据元素为 进栈或入栈从栈中删除数据元素称为出栈或退栈由于栈的插入和删除操作仅在栈顶进行,后进栈的元素必定先出栈又把堆栈称为后进先出表 LIFO队列queue和堆栈一样,也是一种运行受限的线性表其限制是仅允许

2020-05-20 13:43:26 212

原创 线性表中顺序表的实现和单链表的实现

线性表线性表是n个类型相同的数据元素的有限序列。线性表存储结构顺序表链表顺序表的实现// 基类接口public interface List { // 返回线性表的大小,即数据元素的个数。 public int size(); // 返回线性表中序号为 i 的数据元素 public Object get(int i); // 如果线性表为空返回 true,否则返回 false。 public boolean isEmpty(); // 判断线性表是否包含数据元

2020-05-19 21:40:27 227

原创 算法介绍及时间复杂度和空间复杂度

算法是指令的集合,是为解决特定问题而规定的一系列操作。他明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出。五个特征:输入:一个算法应以待解决的问题的信息作为输入输出:输出对应指令集处理后得到的信息。可行性:算法是可行的,即算法阿忠的每一条指令都是可以实现的无穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止确定性:算法对于特定的合法输入,其对应的输出是唯一的算法就是计算机解题的过程评价算法的优劣复杂度(时间复杂度,空间复杂度)算法的复杂性体现

2020-05-19 21:32:24 172

原创 数据结构基本概念和数据结构类型

有哪些数据结构线性表、栈、队列、串、数组、广义表、树、二叉树、图对数据结构实现添加、删除、更新、查询、排序等数据数据是描述客观事物的数值,字符以及能输入机器且能被处理的各种符号集合。数据含义广泛,除了通常的数值数据,字符,字符串是数据以外,声音,图像等一切可以输入计算机并能被处理的都是数据。数据项数据项具有原子性,是不可分割的最小数据单元。如描述学生相关信息的姓名、性别、学号等都是数据项,如红框的数据元素数据元素是数据的基本单元,是数据集合的个体,通常有若干个数据项组成,在计算.

2020-05-19 11:40:51 767

原创 线程Thread 线程创建及其常用方法

线程什么是进程?通过任务管理器我们就可以看到进程的存在进程就是正在运行中的程序,是系统进行资源分配和调用的独立单位,每个进程都有它自己的内存空间和系统资源。多进程有什么意义?单进程计算机只能做一件事情,而我们现在的计算机都可一边听歌一边玩游戏,所以我们常见的操作系统都是多线程操作系统。Windows、Mac、linux等,能在同一个时间段内执行多个任务。单核计算机,游戏进程和音...

2020-05-18 20:30:08 74

原创 Javaweb中关于"/"的用法

关于"/"只要是需要通过浏览器发送请求的地方(比如HTML代码、sendRedirect方法),"/“一般代表虚拟主机根目录,即相当于端口号之后的”/"相当于http://localhost:8080/ 中最后的"/"服务器程序内部跳转,"/"一般代表本web应用根目录(比如映射、getRequestDispatcher()方法)相当于http://localhost:8080/...

2020-04-01 19:54:36 364

原创 JSONP和同源策略

JSONPJSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。同源策略同源策略,它是由Netscape提出的一个著名的安全策略。当一个浏览器的两个tab页中分别打开来百度和谷歌的页面,当浏览器的百度tab页执行一个脚本的时候,会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。...

2020-04-01 15:38:07 150

原创 JavaWeb_JDBC概述及连接数据库

JDBC概述概述JDBC:java database connection,使用java语言连接数据库是java内部提供一套操作数据库的接口(标准),实现对象数据库的统一访问功能一个java应用程序和数据库交互的桥梁one write,run anywhere的思想。组成DriverManager类:驱动管理器,用户注册驱动,获取连接对象Connection接口:数据库...

2019-11-15 17:02:43 133

原创 JDK8新特性、接口中的方法、时间包

接口中的默认方法接口的定义:接口的作用是定义该类型的实例要具有的功能,也就是必须执行哪些工作,并且不需要关系这些工作具体进行的。接口定义的方法没有方法体的,并且接口不允许定义实例变量。如果一个类实现了这个接口那么必须重写接口的所有方法。类与接口的区别:类中可以定义成员变量,但是接口中不允许存在成员变量接口中所有方法都没有具体实现(Java8以前这种定义是正确的,但是在Java...

2019-11-11 14:04:38 84

原创 JDK8新特性、函数式接口、 Lambda表达式

什么是函数式接口所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。这种类型的接口也称为SAM接口,即Single Abstract Method interfaces。(一个抽象方法、单一抽象方法接口)需要注意的是接口的默认方法和静态方法并不影响一个接口成为函数式接口。@FunctionlInterface注解Java 8为函数式接口引入了一个新注解@Fu...

2019-11-10 11:43:12 134

原创 反射Reflection 反射获取类 获取运行时实现的接口及父类 获取构造方法 成员变量 成员方法

反射常用的一些方法getName() 获取名称getSimpleName() 获取简称getModifiers() 获取访问修饰符getParameterTypes() 获取参数列表反射获取Class类实例的三种方式:对象.getClass()类名.clsssClass.forName(“全限定名”) newInstance() 创建此 Cl...

2019-11-09 22:40:51 377

原创 注解Annotation介绍及自定义注解的使用

注解注解概述注解主要起到标识作用,是JDK5.0提出的,Java增加对元数据的支持,也就是Annotation(注解)。引用Annotation的概念来描述元数据什么是元数据元数据是用来描述数据的数据,通俗一点来说,就是描述代码间的关系,或者代码与其他资源(数据库)之间内在联系的数据。举例:struts来说,元数据指的就是struts-config.xml;对hibernate...

2019-11-09 09:50:04 306

原创 网络编程介绍以及TCP UDP通信的简单实现

网络编程网络编程的基本常识目前主流的网络通信软件有:QQ、微信、MSN、飞信、阿里旺旺…七层协议ISO(国际标准委员会组织)将数据的传递从逻辑上划分了一下七层:应用层、表示层、回话层、传输层、网络层、数据链路层、物理层。当发送消息时。需要按照上述从前向后的次序对发送的内容进行层层加包,然后发送过去当接收消息时。需要按照上述相反的次序对接收到的内容层层拆包,然后再解析出来。...

2019-11-08 10:27:20 101

原创 字节流、字符流、转换流、数据流、内存操作流、序列化流

字节流是按照字节进行操作的,每次读取一个字节字节流抽象基类:InputStream(字节输入流)/OutputStream(字节输出流)子类:FileInputStream public int read() 从此输入流中读取一个数据字节。 public int read(byte[] b) 从此输入流中将最多 b.length 个字节的数据...

2019-11-07 10:09:22 288

原创 Java文件操作

创建File对象 File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 File(String parent, String ch...

2019-11-04 15:46:12 120

原创 异常Exception 主要分类 异常的捕获与抛出 自定义异常

异常的概述 异常就是不正常的意思,Java语言中主要指程序在运行阶段产生的错误。 Throwable(可抛出的,可扔出的) java.lang.Throwable类是Java程序所有错误或异常的超类 主要有两个子类: Error: Error主要描述比较严重的错误,无法通过编程来解决的重大的错误。 Exception: Exception主要描述比较轻量级的...

2019-11-04 15:46:04 686

原创 Map集合、Collections集合工具类

Map集合 键-----映射------值Map集合存储元素的特点以键值对形式存储元素,容器框架实现类:HashMap、LinkedHashMap、TreeMap、Hashtable(1)HashMap 基于哈希表实现的,线程不安全的Map容器 特点: 1.基于哈希表实现 2.key不允许重复,值可重复 3.底层是...

2019-11-02 13:12:46 180

原创 set集合、Comparable排序接口

Set集合Set集合是用于无序存储不可重复的元素集合。Set集合的实现类: HashSet LinkedHashSet TreeSet (1)HashSet HashSet是基于哈希表的Set集合 1.需要使用hashCode算法计算元素的hash值 2.基于哈希表做实现 3.实现了Set接口 HashSet集合存储...

2019-11-02 13:12:36 415

原创 List集合 List集合实现类 集合与数组的区别 迭代器 泛型

集合用于存储一种或者多种引用数据类型,并且长度可变的容器。集合的外延有:List集合、Set集合、Queue集合List集合是用于有序存储可重复元素的集合。List接口继承了Collection接口,声明有序存储对象(可重复)功能的公共接口。List集合的实现类有:ArrayList、Vector、LinkedList集合中只能存储引用数据类型,不能存储基本数据类型L...

2019-11-01 22:30:09 170

空空如也

空空如也

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

TA关注的人

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