JVM工具-jstack jstack打印线程堆栈信息, 支持支持本地java进程,core文件以及远程java进程命令格式jstack [ options ] pidjstack [ options ] executable corejstack [ options ] [ server-id@ ] remote-hostname-or-IPoptions : 功能选项pid : 要打印堆栈信息的Ja...
JVM Troubleshooting命令-jinfo 概述用来查看正在运行的Java应用程序的扩展参数,支持在运行时,修改部分参数。命令格式jinfo [ option ] pidjinfo [ option ] executable corejinfo [ option ] [ servier-id ] remote-hostname-or-IPoption : 命令行功能选项pid : 进程idexecutable...
JVM监控工具-jstat详解 概述监控JVM统计信息, 如gc信息, 类加载信息, JIT信息命令格式: jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]generalOption : jstat命令选项,如 -help或-optionsoutputOptions : 包含一个statOption的输出选项v...
JVM监控工具-jps 概述用于查看操作系统上有哪些java进程, 类似于Linux系统下的ps命令, jps也支持查看远程主机上的java进程, 这个用处不大, 本文基于JDK8参数不加任何参数 : 显示进程id,以及main方法所在类名-q : 只显示进程id-m : 显示进程id,main方法所在类名, 以及传递给main方法的参数(如果有的话)-l : 展示类的完整路径或ja...
leetcode337. 打家劫舍 III 题目在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,...
leetcode213. 打家劫舍 II 题目你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: ...
leetcode198. 打家劫舍 题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 ...
JDK8新特性-Optional类 概述JDK8 新增, 主要用于解决 NullPointException异常私有构造方法, 不允许通过new 获得一个Optional实例提供一系列静态工厂方法获得Optional对象value为空的Optional可以认为是一个空的OptionalAPI 简介empty 方法 private static final Optional<?> EMPTY =...
JDK8新特性-Predicate 接口 概述JDK8 提供的函数式接口提供一个抽象方法test, 接受一个参数, 根据这个参数进行一些判断, 返回判断结果 true / false提供几个默认的default方法, and, or, negate 用于进行组合判断在流中被广泛使用test 方法 /** * 接收一个参数, 判断这个参数是否匹配某种规则, 匹配成功返回true, 匹配失败则返回false ...
JDK8新特性-Function接口与BiFunction接口 Function 接口JDK8新增的函数式接口接口只有一个抽象方法apply, 接受一个T类型参数, 返回一个R类型参数, T, R表示泛型, 可以相同除了一个抽象的apply方法之外, Function存在两个默认的default方法, compose和andThen, 这两个方法都是用来组合不同的Function的这个函数式接口被大量应用于集合以及Stream(流)中apply ...
leetcode63. 不同路径 II 题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开...
leetcode62. 不同路径 题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开...
leetcode91. 解码方法 题目一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (2
JDK8新特性-接口默认方法 在JDK8之前, 接口中都只能有抽象方法, 而不能有实现方法, 但是在JDK8之后, 接口中也可以添加非抽象方法了, 在接口中添加非抽象方法, 使用特殊的关键字default进行修饰, 所以实现了该接口的类都可以调用接口的default的方法, 这样可以保证在不改变接口特性的情况下, 对接口增加一些行为, 有需要时可以使用接口的默认方法, 同时又不会影响现有已实现了该接口的方法, 代码示例如下:...
leetcode64. 最小路径和 题目给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题记忆化 搜索class Solution { int[][] memo; ...
leetcode120. 三角形最小路径和 题目给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。解题...
leetcode70. 爬楼梯 题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 ...
RabbitMQ-基础组件封装 基础组件封装思路和架构设计方案支持高性能的序列化转换, 异步化发送消息支持消息生产实例与消费实例的链接池化缓存化, 提升性能支持可靠性投递消息, 保障消息100%不丢失支持消费端的幂等操作, 避免消费端重复消费的问题支持迅速消息发送模式, 在一些日志收集/统计分析等需求下可以保证高性能, 高吞吐量支持延迟消息模式, 消息可以延迟发送, 指定延迟时间, 用于某些延迟检查, 服务限流场...
RabbitMQ集群恢复与故障转移 前提 : A, B两个节点组成一个镜像队列, B是Master节点场景一A先停, B后停解决方案 : 该场景下B是Master, 只要先启动B, 在启动A即可。或者先启动A, 30秒之内启动B即可恢复镜像队列场景二A, B同时停机解决方案 : 只需要在30秒内连续启动A和B即可恢复镜像场景三A先停, B后停, 且A无法恢复解决场景 : 因为B是Master, 所以等B启...