自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 问答 (1)
  • 收藏
  • 关注

原创 高性能mysql第五章——创建高性能的索引

第五章 创建高性能的索引 ORM(对象关系映射)只能产生合理的查询,而不能产生适合索引的

2019-03-19 11:18:18 254

原创 高性能mysql第一章——架构

第一章 架构 1.1 mysql逻辑架构 mysql服务器逻辑架构图如上图所示。 第一层为连接/线程处理层。每个客户端连接mysql服务器,都会拥有一个线程。服务器会缓存线程,因此无需为每一个连接新建或释放线程。mysql5.5以上的版本还提供了线程池,可以用少量线程服务大量连接。当客户端连接到服务器时,服务器需要对其认证,根据用户名主机名密码等信息,确定客户端是否有查询/更新某个数据库内某张表...

2019-03-19 11:17:37 4706

原创 可爱的编码——ASC、Unicode、UTF-8、GBK

字符集 ASCII ASC编码是现今最通用的 单字节 编码系统,包含英文字母、数字、特殊字符等。 它的最高位称作奇偶校验位,用来校验传输过程中编码是否出现错误。 奇校验 字节中1的个数为奇数,如果不是则最高位置1 偶校验 字节中1的个数为偶数,如果不是则最高位置1 Unicode Unicode为 每种语言 中的 每个字符 设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文...

2018-10-29 17:04:07 1367

原创 fluent python笔记——元组

一、元组 有很多人会将元组看作不可变的列表,这完全忽略了元组的巨大作用。 元组是对数据的记录,正是因为它不可变的特性,让它成为记录数据的强大工具。一个元组对应着一条数据,一条数据包含多个元素。我们通过元素独一无二的位置来获取我们需要的信息。 1. 元组拆包 平行赋值 person = ('fancy', 18, 'cute') name, age, dis = person ...

2018-07-27 14:22:59 262

原创 fluent python笔记——数据模型

数据模型 python最好的品质之一就是一致性,当使用python工作一会儿之后,就可以正确的猜出语句的意思。而这都归功于python的数据模型。 数据模型其实是对python框架的描述,它规范了这门语言自身 构建模块 的接口,这些模块包括序列、迭代器、函数、类和上下文管理器。 python解释器遇到特殊句法时,会使用特殊方法激活对象的基本操作,这些特殊方法的格式为:__xxx__。比如ob...

2018-07-18 17:30:38 574

原创 SQLAlchemy

SQLAlchemy 一、 什么是SQLAlchemy? SQLAlchemy是Python一款非常强大的ORM软件。 对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。 二、 怎么用? 1. 连接准备 建立连接 from sqlalchemy ...

2018-07-11 15:51:02 1158

原创 Network——TCP/IP协议三次握手四次挥手

我们都知道,TCP/IP协议是面向连接的协议,即客户端与服务器建立连接之后,在连接断开之前都可相互传送数据。 所谓三次握手与四次挥手,是客户端与服务器之间建立连接的过程。 我们先来看一下TCP报文的格式。 Seq序号:即图中的32位序号,标识发送方 向 接收方发送的字符流 Ack序号:即图中的32位确认序号,只有当ACK=1时,序号才有效 SYN:发起一个连接 ACK:确认序号有效 F...

2018-04-21 16:03:46 345

原创 C++的55个条款——实现

实现 大多数情况下,设计类以及函数是花费精力最多的两件事。一旦设计正确,相应的实现大多直截了当。但对于实现,依然有许多需要注意的问题。 条款26:尽可能延后变量定义式的出现时间 只要我们定义了一个类类型的变量,那么当程序的控制流到达这个变量时,便要承受构造它的成本;当程序的控制流离开这个变量时,便要承受析构它的成本,即使这个变量没有被使用过。我们应该尽量避免这些情况。 合理的做法就...

2018-04-11 12:30:44 583

原创 C++的55个条款——设计与声明

设计与声明 本章主要讲解 C++接口的良好设计与声明 条款18:让接口容易被正确使用,不易被误用 ①想要开发一个“容易被正确使用,不易被误用”的接口,首先必须考虑客户可能做出什么样的错误。 比如我们为一个表现日期的类设计一个构造函数。 class Date { public: Date(int d,int m,int y):day(d),month(m),year(y...

2018-03-30 17:09:18 422

原创 C++的55个条款——资源管理

资源管理 所谓资源就是,一旦用了它,将来必须归还给系统。 C++程序中最常用的资源就是动态分配内存,但内存只是我们要管理的众多资源之一。其他常见的资源包括:文件描述器、互斥锁、数据库连接、网络socket。 接下来我们将学习基于对象的资源管理方法,建立在C++对构造函数、析构函数、copying函数的基础上。当我们严格按照这些条款来做的时候,几乎可以消除资源管理的问题。 条款13:以对...

2018-03-20 18:08:39 476

原创 C++的55个条款——构造/析构/赋值运算

构造/析构/赋值运算 条款05:了解C++默认编写并调用哪些函数 什么时候空类不再是一个空类了呢?当C++处理之后就不再是了,编译器会自动为它声明一个编译器版本的默认构造函数、合成拷贝构造函数、合成拷贝赋值运算符、析构函数。只有当这些函数被调用时,才会被编译器创建出来。 默认构造函数和析构函数,将调用基类和成员变量的默认构造函数及析构函数。需要注意的是,编译器合成的析构函数不是虚函数,只...

2018-03-19 18:07:32 226

原创 旅行商问题——贪心算法

旅行商问题(TSP) 旅行商问题是一个经典的组合优化问题。 经典的TSP问题可以描述为:一个商品推销员要去若干个城市进行商品推销,该推销员从一个城市出发,需要经过所有城市,回到出发地。应如何选择行进路线,以使总的行程最短。 从图论的角度来看,该问题实质是在一个带权完全无向图中,找一个权值最小的Hamilton回路。 由于该问题的可行解是所有顶点的全排列,随着顶点数的增加,会产生组合爆炸。 ...

2018-03-06 14:01:50 8791 7

原创 C++基础的不能再基础的学习笔记——面向对象程序设计(二)

在前面的学习中,我们了解到了面向对象程序设计的一些基础知识,接下来我们继续学习相关内容。http://blog.csdn.net/fancynece/article/details/79398653 一、访问控制与继承 protected成员 如前所述,一个类使用protected关键字来声明那些希望与派生类共享但是不能被用户访问的成员。 protected成员对于类的用户是不可...

2018-03-02 23:39:16 257

原创 C++基础的不能再基础的学习笔记——面向对象程序设计(一)

面向对象程序设计 在很多程序中都存在着一些,相互关联但是有细微差别的概念。例如:书店中不同书籍的定价策略可能不同:有的书籍按照原价卖,有的书籍打折销售,有时我们为购买书籍超过一定数量的顾客打折,有时只对前多少本销售的书籍打折等等。面向对象的程序设计(OOP)适用于这类应用。 一、OOP概述 面向对象程序设计(OOP)的核心思想是:数据抽象、继承、动态绑定。 数据抽象 : 将类的实现和...

2018-03-02 15:51:13 293

原创 C++基础的不能再基础的学习笔记——拷贝控制示例(二)

拷贝控制示例 我们在之前的博客上了解到了,需要管理资源的类通常要定义拷贝控制操作、swap操作。http://blog.csdn.net/fancynece/article/details/79346314 但是,①资源管理并不是一个类需要定义自己的拷贝控制成员的唯一原因。 一些类需要拷贝控制成员的帮助来进行②簿记工作或其他操作。 我们通过一个例子来说明,簿记工作需要拷贝控制成员。 定义...

2018-02-27 20:47:08 254

原创 C++基础的不能再基础的学习笔记——拷贝控制(一)

拷贝控制 当定义一个类时,我们显示地或隐式地指定此类型对象 拷贝、移动、赋值和销毁时做什么。 一个类通过定义五种特殊的成员函数来控制这些操作,称为拷贝控制操作。 拷贝构造函数:用同类型对象初始化时的操作 移动构造函数:用同类型对象初始化时的操作 拷贝赋值运算符:用同类型对象赋值时的操作 移动赋值运算符:用同类型对象赋值时的操作 析构函数:此类型对象销毁时的操作 在定义任何C++类时,拷...

2018-02-24 20:38:37 407

原创 C++基础的不能再基础的学习笔记——关联容器

关联容器 之前我们已经学习了顺序容器: http://blog.csdn.net/fancynece/article/details/79193881 而关联容器和顺序容器有着根本的不同: 顺序容器中的元素是按元素在容器中的位置顺序保存和访问的, 关联容器中的元素是按关键字来保存和访问的。 关联容器类型 元素 按关键字有序保存元素 map 键值...

2018-02-14 21:49:32 285

原创 C++基础的不能再基础的学习笔记——顺序容器(其他操作)

顺序容器 顺序容器基本操作:http://blog.csdn.net/fancynece/article/details/79193881 我们已经对容器的公有操作和顺序容器的操作有了一定的了解,接下来,我们要进一步学习顺序容器。 一、vector、string对象的增长 通常情况下,我们不必关心一个标准库类型是如何实现的,但是对于vector和string来说, 部分实现渗透到了接口

2018-02-02 20:41:31 404

原创 C++基础的不能再基础的学习笔记——顺序容器(基本操作)

顺序容器 在前面我们已经了解到,容器就是某类对象的集合。 顺序容器 访问元素的顺序与元素加入时的位置相对应,即顺序访问元素,但同时向容器中添加和删除元素、非顺序访问元素都要付出代价。 一、顺序容器概述 我们所熟悉的vector、deque(双端队列)、list(双向链表)、forword_list(单向链表)、array(固定大小的数组)、string、堆、栈等都是顺序容器。 新标准

2018-01-31 18:04:55 368

原创 C++基础的不能再基础的学习笔记——类型转换

类型转换 一、隐式转换 int ival = 3.14 + 3; 在执行上述语句时,编译器先将int类型的3转换为double类型,之后相加,再将所得结果转换为int类型初始化ival。 显然,这里的类型转换无须程序员的介入,称之为隐式转换。 1. 算术转换 算数转换就是将一种算术类型(宽度小的)转换为另一种算术类型(宽度大的)。 整型提升 整型提升负责把 小整数类型 转换成

2018-01-26 20:52:02 218

原创 C++基础的不能再基础的学习笔记——类(二)

类 在上一章中http://blog.csdn.net/fancynece/article/details/79143021, 我们了解了类的一些基础知识,接下来,对类做进一步的探究。 一、类成员再探 1. 自定义类型别名 在类中,我们可以为数据类型定义别名而使代码更清晰简洁。 class Screen { public: typedef string::size_

2018-01-25 21:57:12 302

原创 C++基础的不能再基础的学习笔记——类(一)

类 在C++中,我们用类来定义自己的数据类型。类的基本思想是数据抽象和封装,可以理解为将接口与实现分开,提供给用户可使用的类的接口,但类的具体实现对用户是透明的。 class Person { private: string name; unsigned age = 0; bool sex = 0; public: Person() {name = ""

2018-01-24 16:53:04 293

原创 C++基础的不能再基础的学习笔记——迭代器(基础)

迭代器(iterator ) 迭代器是对对象的间接访问。并不是所有类型都可以使用迭代器,只有容器可以。 因此迭代器的对象为:容器中的元素 or string对象中的字符。 有效的迭代器是指 迭代器 指向某个元素 or 指向尾元素的下一位置,其他情况都是无效的。 一、迭代器的使用 有迭代器的类型 就有 可以返回迭代器的成员,最常见的如begin( )和end( ),begin

2018-01-17 19:52:27 324

原创 C++基础的不能再基础的学习笔记——标准库类型vector(基础)

vector类模板 vector表示相同对象的集合,每个对象都有一个索引,又成之为容器。 vector不是一种类型,而是一个类模板。顾名思义,模板本身不是一个类或函数,但根据提供类型的不同,可以生成不同类型的类或函数,这一过程叫做实例化。 因此,在使用vector模板时,我们要给出对象的类型。 #include using namespace std; vector a;

2018-01-17 17:50:25 277

原创 C++基础的不能再基础的学习笔记——标准库类型string

string类型 string类型表示可变长的字符序列,使用string类型必须引入string头文件。 #include using namespace std; 一、定义和初始化string对象 在字符串字面值中,编译器在每一个字符串字面值的结尾处都加上一个空字符’\0’,例如“fancy”,就变成了”fancy\0”。 定义和初始化string对象有许多方式。 st

2018-01-17 16:10:42 307

原创 C++基础的不能再基础的学习笔记——const限定符

const限定符 const限定符修饰的变量,只有只读功能,而无法改变值。 一、const的特点 1.const对象一旦创建不可更改,因此必须初始化。 const int bufSize = 512; bufSize = 512; //错误,试图改变值 const int i = 12; const int j; //错误,没有赋初值 2.默认状态下,const对象只在

2018-01-16 19:58:24 227

原创 C++基础的不能再基础的学习笔记——复合类型

复合类型 复合类型是基于其他类型定义的类型。 C++中最常用的复合类型是引用和指针。 一、引用 引用是给对象起的别名,它代表了对象,但它不是一个对象。 一般在变量初始化时,初始值会被拷贝到新建的对象中,然而在定义引用时,程序将引用和它的初始值绑定在一起,一旦初始化完成,引用将和它的初始对象一直绑定在一起,无法令引用重新绑定到另一对象,因此引用必须初始化。 引用的类型要与绑定的对象类型严

2018-01-16 13:29:27 231

原创 机器学习白到反光的小白——前言

学习笔记,如果有错误求指出,但是小白就不要看了容易误导泥萌(/ω\) 一、什么是机器学习 机器学习是实现人工智能的一种手段,我们为机器编写学习程序,使得机器可以自主学习。 在这里,我们将机器看成一个人,所有所学的知识和做出的行为,都是先天学习和后天学习共同形成的。对于机器而言,先天学习是人类设定的大量规则,后天学习则是机器学习主要致力实现的部分。每一个机器起初都是一个小baby,在社会教

2018-01-15 17:40:37 385

空空如也

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

TA关注的人

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