自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis报错:A query was run and no Result Maps were found for the Mapped Statement

错误sql:<select id="selectUserName"> select USER_NAME as userName from user where 1=1 and USER_ID=#{userId}</select正确sql:<select id="selectUserName" resultType="map"> select USER_NAME as userName from user wher

2022-03-22 11:26:09 530

原创 Mybatis模糊查询

方式一: <!-- 分页查询 --> <select id="page" resultType="Map"> select ID as id,NAME as name, SEX as sex from user where 1=1 and is_delete="1" <if test='sex!=null and sex!=""'>and SEX= #{sex}</if> &lt

2022-03-18 11:22:01 704

原创 IDEA启动报错Internal error. Please report to http://jb.gg/ide/critical-startup-errors

问题描述:前两天打开idea还好好的,今天打开就突然报了个Internal error的错误,网上找了一通都说是装了新版本插件,破解补丁用的旧版本所以出问题,可我好像没更新什么呀,果然一顿操作下来没能解决。最后还是参考了这篇博客,进安全模式打开idea再退出成功解决问题。解决方式:1.在电脑的安全模式里面打开idea。(打开时也是报错不用管)2.返回正常模式,再次打开,正常启动。安全模式打开方式:按住 Shift 键的同时,选择“电源”图标—“重启”。在电脑重启到“选择一个选项”屏幕后

2022-01-28 13:34:26 3877 6

原创 Scanner类的next() 和nextLine()的区别

next() 和nextLine()方法的区别:通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hashNext 与 hashNextLine 判断是否还有输入的数据Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是 空白符;比如空格,回车,tab 等等。 Scanner scanner = new Scanner(System.in); System.ou

2021-11-27 10:05:55 1024

原创 二叉树的存储方式和遍历方式

二叉树的存储方式链式存储链式存储就是使用指针,通过指针把分布在散落在各个地址的结点串联一起。链式存储的二叉树数据结构:public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) {

2021-11-25 13:48:36 446

原创 二叉树的判断

二叉树的判断二叉树判断中序遍历如果总是升序,那他肯定是二叉树,如果出现某个降序,他肯定不是二叉树/** * 递归判断是否为二叉树 * @param head * @return */ public static boolean checkBST(Node head) { int preValue = Integer.MIN_VALUE; if (head == null) { return true

2021-11-25 13:43:59 331

原创 排序算法的稳定性

15、排序算法的稳定性稳定性:就是一个数组元素在拍完序之后原来相同的元素的位置依然相对存在,比如数组有两个1,有前后区别,拍完序后在前面的1依然是在前面能用快排就用快排15.1、常见的坑15.2、快速排序稳定性的坑:经典快排 的part tation做不到稳定性;但是经典快排的parttation又是01标准,他和这奇偶问题其实是一种调整策略 ,快排做不到工具类中的排序方法Arrays.sort();如果使用的是基础类型的数据,使用的是快排,如果不是基础类型使用的是归并排序;为什

2021-11-25 13:28:44 192

原创 桶排序、基数排序

13、桶排序14、基数排序找数组中最大的元素看他是几位数,然后对其它元素在前面补0成最大元素的相同位数然后准备桶,先根据各位数字来,看数字是啥就对应几号桶,然后将桶里的元素从左到右导出来,然后根据十位数的数字来,看数值是啥就对应几个号桶,然后将桶中的元素从左到右导出来,然后再根据百位数进行,最后导出来就是排好序的数组元素。优化:先用一个count的数组放元素的个位数有几个。比如013的个位数是3,所以在3的位置标1;021的个位数是1所以在1的位置标1,011的个位数是1,所以在1的位置标1

2021-11-25 13:26:36 573

原创 认识堆和堆排序

10、堆10.1、完全二叉树10.2、大跟堆在一个完全二叉树里,每一颗子树的最大值就是头结点的值,满足这个条件就是大跟堆。10.3、小跟堆在一个完全二叉树中,每一颗子树的最小值就是他的头结点,满足这个条件就是小跟堆。怎么让一个完全二叉树变成大跟堆呢?一开始heapsize是为0的,然后5进来的时候,就放到heapsize为0的位置,然后heapsize变为1了,再进来一个数3的时候,将其放到heapsize为1的位置,然后heapsieze变为2;在进来6的时候,将其放到heapsize

2021-11-25 13:24:43 467

原创 认识快速排序

9、快速排序快排1.0:找一个轴值,大于轴值的在右边递归,小于等于轴值的时候在左边递归;空间复杂度:快排2.0:找一个轴值,大于轴值的在右边递归,小于轴值的在左边递归,等于轴值的不用动位置。快排3.0:概率package 左神算法.快速排序;public class QuickSort { public static void main(String[] args) { int[] arr2 = {3, 5, 0, 3, 4, 5, 2, 6, 9, 6};

2021-11-25 13:23:02 66

原创 认识归并排序

8、归并排序先分解,然后合并的时候是先看两边的有没有都越界,没有越界就比较p1和p2的值,哪个小就哪个先放到help中;可能会出现一个越界一个不越界的情况,所以就有两个while判断其中一个不越界的情况,就将元素添加到help新数组中;最后变量help数组中元素将其拷贝到之前的数组中完成排序。时间复杂度符合master公式;看递归了两次分解函数,而且每次递归规模都是1/2;所以a=2;b=2;然后就看常数项的,主要看 合并函数的时间复杂度了,合并的时候是遍历了整个数组,所以是O(N),所以d=1

2021-11-25 13:21:28 252

原创 认识递归行为

7、递归行为7.1、中间数的求法:如果直接(L+R)/2,如果L和R非常大的时候,可能出现溢出,这里的溢出是超过int范围的一个溢出;所以可以使用以下的两种方法求解。7.2、求数组L-R范围上求最大值package 左神算法.递归行为;public class GetMax { public static void main(String[] args) { int[] arr = {4, 12, 56, 2, 6, 8, 29}; System.o

2021-11-25 13:17:49 105

原创 认识二分法

5、二分法时间复杂度:O(logn)5.1、有序数组找某数是否存在题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。class Solution { public int search(int[] nums, int target) { int left = 0, right = nums.length; while (left &

2021-11-25 13:15:25 311

原创 认识时间复杂度和异或运算

认识时间复杂度和异或运算1、时间复杂度:取最高阶的,当一样的时候就不看时间复杂度了,直接代码运行测试看哪个更快就是时间复杂度更好时间复杂度一律按照最差时间复杂度进行计算,就跟冒泡排序和选择排序,他们的时间复杂度都是O(n^2) ;但是插入排序如果在数组原本有序的情况下进行插入排序,那么他的时间复杂度是O(n),但是最坏的情况下,就是元素刚好是倒序,那么你要排序,就要都交换一遍;所以最坏的时间复杂度是O(n^2);2、空间复杂度:如果是有限的数,那么不需要开额外的空间就是o(1);如果是数组需要开一

2021-11-25 13:12:27 1544 1

原创 设计模式--观察者模式

设计模式分为三种类型,共23种创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。创建型模式主要用于创建对象结构型模式主要用于处理类或对象的组合行为型模式主要用于描述类或对象如何交互和怎样分配职责1、基本介绍

2021-07-23 22:04:45 114

原创 设计模式--迭代器模式

设计模式分为三种类型,共23种创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。创建型模式主要用于创建对象结构型模式主要用于处理类或对象的组合行为型模式主要用于描述类或对象如何交互和怎样分配职责1、基本介绍

2021-07-23 00:20:03 257 1

原创 设计模式--策略模式

设计模式分为三种类型,共23种创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。创建型模式主要用于创建对象结构型模式主要用于处理类或对象的组合行为型模式主要用于描述类或对象如何交互和怎样分配职责1、基本介绍

2021-07-22 23:55:36 100

原创 数据结构与算法--八大排序算法(内部排序)

插入排序1、插入排序1.1、基本思想基本思想: 把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。基本思想(考虑升序排序情况):(1)将序列划分为有序区和无序区。有序区为序列第一个元素,无序区为剩下的元素。(2)每一次操作都将无序区的第一个元素r[i]与有序区里从最后一个元素开始向前比较,直到找到第一个比r

2021-07-13 23:03:32 487 1

原创 UML概述、类之间的关系、UML图

1、UML概述1.1、基本介绍UML–Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果是一种能够描述问题、描述解决方案、起到沟通作用的语言。是一种用文本、图形和符号的集合来描述现实生活中各类事物、活动、及其之间关系的语言。UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如右图:

2021-07-09 16:42:09 707

原创 JAVA并发编程:java并发机制的底层实现原理

https://www.cnblogs.com/haimishasha/p/10978848.html

2021-07-09 15:12:20 99

原创 java并发编程--内存模型

1、内存模型1.1、高速缓存程序运行过程中,将运算需要的数据从主存复制一份到CPU的高速缓存当中,那么CPU进行运算就可以直接从高速缓存中读取数据和写入数据,当运算结束之后将高速缓存中的数据刷新到主存中。例如i=i+1;执行的时候,从主存获取i的值并复制一份到高速缓存中,i+1操作结束后将高速缓存中的i的值刷新到主存中。如果多线程下执行i=i+1一开始i=0;线程1和线程2执行的时候从主存中获取到的i=0,而后,做了+1操作后,线程1和线程2中的高速缓存中的i变为了1,如果线程1结束后将结果刷新到

2021-07-09 13:55:53 113 2

原创 设计模式:七大设计原则

设计模式的目的编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好1)代码重用性(即:相同功能的代码,不用多次编写)2)可读性(即:编程规范性,便于其他程序员的阅读和理解)3)可扩展性(即:当需要增加新的功能时,非常的方便,称为可维护)4)可靠性(即:当我们增加新的功能后,对原来的功能没有影响)5)使程序呈现高内聚,低耦合的特性分析金句:设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设

2021-07-09 00:19:10 190

原创 JAVA并发编程:并发编程的认识

1、并发编程简介并发编程: 所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。并发编程的目标: 充分的利用处理器的每一个核,以达到最高的处理性能。1.1、并发编程的目的为了进一步提升计算速度,而不是再追求单独的计算单元,而是将多个计算单元整合到一起,也就是形成了多核CPU,多核CPU的背景下,催生了并发编程的趋势,通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升。并发编程的目的是为了让程序运行得更快,但是有一点我们要

2021-07-08 15:01:23 315 2

原创 java8新特性

尚硅谷视频优点:速度更快代码更少(增加了新的语法 Lambda 表达式)强大的 Stream API便于并行最大化减少空指针异常 Optional其中最为核心的为 Lambda 表达式与Stream API1、Lambda表达式1.1、为什么使用Lambda表达式Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。从匿名类到

2021-07-07 18:57:49 128 1

原创 SpringBoot集成Redis

springboot整合Redisredis学习笔记狂神视频SpringBoot 操作数据:spring-data jpa jdbc mongodb redis!SpringData也是和SpringBoot齐名的项目!说明:在SpringBoot2.x之后,原来使用的jedis 被替换为了lettucejedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool连接池!更像BIO模式lettuce:采用netty,实例可以再多个线程中进行共享,不存

2021-07-07 16:54:27 118

原创 分布式 Dubbo+Zookeeper+SpringBoot

1、分布式理论1.1、什么是分布式系统?在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”;分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。分布式系统(distributed system)是建立在网络之上的软件系统。首先需要明确的是,只有当单个节点的处理能力无法满足

2021-07-06 12:44:07 83 1

原创 异步、定时、邮件任务

狂神讲解的配套视频地址 https://www.bilibili.com/video/BV1PE411i7CV1、异步任务异步处理还是非常常用的,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线程的方式去处理这些任务。创建springboot项目,选web模块创建一个service包创建一个类AsyncService,编写方法,假装正在处理数据,使用线程设置一些延时,模拟同步等待的情况;@Servicepublic

2021-06-30 23:11:33 121

原创 SpringBoot项目yml文件没有spring小叶子标志解决方法

问题:SpringBoot项目中的配置文件properties和yml没有小叶子标志,不能够自动提示代码解决方法:如果有小叶子,那么打开项目结构,这里是有spring的,如果没有,可以点击上面的+,选择spring,如何apply应用,加上之后properties和yml文件就有小叶子了如果还没有,点击spring...

2021-06-30 22:05:44 2348

原创 SpringBoot集成Shiro

1、Shiro简介1.1、什么是Shiro?Apache Shiro 是一个java的安全(权限)框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等。shiro官网下载:1.2、shiro有哪些功能?Authentication:身份认证、登录,验证用户是不是拥有相应的身份;Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某

2021-06-30 21:04:47 109 2

原创 SpringBoot整合SpringSecurity

狂神视频1、安全简介在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中

2021-06-30 14:14:01 316

原创 SpringBoot启动报错:Error starting ApplicationContext. To display the conditions report re-run

问题1:查看一下端口号是否被占用了,启动DOS命令输入cmd 回车,输入netstat -ano回车,查看你的端口的PID,也就是端口号的最后一列数据,之后结束掉你的端口PID, 输入tasklist | findstr "7676" 7676指端口对应的PID PID替换成你的端口占用的PID 回车 再重新启动就行了。将端口号修改成另一个端口号clean+compile重启idea问题2:这个问题是因为你在pom文件里面加入了mybatis模块 却没有在config配置就里面增加m

2021-06-30 11:15:25 20452 2

原创 SpringBoot整合MyBatis

Mybatis开发手册Maven仓库地址整合步骤:新建springboot项目springboot-mybatis-study,选择模块导入 MyBatis 所需要的依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version

2021-06-28 22:39:06 52 1

原创 SpringBoot整合Druid数据源

1、Druid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP、PROXOOL 等 DB 池的优点,同时加入了日志监控。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Spring Boot 2.0 以上默认使用 Hikari 数

2021-06-28 16:36:29 57

原创 SpringBoot整合JDBC

1、Spring Data简介spring data官网数据库相关的启动器:可以参考官方文档2、SpringBoot整合JDBC创建测试项目测试数据源创建项目:springboot-data-jdbc ; 引入相应的模块!基础模块项目建好之后,发现自动帮我们导入了如下的启动器:编写yaml配置文件连接数据库;spring: datasource: username: root password: 123456 #?serverTimezone=UTC解决

2021-06-28 15:45:40 108

原创 SpringBoot--thymeleaf使用和页面国际化

1、准备工作新建springboot项目,命名为springboot-employee-management-system选择需要的配置模块创建controller层,写一个HelloController测试一下@RestControllerpublic class HelloController { @GetMapping("/hello") public String hello() { return "hello world"; }}启

2021-06-27 00:53:03 514 1

原创 SpringBoot--Web开发

狂神视频课程相关spring:开源框架,轻量级框架,为了解决企业级应用开发的复杂性而创建的。1、web开发静态资源处理使用SpringBoot的步骤:创建一个SpringBoot应用,选择我们需要的模块,SpringBoot就会默认将我们的需要的模块自动配置好手动在配置文件中配置部分配置项目就可以运行起来了专注编写业务代码,不需要考虑以前那样一大堆的配置了。创建一个SpringBoot项目新建springboot项目,命名为springboot-web-study

2021-06-26 13:59:08 286

原创 SpringBoot--自动配置原理分析

我们之前写的HelloSpringBoot,到底是怎么运行的呢,Maven项目,我们一般从pom.xml文件探究起;1、pom.xml父依赖其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件!点进去,发现还有一个父依赖和一些资源配置,比如ymlspring-boot-dependencies点进去可以看到有很多版本仓库spring-boot-dependencies:核心依赖在父工程中我们在写或者引入一些springboot依赖的时候,不需要指定版本,就因为有这些版本仓库

2021-06-24 15:41:49 129

原创 SpringBoot--配置文件

1、配置文件概述狂神视频# springboot这个配置文件中到底可以配置哪些东西呢?# 官方配置太多了# 了解原理:一通百通2、yaml语法这种语言以数据作为中心,而不是以标记语言为重点!说明:语法要求严格!空格不能省略以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的属性和值的大小写都是十分敏感的。2.1、字面量:普通的值 [ 数字,布尔值,字符串 ]字面量直接写在后面就可以 , 字符串默认不用加上双引号或者单引号;`k: v注意:“ ” 双

2021-06-24 15:39:46 467

原创 SpringBoot集成Swagger

狂神视频学习目标:了解Swagger的概念及作用掌握在项目中集成Swagger自动生成API文档1、Swagger简介前后端分离前端 -> 前端控制层、视图层后端 -> 后端控制层、服务层、数据访问层前后端仅仅通过异步接口(AJAX/JSON)来编程前后端都各自有自己的开发流程,构建工具,测试集合前后端通过API进行交互前后端相对独立且松耦合开发流程后台编写和维护接口文档,在 API 变化时更新接口文档后台根据接口文档进行接口开发前端根据接口文

2021-06-23 00:01:15 388 5

原创 ElasticSearch搜索实战仿京东搜索

注:只有后端,没有前端,可以观看以下视频学习狂神视频1、项目搭建京东商城首页创建项目(修改版本,如果版本本身没有问题就不用改)pom文件关闭thymeleaf的缓存导入老师给的前端页面资源(资源我没找到)写controller测试一下项目可不可以启动项目测试出现以下页面2、爬取数据爬取数据(获取请求返回的页面信息,筛选出我们想要的数据就可以了)数据问题?数据库获取,消息队列中获取,都可以成为数据源,现在可以 爬虫获取数据!pom文件中

2021-06-19 18:48:54 282 2

空空如也

空空如也

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

TA关注的人

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