自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟程序猿的博客

新手小白,错误请指出

  • 博客(69)
  • 收藏
  • 关注

原创 MySql存储引擎

一、InnoDB存储引擎       InnoDB给MySQL的表提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全。       InnoDB存储引擎支持自动增长AUTO_INCREMENT。自动增长列的值不能为空,且只必须唯一,且自动增长的列为主键。在插入值时,如果自动增长列不插入值或输入的值为0或输入的值为NULL,则插入的值为自动增长后的值。主键唯一,因此自动增长的列不能插入...

2018-10-21 21:39:22 362

原创 简单实现Spring IOC (单例模式)(解析XML方式)

基于XML方式的依赖注入,主要是基于XML的解析,类的反射机制 主要思路:           1、解析xml文件            2、获取xml文件所有的节点内容           3、根据类路径反射类            4、注入属性信息 项目基本框架:1、首先创建普通maven项目,导入dom4j、Spring context等的依赖pom.xm...

2018-10-06 22:23:41 974

原创 Spring事务管理

一、定义:             事务就是对数据库的一系列操作(如对数据库的增删改查),将这些操作看成一个整体,要么全部成功,要么全部失败。不存在部分成功,部分失败这种情况。二、数据库事务的4个特性(ACID)    1、原子性(Atomic):表示组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有的操作执行成功,整个事务才提交,事务中任何一个数据库操作失败,已经执行的任...

2018-10-04 20:23:21 275

原创 Java8新特性

1、函数式接口(Functional Interface)@FunctionalInterface函数式接口就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口;可以被隐式转换为lambda表达式;可以现有的函数友好地支持 lambda。 2、Lambda表达式lambda表达式的重要特征:可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参...

2018-10-01 15:43:58 267

原创 Java 内部类、静态内部类、外部类

1、非静态内部类实例化方式      InnerClass innerClass =outClass.new InnerClass();      访问内部变量及方法方式:  innerClass.method()                                                              innerClass.i2、静态内部类实例化方式 ...

2018-09-16 14:15:28 667

原创 LeetCode 无重复字符的最长子串

给定一个字符串,找出不含有重复字符的最长子串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 无重复字符的最长子串是 "b",其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 无重复字符的最长子串是 "wke",其

2018-09-11 09:33:36 181

原创 Java HashMap中get方法的原理

首先向get()方法中传递一个key 在get()方法中调用hash(key),如果key!=null,返回该key的哈希值hash = key.hashCode()^ (h >>> 16),否则返回hash=0 在get()方法中调用getNode(hash,key)方法,获取该key的节点,并返回value getNode()方法中首先要...

2018-09-10 22:36:04 7133

原创 JDK 7和JDK8中的HashMap的实现原理不同之处,以及JDK8中HashMap的优势之处

1、JDK8将数据的存储方式,由数组链表形式,优化为当链表长度大于8的时候,链表形式变为红黑树形式,复杂度由O(n)降至O(logn),提高了查询效率,性能得到了提升2、扩容方式:     JDK7: JDK7会传入一个新的更大的容量,并以此创建一个新的Entry数组,然后重新计算hash值将原来的数组元素,拷贝到新的Entry数组中// JDK7源码void resize(int...

2018-09-10 22:31:39 666

原创 Java ArrayList容量及扩容方式

查看JDK1.8 ArrayList的源代码:1、默认初始容量为10 /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10;2、最大容量为 Integer.MAX_VALUE - 8 /** * The maximum ...

2018-09-10 22:25:44 5055

原创 二叉排序树和平衡二叉树

一、二叉排序树  1、定义:二叉排序树(BST)也称二叉查找树。是一棵空树或具有以下性质的树:     (1)若左子树非空,则左子树上所有结点关键字值均小于根结点的关键字值     (2)若右子树非空,则右子树上所有结点关键字值均大于根结点的关键字值     (3)左、右子树本身也分别是一棵二叉排序树   由此定义可知,二叉排序树是一个递归的数据结构,有左子树结点值<根结点值<...

2018-09-09 15:07:02 8885 1

原创 Java String、StringBuilder、StringBuffer区别和联系

1、三者之间的继承实现接口关系一、String:查看JDK API文档可知:1、首先String被final修饰是不能被继承的,字符串是常量,在内存中可以共享 。 String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2);结果为:true 每次创建后不能更改。也就是说每次对Str...

2018-09-09 11:09:50 2409 1

原创 Java中父类子类static静态方法和非静态方法以及构造方法的执行顺序

执行顺序:父类静态块-->子类静态块-->父类非静态块-->父类构造方法-->子类非静态块-->子类构造方法     当父类或子类中有多个静态方法时按在代码中的顺序执行public class Father { static { System.out.println("Father中的静态块:1"); } static { System...

2018-09-09 10:10:06 5210

原创 LeetCode 二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 思路:从下往上计算,最下层为第一层;先从根节点遍历到最后  ...

2018-09-05 10:01:14 258

原创 LeetCode 122. 买卖股票的最佳时机 II

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...

2018-09-03 16:11:41 134

原创 LeetCode 844. 比较含退格的字符串

 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。 示例 1:输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。示例 3:...

2018-08-23 22:57:33 269

原创 LeetCode 455. 分发饼干

 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正...

2018-08-23 22:38:31 867

原创 LeetCode 561. 数组拆分 I

给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).提示:n 是正整数,范围在 [1, 10000...

2018-08-22 20:39:06 144

原创 LeetCode 441. 排列硬币

你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。给定一个数字 n,找出可形成完整阶梯行的总行数。n 是一个非负整数,并且在32位有符号整型的范围内。示例 1:n = 5硬币可排列成以下几行:¤¤ ¤¤ ¤因为第三行不完整,所以返回2.示例 2:n = 8硬币可排列成以下几行:¤¤ ¤¤ ¤ ¤¤ ¤...

2018-08-22 20:24:01 526

原创 LeetCode 717. 1比特与2比特字符

有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。示例 1:输入: bits = [1, 0, 0]输出: True解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。示例 2:输入: ...

2018-08-20 21:24:56 175

原创 LeetCode 791. 自定义字符串排序

字符串S和 T 只包含小写字符。在S中,所有字符只会出现一次。S 已经根据某种规则进行了排序。我们要根据S中的字符顺序对T进行排序。更具体地说,如果S中x在y之前出现,那么返回的字符串中x也应出现在y之前。返回任意一种符合条件的字符串T。示例:输入:S = "cba"T = "abcd"输出: "cbad"解释: S中出现了字符 "a", "b", "c", 所以

2018-08-19 11:40:55 597

原创 LeetCode 876. 链表的中间结点

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans...

2018-08-18 18:00:20 1485

原创 LeetCode 507. 完美数

对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False 示例:输入: 28输出: True解释: 28 = 1 + 2 + 4 + 7 + 14 注意:输入的数字 n 不会超过 100,000,000. (1e8)          没什么太好的方法。。...

2018-08-16 23:13:30 322

原创 LeetCode 852. 山脉数组的峰顶索引

我们把符合下列属性的数组 A 称作山脉:A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]给定一个确定为山脉的数组,返回任何满足 A[0] < A[1] < ... A...

2018-08-15 22:58:58 539

原创 LeetCode 476. 数字的补数

给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。注意:给定的整数保证在32位带符号整数的范围内。 你可以假定二进制数不包含前导零位。示例 1:输入: 5输出: 2解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。示例 2:输入: 1输出: 0解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。...

2018-08-14 20:52:00 581

原创 LeetCode 409. 最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1: 输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。 思路:   本题目是构造最长的回文串 ...

2018-08-14 20:16:18 818

原创 Java的集合框架

Java的集合框架由接口、实现和算法组成:1、接口           List扩展了Collection类,是可以包含重复元素的集合。在列表中插入元素时,可以控制元素插入的位置。因此,只要知道元素的索引,就能检索元素。      Set扩展了Collection类,是不能包含重复元素的集合。如,元素e1和e2,如果,e1.equals(e2)==true,则只能包含其中一个。Se...

2018-07-24 22:54:13 147

原创 JavaWeb Session的用法

session,在服务器端保存用户多次请求的数据。(注意:session技术,还是依赖cookie技术)1  、session是服务器开辟的一个用来存储数据的空间2 、 服务器为每个浏览器单独开辟一个session3 、 服务器根据浏览器发送过来的cookie,来确认当前浏览器使用哪个session——在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览...

2018-07-14 09:34:49 13632

原创 JavaWeb Cookie的用法

Cookie是在浏览器端保存用户请求的信息。创建一个 cookie,cookie 是 servlet 发送到 Web 浏览器的少量信息,这些信息由浏览器保存,然后发送回服务器。cookie 的值可以唯一地标识客户端,因此 cookie 常用于会话管理。 一个 cookie 拥有一个名称、一个值和一些可选属性,比如注释、路径和域限定符、最大生存时间和版本号。一些 Web 浏览器在处理可选属性方面存在...

2018-07-14 09:17:29 1658

原创 JavaWeb request用法

request封装了所有的请求信息如: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("请求方法:"+request.getMethod()); System.ou...

2018-07-12 20:59:07 18723

原创 JavaWeb 下载文件Download

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import ja...

2018-07-12 20:33:42 1339

原创 JavaWeb response用法

response封装了服务器所有的响应1、response可以通过setStatus()方法设置网页的状态码常用的有:    200 请求成功                      302 重定向                    404 网页未找到                    500 服务器内部出错如在Servlet中设置404: protected void doGet(Ht...

2018-07-12 20:29:40 4200

原创 JavaWeb ServletContext接口

    1、 ServletContext是一个容器,可以用来存放变量,供一个web项目中多个Servlet共享。可以存储key-value结构的数据,并且可以进行修改、获取、移除操作。 ServletContext servletContext=this.getServletContext();//获取一个ServletContext对象 servletContext.setAttribu...

2018-07-12 19:52:27 417

原创 Java static修饰符

1、静态字段    类的字段可以被标记为static。    静态字段可以创建真正的全局变量。Java不允许在在类定义之外来创建可以访问的全局变量。但是,可以使用static关键字来创建可以访问的全局变量。    静态字段与类自身的定义相关联,在类的所有实例之间共享。当类被实例化时,不会为静态字段分配独立的内存。静态字段的内存分配仅发生一次,就是在类加载的时候。当JVM将类的定义加载到内存中时,会...

2018-07-05 16:13:30 397

原创 Java 理解对象可见性(public、private、protected、默认)

Java借助private、protected、public与默认修饰符提供了成员访问控制。    private:如果实体使用private修饰符声明,那么实体将只能由定义实体的类中的包含的代码访问    protected:实体只能由定义在如下范围内的代码访问                    1. 定义实体的类                    2.相同包中和定义类一样的类     ...

2018-07-02 15:29:00 30973 1

原创 Java final关键字

    1、final关键字可应用于类、方法或变量。一般来说,final关键字的使用限制了进一步的扩展或修改。    2、final类不能被继承。    3、final方法不可以在子类中被重写。                    注意:                    由于private和static方法不能在子类中被重写,因此他们总是隐式地为final。           将方法变为...

2018-07-02 15:06:01 151

原创 LeetCode 496. 下一个更大元素 I

给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: ...

2018-06-18 10:13:47 1599

原创 LeetCode 762. 二进制表示中质数个计算置位

给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)示例 1:输入: L = 6, R = 10输出: 4解释:6 -> 110 (2 个计算置位,2 是质数)7 -> 111 (3 个计算置位,3 是质数)9 -&...

2018-06-15 23:03:29 833

原创 LeetCode 747. 至少是其他数字两倍的最大数

在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例 1:输入: nums = [3, 6, 1, 0]输出: 1解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1. 示例 2:输入: nums = [1, 2, 3, 4]输出:...

2018-06-15 22:38:46 665 2

原创 LeetCode 485. 最大连续1的个数

随机一题给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。直接遍历计数即可: public int findMaxConsecutiveOnes(int[] nums) { ...

2018-06-15 22:14:13 388

原创 LeetCode 500. 键盘行

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。示例1:输入: ["Hello", "Alaska", "Dad", "Peace"]输出: ["Alaska", "Dad"]注意:你可以重复使用键盘上同一字符。你可以假设输入的字符串将只包含字母。将同一行的字符存入HashMap中,键为字符,值为行数(从上倒下分别为0,1,2),然后查找给定字符串是否

2018-06-15 22:03:05 390

空空如也

空空如也

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

TA关注的人

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