自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(298)
  • 收藏
  • 关注

原创 PS-设计网站

【代码】PS-设计网站。

2025-01-07 14:35:42 100

原创 Tmux常用命令

文章目录快捷键位快捷键位Ctrl + b激活控制台,此时按下后面键位生效?列出所有快捷键,按q返回d脱离当前会话D选择要脱离的会话,同时开启多个会话时使用[进入复制模式c创建新窗口p切换到上一个窗口n切换到下一个窗口数字键切换到指定窗口s选择并切换会话,在同时开启多个会话时使用"将面板分为上下两个部分%将面板分为左右两个部分Alt + o将面板进行逆时针旋转ctrl + o将面板进行顺时

2024-12-31 16:06:47 273

原创 PS-字体与层级关系

衬线体:宋体,这里的宋体是一个大类,特点是横细竖粗,字脚就是衬线,字体气质:正式,有细节精致,历史感,古典,文化传承,注意细节,横向笔画有倾斜度,文字转角圆润都会比较有年代感非衬线体:黑体,横竖笔画粗细相等,方头方尾,撇捺不尖锐,字体气质:现代韵味很强,整齐规则,内文文字会用,简洁,小米用的小米字体,华为用的鸿蒙字体,苹果用的苹方字体圆体:笔画特点,无装饰,横竖笔画粗细相等,笔画在拐弯和结尾处为圆弧状,字体气质,可爱,端庄,清晰手写体:(1)毛笔字,甲骨文,篆体,隶书,楷书,行书,草书。

2024-12-11 10:46:17 259

原创 ~/.vimrc配置项

【代码】~/.vimrc配置项。

2024-12-02 19:56:21 96

原创 PS-设计思维与配色(2.1-2.2)

不必过分探求美的特殊性,向行业内大佬学习借鉴并看齐。

2024-11-18 16:47:38 345

原创 PS-AI基础(1.9)

是Adobe公司推出的一款矢量图形绘制软件,被广泛应用于图形和图像设计领域。矢量图,点线面构成,可以无限放大不模糊,需要源文件。

2024-11-14 10:31:59 892

原创 PS-打造画面质感(1.7-1.8)

9.叶脉,用钢笔先把叶子上的所有叶脉描出来,然后新建一个图层,然后右键描边路径,它这个路径是根据画笔的粗细来设置的,画笔选择柔边缘,透明度百分之百,颜色自己选择,描边路径里面模拟路径打勾,这样叶脉两端就虚化了。7.图层样式设计出来的效果可以创建图层,如果要修改删除部分,这时候再在对应效果的图层上创建蒙板,进行擦除。8.效果图层的复制,案抓alt选择需要复制的图层,拖动到粘贴的图层处,即可。3.填充色彩的有描边,颜色叠加,渐变叠加,图案叠加,上面会遮住下面的。2.内发光,外发光,内阴影,外阴影。

2024-11-13 17:24:16 299

原创 PS-调色核心(1.6)

曲线,正常是黑白灰三种颜色,同时也可以控制rgb的三种颜色,其中红色的互补色青色,绿色的互补色紫色,蓝色的互补色黄色。2. 左上角编辑,定义画笔预设。功能大致分为三大板块。

2024-11-12 17:30:42 489

原创 PS-基础学习(图层蒙板和抠图1.4-1.5)

2.在通道中白色是保留的部分,黑色是不要的部分,灰色是透明的部分,因此,在抠人物头发的时候,需要把图案反选,反选的快捷键ctrl + i,返回到rgb颜色,ctrl + j把头发抠出来。6.这部分头发吸取头发的颜色,通过创建剪贴蒙板,把头发的颜色画进去,注意如果要画到了大部分的头发的位置时,会使头发失去质感,这时候只需要把图层从正常状态修改到强光,就可以了。7.把抠出来的图插入到新的图片中,可以因为背景颜色的不同,导致颜色不是很匹配,可以使用快速选择工具,左上角图像,调整,匹配色彩。2.用于抠图,去白底。

2024-11-11 18:34:04 296

原创 PS-基础学习(常用快捷键1.2-1.3)

常用快捷键钢笔操作功能Alt + 选择工具使用选择工具放到锚点上,按下alt,然后放到调整曲度的上面,可以修改一边的曲度可以修改出不平滑的转折点选择工具放到锚点上进行拖拽可以移动锚点的位置ctrl + 选择工具使用选择工具,按住ctrl,然后拖拽可以移动整个钢笔画出来的图案ctrl + 钢笔放在锚点调整曲度的上面可以平滑的调整锚点Alt + 钢笔放在锚点调整曲度的上面可以单独调整一边的曲度钢笔 + 鼠标左键钢笔 + 鼠标左键可以新

2024-11-07 14:23:47 265

原创 又是一年1024程序员节

今天是2024年10月24日,这已经是毕业后的第三个程序员节,一路走来,失去了很多也得到了很多,22年我谈了女朋友,可今年下半年却分手了,好处是我可以有更多的时间做自己想要尝试的事情,同时我今年工作上也得到了晋升,但是同时工作上交付的压力也越来越大,我开始有点羡慕还在读研的同学们,能够多几年的时间去缓冲,同时,我也对当下找工作的困难而感觉担忧,最近,我们组一直在招应届生,最低要求已经是985 211的研究生,否则简历我们都是拿不到的,更不要提什么面试。一叶浮萍归大海,人生何处不相逢。

2024-10-24 17:05:45 197

原创 23种设计模式详解-创建模式篇

简单工厂模式就是建立一个实例化对象的类,在该类种对于多个对象实例化,工厂方法模式是定义了一个创建对象的抽象方法,由子类决定要实例化的类。这样做的好处就是再有新的类型的对象需要实例化只需要增加子类就可以了,抽象工厂模式定义了一个接口用于创建对象族,而无需明确指定具体类,抽象工厂也是把对象的实例化交给了子类,即支持拓展,同时提供给客户端接口,避免了用户直接操作子类工厂。

2024-08-28 10:55:55 868

原创 会议纪要的书写格式

会议纪要主要包括详细纪要和总结归纳两部分。目的:还原现场,可以身临其境。2.总结归纳 先理架构。

2024-07-30 16:31:10 417

原创 leetcode-设计LRU缓存结构-112

【代码】leetcode-设计LRU缓存结构-112。

2024-05-23 17:54:47 539

原创 leetcode-顺时针旋转矩阵-111

2.我们可以根据19这个对角线将数据进行交换,得到矩阵。3.然后将矩阵每一行的数据再翻转,得到矩阵。1.假设现在有一个矩阵。

2024-05-23 14:26:06 491

原创 leetcode-主持人调度(二)-110

2.如果开始的时间小于结束时间,说明目前没有空闲的人,需要增加人,如果大于等于,说明有人刚结束了主持,可以进行新的主持了,变更到下一个任务的结束的时间去安排人。1.先将开始时间和结束时间拆分放到两个数组中进行排序。

2024-05-23 12:15:19 386

原创 leetcode-盛水最多的容器-109

3.考虑优化高度,如果i一样,height[j] > height[j-1],说明高度要么减小要么不变,但是由于底减少,所以面积肯定降低,所以再拿height[j] > height[j-2]进行比较,只要小于height[j]的都可以跳过。1.正常用双循环外循环i从0开始,内循环从height.size()-1开始去计算每一个值是可以的,但是因为数据量太大,会超时。2.考虑到超时,需要优化一些,比如第一个选下标1,第二个选下标3和第一个选下标3,第二选择下标1是一样的,所以,内循环遍历到小于。

2024-05-23 11:10:57 590

原创 leecode-最长无重复子数组-108

3.然后将循环的下标i重新设置到重复元素第一次出现的位置,将map中的元素清除干净,重新往map中插入,直到循环完整个数组,返回max。1.创建一个map<int,int>,前面的是数据,后面的是上一次这个数据出现的下标,只要map中没有这个数据,就插入当前数据的下标。2.当map中出现重复的数字,说这一轮的计算已经结束,将字符串长度同max进行比较,保存长的。

2024-05-23 10:24:00 318

原创 leetcode-合并区间-107

1.先将Interval按照start的大小,从小到达排序,这里可以直接用sort函数,使用自定义的排序方法cmp,我们重载cmp函数,这里需要注意返回值必须要是static bool类型。2.将第一个元素插入,如果数组中的最后一个元素的end大于新元素的start,说明有重叠的部分,取两者的end大的插入,如果不重叠,则直接插入。

2024-05-20 14:41:31 136

原创 leetcod-验证IP地址-106

2.ipv4把字符串按照’.‘进行分割,将字符串存在数组s中,如果数组s不是4部分,说明有问题,如果s中的某一个字符串长度为0,则说明’.'号相连了,说明有问题,如果s中某一个字符串长度大于3或者小于0,说明有问题,如果s[i][0] == ‘0’ && s[i].size()!= 1,说明存在前置0有问题,将字符串转换成数字,如果没在0-255之前,说明有问题。3.ipv6如果冒号相连,有问题,如果字符串没在a~f,A ~ F,0-9只中,说明有问题。

2024-05-20 10:27:55 584

原创 leetcode-最长公共前缀-105

2.将每一个字符串固定下标值的字符同第一个字符串所对应的对应字符进行对比,如果都一样,把这个字符插入到最终的返回的字符串中,一共需要遍历排序后的第一个元素的长度次。1.先将字符串数组进行排序,排序后的第一个元素的长度,就是最长公共前缀可能的最大长度,后续只需要比较这一段字符串的最大公共前缀即可。

2024-05-14 11:07:28 256

原创 leetcode-字符串变形-104

3.以空格为区间,将区间内的字符串进行翻转,其中翻转的函数reverse()1.首先根据ASCII的规则,把字符串大小写替换,空格保持不变。2.将整个字符串进行翻转。

2024-05-14 10:28:39 286

原创 leetcode-最长公共子序列(二)-103

step 4:若是不相等,说明到此处为止的子串,最后一位不可能同时属于最长公共子序列,毕竟它们都不相同,因此我们考虑换成两个子问题,dp[i][j−1]dp[i][j-1]dp[i][j−1]或者dp[i−1][j]dp[i-1][j]dp[i−1][j],我们取较大的一个就可以了,由此感觉可以用递归解决。step 2:获取最长公共子序列的长度可以使用动态规划,我们以dp[i][j]dp[i][j]dp[i][j]表示在s1中以iii结尾,s2中以jjj结尾的字符串的最长公共子序列长度。

2024-05-13 10:58:36 360

原创 leetcode-矩阵最长递增路径-102

2.递归中需要的几个值,x和y当前结点的坐标,pre用于存储上一个结点的元素值,因为要求是路径上的元素是递增的,所以,要求上一个结点的值如果大于等于当前结点的值,作为递归的判出条件。1.通过双循环去把每一个结点作为起始点进行统计,将返回的路径长度存放在res中,取最大的res的长度。3.递归分别朝四个方向,分别是上下左右,需要注意是的是不能超二维数组的界限。

2024-05-08 16:40:23 588

原创 leetcode-括号生成-101

2.递归有两种,一种是增加左括号,一种是增加右括号,只要左括号的数量不超过n,就走增加左括号的递归,右括号的数量只要小于左括号的数量,并且右括号的数量少于n,就走增加右括号的逻辑。1.左括号的数量等于右括号的数量等于n作为判出条件,将结果存到res中。

2024-05-07 20:58:55 255

原创 leetcode-字符串的排列-100

4.特殊情况处理,如果标记数组中表示这个字符已经使用过,则跳过。如果当前字符没有使用过,但是该字符和前一个字符相同,且前一个字符已经使用过,则也跳过。防止结果中出现两次aab的结果。3.创建一个标记的数组,每次在temp中插入一个字符,便在对应的数组下标设置为1,表示该字符已经使用。2.创建临时字符串,当临时字符串temp的长度等于str的长度,作为判出条件。1.因为只涉及到字符,因此可以进行排序。

2024-05-07 16:29:45 497

原创 leetcode-岛屿数量-99

1.使用广度优先遍历,将数组中所有为1的元素遍历一遍,遍历过程中使用递归,讲该元素的上下左右四个方向的元素值也置为0。2.统计一共执行过多少次,次数就是岛屿数量。

2024-05-06 18:15:08 379

原创 leetcode-有重复数字的全排列-98

1.同【没有重复项的全排列-97】这个题一样,都是递归的题,区别在于这个可能会包含重复的数字,因此,不能只是简单的通过两个值是否相等然后用标志位标记,而是新增了一个数组,这个数组专门用于存储该元素是否被使用。2.需要特殊处理的是,类似【1,2,1】的这种的结果可能会有两个,这是因为两个1的下标不同,这时我们可以对最初的元素进行排序,如果某个元素是重复元素,并且之前已经使用过,就跳过该元素。

2024-05-06 16:55:12 401

原创 leetcode-没有重复项的全排列-97

3.特殊情况的处理,如果这个元素已经在n中插入过,就需要跳过该元素,对应的是题目中的不能重复,因为这里需要跳过的是最外面的for循环,因此,只能通过flag建立标记,而无法通过continue直接跳过,continue只能跳过用于做判断的内循环。2.因为这个题是属于排列,并非组合,两者的区别是排列需要把之前插入的元素在回退会去,而组合不需要,因此会存在一个pop_back()的操作。1.递归,如果num和n的元素个数一样就可以插入res中了,这个作为递归的结束条件。

2024-05-06 11:57:56 358 1

原创 leetcode-缺失的第一个正整数-96

2.创建一个对应map把元素添加进去,用map.find(res)进行查找,如果存在返回指向该元素的迭代器,否则返回map::end()。1.这里的题目要求刚好符合map和unordered_map。

2024-05-06 10:23:08 341

原创 leetcode-滑动窗口的最大值-95

6.第二个while循环,如果新来的这个元素的值大于之前元素的值,那么新来的这个值只要没出去,前面的比他小的值都需要被覆盖,目的就是让num[dq[i]]的值是单调递减的。7.将满足滑动窗口中最大的值,也就是存储在dq中的front的下标的值,保存到ans中,最后返回ans。6.第一个while循环,用于模拟滑动窗口的左端,如果该元素从左边已经滑出,那么需要更新双端队列的队头。2.因为这个代码是优化后的结果,第一次写如果直接写成这样着实不容易,因此,我直接讲每一行的含义。

2024-04-28 17:11:05 640

原创 leetcode-有效括号序列-94

2.有两个特殊情况就是字符串第一个就是后括号,这个情况本身就是不匹配的,还有一种是前面的n个字符串本身是匹配的,这时候来了个后括号,这种也是不匹配的,这里的处理方法是,如果栈为空,不管这个字符是啥,都插入进去,最后只要判断栈是否为空就行,如果第一个字符串是后括号,最后栈肯定是不为空的。1.使用栈的先进后出的思路,存储前括号,如果st中有对应的后括号与之匹配就说明没问题。

2024-04-28 14:34:37 440

原创 leetcode-包含min函数的栈-93

2.对于push函数,所有新来的value都需要在s1中插入,s2中,如果s2为空,那么也直接插入,因为这个值就是最小值,如果s2已经有元素,那么拿s1中最小的同新的value比较,如果value小则在s2中也插入一个value,如果原本s1中的最小值小,那么就把s2.top()在插入一份,这个的原因是为了方便实现pop(),如果s1中需要删除,那么s2也直接删除就,因为s1和s2中的元素个数一样多,这样当s1把最小值删除的时候,s2会也删除掉。3.pop函数,s1和s2正常删除。

2024-04-28 12:14:30 302

原创 leetcode-判断是不是二叉搜索树-92

1.因为这里要求左结点的值小于根结点的值小于右结点的值,所以当使用中序遍历的时候,应该是一个升序的。3.判断这个数组是不是升序的,如果是则是二叉搜索树,否则不是。2.创建一个数组,将中序遍历的结果插入到里面。

2024-04-25 21:08:38 421

原创 leetcode-二叉树的镜像-91

1.将一个结点的左右子树进行交换,如果左子树还有左右结点,就再交换左子树的左右结点,以此递归下去。1.遍历一遍二叉树,将左边的结点对应创建一个右边的结点。2.用此方法的空间复杂度是O(1),不需要创建新的结点。2.用此方法空间复杂度O(n),并不是最优。

2024-04-25 20:36:44 316 1

原创 leetcode-合并二叉树-90

1.如果两个结点都存在,就把对应的val加起来创建一个新的结点。2.如果有一个结点不存在,就用村在的那个结点。3.最后返回创建的头结点。

2024-04-25 20:15:46 194

原创 leetcode-二叉搜索树与双向链表-89

2.将结点以中序遍历的方式插入到数组中,注意这里是vector<TreeNode*>1.观察给的用例,本质上是把数据按照中序遍历连接起来。3.将数组中的数据连接起来。

2024-04-25 20:00:11 325

原创 leetcode-比较版本号-88

1.因为字符串比较大小不方便,并且因为需要去掉前导的0,这个0我们并不知道有几个,将字符串转换为数字刚好能避免。2.当判断到符号位的时候加加,跳过符号位。3.判断数字大小,来决定版本号大小。

2024-04-24 20:34:40 296 1

原创 全栈必须要了解的常用网站(持续更新)

【代码】全栈必须要了解的常用网站(持续更新)

2023-06-28 10:49:21 226

原创 leetcode-字符串分隔-89

【代码】leetcode-字符串分隔-89。

2023-04-25 19:11:46 231

空空如也

空空如也

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

TA关注的人

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