精华内容
下载资源
问答
  • map/multimap映射容器的元素数据是由一个Key和一个Value成的,key与映照value之间具有一一映照的关系。 map/multimap容器的数据结构也采用红黑树来实现的,map插入元素的键值不允许重复,类似multiset,multimap的...

    一、map/multimap

    map/multimap映射容器的元素数据是由一个Key和一个Value成的,key与映照value之间具有一一映照的关系。
    map/multimap容器的数据结构也采用红黑树来实现的,map插入元素的键值不允许重复,类似multiset,multimap的key可以重复。比较函数只对元素的key进行比较,元素的各项数据只能通过key检索出来。虽然map与set采用的都是红黑树的结构,但跟set的区别主要是set的一个键值和一个映射数据相等,Key=Value。

    map<first,second> a;
    //map,会按照first(键值)排序(查找也是);
    

    map/multimap用法
    头文件

    #include< map >
    

    map成员函数

    begin()				 //返回指向 map 头部的迭代器
    clear()			// 删除所有元素
    count() 			//返回指定元素出现的次数
    empty()				// 如果 map 为空则返回 true
    end() 				//返回指向 map 末尾的迭代器
    erase()				// 删除一个元素
    find()				// 查找一个元素
    insert()			 //插入元素
    key_comp() 			//返回比较元素 key 的函数
    lower_bound() 		//返回键值>=给定元素的第一个位置
    max_size() 			//返回可以容纳的最大元素个数
    rbegin() 			//返回一个指向 map 尾部的逆向迭代器
    rend() 				//返回一个指向 map 头部的逆向迭代器
    size() 				//返回 map 中元素的个数
    swap()				 //交换两个 map
    upper_bound()		 //返回键值>给定元素的第一个位置
    value_comp() 		//返回比较元素 value 的函数
    

    创建map对象

    #include<iostream>
    #include<map>
    using namespace std;
    map<int,char>mp;//定义map容器 
    

    创建结构体map对象

    struct student{
    int birth;
    string name;
    };
    int id;
    typedef map<int,student> Student;// 这里相当于给map<int,student> 起了个别名Student,后续代码均可以用student代替map<int,student> 使用。
    

    插入结构体对象
    接上文代码

    Stduent  a; 
    cin>>id>>student.birth>>student.name;
    a.insert(make_pair(id,student));
    

    通过map容器使得上述解题方式更简便。

    二、栈(stack)

    1.定义:
    栈是一种只能在某一端插入和删除数据的特殊线性表。他按照先进先出的原则存储数据,先进的数据被压入栈底,最后进入的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后被压入栈的,最先弹出)。因此栈也称先进后出表。
    允许进行插入删除操作的一端称为栈顶,另一端称为栈底。栈底固定,栈顶浮动。插入元素称为进栈,删除一个元素称为进栈,栈内元素为零称为空栈。
    2.stack成员函数

    bool empty ( ) ————>栈为空返回true,否则返回false;
    void pop ( ) ————>删除栈顶元素,出栈;
    void push(const TYPE&value)————> 插入新元素value,放置在栈顶进栈;TYPE:类型int,char…;
    size_type size ( ) ————> 返回堆栈中元素个数;(注意注意!!!!切不可赋值给int ,很容易超过int的范围
    TYPE&top()————> 查看当前栈顶元素;
    

    三、向量(vector)

    它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

    使用vector需要注意以下几点:

    1、当vector、string大量插入数据后,即使删除了大量数据(或者全部都删除,即clear) 并没有改变容器的容量(capacity),所以仍然会占用着内存。 为了避免这种情况,我们应该想办法改变容器的容量使之尽可能小的符合当前 数据所需(shrink to fit)。

    vector<type> vec={1,2,3,4.......................};
    vector<type>(v).swap(v);
    //此时v的容量已经尽可能的符合其当前包含的元素数量
    //对于string则可能像下面这样
    string(s).swap(s);
    
    
    
    
      //  即执行交换后,临时变量会被销毁,内存得到释放。
    

    (1)头文件

       #include<vector>
    

    (2)创建vector对象,vector< int > vec;

    (3)尾部插入数字:vec.push_back(a);

    (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。

    (5)使用迭代器访问元素.

    vector<int>::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
    cout<<*it<<endl;
    

    (6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

    (7)删除元素:

    vector.erase(vec.begin()+2);删除第3个元素
       vector.erase(vec.begin()+i,vec.end()+j);删除区间[i,j);区间从0开始
    

    (8)向量大小:vector.size();

    (9)清空:vec.clear();

    ps:
    resize(),设置大小(size); reserve(),设置容量(capacity); size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存。 打个比方:买了一个新房子,新房子里可以放3张床reserve(3),这是说房子的容量是最多放3张床,但是屋里并不是有三张床,二resize(3),房里安装了3张床,此时房里的床可以使用了。
    reserve为容器预留足够的空间,避免不必要的重复分配,分配空间大于等于函数的参数,影响capacity。
    resize调整容器中有效数据区域的尺寸,如果尺寸变小,原来数据多余的截掉。若尺寸变大,不够的数据用该函数第二个参数填充,影响size。
    由于vector是顺序容器,在内存中分配了一块连续的存储空间。为了保证动态添加元素的高效率,因此必须预先为vector分配一段空间,这个空间就是capacity。
    而容器中元素的个数就是size(),在容器中,capacity总是大于等于 size;

    四、队列

    queue是队列容器,是一种“先进先出”的容器。
    头文件

    #include <queue>  
    

    queue对象的默认构造形式:queue name; 如:

    queue<int> name;            //一个存放int的queue容器。
    
    queue<float> name;     //一个存放float的queue容器。
    
    queue<string> name;     //一个存放string的queue容器。	    
    
    //尖括号内还可以设置指针类型或自定义类型。
    

    queue的成员函数

    queue.push(elem);   //往队尾添加元素
    
    queue.pop();   //从队头移除第一个元素
    
    queue(const queue &que);	     //拷贝构造函数
    
    queue& operator=(const queue &que);	//重载等号操作符
    
    queue.back();   //返回最后一个元素
    
    queue.front();   //返回第一个元素
    
    queue.empty();   //判断队列是否为空
    
    queue.size();      //返回队列的大小
    

    五、set集合

    set/multiset 与map类的区别是set 的key=value。其余跟map类的可以类比。set容器因为key等于value所以按照值排序,由小到大。
    set的各成员函数列表如下:

    set.begin()--返回指向第一个元素的迭代器
     set.clear()--清除所有元素
    set.count()--返回某个值元素的个数
    set.empty()--如果集合为空,返回true
    set.end()--返回指向最后一个元素的迭代器
    set.equal_range()--返回集合中与给定值相等的上下限的两个迭代器
    set.erase()--删除集合中的元素
    set.find()--返回一个指向被查找到元素的迭代器
    set.get_allocator()--返回集合的分配器
    set.insert()--在集合中插入元素
    set.lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
    set.key_comp()--返回一个用于元素间值比较的函数
    set.max_size()--返回集合能容纳的元素的最大限值
    set.rbegin()--返回指向集合中最后一个元素的反向迭代器
    set.rend()--返回指向集合中第一个元素的反向迭代器
    set.size()--集合中元素的数目
    set.swap()--交换两个集合变量
    set.upper_bound()--返回大于某个值元素的迭代器
    set.value_comp()--返回一个用于比较元素间的值的函数
    

    set由大到小排序set<int,greater < int > > M;

    七、迭代器

    vector< int >::iterator name
    容器类型< type> ::iterator name
    

    是一类类似指针的,与指针的区别,map set成员的迭代器不能加减一个整数,只能自增或自减运算。但是vector的可以。
    双向迭代器(map multimap set multiset)
    组合正向迭代器和逆向迭代器的功能,支持多遍算法
    随机访问迭代器(vector deque)
    组合双向迭代器的功能与直接访问容器中任何元素的功能,即可向前向后跳过任意个元素。即可以加减一个常数。

    小白创作,还亲各位大佬指点,万分感谢!

    展开全文
  • 测试左移以及测试右移,能够让测试拥有更多的主动权,有更充足的时间进行测试,同时不会像之前因为质量差风险高每次都延期上线,并且产品的线上质量也能有保证。 不管是测试左移还是测试右移,都是为产品质量服务。...

    壹.测试左移与测试右移

    测试左移以及测试右移,能够让测试拥有更多的主动权,有更充足的时间进行测试,同时不会像之前因为质量差风险高每次都延期上线,并且产品的线上质量也能有保证。

    不管是测试左移还是测试右移,都是为产品质量服务。不要把提测认为是测试活动的开始,上线是测试活动的结束,更不要认为质量只是测试同学需要关注的。

    贰.测试左移

    测试左移的思想,本质是越早的发现不合理的地方出问题的几率就越低。

    测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件“快速失败”,促使团队更早的修改所有的bug。

    参与和理解会使测试人员获取产品完整的知识,彻底想清楚各种场景,根据软件行为设计实时的场景,这些都会帮助团队在编码完成之前识别出一些缺陷。

    叁.测试左移包含2个方面

    1.提高质量上限

    提高质量上限,其实是通过一系列活动,来避免问题或者本身就让我们起步就变得很好的,一句话:良好的开始是成功的一半

    2.提高质量下限

    提高质量下限,其实是通过一系列的活动,让我们的质量成果得以保证的

    测试左移,其实就是通过一系列的活动,能提高质量的上限,缩短测试的周期,提高质量的下限,这样子,我们就可以在不断提高下限的过程中,始终将质量稳定在一个水平线上,而和团队一起追求更高的目标了。

    从不重视代码质量的第一天开始,就埋下了问题修复,定位的成本和修复问题再次引入问题的成本。

    当测试在周期的早期开始时,团队会更专注于质量,并且“让我们在第一时间获得正确的编码”前景。这有助于节省大量时间,并减少软件开发团队必须为特定代码执行的迭代次数。

    肆.测试左移的实现步骤

    在团队的devops开发下,对于测试左移进行的操作:

    编写单元测试,通过单元测试提前进行测试

    Code Review,通过代码走读发现一些基础的问题

    参与需求评审,提出需求不清晰、不合理、遗漏等意见,了解开发的实现方式

    参与研发需求分解,协助梳理分解遗漏点

    参与概要、接口设计评审,协助梳理遗漏逻辑

    提早输出测试导图,开发编码前进行评审

    部分功能提测,提早开始测试

    自动化测试,用于回归确保旧版本功能正确性

    对于测试左移,进行了相应的尝试后,也发现了测试左移实践的问题:

    测试要求提供概要设计、接口文档!!!

    测试要求单元测试必须通过!!!

    测试干预需求设计!!!

    很多人都认为是测试在要求完成一些没必要的事情,测试在干预我的工作。

    其实问题的矛盾点在于前面说过的一句话:不管是测试左移还是测试右移,都是为产品质量服务。

    不要把提测认为是测试活动的开始,上线是测试活动的结束,更不要认为质量只是测试人员需要关注的。

    对于测试左移的落实,最重要的就是全员质量服务意识的培养

    伍.测试左移,还需改进的实践

    对于测试左移其实我们还有很多东西要做,就好像前面说到的都是为产品质量服务,那么在研发流程中的任何角色、人员都要为质量服务。

    提高质量上限

    健康的项目流程(合理并且严格遵守的项目流程)

    合理的需求分析(评估需求的质量,分析需求的合理性以及完整性)

    出色的系统架构

    充分利用静态代码扫描

    进行研发标准的定义

    提高质量下限

    健康的测试流程

    优秀的测试用例

    合理的测试计划

    合适的自动化

    适当的探索式测试

    开发自测(TDD、BDD,测试提供更好的用例、技术支持)

    尽早的测试

    团队质量意识的培养

    对于测试左移,也需要一个重要的基础,工程习惯,SDLC成熟度,测试分层,持续集成,链路上延展发布的节奏,纵深上需要贴合业务的专精领域的深度探索,代码扫描(规范,问题,安全,异常等),CR, 代码提交行为分析,test double(mock , fake, stub,dummy), UT, 自动化,验收测试等。左移需要工程效率具备不亚于研发的代码能力。

    因此对于测试左移,可以围绕质量服务思想展开,参与人员则不仅仅局限于测试人员

    陆.测试右移

    左移是往测试之前的开发阶段移,右移是往发布之后移。

    也就是产品上线了之后也可以进行一些测试活动。当然在生产环境直接做测试是不推荐的,但是我们可以在生产环境做监控,监控线上性能和可用率,一旦线上发生任何问题,尽快反应,提前反应,给用户良好的体验。

    技术人员要比业务方先发现问题,如果业务方已经发现业务量明显下降,说明问题已经很严重了。

    测试右移其实还可以理解为如果线上发生任何问题,我们有没有能力第一时间发现问题并解决问题,并保证线上数据的一致性或尽可能少的影响线上用户,以及并且实时获取用户反馈。

    柒.测试右移的实践步骤

    对于测试右移,线上监控可以是突破点,:

    闭环的线上问题反馈-检查-解决-更新流程

    更便捷的日志查看、回传服务

    丰富有效的log,便于问题的快速定位

    丰富的监控指标(例如业务异常点指标)

    成本监控(例如短信发送等)

    关键指标每日监控(服务器指标)

    生产数据监控(警报)(通过sql语句实现生产数据监控,例如是否有多个订单号一样的订单出现等)

    因此对于测试右移,可以围绕问题反馈、发现、定位、监控展开,参与人员则不仅仅局限于运维人员

    捌.测试右移还需改进的实践

    一样的,实践起来也是存在问题,除了技术问题之外,还有例如:

    线上监控搭建后使用率不高

    线上问题反馈机制,业务人员不配合等等

    监控指标不合理,反而被认为增加服务器负载

    测试右移的落实,除了质量服务的培养,更加重要的反而可能是:完善的反馈、发现、定位,在监控- 架构完善后,怎么更好的与项目工作(流程)结合,不要让其成为累赘

    在这里推荐一个软件测试交流群,QQ:642830685,群里会不定期的分享软件测试资源,测试面试题以及行业资讯,大家可以在群中积极交流技术,还有大佬为你解答疑惑!

    展开全文
  • 据媒体报道说几个非洲黑人在中国装富豪,竞然骗财又骗色频频得手,看来非洲人更容易理解中国当代文化和男女关系,不然就不会有如此手段。在此根据平时和老外相处的经验体会,趣味总结一下老外对中国两性关系的感受...

    无论是文化差异,还是现实变异,都会让外国人看不懂中国人的两性关系。据媒体报道说几个非洲黑人在中国装富豪,竞然骗财又骗色频频得手,看来非洲人更容易理解中国当代文化和男女关系,不然就不会有如此手段。在此根据平时和老外相处的经验体会,趣味总结一下老外对中国两性关系的感受……
     
       1、为何上床后,女人就一定要男人负责呢?一位美国男人,对我说,他们喜欢归喜欢,不会因为结不了婚,就否认上床的必要。许多中国女人跟男人上床后,就一定要男人娶她,老外弄不懂。


       2、为何明明上了床,还说不爱他。有些女人明明和某男人有了亲密关系,男人也将之当作女朋友了。而她自己则不愿承认男人是她男朋友,人家说,你们亲吻我都看见了。她会说,哪是亲吻,是他强吻我。甚至表示不屑:我会瞧上他?


       3、中国人说婚姻是爱情的坟墓,我看房子才是中国女人的坟墓。不然,女人会为了房子嫁给不爱的男人?是不是女人们怕死无葬身之地,才要做这样的牺牲。中国当代女人,看来虽然少了吃苦耐劳的精神,但取而代之的牺牲精神更让人可怕。


       4、中国封建时代,为了保护女人,给女人裹足,让全国的女人,几乎都有了稳定的婚姻家庭。据说,当代中国女人爱插足人家的家庭,因为脚大,插一足都足够让人难受。为何中国人的婚姻两性关系,都那样跟足有关呢?中国是恋足的国家吗?


       5、以前,中国男女都很在乎第一次,男人娶妻不是处女的不要。现在依然还会有在乎女人是否处女的,特别是有些女人,要去做处女膜。这是在宣示一种传统精神吗?弄不懂。


       6、世界上婚姻基本上要保护妇女和儿童的权益。而中国最近的婚姻法解释,让人大费脑筋,中国婚姻法开始以保护男人为重了。据说,这是因为有一种叫狐狸精的女人,专爱在房子问题上吸男人血而导致中国修改法律条文。狐狸精是什么人种?


       7、中国的文化博大精深。就是当代许多的名词,都让人弄不懂,比如:一指禅,二奶,小三,不三不四,五魁手之类。就说二奶,很容易被理解成两个老婆。但中国人会告诉你,二奶不是老婆,你再理解成二个乳房,那更不是。中国人给你解释,二奶是男人在婚外的情人。当你正以为是情人时,中国人又会告诉你,他们之间没有情。你听来听去,最后还是只能肯定二奶大致是个女人。


       8、中国许多男人,认为女人都爱装。而女人则认为男人都好色,甚至说男人没有一个好东西。人本来都不是东西,何来没有一个是好东西。好东西就不是东西了吗?东方逻辑真是混乱。


       9、在家中,如果男人没有生理需求,会让女人抓狂。但对于两地分居的夫妻,男人长期在外如有生理需求,女人更会抓狂,看来中国男人真难。女人要求男人在家是猛男,出门在外是和尚,演好这两种反差巨大的角色只有好莱坞的影帝才能做到。


       10、中国男人出轨一次,证明自己结婚了依然还有女人喜欢。但中国女人出轨一次,就足够证明女人很坏。中国人的逻辑思维总是很奇怪,某种颜色的帽子,会成为男人的耻辱,据说这种帽子的颜色跟女人的贞洁有关,这是巫术在起作用吗?


       11、中国女人爱跟她们的情人说:我把什么都给你了,还要怎样?但据我们观察,女人什么东西都没有给男人,为何说这句话?中国女人真的会隔空传物?看来中国女人的武功也是博大精深。


       12、当代中国年轻人,也开始在公共场合接吻了。但中国人现在每天都在发布城市空气污染指数,有时,污染指数超标严重,但中国年轻情侣并不注重接吻是否会受到空气污染,在我们开始戴口罩的时候,中国年轻人在通过吸入粉尘证明他们的真爱,看来,中国人有大气污染下坡了,道德上坡了。


       13、在中国,那些从事性工作的女人,据称才叫小姐。我们以为叫这些人小姐,是尊重他们,不想中国人还说这是对她们的歧视,改叫失足妇女。而失足妇女,我们认为才真正的是歧视呢?是不是真的中国人太恋足,把足放在很高的位置。但中国人说高抬贵手时,为何又不叫高抬贵“足”呢?

     

    转载于:https://www.cnblogs.com/brush51/archive/2011/12/20/2295162.html

    展开全文
  • 2、设计步骤:用关系模型 3、使用工具来模型化:E-R图 4、实体关系模型 通过表格实现:字段名,类型,长度,约束 实体的实例化和泛化 5、要满足3NF 物理设计 对具体数据库进行选型:oracle,mysql 表的字段及...
    • 逻辑设计

      • 1、具体内容:设计数据库的一个逻辑结构,与具体的DBMS无关,主要反映业务逻辑
      • 2、设计步骤:用关系模型
      • 3、使用工具来模型化:E-R图
      • 4、实体关系模型
        • 通过表格实现:字段名,类型,长度,约束
        • 实体的实例化和泛化
      • 5、要满足3NF
    • 物理设计

      • 对具体数据库进行选型:oracle,mysql
      • 表的字段及存储结构

      实际工作中逻辑设计和物理设计是并行的。

    1 数据库命名规范

    • 所有数据库对象名称:小写加下划线分割
      • MySQL对象名称在默认情况下是大小写敏感
      • MySQL的对象其实都是一个文件,而Linux文件名是大小写敏感
    • 所有MySQL数据库对象名称禁止使用MySQL保留关键字
    • 所有的数据库对象名称:见名知义,但最长不要超过32个字符(不要中英文混合)
    • 所有临时表命名:tmp_tablename_20191215
    • 所有备份表:bak_tablename_20191215
    • 索引:idx_pk_
    • 所有存储类型相同的列名以及长度必须保持一致

    2 数据库设计规范

    • 正常情况下建议使用innoDB,v5.6版本后默认是innoDB

    • 字符集统一UTF-8 (varchar(255) UTF-8 255*3=765字节)

    • 一定 要给列加注释

    • 控制一个单表的数量大小:行

      • 对于日志数据,进行归档
      • 对于业务数据进行分库分表
    • 控制表宽度

      • 虽然表没有限制,但列最多4096
      • 如果列多了,占用内存和I/O会非常大
    • 禁止在表中建立预留字段:ext_float_1,ext_char_2

    • 禁止在数据库中存放图片,文件,二进制流

      • 不得不存:将内容数据和文件流程数据分开(外键表)需要使用时再关联
      • select* 就会将大量字段带出,浪费内存,I/O
    • 禁止对线上数据进行压测

      • 会产生大量的垃圾数据和日志文件
    • 禁止从开发环境连接测试或生产数据库

    3 数据库索引设计规范

    • 单张表索引数量建议不超过5个,如果列多可以适当增加
      • 索引过多:SQL在进行优化器评估的时候会有更大的开销
      • 绝对不允许给表的每一列都建立索引
    • 每个innodb表都必须有一个逐渐,innoDB表就是一个索引组织表
      • 表数据的实际存储顺序只能有一种,innoDB都是按照主键进行存放的
      • 如果没有逐渐,mysql会优先选择第一个非空唯一索引来做主键
      • 如果上面这个没有,mysql会自动生成一个36个字节的逐渐,但性能不好
      • 不能使用更新频繁的列和联合索引做逐渐,逐渐不断变,数据的存放顺序就会不断变化
      • 不要使用UUID,MD5,HASH等做主键,不能保证这些值是按顺序增长的。如果生成较小的字符串就会导致不断变化数据存储的位置,影响I/O性能
    • 要在哪些列上建立索引:没有最好只有最合适
      • expalin
      • where后
      • join的连接lie
      • 筛选项最大的放在索引左侧
    • 避免建立冗余和重复索引
    • 对于频繁查询的数据列,优先考虑使用覆盖索引
    • 尽量避免加入外键约束
      • 因为外键写入的时候会降低存储效率
      • 但要给这些关联字段加索引

    4 数据字段设计规范

    • 优先选择符合存储需要的最小数据类型
      • INT来存放时间戳
    • 避免使用TEXT,BLOB数据类型
      • 如果非要使用可以单独拿出来做关联表
      • 这两个类型没有默认值
    • 避免使用ENUM数据类型
      • 修改则需要使用ALTER语句
    • 尽可能把所有列定义为NOT NULL
      • 如果为NULL,索引需要额外的空间来保存
    • 日期格式尽量不要用字符串保存
      • 不能使用日期函数进行计算和比较
      • 用字符串占用的空间更多
    • 财务相关的数据用Decimal类型来进行计算

    5 数据库SQL开发规范

    • 在程序中使用PrepareStatement,#{}

      • 降低词法和语法分析器的重复执行
      • 防止SQL注入
    • 合理和充分的利用表上的索引

      • 避免前后%
      • 使用left join或not exists来优化not in(not in无法使用索引)
    • 程序连接不同数据库使用不同的账号,禁止跨库操作

    • 禁止使用select *

    • 禁止使用不含列名的insert into tableName values(’’,",");

    • 避免使用子查询,可以把子查询优化为join操作

      • 子查询的结果集无法使用索引
      • 子查询会产生临时表操作,如果查询量大则会严重影响效率
    • 避免使用jion关联太多表

      • 大查询拆小查询,由我们的程序来去做关联和合并
      • 进行表数据冗余
      • 有一定的转换
    • 减少同数据库的交换次数

    • 使用in代替or,in能使用索引,or用不上

    • 禁止用order by rand()

    • where中不要对列进行函数计数:列无法使用索引了

    • UNION ALL和UNION

      • 如果我们的数据明显不重复,就施一公UNION ALL

    6 数据库操作行为规范

    • 大批量的数据操作会严重造成数据延迟(分批进行)
    • 对大表结构的操作会导致锁表
      • 对于大表的操作:pt-online-schema-change(PERCONA)
      • 原理
        • 创建新表结构
        • 复制旧表数据到新表
        • 在原表上加入触发器确保数据同步
        • 所有操作进行完毕后对原表进入一个很短的时间锁
        • 把原表表名进行修改,再改新表名
        • 删除原表名
    • 禁止对普通用户授予super权限
      • grant all privileges
      • 授权的时候遵循最小原则
      • 当数据库连接慢,MySQL会给super留一个保留连接
    展开全文
  • ​原创作者:张向荣我们认识了模板与超高模板的关系。今天就来讲讲大家都最关注的计算方法。希望大家在学习的时候可以理解其方法,而不是死记硬背,闲下来可以按自己地区规则多手算几个。1前面我们讲了,模板就是围...
  • 说起原型链,戳进来看这篇博客的同学必然不会陌生,这是JavaScript中最核心的特性之一。那么,原型链到底是一个什么东西,它的工作原理是什么?这是本篇文章探讨的内容 对于原型链,我们可以这么理解,每一个...
  • 过去不会关系,今天就让我们来消除这份恐惧,微笑着勇敢的面对它吧! 所以小林整理了关于 TCP 的面试题型,全文共 3 万字 + 100 张图,跟大家一起探讨探讨。 1、 TCP 基本认识 2、TCP 连接建立 3、 TCP 连接断开...
  • 懂BFC

    2020-03-25 22:49:33
    它决定了块级元素如何对它的内容进行布局,以及与其他元素的关系和相互关系 块级元素:父级(是一个块元素) 内容:子元素(是一个块元素) 其他元素:与内容同级别的兄弟元素 相互作用:BFC里的元素与外面的元素...
  • 当你在使用linux系统时,为了满足当时的工作需要你装了一个100G的磁盘,但是你发现随着公司的发展,和需要储存数据的空间的增大,你会不会重新买些磁盘给装到机器上去呢?每装一次重新分配一次磁盘,就复制一次数据...
  • 懂Redis 事务

    2020-11-12 18:15:10
    提到redis的事务,相信很多初学的朋友会对它的理解和使用有些模糊不清,料想它和我们常见的关系型数据库(mysql 、mssql等)中的事务相同,也支持回滚,但这样理解就进入了一个误区,首先:关系型数据中的事务都是...
  • 彻底懂 Redis 事务

    2021-03-09 14:15:24
    提到redis的事务,相信很多初学的朋友会对它的理解和使用有些模糊不清,料想它和我们常见的关系型数据库(mysql 、mssql等)中的事务相同,也支持回滚,但这样理解就进入了一个误区,首先:关系型数据中的事务都是...
  • 其实职场也有一条类似的定理,只要你一开始工作,全世界就只剩下两种人了:一种是能力比自己强但因为不会搞关系/拍马屁而收入不如自己的菜鸟,另一种是能力不如自己却因为会搞关系/拍马屁而收入超过自己的傻x。...
  • 其实职场也有一条类似的定理,只要你一开始工作,全世界就只剩下两种人了:一种是能力比自己强但因为不会搞关系/拍马屁而收入不如自己的菜鸟,另一种是能力不如自己却因为会搞关系/拍马屁而收入超过自己的傻x。...
  • 为了遵守as-if-serial语义,编译器和处理器**不会对存在数据依赖关系的操作做重排序**,因为这种重排序会改变执行结果。但是,如果操作之间不存在数据依赖关系,这些操作可能被编译器和处理器重排序 ## happens-...
  • 其实对于这3个东西来说,我根本不清楚他们之间的关系,突然之间意识到,自己不能再这样不清楚关系的就学下去。这样就像angular1似的,自己还是什么都不会,angular1我会用,但是不会讲,你要问我angular1和ionic...
  • 你把人性懂了,基本上所有的生意你都不会做的太差,炒币更不会差,因为我从不画K线,这个圈赚大钱的哪个画K线图了。 很多新手看着“大咖”们画着K线,兴奋不已,殊不知一套再套,甚至万劫不复,资本市场就是这么...
  • 通俗地讲,银行与商户(卖方)、消费者(买方)之间为结算关系,而银行之间构成清算关系,两个层次交易都彻底完成后,支付环节才算了结。 清算,其实就是因跨行交易而产生的银行间债务债权进行定期净轧,以结清因跨行...
  • 发动机水温作为发动机工作的参数之一,大家再熟悉不过了,最让大家抓狂的事情可能就是高温开锅了,不好发动机就得大修了,所以不少人觉得水温低点比较好,心里踏实,不会开锅,其实这个想法是非常错误的。...
  • 提到redis的事务,相信很多初学的朋友会对它的理解和使用有些模糊不清,料想它和我们常见的关系型数据库(mysql 、mssql等)中的事务相同,也支持回滚,但这样理解就进入了一个误区,首先:关系型数据中的事务都是...
  • 这真是一道坑爹的题目啊,虽然我猜到怎么做了,但是还是不会搞。    设f[i]表示第i个行星所受的引力,g[i]表示第i个行星所受引力的最后来源行星。  则:  注意到题目中说了误差允许在百分之五之内...
  • 做电动执行器的刘总至今依然在茶余饭后抱怨着这世界的不公平:我的产品替代进口、填补国内空白,之所以销售受阻,就是因为我太正直,不会搞关系…… 在诸多工业企业里,像刘总这样想法的“工科宅男”数不胜数:他们...
  • 欧拉角与旋转矩阵的转换关系

    万次阅读 多人点赞 2019-09-27 17:35:41
    欧拉角因为其奇异性,虽然在优化和插值的不会使用,但是当我们对别人描述一个旋转的过程是怎么样的时候,欧拉角还是很有用的,比如,做无人机姿态控制的时候使用的就是欧拉角,但是明白欧拉角是怎么回事确实是一件...
  • 红黑树就是一种平衡二叉树,说它平衡的意思是它不会出现左子树与右子树的高度之差不会大于1,左子树和右子树保持一种平衡的关系。 红黑树主要有以下5种特性: 节点要么是红色要么是黑色 根节点必须是黑色...
  • 一致不大懂这些七七八八的关系,看了些写下来,以后就不会没有一个概念了. K的知乎的一个答案, 多谢了真是,2楼就是 https://www.zhihu.com/question/54151743 转载于:...
  • 把SOAP、Web Service和WSDL的关系大概明白了,举例说明如下: X局有两个副局长A和B,A副局长分管财务,B副局长分管计划生育,但是A副局长是上海人,B副局长是广东人,两个人又都只会说自己家乡的方言,不会说普 ...
  • 点赞关注,不会迷路! 干货!文末有资料领取方式 其实说实话,可能很多人依然分不清线性表,顺序表,和链表之间的区别和联系! 线性表:逻辑结构, 就是对外暴露数据之间的关系,不关心底层如何实现,数据...
  • 镜头焦距、视角和景深的关系

    千次阅读 2012-03-21 14:13:11
    镜头焦距、视角和景深的关系 1. 镜头焦距是一个固定的物理尺寸,是多少毫米,就是多少毫米,100mm就是100mm,不会变成150mm,不会随着相机的画幅不同而改变; 2. 相同焦距的镜头放在不同画幅的相机上,画幅越大,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 546
精华内容 218
关键字:

不会搞关系