- 博客(62)
- 资源 (1)
- 收藏
- 关注

原创 深入理解java虚拟机
2.2 运行时数据区域 共包含:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存。 2.2.1 程序计数器 1.字节码解释器工作时就是通过改变这个计数器的值来选取下一条执行的字节码指令,是程序控制流的指示器。 2.Java虚拟机多线程通过线程切换、分配处理器执行时间的方式实现,一个确定的时刻一个处理器只会执行一条线程中的指令,因此每个线程各自拥有自己的程序计数器 3.如果执行Java方法则计数器记录的是正在执行的虚拟机字节码指令的地址,如果执行的是native方法,则计数
2021-01-17 18:24:18
638
原创 leetcode 260只出现一次的数字3(字节)
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 示例 1: 输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。 示例 2: 输入:nums = [-1,0] 输出:[-1,0] 示例 3: 输入:nums = [0,1] 输出:[1,0] 提示: 2 <= nums.length &
2021-05-08 10:58:19
143
原创 剑指offer 24 反转链表,递归非递归
//递归实现 public class Solution { public ListNode ReverseList(ListNode head) { if(head == null) return head; ListNode res = reverse(head); return res; } public ListNode reverse(ListNode head){ if(head.next == null)
2021-04-20 10:08:05
155
原创 剑指offer 49 丑数
我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/chou-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 class So
2021-04-15 18:49:24
163
原创 leetcode 198打家劫舍啦啦啦
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 示例 2: 输入:[2,7,9,3,
2021-04-15 15:16:12
121
原创 leetcode 5最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2: 输入:s = “cbbd” 输出:“bb” 示例 3: 输入:s = “a” 输出:“a” 示例 4: 输入:s = “ac” 输出:“a” 提示: 1 <= s.length <= 1000 s 仅由数字和英文字母(大写和/或小写)组成 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/probl
2021-04-15 10:34:52
128
原创 线程池Java
一、基础概念 不加控制和管理线程,对性能反尔会产生不利影响 可能产生创建和销毁线程所占用的时间大于该线程真实工作所消耗的时间 避免系统频繁创建和销毁线程,我们可以让创建的线程复用。在线程池中,总有那么几个活跃的线程。当你需要使用线程时,可以从池子里随便拿一个空闲线程,当完成工作时,并不着急关闭线程,而是将这个线程退回线程池,方便其他人使用。 二、JDK对线程池的支持 ThreadPoolExecutor表示一个线程池。Executors类则扮演线程池工厂的角色,通过Executors可以取得一个特定功能
2021-04-15 10:27:58
85
原创 剑指offer题型分类整理
一、树 07 重建二叉树 26 树的子结构 27 二叉树的镜像 28 对称的二叉树 32 - 1从上到下打印二叉树1 32 - 2从上到下打印二叉树2 32 - 3从上到下打印二叉树3 33 二叉搜索树的后序遍历序列 34 二叉树中和为某一值的路径 36 二叉搜索树与双向链表 37 序列化二叉树 54 二叉搜索树的第k大节点 55 - 1二叉树的深度 55 - 2平衡二叉树 68 - 1二叉搜索树的最近公共祖先 68 - 2二叉树的最近公共祖先 12 矩阵中的路径(DFS/BFS) 13 机器人的运动范围
2021-04-13 11:48:25
302
原创 索引详解(高性能Mysql)
一、索引基础 Mysql索引可以包含一个或多个列的值,如果索引包含多个列,那么列的顺序很重要,因为Mysql只能高效的使用索引的最左前缀原则 无论是多么复杂的ORM工具,在精妙和复杂的索引面前都是“浮云” 索引的区别 B树索引 MyISAM使用前缀压缩技术使得索引更小,但InnoDB则按照原数据格式进行存储。MyISAM索引通过数据的物理位置引用被索引的行,而InnoDB则根据主键引用被索引的行 B树特点:所有值都是按照顺序存储的,并且每一个叶子页到根的距离相同 根节点的槽中存放了指向子节点的指针,通
2021-04-01 16:27:05
173
原创 经典例题-最长上升子序列
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 示例 2: 输入:nums = [0,1,0,3,2,3] 输出:4 示例 3: 输入:nums = [7,7,7,7,7,7,7]
2021-04-01 10:55:09
275
原创 安装部署JAVA、python在windows server 2008r2系统
一、整理安装需要文件 JDK运行安装包 Python安装环境包(包括所用到的库文件) 不一定要指定版本 Mysql安装环境包 不一定要指定版本 winserver2008r2系统相关补丁 第二行exe程序为,windows sp1升级包 6. 谷歌浏览器安装包 office2007需要安装插件,2010以上不需要 二、安装过程 1.升级安装sp1 安装包,如果已升级过就不用升级 下载地址:(http://www.ysiis.com/info/411) 2.安装VC_redist.
2021-03-23 15:38:36
1012
原创 剑指offer 58 - 2左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = “abcdefg”, k = 2 输出: “cdefgab” 示例 2: 输入: s = “lrloseumgh”, k = 6 输出: “umghlrlose” 限制: 1 <= k < s.length <= 10000 class Solution {
2021-03-17 17:09:23
113
原创 剑指Offer 58 - 1翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。 示例 1: 输入: “the sky is blue” 输出: “blue is sky the” 示例 2: 输入: " hello world! " 输出: “world! hello” 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: “a good
2021-03-17 16:40:32
95
原创 剑指Offer 68- 2 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出: 3 解释: 节点 5 和节点 1
2021-03-17 09:47:16
83
原创 剑指Offer 68 - 1二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] 示例 1: 输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8 输出: 6 解释: 节点 2 和节
2021-03-16 19:16:15
179
原创 剑指 Offer 55 - 2 平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / 9 20 / 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / 4 4 返回 false 。 限制: 0 <= 树的结点个数 <= 10000 /**
2021-03-16 12:58:36
112
原创 剑指 Offer 55 - 1二叉树的深度
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回它的最大深度 3 。 提示: 节点总数 <= 10000 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNod
2021-03-16 12:28:11
128
原创 剑指 offer 54二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / 1 4 2 输出: 4 示例 2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / 3 6 / 2 4 / 1 输出: 4 限制: 1 ≤ k ≤ 二叉搜索树元素个数3 /** * Definition for a binary tree node. * public class TreeNode { *
2021-03-13 21:39:28
80
原创 剑指offer 27 二叉树的镜像
请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / 2 7 / \ / 1 3 6 9 镜像输出: 4 / 7 2 / \ / 9 6 3 1 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 限制: 0 <= 节点个数 <= 1000 /** * Definition for a binary tree node. * public class Tree
2021-03-13 13:20:18
95
原创 剑指offer 26 树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3 / \ 4 5 / 1 2 给定的树 B: 4 / 1 返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。 示例 1: 输入:A = [1,2,3], B = [3,1] 输出:false 示例 2: 输入:A = [3,4,5,1,2], B = [4,1] 输出:true 限制: 0 <= 节点个数
2021-03-13 12:06:22
90
原创 剑指offer 47(动态规划)礼物的最大价值
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 示例 1: 输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 12 解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物 提示: 0 < grid.length <= 200 0 < grid[0].length &l
2021-03-12 21:46:50
95
原创 剑指 offer 42(动态规划)连续数组的最大值
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 提示: 1 <= arr.length <= 10^5 -100 <= arr[i] <= 100 class Solution { public int maxSubArray(int[] nums) {
2021-03-12 21:03:12
189
原创 剑指offer 17 打印从1到最大的n位数
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出
2021-03-11 22:01:59
59
原创 剑指offer 13 机器人的运动范围
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子? 示例 1: 输入:m = 2, n = 3, k = 1 输出:3 示例 2: 输入:m = 3, n
2021-03-11 16:30:40
75
原创 剑指offer 29 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 限制: 0 <= matrix.length <= 100 0 <= matrix[i].length
2021-03-11 00:28:02
56
原创 剑指offer 25 合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非
2021-03-10 20:14:08
60
原创 剑指offer 07重建二叉树(根据前序、中序遍历)草真tm难
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { //这题是我遇到解答最难的一道题,我一度刷题想要放弃,今天下定决心搞出来 //整个算法思想:前序遍历[根节点|左
2021-03-10 19:21:13
74
原创 136 只出现一次的数字
这个阿里面试官问的题,被提示了很多次,无奈还是只有笨办法,解决方案实在是太牛逼了,同类型一共三道,全做 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/single-numb
2021-03-04 17:36:56
134
1
原创 剑指offer 15二进制中1的个数
请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。 示例 2: 输入:00000000000000000000000010000000 输出:1 解释:输入的二进制串 0000
2021-03-03 11:04:19
67
原创 剑指offer 39数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof 著作权归领扣网络所有
2021-03-03 11:02:33
66
原创 剑指offer 06 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public int[]
2021-02-26 22:22:29
76
原创 剑指Offer 05替换空格
class Solution { public String replaceSpace(String s) { //自己思路 // if(s == null) return ""; // String b = ""; // String res = ""; // for(int i = 0; i < s.length(); i++){ // char a = s.charAt(i);
2021-02-25 23:09:26
67
原创 jvm书中的OSGi简单介绍
在OSGi中Bundle之间的依赖关系从传统的上层模块依赖底层模块转变为平级模块之间的依赖。 OSGi类加载器之间只有规则,没有固定的委派关系,各个BUndle都是平级关系 例如:Bundle A:声明发布了packsgeA,依赖java.*; BundleB:声明依赖了packageA和packageC,同时也依赖了java.*的包 BundleC:声明发布了packageC,依赖了packageA 用户对程序动态性追求导致,代码热替换、模块热部署等。OSGI实现模块化热部署的关键是它自定义的类加载..
2021-02-24 19:39:23
230
原创 类加载器,双亲委派模型,四次模型破坏
类加载器 1.通过一个类的全限定名来获取描述该类的二进制字节流——类加载器 2.对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。比较两个类是否相等:必须由同一个类加载器加载。否则就是两个独立的类。 双亲委派模型 两类不同的类加载器:一种是启动类加载器——用C++语言实现、另外一种是其他所有的类加载器——用Java实现,独立于虚拟机外部,并且全部继承来自抽象类java.lang.ClassLoader 启动类加载器、扩
2021-02-24 19:12:12
125
原创 剑指offer 63 (动态规划,传统发)股票的最大值
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 示例 2: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 限制: 0 <= 数组长度 <=
2021-02-13 19:04:14
93
原创 leetcode 524. 通过删除字母匹配到字典里最长单词 2021.2.1
给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。 示例 1: 输入: s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”] 输出: “apple” 示例 2: 输入: s = “abpcplea”, d = [“a”,“b”,“c”] 输出: “a” 说明: 所有输入的字符串只包含小写字母。 字典的大小不会超过 10
2021-02-01 22:51:08
137
原创 (leetcode 剑指 Offer 48) 最长不含重复字符的子字符串-2021.1.29
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。 提
2021-01-29 20:53:54
71
原创 (leetcode剑指 offer 18)删除链表的节点 2021.1.26
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入: head = [4,5,1,9], val = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链
2021-01-26 09:59:40
105
原创 算法第四版(持续更新回顾)
算法第四版这本书,看完一段时间了,但是没有完成课后习题,总的来说,自己的学习还是不太够,这篇就作为常见知识点的总结,更多还是要刷题!!!刷题!!!刷题!!!这才能使得编程有所进步! 第一章 基础 第二章 排序 第三章 查找 第四章 图 第五章 字符串 ...
2021-01-25 20:00:58
234
原创 Windows server 2008 r2系统部署Springboot系统(详细记录)(离线部署)连接所有需要的补丁,共享给大家,免费下载
一、整理安装需要文件 Java项目jar包,Python脚本代码 JDK运行安装包,Python安装环境包,Mysql安装环境包,Navicat安装包 二、安装过程报错解决 1.缺少api-ms-
2021-01-17 18:21:48
771
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人