- 博客(37)
- 收藏
- 关注
原创 Spring注解驱动开发
一、Spring注解驱动开发 1,组件注册 @Configuration&@Bean给容器中组建组件 1、不同于XML方式使用config配置类替代配置文件。 package com.demo.spring; import org.springframework.context.annotation.Bean; import org.springframework.conte...
2018-10-17 09:30:51
267
原创 MySQL的再学习
又开新坑了......重新学一遍MySQL之后在学一下SQLSever。 一, MySQL简介 mySQL (关系型数据库管理系统) MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database ...
2018-10-17 09:27:49
378
原创 SSM重温——MyBatis(二)MyBatis配置
一、概述 MyBatis配置文件元素二、properties属性 properties属性可以给系统配置一些运行参数,可以放在XML文件或者properties文件中,而不是放在java编码中,这样的好处在于方便参数修改,而不会引起代码的重新编译。一般而言,MyBatis提供了3中方式让我们使用properties,它们是: property子元素 properties文件 程序代码传递...
2018-09-24 16:34:49
869
原创 leetCode——171. Excel表列序号
题目 给定一个Excel表格中的列名称,返回其相应的列序号。 例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 示例 1: 输入: "A" 输出: 1 示例 2: 输入: "AB" 输出: 28 示例...
2018-09-24 14:19:05
268
原创 LeetCode——169. 求众数
题目 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 解题思路 依次找出每个数重复的数目,取满足在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 代码实现...
2018-09-24 13:29:56
256
原创 LeetCode——168. Excel表列名称
题目 给定一个正整数,返回它在 Excel 表中相对应的列名称。 例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ... 示例 1: 输入: 1 输出: "A" 示例 2: 输入: 28 输出: "AB" ...
2018-09-22 15:50:33
225
原创 SSM重温——MyBatis(一)认识MyBatis核心组件
一、持久层的概念 持久层可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者其他情况下,重新开启系统仍然可以读取这些数据。 二、MyBatis的特点 不屏蔽SQL,意味着可以更为精确地定位SQL语句,可以对其进行优化和改造,这有利于互联网系统性能的提高,符合互联网需要性能优化的特点。 提供强大、灵活的应设计中,方便Java...
2018-09-22 15:20:40
308
原创 167. 两数之和 II - 输入有序数组
题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。 示例: 输入: numbers = [2, 7, 11,...
2018-09-22 13:39:04
234
原创 leetCode——160. 相交链表
题目 编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3 在节点 c1 开始相交。 注意: 如果...
2018-09-22 13:13:52
224
原创 leetCode——141. 环形链表
题目 给定一个链表,判断链表中是否有环。 进阶: 你能否不使用额外空间解决此题? 解题思路 创建两个指针,一个跑的快,一个跑的慢。 当跑的快的和跑的慢的到一个位置说明成环, 否则不成环。 代码实现 /** * Definition for singly-linked list. * class ListNode { * int val; * List...
2018-09-22 11:40:29
242
原创 LeetCode——136. 只出现一次的数字
题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 解题思路 题目有要求时间复杂度是线性的且不使用额外空间。没想到解题办法,么得思...
2018-09-21 16:57:16
203
原创 leetCode——125. 验证回文串
题目 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 解题思路 1、提取字符串中的所有字符、数字,组成新字符串。 2...
2018-09-21 16:31:12
228
原创 LeetCode——122. 买卖股票的最佳时机 II
题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖...
2018-09-21 15:27:26
166
原创 LeetCode——121. 买卖股票的最佳时机
题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5...
2018-09-21 13:59:56
167
原创 LeetCode——119. 杨辉三角 II
题目 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 3 输出: [1,3,3,1] 解题思路 用之前的杨辉三角1里的方法生成34层杨辉三角,然后直接从lists里get就好. 代码实现 class Solution { public List<List&l...
2018-09-20 12:15:25
258
原创 LeetCode——118. 杨辉三角
题目 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 解题思路 1、 层数为0,直接返回[]; 2、 层数为1, 直接返回[1]; 3、 层数...
2018-09-20 12:06:04
192
原创 LeetCode——112. 路径总和
题目 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 ...
2018-09-20 11:31:12
460
原创 LeetCode——111. 二叉树的最小深度
题目 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 解题思路 空树,最小深度为0 左右子树都为空,最小深度为...
2018-09-19 14:20:51
171
原创 LeetCode——110. 平衡二叉树
题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。示例 2: 给定二叉树 [1,2,2,3,3,null,n...
2018-09-19 12:41:33
272
原创 LeetCode——108. 将有序数组转换为二叉搜索树
题目 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / ...
2018-09-19 11:32:23
152
原创 算法(第四版)——栈
定义 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 代码实现 链表实现 public class St...
2018-09-18 21:06:46
569
原创 算法——斐波那契搜索(查找)
定义 斐波那契搜索就是在二分查找的基础上根据斐波那契数列进行分割的。在斐波那契数列找一个等于略大于查找表中元素个数的数F[n],将原查找表扩展为长度为F[n](如果要补充元素,则补充重复最后一个元素,直到满足F[n]个元素),完成后进行斐波那契分割,即F[n]个元素分割为前半部分F[n-1]个元素,后半部分F[n-2]个元素,找出要查找的元素在那一部分并递归,直到找到。 代码实现 im...
2018-09-18 18:46:48
1066
原创 LeetCode——107. 二叉树的层次遍历 II
题目 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] 解题思路 没想到...
2018-09-18 12:46:51
240
原创 LeetCode——104. 二叉树的最大深度
题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 解题思路 递归方程: f(n) = 0 n = nul...
2018-09-18 12:06:57
178
原创 LeetCode——101. 对称二叉树
题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 说明: 如果你可以运用递归和迭代...
2018-09-18 09:28:45
177
原创 headfirst设计模式——装饰者模式
定义 动态地将责任附加到对象上。若要扩展功能,装饰者提供比继承更有弹性的替代方案。 类图 代码实现 书中星巴兹饮料的例子 Beverage类(component抽象类) //抽象饮料类 public abstract class Beverage { String description = "Unknow Beverage"; public String getDes...
2018-09-17 21:17:29
273
原创 算法(第四版)——队列
继续复习...... 定义 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插...
2018-09-17 20:33:44
271
1
原创 LeetCode——100. 相同的树
这题主要是会出现多种空指针异常情况,要考虑多种情况才不会报异常。 题目 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [...
2018-09-17 19:37:50
170
原创 LeetCode——88. 合并两个有序数组
题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 n...
2018-09-17 16:47:04
148
原创 LeetCode——83. 删除排序链表中的重复元素
题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 解题思路 不怎么标准的程序流程图 代码实现 /** * Definition for singly-linked...
2018-09-17 11:44:12
141
原创 headfirst设计模式——观察者模式
定义 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 类图 具体代码实现 需求:有一个进度生成器, 用来模拟进度条的数值. 当进度数值更新后, 就会通知进度栏更新值. 也就是进度栏是观察者, 随时间在变的进度值是主题内容。 Observer接口 //观察者接口,观察者统一定义 public interface Ob...
2018-09-16 20:56:00
401
原创 算法(第四版)——背包
继续复习之前看过的内容...... 背包 背包的定义 背包是一种不支持从中删除元素的集合数据类型,目的是帮助用例收集元素并迭代所有收集到的元素,也是检查背包是否为空,或者获取背包中元素的数量。 背包的实现 import java.util.Iterator; //定义泛型背包类 public class Bag<Item> implements Iterable<...
2018-09-16 19:20:41
504
原创 LeetCode——70. 爬楼梯
题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 ...
2018-09-16 16:11:24
159
原创 LeetCode——66. 加一
题目 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示...
2018-09-16 14:42:24
204
原创 LeetCode——58. 最后一个单词的长度
今天开始保持记录LeetCode题...... 题目 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指由字母组成,但不包含任何空格的字符串。 示例: 输入: "Hello World" 输出: 5 思路 1、使用String.trim()方法首先删除字符串两端的空格。 2、使用一个字符串...
2018-09-16 13:47:05
223
原创 headfirst设计模式——策略模式
定义 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 书中例子 书中使用了Duck类一步一步优化到策略模式。一开始使用继承来让不同类型的鸭子有不同的行为方法,但是发现会产生一个问题。如果一个塑料鸭继承了Duck类,那么他就会拥有一个飞行方法和一个叫的方法。这样熟料鸭就能飞了,这显然是不合理的。 于是书中首先使用了接口来解决这个问题,他将...
2018-09-15 21:13:08
199
原创 算法(第4版)——二分查找
从今天开始使用优快云记录学习过程,先把之前看过的内容补上。 基本概念 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 ...
2018-09-15 20:31:14
426
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅