自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

漆灿

学习总结

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

原创 C++中的类型转换

目录1. 隐式转换2. 显示转换3. static_cast(静态转换)4. dynamic_cast(动态转换)5. const_cast6. reinterpret_cast1. 隐式转换1)提升精度,宽化转换:(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,编译器允许直...

2019-09-26 18:07:41 465

原创 strcopy 实现

strcopy(char* dest, const char* source){ if (dest == NULL || source == NULL) { return NULL; } char* ret = dest; while((*dest++ = *source++) != '\0'); return ret;}参考:...

2019-09-22 21:52:33 930

原创 C++ String 实现

String {public: String(const char* str); String(const String& str); String& operator=(const String& str); ~String();private: char* m_data;};String::String(const char* str) { i...

2019-09-22 21:25:21 118

原创 vector 降序(默认升序)

struct greater{  template <typename T>  bool operator() (const T &a, const T &b) {return a > b;}};sort(str_vec.begin(), str_vec.end(), greater()); //使用示例参考:[1]ht...

2019-09-22 21:10:48 4471

原创 数组分成两个尽量相等的子数组

类似于0-1背包问题将一个数组分成两部分,不要求两部分所包含的元素个数相等,要求使得这两个部分的和的差值最小。比如对于数组{1,0,1,7,2,4},可以分成{1,0,1,2,4}和{7},使得这两部分的差值最小。思路:这个问题可以转化为求数组的一个子集,使得这个子集中的元素的和尽可能接近sum/2,其中sum为数组中所有元素的和。这样转换之后这个问题就很类似0-1背包问题了:在...

2019-09-22 18:46:15 5845

原创 单例模式

单例模式保证类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享单例模式的要点有三个:单例类只能有一个实例必须自行创建这个实例必须自行向整个系统提供这个实例注意点实例控制: 单例模式会阻止其他对象实例化自己的单例对象的副本,从而确保所有对象都访问唯一实例 灵活性: 因为类控制实例化过程,所以类可以灵活更改实例化过程 开销: 虽然数量很少,但如果每次对象...

2019-09-21 22:07:31 62

原创 UML

我们在进行软件开发的时候,如果只靠脑子想,只有一个看不见的软件规划、软件架构,可能写程序时会影响你的思路的清晰,或者中间间断了以后会忘记当初的规划而要重新回忆或重新规划。如果我们可以把程序设计用图形表达出来,就会让我们的思路很清晰,也很容易进行合理的优化,我们和其他的软件开发人员或者用户就能够进行更好的沟通。面向对象设计图应运而生,它能清楚的描述以下几个问题: 1...

2019-09-21 21:55:27 151

原创 友元函数

友元是一种破坏类的封装性获取类的隐藏数据的方式。 如果有以下程序: class A { public: int Getx() { return x; } private: int x; }; cl...

2019-09-21 21:47:47 298

原创 抽象类和纯虚函数

抽象类的定义就是,含有纯虚函数的类。纯虚函数跟一般的虚函数有很大不同。我们下面来了解下纯虚函数。一.纯虚函数 即使有的虚函数在基类中不需要做任何工作,我们也要写出一个空的函数体,这时这个函数体没有什么意义,重要的是此虚函数的原型声明。C++为我们提供了纯虚函数,让我们在这种情况下不用写函数实现,只给出函数原型作为整个类族的统一接口就可以了,函数的实现可以在派生类中给出。...

2019-09-21 21:43:40 1780

原创 类模板

类模板就是为类声明一种模板,使得类中的某些数据成员,或某些成员函数的参数,又或者是某些成员函数的返回值可以取任意的数据类型,包括基本数据类型和自定义数据类型。类模板的声明形式如下:template <模板参数表> 类声明 我们看到,在类的声明之前要加上一个模板参数表,模板参数表里的类型名用来说明成员数据和成员函数的类型,等会可以看下...

2019-09-21 21:00:17 162

原创 函数重载、重写和覆盖

函数重载:同一个类中的同名函数,参数的类型或个数不同(返回值不同不算)函数重写(覆盖):子类继承父类,重写父类的函数,即多态,通过虚函数实现。函数重定义(隐藏):子类中与父类函数同名,不要求函数返回值和函数参数类型相同。参考:[1]https://www.cnblogs.com/qbin/p/10829005.html...

2019-09-21 20:39:40 226

原创 C++中private、protected、public区别

第一: private,public,protected的访问范围:private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问注:友元函数包括两种:设为友元的全局函数,...

2019-09-21 14:34:39 175

原创 多用组合,少用继承

组合更加灵活,有时候子类只需要父类的一部分功能,如果用继承的话,可能会复写很多的方法,也可能会继承到很多并不需要的属性或者行为方法。组合的优点:把需要的东西组合在一个类中,这个类并不需要继承任何父类,也可以提供想要的行为方法。另一方面,继承的子类,实际上需要在编译器确定下来,这满足不了需要在运行内才能确定对象的情况。参考:[1]http://www.360doc.com/cont...

2019-09-21 11:24:29 140

转载 通信恩仇,5G江湖(转)

通信恩仇,5G江湖作者:衣公子Apple决定不再忍受高通了。以高通滥用垄断地位为由,不仅停止专利费的进贡,更放出豪言,索赔10亿美金。同一时间彻底倒向高通死对头英特尔阵营,换上了后者的Modem芯片。高通又岂是吃素的,这家号称“律师比工程师还多”的科技公司,空前绝后。身未动掌已至,非常策略地选在中国起诉Apple,以侵犯专利的理由请求禁售iPho...

2019-09-17 17:48:02 969

原创 CDMA技术

CMDA技术又称码分多址(Code Division Multiple Access)技术 或码分复用技术,是一种多址接入的无线通信技术。CDMA理论被应用于WCDMA无线接口,而WCDMA无线接口被应用于国际3G标准UMTS和日本3G标准。CMDA有两种类型,分别为正交型和伪随机码型。这里对正交型进行说明。CDMA制式中,区分各个信道主要不再依靠频率和时隙等方法,同一地区不同用户同时使...

2019-09-17 17:21:02 1125

原创 电话号码的字母组合

题目描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].解题方案:这道题也没有什么难点,我是写了一个子函数,输入数字,将对应的字母存在向量里返回,回...

2019-09-17 13:07:24 105

原创 最长等差数列

N个不同的正整数,找出由这些数组成的最长的等差数列。例如:1 3 5 6 8 9 10 12 13 14等差子数列包括(仅包括两项的不列举)1 3 51 5 9 133 6 9 123 8 135 9 136 8 10 12 14其中6 8 10 12 14最长,长度为5。Input第1行:N,N为正整数的数量(3<=N<=10000)。第2-...

2019-09-17 11:40:39 797

原创 内存管理之伙伴算法

算法作用 它要解决的问题是频繁地请求和释放不同大小的一组连续页框,必然导致在已分配页框的块内分散了许多小块的空闲页面,由此带来的问题是,即使有足够的空闲页框可以满足请求,但要分配一个大块的连续页框可能无法满足请求。 伙伴算法(Buddy system)把所有的空闲页框分为11个块链表,每块链表中分布包含特定的连续页框地址空间,比如第0个块链表包含大小为2^0个连续的页框,第...

2019-09-16 19:29:52 812

原创 STL内存分配

C/C++中内存分配与STL中的空间配置C语言中的内存分配C语言中主要有三个函数进行内存分配,分别是malloc,realloc,calloc,释放内存的函数是free,头文件是<cstdlib>1.malloc函数原型:void *malloc(unsigned int num_bytes);。分配的是以字节计算的结果,返回的指针类型是void*。注意:不会进...

2019-09-16 19:25:51 124

原创 旋转矩阵

题目描述任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。 要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。输入描述:输入有多组数据。每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。输出描述:...

2019-09-16 17:08:30 850

原创 PV操作

三态模型进程通常分为就绪、运行和阻塞三种工作状态。三种状态在某些条件下可以转换,具体转换关系如下:进程三个状态之间的转换是通过PV操作和信号量来控制的,其中信号量起到了很重要的作用。信号量信号量是最早出现的用来解决进程同步与互斥问题的机制。信号量(Saphore)由一个值和一个指针组成,指针指向等待该信号量的进程,信号量的值表示相应资源的使用情况。信号...

2019-09-16 16:30:05 16353 3

原创 进程间通信

IPC的方式通常有:管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket。一. 无名管道特点1)半双工(数据只能在一个方向上流动),具有固定的读端和写端。2)它只能用于具有亲缘关系的进程间的通信(也是父子进程或者兄弟进程之间)3)它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write函数。但是它不是普通的函数,并不属于其他任何文件系统...

2019-09-16 16:08:54 98

原创 线程同步机制

线程同步的四种机制临界区 互斥量 事件 信号量主要区别在于:适用范围:临界区在用户模式下,不会发生用户态到内核态的切换,只能用于同进程内线程间同步。其他会导致用户态到内核态的切换,利用内核对象实现,可用于不同进程间的线程同步。性能:临界区性能较好,一般只需要数个CPU周期。其他机制性能相对较差,一般需要数十个CPU周期;临界区不支持等待时间,为了获得临界资源,需要不断轮询(死循...

2019-09-16 14:47:12 232

原创 线程和协程的区别

协程属于线程,即一个线程下面可以开辟多个协程。协程是用户态的轻量级线程。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。当多个协程切换时,由于其同属于一个线程,所以可以看作是同步执行的,不存在同时共享资源的情况,可以不加锁的访问全局变量,切换上下文非常快。极高的执行效率:因为子程序切换不是线程切换,而...

2019-09-16 13:02:50 213

原创 Python中GIL详解

GIL是什么首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。有名的编译器例如GCC,INTEL C++,Visual C++等。Python也一样,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行。像其中的...

2019-09-16 10:31:13 167

原创 fork()、vfork()、clone()的区别

因为生活的复杂,这是一个并行的世界,在同一时刻,会发生很多奇妙的事情,北方下雪,南方下雨,这里在吃饭,那边在睡觉,有人在学习,有人在运动,所以这时一个多彩多姿的世界,每天都发生着很多事情,所以要想很好的表现这个世界,协调完成一件事儿,就得用到多进程或者多线程。所以进程是程序猿一定会接触到的一个东西,他能使我们的程序效率提高,高效的完成多任务,并行执行。下面主要看看产生进程或线程的三个函数。...

2019-09-15 20:24:51 225

原创 数据库-并发问题与锁机制

数据库的锁机制读锁(共享锁)是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。写锁(排他锁)如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修...

2019-09-15 17:10:34 270

原创 数据库-分库分表

一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存...

2019-09-15 16:13:56 224

原创 数据库-读写分离

1 读写分离概述读写分离概述.png基本架构图:基本架构图.jpg2 适用场景适用场景.png读写分离不是银弹,并不是一有性能问题就上读写分离,而是应该先优化,例如优化慢查询,调整不合理的业务逻辑,引入缓存查询等只有确定系统没有优化空间后才考虑读写分离集群3 引入的系统复杂度问题问题一 主从复制延迟主从复制延迟.png问题二 分配机制...

2019-09-15 15:49:58 156

原创 数据库优化

1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样...

2019-09-15 15:32:08 281

原创 E-R图

一、那么什么是E-R模型? E-R模型即实体-联系模型,E-R模型的提出基于这样一种认识,数据库总是存储现实世界中有意义的数据,而现实世界是由一组实体和实体的联系组,E-R模型可以成功描述数据库所存储的数据。二、为什么要设计E-R模型? 设计E-R模型能够更有效和更好的模拟现实世界。三、E-R模型的基本要素1) 实体 :实体是E-R模型的基本对象,是现实世界中各种事物的抽象,凡...

2019-09-14 22:43:01 2057

原创 数据库范式

数据库三大范式1 第一范式(1NF)(每一列都是不可分割的基本数据项)在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的...

2019-09-14 22:10:23 86

原创 drop、delete和truncate的区别

drop直接删除表,truncate删除表中数据,再插入时自增长id又从1开始,delete删除表中数据,可以加where语句。(1) DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作。TRUNCATE TABLE则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志中保存,删除行是不能恢复的。并且在删除的过程中不会激...

2019-09-14 21:41:37 173

原创 发糖果问题

题目描述:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果...

2019-09-14 21:29:59 450

原创 数据库--视图

视图的基本概念以及作用视图(子查询):是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。对视图的修改:单表视图一般用于查询和修改,会改变基本表的数据,多表视图一般用于查询,不会改变基本表的数据。--创建视图-- create or replace view v_student as select * from student; --从视图...

2019-09-12 19:18:00 162

原创 Batch Normalization的作用

在深度神经网络训练中,Batch Normalization有诸多非常强大的作用和效果:无论使用哪种激活功能或优化器,BN都可加快训练过程并提高性能;解决梯度消失的问题;规范权重;优化网络梯度流...等等。批量归一化(BN)是神经网络的标准化方法/层通常BN神经网络输入被归一化[0,1]或[-1,1]范围,或者意味着均值为0和方差等于1。BN对网络的中间层执行白化本文只关注BN为什么...

2019-09-12 18:47:01 16819 3

原创 准确率(precision)、召回率(recall)和F值

摘要:  数据挖掘、机器学习和推荐系统中的评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)简介。引言:  在机器学习、数据挖掘、推荐系统完成建模之后,需要对模型的效果做评价。业内目前常常采用的评价指标有准确率(Precision)、召回率(Recall)、F值(F-Measure)等,下图是不同机器学习算法的评价指标。下文讲对其中某些指标做...

2019-09-12 18:27:23 1989

原创 卷积神经网络参数计算

1. 简要计算卷积层:W2 = (W1 - F + 2P) / S + 1 H2 = (H1 - F + 2P) / S + 1 D2 = K其中:W2和H2为卷积后特征图的宽和高,F为卷积核的尺寸,P为padding,即图像加零的厚度,S为stride即每次移动的距离,K为卷积核的个数。2. 详细举例1:  比如...

2019-09-12 16:35:44 5090 1

原创 MD5详解

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。1、MD5算法简介MD5在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。MD5将任意长度的“字节串”变换成一个128...

2019-09-12 14:50:49 7438

原创 加密算法及MD5详解

加密算法和协议对称加密简介:加密和解密使用同一个密钥常见的算法:- DES:Data Encryption Standard;- 3DES:Triple DES;- AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384bits)- Blowfish- Twofish- IDEA- ...

2019-09-12 14:47:06 508

praseTree.cpp

二叉树结构转括号表达式、括号表达式转二叉树结构

2019-09-07

空空如也

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

TA关注的人

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