自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 知识点

三次握手四次挥手 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021030421454640.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shado 拥塞控制 当输入的负载到达一定程度 吞吐量不会增加,即一部分网络资源会丢失掉,网络的吞吐量维持在其所能控制的最大值,转发节点的缓存不够大这造成分组的丢失是拥塞的征兆。 TCP的四种拥塞控制算法 1.慢开始 2.拥塞控制 3.快重传 4.快恢复 ..

2021-03-04 23:44:00 163 1

转载 Spring学习(下)

7. Spring中的设计模式 Spring 框架中广泛使用了不同类型的设计模式,下面我们来看看到底有哪些设计模式? 工厂设计模式 : Spring 使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。 代理设计模式 : Spring AOP 功能的实现。 单例设计模式 : Spring 中的 Bean 默认都是单例的。 模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库

2021-02-17 16:45:22 230

转载 Spring学习(上)

1 Spring核心组件 一句话概括:Spring是一个轻量级、非入侵式的控制反转(IoC)和面向切面(AOP)的框架。 PS :目前Java 开发的标配是 Spring5 + Spring Boot 2 + JDK 8 1.1 Spring 简介 现如今的Java开发又简称为Spring开发,Spring是Java目前第一大框架,它让现有的技术更容易使用,促进良好的编程习惯,大大简化应用程序的开发。 因为你想啊,如果我们想实现某个功能,代码量一般都是固定的,要么全自己写,要么用已有的优秀框架,而Spri

2021-02-17 16:38:44 293 1

原创 HashMap学习

1、HashMap的结构 在JDK7时,采用数组+链表结构 在JDK8时,采用数组+链表+红黑树的结构,在一定条件下,链表会转化为红黑树。 2、数组和链表的用处 数组用来随机查找,能够根据hash值快速定位到Node的位置。 链表是用来解决hash冲突的,多个元素定位到同一个Node时,用链表将它们顺序串起来。 3、为什么要转红黑树 单链表的查询时间复杂度为O(n),因此当链表元素越来越多时,查询效率底下,因此在链表长度达到一个某一个值的情况下,链表会转化为红黑树,查询复杂度为O(logn)。 但是当链表

2021-02-17 15:50:12 174

原创 I/O流框架简要笔记

1. 流的概念 内存与存储设备之间传输数据的通道 2. 流的分类 2.1 按方向【重点】 输入流:将<存储设备>中的内容读到<内存>中 输出流:将<内存>中的内容写到<存储设备>中 2.2 按单位 字节流:以字节为单位,可以读写所有数据 字符流:以字符为单位,只能读写文本数据 2.3 按功能 节点流:具有实际传输数据的读写功能 过滤流:在节点流的基础之上增强功能 3 字节流 字节流的父类(抽象类) //InputStream 字节输入流 publ

2020-11-27 20:44:32 101

原创 LeetCode算法题105:从前序与中序遍历序列构造二叉树

LeetCode传送门:从前序与中序遍历序列构造二叉树 题目描述 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路 首先回忆下,用前序遍历和中序遍历一颗二叉树: 1 / \ 2 3 / \

2020-06-03 11:17:44 213

原创 LeetCode算法题96:不同的二叉搜索树(Java版)

LeetCode传送门:不同的二叉搜索树 题目描述 给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \

2020-05-21 09:52:03 202

原创 LeetCode算法题64:最小路径(Java版)

LeetCode传送门:最小路径和 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 **说明:**每次只能向下或者向右移动一步。 示例: 输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总和最小。 思路 此题是典型的动态规划题目。 状态定义: 设 dp为大小 m×n 矩阵,其中 dp[i] [j]的值代表直到走到 (i,j) 的最小路径和。 转移方程: 题目要

2020-05-17 22:05:49 270

原创 LeetCode算法题62:不同路径(Java版)

LeetCode传送门:不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径? 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下

2020-05-17 21:19:34 296

原创 LeetCode算法题55:跳跃游戏(Java版)

LeetCode传送门:跳跃游戏 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。 示例 2: 输入: [3,2,1,0,4] 输出: false 解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不

2020-05-17 21:05:36 279

原创 LeetCode算法题49:字母异位词分组(Java版)

LeetCode传送门:字母异位词分组 题目描述 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 说明: 所有输入均为小写字母。 不考虑答案输出的顺序。 思路 遍历字符串数组,每个元素排序后,作为map的key。 不断添加所有元素,最后返回,这样

2020-05-15 09:35:02 301

原创 LeetCode算法题48:旋转图像(Java版)

LeetCode传送门:旋转图像 题目描述 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在**原地**旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ] 示例 2: 给定 matrix = [ [ 5, 1, 9

2020-05-14 22:39:49 235

原创 LeetCode算法题33:搜索旋转排序数组(Java版)

LeetCode传送门:搜索旋转排序数组 题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。 示例 1: 输入: nums = [4,5,6,7,0,1,2], target = 0 输出: 4 示例 2: 输入: nums =

2020-05-13 21:34:57 261

原创 一篇文章带你搞懂Java对象内存布局

一、对象的内存布局 在虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和 齐填充(Padding)。 从上面的这张图里面可以看出,对象在内存中的结构主要包含以下几个部分: Mark Word(标记字段):主要用来表示对象的线程锁状态,另外还可以用来配合GC、存放该对象 hashCode; Klass Pointer(Class对象指针):Klass Word是一个指向方法区中Class信息的指针,意味着该对象可随时知 道自己是哪个Cl

2020-05-13 18:24:25 349

原创 LeetCode算法题31:下一个排列(Java版)

LeetCode传送门:下一个排列 题目描述 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 → 1,3,2 3,2,1 → 1,2,3 1,1,5 → 1,5,1 思路 当我们看到这个题的第一反应会想到LeetCode46全排列,容易想到我们只需要做出所有的排列情况,并找的当前序列,答案

2020-05-12 09:55:19 341

原创 LeetCode算法题46:全排列(Java版)

LeetCode传送门:全排列 题目描述 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路 深度优先遍历、回溯 考虑的问题 路径:也就是已经做出的选择。 选择列表:也就是你当前可以做的选择。 结束条件:也就是到达决策树底层,无法再做选择的条件。 回溯算法的框架 result = [] def backtrack(

2020-05-11 14:02:19 434

原创 LeetCode算法题22:括号生成(Java版)

LeetCode传送门:括号生成 题目描述 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 实例 输入:n = 3 输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ] 思路 深度优先遍历 我们以 n = 2 为例,画树形结构图。方法是 “做减法”。 画图以后,可以分析出的结论: 当前左右括号都有大于 0 个可以使用的

2020-05-10 09:41:57 355

原创 LeetCode算法题17:电话号码的字母组合(Java版)

LeetCode传送门:电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 思路 这道题的解法是用回溯的方式,在循环里面套了递归调用。 用一个StringBuilder存储

2020-05-09 09:38:26 310

原创 LeetCode算法题15:三数之和(Java版)

LeetCode传送门:三数之和 题目描述 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意 :答案中不可以包含重复的三元组。 实例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-...

2020-05-08 10:03:19 511

原创 LeetCode算法题8:字符串转换整数 (atoi)(Java版)

8. 字符串转换整数 (atoi) LeetCode传送门:字符串转换整数 (atoi) 题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数...

2020-05-07 14:56:32 368 1

转载 Android studio新建项目报错ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Could not

再新建项目中报错: ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve androidx.appcompat:appcompat:1.1.0. Show Details Affected Modules: app 错误原因 由于我是重新装的AndroidStudi...

2019-09-15 21:20:30 966

原创 Centos7安装Redis5.0.4笔记

前言 Redis是一个高性能的key-value数据库,现时越来越多企业与应用使用Redis作为缓存服务器。 搭建Redis 1. 下载并解压 首先从Redis官网下载Redis并解压,本人使用的是最新版本5.0.4。依次执行如下命令: cd /usr/local/ wget http://download.redis.io/releases/redis-5.0.4.tar.gz ta...

2019-06-01 19:37:50 725

原创 android studio中如何替换gradle以防下载卡住

我们在开发过程中需要导入别人的demo工程,如果你本地没有demo的gradle版本,那么android studio就会自动下载站下载gradle构建文件,android studio就有可能一直卡在下载gradle过程,此时我们可以通过手动下载gradle版本来解决问题。 1.首先我们到Gradle官网下载对应版本,网址是http://services.gradle.org/distribu...

2019-01-29 16:04:05 879

空空如也

空空如也

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

TA关注的人

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