自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hello World

下午可以不下雨吗

  • 博客(695)
  • 资源 (4)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Java中nextInt()后,接nextLine() 会读到一个空行

昨天pdd笔试一直卡在输入?就是这个问题:Java中nextInt()后,接nextLine() 会读到一个空行原因(太长可以忽略直接看解决):这是因为在调用nextLine()函数前调用了Scanner的另一个函数nextInt()(或是nextDouble())。出现这种情况的原因是两个函数的处理机制不同,nextInt()函数在缓冲区中遇到“空格”、“回车符”等空白字符时会将空白字符前的数据读取走,但空白字符不会被处理掉,而nextLine()函数是在缓冲区中读取一行数据,这行数据以“回车符”为

2021-07-26 18:15:06 3

原创 关于直接修改list集合元素的几种情况

关于直接修改list集合元素的几种情况问题产生以及复现结论问题产生以及复现在刷题的时候发现了一行代码list.get(list.size()-1)[1]=Math.max(intervals[i][1],list.get(list.size()-1)[1]);最初开始看并不对劲,因为我记得不能直接修改集合中的元素。于是便进行了测试。果然报错了,那么为什嚒最初的那个代码可以运行成功呢?我把泛型进行了修改,再次进行测试:可以看到完全没问题,结果也成功的改变了。结论原来在第二种情况,

2021-07-16 11:40:44 10

原创 Method threw ‘java.lang.NullPointerException‘ exception. Cannot evaluate com.sun.proxy.xxx

我在debug的时候发现会出现 Method threw 'java.lang.NullPointerException' exception. Cannot evaluate com.sun.proxy.$Proxy0.toString()但是不影响程序的正常运行,应该是由于动态代理的时候生成的对象可能并没有toString()方法,而debug模式下是通过toString来打印信息的。所以也解释了为什么在invoke方法中可以返回真实的代理对象...

2021-07-07 10:26:48 74

原创 maven已经导入了模块坐标,但是依然无法使用

现象:已经在pom.xml中引入了gav坐标,但是另一个项目的文件依然无法import解决:原来的项目没有包,加一个包就好了

2021-07-04 16:23:09 12

原创 Google Protobuf

Google Protobuf编码和解码的基本介绍为什么要有 Google Protobuf?Protobuf使用步骤编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码为什么要有 Google Protobuf?因为netty自身虽然带有codec(编解码器),但是底层使用的仍是 Java 序列化技术 , 而 Java 序列化技术本身效率就不高,存在如下问题无法跨语言序列化后的体积太大,是二进制编码的 5 倍多。

2021-07-03 16:42:34 5

原创 Netty 核心模块组件

Netty 核心模块组件Bootstrap、ServerBootstrapFuture、ChannelFutureChannelSelectorChannelHandler 及其实现类Pipeline /ChannelPipelineChannelHandlerContextBootstrap、ServerBootstrapBootstrap是客户端的引导类,用于配置客户端的一些启动信息,而ServerBootstrap就是服务端的了Future、ChannelFutureNetty 中所有的 IO

2021-06-30 23:02:50 12

原创 Netty 高性能架构设计

Netty 高性能架构设计线程模型基本介绍传统阻塞 I/O 服务模型Reactor 模式(笼统概念版并未具体到三种实现)线程模型基本介绍目前存在的线程模型有:传统阻塞 I/O 服务模型Reactor 模式根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现单 Reactor 单线程;单 Reactor 多线程;主从 Reactor 多线程Netty 线程模式(Netty 主要基于主从 Reactor 多线程模型做了一定的改进,其中主从 Reactor 多线

2021-06-27 17:18:02 31 1

原创 Netty概述

Netty概述为什么会产生Netty?Netty的优点Netty 版本说明为什么会产生Netty?因为原生io存在巨多问题:NIO 的类库和 API 繁杂,使用麻烦。需要一些额外的技能,比如要熟悉Java多线程、网络编程开发难度大有一定的BUG,比如selector空轮询导致cpu100%负载Netty的优点设计优雅:适用于各种传输类型的统一 API 阻塞和非阻塞 Socket;基于灵活且可扩展的事件模型,可以清晰地分离关注点;高度可定制的线程模型 - 单线程,一个或多个线程池.使用

2021-06-27 16:38:10 24

原创 基于MySQL实现分布式锁

基于MySQL实现分布式锁适用场景基于唯一索引实现实现方式优点缺点适用场景基于Mysql实现分布式锁,适用于对性能要求不高(用mysql实现性能肯定不如用redis、zookeeper实现),并且不希望因为要使用分布式锁而引入新组件。基于唯一索引实现实现方式获取锁时在数据库中insert一条数据,包括id、方法名(唯一索引)、线程名(用于重入)、重入计数获取锁如果成功则返回true获取锁的动作放在while循环中,周期性尝试获取锁直到结束或者可以定义方法来限定时间内获取锁释放锁的时候,de

2021-06-23 14:57:11 26

原创 BIO、NIO、AIO

BIO、NIO、AIOBIO基本概念NIO基本概念AIO(目前并未广泛应用)关于三种IO的一些细节可以看看Linux的IO模型这篇文章,有些内容更加详细,这两篇文章加起来学习三种IO更好~BIO基本概念同步并阻塞(传统阻塞型),客户端的每一个请求服务端都要开一个线程来对应它,如果这个连接不做任何事情会造成不必要的线程开销。NIO基本概念同步非阻塞:服务器会开启一个线程,线程会维护一个Selector,一个Selector可以处理多个连接,它会在内部不断轮循,然后去处理那些有IO请求的连接(因

2021-06-22 23:56:49 17 1

原创 JVM各区存放的东西~

JVM各区存放的东西~

2021-06-17 23:10:09 19

原创 MySQL主从复制、读写分离

MySQL主从复制、读写分离为什么要用主从复制、读写分离?主从复制原理读写分离读写分离的实现方式为什么要用主从复制、读写分离?为了提高数据库的可用性、并发性能。你想如果是一台单机数据库,所有请求都打在它上面,那么就会导致I/O频率过高。假如有三台,一台主负责写,两台从负责读,那就会大幅提高性能。主从复制原理Relay log,我们翻译成中文,一般叫做中继日志,一般情况下它在MySQL主从同步读写分离集群的从节点才开启。主节点一般不需要这个日志。当master进行改动数据的操作时,会按照顺序记

2021-06-16 17:47:23 19

原创 从公司GitLab拉代码总是显示有些依赖无法导入

解决:在终端输入以下命令后重新导入依赖mvn clean package -Dmaven.test.skip=true -Dmaven.javadoc.skip=true

2021-06-11 15:47:12 29 1

原创 预发环境如何Debug

预发环境如何Debug今天需要在预发环境进行一下断点DeBug,但是预发环境是已经开启了并且部署在远端的服务器,下面记录一下怎么解决。原本应该是add configuration开启Debug运行即可

2021-05-18 14:56:20 30

原创 Charles抓https显示unknown解决方法

今天尝试抓个https的请求,发现显示全是unknown我也已经设置过了电脑上的证书 也信任了手机里也安装了Charles的证书,最后解决方案不知道从什么时候开始 iOS多了个信任的操作 原来这块貌似是默认是信任吧在设置–>通用–>关于本机–>证书信任设置把里面的那个Charles的证书设置为信任就可以了...

2021-05-11 14:50:39 85

原创 二叉树直径、最大路径和等总结

二叉树直径、最大路径和总结534、二叉树的直径124、二叉树中的最大路径和687、最长同值路径今天发现这三题的解法十分类似,于是放到一起。534、二叉树的直径/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */

2021-04-28 10:50:04 22

原创 647. 回文子串(高频题)

647. 回文子串解题思路代码解题思路本题和lc第5题思路差不多,而且注意,一般寻找回文串 都是用从中心向两端扩大代码class Solution { public int countSubstrings(String s) { int res=0; for (int i = 0; i < s.length(); i++) { //寻找长度为奇数的回文子串 res = res + palindrome(s,

2021-03-21 17:37:31 32

原创 621. 任务调度器(高频题)

621. 任务调度器解题思路代码解题思路这题大致用贪心思想,但是我觉得这是一个找规律的题目。一刷2021/3/21,没弄明白代码class Solution {/** * 解题思路: * 1、将任务按类型分组,正好A-Z用一个int[26]保存任务类型个数 * 2、对数组进行排序,优先排列个数(count)最大的任务, * 如题得到的时间至少为 retCount =(count-1)* (n+1) + 1 ==> A->X->X->A->X->

2021-03-21 17:33:20 48

原创 581. 最短无序连续子数组(高频题)

581. 最短无序连续子数组解题思路代码解题思路数组问题一般就想到双指针。将数组 nums 进行排序,记为 numsSort,然后比较 nums 和 numsSort 的元素来决定最左边和最右边不匹配的元素。它们之间的子数组就是要求的最短无序子数组。首先,从左向右遍历两个数组,找到第一次两个数组中元素不同的位置,即为最左边的不同的位置也就是最短无序连续子数组的左边界。然后,从右向左遍历两个数组,找到第一次两个数组中元素不同的位置,即为最右边的不同的位置也就是最短无序连续子数组的右边界。实例

2021-03-21 16:28:16 19

原创 494. 目标和(高频题)

494. 目标和解题思路代码解题思路这题其实可以转化成动态规划中的零一背包问题,所以这个背包容量就是 (target + sum(nums)) / 2,要装入背包的东西就是nums[]中的元素。这其中dp[i]的含义还是背包问题通用的套路:dp[i][j] = x表示,若只在前 i 个物品中选择,若当前背包的容量为 j,则最多有 x 种方法可以恰好装满背包。注意这个base case可能有点难理解:如果数组和sum小于目标和S,则不存在正确解,这一点很好理解,所有的数都是正还小于S的话,怎

2021-03-21 13:20:04 35

原创 461. 汉明距离(高频题)

461. 汉明距离解题思路代码解题思路每次比较最右边的那个二进制位是否相同,然后不断右移即可代码class Solution { public int hammingDistance(int x, int y) { int res=0; while(x!=0||y!=0){ int a=x&1; int b=y&1; if(a!=b){ re

2021-03-20 11:05:38 23

原创 448. 找到所有数组中消失的数字(高频题)

448. 找到所有数组中消失的数字解题思路代码解题思路将所有正数作为数组下标,置对应数组值为负值。那么,仍为正数的位置即为(未出现过)消失的数字。举个例子:原始数组:[4,3,2,7,8,2,3,1]重置后为:[-4,-3,-2,-7,8,2,-3,-1]结论:[8,2] 分别对应的index+1后为[5,6](消失的数字)代码class Solution { public List<Integer> findDisappearedNumbers(int[]

2021-03-20 10:55:16 24

原创 399. 除法求值(高频题)

399. 除法求值解题思路代码解题思路一刷2021/3/20,没弄明白,题解见这里代码// 定义邻接节点类class Node { // 邻接节点代表的字符串 public String id; // 到达邻接节点所需的倍数 public double num; public Node(String i, double n) { id = i; num = n; }}class Solution { //

2021-03-20 10:39:31 25

原创 394. 字符串解码(高频题)

394. 字符串解码解题思路代码解题思路这题主要用到了栈,本题难点在于括号内嵌套括号,需要从内向外生成与拼接字符串,这与栈的先入后出特性对应。算法流程1、构建辅助栈 stack, 遍历字符串 s 中每个字符 c;当 c 为数字时,将数字字符转化为数字 multi,用于后续倍数计算;当 c 为字母时,在 res 尾部添加 c;当 c 为 [ 时,将当前 multi 和 res 入栈,并分别置空置 0:记录此 [ 前的临时结果 res 至栈,用于发现对应 ] 后的拼接操作;记录此 [ 前的

2021-03-20 10:26:46 34

原创 338. 比特位计数(高频题)

338. 比特位计数解题思路代码解题思路其实这就是一个数学题,找到规律了就很简单一个数比如a,如果是偶数,那么a比特位1的个数和(a/2)比特位1的个数是一样的,因为一个数是偶数那么他的二进制比他的一半的二进制只是多了一个0而已。如果是奇数就不一样了,他会比除以2的结果多了一个1(比如9的二进制比4的二进制多一个1,19的二进制比9的二进制多一个1,等等)。代码public class Solution { public int[] countBits(int num)

2021-03-19 23:19:24 17

原创 322. 零钱兑换(高频题)

322. 零钱兑换解题思路代码解题思路这题典型的动态规划套路下的 完全背包问题,主要注意需要求的是最小值,那我们就需要先给dp数组全都赋一个最大值,一般常取Integer.MAX_VALUE,这个题目中,因为amount的值我们已经知道所有可以取一个值amount+1,这样和Integer.MAX_VALUE的效果是一样的,相当于取了一个"天花板"值.不可能超过这个值然后就是套背包模板了代码class Solution { public int coinChange(int[] co

2021-03-19 22:54:57 35

原创 309. 最佳买卖股票时机含冷冻期(高频题)

309. 最佳买卖股票时机含冷冻期解题思路代码解题思路买卖股票问题都可以用动态规划,具体思路见这里代码public class Solution { public int maxProfit(int[] prices) { int len = prices.length; if (len < 2) { return 0; } int[][] dp = new int[len][3];

2021-03-19 22:09:59 26

原创 301. 删除无效的括号(高频题)

301. 删除无效的括号解题思路代码解题思路要用回溯算法,一刷2021/3/19,没有完全弄明白代码class Solution { // 用集合存储所有正确的字符串,可避免重复 private Set<String> set = new HashSet<>(); public List<String> removeInvalidParentheses(String s) { char[] ss = s.toCharArr

2021-03-19 21:57:50 20

原创 283. 移动零(高频题)

283. 移动零解题思路代码解题思路很简单的双指针,每次交换,都是将左指针的零与右指针的非零数交换,且非零数的相对顺序并未改变。代码class Solution { public void moveZeroes(int[] nums) { int n = nums.length, left = 0, right = 0; while (right < n) { if (nums[right] != 0) {

2021-03-19 21:15:33 22

原创 221. 最大正方形(高频题)

221. 最大正方形解题思路代码解题思路一看求最大面积,而且感觉后一步和前一步之间还有联系,并且问题规模可以很大,直接动态规划。题解见这里代码class Solution { public int maximalSquare(char[][] matrix) { /** dp[i][j]表示以第i行第j列为右下角所能构成的最大正方形边长, 则递推式为: dp[i][j] = 1 + min(dp[i-1][j-1], dp[i-1][j],

2021-03-19 17:06:58 26

原创 207. 课程表(高频题)

207. 课程表解题思路代码解题思路这种有先决顺序的工程安排问题一般就是拓扑排序,这道题是拓扑排序的裸题。详细解题思路见这篇文章代码class Solution { // 节点的入度: 使用数组保存每个节点的入度, public boolean canFinish(int numCourses, int[][] prerequisites) { // 1.课号和对应的入度 Map<Integer, Integer> inDegre

2021-03-19 16:57:25 18

原创 152. 乘积最大子数组(高频题)

152. 乘积最大子数组解题思路代码解题思路本题要用动态规划,主要思路如下代码class Solution { public int maxProduct(int[] nums) { int n = nums.length; if (n == 0) { return 0; }// dpMax[i] 表示以第 i 个元素的结尾的子数组,乘积最大的值 int[] dpMax = new int[n];

2021-03-19 16:21:16 24

原创 148. 排序链表(高频题)

148. 排序链表解题思路代码解题思路这题想到要排序,是链表。用快慢指针,还需要扩展一下,归并排序。但是要注意,这里的归并排序和 给数组归并排序有一丢丢的不同,因为这个链表不支持随机访问代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { t

2021-03-19 15:55:33 15

转载 Java的Scanner用法,主要用于算法笔试时的控制台输入

ACM之Java输入输出一些关于ACM模式下的Java编程题处理转载于这里

2021-03-18 23:17:45 54

原创 139. 单词拆分(高频题)

139. 单词拆分解题思路代码解题思路本题用动态规划,dp[i]表示s前i个字符能否拆分转移方程:dp[i] = dp[j] && check(s[j+1, i]);代码class Solution { /* 动态规划算法,dp[i]表示s前i个字符能否拆分 转移方程:dp[j] = dp[i] && check(s[i+1, j]); check(s[i+1, j])就是判断i+1到j这一段字符是否能够拆分

2021-03-18 22:47:29 21

原创 128. 最长连续序列(高频题)

128. 最长连续序列解题思路代码解题思路对于数组nums,其可能有多个数字连续的序列,其中每个序列都会有一个左边界,例如示例1的结果中[1, 2, 3, 4]的左边界就为1。如果我们知道了每一个连续序列的左边界,并且知道以它为左边界的连续序列的长度。进而就可以知道所有连续序列的长度。在其中取最大值即为结果。但都有哪些数可以成为连续序列的左边界呢?设想,如果num为一个左边界,那么num - 1就不应该存在于数组中(因为如果num - 1存在于数组中,num - 1又与num连续,所以num不可

2021-03-18 18:38:11 33

原创 124. 二叉树中的最大路径和(高频题)

124. 二叉树中的最大路径和解题思路代码解题思路见这篇题解代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { int res = Integer.MIN_VA

2021-03-18 18:24:32 18

原创 114. 二叉树展开为链表(高频题)

114. 二叉树展开为链表解题思路代码解题思路用后序遍历,把左子树接到根节点上,再把原来的右子树接到现在的右子树上,然后把原来的左子树置为null。 虽然是后序遍历,但是连接起来成链表,就是前序遍历的结果代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode()

2021-03-18 17:33:08 47

原创 105. 从前序与中序遍历序列构造二叉树(高频题)

105. 从前序与中序遍历序列构造二叉树解题思路代码解题思路和剑指offer第七题一样代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * Tree

2021-03-18 16:54:11 17

原创 102. 二叉树的层序遍历(高频题)

102. 二叉树的层序遍历解题思路代码解题思路没啥说的,题目都告诉你要用层级遍历了,也就是BFS。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } *

2021-03-18 16:35:08 16

分布式面试题总结总结总结总结

分布式面试题总结总结总结总结

2021-04-28

JVM底层原理课件PPT

JVM视屏教程对应的PPT课件。发布在这里保存一下。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2020-09-11

Mysql调优.xmind

学习Mysql调优时候所画的思维导图

2021-01-15

FTP服务器配置步骤详解.pdf

此资源是为了对应我的那篇博客,解决FTP服务搭建的详细问题,作为一个入门的教程来上传的。里面记载了在Linux服务器下如何搭建FTP服务的详细步骤,以及常见问题的解决方法。

2020-05-27

分类专栏上限?

发表于 2020-11-12 最后回复 2020-11-12

空空如也

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

TA关注的人 TA的粉丝

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