自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

浩海烟云的博客

谢谢点赞关注

  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 【设计原则和思想---单一职责(Single Responsibility Principle )】

经典的设计原则SOLID、KISS、YAGNI、DRY、LOD 很多人因为对这些原则理解的不够透彻,导致在使用的时候过于教条主义,拿原则当真理,生搬硬套,反而适得其反;SOLID原则并非单纯的1个原则,而是由5个设计原则组成的,它们分别是:单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则,依次对应SOLID中的S、O、L、I、D这5个英文字母。单一职责1.如何理解单一职责原则(SRP)?一个类只负责完成一个职责或者功能。不要...

2022-01-19 21:54:45 282

原创 10款提高工作效率的工具软件,你值得拥有!

1. Q-Dir 文件夹分区软件Q-Dir 是一款非常独特的资源管理器,Q-Dir特别适用于频繁在各个目录间跳跃复制粘贴的情况。因为Q-Dir有 4 个窗口。每个窗口都可以方便的切换目录,以不同颜色区分不同类型的文件,各窗口之间可以方便的拖放操作互相的文件。2. Clover 资源管理器(四叶草),文件夹分区简介:Clover 是 Windows Explorer 资源管理器的一个扩展,为其增加类似谷歌 Chrome 浏览器的多标签页功能。强大的快捷键类似chrome的快捷键Ctrl + N

2021-09-23 20:42:49 4337 4

原创 字符串分割

字符串分割适用IP地址,日期,间隔符等字符串分割场景#include <iostream>#include <algorithm>#include <vector>#include <string>#include <set> using namespace std; const string DATE_DELIMITERS = "-";const string IP_DELIMITERS = ".";const strin

2021-09-17 16:56:03 165

原创 复杂数据---结构体的使用

复杂数据—结构体的使用合理的使用stl库中数据结构,并定义合适的结构体,存储各种复杂的数据,实现增删查改功能#include <iostream>#include <vector>#include <unordered_map>#include <algorithm>using namespace std;// 典型的复杂数据处理,定义一个存储的结构体,并进行各种不同类型数据的存储struct Room { int id;

2021-09-16 14:49:51 141

原创 二分查找总结

二分查找的基本概念     二分查找属于编程五大常用算法(分治、贪心、回溯、分支定界和动态规划)中的分治算法。分治算法的思想就是将一个规模很大的问题,分解未n个规模较小的问题,这些子问题之间是相互独立且与原问题性质相同,求出子问题的解,就可以得到原问题的解;    二分查找也叫折半查找,每次查找都可以舍弃一半,缩小搜索范围;运用二分查找的前提是数据必须是有序的;首先需要了解一下与二分查找相关的几个库函数:(1)binary_search     查找某个元素是否出现。     a.函数模板:bi

2021-09-13 19:28:56 109

原创 程序员的自我修养阅读笔记

程序员的自我修养一、. 代码编写的分区代码段可执行代码、字符串常量数据段已初始化全局变量、静态变量、常量数据BSS段未初始化全局变量、静态变量栈局部变量、函数参数堆动态分配内存五个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过,进程对这些内存的管理方式因内存的用途不一而不尽相同:**有些内存是事先静态分配和统一回收的;有些却是按照需要动态分配和回收的。**对于任何一个普通的

2021-08-10 17:59:49 281

转载 UML图中的关系符号解释

UML图中的关系符号解释UML图是程序设计最基本的操作,可以很好地梳理各个类之间的关系,方便我们对代码框架的理解和实现思路的形成;  在面向对象程序设计时,类与类之间的关系主要分为  继承,实现,依赖,关联,聚合,组合六种关系。  其中前两种理解很简单,重点是比较容易混淆的后四种。  (1)继承(或叫泛化)   指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系; 类图如下   (2)实现

2021-07-16 11:53:54 1507

原创 tftp工具使用说明

tftp工具使用说明1.tftp工具使用说明  FTP的意思是文件传输协议,而TFTP中的第一个T是Trivial,意思是简单的,所以TFTP用来做简单的文件传输是比较适合的。  在PXE简介及使用说明中已经介绍过TFTPD64,它就是一个简单好用的TFTP工具。这里在Windows上打开一个TFTPD64应用,并作为服务器,然后在另外的一台电脑上与该服务器进行交互来获取文件。2. 命令使用操作   如果Ubuntu上没有此工具,需要安装一下,   查看是否有此工具:tftp   安装此工

2021-07-16 11:14:50 8093

原创 设计模式---策略模式理解

设计模式—策略模式理解&esmp; 策略模式本质是以多态的实现程序的可扩展性,将对象和算法解耦,定义一系列的算法,把它们一个个封装起来,并且这些算法之间可以相互替代,该算法可以独立于使用它的客户程序而变化(扩展、子类化)。...

2021-07-15 20:35:11 101

原创 《剑指offer》之打印链表

(1)链表链表是有指针把若干个节点连接成链状,我们说链表是一种动态数据结构,是因为在链表创建时,无需知道链表的长度,当插入一个新的节点时,我们需要为新的节点分配内存,然后调整指针的指向来确保新节点被链接到链表当中。内存分配不是在创建链表时一次完成的,而是每添加一个节点分配一次内存,由于没有闲置的内存,链表的空间效率比数组要高。题目:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList...

2021-06-24 19:53:36 63

原创 MarkDown使用说明文档(二)

流程图Graph关键字graph表示一个流程图的开始,同时需要指定该图的方向。例如:graph LR A –> B#mermaid-svg-kqKwREq7YGTmTFzE .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-kqKwREq7YGTmTFzE .label text{fill:#33

2021-06-24 19:38:55 88

原创 MarkDown使用说明文档(一)

下载TyPora免费软件,方便编辑,特别是快捷键的使用一、标题这是一级标题这是二级标题这是三级标题这是四级标题这是五级标题这是六级标题二、字体这是加粗的文字这是倾斜的文字`这是斜体加粗的文字这是加删除线的文字三、引用这是引用的内容这是引用的内容这是引用的内容四、分割线五、图片[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vIBN0lLS-1624517029278)(图片地址

2021-06-24 19:36:46 143 1

原创 Linux基础命令操作

linux基础命令  linux是一个高可靠、高性能的系统,而所有的这些优越性只有在直接使用linux命令行(shell环境)才能充分地体现出来;1.用户系统相关命令(1) su命令   变更为其他的使用者的身份,主要用于将普通用户身份转变为超级用户,而且需要输入相应的用户密码。   使用示例:su - root(2) 用户管理   useradd:添加用户账号   passwd:设置账号密码   使用示例:useradd yul        passwd yul(3) 系统管理命令

2021-05-18 22:21:55 141

原创 求解两个数的最大公约数和最小公倍数

1. 求解两个数的最大公约数在翻别人的题解的时候偶然发现了这个函数,,__gcd(x,y);好像是GNU的内部函数,不是一个标准库里的函数,我也不太了解,平时写题直接用这个函数挺方便的,当然也可以手写gcd函数,它头文件是< algorithm >。#include <iostream>#include <algorithm>using namespace std;int a,b;int main(){ cin>>a>>b;

2020-12-04 17:16:40 263

原创 vscode中实现C++代码编译

VScode中实现C++代码的编译最近公司使用的vscode进行代码的编辑,所以在自己的电脑上也下载了一下这个软件,在配置的过程中遇到了不少的问题,因此,准备写一下这个博客,记录一下,希望帮助遇到相同问题的朋友,共同交流。首先需要在vsode官网去下载软件,并进行安装就行了,这个操作起来还是比较容易的。其次,想要编译C++的代码,还需要下载一个叫做MinGW的编译器,MinGW(Minimalist GNU for Windows), 是一个适用于微软windows应用程序的极简开发环境。MinGW提

2020-08-23 22:34:12 5430 2

原创 C++之匈牙利命名法

C++之匈牙利命名法匈牙利命名法(Hungarian notation)是电脑程序设计中的一种变量命名规则,此命名法又可细分为:    系统匈牙利命名法    匈牙利应用命名法    匈牙利命名法具备语言独立的特性,并且首次在BCPL语言中被大量使用。由于BCPL只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型。匈牙利命名法通过明确每个变量的数据类型来解决这个问题。  在匈牙利命名法中,一个变量名由一个或多个小写字母开始,这些字母有助于记忆变量的类型和用途,紧跟着的就是程

2020-08-10 10:34:49 594

原创 STL(十五)---容器的选用

容器的选用默认情况下,选用vector,内部数据结构最简单,允许随机存取。如果经常要在序列头部和尾部插入和删除元素,应该使用deque。如果希望元素被删除时,容器能自动缩减内存,那么也要选deque。此外,由于vector通常采用一个内存块存放元素,而deque采用多个内存块,后者可包含更多元素。如果需要经常在容器中段执行元素的插入、删除或移动,可考虑list。list提供特殊成员函数,可在...

2019-09-01 17:48:50 178

原创 STL(十四)---特殊容器priority_queue

简介在头文件queue 中定义namespace std { template <typename T, typename Container = vector<T>, typename Compare = less<typename Container::value_type>> ...

2019-09-01 17:08:51 160

原创 STL(十三)---特殊容器queue

简介在头文件queue中定义namespace std { template <typename T, typename Container = deque<T>> class queue;}queue就是数据结构里队列的实现,先进先出。定义中的第二个参数用来定义queue内部存放元素的实际容器,可以是任何序列式容器,默认容器为deque。核心接口...

2019-09-01 17:05:18 211

原创 STL(十二)---特殊容器stack

简介在头文件stack中定义namespace std { template <typename T, typename Container = deque<T>> class stack;}stack就是数据结构里堆栈的实现,后进先出。定义中的第二个参数用来定义stack内部存放元素的实际容器,可以是任何序列式容器,默认容器为deque,是因...

2019-09-01 16:59:24 165

原创 STL(十一)---无序容器(Unordered Container)

简介在头文件<unordered_set>和<unordered_map> 中定义namespace std { template <typename T, typename Hash = hash<T>, typename EqPred = equal_to<T>, ...

2019-09-01 16:55:33 271

原创 STL(十)---map和multimap

简介在头文件map中定义namespace std { template <typename Key, typename T, typename Compare = less<Key>, typename Allocator = allocator<pair<const Key,T> > &gt...

2019-09-01 16:47:52 139

原创 STL(九)---set和multiset

简介在头文件set>中定义namespace std { template <typename T, typename Compare = less<T>, typename Allocator = allocator<T> > class set; template &...

2019-09-01 16:27:15 163

原创 STL(八)---forward_list

STL(八)—forward_list简介在头文件 <forward_forward_list> 中定义namespace std { template <typename T, typename Allocator = allocator<T> >class forward_forward_list;}单向列表是...

2019-09-01 16:01:57 139

原创 STL(七)---list

STL(七)—list简介在头文件 中定义namespace std { template <typename T, typename Allocator = allocator<T> > class list;}列表是一个容器,它支持任何位置的元素快速插入和删除,不支持快速的随机访问。它被实现为双向的链表。与forward_list相比,它...

2019-09-01 14:57:41 99

原创 STL(六)---deque

STL(六)—deque简介在头文件 中定义namespace std { template <typename T, typename Allocator = allocator<T> > class deque;}deque(双向队列)是一个索引序列的容器,允许对其头部和尾部进行快速的插入和删除。此外,在deque两端插入和删除并不会使其它...

2019-09-01 14:51:17 183

原创 1.动态的二维数组的创建和查找

如何创建一个动态的二维数组利用C++中的STL中的vector#include<iostream>#include<vector>using namespace std;int main(){ int row, col; cout << "请输入行列值:"; cin >> row>> col; vector&lt...

2019-08-18 09:23:27 175

转载 操作系统之进程线程总结

操作系统之进程线程总结1.什么是进程?什么是线程?进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。  在Mac、Windows NT等采用...

2019-08-13 20:19:31 142

原创 C++之memcpy的用法

memcpy的用法memcpy是 c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。1、函数原型 void *memcpy(void *dest, const void *src, size_t n);2、功能从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址...

2019-08-13 19:36:27 18346 1

原创 STL(五)---vector

简介在头文件 中定义namespace std { template <typename T, typename Allocator = allocator<T> >class vector;}vector 是一种序列容器,是对大小可变数组的封装。数组中的元素是连续存储的,所以除了能够通过迭代器访问外,还可以通过常规的指针偏...

2019-08-09 10:49:13 142

原创 STL(四)---array

简介array在头文件 中定义namespace std{ template<class T, size_t N> class array;}array是固定元素个数的容器,与相应C数组的语义相同,容器array< T,N> 的大小等于相应C数组T[N]的大小,且性能也与C数组相同。但是它提供了C++标准容器的相应特性,如可以查询容器大小,支持...

2019-08-09 10:29:41 108

原创 C++必须掌握的15道技术面试题

C++必须掌握的20道技术面试题(1) 请用简单的语言描述一下C++是什么?C与C++的区别是什么?答:C++是在C语言的基础上开发的一种面向对象的编程语言,应用广泛,支持多种编程范式,面向对象编程,泛型编程和过程化编程,支持封装,继承,多态等重要特性。C语言是一个结构化的语言,面向的是过程,重在考虑如何通过一个过程,对输入进行运算处理得到输出(或实现过程控制),而对于C++,首先考虑的是如何...

2019-08-07 21:05:06 786

原创 STL(三)---迭代器

STL(三)—迭代器头文件所有的容器都定义了自己的迭代器类型,所以一般情况下,不需要再自己添加迭代器头文件。但是如果要使用一些特殊的迭代器,如反向迭代器,或者一些迭代器辅助函数,那么就需要添加头文iiterator。迭代器类型类型能力提供者输入迭代器一次向前读取istream输出迭代器向前写入ostream,inserter前向迭代器向前读取和...

2019-08-03 18:32:59 107

原创 STL(二)---算法

STL(二)—算法算法库定义了用来实现各种功能的函数(如查找、排序、计数、修改等),都是针对指定范围内元素的操作。需要注意的是,元素的范围以 [first, last) 的形式指定,其中 last 指的是范围内最后一个元素的下一个元素。在头文件 中定义。...

2019-08-03 16:10:58 148

转载 STL(一)---概述

STL(Standard Template Library)里有很多组成部分,但是主要有三个,容器、迭代器和算法容器用来管理某个特定对象的集合。每一种容器都有自己的优点和缺点,在项目中根据不同的需求,使用不同的容器。容器可以是数组、链表或者类字典。迭代器用于遍历对象集合的元素。这些集合可以是容器或容器的子集。每一个容器类都提供了它自己的迭代器类型。算法用来处理的元素的集合。例如,可以进行搜索...

2019-08-02 15:29:18 183

原创 3.C++之面向对象

面向对象面向对象程序设计(Object-oriented programming,OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。封装把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。关键字:public, protected, private。不写默认为 private。public 成员:可以被任意实体访...

2019-08-02 10:28:49 110

原创 C++排序算法

C++之排序算法冒泡排序  冒泡排序(Bubble sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行指导没有再进行交换,也就是说数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。  算法原理:  (1) 比较相邻的元素。如果第一个比第二个大,就交换他们两个;  ...

2019-08-01 22:22:50 524

原创 C++之线程传参祥解,detach()大坑,成员函数做线程函数

线程传参祥解,detach()大坑,成员函数做线程函数(1) 传递临时对象作为线程参数         1.1 要避免的陷阱(解释1)          1.2 要避免的陷阱(解释2)            1.3 总结(2) 临时对象作为线程参数         2.1 线程id概念         2.2 临时对象构造时机抓捕(3) 传递类对象、智能指针作为线程参数(4...

2019-08-01 21:27:08 222

原创 10.C++之链表

C++之链表一、链表简介链表是一种物理存储单元上下不连续的存储结构,数据元素之间是通过链表中的指针进行链接。链表是由一系列的节点(链表中每一个元素称为节点)组成,节点可以在运行时动态生成。每一个节点都包含两个部分:一个是存储数据的数据域,另一个是存储下一个节点地址的指针域。一般链表在一些需要快速插入/删除,而不太关心或者不需要随机访问的情况下使用。链表相对于数组:链表允许在任意位置插入或...

2019-06-24 15:32:25 120

原创 2.C++之基础知识点总结

C++之基础知识点总结1.C++和C的区别设计思想上:C++是面向对象的语言,而C是面向过程的结构化编程语言;语法上:C++具有重载、继承和多态三种特性;C++相比C,增加多许多类型安全的功能,比如强制类型转换;C++支持范式编程,比如模板类、函数模板等。2. C/C++ 中指针和引用的区别(1).指针有自己的一块空间,而引用只是一个别名;(2).使用sizeof看一个指针的大...

2019-06-17 09:56:22 150

精选电子制作图解

有助于课程设计的参考,资料内容丰富,比较全面,涉及数字电路以及高频电子线路设计

2018-07-20

空空如也

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

TA关注的人

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