- 博客(290)
- 资源 (4)
- 收藏
- 关注
原创 Mysql主从延迟过高导致的case
昨天同事遇到了一个线上case,主要现象是部分用户下单成功,但是却查不到订单详情信息,追踪到订单表里,发现部分订单并没有更新状态。 排查: 用户下单的后台服务逻辑最近并未做改动,分析报警日志发现,在下午四点到五点之间有部分空指针异常,定位到代码如下: 显然这里查询到的订单DTO为空,造成了空指针异常。正常的下单逻辑是,用户创建订单-在本地db生成订单-调用订单中心rpc接口-订单中心创建
2017-06-02 15:16:29 1511
原创 一次线上服务故障应急问题总结
昨天负责的项目出了个故障,从发现故障到线上服务恢复耗时一个小时,故障应急的效率存在很大问题。这里总结一下故障期间存在的问题。首先是故障现象:评论列表页评论内容加载不出,一直在转小圈圈,服务端监控显示有大量NP异常。因为故障发生在我刚上线完服务五分钟左右,第一反映是回滚代码。服务报警还在继续,怀疑是发布系统回滚有问题(因为当时恰逢公司在升级新版发布系统,我找了个历史包发布,实际发布的
2017-05-20 16:35:30 1927
原创 分布式锁
一、什么是分布式锁? 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。二、分布式锁需要解决的问题1、互斥性:任意时刻,只能有一个客户端获取锁,不能同时有两个客户端获取到锁。2、安全性:锁只能被持有该锁的客户端删除,不能由其它客户端删除。
2017-05-09 14:26:07 5013
原创 operator new 函数、operator delete 函数 和 定位 new
我们知道在C++中申请内存空间和释放内存空间是用new和delete来完成,我们先来看new表达式:string *sp = new new string("initialized");实际上发生了三个步骤:(1)首先,该表达式调用名为operator new的标准库函数,分配足够大的原始的未类型化的内存,以保存指定类型的一个对象;(2)接下来,运行该类型的一个构造函数,用指定初始化式
2015-09-09 21:25:57 725
转载 traits:Traits技术学习笔记
traits:Traits技术初探概述:traits是一种特性萃取技术,它在Generic Programming中被广泛运用,常常被用于使不同的类型可以用于相同的操作,或者针对不同类型提供不同的实现.traits在实现过程中往往需要用到以下三种C++的基本特性:enumtypedeftemplate (partial) specialization其中:enum用
2015-09-09 20:24:03 713
转载 OWASP Top 10 – 2013, 最新十大安全隐患(ASP.NET解决方法)
OWASP(开放Web软体安全项目- Open Web Application Security Project)是一个开放社群、非营利性组织,目前全球有130个分会近万名会员,其主要目标是研议协助解决Web软体安全之标准、工具与技术文件,长期 致力于协助政府或企业了解并改善网页应用程式与网页服务的安全性。 下表左边是2010年的排名,下表右边是2013年的排名,可以看出改变的地方有:
2015-09-09 13:53:12 708
转载 Linux slab 分配器剖析
M. Tim Jones ([email protected]), 顾问工程师, Emulex,链接:http://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/了解 Linux 内存管理的方式良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去,堆内存管理器是实际的规范,但是其性能会受到内存
2015-09-06 12:31:45 391
原创 伙伴系统和slab机制
伙伴系统Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示。四级页表分别为: 页全局目录(Page Global Directory)页上级目录(Page Upper Directory)页中间目录(Page Middle Directory)页表(Page Tabl
2015-09-06 12:15:29 8606 2
原创 2014届华为上机题目及参考答案
一、题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);【
2015-09-06 11:49:42 765
原创 2015届华为校园招聘机试题及参考答案
第一题(60分): 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”。#include using namespace std;void decomposition(char* str,
2015-09-06 10:22:07 894
原创 华为2016校招机试题
题目一:根据指定的分隔符分隔字符串,并输出指定的段描述根据指定的分隔符分隔字符串,并输出指定的段。如果指定的段超过分隔的段数,输出:NULL举例: AAA?BBB?CCC??2 字符串为:AAA?BBB?CCC? 分隔符为:? 指定的段为:2 字符串分割为:AAA BBB CCC共三段,第2段字符串为:BBB输入输出格式要求输入分隔字符串长度小于128个字符
2015-09-05 23:02:22 2494 2
转载 STL内存管理(二)
1. 背景前些天在一个技术分享会上,某大牛说,STL使用了内存池,释放内存的时候,并不释放给OS,而是自己由留着用。听到这些观点后,我就有些着急了,因为我以前一直是直接使用STL的一些工具类的,比如std::string、std::map、std::vector、std::list等等,从来都没有关注过内存的问题。带着内存的问题,我花了两三天的时间去阅读STL的代码,并且写一些简单的程
2015-09-05 10:49:07 554
转载 STL中的内存分配器 (一)
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,STL中的allocator实现,以及一些特定于某种对象的内存管理等。最近阅读了一些内存管理实现方面的
2015-09-05 10:42:50 598
转载 僵尸网络的工作原理与防御
一、Botnet的起源与定义 起源及演化过程 Botnet是随着自动智能程序的应用而逐渐发展起来的。在早期的 IRC聊天网络中,有一些服务是重复出现的,如防止频道被滥用、管理权限、记录频道事件等一系列功能都可以由管理者编写的智能程序所完成。于是在1993 年,在IRC 聊天网络中出现了Bot工具——Eggdrop,这是第一个Bot程序,能够帮助用户方便地使用IRC 聊天网络。这种bot
2015-09-05 10:13:09 27475
转载 技术揭秘二:探讨12306两地三中心混合云架构
前言2015年春节最大的特色就是“摇一摇”,微信红包在春晚摇一摇互动总量超过110亿次,峰值达8.1亿次/分钟,有185个国家传递微信祝福。支付宝钱包在除夕晚上8点达峰值,首页被点击的次数为8.832亿次/分钟。表面上来看“摇一摇”是在送红包,但从深层次的互联网思维来看,摇一摇的目的是要创造和凸显“移动支付”在互联网金融的价值链,甚至一带一路,将“移动支付”模式的业务,带出国门推向全球,此
2015-08-31 14:14:30 658 1
转载 技术揭秘一:12306是如何实现高流量高并发的关键技术?
12306网站曾被认为是“全球最忙碌的网站”,在应对高并发访问处理方面,曾备受网民诟病。因此记者在第一时间联系到一位对12306改造非常关注的技术架构师,他从技术的角度,用科学论证的方式,指出原因所在,并根据他的经验进一步说明12306是如何实现高流量高并发的关键技术,与大家共享。以下为正文:前言:12306互联网售票系统在2011年下半年开始上线使用,但在2012年春运期间引发无
2015-08-31 14:13:25 4113
转载 分布式Web服务器架构
分布式Web服务器架构 最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出
2015-08-31 14:10:29 526
转载 在服务器端采用同步处理模式和异步处理模式的分析
同步服务为每个请求创建单一线程,由此线程完成整个请求的处理:接收消息,处理消息,返回数据;这种情况下服务器资源对所有入栈请求开放,服务器资源被所有入栈请求竞争使用,如果入栈请求过多就会导致服务器资源耗尽宕机,或者导致竞争加剧,资源调度频繁,服务器资源利用效率降低。异步服务则可以分别设置两个线程队列,一个专门负责接收消息,另一个专门负责处理消息并返回数据,另有一些值守线程负责任务派发和超时监控等
2015-08-31 14:09:40 1297
转载 linux中mmap系统调用原理分析与实现
转自:http://blog.chinaunix.net/uid-26215986-id-3360380.html1、mmap系统调用(功能) void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset ) 内存映射函数mmap, 负责把文件内容映射到进程的虚
2015-08-31 13:58:20 608
转载 Linux内存管理之mmap详解
Linux内存管理之mmap详解一. mmap系统调用1. mmap系统调用 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用re
2015-08-31 13:54:17 322
转载 Linux进程间通信之消息队列(二)
前言: 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息函数:1.创建新消息队列或取得已存在消息队列原型:int msgget(key_t key, int msgflg);参数: key:可以认为是一个端口号
2015-08-31 13:50:12 281
转载 Linux进程间通信之消息队列(一)
转自:http://blog.csdn.net/ljianhui/article/details/10287879下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为
2015-08-31 13:47:34 420
转载 Linux进程间通信之命名管道
转自:http://blog.csdn.net/ljianhui/article/details/10202699在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决
2015-08-31 13:43:22 278
转载 Linux进程间通信之匿名管道
转自:http://blog.csdn.net/ljianhui/article/details/10287879在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。一、什么是管道如果你使用过Linux的命令,那么对于管道这
2015-08-31 13:41:55 428
转载 Linux进程间通信之信号
转自:http://blog.csdn.net/ljianhui/article/details/10128731一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。
2015-08-31 13:37:45 247
转载 Linux进程间通信之信号量
转自:http://blog.csdn.net/ljianhui/article/details/10243617一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一
2015-08-31 13:34:29 431
转载 Linux进程间通信之共享内存(二)
Linux共享内存(二)Linux共享内存编程实例原文链接:http://blog.csdn.net/pcliuguangtao/article/details/6526119/*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 从而使得这些进程可以相互通信。 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内
2015-08-31 13:26:24 369
转载 Linux进程间通信之共享内存(一)
Linux共享内存(一)Linux系统编程我一直看 ,只是讲的太简单了,通常是书和网络上的资料结合着来掌握才比较全面 .在掌握了书上的内容后,再来都其他资料 .原文链接 http://www.cnblogs.com/skyme/archive/2011/01/04/1925404.html共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/ke
2015-08-31 13:25:11 1375 1
原创 二叉树常见算法总结(一)
一、在二叉树中,找到距离最远的两个节点的距离在二叉树中,找到距离最远的两个节点的距离。在上面的二叉树中,最远的节点的距离是:4(路径是2-3-13-5-2)。解决思路:遍历每个节点,找出以当前节点为根的最长路径,然后找出所有最长路径中的最大值。思路类似于最大路径和。下面直接给出代码。void longestPathUtil(Node* root, int& le
2015-08-30 18:53:47 8748 1
转载 C++拷贝构造函数详解
原文链接:http://blog.csdn.net/lwbeyond/article/details/6202256一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyprint?int a = 100; int b = a; int a = 100;in
2015-08-27 15:44:23 303
转载 C++ 异常
转自:http://www.cnblogs.com/nzbbody/p/3418989.html一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测
2015-08-27 14:48:09 254
转载 C++编译器无法捕捉到的8种错误
C++是一种复杂的编程语言,其中充满了各种微妙的陷阱。在C++中几乎有数不清的方式能把事情搞砸。幸运的是,如今的编译器已经足够智能化了,能够检测出相当多的这类编程陷阱并通过编译错误或编译警告来通知程序员。最终,如果处理得当的话,任何编译器能检查到的错误都不会是什么大问题,因为它们在编译时会被捕捉到,并在程序真正运行前得到解决。最坏的情况下,一个编译器能够捕获到的错误只会造成程序员一些时间上的损失,
2015-08-27 14:45:58 493
转载 C++ 常见崩溃问题分析
一、前言从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序;由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用;二、C++ 崩溃分类
2015-08-27 14:44:22 815
转载 C++ 虚函数表解析
C++ 虚函数表解析陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTT
2015-08-27 13:38:09 213
转载 C++ 对象的内存布局(下)
C++ 对象的内存布局(下) 陈皓http://blog.csdn.net/haoel 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。 其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),而且还有自己
2015-08-26 00:02:17 212
转载 C++ 对象的内存布局(上)
C++ 对象的内存布局(上) 陈皓http://blog.csdn.net/haoel 前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了
2015-08-26 00:01:58 252
转载 异常安全的C++类
转自:http://m.blog.csdn.net/blog/crazy_programmer_p/38518283题目:类CMyString的声明如下:class CMyString{public:CMyString(char* pData = NULL);CMyString(const CMyString& str);~CMyString(void);CMy
2015-08-26 00:01:35 315
转载 C++ 单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这
2015-08-26 00:01:11 248
转载 C++ 之类型转换操作符
传统C语言的内部类型转换:C语言传统的转化很简单。比如:double d=5.0;int a=(int)d;这个感觉和java差不多。C++有四个内部类型转换操作符:const_cast,reinterpret_cast,static_cast,dynamic_cast。const_cast用法:const_cast (expression)该运算符用来修改类型
2015-08-26 00:00:54 546
转载 const 成员 static 成员 const static int 成员初始化
有关const成员、static成员、const static成员的初始化:1、const成员:只能在构造函数后的初始化列表中初始化2、static成员:初始化在类外,且不加static修饰3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化(仅限const static int),也可以像static在类外初始化,在类之外进行初始
2015-08-25 17:14:31 593
基于vc的KTV点歌系统(SQL SEVER 2000)
2011-01-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人