自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(553)
  • 收藏
  • 关注

原创 类加载过程

文章目录加载验证准备解析初始化类卸载类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。如图所示。加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不

2020-09-19 21:00:20 94

原创 MySQL刷题

文章目录增删改查查找增加删除修改增删改查查找 select 目标表的列名或列表达式序列 from 基本表名和(或)视图序列 [where 行条件表达式] [group by 列名序列][having 组条件表达式] [order by 列名[asc | desc]]若ORDER BY子句后为指定ASC或DESC,默认使用ASC写法顺序:select–from–where–group by–having–order by执行顺序:fr

2020-09-12 14:41:54 57

原创 Java刷题总结

文章目录Java语法finally中执行顺序与return的关系Java中面向对象1、一些点2、实现接口与继承类重写方法的一些规则3、接口与抽象类的区别4、继承类与实现接口的区别5、类名的修饰符多线程Thread类的方法JVM1、内存回收的时机Java语法finally中执行顺序与return的关系1、finally块一定会执行,无论是否try…catch。2、finally前有return(finally中没有return语句),会先执行return语句,并保存下来,再执行finally块,最后

2020-09-12 09:58:57 82

原创 索引底层数据结构(查找)的小结 B树,B+树

文章目录索引的本质采用Hash精确查找采用二叉排序树作为索引的缺点采用红黑树作为索引的缺点B树的结构B+树结构MyISAM存储引擎索引实现InnoDB存储引擎实现B+树索引主键索引/聚集索引非聚集索引为什么InnoDB表必须有主键,并且推荐使用整型的自增主键为什么推荐使用整型的自增主键?联合索引MySqlB+树三行可以存放多少数据索引的本质采用Hash精确查找使用hash可以精确的查找,但是存在问题 select * from t where col>6对范围查找支持比较差)采用二叉排

2020-09-07 23:28:38 74

原创 堆排序

堆一顆完全二叉樹所有父節點大於子節點用数组表示完全二叉树用数组表示完全二叉树的好处是从任意一个节点出发,可以找到他的父亲节点和子节点对于一个节点i,它的父节点为(i-1)/2,它的左子节点为2*i+1,它的右子节点为2*i+2如何對堆進行調整(hepify)這是一個局部範圍的調整,對與數組中的第i個元素使得其找到對應的位置对于i节点找到其左右两个字节点,若其小于两个左右子节点则将其与左右两个子节点进行交换,之后不端向下调整即可完成heapify/**

2020-09-05 23:05:39 35

原创 笔试刷题分析

秋招的笔试的客观题部分做的很差,需要对其进行一定的整理记忆。下面这个就是对客观题的刷题的总结以牛客网为题库·计算机网络数据库操作系统算法Linux

2020-09-05 21:40:00 40

原创 LeetCode多线程的算法(面试常考的)

面试中手写的与线程有关的一些算法单例的各种模式生产者消费者模式死锁以及如何解决多线程环境下的加与减法交替打印等场景题2020/9/5开始整理 争取2020/9/10整理完

2020-09-05 21:31:05 64

原创 字符串的求和

注意进位以及若两个字符串的长度不相等如何进行简化运算 // 计算两个字符串的和 public String addStrings(String num1,String num2){ StringBuilder sb = new StringBuilder(); int carry = 0; for(int i=num1.length()-1,j=num2.length()-1;i>=0||j>=0;i--,j--){ .

2020-09-05 15:59:23 153

原创 LeetCode38外观数列

外观数列对字符串进行统计,进行遍历,若发现是相等的字符则将相等字符的个数加1package com.zj.IString;import com.zj.CLinkedList.Problem2;/** * Author jzhou7 * Date 2020/8/18 * 外观数列 */public class Problem38 { public String countAndSay(int n) { if(n==1) return "1";

2020-09-05 15:57:16 46

原创 LeetCode实现LRU

题目要求借助JDK的LinkedHashMap参考一// 在插入一个新元素之后,如果是按插入顺序排序,即调用newNode()中的linkNodeLast()完成// 如果是按照读取顺序排序,即调用afterNodeAccess()完成// 那么这个方法是干嘛的呢,这个就是著名的 LRU 算法啦// 在插入完成之后,需要回调函数判断是否需要移除某些元素!// LinkedHashMap 函数部分源码/** * 插入新节点才会触发该方法,因为只有插入新节点才需要内存 * 根据 Has

2020-08-28 00:33:23 51

原创 LeetCode58 最后一个单词的长度

根据字符串中的空格,区分单词(很常见) // 从后往前 public int lengthOfLastWord1(String s) { int end = s.length() - 1; while(end >= 0 && s.charAt(end) == ' ') end--; if(end < 0) return 0; int start = end; while(st..

2020-08-27 23:55:01 34

原创 LeetCode字符串使用栈

文章目录LeetCode20 有效的括号LeetCode71 简化路径使用栈的情况一般是后面的元素会对前面的元素造成影响,因此将前面的元素加入栈中,后面的元素加入的时候和前面的元素进行比对,若发现某种特性则可以将栈中的元素进行弹出LeetCode20 有效的括号 /** * 有效的括号 * 使用栈 遍历整个字符串进行比较 * @param s * @return */ public boolean isValid(String

2020-08-27 23:53:09 90

原创 LeetCode之字符串与递归与回溯

文章目录LeetCode17 电话号码的组合LeetCode139单词的拆分LeetCod140 单词拆分IILeetCode22 括号生成LeetCode784 字符串大小写的全排列LeetCode17 电话号码的组合电话号码组合>>>>这道题和数组的组合很像,采用递归回溯处理即可,关键是如何对数据进行前置的处理。 public List<String> letterCombinations(String digits) { i

2020-08-27 23:51:57 368

原创 LeetCode49字母的异位词分组

这题比较巧妙,将字符串中的每个字符赋以hash质数对字符串中的每个值可以乘以对应的质数,若发现最终的乘积结果相等,则字符串为对应的易伟慈分组,利用到hashMap的变相处理方法/** * @Author zhoujian * @Date 2020/8/20 8:55 字母的异位词分组 自定义字符串的哈希规则,使用质数作为乘法因子(Java)https://leetcode-cn.com/problems/group-anagrams/solution/zi-d..

2020-08-27 23:50:05 54

原创 LeetCode回文串

文章目录思路LeetCode125 验证回文串LeetCode680 验证回文串(最多删除一个字符)思路回文串的常见三种做法:双指针,栈和reverseLeetCode125 验证回文串验证回文串采用双指针对字符串进行双向遍历,若发现当前字符串不符合要求则跳过 /** * 验证回文串 * @param s * @return */ public boolean isPalindrome(String s) { s = s

2020-08-27 22:22:09 28

原创 LeetCode使用动态规划解决字符串的问题

文章目录LeetCode5 最长回文子串LeetCode72编辑距离(两个字符串)LeetCode583 两个字符串的删除操作LeetCode139 单词拆分LeetCode91 解码方法LeetCode5 最长回文子串最长回文子串参考内容本题使用的方法是动态规划,这里需要找的是最长回文子串,首先第一步,我们需要定义dp数组的含义,定义二维布尔数组dp[i][j]dp[i][j]数组表示:字符串s[i...j]是否为回文子串,如果是,dp[i][j]=true,如果不是dp[i][j]=fa

2020-08-27 22:21:57 75

原创 LeetCode中翻转字符串的总结

文章目录方法LeetCode344翻转字符串LeetCode541 翻转字符串II(2k为一组)LeetCode557 翻转字符串中的单词LeetCode151 翻转字符串里的单词(单词不需要翻转)LeetCode345 翻转字符串中的元音字母方法将字符串转换为字符数组一般可以采用双指针对数组进行遍历若是对整个字符串进行翻转,则需要定义整个字符串的首尾指针若是对字符串中的一个个单词,则指针需要对字符穿中的一个个单词进行,(关键是如何判别单词,根据空格对字符串中的一个个单词进行区分)

2020-08-26 09:38:41 64

原创 LeetCode657 机器人能否返回原点

LeetCode机器人能否返回原点对字符串中字符的个数进行统计,UD为一组,RL为一组,若最终统计的结果为0则可以回到原点package com.zj.IString;/** * @Author Zhou jian * @Date 2020 ${month} 2020/8/25 0025 20:07 */public class Problem657 { /** * 统计机器人移动方位的次数 * @param moves * @return

2020-08-26 09:09:12 62

原创 LeetCode551学生出勤记录

学生出勤记录I遍历字符串,对某种特性进行统计,若A则直接进行加1,若是出现L则在package com.zj.IString;/** * @Author zhoujian * @Date 2020/8/24 23:15 */public class Problem551 { /** *使用指针进行遍历即可 * @param s * @return */ public boolean checkRecord(String s

2020-08-26 09:06:24 44

原创 LeetCode521 最长特殊序列I

最长特殊工艺序列I /** * 最长特殊序列 * @param a * @param b * @return */ public int findLUSlength(String a, String b) { if(a.equals(b)) return -1; return a.length() > b.length() ? a.length() : b.length();

2020-08-26 09:02:01 45

原创 LeetCode520 检测大写字母是否出现的位置合法

检测大写字母使用map对字符串中的每个字符出现的次数进行统计,分别按照大写字母与小写字母进行统计,最后对大写字母与小写字母的个数进行分析(按照题目的要求判断是否符合)/** * 检测大写字母 * @param word * @return */ public boolean detectCapitalUse(String word) { char[] cs = word.toCharArray(); int uppe

2020-08-26 08:59:12 55

原创 LeetCode459 重复的子字符串

重复的子字符串采用暴力的解法,对字符串中截取子字符串subStrung(0,i),对这个字符串重读i,i看看是否能够成package com.zj.IString;/** * @Author zhoujian * @Date 2020/8/24 22:12 重复的子字符串给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 */public class Problem459 { /

2020-08-26 08:54:37 45

原创 LeetCode443 压缩字符串

压缩字符串双指针,需要left和right对字符串中的连续单词进行遍历,则right-left为连续重复的次数,同时因为在元数组上进行修改,所以需要记录一个对数组中进行修改的尾指针位置,在修改的时候不断将新的值赋值给尾指针之后的位置package com.zj.IString;/** * @Author zhoujian * @Date 2020/8/24 21:44 * 压缩字符串 */public class Problem433 { /** * 压缩字符串

2020-08-26 08:49:42 60

原创 LeetCode434 字符串中单词数

字符串中单词数双指针,这里对字符串中每个单词的判定很简单就是以空格为界限,因此这里只需要根据空格来区分单词即可。package com.zj.IString;/** * @Author zhoujian * @Date 2020/8/24 21:34 */public class Problem434 { /** * 字符串中的单词书 * @param s * @return */ public int countSegmen

2020-08-26 08:43:59 47

原创 LeetCode387 字符串中的第一个唯一字符

字符串中的第一个唯一字符对于字符串中字符的次数问题,可以采用hashMap对每个字符出现的次数进行统计,先遍历以下字符串,然后再取出字符个数为1的字符package com.zj.IString;import java.util.*;/** * @Author zhoujian * @Date 2020/8/24 21:00 */public class Problem387 { // 使用字典进行遍历存储 public int firstUniqChar(

2020-08-26 08:40:30 69

原创 LeetCode383赎金信

赎金信暴力的方法,对need字符串中的每个字符出现的次数进行统计,然后在maganzie给出的字符串中的字符进行统计(采用hashMap)进行统计hash方法:对英文26个字母,每个字母计算其hash值,先对need计算对应的hash值的和,然后再对maganize计算其hash值,最终求取其差是否为0暴力的方法 // 使用缓存 public boolean canConstruct(String ransomNote, String magazine) { i

2020-08-26 08:36:43 32

原创 微服务架构的分布式如何保证事件---如何保持服务之间的数据一致性

1、CAP定理2、两阶段提交协议(2PC)保证事实一致性,可以采用2PC3、最终一致性的解决方案最终一致性的解决方案:事件驱动的架构

2020-08-20 17:08:15 34

原创 LeetCode字符串刷题分析与总结

2020/8/16 15:00 开始争取刷30-40道预计2020/8/26 完成

2020-08-16 15:11:37 109

原创 LeetCode之滑动窗口(对于子串尤其适用)

2020/8/12

2020-08-12 10:57:44 60

原创 LeetCode312 戳气球

回溯思想很显然涉及求最值,没有任何奇技淫巧,一定是穷举所有可能的结果,然后对比得出最值所以说,只要遇到求最值的问题,首先要思考的就是:如何穷举所有可能的结果穷举主要有两种算法:就是回溯算法和动态规划,前者就是暴力穷举,而后者是根据状态转移方程推导状态如何将我们的扎气球问题转化为回溯算法呢?这个应该不难想到的,我们其实就是想穷举戳气球的顺序,不同的戳气球顺序可能得到不同的分数,我们需要把所有可能的分数中最高的找出来吧那么,这不就是一个[全排列]问题吗?int res = Integer.MIN.

2020-08-11 10:19:31 37

原创 子序列的问题

文章目录两种模板1 使用一维的dp数组(这个简单一点)2、使用一个二维的dp数组2.1、涉及两个字符串/数组时(比如最长公共子序列)2.2、只涉及一个字符串/数组时LeetCode120 三角形最小路径和LeetCode516最长回文子序列两种模板1 使用一维的dp数组(这个简单一点)int n = array.length;int[] dp = new int[n];for (int i = 1; i < n; i++) { for (int j = 0; j < i;

2020-08-09 21:19:31 86

原创 字符串的动态规划问题

参考内容文章目录处理两个字符串的动态规划问题LeetCode72 编辑距离LeetCode1143 两个字符串最长公共子序列处理两个字符串的动态规划问题一般来说,处理字符串的动态规划问题,可以借鉴参考下面这张图:第一步,一定要明确 dp 数组的含义。对于两个字符串的动态规划问题,套路是通用的。比如说对于字符串 s1 和 s2,一般来说都要构造一个这样的 DP table:LeetCode72 编辑距离编辑距离>>>参考题解>>>解决两个字符串的动态规划

2020-08-09 18:00:49 60

原创 动态规划套路

首先,动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用的比较多既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中找最值呗。动态规划就这么简单,就是穷举就完事了?我看到的动态规划问题都很难啊?首先,动态规划的穷举有点特别,因为这类问题存在重叠子问题,如果暴力穷举的话效率会很地下,所以需要[备忘录]或者[dp table]来优化穷举过程,避免不必要的计算。而且,动态规划一定会具备[最优子

2020-08-09 15:59:09 105

原创 LeetCode股票问题大全解

LeetCode上有6道股票问题,他们其实就是数组中是否存在数的差值最大,加上各种限制文章目录LeetCode121 买股票的最佳时机LeetCode122 买卖股票的最佳时机IILeetCode123 买卖股票的最佳时机IIILeeetCode188 购买股票的最佳时机IVLeetCode309购买股票含龙东时间LeetCode714买卖股票含手续费数组中两个数的差值最大数组中找出2对数使得其对应的差值的和最大数组中找出k对数使得其对应的差值的和最大数组中找出不限制对数使其对应的差值的和.

2020-08-08 22:05:11 61

原创 动态规划之背包问题

文章目录背包问题思路第一步明确状态:第二部明确dp数组定义:第三部:思考状态转移的逻辑第四部:思考baseCase第五步:整合代码:01背包问题基础版本LeetCode416 分割等和子集LeetCode322 凑硬币(从数组中挑选最小的元素凑成某个数)LeetCode518 从数组凑某个数的可能个数在动态规划中右一类题目,是基于背包问题进行衍生出来的,其核心就是 给顶一个数组 nums[i]根据某种要求从nums[i]种选择出某些数据,满足某种要求更细分是一堆集合中的元素是否可以重复取,那么在网上有

2020-08-08 14:44:39 113

原创 Chapter03使用SpringCloud配置服务器控制配置

为了避免这种情况,开发人员将配置信息与应用程序代码完全分离。这样就可以很容易的在进行重新编译的情况下对配置进行更改,但这样坐会引入复杂性,因为现在存在另一个需要与应用程序一起管理和部署的制品基于云的微服务开发强调以下几点应用程序的配置与正在部署的实际代码完全分离...

2020-08-02 22:47:37 26

原创 Chapter01微服务介绍

微服务架构具有以下特征应用程序逻辑分解为具有明确定义了职责范围的细粒度组件,这些组件相互协调提供解决方案每个组件都有一个小的职责领域,并且完全独立部署。微服务应该对业务领域的单个部分负责。此外,一个微服务应该可以跨多个应用程序服用微服务通信基于一些剧本的原则(注意是原则不是标准),并采用HTTP和JSON这样的轻量级通信协议,在服务消费者和服务提供者之间进行数据交换服务的底层采用什么技术实现并没有什么影响,因为应用程序始终使用技术中立的协议(JSON是最常见的)进行通信。这意味着构建在微服务上的应

2020-08-01 19:39:00 32

原创 LeetCode226 翻转二叉树

翻转二叉树深度优先搜索(DFS) /** * 翻转二叉树 * @param root * @return * 后序遍历---从下向上 */ public TreeNode invertTree(TreeNode root) { if(root==null) return null; //翻转左子树 invertTree(root.left); /

2020-08-01 12:44:18 29

原创 二叉排序树小结

二叉排序树特点二叉排序树解题思路二叉排序树题型

2020-08-01 12:08:24 63

原创 二叉树递归之几个相似问题的分析--在递归树的时候统计树的某种特征

题型归纳总结在做树的问题时,发现一类问题很相似,他们都是可以使用dfs的方法,对树进行递归遍历,并计算某种树的统计值(也就是树的某种特征值,)dfs递归左右子树得到左子树和右子树的某种计算值(通常是深度或者其他需要符合题意的计算结果)统计的特征值往往是基于左子树和右子树的计算值,综合二者进行计算,在递归的过程中往往需要更新一个全局变量来满足题目要求的求最x值难点是:往往被递归绕进去,在做树的递归的时候,我们可以将树简单的看成根,左子树和右子树,分析出递归要求的是什么?递归的终止条件是什么?二叉

2020-07-28 20:23:35 42

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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