自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Blocking The Sky

prinf("hello

  • 博客(118)
  • 资源 (2)
  • 收藏
  • 关注

原创 ubuntu给用户增加sudo权限并设置sudo免密

添加链接描述

2024-01-25 14:50:05 369 1

原创 Docker自定义镜像

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。Dockerfile的第一行必须是FROM,从一个基础镜像来构建。更新详细语法说明,请参考官网文档:案例1:基于Ubuntu镜像构建一个新镜像,运行一个java项目步骤1:新建一个空文件夹docker-demo步骤2:拷贝docker-demo.jar文件到docker-demo这个目录。

2023-09-22 11:12:00 544

原创 Docker基本操作和相关命令

需求说明:上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html ,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。步骤二:进入nginx的HTML所在目录 /usr/share/nginx/html。步骤三:修改index.html的内容,这里用不了vi命令,容器中没有。我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录。将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全。

2023-09-22 10:44:47 329 1

原创 Docker的相关知识介绍以及mac环境的安装

依赖关系复杂,容易出现兼容性问题开发、测试、生产环境有差异Docker就是来解决这些问题的。Docker是一个快速交付应用、运行应用的技术:可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统。运行时利用沙箱机制形成隔离容器,各个应用互不干扰启动、移除都可以通过一行命令完成,方便快捷。Docker如何解决依赖的兼容问题的?将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包将每个应用放到一个隔离容器去运行,避免互相干扰。

2023-09-22 00:25:52 2649

原创 统一网关Gateway

对用户请求做身份认证、权限校验将用户请求路由到微服务,并对微服务的不同实例实现负载均衡对用户请求做限流gatewayzuulZuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。

2023-09-21 11:19:52 398

原创 http客户端Feign使用

Feign是Spring Cloud提供的声明式的HTTP客户端, 它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一个注解即可。其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。Spring Cloud集成Feign并对其进行了增强,使Feign支持了Spring MVC注解;Feign默认集成了Ribbon,所以Fegin默认就实现了负载均衡的效果。引入依赖添加@EnableFeignClients注解编写FeignClient接口(客户端)

2023-09-18 16:52:40 105

原创 Nacos配置管理

Nacos能够同时实现注册中心以及配置管理服务。1、在Nacos中添加配置信息:2、在弹出表单中填写配置信息:DateID : 服务名称 - profile.后缀名profile就是指当前运行环境,如dev, test。3、点击发布就添加成功一个配置。4、配置获取的步骤如下:bootstrap.yml 的优先级比application.yml更高,项目启动会先读取bootstrap.yml。5、引入Nacos的配置管理客户端依赖:6、在user-service服务的resourc

2023-09-18 12:09:38 1747

原创 Nacos与Eureka的异同

Nacos可以通过spring-cloud-starter-alibaba-nacos-discovery集成到Spring Cloud应用中,但需要额外引入spring-cloud-starter-alibaba-nacos-config来配置Nacos地址等信息,配置较为繁琐。Nacos采用高可用的P2P设计(无主节点),所有的server节点都是同等作用,支持AP和CP两种模式。总之,Nacos在架构设计、功能特性和Spring Cloud集成方面都超越了Eureka,适用于更大规模的服务治理场景。

2023-09-18 00:41:16 474

原创 Nacos安装和入门

Nacos是一个更易于构建云原生应用的和平台。

2023-09-18 00:37:57 296

原创 黑马点评给店铺类型查询业务添加缓存(List实现)

【代码】黑马点评给店铺类型查询业务添加缓存(List实现)

2023-06-28 00:45:58 170 1

原创 黑马点评给店铺类型查询业务添加缓存(String实现)

【代码】黑马点评给店铺类型查询业务添加缓存(String实现)

2023-06-28 00:11:39 136

原创 黑马点评短信登录功能

流程图如下:1、实现2、在3、前端验证码获取成功。

2023-06-18 19:54:48 381

原创 排序算法汇总

一、插入排序1、直接插入排序时间复杂度:O(n^2),稳定代码:void direct_insert_sort(vector<int>& nums){ int i,j; for(i=1;i<nums.size();i++){ int temp=nums[i]; for(j=i-1;j>=0&&nums[j]>temp;j--){//将前面比他大的元素后移一位

2021-09-25 23:09:06 38

原创 剑指 Offer II 113. 课程顺序

现在总共有 numCourses 门课需要选,记为 0 到 numCourses-1。给定一个数组 prerequisites ,它的每一个元素 prerequisites[i] 表示两门课程之间的先修顺序。 例如 prerequisites[i] = [ai, bi] 表示想要学习课程 ai ,需要先完成课程 bi 。请根据给出的总课程数 numCourses 和表示先修顺序的 prerequisites 得出一个可行的修课序列。可能会有多个正确的顺序,只要任意返回一种就可以了。如果不可能完成所有

2021-09-24 22:15:41 104

原创 LeetCode 1361. 验证二叉树

二叉树上有 n 个节点,按从 0 到 n - 1 编号,其中节点 i 的两个子节点分别是 leftChild[i] 和 rightChild[i]。只有 所有 节点能够形成且 只 形成 一颗 有效的二叉树时,返回 true;否则返回 false。如果节点 i 没有左子节点,那么 leftChild[i] 就等于 -1。右子节点也符合该规则。注意:节点没有值,本问题中仅仅使用节点编号。示例 1:输入:n = 4, leftChild = [1,-1,3,-1], rightChild = [2,-

2021-09-24 20:55:07 143

原创 LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。二分查找class Solution {public: int binary_search_begin(vector<int>& nums, int target){//找到第一个位置 int mid; int low=0; int high=nums

2021-09-23 00:22:27 66

原创 LeetCode 310. 最小高度树

class Solution {public: vector<int> findMinHeightTrees(int n, vector<vector<int>>& edges) { vector<int> minvex; if(n==1){ return {0}; } else if(n==2){ return {0,1};

2021-09-22 21:45:05 59

原创 LeetCode 133. 克隆图

给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。深度优先搜索class Solution {public: unordered_map<Node*,Node*> visited; //记录原节点对应的新图中的克隆节点 Node* cloneGraph(Node* node) //递归一定要弄清楚函数的返回值是什么,这儿返回值是node节点对应的克隆图中的节点

2021-09-22 19:06:36 109

原创 LeetCode 743. 网络延迟时间

有 n 个网络节点,标记为 1 到 n。给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1 。迪杰斯特拉算法class Solution {public: int networkDelayTime(vector<vector<

2021-09-22 13:39:22 171

原创 LeetCode 547. 省份数量

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。深度优先搜索class Solution

2021-09-22 12:48:57 68

原创 判断是否是平衡二叉树

class Solution {public: int height(TreeNode* root){//求当前结点高度 if(root==NULL){ return 0; } else return max(height(root->left),height(root->right))+1; } bool isBalanced(TreeNode* root) {

2021-09-20 23:53:13 51

原创 输出有向无环图的所有路径

class Solution {public: void findpath(vector<vector<int>>& graph,int start,int end,vector<int>& path,vector<vector<int>>& allpath){ path.push_back(start); if(start==end){ allpath.pu

2021-09-20 22:25:00 666

原创 输出从顶点Vi到Vj的所有简单路径

class Solution {public: bool visited[20]; void init(){ for(int i=0;i<20;i++) visited[i]=false; } int firstarc(vector<vector<int>>& graph,int v){//返回v相邻的第一个结点 int p=-1; if(graph[v].size

2021-09-20 21:59:23 1397

原创 LeetCode 797. 所有可能的路径

给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a 。class Solution {public: bool visited[20]; void init(){ for(int i=0;i<20;i++)

2021-09-20 21:58:19 107

原创 LeetCode 617. 合并二叉树

class Solution {public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if(root1==NULL&&root2==NULL) return NULL; else if(root1==NULL) return root2; else if(root2==NULL) retu

2021-09-19 22:05:30 51

原创 LeetCode 103. 二叉树的锯齿形层序遍历

给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。class Solution {public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>> result; queue<TreeNode*> q; stack<

2021-09-19 21:06:48 46

原创 二叉树自下往上层次遍历

给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层序遍历为:[ [15,7], [9,20], [3]]/** * Definition for a binary tree node. * struct TreeNode { * int val;

2021-09-19 20:55:23 426

原创 LeetCode 107. 二叉树的层序遍历 II

给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层序遍历为:[ [15,7], [9,20], [3]]/** * Definition for a binary tree node. * struct TreeNode { * int val;

2021-09-19 20:54:58 53

原创 LeetCode 101. 对称二叉树

class Solution {public: bool equal(TreeNode* left,TreeNode* right){ if(left==NULL&&right==NULL) return true; else if(left==NULL||right==NULL) return false; return (equal(left->left,right->r

2021-09-19 01:40:07 57

原创 LeetCode 100. 相同的树

class Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) { if(p==NULL&&q==NULL)//到空节点返回true return true; else if(p==NULL||q==NULL)//两个不同时为空返回则不相同 return false; else { if(isSa

2021-09-19 01:14:00 67

原创 二叉树的层次遍历

class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { TreeNode* p; vector<vector<int>> result; if(root==NULL) return result; queue<TreeNode*> q; q.pus

2021-09-19 00:53:28 59

原创 二叉树后序遍历

堆栈非递归实现class Solution {public: vector<int> result; vector<int> postorderTraversal(TreeNode* root) { stack<TreeNode*> s; TreeNode *p; p=NULL; while(root||!s.empty()){ if(root){

2021-09-19 00:44:02 55

原创 二叉树中序遍历

堆栈非递归实现class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { TreeNode* p; vector<vector<int>> result; if(root==NULL) return result; queue<TreeNode*> q;

2021-09-19 00:14:40 48

原创 二叉树先序遍历

非递归堆栈实现class Solution {public: vector<int> result; vector<int> preorderTraversal(TreeNode* root) { stack<TreeNode*> s; //根左右先序遍历 while(root||!s.empty()){ if(root){ result.push_

2021-09-18 23:39:03 44

原创 LeetCode 145. 二叉树的后序遍历

给定一个二叉树,返回它的 后序 遍历。1、递归实现class Solution {public: vector<int> result; void PostOrder(TreeNode* root){ if(root){ PostOrder(root->left); PostOrder(root->right); result.push_back(root->val);

2021-09-16 15:39:20 46

原创 LeetCode 94. 二叉树的中序遍历

给定一个二叉树的根节点 root ,返回它的 中序 遍历。1、递归class Solution {public: vector<int> result; void InOrder(TreeNode* root){ if(root){ InOrder(root->left); result.push_back(root->val); InOrder(root->right

2021-09-16 15:14:36 40

原创 LeetCode 144. 二叉树的前序遍历

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。1、递归class Solution {public: vector<int> result; void PreOrder(TreeNode* root){ if(root){ result.push_back(root->val); PreOrder(root->left); PreOrder(root->r

2021-09-16 14:58:07 48

原创 Leetcode 300. 最长递增子序列

题目描述给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。代码class Solution {public: int lengthOfLIS(vector<int>& nums) { vector<int> dp (nums.size(),1); for(i

2021-06-16 01:21:01 84

原创 LeetCode 61. 旋转链表

题目描述给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]代码思路先把k对链表长度取余,再遍历找到第n-k个结点,它的下一个结点就是最终链表的第一个结点,最后只需将最后一个结点的next指向最初链表的第一个结点即可,之后要将第n-k个结点的next置为NULL。/** * Definition for singly-linked list. * struct Lis

2021-06-13 16:52:17 49

原创 LeetCode 2. 两数相加

题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.代码/** * Definition for singly-linked list. * struct ListNode {

2021-06-13 15:44:36 54

操作系统.pdf

操作系统.pdf

2021-04-29

samar天气.zip

超级精美的天气微信小程序+源码,

2020-07-14

空空如也

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

TA关注的人

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