- 博客(25)
- 收藏
- 关注
原创 从零开始Git 基础教程
Git 基础教程 1.什么是git 1.1 git简史 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。 什么是版本控制? 什么是版本控制?我为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本书所展
2020-08-29 21:12:55
568
原创 MySQL各存储引擎区别与特点
NDB存储引擎 介绍 2003年,MYSQL AB公司从Sony Ericsson 公司收购了NDB集群引擎 结构 类似于Oracle的RAC集群不过与Oracle RAC share everything 架构不同的是 其结构是share nothing 的集群架构,提供更高的可用性。 特点 数据全部放在内存(从MYSQL5.1版本开始,可以将非索引数据放在磁盘上) 主键查找的速度极快 通过添加...
2020-04-05 09:43:26
1709
原创 浏览器输入网址后会做什么
浏览器输入网址后会做什么 一、DNS域名解析 我们在浏览器输入网址,其实就是要向服务器请求我们想要的页面内容,所有浏览器首先要确认的是域名所对应的服务器在哪里。将域名解析成对应的服务器IP地址这项工作,是由DNS服务器来完成的。 客户端收到你输入的域名地址后,它首先去找本地的hosts文件,检查在该文件中是否有相应的域名、IP对应关系,如果有,则向其IP地址发送请求,如果hosts里没有这个域名的...
2020-03-27 18:11:27
1213
3
原创 LeetCode练习-中等 -[1283. 使结果不超过阈值的最小除数]
给你一个整数数组 nums 和一个正整数 threshold ,你需要选择一个正整数作为除数,然后将数组里每个数都除以它,并对除法结果求和。 请你找出能够使上述结果小于等于阈值 threshold 的除数中 最小 的那个。 每个数除以除数后都向上取整,比方说 7/3 = 3 , 10/2 = 5 。 题目保证一定有解。 示例 1: 输入:nums = [1,2,5,9], threshold = 6 输出:5 解释:如果除数为 1 ,我们可以得到和为 17 (1+2+5+9)。 如果除数为 4 ,我们可以
2021-04-17 17:44:39
239
原创 LeetCode练习-简单 -[1598. 文件夹操作日志搜集器]
每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录。 下面给出对变更操作的说明: "../" :移动到当前文件夹的父文件夹。如果已经在主文件夹下,则 继续停留在当前文件夹 。 "./" :继续停留在当前文件夹。 "x/" :移动到名为 x 的子文件夹中。题目数据 保证总是存在文件夹 x 。 给你一个字符串列表 logs ,其中 logs[i] 是用户在 ith 步执行的操作。 文件系统启动时位于主文件夹,然后执行 logs 中的操作。 执行完所有变更文件夹操作后,请你找出 返回主
2021-04-17 17:37:27
220
原创 LeetCode练习-简单 -[1160. 拼写单词]
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。 注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。 返回词汇表 words 中你掌握的所有单词的 长度之和。 示例 1: 输入:words = ["cat","bt","hat","tree"], chars = "atach" 输出:6 解释: 可以形成字符
2021-04-12 19:33:28
225
原创 LeetCode练习-简单 -[342. 4的幂]
LeetCode练习-简单 -[342. 4的幂] 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x 示例 1: 输入:n = 16 输出:true 示例 2: 输入:n = 5 输出:false 示例 3: 输入:n = 1 输出:true 提示: -231 <= n <= 231 - 1 进阶: 你能不使用循环或者递归来完成本题吗? 思路一:递归 递归进
2021-03-30 18:19:35
143
原创 LeetCode练习-简单 -[448. 找到所有数组中消失的数字]
LeetCode练习-简单 -448. 找到所有数组中消失的数字 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] 思路一:Map映射 思路:标记上每一个出现的数字,第二次循环判断是否出
2020-11-28 15:40:16
122
原创 LeetCode练习-中等 - [322. 零钱兑换]
LeetCode练习-中等 - 322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 示例 1: 输入:coins = [1, 2, 5], amount = 11 输出:3 解释:11 = 5 + 5 + 1 示例 2: 输入:coins = [2], amount = 3 输出:-1 示例 3: 输入:coins = [1], am
2020-10-14 15:13:37
162
原创 LeetCode练习-中等 - 300. 最长上升子序列
LeetCode练习-中等 - 300. 最长上升子序列 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。 进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗? 思路一:暴力 时间复杂度: O(2^N) 空间复杂度: O(N) 这也
2020-10-11 22:40:13
175
原创 LeetCode练习-简单 -152. 乘积最大子数组(动态规划)
LeetCode练习-简单 -152. 乘积最大子数组(动态规划) 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 分析: dp原理:dp[i,0] = if nums[i]>=0
2020-08-29 18:52:20
241
原创 Shell笔记1-bash数学运算
bash数学运算 1.expr $num1 operator $num2 ~$ num1=2 ~$ num2=4 ~$ expr $num1 > num2 ~$ expr $num1 \> num2 0 ~$ expr $num1 + $num2 6 ~$ expr $num1 \* $num2 8 ~$ expr $num1 % $num2 2 ~$ expr $num1 = $num2 0 ~$ expr $num1 != $num2 1 ~$ expr $num1 >= $nu
2020-08-29 10:48:30
215
原创 LeetCode练习-中等 -120. 三角形最小路径和(动态规划)
LeetCode练习-中等 -120. 三角形最小路径和 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来
2020-08-16 10:14:14
201
原创 LeetCode练习-简单 -70. 爬楼梯(动态规划)
LeetCode练习-简单 -70. 爬楼梯(动态规划) 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶 3. 2 阶 + 1 阶 分析: dp原理:
2020-08-12 21:55:57
183
原创 初探-动态规划思想
动态规划(Dynamic Programming) 动态规划原理 基本思想:问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题的最优解,在构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解。 使用条件:可分为多个相关子问题,子问题的解被重复使用 Optimal substructure(优化子结构): 一个问题的优化解包含了子问题的优化解 缩小子问题集合,只需那些优化问题中包含的子问题,降低实现复杂性 我们可以自下而上的 Subteties(重叠
2020-08-12 21:55:29
212
原创 Shell笔记1-命令替换
命令替换 命令替换:将命令的输出结果作为值赋给某个变量 `command` 例: 获取系统得所有用户并输出 #cut--切割 -d 根据 -f 取第几列 ~$ cat /etc/passwd | cut -d ":" -f 1 #!/bin/bash # index=1 for user in `cat /etc/passwd | cut -d ":" -f 1` do echo "This is $index user: $user" index=$(($index + 1)) done
2020-08-08 19:12:39
205
原创 LeetCode练习-简单 -860. 柠檬水找零
LeetCode练习-简单 -860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。 注意,一开始你手头没有任何零钱。 如果你能给每位顾客正确找零,返回 true ,否则返回 false 。 示例 1: 输入:[5,5,5,10,20] 输出:true 解释: 前 3 位顾客那里,
2020-08-04 20:34:29
290
原创 LeetCode练习-简单 -415. 字符串相加
LeetCode练习-简单 -415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 提示: num1 和num2 的长度都小于 5100 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式 思路一:模拟竖列相加 前后双指针依次从尾部相加进位 复杂度:O(n) func addStrings(num1 string, num2 string) st
2020-08-03 20:28:20
176
原创 经典算法思想-二分查找
二分查找 概念: 二分查找是一种高效的查找方式,不过要求线性表(注意与非线性表之间的区别,具有四个特征)必须采用顺序存储结构(注意不是链式存储结构),并且元素是有序排列的。 要求: 我们要从一个序列中查找一个元素的时候,二分查找是一种非常快速的查找算法,二分查找又叫折半查找。它对要查找的序列有两个要求,一是该序列必须是有序的(即该序列中的所有元素都是按照大小关系排好序的,升序和降序都可以,本文假设是升序排列的),二是该序列必须是顺序存储的。图1展示的就是一个能进行二分查找的序列。 原理: 如果待查序列为
2020-07-26 21:34:33
1529
原创 Shell笔记1-字符串处理
字符串处理 计算字符串长度 ${#string} 例: ~$ echo $var6 /usr/local/sBIN:/usr/local/BIN:/usr/sBIN:/usr/BIN:/sBIN:/BIN:/usr/games:/usr/local/games:/snap/BIN ~$ echo ${#var6} 98 expr length “$string” 例: ~$ expr length "$var6" 98 获取字符索引位置 expr index “$string” substr
2020-07-26 09:16:02
184
原创 Shell笔记1-变量替换
变量替换 ${变量#匹配规则} # 从头开始匹配, 最短删除 ${变量##匹配规则} # 从头开始匹配, 最长删除 例: variable_1="I love you , Do you love me" ~$ var1=${variable_1#*ov} ~$ echo $var1 ~$ e you, Do you love me ~$ var2=${variable_1##*ov} ~$ echo $var2 ~$ e me
2020-07-24 22:03:22
226
原创 LeetCode练习-简单 -1413. 逐步求和得到正数的最小值
LeetCode -1413. 逐步求和得到正数的最小值 给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。 你需要从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组中的值。 请你在确保累加和始终大于等于 1 的前提下,选出一个最小的 正数 作为 startValue 示例 1: 输入:nums = [-3,2,-3,4,2] 输出:5 解释:如果你选择 startValue = 4,在第三次累加时,和小于 1 。 累加求和
2020-07-21 20:22:59
203
原创 LeetCode 练习-简单-167. 两数之和 II - 输入有序数组
LeetCode 167. 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。 示例: 输入: numbers = [2, 7, 11, 15], target = 9 输出: [1,2] 解释: 2 与
2020-07-20 20:32:13
184
原创 LeetCode 练习-简单-1512. 好数对的数目
LeetCode 1512. 好数对的数目 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。 返回好数对的数目。 示例 1: 输入:nums = [1,2,3,1,1,3] 输出:4 解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始 示例 2: 输入:nums = [1,1,1,1] 输出:6 解释:数组中的每组数字都是好数对 示例 3: 输入:
2020-07-19 10:26:27
457
原创 LeetCode练习-简单-35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 思路1: 遍历所有的元素,判断元素排序时应该在的位置,返回其索引值 func searchInsert(nums []int
2020-07-17 15:43:33
197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅