初识yaml
引入 笔者在使用 Hexo + GitPage 搭建博客时初次接触到了.yaml文件,后来又在 SpringBoot 的配置文件中再次碰到了.yaml文件,特此补上关于yaml的blog。
yaml概述 YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)。
YAML是一种直观的能够被电脑识别的的数据数据序列化格式,他并且容易被人类阅读,容易和脚本语言交互的。换种说法,YAML是一种很简单的类似于XML的数据描述语言,语法比XML简单很多。他在描述能够被转化成数组或hash的数据是很有用
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
YAML 的配置文件后缀为 .y ...
Vue进阶
引入// todo
二叉树中第二小的节点
力扣 671. 二叉树中第二小的节点题目说明
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。
更正式地说,root.val = min(root.left.val, root.right.val) 总成立。
给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。
提示:
树中节点数目在范围 [1, 25] 内
1 <= Node.val <= 2^31 - 1
对于树中每个节点 root.val == min(root.left.val, root.right.val)
示例示例 1:
123输入:root = [2,2,5,null,null,5,7]输出:5解释:最小的值是 2 ,第二小的值是 5 。
示例 2:
123输入:root = [2,2,2]输出:-1解释:最小的值是 2, 但是不存在第二小的值。
笔者理解此题是一道二叉树算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题 ...
Vue入门
引入 在 初识Vue 中,我们以及对 Vue 进行了了解和实践了第一个 Vue 程序展示,接下来我们继续进行学习,对 Vue 的相关知识进行一个入门。
Vue指令v-bind绑定数据和元素属性
123456789101112131415161718192021222324<!DOCTYPE html><html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div id="test"> <span v-bind:title="message"> 悬停几秒查看隐藏内容</span> </div>&l ...
替换隐藏数字得到的最晚时间
力扣 1736. 替换隐藏数字得到的最晚时间题目说明
给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。
有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。
替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。
提示:
time 的格式为 hh:mm
题目数据保证你可以由输入的字符串生成有效的时间
示例示例 1:
123输入:time = "2?:?0"输出:"23:50"解释:以数字 '2' 开头的最晚一小时是 23 ,以 '0' 结尾的最晚一分钟是 50 。
示例 2:
12输入:time = "0?:3?"输出:"09:39"
示例 3:
12输入:time = "1?:22"输出:"19:22"
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现本题直接求解 ...
初识Vue
引入网页编程基本包括:
逻辑操作
循环(for)
判断(if)
事件 js(行为层)
浏览器事件:window、document事件
DOM事件:标签事件(增,删,遍历,改)
衍生框架:
jQuery
Angular:由java程序员开发,将后台的MVC(模型、视图、控制器)模式搬到了前端并增加了模块化开发的概念
React:高性能的js前端框架,特点是提出了新概念【虚拟DOM】减少真实DOM操作,在内存中模拟DOM操作,有效的提高了前端渲染效率
Vue:一款渐进式Javascript框架,综合了Angular和React的特性
React
等等
视图
html(结构层)
css(表现层):难点
衍生框架:
BootStrap
Layui
等等
通信
xhr(原生的js事件)
ajax(jQuery封装的)
axios(一个前端通信框架)
例如java全栈工程师就需要掌握:
后台开发:主打类似于ssm框架编写,crud编写
前端:html、css、js、jQuery、Vue
运维:项目发布,服务器如何运行一个项目?在Linux上部署
其中前端的部分对 ...
ssm回顾
引入 在一个学期紧锣密鼓的学习后,笔者部分掌握了ssm框架技术,在接触框架技术之前,一直觉得框架是比较高端,比较神秘的。但接触了之后,发现框架其实就是一系列工具和规范的整合,更好的方便开发人员进行开发而已。在此,对ssm框架进行一个回顾,巩固所学的知识。我的教材是黑马程序员的《JavaEE企业级应用开发教程(Spring+Spring MVC+MyBatis)》,所以本文就参考此书和狂神的视频进行总结回顾。
SSM框架学了什么 如同书名所提到的,SSM其实就是Spring+Spring MVC+MyBatis三个框架的整合。
Spring:
IOC(Invention of control)控制反转
Spring概述
applicationContext.xml(bean.xml)
DI(Dependence Injection)依赖注入
有参构造注入
无参或者工厂创建,set方法注入
代理模式(静态、动态[JDK、CGLIB])
AOP(Aspect Oriented Programming)面向切面编程
注解开发Spring
JavaConfig:参考什么是 ...
检查是否区域内所有整数都被覆盖
力扣 1893. 检查是否区域内所有整数都被覆盖题目说明
给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。
如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖,那么请你返回 true ,否则返回 false 。
已知区间 ranges[i] = [starti, endi] ,如果整数 x 满足 starti <= x <= endi ,那么我们称整数x 被覆盖了。
提示:
1 <= ranges.length <= 50
1 <= starti <= endi <= 50
1 <= left <= right <= 50
示例示例 1:
123456输入:ranges = [[1,2],[3,4],[5,6]], left = 2, right = 5输出:true解释:2 到 5 的每个整数都被覆盖了:- 2 被第一个区间覆盖。- ...
初识java日志
引入在我们平常练习时,可能使用的就是stdout的经典输出测试了,在小问题不值得debug(其实就是懒)时,我们可以通过stdout将自己想看的属性展示在输出台。但是在实际项目运行时,这显然是不可靠的,比如一个网站24小时都在运行着,这个时候使用stdout很明显不现实了。所有今天就给大家带来和stdout不同的日志输出方式。
使用日志的原因
可以得知项目运行的情况,方便进行调试,迭代,修理和问题恢复等操作
便于协调,在与小组进行协同工作时,方便结果展示和交流
记录用户行为,用户在操作应用时进行的操作和习惯
开发时进行调试,可以方便开发时的bug调试等
日志是什么这里的日志其实就是程序在运行的时候所产生的数据,它包含了网络设备、系统及服务程序(自定义有无)。日志里面包含了日期、时间、使用者及动作等相关操作的描述。简而言之就是我们出于各种目的,记录的程序运行中的一些状态。
常见日志框架
slf4j
jdk logging(java自带的)
log4j
logback
……
logback简介Logback是由log4j创始人设计的另一个开源日志组件,官方网站。它当前分为下面几个模块: ...
复制带随机指针的链表
力扣 138. 复制带随机指针的链表题目说明
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。
构造这个链表的 深拷贝**。 深拷贝应该正好由 n 个 **全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。
例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。
返回复制链表的头节点。
用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:
val:一个表示 Node.val 的整数。
random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。
你的代码 只 接受原链表的头节点 head ...










