自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(213)
  • 资源 (2)
  • 收藏
  • 关注

原创 算法系列

leetcode题解4-寻找两个正序数组的中位数leetcode题解20-有效的括号leetcode题解14-最长公共前缀leetcode题解3-无重复字符的最长子串leetcode题解70-爬楼梯leetcode题解8-盛最多水的容器leetcode题解75-颜色分类leetcode题解50-Pow(x,n)leetcode题解26-删除数组的重复项leetcode题解167-两数之和 II - 输入有序数组leetcode题解54-螺旋矩阵leetcode题解53-最大子序和le

2021-02-08 15:41:25 1102 2

原创 JVM系列

1.Java内存结构(详细易懂)2.StringTable字符串常量池3.直接内存4.垃圾回收基础5.分代收集算法

2021-01-31 17:40:22 1614 6

原创 Redis数据库系列

1.NoSQL简介2.当下NoSQL应用场景简介3.NoSQL数据库的四大分类4.分布式数据库CAP原理5.redis入门概述及简介6.redis五大数据类型7.redis事务8.主从复制Master/slave

2021-01-26 16:43:22 1819 4

原创 Java并发编程系列

Java并发基础1.多线程基础2.线程安全基础Java并发编程1.Lock锁与生产者消费者问题2.八锁问题带你彻底理解对象锁和类锁3.集合类的线程安全问题

2021-01-26 16:37:53 1782 3

原创 MySQL数据库系列

MySQL基础系列1.SQL语句的分类与MySQL简单查询2.MySQL条件查询3.排序与分组函数4.group by和having5.连接查询6.子查询及limit分页7.MySQL数据库事务MySQL高级系列1.索引2.视图3,存储过程和函数4.触发器5.MySQL存储引擎6.SQL优化步骤7.索引的使用及优化8.SQL优化...

2021-01-26 16:33:54 1767 1

原创 leetcode题解41-缺失的第一个正数原来如此简单

问题描述给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1提示:0 <= nums.length <= 300-231 <= nums[i] <= 231 - 1解题思路:若有时间复杂度和空间负责度的要求,则解题相当的困难,如果不做要求的话,本题可以将

2021-02-25 12:21:05 206

原创 leetcode题解200-岛屿数量

问题描述给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:grid = [

2021-02-24 18:09:28 116

原创 离散数学-二元关系

序偶与有序n元组由两个对象x、y组成的序列称为有序n元组,也称之为序偶,记作<x,y>,称x,y为其中的第一元素和第二元素。序偶中的x,y有次序。如果<x,y>和<u,v>两个序偶,如果x=u且y=v,则两个序偶相等。有序三元组是一个序偶,其第一个元素也是一个序偶。<<a,b>,c>是有序三元素,简记作<a,b,c>,<a,<b,c>>则不是有序n元组是一个序偶,其第一个元素本身是一个有序n-1元组,记

2021-02-24 15:14:34 18

原创 二叉树的前中后序遍历的非递归方法

目录二叉树的前中后序遍历框架二叉树的前序遍历问题描述解题思路:实现代码二叉树的后序遍历问题描述解题思路实现代码二叉树的中序遍历问题描述解题思路:实现代码总结:相信大家对二叉树的前中后序遍历的递归方法非常熟悉,其实就是一个类似的框架if(p!=null){ //前序遍历时访问结点 if(p.left!=null){ //递归进入左子节点遍历 } //中序遍历时访问结点 if(p.right!=null){ //递归进入右子节点遍历 } //后序遍历时访问结点}可以看到,写前中后

2021-02-24 10:52:07 38

原创 剑指offer31-栈的压入、弹出序列

问题描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), pu

2021-02-23 18:43:31 1366 6

原创 剑指offer55-I-二叉树的深度

问题描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解题思路深度优先搜索(DFS)也可以理解为二叉树的递归遍历,我们将二叉树的深度作为参数,然后进行二叉树的递归遍历,当遍历到叶结点的时候,就将父节点的深度与当前最大深度进行比较,如果父节点的

2021-02-22 21:24:44 1690 3

原创 leetcode题解108-将有序数组转换为二叉排序树

问题描述给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:示例 2:输入:nums = [1,3]输出:[3,1]解释:[1,3] 和 [3,1] 都是高度平衡二叉搜

2021-02-22 15:14:54 1949 8

原创 离散数学-集合

1.集合1.1.集合的基本概念和表示方法集合的表示方法:1.列举法2.描述法:描述法:用句子(或谓词公式)描述元素属性。集合的性质:1.无序性,互异性1.2.集合间的关系包含关系:1.定义:A、B是集合,如果A中元素都是B中元素,则称B包含A,A包含于B,记作A⊆B包含关系的谓词公式定义:A⊆B⇔∀x(x∈A→x∈B)性质:自反性、传递性、反对称性相等关系1.定义:A、B是集合,如果它们的元素完全相同,则称A与B相等。记作A=B。相等关系的谓词公式定义:A=B⇔(A⊆B∧B⊆A)

2021-02-22 09:13:26 32

原创 leetcode190-颠倒二进制位

问题描述:颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2:输入:11111111111

2021-02-21 18:41:37 897 3

原创 离散数学知识点总结-谓词逻辑

1.谓词逻辑基本概念能够独立存在的具体或抽象的事物,称之为个体,也称之为客体。通常用小写英文字母a、b、c…表示例如:小张、小李、8,a,沈阳,社会主义都是客体。个体常项:具体的或特定的个体。常用a,b,c,…等小写字母表示个体变元:泛指某一个个体。常用x,y,z,…等小写字母表示谓词:用以刻化个体属性或者表达个体之间关系的词,即为谓词。谓词用大写字母表示。谓词也有常项与变项之分。表示具体性质与关系的谓词称为谓词常项。泛指某–性质或关系的谓词称为谓词变项。将不带个体变元的谓词称为0元谓词

2021-02-20 22:07:42 26

原创 离散数学知识点总结-命题逻辑

1.命题逻辑命题命题是表达判断的陈述句。判断一句话是命题有两个关键:陈述句和有且仅有一个真值我正在说谎是悖论逻辑连接词P→Q的真值只有当P为true,Q为false的时候,P→Q才为false.而在其它情况下,都为true。注意:善意规定P是天气好,Q是去公园只要天气好,我就去公园=====>P→Q只有天气好,我就去公园=====>Q→P用->表达必须前件是后件的充分条件,即若前件成立,后件一定成立。第二个天气好, 不一定去公园,而去公园一定能说明天气好。命题符号化

2021-02-19 22:35:13 61

原创 Java基础-通过反射获取类的信息

在前面一节我们介绍了反射机制的详细内容反射机制,本节我们将介绍通过反射获取类的属性、方法等信息。1.获取Fieldpublic class ReflectTest03 { public static void main(String[] args) throws Exception{ //1.获取整个类 Class studentClass=Class.forName("cn.yujie.bean.Student"); String classNa

2021-02-19 21:06:52 66

原创 Java基础-反射机制

目录1.反射机制概述2.获取class的三种方式2.1.Class.forName()方式2.2.obj.getClass()方式2.3..class方式3.通过反射实例化对象4.通过读属性文件实例化对象5.只让静态代码快执行可以使用forName6.以流的形式直接返回7.资源绑定器8.类加载器9.双亲委派机制10.总结1.反射机制概述反射机制有什么用通过java语言中的反射机制可以操作字节码文件。优点类似于黑客。(可以读和修改字节码文件。)通过反射机制可以操作代码片段。(class文件。)反射

2021-02-18 22:27:48 190 2

原创 leetcode题解172-阶乘后的零

问题描述给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。解题思路:方法1:首先,很容易想到,先求得n!,然后再计算尾数中0的个数,但时间复杂度太高方法2:可以发现,如果尾数中有x个0,那么在n!的算式中一定存在x个25,所以只要能够得到 n ! 的算式中分解出的25的个数即可,

2021-02-17 14:44:36 1095 3

原创 leetcode23-合并K个升序链表

1.问题描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists

2021-02-17 12:43:29 2121 3

原创 Java基础系列

语法基础final关键字IO流序列化和反序列化Lambda表达式集合框架各种集合类的特性简介Collection集合接口(List及Set)HashMap集合TreeSet与Java自定义类型的排序集合类的线程安全问题ConcurrentHashMap深入理解HashMap+ConcurrrentHashMap扩容的原理设计模式设计模式概述UML类图软件设计原则单例模式工厂模式代理模式...

2021-02-16 22:41:21 269 1

原创 Java基础-final关键字

1.final修饰的类无法继承final关键字1.final是java语言的一个关键字2.final表示最终的,不可变的。3.final可以修饰变量以及方法、还有类4.final修饰的变量?5.final修饰的方法?final修饰的方法无法覆盖,无法重写。6.final修饰的类?final修饰的类无法继承。final class A{}//B类继承A类,相当于对A类的功能进行扩展,如果你不希望别人对A类进行扩展,你可以给A类骄傲final关键字,这样的话A类就无法继承了。class

2021-02-16 22:26:58 1366 7

原创 剑指Offer09-用两个栈实现队列

问题描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTai

2021-02-15 18:13:44 635 4

原创 剑指 Offer59-I-滑动窗口的最大值

问题描述给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1

2021-02-15 17:31:02 1374 2

原创 剑指Offer30-包含min函数的栈(单调栈)

问题描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0

2021-02-15 15:41:28 494

原创 Java双端队列Deque及其应用

1.Deque的概念双向队列:支持在首尾插入和删除元素的线性集合。它具有既具有FIFO(先进先出)特点又具有LIFO(后进先出)的特点,即是队列又是栈;java官方文档推荐用deque实现栈(stack)。在Java中,Queue的实现类一般都是用LinkedList。特点:1.插入、删除、获取操作支持两种形式:快速失败和返回null或true/false2.既具有FIFO特点又具有LIFO特点,即是队列又是栈3.不推荐插入null元素,null作为特定返回值表示队列为空4.未定义基于元

2021-02-15 13:19:31 1015 7

原创 leetcode题解56-合并区间

问题描述以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:intervals = [[1,4],

2021-02-14 20:40:48 2949 5

原创 leetcode题解15-三数之和(双指针经典)

问题描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums.length <= 3000-

2021-02-14 17:31:45 1493

原创 剑指offer48-最长不含重复字符的子字符串(双指针经典)

问题描述请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是

2021-02-13 21:54:05 3113 4

原创 HTTP协议与HTTPS协议详解(含常见面试题)

目录1.HTTP协议1.1HTTP协议是什么1.2 HTTP协议工作过程1.3 HTTP请求方法1.4.HTTP请求报文和应答报文1.5 HTTP状态码2.HTTPS协议2.1.什么是https协议2.2.加密模型2.3.数字证书2.4.HTTPS工作过程3.常见面试题总结3.1.在浏览器中输入url地址 ->> 显示主页的过程(面试常客)3.2.HTTP长连接,短连接3.3.HTTP是不保存状态的协议,如何保存用户状态?3.4.HTTP 1.0和HTTP 1.1的主要区别是什么?3.5.HTT

2021-02-13 19:50:47 2518 3

原创 leetcode题解434-字符串中的单词数(双指针经典)

1.问题描述统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: "Hello, my name is John"输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。2.解题思路统计单词次数可以使用双指针法大雪菜老师给出的模板如下for (int i = 0, j = 0; i < n; i ++ ){ while (j < i &&amp

2021-02-12 22:14:32 1824 2

原创 LRU算法及实现

1.LRU算法是什么?LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法选择最近最久未使用的数据予以淘汰。除此之外,在redis缓存中也是用到了这种算法。redis有读写两个操作,然后缓存是有空间限制的,大小会有一定上线的,2.算法来源来自https://leetcode-cn.com/problems/lru-cache/运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(

2021-02-11 21:44:56 1146 5

原创 leetcode题解34-在排序数组中查找元素的第一个和最后一个位置

问题描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums

2021-02-11 18:33:47 1848 2

原创 剑指offer25-合并两个排序的链表

问题描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000解题思路本题与普通数组的归并十分相似,根据题目描述,两个链表l1,l2是递增的,因此很容易想到使用双指针l1和l2来遍历两个链表,根据双指针所指向的l1.val和l2.val的大小关系确定添加结点的顺序,当l1.val更小

2021-02-11 10:40:52 2652 2

原创 Java设计模式-代理模式

目录1.概述2.结构3 静态代理4 JDK动态代理5 CGLIB动态代理6 三种代理的对比7 优缺点8 使用场景1.概述由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。2.结构代理(Proxy)模式分为三种角色:抽

2021-02-10 10:22:23 1224 3

原创 从尾到头打印链表

本题来自剑指 Offer 06. 从尾到头打印链表问题描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]解题思路:方式1:先将单链表进行反转操作,然后再遍历链表即可,这样做的问题是会破坏原来的单链表结构,不建议。关于链表的反转操作可以参看反转链表方式2:可以利用栈这个数据结构,将各个结点压入到栈中,然后利用栈的后进先出的特点,实现了逆序打印的效果。关于Java中栈Stack类的使用和操作可以参看Jav

2021-02-09 22:44:04 1740

原创 leetcode题解206-反转链表

问题描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路(头插法):我们要想实现的反转并不仅仅是数据的移位,而是涉及到结点的移动,所以我们无法使用数组。我们都知道,头插法得到的链表序列与插入的顺序刚好相反,因此我们可以采取这样的办法来解决这个问题。头插法即每次将插入的结点插入到链表的第一个位置,比如我们插入1,2,3,4.那么第1次插入1,第二次将2插入

2021-02-09 21:42:15 2148 2

原创 剑指offer22-链表中倒数第k个结点

本题来自:剑指 Offer 22. 链表中倒数第k个节点1.问题描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 2 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.2.题解:2.1.遍历链表法解题思路:遍历一遍链表,可

2021-02-09 20:49:50 973

原创 单链表算法设计(含大厂面试题)

目录1.单链表介绍与内存布局2.单链表的应用示例2.1 单链表的创建和遍历的分析实现2.2 单链表按照顺序插入信息2.3 单链表结点的修改2.4 单链表结点的修改3.大厂面试题3.1.查找单链表中的倒数第k个结点(新浪面试题)3.2.单链表的反转(腾讯面试题)3.3.从尾到头打印单链表(百度面试题)1.单链表介绍与内存布局链表是有序的列表,但是它在内存中是存储如下:小结:1)链表是以节点的方式来存储,是链式存储2)每个节点包含data域,next域: 指向下一个节点.3)如图:发现链表的各个节

2021-02-09 19:58:06 878

原创 Java设计模式-工厂模式

1.概述需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下:在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重(CoffeeStore对AmericanCoffr),假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果

2021-02-09 12:38:45 1562 4

SQL - 100w条insert脚本 - 顺序乱序.zip

100w条insert脚本,包括按照主键顺序和不按照主键顺序的

2021-01-24

软件项目管理试题及答案(精简版)期末试题.doc

软件项目管理精装版课后习题,期末复习题,总共40多页,兄弟们需要的可以关注我后在下面留言即可。

2019-06-05

空空如也

空空如也

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

TA关注的人 TA的粉丝

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