strict weak ordering导致公司级故障】的更多相关文章

大家好,我是雨乐! 前段时间,某个同事找我倾诉,说是因为strict weak ordering导致程序coredump,给公司造成数百万损失,最终评级故障为P0级,年终奖都有点不保了,听完不禁一阵唏嘘. 在之前的文章中,我们分析了std::sort的源码实现_,在数据量大时候,采用快排,分段递归排序.一旦分段后的数据量小于某个阈值,为了避免快排的递归调用引起的额外开销,此时就采用插入排序.如果递归层次过深,还会采用堆排序._ 今天,借助本文,我们分析下这次故障的原因,避免后面的开发过程中出现类…
满足strict weak ordering的运算符能够表达其他所有的逻辑运算符(logical operator): <(a, b)  : (a < b) <=(a, b): !(b < a) ==(a, b): !(a < b) && !(b < a) !=(a, b) : (a < b) || (b < a) >(a, b)  : (b < a) >=(a, b): !(a < b) 引用自https://www…
Description A Strict Weak Ordering is a Binary Predicate that compares two objects, returning true if the first precedes the second. This predicate must satisfy the standard mathematical definition of a strict weak ordering. The precise requirements…
ORACLE 回收站导致的故障 一.故障 (1)现象     一个生产环境,oracle数据库挂死,严重影响生产.查死锁sql,发现大量日志插入语句,并且每条运行时间都超过一分钟,插入非常缓慢.据分析,可能是由于日志表过大,日志表索引不合理等,对表进行的优化,但是,问题继续. (2)分析 查数据库服务器宕机的时间段的dwr,发现,除插入大量日志语句外,delete from RecycleBin$语句跑了近百万次.豁然开朗,原来是回收站在回收数据.现场的表空间紧张,然而在晚上有跑了大量的数据,没…
前言: 大家都知道linux下添加dns服务器,修改/etc/resolv.conf,添加nameserver 119.29.29.29这样一行即可.但是胡乱添加nameserver也会导致故障 ,此处我就来给大家分享一次,由于添加nameserver 导致的故障. 一.故障描述     zabbix报警发现连接不上机器,上去查看zabbix日志如下:     发现连zabbix server连接不上,第一时间怀疑解析问题,ping发现所有内部dns解析都失效了,查看dns,发现前面添加了3个多…
故障现象: 中午12点多,一套主从集群的主库因为没有配置大页内存,发布时导致OOM,MYSQL实例重启了,然后MHA发生了切换.切换过程正常.切换后需要把原master配置成新master的slave,在manager.log文件里面找到change master to ....命令,执行后发现复制状态一直停留在connectiong .名称定:OOM的是M1,挂掉后顶替的是S1. mysql> show slave status\G . row ************************…
前段时间将一台服务器A的服务迁移至了另外一台服务器B,外网IP地址也顺带迁移过来了,结果网络出现了问题. 其中内网是畅通的,但是外网IP怎么都连不上另外一台路由C(B和C是在一个交换机下的,网段也相同),导致路由下面的网络无法直接访问C,但是在别的地方可以正常访问C的外网IP. 开始以为是自己双网卡的设置有问题,倒腾了半天问题依旧ping不通. 最后想起来当时在路由器上配置了IP-MAC绑定,一看还真是.解绑原来的服务器A的MAC地址,一切OK. 应该早点想到这个问题的,浪费了这么久,还是经验不…
本文转载自 http://www.jb51.net/article/70955.htm 我们知道分析MySQL语句查询性能的方法除了使用EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”. 一. 起因 研发反应某台数据库僵死,后面的会话要么连接不上,要么要花费大量的时间返回结果,哪怕是一个简单的查询. 二. 处理 首先去监控平台查看服务器以及数据库状态,发现这台数据库有大量的慢查询.继续看服务器监控,CPU 平均使用率较…
起因:一个客户的实际故障,该故障非常典型,其他客户类似的环境也非常多,所以很值得梳理并记录下来. 环境:Oracle 11.2.0.4 RAC(2 nodes)+ RHEL 6.6 共享存储:EMC powerpath 做的多路径绑定 分别登陆到两个节点,查看设备名称: [oracle@node1 ~]$ ls -l /dev/emcpower* crw-r--r-- 1 root root 10, 56 Feb 2 09:52 /dev/emcpower brw-rw---- 1 grid a…
1.查看是否有 nf_conntrack 使用iptable -L -t nat  查看,注意!!!查看也会启用nf_conntrack,任何和nat有关的命令都会启用nf_contrack -L 查看iptable规则,默认查看filter表 我们现在用的比较多个功能有3个: 1.filter 定义允许或者不允许的 2.nat 定义地址转换的  3.mangle功能:修改报文原数据 使用 lsmod命令,发现,nf_conntrack被多个模块依赖,按照规则必须先移除依赖模块再移除自己 nf_…
环境信息: WARNING: kernel version inconsistency between vmlinux and dumpfile KERNEL: vmlinux-47.90 DUMPFILE: vmcore [PARTIAL DUMP] CPUS: DATE: Wed Nov :: UPTIME: :: LOAD AVERAGE: 484.39, 481.11, 385.18 TASKS: NODENAME: ycby25-3kh_2 RELEASE: --default VER…
问题描述: git clone 报错如下: Initialized empty Git repository in /root/project_php/.git/ error: The requested URL returned error: Unauthorized while accessing http://tone.verru.cn:88/project_php.git/info/refs fatal: HTTP request failed 解决方法: 带着问题网上走一圈,查到资料说…
整理了下在C++工程代码中遇到的技巧与建议. 0x00 巧用宏定义. 经常看见程序员用 enum 值,打印调试信息的时候又想打印数字对应的字符意思.见过有人写这样的代码 if(today == MONDAY) return "MONDAY"; 一般错误代码会有很多种,应该选用 switch-case 而不是 if-else.因为 if-else 最坏比较N次,switch-case 最坏是lgN次.这里用上宏,代码简介明了.而且也去掉了查找,直接索引到对应的字符串. // from A…
C++ STL的几种常用“比较”概念简述   在C++的现行标准(C++ 98)中,由于没有类似“接口”这样的东西,我们在泛型编程时往往只能对模板类型作一些假设,要求其符合某个需求清单,也就是属于某个概念.这只是一种人 为的约定,一旦该约定未被遵守,编译器可能会无法有效地发现问题原因所在.不过,在即将发布的C++ 0x中将引入concept,可以较好地解决这个问题.扯远 了,让我们回到正题.       STL中所有泛型算法和容器模板都对涉及到的元素所属概念有明确要求,在使用这些算法和容器时必须…
adaptor(适配器) 一种标准库类型.函数或迭代器,使某种标准库类型.函数或迭代器的行为类似于第二种标准库类型.函数或迭代器.系统提供了三种顺序容器适配器:stack(栈).queue(队列)以及priority_queue(优先级队列).全部的适配器都会在其基础顺序容器上定义一个新接口. begin(begin 操作) 一种容器操作.假设容器中有元素,该操作返回指向容器中第一个元素的迭代器:假设容器为空,则返回超出末端迭代器. container(容器) 一种存储给定类型对象集合的类型.全…
map 是键-值对的集合.map 类型通常可理解为关联数组(associative array): 可使用键作为下标来获取一个值,正如内置数组类型一样.而关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置来获取. [1. map 对象的定义] 要使用 map 对象,则必须包含 map 头文件.在定义 map 对象时,必须分别指明键和值的类型: // count number of times each word occurs in the input map<string,…
题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质数表示!在他看来,2(第一小质数)表示1,3(第二小质数)表示2--可正因为他的计数方法太奇葩,所以他的数学成绩非常差而且拖累了他的绩点. lxy 得知 cgy 的绩点排名之后打算告诉他,可是必须以极度麻烦的 cgy 质数计数法的方式表示. lxy 出重金 ¥(10000000 mod 10) 请你…
两年未写总结博客,今天先来练练手,总结最近遇到的一个crash case. 注意:以下的分析都基于GCC4.4.6 一.解决crash 我们有一个复杂的排序,涉及到很多个因子,使用自定义排序函数的std::sort做排序.Compare函数类似下文的伪代码: bool compare(const FakeObj& left, const FakeObj& right) { if (left.a != right.a) { return left.a > right.a; } if (…
Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; font-family: monospace; } Table of Contents 1. Always have comparison functions return false for equal values 2. Strict Weak Ordering 1 Always have compar…
第一部分:(参考百度百科) 一.STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在惠普实验室工作时所开发出来 的.现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的代码从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),几乎所有的代码都采用了…
一.数组声明: int[] x; int x[]; 在Java中一般使用前者,机把int[]看做一个类型,C++中只能后者 二.数组初始化: 直接提供值: int[] x = {1, 3, 4}; int[][] y = { {1, 2, 3}, {4, 5} }; 各个维度的长度信息直接根据提供的值得出.这种使用大括号包裹的值序列作为数组看待,仅仅在数组初始化时才成立,其他情况均认为语法错误. 赋值初始化: 1.默认数组对象: int[] x = new int[5]; Integer[] y…
问题:sort的比较函数实现有问题导致进程调用sort时core了. 结论:特别要注意,sort的比较函数必须遵循严格弱排序(strict weak ordering)的规则.   这是最近在工作中遇到的一个问题,平时用函数就简单看了函数原型和例子,如无需要,没有去细究太多.结果在sort的使用就碰钉子,今天分享出来,大家也给自己提个醒.不多赘述,直接贴代码.   1. std::sort的调用   2. 比较函数compareFriUser   编译是没问题的,但是运行到这里就会导致core.…
第一章容器 第1条:慎重选择容器类型. 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.slist是一个单向链表,rope本质上是一“重型”string. 非标准的关联容器hash_set.hase_multiset.hash_map和hash_multimap. vector<char> 作为string的替代.(见第13条) vector作为标准关联容器的替…
std::set template < class T, // set::key_type/value_type class Compare = less<T>, // set::key_compare/value_compare class Alloc = allocator<T> // set::allocator_type > class set; Set Sets are containers that store unique elements followi…
std::priority_queue template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type> > class priority_queue; Priority queue Priority(优先) queues are a type of container adaptors, specifically designed s…
std::multimap template < class Key, // multimap::key_type class T, // multimap::mapped_type class Compare = less<Key>, // multimap::key_compare class Alloc = allocator<pair<const Key,T> > // multimap::allocator_type > class multima…
std::map template < class Key, // map::key_type class T, // map::mapped_type class Compare = less<Key>, // map::key_compare class Alloc = allocator<pair<const Key,T> > // map::allocator_type > class map; Map Maps are associative co…
简介 heap有查找时间复杂度O(1),查找.插入.删除时间复杂度为O(logN)的特性,STL中heap相关的操作如下: make_heap() push_heap() pop_heap() sort_heap() reverse() 本次着重介绍make_heap() ,根据其创出的堆有大小堆之分. 其函数原型如下: default (1) template <class RandomAccessIterator> void make_heap (RandomAccessIterator…
std::multiset template < class T, // multiset::key_type/value_type class Compare = less<T>, // multiset::key_compare/value_compare class Alloc = allocator<T> > // multiset::allocator_type > class multiset; Multiple-key set Multisets a…
多队列模拟. 与POJ #1025 Department类似, 不过简化很多. 貌似这类模拟题经常出现. 用STL中的优先队列 (priority_queue<>) 很好写. 这题我写得很不顺, 老年选手退步太快, 记录一下我犯的一个很隐蔽的错误, 从前对此毫无认识, 想想都可怕, 太菜了. 这道题优先队列里维护的事件 (event) 是等待. 释放这些等待的先后顺序如下: 在同一队列 (此"队列"指某个office门前的队列, 与"优先队列"中的&qu…