自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

今天你学习了吗?

我爱学习,学习爱我

  • 博客(110)
  • 收藏
  • 关注

原创 微服务架构原理入门

笔者参加了今年字节跳动举办的后端青训营,在听了其中一节关于微服务介绍的课后,作下本篇笔记。微服务架构是当前大多数互联网公司的标准架构,通过这份笔记可以了解到:微服务架构的由来及原理、服务治理功能是如何工作的。系统架构的演变历史:单体架构 → 垂直应用架构 → 分布式架构 → SOA架构 → 微服务架构 → 更加高级的架构(如Service Mesh等)优势:优势:优势:优势:优势:服务治理包含:服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理可观测性:日志采集、日志分析、监控打点、监控大盘、异常报

2022-06-12 20:39:14 524 1

原创 RPC 入门

笔者参加了今年字节跳动举办的后端青训营,在听了其中一节关于RPC入门介绍的课后,作下本篇笔记。本篇笔记,主要讲述了RPC的基本概念,以及讲述RPC分层设计中的3个核心层次,围绕RPC的关键指标构建一个健壮的RPC框架。 以下面的代码为例:本地函数调用的过程为:RPC:Remote Procedure Calls以网上商城购物为例:在网上商城购物后,需要调用远程的支付服务,支付服务再返回扣款的结果,这个调用与本地调用区别就在于中间是隔了一个网络的,在不同机器上。RPC需要解决的问题:1984年 Nelson

2022-06-11 21:56:12 612

原创 HTTP框架修炼之道

这是我参与「第三届青训营 - 后端场」笔记创作活动的第3篇笔记。本篇笔记,主要讲述了更多在大学课堂上没有了解到的HTTP协议的部分内容以及HTTP框架的设计与实现。HTTP 协议是当今使用最为广泛的协议之一,HTTP 是前(客户)端与服务端通信的基础协议。如下图就是一个前后端分离的一个流程图,前后端之间通过 HTTP 请求进行通信。HTTP 框架负责的就是对 HTTP 请求的解析、根据对应的路由选择对应的后端逻辑了,也就是图上标出来的这些。HTTP 在企业实际业务场景中使用广泛。第一个大规模使用的 HTTP

2022-06-10 09:25:44 834

原创 架构入门讲解 - 谁动了我的蛋糕

笔者参加了今年字节跳动举办的后端青训营,在听了其中一节关于架构入门介绍的课后,作下本篇笔记。本篇笔记主要是讲述后端开发中关于架构的信息,内容偏广泛且入门,同时课程里老师用了蛋糕店师傅卖蛋糕的比喻方式形象生动地讲解架构。软件系统需要对外提供服务,单机就是把所有功能都实现在一个进程里,并部署在一台机器上。优点:简单问题:单体架构: 分布式部署垂直应用架构: 按应用垂直切分的单体优点:SOA(Service-Oriented Architecture)在单机 → 单体 → SOA的过程中,功能的演化为:进

2022-06-08 16:07:33 234

原创 Git 的正确使用姿势

笔者参加了今年字节跳动举办的后端青训营,在听了其中一节关于教导如何正确使用Git的课后,作下本篇笔记。本篇笔记主要讲述了如何正确地使用Git进行代码版本管理。为什么要学习Git?Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.版本控制:一种记录一个

2022-06-02 16:40:46 288

原创 Java并发(六)线程池入门

本篇将讲述Java的JUC包中开发常用的线程池,包括线程池的优点、核心参数、拒绝策略等

2022-03-21 21:09:44 650

原创 Java并发(五)ConcurrentHashMap如何解决线程安全问题

本篇将讲述Java中的ConcurrentHashMap是如何解决线程安全问题的,分JDK1.7和JDK1.8两个版本来介绍。

2022-03-20 23:56:18 7301

原创 Java并发(四)ThreadLocal类

本篇将讲述Java中的ThreadLocal类,包括ThreadLocal类的应用场景、ThreadLocal的实现、为什么ThreadLocal中要用到弱引用以及ThreadLocal如何解决内存泄露问题。

2022-03-19 18:58:01 542

原创 Java并发(三)volatile关键字

本篇将讲述Java中的volatile关键字,将提及volatile关键字所带来的可见性、有序性以及JVM是如何实现这些特性的。

2022-03-18 15:02:57 306

原创 Java并发(二)AQS、Reentrantlock

Java中最著名的并发包是JUC (java.util.concurrent),用于更好地让java支持高并发的任务。在本篇文章中,将会谈到JUC中的核心组件AQS,以及基于AQS的Reentrantlock。

2022-03-17 23:01:00 661

原创 Java并发(一)锁机制、悲观锁、乐观锁

本篇文章涉及Java并发中的锁机制、悲观锁、乐观锁、Synchronized关键字、CAS算法等内容。之前关于Java并发的学习之后总是忘了部分内容,每次都需要重新去看资料。于是今天我做了这篇笔记,用于记录自己对Java并发的学习。

2022-03-15 23:54:47 510

原创 红黑树 图解快速入门

这篇文章会简单介绍一下红黑树这种数据结构。在阅读本文章之前,读者最好先理解二叉树、二叉搜索树、自平衡二叉搜索树的概念。内容参考自B站up主谢某人er参考视频:https://www.bilibili.com/video/BV18y4y1m721/?spm_id_from=333.788.recommend_more_video.0

2022-03-14 20:02:44 1015

原创 JVM 垃圾回收

本篇将讲述JVM中垃圾回收机制相关的内容,包含各种垃圾回收算法、垃圾回收器(包含CMS垃圾回收器、G1垃圾回收器等等)

2022-03-07 22:56:07 1352

原创 JVM 内存结构

本篇将带你入门学习JVM中的内存结构

2022-03-06 20:06:08 558 1

原创 JVM 内存模型

本篇将带你入门学习JVM中的JMM内存模型

2022-03-06 16:11:20 327

原创 MySQL 学习笔记

以下为本人观看黑马程序员MySQL学习视频所做的笔记目录MySQL概述数据库相关概念MySQL的客户端连接数据模型SQL函数约束多表查询事务MySQL概述数据库相关概念名称描述简称数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System (DBMS)SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准Structured Query L

2022-03-06 15:11:04 374

原创 JVM 类加载机制

本篇将带你入门学习JVM中的类加载机制

2022-03-06 14:40:07 999 1

原创 单调栈类题目专题训练 -- LeetCode上5道与单调栈相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与单调栈相关的题目,用于加深对单调栈的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 739 每日温度2 - LeetCode 496 下一个更大元素 I3 - LeetCode 503 下一个更大元素 II4 - LeetCode 42 接雨水5 - LeetCode 84 柱状图中最大的矩形  1 -

2022-02-28 15:50:13 7849

原创 动态规划类题目专题训练 -- LeetCode上38道与动态规划相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与动态规划相关的题目,用于加深对动态规划的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 509 斐波那契数2 - LeetCode 70 爬楼梯3 - LeetCode 746 使用最小花费爬楼梯4 - LeetCode 62 不同路径5 - LeetCode 63 不同路径 II6 - LeetCode 343 整数拆分1 -

2022-02-27 13:50:35 621 2

原创 贪心类题目专题训练 -- LeetCode上10道与贪心相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与贪心相关的题目,用于加深对贪心的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 455 分发饼干1 - LeetCode 455 分发饼干来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/assign-cookies题意:假设你是一位很棒的家长,想要给你的孩子们一些小饼

2022-02-21 15:19:13 872

原创 回溯类题目专题训练 -- LeetCode上12道与回溯相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与回溯相关的题目,用于加深对回溯的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 77 组合 -- 回溯法2 - LeetCode 216 组合总和 III -- 回溯法3 - LeetCode 17 电话号码的字母组合 -- 回溯法4 - LeetCode 39 组合总和 -- 回溯法5 - LeetCode 131 分割回文串 -

2022-02-21 09:00:12 309

原创 二叉搜索树类题目专题训练 -- LeetCode上10道与二叉搜索树相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与二叉搜索树相关的题目,用于加深对二叉搜索树的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 700 二叉搜索树中的搜索 -- 递归法和迭代法2 - LeetCode 98 验证二叉搜索树 -- 递归法和迭代法3 - LeetCode 530 二叉搜索树的最小绝对差 -- 递归法和迭代法4 - LeetCode 501 二叉搜索树中的

2022-02-21 08:59:59 535

原创 二叉树类题目专题训练 -- LeetCode上30道与二叉树相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与二叉树相关的题目,用于加深对二叉树的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 144 145 94 二叉树的三种遍历 -- 递归法2 - LeetCode 144 145 94 二叉树的三种遍历 -- 迭代法3 - LeetCode上10道关于二叉树层序遍历的题目 -- 熟练二叉树层序遍历4 - LeetCode 226 翻转

2022-02-21 08:59:43 115

原创 栈与队列类题目专题训练 -- LeetCode上7道与栈与队列相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与栈与队列相关的题目,用于加深对栈与队列的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 232 用栈实现队列2 - LeetCode 225 用队列实现栈3 - LeetCode 20 有效的括号 -- 栈的使用4 - LeetCode 1047 删除字符串中的所有相邻重复项 -- 栈的使用 / 双指针法5 - LeetCode 1

2022-02-21 08:59:26 132

原创 字符串类题目专题训练 -- LeetCode上7道与字符串相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与字符串相关的题目,用于加深对字符串的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 344 反转字符串 -- 双指针法2 - LeetCode 541 反转字符串 II -- 双指针法3 - 剑指 Offer 05 替换空格 -- 双指针法4 - LeetCode 151 翻转字符串里的单词 -- 双指针法5 - 剑指Offer 5

2022-02-21 08:59:06 269

原创 哈希表类题目专题训练 -- LeetCode上7道与哈希表相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与哈希表相关的题目,用于加深对哈希表的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 242 有效的字母异位词 -- 用数组做哈希表2 - LeetCode 1002 查找共用字符 -- 用数组做哈希表3 - LeetCode 349 两个数组的交集 --使用Java中的HashSet4 - LeetCode 202 快乐数 -- 使

2022-02-20 21:37:56 686

原创 链表类题目专题训练 -- LeetCode上6道与链表相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与链表相关的题目,用于加深对链表的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 -LeetCode 203 移除链表元素 -- 虚拟头节点2 -LeetCode 707 设计链表 -- 实现链表的基本操作3 -LeetCode 206 反转链表 -- 递归法和双指针法4 -LeetCode 19 删除链表的倒数第N个节点 --...

2022-02-20 21:22:46 166

原创 数组类题目专题训练 -- LeetCode上7道与数组相关的题

这个专题中的题目是我跟随代码随想录的刷题计划,在LeetCode上做的与数组相关的题目,用于加深对数组的理解!下面的内容将会有每一道题目的题意、在代码随想录中对应的参考文章、我的思路以及我所写的Java代码,希望对你有帮助!目录1 - LeetCode 704 二分查找 -- 二分查找法2 - LeetCode 27 移除元素 -- 双指针法3 - LeetCode 977 有序数组的平方 -- 双指针法4 - LeetCode 209 长度最小的子数组 -- 滑动窗口法5 - LeetCode 59

2022-02-20 21:09:07 233

原创 LeetCode 47 全排列 II -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii题意:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]提示:1 <

2022-02-20 20:41:38 7294

原创 LeetCode 46 全排列 -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations题意:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]

2022-02-20 17:20:57 176

原创 LeetCode 491 递增子序列 -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/increasing-subsequences题意:给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例 1:输入:nums = [4,6,7,7]输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],

2022-02-20 16:41:04 257

原创 LeetCode 90 子集 II -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets-ii题意:给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例 1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= nu

2022-02-20 15:30:31 109

原创 LeetCode 78子集 -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets题意:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= n

2022-02-20 15:07:25 214

原创 LeetCode 40 组合总和 II -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum-ii题意:给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,输出

2022-02-18 14:41:11 5418

原创 LeetCode 39 组合总和 -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum题意:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,

2022-02-18 14:20:30 239

原创 LeetCode 216 组合总和 III -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum-iii题意:找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]

2022-02-15 17:43:28 113

原创 LeetCode 77 组合 -- 回溯法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combinations题意:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例 2:输入:n = 1, k = 1输出:[[1]]提示:1 <= n <= 201 &

2022-02-15 17:14:56 1325

原创 LeetCode 108 将有序数组转换为二叉搜索树 -- 递归法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree题意:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[

2022-02-15 02:23:23 170

原创 LeetCode 669 修剪二叉搜索树 -- 递归法和迭代法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/trim-a-binary-search-tree题意:给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能

2022-02-14 19:44:47 239

原创 LeetCode 236 二叉树的最近公共祖先 -- 递归法

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree题意:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,nul

2022-02-12 15:25:37 231

空空如也

空空如也

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

TA关注的人

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