自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux 常用命令详细讲解

处理目录的的常用命令;ls:列出目录cd:切换目录cd..:返回上级目录cd / :回到根目录pwd:显示当前目录mkdir:创建一个新的目录rmdir:删除一个目录cp:复制文件或目录rm:移除目录或文件mv:移动目录或文件,修改目录或文件的名称ls目录中还有以下两种用法-a:显示全部文件,包括隐藏文件(以.开头的文件)-l:长数据串输出,包含文件的属性与权限等pwd显示当前所在的目录如果是链接则显示真实的地址用-p参数mkdir 创建目录-m 可以设置访问权限 例如:mkdir -m 777 test

2022-06-11 17:55:04 519 2

原创 Spring 自动装配详细讲解

一、什么是自动装配1、自动装配是使用spring满足bean依赖的一种方法2、spring会在应用上下文中为某个bean寻找其依赖的bean。二、自动装配的方法有哪些1、在xml中显式配置;2、在java中显式配置;3、隐式的bean发现机制和自动装配。三、学习环境的搭建1、创建三个实体类Dog,Cat,Peoplepackage com.lisi.pojo;public class Dog { public void shout(){

2022-05-22 18:02:23 5989

原创 Spring 基础--第一个spring项目及IOC

一、第一个spring项目1、导入Jar包<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version>

2022-05-04 19:00:11 431

原创 Mybatis的缓存机制及其使用

一、什么是缓存(Cache),缓存有什么作用(1)存在内存中的临时数据。(2)将用户经常查询的数据放在缓存(内存)中,用户查询数据时就不需要在从磁盘上(关系型数据库数据文件)查询,直接从缓存中查询;从而提高了查询效率,解决了高并发系统的性能问题。(3)什么样的数据能使用缓存:经常查询且不经常改变的数据。作用:减少了和数据库的交互次数,减少了系统的开销,提高了系统效率;二、Mybatis的缓存(1) MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可

2022-04-27 18:20:42 760

原创 Mybatis 动态 Sql 语句的使用

一、环境的准备(1)搭建数据库create table blog1( id varchar(50) not null , title varchar(100) not null , author varchar(30) not null , create_time datetime not null , views int(30) not null)insert into mybatis.blog1 values ('1','我的第四次学习','鸭鸭'

2022-04-23 17:00:37 2457

原创 Mybatis 的部分优化及注意事项

一、加载数据库时可以编写外部文件通过导入的方式获取(1)外部资源driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?userSSL=true&useUncode=true&characterEncoding=UTF-8username=rootpassword=123456//读取外部资源<properties resource="db.properties"/>&lt

2022-04-18 15:28:14 3113

原创 创建第一个Mybatis项目(详细图解)

一、创建一个Maven项目删除其中的src文件夹二、Maven中在创建一个Maven项目该项目就为mybatis项目三、配置mybatis所需要的架包<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>

2022-04-17 09:34:58 2913 2

原创 JAVA 面试必备(持续更新中)

一、Java的特点和优点1、Java是一门面向对象的静态语言。2、Java结合了C++的优点,同时摒弃了让人难以理解的多继承和指针等概念。3、Java提供了丰富的类库,为开发人员提供了极大的便利,大大的缩短了开发时间和成本。4、Java的健壮性,Java的类型强制转换,异常处理机制,垃圾回收机制等大大的提高了Java语言的健壮性;尤其是垃圾回收机制,使得程序员从内存处理中解脱出来。5、支持Wed应用的开发,例如servlet、jsp可以用来开发Wed应用程序。6、跨平台性,Java程

2022-04-12 16:53:21 548

原创 注解与反射知识详解

一、什么是注解(1) Annotation 是从JDK5.0开始引入的新技术。(2)Annotation 的作用:不是程序本身,可以对程序作出解释这一点和注释( comment 没什么区别)可以被其他程序(比如:编译器等)读取(3)Annotation 的格式:注解是以“@注釋名”在代码中存在的还可以添加一些参数值,例如:@ SuppressWarnings ( value =" unchecked ");(4) Annotation 在哪里使用?...

2022-03-28 19:22:51 838

原创 响应式布局 与 Bootstrap

一、开发原理使用媒体查询针对不同宽度的设备进行布局和样式设置,从而实现适配不同设备的目的。

2022-03-18 15:46:54 849

原创 响应式布局基础知识详解

一、什么是响应式布局响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局。在移动互联网高度发达的今天,我们在桌面浏览器上开发的网页已经无法满足在移动设备上查看的需求。传统的开发方式是PC端开发一套页面,手机端再开发一套页面。但是这样做非常麻烦,随着不同的终端越来越多,你需要开发多个不同版本的页面。而使用响应式布局只要开发一套就够了。二、基础知识1、rem 单位rem(rootem)是一个相对单位,类似于em,em是父元素字体大小。不同的是rem的基准是相对于h...

2022-03-15 22:07:53 8875

原创 三大范式总结

一、三大范式各自的定义第一范式(1NF)原子性:保证每一列不可再分(列不可拆分)第二范式(2NF)前提:满足第一范式每张表只描述一件事情 (表不可拆分)第三范式(3NF)前提:满足第一范式和第二范式第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。二、范式使用注意的原则主要考虑 规范性 和 性能的问题;关联查询的表不得超过三张表(1)考虑商业化的需求和目标,(成本,用户体验!)数据库的性能更加重要(2)在规范性能的问题的时候,需要适当的考虑一下规范性!故.

2022-03-12 23:54:46 4371

原创 MySql 查询方法总结

一、示例数据dept表emp表二、查询方法(1)內连查询a.隐式内连:select xxx from xxx where 条件b.显示内连:select xxx from xxx(inner)jion xxx on 条件(2)外连查询为什么要采用外联查找:因为有的数据不完全,如果直接查询的话可能会造成数据丢失,如emp表中的ID=17的数据,如果我们的以外键作为条件查询时,因为他没有部门这一数据就会使查不到该数据,所以...

2022-03-11 16:22:50 3410

原创 Filter 过滤器使用

一、什么是Filter过滤器Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器Filter 过滤器它是 JavaEE 的规范。也就是接口Filter 过滤器它的作用是:拦截请求,过滤响应。拦截请求常见的应用场景有:1.权限检查 2.日记操作 3.事务管理工作原理:二、环境搭建(1)实现Filter接口,注意选择Java.servlet(2)实现过滤方法doFilt.

2022-03-10 22:51:46 4110

原创 Jsp 的基本原理及其操作

一、什么是JSPJava Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术!最大的特点:写SP就像在写HTML与HTML的区别(1)HTML只给用户提供静态的数据(2)ISP页面中可以嵌入AVA代码,为用户提供动态数据;二、JSP原理浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!JSP最终也会被转换成为一个Java类!JSP本质上就是一个Servlet流程:客户端--服务器--jsp页面--将页面转为Java类文件

2022-03-10 19:37:13 590

原创 Response 实现验证码 及 下载文件

一、实现验证码package com.lifeng.servlet;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.awt.

2022-03-09 22:23:21 226

原创 Servlet 基础知识及操作

一、什么是servletServlet(Server Applet)是JavaServlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请...

2022-03-09 20:01:16 241

原创 MAVEN 的下载与配置(详细图解)

一、maven的下载二、解压压缩包与变量设置(1)创建本地仓库,创建文件夹如箭头所指(2)配置maven-repo为本地仓库点击conf文件夹,点击setting.xml,在文档如图位置补充本地仓库的地址即maven-repo文件夹的地址(3)配置阿里镜像,方便以后快速的下载架包点击conf文件夹,点击setting.xml,在文档如图位置补充如下代码,也可以在网络上下载 <mirror> <id&...

2022-03-08 23:03:09 339

原创 堆排序 (详细图解)

一、什么是堆排序 (1)堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。(3)堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: (2)堆排序的平均时间复杂度为Ο(nlogn)。二、实现步骤三、代码实现...

2022-02-17 20:27:00 3688

原创 桶排序 (详细图解)

一、桶排序桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后依次把各个桶中的记录列出来记得到有序序列。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,他不受到O(n log n)下限的影响。二、桶排序原理核心思想:就是将大问题化小(分治思想)(...

2022-02-16 20:36:13 34384 11

原创 基数排序(详细图解)

一、什么是基数排序(1)通过键值得各个位的值,将要排序的元素分配至一些桶中,达到排序的作用(2)基数排序法是属于稳定性的排序,基数排序法是效率高的稳定排序法(3)基数排序是桶排序的扩展二、实现原理将所有待比较数值(自然数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。三、实现步骤(1)确定数组中的最大元素有几位(MAX)(确定执行的轮数)(2)创建0~9个桶(桶的底层是队列),

2022-02-14 20:39:51 34039 4

原创 树、二叉树的基础知识(详细图解)

一、树(1) 树( Tree )是 n ( n >0)个结点的有限集。 n =0时称为空树。在任意一棵非空树中:有且仅有一个特定的称为根( Root )的结点;(2)当 n >1时,其余结点可分为 m ( m >0)个互不相交的有限集 T 、T2、…………、 Tm ,其中毎一个集合本身又是一棵树,并且称为根的子树( SubTree ),如下图所示。二、树的结点(1)结点拥有的子树数称为结点的度(Degree)。(2)度为0的结点称为叶节点(Leaf)或终端结点;

2022-02-13 21:57:39 4266

原创 计数排序(图解)

一、什么是计数排序计数排序适用于有明确范围的数组,比如给定一个数组,且知道所有值得范围是[n,m]。这个时候可以使用一个m-n+1长度的数组,待排序的数组就可以散在这个数组上,数组的值就是当前值的个数,再经过一次遍历展开,得到的数组就有序了。二、实现步骤(1)获取数组中元素最大值、最小值;从而确定计数的数组长度;(2)遍历原素组,利用计数数组统计每一个元素的出现次数;(3)遍历计数数组,重新存入原数组,输出原数组即为排序后的数组;三、代码实现public class C.

2022-02-12 21:20:10 956

原创 插值查找(两种方法)

一、什么是插值查找(1)插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。(2)二分查找中mid值是left和right所指序列下标的和的1/2即 mid = (left+right)/ 2。(3)而插值查找的mid 值是通过公式计算得来由,由公式可以明显看出mid的值并非像二分那样为左右索引的中间位置。(4)插值查找公式;3、int mid = low + (high - low) * (key - arr[low]) / (arr[high] - arr[lo

2022-02-11 22:12:43 4593 3

原创 快速排序(详细图解 单路、双路、三路)

一、快速排序选取待排序数组的任意一个数据作为基准值,遍历数组中的元素。将小于基准值的元素放在基准值的左边,大于基准值的放在基准值的右边,将基准值放在中间,此时基准值到达了最终位置。然后对基准值左边的子数组和右边的子数组采用同样的方式进行处理,直到区间缩小为1,就说明数组有序。二、单路排序例题:给定一长度为10的数组{6,1,2,7,9,3,4,5,10,8}解题步骤;(1)快速排序的思想为将数组首元素6移动至序列的某一位置M,让M左侧的元素均<=6,M的右侧元素均&...

2022-02-10 21:02:58 1994

原创 LeetCode删除排序链表中的重复元素

一、题目要求:给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。二、解题思路(1)、设定双指针left,right;开始left指向head节点,right指向head.next;(2)、如果rigth指向的节点与left指向的节点值相同,则让left的下一跳指向rigth的下一个节点;(3)、如果rigth指向的节点与left指向的节点值不相同,则让left 指向left下一个节点,right指向left的下一个节点;三、

2022-01-27 19:47:39 561

原创 LeetCode 删除链表的倒数第 N 个结点

一、题目要求给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。如下图所示:二、解题思路(1)找到需要删除的节点的上一个节点(2)将需要删除的节点的上一个节点的下一跳指向需要删除的节点的下一跳,将需要删除的节点置空;(3)返回头结点;三、具体实现如图所示:四、代码实现public class Solution19 { public ListNode removeNthFromEnd(ListNode head, int n) { ...

2022-01-26 22:49:35 334

原创 数独(详细图解)

一、什么是数独如下图所示:9x9的格子中填充着9个3x3的9宫格;数字特点:(1)9x9中的每一行每一列包含1-9;(2)内部的3x3中包含1-9;二、解题步骤(1)采用分治算法,将9x9的整体问题化解为一个一个格子的问题;只要每一个格子符合题目要求;则整体的9x9就符合。(2)任一格子(没有数字)所填数字必须需要符合的要求;所在9x9的大格子中的横,竖方向都没有该元素,并且所在的3x3的九宫格也没有该元素(如下图所示蓝色表示所填元素);箭...

2022-01-25 17:20:17 14463

原创 棋盘覆盖 (详细图解)

一、棋盘覆盖二、解题步骤1、在给定的8x8的方格中如何实现题目中要求的效果,因需用L型的骨牌覆盖,因其仅占三个格子无法与8x8形成联系,因此我们可以利用分治算法将其划分为小单元,与L型产生联系进行处理。2、如何使其他格子与特殊格子产生联系;(1)因我们采用分治算法,依次将大格子进行划分;划分为四个小格子,特殊格子仅位于其中一个,那我们必须给剩余三个格子找出属于他们自己的特殊格子(用箭头标注);(2)取划分后的四个格子其中一个进一步划分,与(1)的原理一致;(3)取划分后的

2022-01-19 15:09:55 11738 1

原创 二分查找的两种方法(详细图解)

一、什么是二分查找假设给定的数组中的元素是一个有序的状态,比如是单调不递减或者是单调不递增的状态,对于这种情况可以使用二分查找来完成。即二分查找需要满足两个条件:(1)数组存储(2)元素有序,单调性二、时间复杂度比如:总共有n个元素,每次查找的区间大小就是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。由于n/2^k取整后>=1,即令n/2^k=1,可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn)

2022-01-19 14:07:12 5841

原创 单向链表的基本操作

一、什么是单向链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。a、表元素域elem用来存放具体的数据。b、链接域next用来存放下一个节点的位置。c、变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。二、链表基本操作的实现原理;(1)、添加元素;直接添加即在链表的末尾添加,又因底层是用LinkedList实现...

2022-01-17 17:08:38 453

原创 String、StringBuffer 和StringBulider

一、String字符串常量;字符串广泛应用于Java的编程中,在Java中字符串属于对象,Java通过String类来创建和操作字符串;String的值是不可改变的,所以每一次对String 的操作都会产生一个新的对象,这样就导致会产生多个无用的对象,极大的浪费了内存空间。通过图例我们明显就可以String进行操作的过程中产生的大量浪费。为了实现"love"和"Java"的拼接,总共在堆内存中创建了三个对象,对内存造成了极大的浪费为实现对Str...

2022-01-15 18:00:45 183

原创 循环队列的操作原理

一、循环队列的定义为了克服顺序队列中假溢出,通常将一维数组Queue[0]到Queue[MAXSIZE - 1]看成是一个首尾相连接的圆环,即Queue[0]与Queue[MAXSIZE - 1]相连接在一起,将这样形式的队列成为循环队列。二、基本结构由两个指针(此处的指针并非是真正的指针而是角标)构成分别是front,rear;rear指的是末尾元素的下一个;三、对应的方法实现(1)入队操作; a、首先判断队是否满状态;...

2022-01-14 13:54:15 1126

原创 队列的基本操作

一、定义一个queue的接口其中包含队列用到的方法;package p1.接口;public interface Queue<E> extends Iterable<E> { public void offer(E element); //入队 public E poll(); //出队 public E peek(); //查看队首元素 public boolean isEmpty(); public void

2022-01-13 17:57:31 209

原创 数据结构 十进制和十六进制进制间的相互转换

一、十进制转十六进制例题:输入十进制数:654321输出十六进制数:9FBF1解题步骤:十进制数对16取余,因为最终结果是从下往上依次书写,说以我们可以利用栈的特性,先进的后出;将余数存入栈中依次弹出,再将弹出的数进行拼接输出即可;代码如下:package p2.线性结构;//十进制 转 十六进制public class DecToHex { public static void main(String[] args) { int...

2022-01-13 13:44:53 2392

原创 后缀表达式求值

例题:给定中缀表达式;(10+20/2*3)/2+8 ,求其对应的后缀表达式的计算;解题步骤:(1)将中缀表达式转为后缀表达式; 转换过程查看中缀表达式转后缀表达式_s逐梦少年的博客-CSDN博客(2)获取对应的后缀表达式 10 20 2 / 3 * + 2 / 8 +(3)因为要满足计算则必须有num2 运算符 num1;因此为达到这种效果;我们可以创建一个栈用于存储数字;这样就可以控制每次出一个数字并且满足先进的数字后出;(4)为了存储数字和运算符,首先要...

2022-01-12 17:50:27 740

原创 中缀表达式转后缀表达式

一、什么是中缀表达式,后缀表达式二、中缀表达式转后缀表达式例题:中缀表达式:(10+20/2*3)/2+8转换为对应的后缀为后缀表达式:10 20 2 / 3 * + 2 / 8 +解题步骤:(1)观察两表达式;后缀明显没有“()”这两个符号,其次与中缀相比数字的顺组没有变化,运算符的顺序发生改变。(2)找对应的数据结构知识,有顺序且对存储的数据类型,没有要求因此可以利用ArrayList进行数据的存储...

2022-01-12 17:18:49 5698

原创 中缀表达式求值 Java

什么是中缀表达式中缀表达式的计算逻辑;例:(10+20/2*3)/2+8我们要按照四则运算的逻辑进行计算;(1)先计算括号内的计算单元,而内部的计算单元必须要按照四则运算的优先级来进行即先乘除后加减;(2)运算完括号内部之后再从左向右依次计算,同时保证先乘除后加减的运算法则;算法逻辑;因为我们要满足运算的优先级,所以我们可以利用栈 先进后出 的特点控制运算单元的优先级所以我们可以声明两个栈一个栈负责运算的存储,另一个栈负责数字的存储。此时通过符号栈的入...

2022-01-11 17:43:29 1232

原创 手写ArrayStack底层 实现代码

一、接口的定义package p1.接口;public interface Stack<E> extends Iterable<E> { //返回栈中元素的个数 public int size(); //查看栈对否为空 public boolean isEmpty(); //入栈 进栈一个元素 在线性表的表尾添加一个元素 public void push(E element); //出栈 弹出一个元素 在线性表的表尾删

2022-01-10 17:20:58 325

原创 手写ArrayList底层实现代码

一、List 的接口定义:package p1.接口;import java.util.Comparator; //线性表接口定义 public interface List<E> extends Iterable<E>{ //默认在表尾添加一个元素 public void add(E element); //在指定角标处添加元素 public void add(int index ,E element); //删除

2022-01-08 21:47:27 215

空空如也

空空如也

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

TA关注的人

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