- 博客(141)
- 收藏
- 关注
原创 设计模式学习[7]---工厂方法模式
关于工厂的一些概念,我在1,2两节中有提及,这里不过多数赘述,详情参考下面两篇博客。设计模式学习[1]—开篇词+简单工厂模式设计模式学习[2]—策略模式+简单工厂回顾我们通过工厂方法模式,将不同类型对象的实例化直接交给客户端,从而让底层的代码解耦,满足开放-封闭原则。最近几个模式好像都是涉及到了开放-封闭原则,对于各种原则秉持一个想法:多用,多思考。
2024-09-18 21:49:08 702
原创 设计模式学习[6]---代理模式
代理这个词,从小到大听过不少。比如什么代理服务器,代理商,代理人之类的。通俗来说,代理无非无非就是我代表你处理事务的意思。那么在设计模式中,针对类的操作,要代理执行其实也有这么一个模式,就是这篇博客要写的代理模式了。这篇博客讲的代理模式原理比较简单,从代码层面来说就是用一个类A通过接口OP去调用另一个类B的操作,避免让类C直接和A接触。有一种间接的调用效果。
2024-09-18 21:48:42 726
原创 设计模式学习[5]---装饰模式
近期在给一个已有的功能拓展新功能时,基于原有的设计类图进行讨论。其中涉及到了装饰模式,因为书本很早已经看过一遍,所以谈及到这个名词的时候有点印象,只知道它是加功能用的,更细则的内容已经忘了。这篇博客就是对装饰模式的一个复习。装饰模式看书的时候看的挺快的,但是想用自己的话写出来,还是得好好想想。这篇博客对装饰模式做了一个自我理解的阐述,结合书中的例子进行分阶段设计,最后到代码的具体展现。收获尚可。
2024-09-08 19:29:45 1031
原创 设计模式学习[4]---依赖倒置原则+里氏代换原则
在给发新功能模块之前,都先要画UML类图进行需求分析。对每一个类的作用,类与类之间的关系做一个详细的阐述。确定好基本的框架之后,才会进行编码。很多时候一个项目拿过来,设计的时间比编码的时间会更长,编码更多的是按照设计来实现。难度上比设计上小一些。有一个项目,在讨论UML类图的时候,当时涉及到一个类与类之间互相依赖的例子,当时架构师和我说依赖倒置,我一脸懵逼。后来看了书,再结合当时的讨论,才后知后觉。本节就讲讲依赖倒置原则。
2024-08-25 16:17:28 1036
原创 设计模式学习[3]---单一职责原则+开放封闭原则
小项目写多了,比如一些什么管理系统之类的,在接触大型项目的时候往往会将之前的一些面向过程的写法代入。比如UI以及逻辑处理都放在一个类里面,UI里面加什么,我这个类里面加什么,改什么。代码改多了之后,对于新的需求,有很大概率需要重构代码,因为要处理的地方太多了。软件讲究高内聚,低耦合,便于拓展,模块化。之前这些存在于书本上的概念,在实际开发中,是真真切切的用得上的。对于上面的情况,这篇博客写一下处理方式。单一职责模式以及开放封闭原则,其实很大程度上不能做到完全遵守。
2024-08-20 22:53:19 661
原创 平衡日常工作与提升式学习话题有感
这篇博客是针对程序员如何平衡日常编码工作与提升式学习?这个话题进行的个人观点阐述,个人所思所想罢了。刚毕业没几年,水平有限,仅结合自己的经历写写吧。我的观点总结一下就是:尽吾志也而不能至者,可以无悔矣。抛开装X文学,就是努力干吧,怎么干都不行了,实在尽力了,那就可以了。写了点自己这个二十出头的年级的认知,希望若干年后回过头来看自己留下的文字,会有些许欣慰吧。
2024-08-20 22:53:03 937
原创 C/C++ 多线程[1]---线程创建+线程释放+实例
这篇博客写一下多线程的一个demo。多线程还是很有用的,C++程序员进阶的必通之路。大学里面学的那些小玩意儿,单线程就能搞定所有,真正的大型项目,还是会有很多多线程相关的。记住这个多线程demo的简单使用,那么后面进一步拓展就手到擒来了。
2024-08-17 18:55:24 980
原创 C/C++ 拷贝构造函数 | 赋值构造函数 | 移动构造函数 | 移动赋值构造函数
C++中关于一个对象的构造,就有很多讲究。其中最常用的可能就是拷贝构造函数和赋值构造函数。后面的移动相关的就用的很少,每次面试的时候会刷一下面经,突击一下概念,工作中用到少了,久而久之就忘了。这篇文章就对与一个对象的几种构造方式做一个总结。1.拷贝构造函数 用于创建一个新对象作为现有对象的副本。2.赋值构造函数 用于将一个对象的值赋给另一个已经存在的对象。3.移动构造函数 用于将资源从一个临时对象转移到新对象中,避免不必要的资源复制。
2024-08-17 18:54:27 985
原创 设计模式学习[2]---策略模式+简单工厂回顾
上一篇讲到简单工厂模式。在我的理解中工厂的存在就是,为了实例化对象。根据不同条件实例化不同的对象的作用。这篇博客写的策略模式,可以说是把这个根据不同情况实例化不同对象的这个过程再一次封装了。简而言之就是,策略模式对变化进行了封装。有点迷。且听我娓娓道来。在看策略模式的时候,我其实挺奇怪它和简单工厂有什么区别。因为看书中的代码感觉变化不是很大。
2024-07-21 21:10:08 960
原创 UML的六大关系---泛化、实现、关联、聚合、组合、依赖
讲到设计模式,就会有UMLUMLUML类图这个东西。一开始就很难理解各种线啥意思,这里做一个笔记记录一下。同时如果我的设计专栏博客里面对类图有些问题的话,这里可以做一下回顾。六种关系的熟悉是学习设计模式的基础。这里做一个记录,后面如果有遗忘,做一个回顾。
2024-07-21 21:09:32 912
原创 香橙派Kunpeng Pro开箱测评:入门体验使用与基础测试
香橙派Kunpeng Pro 的openEuler系统其实本质上来说也是一个linux操作系统,在指令上面和树莓派其实并没有太大的变化。所以其实用习惯了树莓派,切换过来用香橙派Kunpeng Pro也非常方便。关于硬件部分上面的阐述也非常的详细,主要还是工作环境的问题以及暴露接口和板子大小的问题,这个要根据工业的实际运用考虑。在容量方面,香橙派Kunpeng Pro可谓是诚意满满,内存以及磁盘空间的大小真的是甩树莓派一条街。由于是国产的,其实也不用太考虑断供之类的问题,可靠性有很大保障。
2024-07-14 17:59:27 744
原创 C/C++ BM35 判断是不是完全二叉树
明白完全二叉树的定义之后,根据特性来进行遍历即可。难的地方在于DFS和BFS吧二叉树的常规解法是递归,但这里递归我一开始也尝试过,只能处理同一条分支的情况,无法比较左右两侧。二叉树的遍历通常使用层次遍历或者深搜遍历。
2024-07-14 17:43:28 912
原创 设计模式学习[1]---开篇词+简单工厂模式
前段时间把《大话设计模式》这本书看完了,这篇专栏就考虑结合这本书,加上自己的理解,回顾一下自己的设计模式,写一点学习笔记。
2024-07-14 17:42:48 758
原创 C/C++ BM30 二叉搜索树与双向链表
这道题要明白二叉搜索树的概念,同时还要对链表的知识比较熟悉。回顾了一下中序遍历,对二叉搜索树的理解更进一步。
2024-05-03 14:23:51 1017
原创 C/C++ BM33 二叉树的镜像
镜像说的好听,无非就是换下节点。主要还是用递归来做。看了下官方的题解,还有个是栈的,感觉差不多,这里就没贴了。思路都是一样的。
2024-05-02 13:58:02 945
原创 C/C++ BM32 合并二叉树
树的题目大概率是要用到递归的,将一个树的问题拆分成子树的问题,不断拆分。这题也用到了递归的思想。树相关的东西,几种遍历方式要烂熟于心。还有就是递归一般都是优先解法。
2024-05-02 13:57:22 1132
原创 在Gtiee搭建仓库传代码/多人开发/个人代码备份---git同步---TortoiseGit+TortoiseSVN
正常企业的大型项目都会使用SVN和云端的代码仓库(或者局域网自建的云仓库)进行开发。极少数的小公司,尤其是对代码不负责的小公司,让员工自己在公司电脑上备份,多人协同开发的时候还是直接拷贝代码的那种。不幸,这样的小公司我待过一年。这篇博客的目的如标题所示,记录一下自己从头到尾搭建仓库,同时方便后续自己学习研究写代码。这篇博客主要记录一下工作中常用的一个TortoiseGit+TortoiseSVN的工作方式,一直都是摸索着使用。这篇博客就系统的整理一下如何搭建这么一个仓库,平时怎么使用。
2024-04-21 15:38:13 1136
原创 C/C++ BM28 二叉树的最大深度
这个最大深度就是DFS搜索的概念了,每个路径都搜索,看一下那条路径最长。最长的路径就是最大深度了。树的遍历加上递归的使用,将问题进行拆分,是二叉树的一种精髓了。
2024-04-20 17:22:44 615
原创 QT中对于QPushButton样式的调整
前段时间在调软件的样式,学到了些新的东西,也碰到了些问题,这里做一下记录。这篇博客主要实现的目标就如标题所示。这样我们想要的基本元素就有了,文字和按钮图标。这篇博客主要对QPushButton的样式调整以及自己对一些样式概念的理解,其他的按钮控件也可以参考这个。对于样式真的没什么统一的说法,不同需求,不同人的调法都不一样,需要自己去琢磨。这个比较费时间,但是确实好看啊。
2024-04-20 13:29:08 2508
原创 C/C++ BM21 旋转数组的最小数字
查找算法的适用条件以及找到题目最核心的诉求是解决问题的关键。遇到有序数列的一种查找,如果对时间复杂度有要求,要考虑二分查找。
2024-04-14 14:01:34 874
原创 C/C++ BM25二叉树的后序遍历
和前序遍历中序遍历一致,换个顺序就行。详情参考C/C++ BM23 二叉树的前序遍历详情参考C/C++ BM24 二叉树的中序遍历明白了前序和中序遍历,这个后序遍历也非常简单。
2024-04-14 14:01:05 1146
原创 C/C++ BM24二叉树的中序遍历
中序遍历和前序遍历的不同地方简单改过就是根的位置不同罢了。具体参考C/C++ BM23 二叉树的前序遍历明白了前序遍历,这个中序遍历无非就是换个顺序的问题。
2024-04-14 13:59:59 779
原创 C/C++ BM23 二叉树的前序遍历
自己在草稿纸上模拟这个遍历的过程比较简单,但是转移到代码上就突然会懵逼。这个在我之前学数据结构,做到这个实验的时候觉得很难理解。最近虽然已经入职了,但是刷刷题巩固一下基础的时候,还是会受益良多。数据结构的东西有时候比较抽象,算法思想到代码的转换需要自己好好琢磨。之前做算法题的时候,觉得很奇怪,为什么讲算法原理,明白了,但是具体上手题目的时候,就是一脸懵逼,告诉你怎么写了,还是不会写。究其本质就是写到少,想的少;事必躬亲可能才是唯一解吧。
2024-04-14 13:59:37 855
原创 C/C++ BM20 数组中的逆序对
除了最常规的暴力破解,还要根据题意考虑更优质解答。最近整理了一下各种排序的算法,暂时还没整理到归并排序,所以这里第一优化的反应是考虑用二分查找的方式,但是二分查找一般涉及到有序的数列。这里还是不符合。这里我们想要的是一种分治的思想,所以归并排序会更好。
2024-03-10 14:40:31 830
原创 C/C++ BM19 寻找峰值
这道题第一遍做的时候题目条件没有好好的审阅,导致在判断边界问题的时候出了不少岔子。我的方法是时间复杂度为O(N)的,官方的logN可能更好一些。我的就是简单的遍历判断求解,官方用的是二分查找的方式。多画一画图,注意边界。同时要看清题目意思,看懂每个条件。
2024-03-10 14:40:01 1101
原创 C/C++ BM18 二维数组中的查找
这道题主要是题目要求的时间复杂度和空间复杂度怎么处理,最简单的暴力那就是全部遍历一遍,虽然也能过,但是不符合题意。查找题要看清题目给的,除了常见的二分,用暴力有时候也可以,更多的还要考虑题目的特殊性。
2024-02-24 11:27:13 986
原创 C/C++ BM16 删除有序链表中重复的元素-II
这道题和BM15稍有些差别,一开始做的时候还是按照BM15的方法来做,结果想了半天发现自己路走窄了。这道题也是删除节点的方式,不过可能出现删除或者说跳过节点数不固定的情况,这种情况在处理的时候,我一开始用一个变量来保存要处理的节点个数,最后发现,这样做很麻烦,要考虑多种情况。BM15与BM16属于同类型问题,BM16是进阶。这类问题主要在于删除节点的操作,链表中删除节点涉及到当前节点的删除和下一个节点的删除大致这两种情况。
2024-02-23 09:44:53 1202
原创 C/C++ BM15 删除有序链表中重复的元素-I
这题比较简单,就是一个链表中的删除节点操作以及节点值比较的过程。主要是对链表的删除操作的复习回顾。
2024-02-23 09:44:41 907
原创 C/C++ BM14 链表的奇偶重排
这道题算是链表思路的一种常规题,看透题目本质做起来还是不难。链表做题两种方式,双指针,开辟辅助数组或链表。
2024-02-21 09:16:40 1121
原创 C/C++ BM13 判断一个链表是否为回文结构
回文结构这种之前在做C++入门题的时候,判断回文数的时候遇到过。之前的做法是采用取数,求余等方法来把每一个数取出来再组合进行判断。在链表中,链表倒置后再相互判断值,比原本取数的方法好像更方便。官方给的理解还是用了双指针法,我这里也会贴。这题比较简单,方法也有很多,个人觉得在链表题中,链表翻转和双指针法的用途还是比较广的。
2024-02-21 09:16:27 913
原创 C/C++ BM12 单链表的排序
链表排序处理起来比较麻烦,因为它不支持下标操作。这里写一下链表排序的常用方法。链表排序除了用辅助数组,还可以用归并的思想。关于归并排序在链表中的运用还是有点陌生,需要多实践。
2024-02-20 12:12:15 1031
原创 C/C++ BM11 链表相加(二)
这道题使用链表来实现加法运算,主要是涉及到数据对位以及加法进位的处理。这道题回顾了一下链表翻转。对于链表的四则运算涉及到对位情况,考虑使用翻转链表会更好。不能按照常规的四则运算从左到右的顺序来做,要结合链表本身的特性来做。
2024-02-20 12:11:54 899
原创 C/C++ BM10 两个链表的第一个公共结点
这道题用到的思想和前几道题一样,涉及到了双指针这种,整体难度不大。链表题常用算法,双指针。两个链表之间的关系比较,考虑STL容器。
2024-02-19 16:59:12 924
原创 C/C++ BM9 删除链表的倒数第n个节点
这道题对于BM8来讲,其实是一个新的解题思路。主要用到了双指针以及哨兵节点。BM8,9综合了前面做到的题的思路。链表题几个思路:双链表,栈,遍历。
2024-02-19 16:58:57 888
原创 C/C++ BM8 链表中倒数最后k个结点
这道题和BM1中的思路有些许类似,整体不难。这题比较简单,主要就是链表遍历,同时也复习了一下栈的使用。
2024-02-18 15:58:41 858
原创 C/C++ BM7 链表中环的入口结点
BM6里面使用了双指针法和哈希的方式来查找环,BM7相对于BM6只多了一个查找第一个重复地址的过程。个人认为是用哈希是最简单,C++11标准的set或者map。这道题让我对STL中的set特性有了更深的理解;结合BM6和BM7,两道题让我第一次接触双指针解法,收获颇丰。
2024-02-18 15:58:27 964
原创 C/C++ BM6判断链表中是否有环
做了一堆单链表单指针的题目,这次是个双指针题,这里双指针的作用非常明显。如何判断链表有环的情况,之前没遇到过。所以第一次做的时候有点懵逼,同时对双指针的使用上并不是特别熟悉,这道题在初期思考的时候都是想着怎么用单链表加标志位的情况来判断。还是有点草率了。
2024-01-18 21:11:05 1081
在Gtiee搭建仓库传代码/多人开发/个人代码备份-git同步-TortoiseGit+TortoiseSVN
2024-04-22
基于STM32CubeMX和keil采用RTC时钟周期唤醒和闹钟实现LED与BEEP周期开关
2023-11-19
基于STM32CubeMX和keil采用USART/UART实现非中断以及中断方式数据回环测试借助CH340以及XCOM
2023-11-04
基于STM32CubeMX和keil采用SPI通信实现轮询方式读写W25Q128获取设备ID
2023-08-20
linux安装eclipseCDT对应的jdk和eclipseCDT安装包
2023-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人