自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Cpp设计模式及举例

C++设计模式之单例模式C++设计模式之工厂模式C++设计模式之代理模式C++设计模式之外观模式C++设计模式之适配器模式C++设计模式之模板方法模式C++设计模式之策略模式C++设计模式之命令模式C++设计模式之观察者模式C++设计模式之装饰模式...

2021-02-20 23:16:38 370

原创 Cpp前序遍历、中序遍历、后序遍历(非递归版本)

前序后中序遍历很好理解,代码相似,只不过换了一下push操作的位置,基本模板:while( 栈非空 || p 非空){ if( p 非空){ } else{ }}前序遍历 vector<int> preorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode*> save; TreeNode* cur = root;

2020-11-19 10:17:38 218

原创 CPP实现几大经典排序算法

冒泡排序void bubblesort(vector<int>& arr){ int n = arr.size(); for(int i = 0 ; i < n ; i++){ for(int j = n-2; j >= i; j--) if(arr[j] > arr[j+1]) swap(arr[j], arr[j+1]); } return ;}选择排序

2020-11-13 16:08:59 201

原创 通信系统中常用到的符号单位及参数(持续更新)

单位:1、dB:功率增益,一个纯粹的计数符号,表示相对值,其中功率与dB的换算关系如下xdB=10lg(Po/Pi)3dB表示Po是Pi的两倍2、dBm(分贝毫瓦):描述功率大小的绝对值,功率P(mW)与x(dBm)的计算公式如下因此,dBm会有正有负,其中1mW对应0dBm,当功率大于1mW时,dBm的值为正,反之为负。两个单位为dBm的功率相减其实就是对应功率的除符号:1、EV...

2020-04-11 14:50:57 3807

原创 mysql数据库的脏读、幻读、不可重复度,事务的隔离界别

不同事务级别带来的并发问题:脏读:事务A读取了事务B刚修改但没有提交的数据。如果事务B回滚,事务A读的是无效数据幻度(侧重数据的新增):事务A读取一条数据,事务B插入一条有关该数据的记录,事务A再次读取此数据,两次读取结果不一样,如同产生了幻觉一般不可重复度(侧重数据的修改):事务A读取一条数据,事务B对该数据进行了修改并进行提交,事务A再次读取该数据,两次读取结果不一样事务隔离级别:读未提交,读已提交,重复度,序列化读未提交:最低级别,一个事务可以读取另一个事务未提交的更新结果读提交:

2021-08-31 16:13:30 135

原创 mutex和atomic的效率比较

#include <iostream>#include <vector>#include <atomic>#include <thread>#include <mutex>using namespace std;long long a = 0;atomic<long long> b(0);long long c = 0;mutex mt;void fun1(){ for(int i = 0; i &lt

2021-06-04 17:12:02 289

原创 【计网】流量控制(滑动窗口技术)和拥塞控制(慢开始、快重传、拥塞避免、快恢复)

流量控制流量控制就是让发送端发的不要太快,让接收方来的及收。 即通过 滑动窗口技术,窗口的单位是字节,不是保温段,发送方的发送窗口不能超过接收方给出的接收窗口的数值。流量控制往往指的是点对点通信量的控制,是个端到端的问题。潜在的死锁问题:若A为客户端,B为服务器,若现在B告诉A接收窗口(rwnd)为0,此时A不能再发送数据,过一段时间后,当B可以收数据时,会再次通知A新的rwnd,若该通知在传输中丢失,可能会造成死锁(A在等B的通知, B在等A的数据)。因此,为了避免这种情况,TCP为每个连接设有一

2021-04-10 17:18:58 791

原创 map下标操作 [ ] 和insert区别

map下标操作 [ ] 和insert区别map的insert和下标操作都可以用作添加元素,但两者有区别。特别是下标操作,需要特别注意。1insertinsert接受一个pair参数,并且返回值也是一个pair。返回值pair中的first元素是一个迭代器,如果数据插入成功,则返回插入关键字位置,用->解引用可以提取pair类型元素; 若插入失败,迭代器指向该map已经存在的该元素的位置。second成员是一个bool类型变量,如果关键字已在map中,insert什么也不做,second返

2021-04-09 10:24:19 1290

原创 CPPSTL的一些函数操作

关联容器的一些操作关联容器:map、set、unordered_map、unordered_set访问元素find()c.find(k)返回一个迭代器,指向第一个关键字为k的元素,若k不在容器中,返回尾后迭代器删除元素erase()c.erase( k )从c中删除每个关键字为k的元素,返回删除元素的数量c.erase( p )从c中删除迭代器p指定的元素,必须指向c中的一个真实元素,不能等于c.end(),c.erase(b, e)从c中删除迭代器b和e所表示的范围中的元素[b,e),返回

2021-02-28 18:33:56 175

原创 MYSQL概念及增删改查

数据库database数据库管理系统DBMS,数据库是通过DBMS创建和操纵的容器结构化查询语言SQL,用来与数据库通信的语言ACID:原子性:事务中操作要么全成功,要么全失败一致性:事务必须使数据库从一个一致性状态转变为另一个一致性状态隔离性:多个并发事务要相互隔离持久性:一个事务一旦被提交,对数据库的改变将是永久的引擎的使用:InnoDB是一个可靠的事务处理引擎,但不支持全文搜索MEMORY功能等同于MyISAN,由于将数据存在内存,速度会快,适用于临时表MyISAM是一个性能极高

2021-02-25 20:50:53 118

原创 leetcode买卖股票、动态规划

买卖股票的最佳时期买卖股票的最佳时期2买卖股票的最佳时期3买卖股票的最佳时期4最佳买卖股票时机含冷冻期买卖股票的最佳时期int maxProfit(vector<int>& prices) { int n = prices.size(); //初始化状态: int pro = 0;//第0天的最大利润 int minn = prices[0];//第0天的历史最低价格 //从第一天开始,i表示天

2021-02-21 22:11:49 69

原创 C++设计模式之装饰模式

装饰模式:包装模式,通过一种对客户端透明的方式来扩展对象功能,是继承关系的一种替代。装饰模式就是把要附加的功能分别放在单独的类中,并让这个类包含他要装饰的对象,当需要执行时,客户端就可以有选择的,按顺序的使用装饰模式功能包装对象//一般情况下,可以用继承对类进行拓展//装饰模式 可以动态给一个类增加功能class AbstractHero{public: virtual void ShowStatus() = 0;public: int mHP; int mMP;

2021-02-20 23:09:35 116

原创 C++设计模式之观察者模式

观察者模式:建立与一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象成为观察目标,而被通知的对象称为观察者。一个观察目标对应多个观察者//抽象的英雄 观察者class AbstractHero{public: virtual void Update() = 0;};class HeroA : public AbstractHero{public: HeroA(){ cout << "英雄A正在打BOSS

2021-02-20 22:39:35 119

原创 C++设计模式之命令模式

命令模式:讲一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,命令模式是一种行为性模式。命令模式可以将请求发送者和接受者完全解耦,发送者和接收者之间没有直接引用关系。//协议处理类class HandleClientProtocol{public: void AddMoney(){ cout << "给玩家增加金币" <<endl; } void AddDiamond(){ cout << "给玩家增加钻石"

2021-02-19 23:23:42 167 1

原创 C++设计模式之策略模式

策略模式:定义了一系列算法,并将每一个算法封装起来,而且使它们还可以互相替换。策略模式让算法独立于使用它的客户而独立变化//抽象武器 武器策略class WeaponStrategy{public: virtual void UseWeapon() = 0;};//实现武器细节class Knife : public WeaponStrategy{public: virtual void UseWeapon(){ cout << "使用匕首" &lt

2021-02-18 21:12:26 77

原创 C++设计模式之模板方法模式

模板方法模式:用来对类或对象怎样交互和怎样分配职责进行描述定义一个操作中的算法框架,将一些细节步骤延迟到子类中实现。模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤现有冲咖啡和泡茶两种情况,两种情况的大体框架比较相似,细节不同//模板框架class DrinkTemplate{public: virtual void boilwater() = 0;//煮水 virtual void Brew() = 0;//冲泡 virtual void

2021-02-18 20:51:56 115

原创 C++设计模式之适配器模式

适配器模式:将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作现有如下情况:int main(){ vector<int> v; for(int i = 0 ; i < 10; i ++){ v.push_back(i); }//第三个参数为一个函数,观察for_each的源代码可以得知该函数仅可接受一个参数 for_each(v.begin(), v.end(), ??? );}需要的目标函数,该函数需要传入两个参

2021-02-18 20:29:43 127

原创 Linux网络编程之Socket通信

**CS模型下,通信步骤及所需函数常用用法**服务器端:socket—bind—listen—accept—write/read—close客户端:socket—connect—write/read—close1、socket函数的用法int socket(int domain, int type, int protocol);//返回值为socket套接字文件描述符,用来监听连接/*domain:协议族 ipv4环境使用 AF_INET ipv6环境使用 AF_INET6type

2021-02-17 21:49:20 86

原创 C++设计模式之外观模式

外观模式(Facade):根据迪米特法则,如果两个类不必彼此之间通信,那么这两个类就不应当发生相互作用class TV{public: void On(){ cout << "电视机打开" <<endl; } void Off(){ cout << "电视机关闭" <<endl; }};class Light{public: void On(){ cout &l

2021-02-16 22:37:13 147

原创 C++设计模式之代理模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问//提供一种代理来控制对其对象的访问class AbstractCommonInterface{public: virtual void run() = 0;};//真正的系统类class MySystem: public AbstractCommonInterface{public: void run(){ cout << "系统启动" <<endl; }};//负责实现

2021-02-16 22:20:17 147

原创 C++设计模式之工厂模式

工厂模式:分为简单工厂模式、工厂模式、抽象工厂模式三个层次简单工厂模式,通过一个工厂类实现别的类的创建缺点:1、增加新的功能时,需要修改源代码,不符合开闭原则2、一个工厂类职责过重,类发生问题时,会影响很多实用使用该工厂的模块//抽象水果class AbstractFruit{public: virtual void Showname() = 0;};//两个具体水果class Apple: public AbstractFruit{public: virtual void Sho

2021-02-15 21:28:42 189

原创 C++设计模式之单例模式

实现单例步骤1、构造函数私有化2、增加静态的私有的当前类的指针对象3、提供静态的对外接口,可以让用户获得单例对象单例分为懒汉式和饿汉式懒汉式:只有调用getInstance时才会new一个对象;class Singleton_lazy{private: Singlenton_lazy(){ cout<<"我是懒汉式构造函数"<<endl; } static Singleton_lazy* getInstance(){ if(pSingleton == NU

2021-02-15 19:43:35 246 1

原创 将s拆成数放在数组里

#include <iostream>#include <vector>#include <string>#include <cmath>using namespace std;int main(){ string s = "123|456|-78"; vector<string> save; int start = 0; for(int i = 0 ; i < s.size(); i++){

2020-12-17 21:14:08 93

转载 陷波滤波器(Notch filter)

陷波滤波器:指的是一种可以在某一个频率点迅速衰减输入信号,以达到阻碍此频率信号通过的滤波效果的滤波器。陷波滤波器属于带阻滤波器的一种,只是它的阻带非常狭窄,起阶数必须是二阶(含二阶)以上。当带阻滤波器的阻带很窄时, 被称为陷波滤波器 , 又称点阻滤波器。一个理想点阻滤波器的频率响应是要在消除的信号频率点, 其值等于零;而在其他频率处, 其值不为零, 且要等于1理想的陷波滤波器的频率响应式为...

2020-09-14 10:21:53 9411

转载 【计网】三次握手与四次挥手

【计网】三次握手与四次挥手TCP连接的建立都是采用客户服务器方式主动发起连接建立的应用进程叫客户(我们上网用的电脑)被动等待连接建立的应用进程叫服务器(网站所在的服务器)三次握手(TCP链接的建立)第一次握手:客户请求建立SYN=1 ACK=0 seq=x 同步位为1,确认号为0,序列号为x第二次握手:服务器回应SYN=1 ACK=1 seq=y ack=x+1 确认号为x+1第三次握手:客户发ACK=1 seq=x+1 ack=y+1 确认号为y+1第三

2020-09-13 17:25:28 401

原创 微波光子线路中的调制格式及互调项消除方案的选择

DSB:SSB:1、缓解色散引起的功率衰落2、提升带宽利用率OCS:

2020-05-18 20:40:08 224

原创 MZM

Intensity Mach–Zehnder Modulators (IM)dual-parallel Mach–Zehnder modulator (DPMZM)Dual-drive MZM (DD-MZM)

2020-05-14 10:58:39 975 1

原创 模拟光子链路(APLs)

低损耗、高带宽、重量相对较低、不受电磁干扰的影响

2020-05-10 18:28:01 520 1

原创 和偏振有关的那些事

PolM是一种特殊的相位调制器PolM的两个主轴上的相位调制指数是互补的

2020-05-08 21:09:43 403 1

原创 A-ROF中存在的问题

1、A-ROF对非线性引起的衰落、通道损失、色散引起的功率衰减非常敏感。2、在RRU需要复杂的DSP恢复大量的模拟信号,增加系统复杂性3、需要复杂的模拟子系统或高带宽模数转换器对中频信号进行下转换,增加系统复杂性A-ROF的诸多缺点难以满足5G的需求...

2020-04-13 22:23:43 326

原创 什么是MFH(移动前传)和MBH(移动回传)

MFH:BBU到RRUMBH:基站到基站控制器

2020-04-09 22:24:58 2212

原创 几种光学毫米波产生方式的优缺点

SOA-MZI(半导体光放大器马赫-曾德尔干涉仪)XGM(交叉增益调制)优点:转换效率高;抗极化缺点:交叉增益的调制带宽有限;需要更高的输入功率;多个信道之间有串扰SOA-MZI(半导体光放大器马赫-曾德尔干涉仪)XPM(交叉相位调制)优点:线性好;低输入功率需求;抗极化缺点:交叉增益的调制带宽有限,系统结构复杂,多个信道之间有串扰直接调制:优点:简单缺点:激光器的调制...

2020-04-09 21:43:26 1011

原创 ROF系统的主要性能指标及概念和杂谈(佛系更新)

ROF系统的主要性能指标有:链路增益G、系统的噪声系数NF、无杂散动态范围SFDR、三阶互调失真IMD3、三阶截点IP31、链路增益G:链路增益分为光增益和RF增益2、噪声系数NF:ROF链路的输出噪声功率与输入噪声功率NF=10lg((sin/nin)/(sout/nout))=10lg(nout/gtnin)NF=10lg((sin/nin)/(sout/nout))=10lg(nout/...

2020-04-06 16:07:25 2823

原创 浅谈激光的单色性与相干性

单色光:理论上,单色光只有一个波长。但是实际上,激光器产生的激光不是理想的光谱线,而是在中心波长范围内有一定的宽度,即具有有限的谱线宽度。相干性:两列波满足振动方向相同,频率相同,相位差恒定,那么他们就是相干的...

2020-03-31 14:04:58 2686

原创 C++primer Plus10.2.3排列容器中的元素并且删除重复值的算法

C++primer Plus10.2.3排列容器中的元素并且删除重复值的算法这里用到sort和unique算法,因为算法不能执行容器的操作(删除重复元素),所以还需要使用vector的erase成员函数#include <iostream>#include <vector>#include <algorithm>#include <string&...

2020-02-08 12:55:13 164

原创 编译器是如何处理new和delete的

Complex* pc = new Complex(1,2);//Complex为类名(复数)再编译器处理这一语句的时候,先分配复数的内存,然后进行转型,最后调用构造函数void* men= operator new( sizeof(Complex));//第一步,分配内存pc = static_cast<Complex*>(men);//第二步,转型pc->Compl...

2020-01-15 20:46:09 225

原创 Bigthree

类成员涉及到指针的情况时:class String{private: char * m_data;//m_data为指针public: ...};存在三个成员函数(Big Three)的设计:拷贝构造函数,拷贝赋值函数和析构函数class String{private: char * m_data; //m_data为指针public: St...

2020-01-15 20:06:03 354

空空如也

空空如也

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

TA关注的人

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