- 博客(122)
- 收藏
- 关注
原创 VUE3结合ElementPlus的过程
首先在前端项目的依赖列表中加入Elemen的依赖},},使用npm install 完成资源的加载在项目的man.js 中引入ElementUI。
2023-08-16 14:09:07
267
原创 SpringCloud容器化部署的网络问题
9448端口映射出来的宿主机端口也应该比8848映射的宿主机端口大1000,而9849映射出来的端口比9848端口映射出的宿主机端口大1,如果没有按照这样的规则的话,应用服务注册服务的时候还是会报上面的错。,因为如果把当前应用注册到nacos中,后面网关的请求也会根据nacos中注册的信息路由到对应的服务,但是默认的路由位置还是那个内网IP,实际上这样走不通。要改成自己的nacos的ip和映射出来的端口号,格式可能和我的不太一样,内容是对的就可以了。此时制作此应用服务的镜像。可以看到的是,这里的ip是。
2023-07-24 16:36:29
324
原创 Docker基本使用
下面是一个实际的脚本例子,可以结合此脚本学习DockerFile的编写过程,熟悉上面提到的语法。项目结构大概如此,DockerFile位置在于模块的根目录,与之同级的还有src源代码目录,target目标文件目录。此时对应的DockerFile文件的具体内容如下。
2023-07-24 16:34:06
362
原创 Centos安装图形化界面
使用镜像在虚拟机中安装的Linux系统是默认只能使用命令行操作的,但是有时候还是桌面窗口操作更加方便,所以需要给这个系统安装一个图形化界面。
2023-05-24 10:46:31
1707
原创 Centos网络问题 network is unreachable
在VM上安装了一个Centos7的虚拟机,安装过后准备使用yum安装一些软件,但是出现了network is unreachable。
2023-05-24 10:26:01
1883
1
原创 并查集与向量
一些真理所以并查集到底是啥,是一个树?是一个连通分量?其实我们可以认为这是一个向量。为什呢?我们来看这个图。假设存在关系A-B、B-C,根据这两个关系去构建并查集得到的结论不就是A-C有关系吗?实际上就是两个向量做加法,并查集的路径压缩就是在做这件事,向量路径缩短了,查询的速度自然而然就快起来了。而之前纠结的连通性问题其实就是向量存不存在的问题,换个角度来看,别有一番风味。结合一下实际,看一下一个经典案例。http://poj.org/problem?id=1182食物链问题,大意是某处存在三类生
2022-04-30 08:29:16
181
原创 路径压缩和按秩合并
更快更高更强路径压缩细心的同学可以已经注意到了,上一章节的最后一个题目的代码出现了路径压缩这个东西,这里就来说说怎么让并查集更加健壮。首先来说,原先的查找过程中可以看到是一个循环向前查询的过程,但是如果情况比较糟糕,最终的结构搞成了一字长蛇阵,那么查询效果就会不尽如人意,所以有无办法优化呢,其实可以在查询到最终结果时将路径上的所有节点的直接上级改成查询出的最终上级,并查集构造过程中不断优化现有结构,就会得到一个比较优秀的查询结果,从数据结构的角度来看—维护的树深度缩短了。这就是路径压缩。//查找祖先
2022-04-30 08:26:53
368
原创 并查集应用
Code的秘诀这里再想一件事,并查集到底能用在何处?什么时候我们会用到?其实就是三个字,连通性,如果涉及到了连通性,可能就会用到并查集,当然也有一些问题比较隐晦,我们后来在说。举一个例子。连通性问题http://poj.org/problem?id=2236这个是POJ的一个题目,大意就是给定了一系列计算机的位置,但是此处的计算机都是坏掉的计算机,不能正常工作。后续有输入O x代表修理第x个机器,使其具有联网功能但是两台计算机之间的距离不能超过距离D,后续有输入S x y 代表检查x和y两台机器是
2022-04-30 08:25:04
158
原创 并查集漫谈
武林风云录在王者大陆上,存在着很多派系,大家各自有各自的领袖。不同门派的帅小伙没什么正经工作,在峡谷里面溜达,见面以后往往会在物理上打成一片,但是由于派系里面都是体面人,大家不会打朋友的朋友,而且大家都只知道自己的直接上级。比如木兰和凯的关系比较好,拉拢一伙人自成了一派,号称长城守卫军,有一天盾山看到了凯,由于互相不熟,两个就想比划比划,但是打之前,他们会先确定一下各自是否在一个派系,盾山问了一下上级守约,守约说自己的上级是花木兰且木兰没有上级了,盾山报出自己的最终上级是木兰,凯也报出来自己的上级是木兰。
2022-04-30 08:23:15
167
原创 BIO、NIO和AIO的Java实现与研究
基于Reactor的网络通信模型的相关研究名词解释还是先从最简单的两个内容说起:同步和异步、阻塞和非阻塞。这两个概念在网络上可以说是千人千面,每人都能说出来个自己的理解,然后在评论区开始各种撕,在这里就简单说一下我自己的理解,如果我说的不对,那我有罪,我先说了。同步与异步同步和异步描述的是通信双方通信方式的差异。如果调用方发起调用后被调用方都直接返回,而在真正完成后,再通过回调函数等模式告知调用者结果,这种方式就是异步通信。反之,如果调用方发起请求后被调用方在处理完毕后再带着结果返回,这种方式称之
2021-11-15 16:25:35
266
原创 2021-11-12
基于Reactor的网络通信模型的相关研究名词解释还是先从最简单的两个内容说起:同步和异步、阻塞和非阻塞。这两个概念在网络上可以说是千人千面,每人都能说出来个自己的理解,然后在评论区开始各种撕,在这里就简单说一下我自己的理解,如果我说的不对,那我有罪,我先说了。同步与异步同步和异步描述的是通信双方通信方式的差异。如果调用方发起调用后被调用方都直接返回,而在真正完成后,再通过回调函数等模式告知调用者结果,这种方式就是异步通信。反之,如果调用方发起请求后被调用方在处理完毕后再带着结果返回,这种方式称之
2021-11-12 14:24:17
754
原创 IOS-Framework的开发
IOS-Framework的开发最近公司的蓝牙功能要给一个外包公司用,所以要进行原先代码的封装,把原先的功能代码封装成一个SDK,暴露给别的开发者使用,我就又开始制作这个SDK了,不过看起来挺简单的一件事情却废了很多周折。首先第一个坑:swift语言不能用来制作静态库。这也是我写完才发现的,刚开始搞了一个.a文件,搞了半天以为做好了,结果死活用不成,后来才知道要用swift写成包给别人用的话,只能用framework然后就开始了第二个坑,因为原先的代码里面用到了OpenCV,所以我就在这个framew
2021-09-08 18:07:53
266
原创 leetcode-丑数 II
leetcode-丑数 II题目链接:题目链接题目大意就是,给定一个数字n,获取到第n个丑数,关于丑数的定义可以参考一下上一篇博客。关于这个问题,我是不太会做的,之前听一个同学说是打表做出来的,不过还是要解决问题的,下面介绍一下之前看过的一种思路: 三指针,对于这个题目来说对于大部分丑数来说,他都可以由一个比较小的丑数通过乘以2/3/5的形式得到,所以我们可以姑且看作是三匹马,下等马,中等马,上等马,三种马的奔跑速度分别是2, 3, 5,可以让三匹马一起出发,往后跑,但是如果其中一匹马跑得过快的话,需
2021-08-30 17:01:28
97
原创 leetcode-丑数
leetcode-丑数题目链接:题目链接题目大意就是定义一类新的数,名字叫做丑数,这类数字仅由2,3,5三个质因数相乘得到,题目给定一个数字,判断是否为丑数。理论上判断丑数的方法是比较简单的,把一个数字循环的被2,3,5除,最后的结果如果是1,则表示这个数是丑数,否则就不是,所以在编码上面还是比较简单的public boolean isUgly(int n) { if(n == 0) { return false; } while(n % 2 == 0
2021-08-30 16:19:09
86
原创 leetcode-乘积为正数的最长子数组长度
leetcode-乘积为正数的最长子数组长度题目链接:题目链接题目大意是给定一个数组,求出乘积为正数的最长子数组的长度。这个思路和上一个题目一样,也要设置两个数组,不过这边的两个数组positiveDP[i],negativeDP[i]就分别表示以当前元素nums[i]结尾,所能得到的乘积为正数/负数的最长子数组的元素个数,不难看出如果当前元素nums[i]是正数,那么positiveDP[i]可以在原先的基础上增加一位。negativeDP[i]则也有可能加上1,不过这要取决于negativeDP[
2021-08-30 14:36:51
210
原创 leetcode- 乘积最大子数组
leetcode- 乘积最大子数组题目链接:题目链接题目的大意就是有一个数组,找出数组中连续乘积最大的子数组的乘积。数组中的数字有正有负,所以乘法版本的这样的dp是不好做的,不过万能的题解区还是出现了一些有趣的东西,那就是维护两个dp数组,其中maxDP[i],minDP[i]分别表示以nums[i]结尾时,最大的乘积和最小的乘积,为什么要加一个minDP呢,就是为了解决前后两个负数,负负得正的问题。在每一次的计算过程中,只需要记录maxDP数组中的最大值就可以得到最终的结果下面是我的一些代码p
2021-08-30 14:16:33
139
原创 leetcode-删除并获得点数
leetcode-删除并获得点数题目链接:题目链接题目大意:给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。先来一组数据,方便后面,[2,2,3,3,3,4]这里需要在原先数组的基础上得到一个临时数组arr,这个数组以nums里面的数字为下标,以其中的数字出现次数为
2021-08-30 10:00:05
171
原创 leetcode-跳跃游戏
leetcode-跳跃游戏跳跃游戏:题目链接题目大意是给定一个数组,数组里面的每一个数字代表在这个位置上能够向后移动的最大距离,求从起点0出发以后,是否能够到达终点。这个题目也是用动态规划来做的,不妨设置dp[i]为当前位置i所能到达的最远距离,对于初始位置dp[0] = nums[0]。对于当前位置dp[i]存在两种可能,如果自己的位置能量比较大,可以直接向后辐射,那么能够辐射到的范围就是[i, i+nums[i]],当然也有可能他自己的能量不够大,需要借一下前面的大佬的光,所以能辐射到的范围就是[
2021-08-30 09:40:27
97
原创 leetcode-买卖股票的最佳时机
leetcode-买卖股票的最佳时机题目链接:题目链接题目的大意是进行给定一个数组作为股票的价格,选择两个下标作为买入和卖出的日期,求取能够获取到的最大利润。最开始做的时候,直接开始了暴力的做法,对于每一个价格prices[i]向后寻找最大的价格prices[j]最后得到最大的收益maxValue = prices[j] - prices[i],这样做的时间复杂度是O(n*n)但是是可以通过的public int maxProfit(int[] prices) { int resul
2021-08-30 09:23:49
104
原创 leetcode-编辑距离
leetcode-编辑距离题目链接:题目链接题目大意是给定两个字符串,求将第一个字符串变换成第二个字符串所需要的最少步骤数,其中变换可以是以下三种方式的一种插入一个字母删除一个字母替换一个字母这里要先去定义dp数组,我么定义dp[i][j]为当字符串 word1 的长度为 i,字符串 word2 的长度为 j 时,将 word1 转化为 word2 所使用的最少操作次数为 dp[i] [j],那么对于这里的初始状态我们依旧暂时只能想到dp[0][0] = 0这一种,我们先来解决状态转移方程的
2021-08-25 19:37:57
109
原创 leetcode-不同路径
leetcode-不同路径题目链接:题目链接题目大意是存在一个二维矩阵,从左上角起点出发,求到达右下角终点的总路径条数。看到二维矩阵的话,首先想到的dp数组应该是二维的,我们使用dp[i][j]表示从起点到达point(i,j)位置有的路径条数,确定了数组以后,我们继续确定初始条件,对于dp[0][0]此时机器人在起点的位置,我们认为此时只有一条路径,令dp[i][j] = 0,那除此之外的其他初始条件呢,不好想的话,可以先不想,开始设计状态转移方程,对于dp[i][j]代表的位置,他可能由左边的位置
2021-08-25 19:22:31
133
原创 leetcode-打家劫舍
leetcode-打家劫舍这几天在宿舍刷leetcode,开了一个dp的专题,先来说说官方的回答:dp全称是Dynamic programming,说人话就是,现在有一个问题,需要我们做出一个决定,达到一种最优解,但是这个问题比较大,我们无法一下子做出决定,但是这个问题遵循数学归纳法,即我们可以从一个状态推至下一个状态,那么在我们确定了问题的初始状态时,就可以一步步得到问题的最终状态。在dp的世界里,有两个关键的问题,一个是问题的初始状态,另一个是当前状态推至下一个状态的关系,我们称之为状态转移方程。
2021-08-25 18:53:59
151
原创 诡异的开发
诡异的开发今天开发遇到了一件很奇怪的事情,同样一个测试,断电位置的不同导致最后的运行结果也会不一样,现在记录一下,如果有大佬看到了,可以帮忙解答一下。先来看第一次运行,我们把断点放到最后的位置可以看到我用红色方框圈起来的位置这是一个运算和它的结果其中dataSize是256,让他右移8位,相当于除以256结果应该是1,但是断点上显示的是0,是不是很奇怪,更奇怪的在后面,我们把断点往上挪点位置,再试一次。可以看出结果已经开始诡异了,此时的结果是1了,那可能有人会说现在还走到最后一行,可能中间有什么
2021-08-12 13:41:30
109
原创 leetcode-把字符串转换成整数
leetcode-把字符串转换成整数题目链接:题目传送门题目的大意就是,有一个字符串,要将其中存在的数字部分挑拣出来,转化成一个数字,类似于Integer.parse()函数,但是他有几个有趣的地方,输入的字符串可能含有非数字的部分,要进行筛选,而且输入的结果可能会超出int界限,如果超出了,则根据正负号返回对应int最大值或者int最小值其实还是不难的,只不过样例而新一些,不过在观摩大佬的题解以后,发现了一些有趣的时,先看代码 public int strToInt(String str) {
2021-08-08 21:26:01
185
原创 leetcode-二叉搜索树的后序遍历序列
leetcode-二叉搜索树的后序遍历序列题目链接:题目传送门题目大意是,给定一个数组,判定数组是否是某二叉搜索树的后序遍历结果。首先,上定义:它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。如果是后序遍历的话,应当遵循:左右根,所以我们的搜索就从这里开始。首先,如果确实是二叉搜索树的后序遍历结果,尾巴上的元素应该就是根节点从首位元素搜
2021-08-08 21:08:53
211
原创 leetcode-数据流中的中位数
leetcode-数据流中的中位数题目链接:添加链接描述题目大意就是有一个数组,要求出来这个数组排过序后的中位数,乍一看其实很简单,直接排序后根据元素的总个数取中间两个数的平均数或者中间的数即可,不过还是挺现实的,这样做不太行,因为这个数组的数据量有一点点大,所以要换一个思路。首先介绍一下小顶堆,那个东西理论上是一个排过序的完全二叉树,在Java里面可以用PriorityQueue来代替,其实叫人家优先队列更合适,加入其中的元素,再取出队头时会按照从小到大的顺序出队,大顶堆的出队顺序相反,所以来说,可
2021-08-07 17:56:13
126
原创 leetcode-连续子数组的最大和
leetcode-连续子数组的最大和题目链接:添加链接描述给定一个数组,寻找出其中的和最大的连续子数组这是一个DP的题目,不过他的DP比较简单。首先,使用dp[i]表示前i位(包含第i位)的子数组最大和,我们会发现,nums[i]是否加上取决于前面的dp[i]是否为正数,如果是负数的话,没必要加上去,由nums[i]重新开始,向后延伸即可,如果是正数,则可以加上,因为这个对于最终的子数组和最大,是有好处的,所以来说,编码方式就很明显了。class Solution { public int
2021-08-07 17:28:03
208
原创 leetcode-队列的最大值
leetcode-队列的最大值题目链接:添加链接描述题目大意就是定义一个队列,要实现队列的基本功能,能够pop和push,另外还要提供一个功能,那就是实现一个max函数,返回当前队列的最大值,此处的话跟之前的问题一样,直接定义两个队列,一个队列存储原始数据。用来实现pop和push函数,另外定义一个排序双端队列,存储队列中中的最大值,次大值等等内容,再相对队列中压入元素时,首先判断排序队列元素是否大于排序队列队尾元素,如果大于,就循环弹出队尾元素,直到确定到一个合适的位置,将新元素放入,当队列元素要弹出
2021-08-07 17:14:57
139
原创 leetcode-包含min函数的栈
leetcode-包含min函数的栈题目链接:添加链接描述题目大意就是定义一个栈,这个栈除了满足基本的栈的效果外,还应该能够返回当前所有栈中元素的最小值。最直接的做法是定义两个栈,一个栈正常存储元素,另外一个栈存储最小的元素。对于第二个栈而言,保证当压入第一个栈的元素小于第二个栈栈顶元素时,才让新元素压入第二个栈,当第一个栈元素出栈时,对比一下,如果出栈的元素是第二个栈的栈顶元素,那么此时整个栈的最小值发生变化。Stack<Integer> A, B; public MinStac
2021-08-07 16:46:44
145
原创 leetcode-二叉搜索树与双向链表
题目链接:题目链接题目大意是有一棵二叉搜索树,给定树的结构,需要将其转化成一个有序的双向链表。思路还是很明显的,对于一颗二叉搜索树而言,我们只需要对其进行中序遍历,按照左、中、右的顺序读取到数据,他们自然是有序的,但是问题在于将其转化成双向队列的话需要去设置一下每个元素的前驱节点和后继节点,对于第一个节点,它自身就是head,而后面的节点,其前驱节点是前一个结点,其前一个节点的后继是他本身,所以可以这样编码Node head = null, pre = null; public Node treeT
2021-08-06 17:25:57
253
原创 leetcode-剪绳子
leetcode-剪绳子题目链接:题目传送门题目大意是:有一根长度为n的绳子,将其剪成长度为整数的多段,使得这些段绳子的长度的乘积最大有一说一,这个题目作为一个数学题,我是不会的,但是有两个规律,记住就可以了当绳子的长度尽可能地相等时,乘积最大当绳子的长度尽可能的是3的时候,乘积最大所以,要怎么做就很简单了public int cuttingRope(int n) { if(n <= 3) { return n - 1; } int x
2021-08-04 21:10:55
125
原创 leetcode-圆圈中最后剩下的数字
leetcode-圆圈中最后剩下的数字题目链接:题目传送门题目大意就是,n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。其实这就是一个约瑟夫问题,原来一切的答案在开始的时候就已经注定了。以前的话就会直接写一个循环链表,然后开始模拟,做了leetcode发现,这是一个动态规划问题,真不错。对于最后一个移除的数字x而言,他最后在数组中的下标就是0,而据此我们可以得知,在上一次去除数字时,x是一个幸存者,他在那个时候的下标应
2021-08-04 21:05:55
128
原创 leetcode-最小的k个数
leetcode-最小的k个数题目链接:题目传送门题目大意是给定一个数组,然后寻找数组中的前k小个元素。乍一看,这个题目倒是很符合它的简单标签,直接对原数组进行冒泡排序操作,之后复制出前k个元素即可得到目标数组,但是这样做耗时过大,所以,我们来温习下快速排序的步骤找到一个基准位置,通常取数组范围的首位确定哨兵i和哨兵j,分别指向数组的两端对于哨兵i,从左到右寻找,直到找到一个比基准数值大的数字对于哨兵j,从右到左寻找,直到找到一个比基准数值小的数字将两个哨兵找到的数值对调位置,继续寻找过程
2021-08-04 20:54:47
118
原创 leetcode-顺时针打印矩阵
leetcode-顺时针打印矩阵题目链接 题目题目大意是,存在一个二维矩阵,按照顺时针的方式对于这个矩阵进行遍历,其实这个问题之前遇到过,在刘汝佳的那本书上有,而且好像是哪一次的蓝桥杯也有这个题目,那时候这道题目还叫作:蛇形填数,当时的做法好像是有一个数学规律,可以用这个规律遍历,今天又做的话好像可以有更有逻辑的方式去读。首先来说,顺时针读取的话,存在这样的规律:从左到右–从上到下–从右到左–从下到上,可以看到的是我们可以建立四个循环分别完成这四个过程,而且每次循环的起点,终点都会随着顺时针循环的深入
2021-08-03 09:22:47
171
原创 leetcode- 数组中数字出现的次数
数组中数字出现的次数题目传送门:题目链接题目大意是,在一个数组中,有几个元素,这些元素中有一些出现了两次,有两个出现了一次,要求输出这两个只出现了一次的元素。又是观摩大佬题解的一天,首先说一个内容,那就是异或的交换律,对于按位异或的操作,不难知道,如果位相同,则结果为0,如果位不同,则结果为1,而且这恶鬼异或操作是可以遵循交换率的,也就是说 AorBorC == AorCorB。由于数组中有些元素出现了两次,所以,他们如果异或的话,结果是0,倘若只有一个元素出现了一次,将数组中全部元素异或,最后的结
2021-07-18 11:47:13
154
原创 leetcode-从上到下打印二叉树 II
从上到下打印二叉树 II题目传送门:题目链接题目大意就是,有一棵二叉树,需要对二叉树进行层次遍历,只不过加了一个条件,那就是要对每一层的数据进行分离,也就是说,要去标记每一层的数据。最开始的想法,比较简单,那就是使用一个map记录每一个节点的层数,对于根节点,设它的层数为1,对于每一个节点的层数:nowLevel = preLevel + 1,层次遍历二叉树,肯定要用到广搜,二叉树广搜,一般都会在得到当前节点后,将左右子树加入到队列中,我们就可以把记录层数的这个递推操作,加到这个位置,代码比较简单,直
2021-07-18 11:32:40
109
原创 leetcode-数值的整数次方
leetcode-数值的整数次方题目传送门:题目链接题目大意就是给定两个数字:m和n,实现pow(m,n)的效果,我最开始的想法比较简单,那就是:区分一下n的正负,然后计算出m的ans(n)次方,然后如果n是个负数,最终结果再被1除一下,很显然这样会错==其实正确的做法是进行快速幂运算,奈何太久了忘记如何操作,举一个例子来说5的10次方理论上,任意的m的n次方运算都可以转成这个样子,至于每一项的值是否要加到最终结果中去,则是取决于对应的n的特定位,是0还是1,显然,这里涉及到了一些位运算的知识,
2021-07-13 22:01:38
146
原创 IOS蓝牙的相关操作
IOS蓝牙的相关操作在公司项目里面有一个子系统的功能是使用手机向蓝牙外设发送数据,蓝牙外设会向手机汇报当前的状态,也就是要实现一个蓝牙外设和手机的双向数据交互。在IOS中,蓝牙的相关操作主要有以下几个专有名词需要熟悉CentralManager: 管理中心,负责蓝牙外设的搜索和连接CBPeripheral: 蓝牙外设对象,包含了外设的名称,信号强度,所属服务等信息Peripheral-Service: 蓝牙外设的服务,一个蓝牙外设可以拥有许多服务,可以在服务中完成相应的读写操作Service-
2021-07-13 15:22:19
740
原创 leetcode-字符串的排列
leetcode-字符串的排列题目传送门:题目链接题目大意就是,有一个字符串,要求使用其中包含的字符串,实现字母的全排列,最后将不包含重复字符串的字符串数组返回,理论上,这个问题和八皇后问题一样,都是要用到回溯法首先,程序从第一位字母开始搜索,确定第一位字母,然后搜索下一位字母的可能形式,直到搜索到字母长度等于原先字符串的长度,即表示找到了一种可行排列,期间可以借助数组标记每个字母的使用情况,以便来实现对于字母的合理使用class Solution { public String[] pe
2021-07-12 22:13:11
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人