自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Slling's Hello World

下午可以不下雨吗

  • 博客(537)
  • 资源 (3)
  • 论坛 (1)
  • 收藏
  • 关注

原创 25. K 个一组翻转链表(数据结构系列)

25. K 个一组翻转链表题目解题思路代码题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。解题思路主要借助这个函数: //反转以a为头节点的链表 public ListNode reverse(ListNode a) { L

2021-02-24 16:55:10 3

原创 92. 反转链表 II(数据结构系列)

92. 反转链表 II题目解题思路代码题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。解题思路见书286代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = v

2021-02-24 16:40:13 2

原创 206. 反转链表(数据结构系列)

206. 反转链表题目解题思路代码题目反转一个单链表。解题思路注意不要跳进递归,而是用递归的定义来解决问题。详细思路见书284代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * Lis

2021-02-24 16:01:53 2

原创 234. 回文链表(数据结构系列)

234. 回文链表题目解题思路代码题目请判断一个链表是否为回文链表。解题思路判断一个链表是不是回文链表,一般都用双指针,从两端向中间收缩。最简单的思路就是反转单链表,如果反转后的链表和原来的链表相同,那就是回文链表。可以不用显式的反转链表,借助后序遍历,同样能达到倒叙遍历链表的目的。还可以用快慢指针来优化空间复杂度,即反转链表的一半,只要比较前一半和后一半是否相等即可。代码基础版本class Solution { ListNode left; public boolean

2021-02-24 15:52:54 1

原创 239. 滑动窗口最大值(数据结构系列)

239. 滑动窗口最大值题目解题思路代码题目给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。解题思路这题关键是知道要用单调队列 来做,难点也是构造单调队列。还有一个注意的点就是不一次性填满窗口,而是留一个不填,然后一填满就记录最大值,再删除队首的元素。详细思路见书271代码class Solution { /* 实现单调队

2021-02-24 13:46:53 2

原创 503. 下一个更大元素 II(数据结构系列)

503. 下一个更大元素 II题目解题思路代码题目给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。解题思路和496. 下一个更大元素 I题目相似,就是变成了环而已,所以我们只需要把数组翻倍,尾部的元素就可以和自己左边的元素进行比较了。所以只需要①翻倍数组②用下一个更大元素的模板代码class So

2021-02-24 13:27:52 21

原创 496. 下一个更大元素 I(数据结构系列)

496. 下一个更大元素 I题目解题思路代码题目给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。解题思路让数组倒着入栈,并且挤出栈中比当前数要小的元素。我们先求出num2[]中从左往右所有元素的下一个更大元素并且把它们保存在ma

2021-02-24 13:08:09 5

原创 460. LFU 缓存(数据结构系列)

460. LFU 缓存题目解题思路代码题目请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。实现 LFUCache 类:LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象int get(int key) - 如果键存在于缓存中,则获取键的值,否则返回 -1。void put(int key, int value) - 如果键已存在,则变更其值;如果键不存在,请插入键值对。当缓存达到其容量时,则应该在插入新项之前,使最不经常使用的项无效。在此

2021-02-24 11:41:27 3

原创 146. LRU 缓存机制(数据结构系列)

146. LRU 缓存机制题目解题思路代码题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。

2021-02-23 22:08:48

原创 3. 无重复字符的最长子串(滑动窗口)

3. 无重复字符的最长子串题目解题思路代码题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。提示:0 <= s.length <= 5 * 104s 由英文字母、数字、符号和空格组成解题思路套用模板即可,因为只有一个字符串,所以模板还可以简化一下,不需要need和valid。更新窗口内数据只要更新window内该字符出现的次数就可以了。还要注意更新结果是在收缩窗口之后。要保证无重复字符串,那么哪一个窗口是没有重复的字符串呢?回头看一下我们收缩窗口的条件:

2021-02-22 22:38:15 6

原创 438. 找到字符串中所有字母异位词(滑动窗口)

438. 找到字符串中所有字母异位词题目解题思路代码题目给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。解题思路套模板,只要解决好扩大窗口时,即加入字符时,应更新哪些数据什么条件下收缩窗口收缩窗口,即移出字符时,应更新哪些数据要的结果是在扩大窗口还是在收缩窗口时候更新

2021-02-22 22:21:15 4

原创 567. 字符串的排列(滑动窗口)

567. 字符串的排列题目解题思路代码题目给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。解题思路还是套用模板就可以了。注意两点:①收缩窗口的时机②本题一旦发现窗口内有满足的排列,就立即返回代码class Solution { public boolean checkInclusion(String s1, String s2) { Map<Character, Intege

2021-02-22 22:08:58 11

原创 滑动窗口模板

public void minWindow(String s, String t) { Map<Character, Integer> need = new HashMap<>(); Map<Character, Integer> window = new HashMap<>(); for (char c : t.toCharArray()) { //取指定 key 对应对 va...

2021-02-22 21:22:54 6

原创 76. 最小覆盖子串(滑动指针)

76. 最小覆盖子串题目解题思路代码题目给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。解题思路主要搞清楚增大窗口,直至包含T中所有字符后停下来,然后不断收缩窗口,直到窗口中的字符串不再满足要求。然后重复上面的两个步骤即可。其实还是只要套模板,具体思路见书87面代码class Solution { public String

2021-02-22 21:21:03 12

原创 8 大排序算法总结

面试中的 8 大排序算法总结冒泡排序选择排序插入排序快速排序堆排序希尔排序归并排序基数排序总结冒泡排序冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。基本原理将序列当中的左右元素,依次比较,如果左边的元素大于右边元素则交换位置,保证右边的元素始终大于左边的元素;( 第一轮结束后,序列最后一个元素一定是当前序列的最大值;)对序列当中剩下的n-1个元素再次执行步骤1。对于长度为n的序列,一共需要执行n-1轮比较。

2021-02-19 22:02:47 7

原创 773. 滑动谜题(BFS)

773. 滑动谜题题目解题思路代码题目在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示.一次移动定义为选择 0 与一个相邻的数字(上下左右)进行交换.最终当板 board 的结果是 [[1,2,3],[4,5,0]] 谜板被解开。给出一个谜板的初始状态,返回最少可以通过多少次移动解开谜板,如果不能解开谜板,则返回 -1 。提示:board 是一个如上所述的 2 x 3 的数组.board[i][j] 是一个 [0, 1, 2,

2021-02-18 14:33:40 15

原创 752. 打开转盘锁(BFS)

752. 打开转盘锁题目解题思路代码题目你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。

2021-02-18 13:40:34 6

原创 22. 括号生成(回溯算法)

22. 括号生成题目解题思路代码题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。解题思路这题套用回溯算法的模板就可以了。但是有两个注意的点就是回溯的结束条件。代码class Solution { List<String> res = new LinkedList<>(); public List<String> generateParenthesis(int n) { if

2021-02-18 13:20:41 6

原创 TLS、SSL原理解析

TLS、SSLhttps协议就是建立在TLS、SSL之上的。

2021-02-17 21:31:20 14

原创 37. 解数独(回溯算法)

37. 解数独题目解题思路代码题目编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。一个数独。答案被标成红色。提示:给定的数独序列只包含数字 1-9 和字符 ‘.’ 。你可以假设给定的数独只有唯一解。给定数独永远是 9x9 形式的。解题思路这题和51. N 皇后有点相似,不同的是八皇后每行只

2021-02-17 12:53:33 23

原创 回溯算法中排列组合和子集三个的问题总结

回溯算法中排列组合和子集三个的问题总结什么是排列、组合总结什么是排列、组合排列和组合本质区别在于:决策的顺序对结果有没有影响。下面举例说明现在有8个人,他们的名字分别为:现在有 3 个奖杯,本别为 Golden 金牌,Silver 银牌,Bronze 铜牌。我们的任务是:将这 3 个奖牌颁发给 8 个人中的 3 个,先颁发金牌,再颁发银牌,再颁发铜牌。问颁发奖牌的不同方式总共有哪些?那么很明显,这是一个 Permutation 排列的问题,因为把金牌先颁给 Alice,再把银牌颁给 Bob,

2021-02-16 20:04:19 13

原创 77. 组合(回溯算法)

77. 组合题目解题思路代码题目给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。解题思路来理解一下题目:输入 n = 4, k = 2,输出如下结果,顺序无所谓,但是不能包含重复(按照组合的定义,[1,2] 和 [2,1] 也算重复),所以要用一个start变量来控制不出现重复的组合。然后画出决策树,套用模板即可。代码class Solution { List<List<Integer>> res = new LinkedLis

2021-02-16 19:55:20 14

原创 46. 全排列(回溯算法)

46. 全排列题目解题思路代码题目给定一个 没有重复 数字的序列,返回其所有可能的全排列。解题思路画出决策树我们只需要套用模板,把叶子结点的值加入res就可以了。注意: 排列问题每次通过 contains 方法来排除在 track 中已经选择过的数字;代码class Solution { List<List<Integer>> res=new LinkedList<>(); public List<List<Integer&

2021-02-16 19:34:07 10

原创 78. 子集(回溯算法)

78. 子集题目解题思路代码题目给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。解题思路画出决策树,然后直接套用模板就可以了,注意就是用一个start变量控制一下,排除已经选择过的数组。代码class Solution { List<List<Integer>> res = new LinkedList<>(); public List&

2021-02-16 19:21:19 21

原创 51. N 皇后(回溯算法)

51. N 皇后题目解题思路代码题目n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。解题思路我们先来简化一下题目:棋盘中皇后可以攻击同一行、同一列,或者左上、左下、右上、右下四个方向的任意单位。现在给你一个NxN的棋盘,让你放置N个皇后,使得它们不能互相攻击,返所有合法的结果。

2021-02-16 18:27:27 5

原创 887. 鸡蛋掉落(动态规划)

887. 鸡蛋掉落题目解题思路代码题目你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X <= N)。你的目标是确切地知道 F 的值是多少。无论 F 的初

2021-02-16 16:48:46 11

原创 518. 零钱兑换 II(动态规划)

518. 零钱兑换 II题目解题思路代码题目给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。注意:你可以假设:0 <= amount (总金额) <= 50001 <= coin (硬币面额) <= 5000硬币种类不超过 500 种结果符合 32 位符号整数解题思路这是完全背包问题。背包问题,状态两种,不多说了。需要二维数组dp数组含义也差不多。dp[i][j]:只使用前i个物品,当背包容量为j

2021-02-15 16:15:20 7

原创 416. 分割等和子集(动态规划)

416. 分割等和子集题目解题思路代码题目给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200解题思路这题可以转换为背包问题:要求数组可否被分割成两个元素相同的子集,那不就是要求是否有子集的和是原来和的一半。即 背包容量为sum的一半,从数组中拿出元素放入背包,能否恰好把背包放满。这题的状态依旧为两个,因为转化为了背包问题,还是可选择的元素,和背包容量,所以需要一个二维的dp数

2021-02-15 14:49:51 15

原创 0-1背包问题基础版

0-1背包问题基础版题目解题思路代码题目有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w 和价值 v。其中第i个物品的的重量为wt[i],价值为val[i]。现在你用这个背包装物品,最多能装的价值是多少?例如:N=3,W=4wt=[2,1,3]val=[4,2,3]算法返回6,选择前两件物品放入背包,总重量3<W,可以获得最大价值为6解题思路该题有两个状态,背包的剩余体积,可以选的物品,所以我们需要一个二维的dp数组dp数组含义:dp[i

2021-02-15 14:04:51 15

原创 312. 戳气球(动态规划)

312. 戳气球题目解题思路代码题目有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。 这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。求所能获得硬币的最大数量。提示:n == nums.length

2021-02-15 13:30:46 11

原创 651. 4键键盘(动态规划)

651. 4键键盘题目解题思路代码题目假设你有一个特殊的键盘包含下面的按键:Key 1: (A):在屏幕上打印一个 'A'。Key 2: (Ctrl-A):选中整个屏幕。Key 3: (Ctrl-C):复制选中区域到缓冲区。Key 4: (Ctrl-V):将缓冲区内容输出到上次输入的结束位置,并显示在屏幕上。现在,你只可以按键 N 次(使用上述四种按键),请问屏幕上最多可以显示几个 'A’呢?样例 1:输入: N = 3输出: 3解释: 我们最多可以在屏幕上显示三个'A'通过

2021-02-15 11:15:20 9

原创 RBAC权限模型及落地实现

RBAC权限模型及落地实现RBAC权限模型落地实现RBAC权限模型概念: 基于角色的权限管理(Role- Based access contro)比如在项目中有一些对象:然后有一些行为,存放在行为表中:那么,操作和对象组合起来就是权限,存储在权限表中:比如id为1的权限概念为:允许添加用户然后把权限分配给角色,我们用户只需要关联角色就行了。比如平常电脑的普通用户,超级管理员就是两个不同的角色,拥有不同的权限。角色表:用户表:落地实现一般选择使用Shiro来实现权限认证。

2021-02-11 18:35:20 18

原创 Linux的IO模式

Linux的IO模式概念说明进程的阻塞文件描述符fd缓存 I/OIO模式阻塞 I/O(BIO)非阻塞 I/O(NIO)I/O 多路复用( IO multiplexing)异步 I/O(AIO)区别 本文讨论的背景是Linux环境下的network IO。概念说明在进行解释之前,首先要说明几个概念:进程的阻塞文件描述符缓存 I/O进程的阻塞正在执行的进程,由于期待的某些事件未发生,如请求系统资源失败、等待某种操作的完成、新数据尚未到达或无新工作做等,则由系统自动执行阻塞原语(Block),

2021-02-10 16:20:57 11

原创 微信支付

微信支付流程和参数流程生成微信平台的支付订单用户为支付订单付款参数生成支付订单的AP参数生成支付订单的API结果支付回调的参数支付回调返回结果微信支付接口规则说明微信支付接口参数通用说明流程和参数流程生成微信平台的支付订单和购物订单并不是一回事,它记录了什么时候,哪一个用户向哪一个商户付款,用户为支付订单付款确认支付后小程序又会向微信平台发起一次请求,来验证金额等信息是不是正确的,防止商家篡改金额。确认无误就可以支付了。参数生成支付订单的AP参数随机字符串可以用微信提供的SDK程

2021-02-10 13:05:19 139

原创 redis五种数据结构底层实现

redis五种数据结构底层实现Stringlisthashsetzset对应结构的讲解动态字符串SDS空间预分配惰性空间释放int双向链表ziplist哈希表intset跳表性质String其中:embstr和raw都是由SDS动态字符串构成的。唯一区别是:raw是分配内存的时候,redisobject和 sds 各分配一块内存,而embstr是redisobject和raw在一块儿内存中。listhashsetzset对应结构的讲解动态字符串SDSSDS是”simple dyn

2021-02-09 23:10:44 17

原创 乐观锁、悲观锁

乐观锁、悲观锁基本概念实现方式优缺点和适用场景基本概念乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。悲观锁:悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。实现方式乐观锁和悲观锁是两种思想,它们的使用是非常广泛的

2021-02-09 22:29:06 7

原创 反射

反射概述获取class类的三种方式通过class对象获取类的所有信息反射的应用场景概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.可以简单的理解:比如有一个妃子A和B,妃子B

2021-02-09 22:13:32 5

原创 1312. 让字符串成为回文串的最少插入次数(动态规划)

1312. 让字符串成为回文串的最少插入次数题目解题思路代码题目给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。请你返回让 s 成为回文串的 最少操作次数 。「回文串」是正读和反读都相同的字符串。解题思路和516. 最长回文子序列思路很相似。还是用一个二维dp数组来解决问题。dp数组定义:对于s[i…j],最少需要插入dp[i][j]次才能变成回文串base case: 单个字符本身就是回文串,所需操作为0次然后分两种情况s.charAt(i) == s.c

2021-02-07 23:54:06 8

原创 516. 最长回文子序列(动态规划)

516. 最长回文子序列题目解题思路代码题目给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。解题思路两种思路:1、第一种思路模板是一个一维的 dp 数组(用在本题比较复杂):写过的例子「最长递增子序列」,在这个思路中 dp 数组的定义是:在子数组 array[0…i] 中,我们要求的子序列(最长递增子序列)的长度是 dp[i]。2、第二种思路模板是一个二维的 dp 数组(本题采用):对 dp 数组的定义是:在子串 s[i…j]

2021-02-07 23:26:25 15

原创 72. 编辑距离(动态规划)

72. 编辑距离题目解题思路代码题目给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符解题思路这是对两个字符串进行动态规划的操作,这种题目的思路就是建立一个二维dp表。本题也是。首先定义dp[][]的含义:存储着s1[0..i-1]、s2[0..j-1]的最小编辑距离。用两个指针分别遍历s1,s2,那么有两种大情况s1[i]==s2[j]此时dp[i]

2021-02-07 22:54:37 11

Mysql调优.xmind

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

2021-01-15

JVM底层原理课件PPT

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

2020-09-11

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

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

2020-05-27

分类专栏上限?

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

空空如也

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

TA关注的人 TA的粉丝

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