自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (10)
  • 收藏
  • 关注

原创 C++ 11的新特性

1.auto关键字:编译器可以根据初始值自动推导出类型。但是不能用于函数传参以及数组类型的推导。2.nullptr关键字:nullptr是一种特殊类型的字面值,它可以被转换成任意其它的指针类型;而NULL一般被宏定义为0,在遇到重载时可能会出现问题。3.智能指针:C++11新增了std::shared_ptr、std::weak_ptr等类型的智能指针,用于解决内存管理的问题。4.初始化列表:使用初始化列表来对类进行初始化。5.右值引用:基于右值引用可以实现移动语义和完美转发,消除两个对象交互时不必

2020-08-30 15:29:51 184

原创 strcmp函数的实现

实现思路:从两个字符串第一个字符开始相减,若不相等即意味着已经比出了大小,!temp为0,while循环停止,返回temp值即可。若相等,即temp=0,那么str1和str2都加1,继续比较后面的字符,直到str1和str2不相等或字符串遍历结束。注:用*(unsigned char*)str1而不是用*str1。这是因为传入的参数为有符号数,有符号字符值的范围是-128 ~ 127,无符号字符值的范围是0~255,而字符串的ASCII没有负值,若不转化为无符号数这回在减法实现时出现错误。例如 st

2020-08-28 18:56:14 549

原创 RTTI

运行时类型识别(Run-Time Type Identification,RTTI)。在 C++ 中,只有类中包含了虚函数时才会启用 RTTI 机制,其他所有情况都可以在编译阶段确定类型信息。编译器会在虚函数表 vftable 的开头插入一个指针,指向当前类对应的 type_info 对象。当程序在运行阶段获取类型信息时,可以通过对象指针 p 找到虚函数表指针 vfptr,再通过 vfptr 找到 type_info 对象的指针,进而取得类型信息。**(p->vfptr - 1)...

2020-08-28 10:36:12 120

原创 C++的类型转换

类型转换就是对数据所占用的二进制位做出重新解释,如果有必要,在重新解释的同时还会修改数据,改变它的二进制位。。隐式转换和显式转换对于隐式类型转换,编译器可以根据已知的转换规则来决定是否需要修改数据的二进制位;而对于强制类型转换,由于没有对应的转换规则,所以能做的事情仅仅是重新解释数据的二进制位,但无法对数据的二进制位做出修正。这就是隐式类型转换和强制类型转换最根本的区别。隐式类型转换必须使用已知的转换规则,虽然灵活性受到了限制,但是由于能够对数据进行恰当地调整,所以更加安全(几乎没有风险)。强制类型转

2020-08-28 10:10:13 111

原创 智能指针

我们在写程序的时候会遇到许多内存管理问题,比如:1.有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用;2.有些内存资源已经被释放,后期又试图再释放一次(重复释放同一块内存会导致程序运行崩溃);3.没有及时释放不再使用的内存资源,造成内存泄漏,程序占用的内存资源越来越多。智能指针是一种内存管理工具,可以自动删除分配的内存。智能指针和普通指针类似,只是不需要手动释放指针,而是通过智能指针自己管理内存的释放。C++ 智能指针底层是采用引用计数的方式实现的。简单的理解

2020-08-26 11:42:27 674

原创 C语言实现多态

相比于C语言,C++多了继承、封装、多态的特性。那么我们如何在C语言里模拟多态呢?通过宏替换来实现静态多态我们知道宏替换的一个很大的缺点就是二义性和数据不需要声明类型,这样就很容易导致逻辑错误,所以用内联函数来替换宏。二义性和数据不需要声明类型的意思就是不同的数据类型能实现相同的运算,相当于C++的重载,也就是静态多态。#define ADD(A, B) (A) + (B);int main(){ int a =1; int b =2; cout<<ADD(a,

2020-08-25 16:55:03 1126

原创 剑指offer—约瑟夫环

f(n,m) = y意味着你从index=0开始数,数y+1个数,然后就停,停谁身上谁就是结果。f(n-1,m)=x意味着有n-1个数的时候从index=0开始数,数x+1个数就找到这结果了。那么f(n,m) 和f(n-1,m)的关系是什么呢?有n个数的时候,我们划掉了下标为(m-1)%n的数字。接下来要去掉的数字即为(m-1)%n +x+1,考虑到边界[(m-1)%n+x+1]%n,则f(n,m)=[(m-1)%n+x+1]%n,化简即为f(n,m) =(m+x)%n。 int john(int

2020-08-24 20:33:24 103

原创 剑指offer—用单调栈解决滑动窗口最大值问题

用双端队列来存储窗口数据,在存储的时候通过比较把最大值放在队首,每次将队首数据放入结果数组。1.每次放入数据时,将该数据与队列末尾的元素数据相比较,小的出队,这样就保证了单调递减的队列;2.判断队首元素是否出队。因为存储的是下标,所以通过比较下标即可知道是否出队。因为每次只移动1,所以只会有1个元素出队,用if即可不需要用while循环3.如果元素下标已经达到窗口值,即可记录最大值。 vector<int> maxSlidingWindow(vector<int>&

2020-08-24 17:06:16 134

原创 指针和迭代器的区别

迭代器(1)迭代器不是指针,是类模板,表现的像指针。他只是模拟了指针的一些功能,通过重载了指针的一些操作符,->,*,++ --等封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升(lift),提供了比指针更高级的行为,相当于一种智能指针,他可以根据不同类型的数据结构来实现不同的++,–等操作;(2)迭代器返回的是对象引用而不是对象的值,所以cout只能输出迭代器使用*取值后的值而不能直

2020-08-21 19:42:48 430

原创 STL底层实现

STL主要由:以下几部分组成:容器、迭代器、仿函数、算法、分配器、配接器他们之间的关系:分配器给容器分配存储空间,算法通过迭代器获取容器中的内容,仿函数可以协助算法完成各种操作,配接器用来套接适配仿函数1.vector连续存储的容器,动态数组,在堆上分配空间,支持快速随机访问,访问:O(1)插入:在最后插入(空间够):很快在最后插入(空间不够):需要内存申请和释放,以及对之前数据进行拷贝。在中间插入(空间够):内存拷贝在中间插入(空间不够):需要内存申请和释放,以及对之前数据进行拷贝。删除

2020-08-21 19:37:58 184

原创 剑指offer——数组中只出现一次的数

题目:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。本题采用位运算的思路:将整个数组全员进行异或运算,所有出现两次的元素都异或为0,所以最后得到的结果是两个只出现一次的数字的异或结果。关键问题就在于,如何将这两个数分离出来。办法是通过找到div=temp&(-temp)最低异或位,最低异或位就代表着两个数从哪里开始不同,这样通过对div和全数组异或就可以区分出最低异或位为0和1的两个数,也就是

2020-08-21 17:16:59 127

原创 剑指offer——二叉搜索树的第K大节点

题目:给定一棵二叉搜索树,请找出其中第k大的节点。二叉搜索树的中序遍历结果即为递增排序的数组,用sort从大到小排序后第k-1个元素即为所求元素。void preorder(vector<int> &temp,TreeNode *p) { if(p!=NULL ) { preorder(temp,p->left ); temp.push_back (p->val ); preorder(temp,p->right); }

2020-08-21 15:43:50 77

原创 美的笔试复盘

1.Linux程序运行后,文件句柄0,1,2分别是:标准输入,标准输出,标准错误2.一个典型TCP客户端(主动建立连接,主动断开连接)会经历的状态序列:SYNC_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT3.ip地址10.1.8.0/24和10.1.9.0/24的网关:从数字开始不同的那个位置开始即10.1.0000100|0.0/234.下列关于对象初始化的叙述中,正确的是::定义对象时将自动调用构造函数进行初始

2020-08-21 13:22:55 510

原创 剑指offer35——数组中的逆数对

题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。一种直观的思路是通过暴力破解的方法,时间复杂度为O(N*N)。除此以外,我们还可以借鉴归并排序的思想来求解逆数对。归并排序在合并数组的时候回比较前后两个数组元素的大小,在这个时候就可以得到每个元素的逆序对second-mid,时间复杂度为O(NLogN)。 int reversePairs(vector<int>& nums) { vector&

2020-08-20 15:43:01 180

原创 数组和链表的区别

数组数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。数组的插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中都要向后移。删除数据时,这个数据后面的数据都要往前移动。但数组的随机读取效率很高。因为数组是连续的,知道每一个数据的内存地址,可以直接找到给地址的数据。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。数组需要预留空间,在使用前要先申请占内存的大小,可能会浪费内存空间。并且数组不利于扩展,数组定义的空间不够时要重新定义数组。数

2020-08-18 16:57:12 107

原创 最大堆和最小堆

堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左子节点和右子节点的值。最大堆和最小堆是二叉堆的两种形式。最大堆:根结点的键值是所有堆结点键值中最大者。最小堆:根结点的键值是所有堆结点键值中最小者。...

2020-08-18 16:50:37 108

原创 堆和栈的区别

1.申请方式:栈由系统自动分配和管理,堆由程序员手动分配和管理。2.效率:栈由系统分配,速度快,不会有内存碎片。堆由程序员分配,速度较慢,可能由于操作不当产生内存碎片。3.扩展方向栈从高地址向低地址进行扩展,堆由低地址向高地址进行扩展。4.程序局部变量是使用的栈空间,new/malloc动态申请的内存是堆空间,函数调用时会进行形参和返回值的压栈出栈,也是用的栈空间。栈的效率高的原因:栈是操作系统提供的数据结构,计算机底层对栈提供了一系列支持:分配专门的寄存器存储栈的地址,压栈和入栈有专门的指

2020-08-18 16:48:25 249

原创 栈溢出

栈溢出概念:栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致栈中与其相邻的变量的值被改变。栈溢出的原因:局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。局部变量是存储在栈中的,因此这个很好理解。解决这类问题的办法有两个,一是增大栈空间,二是改用动态分配,使用堆(heap)而不是栈(stack)。递归调用层次太多。递归函数在运行时会执行压栈操作,当压栈次数太多时,也会导致堆栈溢出。指针或数组越界。这种情况最常见,例如进行字符串拷贝,或处理用

2020-08-18 16:45:32 3192

原创 epoll的实现

Linux epoll机制是通过红黑树和双向链表实现的。 首先通过epoll_create()系统调用在内核中创建一个eventpoll类型的句柄,其中包括红黑树根节点和双向链表头节点。然后通过epoll_ctl()系统调用,向epoll对象的红黑树结构中添加、删除、修改感兴趣的事件,返回0标识成功,返回-1表示失败。最后通过epoll_wait()系统调用判断双向链表是否为空,如果为空则阻塞。当文件描述符状态改变,fd上的回调函数被调用,该函数将fd加入到双向链表中,此时epoll_wait函数被唤醒,返

2020-08-18 16:36:06 283

原创 map和unordered_map

map对于map,其底层是基于红黑树实现的,优点如下:1.有序性,这是map结构最大的优点,其元素的有序性在很多应用中都会简化很多的操作2.map的查找、删除、增加等一系列操作时间复杂度稳定,都为logn缺点:查找、删除、增加等操作平均时间复杂度较慢,与n相关unordered_map对于unordered_map来说,其底层是一个哈希表,优点如下:查找、删除、添加的速度快,时间复杂度为常数级O©缺点如下:因为unordered_map内部基于哈希表,以(key,value)对的形式存储,

2020-08-18 16:14:10 146

原创 哈希表

静态查找表以及动态查找表其查找的过程都无法避免同查找表中的数据进行比较,查找算法的效率很大程度取决于同表中数据的查找次数。哈希地址只是表示在查找表中的存储位置,而不是实际的物理存储位置。f()是一个函数,通过这个函数可以快速求出该关键字对应的的数据的哈希地址,称之为“哈希函数”。在构建哈希表时,最重要的是哈希函数的设计。例如设计电话簿案例中的哈希函数为:每个名字的姓的首字母的 ASCII 值即为对应的电话号码的存储位置。这时会发现,张三和赵六两个关键字的姓的首字母都是 Z ,最终求出的电话号码的存储位置

2020-08-18 16:02:13 205

原创 B+树

B+树是B树的变种,比B树有着更高的查找效率B+树的特性:1.有k个子树的中间节点包含k个元素,每个元素不保存数据,只用来索引,所有数据都保存在叶子结点;2.所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。3.所有的非终端结点(非叶子结点)可以看成是索引部分,结点中仅含有其子树(根结点)中的最大(或最小)关键字。B+树中含有两个头指针,一个指向整棵树的根结点,另一个指向关键字最小的叶子结点。同时所有的叶子结点依据其关键字的大小自小

2020-08-17 22:06:41 215

原创 B-树

B-树(即B树,平衡多路查找树)需要满足以下特性(m阶)1.每个节点至多有m颗子树;2.除根节点外,每个分支至少有m/2颗子树;3.根节点至少有两颗子树;4.所有的叶子节点都在同一层上,叶子结点可以看做外部节点,不包含任何信息。5.有j个孩子的非叶子结点恰好有j-1个关键码。...

2020-08-17 21:52:30 67

原创 红黑树

红黑树(R-B TREE,全称:Red-Black Tree),本身是一棵二叉查找树,在其基础上附加了两个要求:1.树中的每个结点增加了一个用于存储颜色的标志域;2.树中没有一条路径比其他任何路径长出两倍,整棵树要接近于“平衡”的状态。这里所指的路径,指的是从任何一个结点开始,一直到其子孙的叶子结点的长度;接近于平衡:红黑树并不是平衡二叉树,只是由于对各路径的长度之差有限制,所以近似于平衡的状态。红黑树对于结点的颜色设置不是任意的,需满足以下性质的二叉查找树才是红黑树:1.树中的每个结点颜色不是红

2020-08-17 16:12:41 148

原创 二叉查找树转化为平衡二叉树

为了排除动态查找表中不同的数据排列方式对算法性能的影响,需要考虑在不会破坏二叉排序树本身结构的前提下,将二叉排序树转化为平衡二叉树。当二叉排序树的平衡性被打破时,就如同扁担的两头出现了一头重一头轻的现象,此时只需要改变扁担的支撑点(树的树根),就能使其重新归为平衡。使用二叉排序树实现动态查找操作的过程,实际上就是从二叉排序树的根结点到查找元素结点的过程,所以时间复杂度同被查找元素所在的树的深度(层次数)有关。为了弥补二叉排序树构造时产生影响算法效率的因素,需要对二叉排序树做“平衡化”处理,使其成为一棵

2020-08-17 15:51:18 635

原创 平衡二叉树

动态查找表的另外一种实现方式——平衡二叉树。平衡二叉树,又称为 AVL 树。实际上就是遵循以下两个特点的二叉树:每棵子树中的左子树和右子树的深度差不能超过 1;二叉树中每棵子树都要求是平衡二叉树;平衡因子:每个结点都有其各自的平衡因子,表示的就是其左子树深度同右子树深度的差。平衡二叉树中各结点平衡因子的取值只可能是:0、1 和 -1。...

2020-08-17 15:38:16 106

原创 二叉查找树

动态查找表中做查找操作时,若查找成功可以对其进行删除;如果查找失败,即表中无该关键字,可以将该关键字插入到表中。二叉查找树就是动态查找表。二叉排序树要么是空二叉树,要么具有如下特点:1.二叉排序树中,如果其根结点有左子树,那么左子树上所有结点的值都小于根结点的值;2.二叉排序树中,如果其根结点有右子树,那么右子树上所有结点的值都大小根结点的值;3.二叉排序树的左右子树也要求都是二叉排序树;...

2020-08-17 15:30:29 67

原创 奇安信笔试复盘

1.哪一个命令可以关机而不重启2.下面有关NAT的叙述,不正确的是NAT可以进行地址转换NAT可以进行端口转换NAT可以同时进行地址转换和端口转换IPV6不需要NAT3.存在若若干字符串,查找具有相同前缀 采用哪种数据结构4.删除视图 drop view view_name5.在DNS系统测试时,设named进程号是53,命令(kill–HUP53)通知进程重读配置文件。6.epoll的水平触发和边沿触发区别水平触发LT:缺省的工作方式(epoll默认的设置),并且同时支持block和n

2020-08-16 18:30:24 324

原创 行测:言语理解和表达

第一章 逻辑填空核心知识点 1 语境分析之解释关系(一)含义上下文呈解释说明关系。(二)判定标志1.同义互换词如类似于、或者说、譬如……2.归纳总结词如可见、总之……3.指代词如这、此……4.标点如冒号、破折号(三)应用理解概括句意或寻找呼应点的互解词。核心知识点 2 语境分析之反对关系(一)含义上下文呈相反或相对的关系。核心知识点 3 语境分析之递推关系(一)含义上下文为递进、因果、假设、顺承、条件等关系。核心知识点 4 语境分析之联合关系(一)含义上下文之间

2020-08-15 16:49:19 294

原创 行测:判断推理(类比推理和定义判断)

类比推理核心知识点 1 逻辑关系核心知识点 2 经验常识定义判断核心知识点 1 核心成分分析法核心知识点 2 主特征分析法

2020-08-15 15:45:13 296

原创 行测:判断推理(图形推理)

核心知识点 1 封闭区域(一)封闭区域:图形中由封闭线条围成的空白区域。(二)常见考点:封闭区域的数量、封闭区域的连接方式。核心知识点 2 图群数(一)图群:是指由多种(多个)小图形构成的图形。(二)常见考点:图群的个数、种类。核心知识点 3 线条常见考点:图形的直线数、曲线数,图形的直曲性构成。核心知识点 4 旋转和翻转(一)旋转的方向:顺时针旋转、逆时针旋转。(二)翻转的方向:左右翻转、上下翻转。核心知识点 5 组合叠加(一)去同存异:将两个图形叠加后去掉相同的部分,保留不同的部

2020-08-15 11:55:58 751

原创 行测:判断推理(逻辑判断)

核心知识点 1 直言命题矛盾关系(一)直言命题间的矛盾关系矛盾词:“所有”与“有些”,“是”与“非”。矛盾关系:“所有是”与“有些非”;“所有非”与“有些是”;“某个是”与“某个非”。(二)借助真假话考查矛盾关系解题思路:“一找二绕三回”。如果题目中只有一句真话。①找出矛盾关系,结合矛盾命题必然满足“一真一假”的特性,找出这唯一一句真话的位置。②由于所给话中只有一句为真,可确定另外两句话为假。③由已知确定信息,进一步确定矛盾关系中的两个命题,哪一个是真哪一个是假。④确定结果。核心知识

2020-08-15 11:25:23 1347

原创 行测:资料分析

核心知识点 1 增长率核心知识点 2 基期值核心知识点 3 增长量核心知识点 4 隔年增长率核心知识点 5 年均增长量核心知识点 6 年均增长率核心知识点 7 比重核心知识点 8 部分值核心知识点 9 整体值核心知识点 10 基期比重含义:统计资料常给出现期部分值、整体值及两者增长率,可以考查比重的相关变化,其中常涉及基期比重问题,实质为求比重。核心知识点 11 判断比重变化核心结论:部分增长率>整体增长率,现期比重较基期上升部分增长率<整体增长率,现期比重较基期下降

2020-08-14 21:32:08 572

原创 行测:数量关系

第一章 数字推理1.等差数列等差数列:一个数列后一项减前一项等于一个常数二级等差数列:一个数列后一项减前一项得到的是一个等差数列变式:某级差是一个有规律的其他数列2.等比数列等比数列:从数列的第二项开始,后一项除以前一项得到的是一个不为 0 的常数二级等比数列:一个数列后一项除以前一项得到的新数列是一个等比数列变式:某级商为其它的基本数列;数列的后一项等于前一项的倍数再加上或减去一个数3.多次方数列底数变化:底数不再是连续的自然数,而是其他的基本数列,包括奇数、偶数、质数、合数及其他的基

2020-08-13 20:04:07 1063

原创 行测:图形推理

1.图形构成相同,考位置规律2.图形构成相似,考样式规律3.图形构成不同,考属性、数量等其他规律位置规律位置规律一般有三种:平移、旋转、翻转1.平移平移的方向:直线方向:上下、左右平移时针方向:顺时针、逆时针平移元素位置互换平移的步长恒定、递增(递减)注:九宫格、十六宫格,元素在最外层,优先考虑时针移动2.旋转旋转的方向:顺时针或逆时针旋转的角度3.翻转以某条直线为轴进行翻转翻转后再旋转...

2020-08-05 17:29:34 245

原创 MYSQL的引擎

1、MySQL引擎MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建用于存储数据的表和用于查看、管理

2020-08-04 21:32:42 72

原创 MYSQL联结表

连接条件使用on子句而不是WHERE子句,但功能实际相同内联inner join 、左联left outer join 、右联right outer join 、全联full outer join第一:内联(inner join)。显示两个表中符合条件的结果。SQL语句:select * from T1 inner join T2 on T1.userid=T2.userid第二:左联(left outer join)。显示左表T1中的所有行,并把右表T2中符合条件加到左表T1中;右表T2中不符

2020-08-03 15:52:46 207

原创 乐鑫提前批笔试复盘

1.主存储器和CPU之间增加高速缓冲存储器(Cache)的目的是解决CPU、主存速度匹配2.操作系统采用缓冲技术,能够减少对CPU的()次数,从而提高资源的利用率。引入缓冲的主要原因包括:缓和CPU与I/O设备间速度不匹配的矛盾;根据对CPU的中断频率,放宽对中断时间的限制;提高CPU和I/O设备之间的并行性。所以采用缓冲技术,可减少对CPU的中断次数,从而提高系统效率。3.文件的逻辑结构分为两种形式,分别是逻辑结构有两种形式:①记录式文件(有结构式文件).②字符流式文件(无结构式文件),也称流式

2020-08-02 21:43:56 265

原创 常见的设计模式

单例模式:单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式有三个要素:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。工厂模式:工厂模式主要解决接口选择的问题。该模式下定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,使其创建过程延迟到子类进行。观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更

2020-08-01 17:41:03 69

原创 SQL优化

1.在经常性的检索列上,建立必要索引,以加快搜索速率,避免全表扫描(索引覆盖扫描);2.多次查询同样的数据,可以考虑缓存该组数据;3.审视select * form tables, 你需要所有列数据吗?4.切分查询(大查询切分成为小查询,避免一次性锁住大量数据)5.分解关联查询(单表查询,结果在应用程序中进行关联,可以减少处理过程中的锁争用)6.尽量先做单表查询;...

2020-08-01 17:26:10 77

空空如也

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

TA关注的人

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