Redis入门
Redis入门
设置连接密码打开redis根目录下的redis.windows.conf,找到requirepass这一行,可以看到其默认是注释掉的,解开注释,然后输入自己想要设置的密码保存就可以了。
设置密码后,在输入命令时会提示没有认证
输入密码:
当然也可以在登录的时候输入密码:
虽然会提示不安全
设置远程连接完整的登录命令
redis-cli.exe -h localhost -p 6379 -a 123456
-h :加IP地址
-p :加端口号
-a : 加密码
要想实现远程连接,需要再次打开配置文件,在里面搜索下面这条命令:
该命令意思是只允许127.0.0.1连接,直接注释掉然后保存退出。
Redis常用数据类型Redis里面存储的是key-value结构的数据,其中key为字符串,value可以是一下几种数据类型:
字符串string
哈希 hash (用来存储对象)
列表 list
集合 set
有序集合 sorted set
常用命令string类型:
set key value :设置键值
get key : 获得键对应的值
setex key ...
Linux教程
Linux教程环境为ubuntu20
常用命令
序号
命令
作用
1
ls
查看当前目录下的内容
2
pwd
查看当前所在目录
3
cd [目录名]
切换目录
4
touch [文件名]
如果文件不存在,则创建
5
mkdir [目录名]
创建目录
6
rm [文件名]
删除文件
命令使用小技巧
tab 自动补全 连续两次tab给出操作提示
上下箭头给出历史命令
clear 或者 ctrl + l清屏
命令格式
command [-options] [parameter]
[-options] : 选项,对命令进行控制
[parameter]:命令所需参数
ls 命令l [-a|-l|-al] [dir]
-a: 列出所有
-l:详细信息
ls -l 可以简写为 ll
cd 命令cd [dirName]
特殊符号:
~:home目录
. :当前目录
.. :上一级
cat命令cat [-n] fileName
-n: 编号
more命令more filename
已分页形式展示文件内容
回车 向下一行
空格 向下一屏
b ...
Git教程
Git基础教学笔记简介
git是一个分布式版本控制工具,通常用来管理源代码。
git可以管理两种仓库:本地仓库 & 远程仓库
基本的命令有:commit : 提交,将本地文件和版本信息保存到本地仓库
push:推送,将本地仓库上传到远程仓库
pull:拉取,下载远程仓库到本地仓库
首先安装完git后,首先要做的就是配置你的用户名和email地址。
命令:
git config –global user.name “***”
git config –global user.email “***”
查看配置信息
git config –list
本地初始化仓库方法一:本地运行
git init
方法二:通过命令克隆已有仓库
git clone + “地址”
工作区,暂存区,版本库版本库:就是我们本地目录中的.git文件,里面包含了很多配置信息,日志,和文件版本信息(不要动)
工作区:包含.git的文件目录
暂存区:位于.git的index下,用于临时保存修改文件
文件的两种状态
untracked未跟踪(未纳入版本控制)(git不会管理该文件)
tracked ...
力扣阶段性总结(1~30)
刷题阶段性回顾(Day1~30)Day1合并两个有序数组题目:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
回顾解读:本题关键就是合并后的数组也是有序的,顾设两个指针i,j分别用来遍历nums1和nums2,将其中的较小(或大)者插入到新数组中,同时做插入的数组指针进行移动,不做插入的不移动。
有个关键就是,在循环结束后,可能会存在某个数组中的值还有剩余,此时需要再设置循环,将剩余的值插入的新数组中。
收获:
vector数组的创建方法:vector nums(m + n);
Day2移除元素题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val ...
力扣每日一题Day34
跳脱常规激发更多的创造力,同时可以造就不凡的成功。
题目描述:旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在** 原地** 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
解题代码:123456789101112131415class Solution {public: void rotate(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = 0; i < n / 2; i++) { for (int j = 0; j < (n + 1) / 2; j++) { int tmp = matrix[i][j]; matrix[i][j] = matrix[n - 1 - j][i]; ...
力扣每日一题Day33
成功的人主宰时间,失败的人被时间主宰。
题目描述:螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
解题代码:12345678910111213141516171819202122232425262728class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> res; if (matrix.empty()) return {}; int top = 0, left = 0,right = matrix[0].size()-1,bottom = matrix.size()-1; while(true){ for(int l = left;l<=right;l++){ res. ...
力扣每日一题Day32
生命短暂,而你可以决定让它活出灿烂。
题目描述:有效的数独
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
解题代码:123456789101112131415161718192021222324252627282930class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { // 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 // 数字 1-9 在每一行只能出现一次。 // 数字 1-9 在每一列只能出现一次。 // 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) int ...
力扣每日一题Day31
没有什么是不可能的 ; 这个词本意就是“我有一切可能” 。
题目描述:串联所有单词的子串
给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。
s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。
例如,如果 words = ["ab","cd","ef"], 那么 "abcdef", "abefcd","cdabef", "cdefab","efabcd", 和 "efcdab" 都是串联子串。 "acdbef" 不是串联子串,因为他不是任何 words 排列的连接。
返回所有串联子串在 s 中的开始索引。你可以以 任意顺序 返回答案。
解题代码:1234567891011121314151617181920212223242526272829303132333435363738394041class Solu ...
力扣每日一题Day30
在有说服力的演讲,讯息的传递不是由口到耳,而是由心到心。
题目描述:无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
解题代码:12345678910111213141516171819class Solution {public:// "abcabcbb" int lengthOfLongestSubstring(string s) { int ans = 0; int i = 0; int tag; for(int j = 0; j < s.length(); j++){ for(tag = i; tag < j; tag++){ if(s[tag] == s[j]){ i = tag + 1; break; } ...
力扣每日一题Day29(滑动窗口)
永远无法保证有人会喜欢你。 所以如果有人喜欢你,你就已经赢了。
题目描述:长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
解题代码:1234567891011121314151617181920class Solution {public: int minSubArrayLen(int target, vector<int>& nums) { int i = 0; int ans = INT_MAX; int sum = 0; for(int j = 0; j < nums.size(); j++){ sum += nums[j]; while(sum >= target){ ...
力扣每日一题Day28
遇到失败绝不要一走了之,相反的,为其隐藏的资产仔细并有想像力的研究。
题目描述:三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请
你返回所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
解题代码:12345678910111213141516171819202122232425262728293031class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> ans; if (nums.size() < 3) return ans; sort(nums.begin(), nums.end()); ...
力扣每日一题Day27
当你把自已交给愿景后,成功开始追逐你。
题目描述:盛最多水的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
解题代码:123456789101112131415class Solution {public: int maxArea(vector<int>& height) { // 因为两个板之间能容的下的最大水量是由短板决定的 // 所以每次只移动短板,这样最终结果可能变大或者不变 int i = 0, j = height.size() - 1; int ans = 0; while(i < j){ ans = height[i] < height[j] ? max(ans, (j - i) * h ...