- 博客(94)
- 收藏
- 关注
原创 SQL关键字和函数#1
SQL关键字和函数#1上班干活时遇到的不熟悉的 SQL 关键字和函数,就当摸鱼学习了。UNIONUNION 的作用为合并两个或多个 SELECT 语句的结果集。使用 UNION 需要注意:UNION 连接的 SELECT 语句必须有相同数量的列,列要有相同(相似)的数据类型,同时列的顺序也要保持一致。简单地使用 UNION 的例子:SELECT user_name AS name, user_pwd AS pwd FROM user_table_1UNIONSELECT user_name A
2022-05-29 22:44:11 279 1
原创 JZ41 数据流中的中位数
JZ41 数据流中的中位数描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用 Insert() 方法读取数据流,使用 GetMedian() 方法获取当前读取数据的中位数。数据范围:数据流中数个数满足 1 ≤ n ≤ 1000 ,大小满足 1≤ val ≤1000进阶: 空间复杂度 O(n) , 时间复杂度 O(nlogn)示例1输入:[5,2,3
2022-05-29 22:43:00 240
原创 JZ40 最小的K个数
JZ40 最小的K个数描述给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。数据范围:0 ≤ k,n ≤ 10000,数组中每个数的大小0 ≤ val ≤10000要求:空间复杂度 O(n),时间复杂度 O(nlogn)示例1输入:[4,5,1,6,2,7,3,8],4 返回值:[1,2,3,4]// 说明:返回最小的4个数即可,返回[1,3,2,4]也可
2022-05-29 22:42:28 327
原创 JZ38 字符串的排列
JZ38 字符串的排列描述输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。数据范围:n < 10要求:空间复杂度 O(n!),时间复杂度 O(n!)输入描述:输入一个字符串,长度不超过10,字符只包括大小写字母。示例1输入:"ab"返回值:["ab","ba"]// 说明:返回["ba","ab"]也是正确的
2022-05-29 22:41:47 710
原创 SpringBoot 分布式系统简单使用
SpringBoot 分布式系统简单使用接上节,了解了分布式系统的基本概念和搭建完环境后,用一个简单的例子体验一下分布式服务。1. 环境搭建创建一个空的新项目,就命名为 SpringBoot-09-DS 吧。在其中新建 SpringBoot 项目的模块 provider-server,选择 Web 依赖,代表服务提供者。在其中编写一个卖书的服务,首先是接口package com.qiyuan.service;public interface BookService { public
2022-02-01 13:19:36 2409 1
原创 SpringBoot 分布式系统简单了解
SpringBoot 分布式系统简单了解SpringBoot 框架的使用基本是了解的差不多了,马上就进入微服务的阶段了,在此之前必须要了解什么是分布式系统。1. 分布式系统简介分布式系统(distributed system)是建立在网络之上的软件系统。在《分布式系统原理与范型》书中有分布式系统的定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”。分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普
2022-01-31 19:46:39 6463 1
原创 JZ13 机器人的运动范围
JZ13 机器人的运动范围描述地上有一个 rows 行和 cols 列的方格。坐标从 [0,0] 到 [rows-1,cols-1] 。一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 threshold 的格子。 例如,当 threshold 为 18 时,机器人能够进入方格 [35,37] ,因为 3+5+3+7 = 18。但是,它不能进入方格 [35,38] ,因为 3+5+3+8 = 19 。请问该机器人能够达到
2022-01-31 19:43:54 658
原创 JZ12 矩阵中的路径
JZ12 矩阵中的路径描述请设计一个函数,用来判断在一个n乘m的矩阵中是否存在一条包含某长度为 len 的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如矩阵中包含一条字符串 “bcced” 的路径,但是矩阵中不包含 “abcb” 路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。数据范围:0 ≤ n,m ≤ 20
2022-01-25 11:54:39 340
原创 Shiro 简单使用②
Shiro 简单使用②通过整合 MyBatis 连接真实数据库,使用 Shiro 的授权和认证管理!1. 整合MyBatis顺便复习一下配置连接数据库的步骤!1.1 导入依赖首先要导入连接数据库所需的依赖<!-- mysql --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></
2022-01-25 11:04:20 1089
原创 Shiro 简单使用①
Shiro 简单使用①尝试在 SpringBoot 框架中使用 Shiro,对应 SpringBoot-08-Shiro 项目。1. 环境搭建选择 Web 和 Thhtmeleaf 依赖创建项目后,添加首页页面和对应的控制器确保能访问成功即可。在 SpringBoot 中添加 Shiro 的依赖,依旧是一个 Starter<!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-spring-boot-web-starter
2022-01-25 11:03:25 606
原创 Shiro 简单了解
Shiro 简单了解简单用过 SpringSecurity 安全框架后,再试试另一个安全框架——Shiro。1. Shiro简介Apache Shiro 是一个强大且易用的 Java 安全框架:Shiro 可以简单地开发出足够好的应用,可以应用在 JavaSE 环境和 JavaEE 环境;Shiro 可以完成身份认证、授权、加密、会话管理、Web 集成、缓存等。Shiro 源码:https://github.com/apache/shiro Shiro 的主要功能包括:
2022-01-25 11:02:51 2004
原创 SpringSecurity 简单使用
SpringSecurity 简单使用在 Web 开发中安全是不可忽视的问题(软件安全技术!),现在从 SpringSecurity 和 Shiro 两个框架来学习一下安全框架在 Web 应用中的使用。Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based
2022-01-25 10:59:49 5139 1
原创 SpringBoot 整合MyBatis
SpringBoot 整合MyBatis了解完 SpringBoot 中简单的 JDBC 使用操作后,就可以尝试将 SpringBoot 与 MyBatis 结合起来了。1. 导入MyBatis依赖新建项目 SpringBoot-06-MyBatis,添加 Spring Web 、JDBC API 和 MySQL Driver 的依赖(顺便把 Lombok 也加上了)。 然后和之前一样配置数据源并测试连接,为了后面的使用,这次用 properties 文件进行配置# properti
2022-01-17 22:56:47 624
原创 SpringBoot 使用Druid数据源
SpringBoot 使用Druid数据源程序进行数据库操作的时候,需要使用数据库连接,而数据库连接的性能又与数据库连接池不无关系。Druid 是阿里巴巴开源的一个数据库连接池的实现,结合了 C3P0、DBCP 等数据库连接池的优点,同时加入了日志监控。Druid 的强大之处在于其在监控上的应用,它能很好地监控数据库连接池和 SQL 的执行情况。在 SpringBoot 中使用 JDBC 时可以看到,它默认的数据源是 Hikari 数据源。Hikari 和 Druid 都是 JavaWeb 中最优秀的数
2022-01-17 22:55:58 2491
原创 SpringBoot 使用JDBC
SpringBoot 使用JDBC我超,又要开始了。太久不写,全忘完了,就当 Remake 了!1. 使用JDBCSringBoot 对数据层进行访问,无论是 SQL(关系型数据库)还是 NoSQL(非关系型数据库),其底层都是采用 Spring Data 的方式进行处理的。按照之前的笔记,创建 SpringBoot-05-Data 项目,然后添加数据相关的依赖,先只添加基础的 JDBC API 和 MySQL Driver,学习一下。 进入项目,查看 pom.xml 文件,可以看到
2022-01-17 22:52:43 8465 1
原创 JZ76 删除链表中重复的结点
JZ76 删除链表中重复的结点描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。示例1输入:{1,2,3,3,4,4,5}返回值:{1,2,5}示例2输入:{1,1,1,8}返回值:{8}解析本题的要求很简单,就是要删除链表中出现了两次以上的节点(全部删除,不是删除多余的)。对于这个问题,有两种思路
2022-01-15 23:14:54 174
原创 JZ23 链表中环的入口结点
JZ23 链表中环的入口结点描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围:n ≤ 1000;要求:空间复杂度O(1),时间复杂度O(n)。示例1输入:{1,2},{3,4,5}返回值:3**说明:**返回环形链表入口节点,我们后台会打印该环形链表入口节点,即3。示例2输入:{1},{}返回值:"null"**说明:**没有环,返回null,后台打印"null"解析这题初见是真的毫无思路,无从下手,在看了题解后才恍然
2022-01-15 23:14:09 254
原创 JZ36 两个链表的第一个公共结点
JZ36 两个链表的第一个公共结点描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。数据范围:n ≤ 1000;要求:空间复杂度O(1),时间复杂度O(n)。示例1输入:{1,2,3},{4,5},{6,7}返回值:{6,7}**说明:**第一个参数{1,2,3}代表是第一个链表非公共部分,第二个参数{4,5}代表是第二个链表非公共部分,最后的{6,7}表示的是2个链表的公共部分,这3个参数最后在后台会组装成为2个两个无环的单链表,且是有公共节点的。示
2022-01-15 23:13:35 152
原创 SpringBoot 员工管理系统③
SpringBoot 员工管理系统③写完了之前的基本配置和登录模块,就进入 CRUD 环节了,写多了也没意思了,不过在 SpringBoot 中还是第一次写。1. 展示员工列表要展示员工列表,就要有前端页面的支持了,所以需要先调整一下模板的格式。在这个模板中,页面的顶部栏和侧边栏在不同的页面中是复用的,所以先将它们提取出来,先找到它们的位置<!--顶部栏--><!-- dashborad.html list.html Line 46-54 --><nav class
2021-10-06 15:30:21 293
原创 SpringBoot 员工管理系统②
SpringBoot 员工管理系统②1. 登录功能实现接上回,现在才进入项目的主体部分,首先需要完成一个登录模块。先修改前端页面,将登录按钮的动作修改为发起 /user/login 请求<form class="form-signin" th:action="@{/user/login}">然后创建 LoginController 处理这个请求,先返回一个测试数据查看是否能成功跳转@Controllerpublic class LoginController { @Re
2021-10-04 22:05:35 161
原创 SpringBoot 员工管理系统①
SpringBoot 员工管理系统①好久没写 SpringBoot 了···发现还是写算法题有意思,写完就溜不会还能看看答案。不过最后还是得把这个小小项目写一下。1. 准备工作首先创建个 SpringBoot-04-EMS 项目,不想用之前的项目了,切割一下。创建时添加 Spring Web、Thymeleaf、Lombok 的依赖。创建完后导入静态资源文件,模板放到 templates 目录下,js、css、img 放到 statics 目录下。这里突然发现 Maven 的路径又被 IDEA 重置
2021-10-04 16:59:14 230
原创 JZ61 序列化二叉树
JZ61 序列化二叉树描述请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。二叉树的序列化(Serialize)是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树等遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#)。二叉树的反序列化(Deserialize)是指:根据某种
2021-10-03 00:04:01 209
原创 JZ58 对称的二叉树
JZ58 对称的二叉树描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。示例1输入:{8,6,6,5,7,7,5}返回值:true示例2输入:{8,6,9,5,7,7,5}返回值:false解析这题看起来简单又有点难度,但思路到位了理解实现都比较容易。首先关注对称的定义:**如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。**即从根节点开始,左孩子对应右孩子,左孩子的左孩子对应右孩子的右孩子,左孩子的
2021-09-30 21:03:08 105
原创 JZ57 二叉树的下一个结点
JZ57 二叉树的下一个结点描述给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。输入描述:输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点。返回值描述:返回传入的子树根节点的下一个节点,后台会打印输出这个节点。示例1输入:{8,6,10,5,7,9,11},8返回值:9
2021-09-30 21:02:57 104
原创 JZ24 二叉树中和为某一值的路径
JZ17 二叉树中和为某一值的路径描述输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。示例1输入:{10,5,12,4,7},22返回值:[[10,5,7],[10,12]]示例2输入:{10,5,12,4,7},15返回值:[]解析首先分析这道题的返回值,它是一个二维数组,其中的每个一维数组对应二叉树中的一条路径;即路径是一维数组,结果集是二维数组(又说了一遍??
2021-09-28 22:46:52 84
原创 SpringBoot MVC配置
SpringBoot MVC配置在使用 SpringBoot 进行实际的项目开发前,最后再了解一下 SpringBoot 中对于 MVC 的配置!仍对应 SpringBoot-03-Web 项目。1. MVC配置简介SpringBoot 对 MVC 进行了许多的配置,查看官方文档可以看到其中的介绍Spring MVC Auto-configuration// Spring Boot 为 Spring MVC 提供了自动配置,它可以很好地与大多数应用程序一起工作。Spring Boot provi
2021-09-24 21:32:31 3153
原创 SpringBoot Thymeleaf模板引擎
SpringBoot Thymeleaf模板引擎本节学习一下 SpringBoot 中的模板引擎,以 Thymeleaf 为例,仍在 SpringBoot-03-Web 项目中!1. Thymeleaf简介首先明确一下模板引擎的概念:模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的 HTML 文档。简单来说,之前用的 JSP 也算一种模板引擎(大概),它的作用就是获取数据(通过 ${} 表达式)并展示;后台将什么数据给它,它取出来
2021-09-24 12:45:35 228
原创 JZ23 二叉搜索树的后序遍历序列
JZ23 二叉搜索树的后序遍历序列描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜索树)示例输入:[4,8,6,12,16,14,10]返回值:true解析二叉搜索树( Binary Search Tree )的特点为左子树的值均小于根节点的值,右子树的值均大于根节点的值,在后序遍历序列中,数组末尾即是根节点的值,因此可以将遍历序列分为三部分数组最后一
2021-09-24 12:45:01 83
原创 SpringBoot 静态资源导入及首页设置
SpringBoot 静态资源导入及首页设置本节了解一下 SpringBoot 中 Web 开发的静态资源导入和首页设置,对应 SpringBoot-03-Web 项目。1. 静态资源导入在 Web 开发过程中,我们需要接触许多的静态资源,如 CSS、JS、图片等;在之前的开发过程中,这些资源都放在 Web 的目录下,用到的时候按照对应路径访问即可。不过在 SpringBoot 项目中,没有了 Web 的目录,那这些静态资源该放到哪里去,又要如何访问呢?由于是 Web 应用中的配置,所以查看对应的自
2021-09-24 12:44:38 342
原创 SpringBoot自动配置原理
SpringBoot自动配置原理这一节又要从源码分析一下 SpringBoot 的自动配置,和配置文件要怎么写了!1. 回顾运行原理在之前的 SpringBoot 运行原理中可以知道,SpringBoot 通过 AutoConfigurationImportSelector 类实现了自动配置,层级关系为// 主启动类@SpringBootApplication// 开启自动配置@EnableAutoConfiguration// 导入自动配置选择器类@Import({AutoConfigu
2021-09-19 13:53:51 138 1
原创 SpringBoot数据校验及多环境配置
SpringBoot数据校验及多环境配置接上节,本节补充一下数据校验及多环境配置的内容,仍是 SpringBoot-02-Config 项目。1. 数据校验使用数据校验,可以在输入不合法数据时抛出异常,首先要添加 validation 的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte
2021-09-19 13:52:48 473
原创 SpringBoot YAML配置
SpringBoot YAML配置又回来学习 SpringBoot 啦,本节对应项目 SpringBoot-02-Config!1. YAML简介YAML 是 “YAML Ain’t a Markup Language”( YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是 “Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据为中心,而不是以标记语言为重点,而用反向缩略语重命名。以前使用 XML 来进行配置的时候,如
2021-09-19 13:52:11 190 1
原创 JZ19 顺时针打印矩阵
JZ19 顺时针打印矩阵描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]则依次打印出数字[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]示例输入:[[1,2],[3,4]]返回值:[1,2,4,3]解析本来吧,这种题也没什么特色,不想特意记一下。不过想了半天也没想出来,看了一眼题解恍然大悟,这
2021-09-16 12:10:04 1513
原创 JZ17 树的子结构
JZ17 树的子结构描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)示例输入:{8,8,#,9,#,2,#,5},{8,9,#,2}返回值:true解析这题的思路还是比较明确的,树的问题基本都涉及到树的遍历,此处要遍历树 A,寻找与树 B 根节点相同的节点,从这个相同节点开始判断是否为子结构。一开始写的代码为/**public class TreeNode { int val = 0; TreeNode left =
2021-09-15 12:42:50 82
原创 SpringBoot运行原理
SpringBoot运行原理自从写了第一个 SpringBoot 程序后摸了几天鱼,现在回来研究一下 SpringBoot 的运行原理!1. 依赖文件pom之前 SpringBoot 创建的是一个 Maven 项目,所以对应的配置文件 pom.xml 中肯定包含了项目需要的所有依赖。点进 pom.xml 查看,发现只有几个启动器依赖,不过可以看到这个项目存在一个父项目 spring-boot-starter-parent <parent> <groupId&g
2021-09-14 17:42:30 405
原创 SpringBoot初见
SpringBoot初见摸了几天鱼,还是得回来学习。学会基本的 SSM 框架使用后,就不得不学习一下极大地简化了开发流程的 SpringBoot 了!1. SpringBoot简介首先回顾一下 Spring 是什么:**Spring是一个轻量级的控制反转( IoC )和面向切面编程( AOP )的框架。**Spring是为了解决企业级应用开发的复杂性而出现的,目的就是为了简化开发。不过随着 Spring 的发展,集合的东西越来越多,配置也变得更加复杂,此时的 Spring 就背离了简化开发的初衷。因
2021-09-10 11:46:46 197 1
原创 Vue初见
Vue初见学完 SSM 框架后,了解一点前端的内容。1. Vue简介Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。Vue 是 MVVM 模式的实现者,不同于 MVC 模式,它包括Model:模型层,这里表示为 JavaScript 对象View:视图层,在这里表示为 DOM(文档对象模型 Document Object Model )ViewModel:
2021-09-08 21:23:23 148
原创 SpringMVC文件上传及下载
SpringMVC文件上传及下载文件上传及下载是 Web 项目中经常使用的功能,SpringMVC 可以很好地支持文件上传及下载;本节新建 SpringMVC-09-File 项目学习在 SpringMVC 中进行文件上传及下载。1. 文件上传1.1 前置知识文件上传即从客户端向服务器传输数据,所以在客户端也需要有文件传输的支持!前端页面的表单中的 enctype 属性就是用于设置传输格式的application/x-www=form-urlencoded:默认方式,只处理表单域中的 valu
2021-09-06 22:25:07 331 1
原创 SpringMVC拦截器
SpringMVC 拦截器本节新建 SpringMVC-09-Interceptor 项目学习 SpringMVC 的拦截器。1. 拦截器简介SpringMVC 中的拦截器( Interceptor )类似于 Servlet 中的过滤器( Filter ),主要用于拦截用户请求并进行相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。过滤器与拦截器的区别:拦截器是 AOP 思想的具体应用。过滤器Servlet 规范中的一部分,任何 JavaWeb 工程都可以使用
2021-09-06 18:05:40 180
原创 SpringMVC AJAX使用
SpringMVC AJAX使用之前在分析 SMBMS 项目的时候稍微了解过其中的 AJAX 的作用和用法,现在学习了 SpringMVC,就要在 SpringMVC 中使用一下 AJAX。本节创建 SpringMCV-08-AJAX 项目学习 AJAX 的使用。1. 回顾AJAXAJAX( Asynchronous Javascript And XML,即异步 JavaScript 和 XML )是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。AJAX 不是新的编程语言,而是用于创建
2021-09-05 17:38:22 679
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人