昨天帮导师做的一个程序出了内存泄露的bug(在VS上程序运行一切正常,等return返回后才出错) 而且是程序运行结束后才出现的错误,在退出前一切代码都顺利执行完了,只是return之后出错. 之后我在Linux下重新编译运行程序,提示的信息更详细: free(): invalid next size (normal) 然后下面显示Backtrace和Memory map等一大串错误信息. 最终调试发现问题在于,读取数据格式不对,导致字符串转换后的int小于0,下标越界.我只检查了上限N,没检查…
前段时间开发的一个后端C模块上线后,线上出core,初始时,因为訪问压力不大,所以崩溃是上线3天左右出现的.当时用gdb跟进调用堆栈并检查源代码,发现出core位置的代码沒有啥问题.因为当时开发任务较重,且该模块不保存状态(崩溃重新启动不影响对外服务),所以沒有深入跟进.后来随着client版本号逐渐放量导致訪问压力上升,噩梦開始了... 该模块会不定时core掉,并且差点儿每次崩溃时的调用堆栈都不一样,关键是最后几层堆栈非常多都位于差点儿不可能出问题的代码中,比方库函数或厂里的公共库. 好在在…
http://blog.csdn.net/tlq1988/article/details/9612237 首先说明一下,本文只是介绍一些容易被开发者忽视,而导致性能低下问题.并不是介绍如何向苹果设备成功发送一条消息,这里假设所有阅读者已经能够向苹果服务器发送消息,并且成功接收,只是发送效率比较低,并且丢失率很高.如果你不是此类情况,那么绕道吧.PS:伸手党可以直接看标红部分(结论) 最近参与并且完成了公司1000W级的消息推送服务平台重建.此次重构级别解决了消息丢失,并且大幅度提升了推送效率.有…
nmap扫描端口导致线上大量Java服务FullGC甚至OOM 最近公司遇到了一次诡异的线上FullGC保障,多个服务几乎所有的实例集中报FullGC,个别实例甚至出现了OOM,直接被docker杀掉. 观察报警服务的log,均有大量的此log *TNonblockingServer [ERROR] Read a frame size of ****, which is bigger than the maximum allowable buffer size for ALL connectio…
1.函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计. 声明方法:template<typename 标识符> 函数声明 求绝对值的模板 #include<iostream>               ……编译器从调用abs函数时实参的类型,推导出函数模板的类型参数.using namespace std;             ……如该题从调用abs(int)推导出模板中类型参数T为int型. template<typenam…
一.问题 给定两个字符串S(原串)和(模式串)T,找出T在S中出现的位置. 二.朴素算法 当S[i] != T[j]时,把T往后移一位,回溯S的位置并重新开始比较.    (1) 成功匹配的部分(ABC)中,没有一样的字符 (a) S: i A B C A B C E T: j A B C E       (b) S: i A B C A B C E T: j   A B C E     (c) S: i A B C A B C E T: j     A B C E   (d) S: i A B…
. . . . . LZ 今天在写一个 Socket 程序的时候使用 malloc(3) 在堆上动态分配了一个结构体的空间,在使用完之后用 free(3) 函数释放空间的时候报 invalid next size 这样的一个错误,经过了两个小时的调试,最后发现是因为粗心越界导致的. LZ 把这个错误缩减为一个最简单的模型发布出来: #include <stdio.h> #include <stdlib.h> #include <string.h> int main (v…
INSIDE OF JEMALLOCThe Algorithm and Implementation of Jemalloc author: vector03mail:   mmzsmm@163.com --[ Table of contents - 简介 - Basic structures 2.1 - Overview 2.2 - Arena (arena_t) - CPU Cache-Line - Arena原理 - choose_arena - Arena结构 2.3 - Chunk (…
C++与C的区别 1. 动态分配内存 1)C语言 a. malloc函数:在内存的动态存储区中分配一个长度为size的连续空间:       void *malloc(unsigned int size); b. calloc函数:在内存的动态存储区中分配n个长度为size的连续空间:        void *calloc(unsigned n, unsigned size); c. free函数:释放由p所指向的内存区        void free(void *p); d. void指针…
Unix高级环境编程系列笔记 (2013/11/17 14:26:38) Unix高级环境编程系列笔记 出处信息 通过这篇文字,您将能够解答如下问题: 如何来标识一个线程? 如何创建一个新线程? 如何实现单个线程的退出? 如何使调用线程阻塞等待指定线程的退出,并获得退出线程的返回码? 如何通过一个线程让另外一个线程退出? 如何实现线程退出时的清理动作? Unix系统如何实现线程之间的同步? 什么情况会发生线程死锁,如何避免死锁? 读写锁的使用方法. 什么是条件变量,它有什么作用? 如何使用条件变…
1. 引言 Serverless 是一种 "无服务器架构",让用户无需关心程序运行环境.资源及数量,只要将精力 Focus 到业务逻辑上的技术. 现在公司已经实现 DevOps 化,正在向 Serverless 迈进,而为什么前端要关注 Serverless? 对业务前端同学: 会改变前后端接口定义规范. 一定会改变前后端联调方式,让前端参与服务器逻辑开发,甚至 Node Java 混部. 大大降低 Nodejs 服务器维护门槛,只要会写 JS 代码就可以维护 Node 服务,而无需学…
前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群,同时使用zookeeper集群做配置管理. 一.部署zookeeper集群 1.加载images,(两种方式:A下载offical版本zookeeper,B加载导出的tar包.A方式为新部署的情况,B方式为从测试环境部署到正式环境的情况) A下载 #下载 docker pull zookeeper…
java内存区域 一些基本概念 http://www.importnew.com/18694.html https://www.cnblogs.com/wangyayun/p/6557851.html 1.方法区和堆是所有线程共享的内存区域:而java栈.本地方法栈和程序员计数器是运行时线程私有的内存区域.        2.Java堆(Heap),是Java虚拟机所管理的内存中最大的一块.Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,几乎所…
文章来自:http://blog.csdn.net/u010700335/article/details/39830425 C++中类的拷贝有两种:深拷贝,浅拷贝:当出现类的等号赋值时,即会调用拷贝函数 一:两个的区别 1 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制.当数据成员中没有指针时,浅拷贝是可行的:但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象,…
一  前言 本文所讨论的“内存”主要指(静态)数据区.堆区和栈区空间(详细的布局和描述参考<Linux虚拟地址空间布局>一文).数据区内存在程序编译时分配,该内存的生存期为程序的整个运行期间,如全局变量和static关键字所声明的静态变量.函数执行时在栈上开辟局部自动变量的储存空间,执行结束时自动释放栈区内存.堆区内存亦称动态内存,由程序在运行时调用malloc/calloc/realloc等库函数申请,并由使用者显式地调用free库函数释放.堆内存比栈内存分配容量更大,生存期由使用者决定,故…
C++浅拷贝和深拷贝的区别 2012-04-24 21:22 11454人阅读 评论(6) 收藏 举报 c++deleteclass编译器c c++默认的拷贝构造函数是浅拷贝 浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如: class A { public: A(int _data) : data(_data){} A(){} private: int data; }; int main(…
在文章开头给出结对同学的博客链接.本作业博客的链接.你所Fork的同名仓库的Github项目地址 本作业博客链接 github pair c 031602136魏璐炜博客 031602139徐明盛博客 给出具体分工 徐明盛:代码修改,消除警告,性能分析改进,爬虫 魏璐炜:单元测试,编写样例 本次作业沿用了徐明盛同学的代码,因此任务分配主要出于效率的考量:徐明盛同学熟悉自己的代码:魏璐炜同学只需要清楚函数接口便可以编写单元测试. 此外的爬虫和附加题没有硬性要求,按时间自行分配.各自都有进行尝试.…
昨天在配置虚拟机的时候因为之前没有设置静态IP,而是使用DHCP动态分配的,导致关机后下次开机虚拟机的ip是随机变动的.严重影响了工作体验啊,遂设置静态ip以保全! 虚拟机使用的是CentOS6.5,一共四台虚拟主机,后3台都是从第一台克隆的.殊不知这样克隆会造成一个问题: 克隆的主机网卡会变成eth1,但是实际并没有eth1这块网卡,即没有ifcfg-eth1这个文件: 克隆的时候连ifcfg-eth0配置文件一起弄过来了,里面的mac地址也是被克隆的机器的,当你的主机和外网通信的时候就有问题…
作者 | 黄子毅(紫益) 阿里前端技术专家 导读:前端开发者是最早享受到 "Serverless" 好处的群体,因为浏览器就是一个开箱即用.甚至无需为计算付费的环境!Serverless 把前端开发体验带入了后端,利用 FaaS 与 BaaS 打造一套开箱即用的后端开发环境.本文作者将从前端角度出发,为你讲述 Serverless 带来的收益及挑战. 引言 Serverless 是一种 "无服务器架构",让用户无需关心程序运行环境.资源及数量,只要将精力 Focus…
作者 | 黄子毅(紫益) 阿里前端技术专家 导读:前端开发者是最早享受到 “Serverless” 好处的群体,因为浏览器就是一个开箱即用.甚至无需为计算付费的环境!Serverless 把前端开发体验带入了后端,利用 FaaS 与 BaaS 打造一套开箱即用的后端开发环境.本文作者将从前端角度出发,为你讲述 Serverless 带来的收益及挑战. 引言 Serverless 是一种 “无服务器架构”,让用户无需关心程序运行环境.资源及数量,只要将精力 Focus 到业务逻辑上的技术. 现在公…
Python初学者常见错误详解 0.忘记写冒号 在 if.elif.else.for.while.class.def 语句后面忘记添加 “:”   if spam == 42 print('Hello!') 导致:SyntaxError: invalid syntax 1.误用 “=” 做等值比较 “=” 是赋值操作,而判断两个值是否相等是 “==”   if spam = 42: print('Hello!') 导致:SyntaxError: invalid syntax 2.使用错误的缩进…
转载自:https://blog.csdn.net/u010700335/article/details/39830425 C++中类的拷贝有两种:深拷贝,浅拷贝:当出现类的等号赋值时,即会调用拷贝函数 一:两个的区别 1 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制.当数据成员中没有指针时,浅拷贝是可行的:但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象,…
1. 引言 Serverless 是一种 “无服务器架构”,让用户无需关心程序运行环境.资源及数量,只要将精力 Focus 到业务逻辑上的技术. 现在公司已经实现 DevOps 化,正在向 Serverless 迈进,而为什么前端要关注 Serverless? 对业务前端同学: 会改变前后端接口定义规范. 一定会改变前后端联调方式,让前端参与服务器逻辑开发,甚至 Node Java 混部. 大大降低 Nodejs 服务器维护门槛,只要会写 JS 代码就可以维护 Node 服务,而无需学习 Dev…
java并发编程实践 11.1ArrayBlockingQueue的使用 有关logback异步日志打印中的ArrayBlockingQueue的使用 1.异步日志打印模型概述 在高并发.高流量并且响应时间要求比较小的系统中同步打印日志在性能上已经满足不了了,这是以因为打印本身是需要写磁盘的,写磁盘操作会暂时阻塞调用打印日志的业务系统,这会造成调用线程的响应时间增加.    ----- >>> 异步日志打印,是将打印日志任务放入一个队列后就返回,然后使用一个线程专门从队列中获取日志任务,…
一.前言   前段时间大致看了一下<深入理解Java虚拟机>这本书,对相关的基础知识有了一定的了解,准备写一写JVM的系列博客,这是第二篇.这篇博客就来谈一谈JVM中使用到的垃圾回收算法. 二.正文  2.1 什么是垃圾回收   在正式介绍垃圾回收算法前,先来说说什么是垃圾回收.这里所说的垃圾主要指的是已经不会再继续使用的对象,当然也有可能是其他,比如不再使用的类以及常量,但主要还是指对象,所以以下算法将介绍对象的回收.所以垃圾回收的含义就是:将内存中已经不会被使用的对象(或类和常量)清除,释…
1. 写在前面 | 本文主要针对 Hotspot VM 中"CMS + ParNew"组合的一些使用场景进行总结.重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省略较多,另外本文专业术语较多,有一定的阅读门槛,如未介绍清楚,还请自行查阅相关材料. | 总字数 2 万左右(不包含代码片段),整体阅读时间约 30min ,文章较长,可以选择你感兴趣的场景进行研究. 1.1 引言 自 Sun 发布 Java 语言以来,开始使用 GC 技术来进行内存自动管理,避免了手动管理带…
OpenMP入门 前情提要:并行(parallel):需要多个运算核心同时完成 其中有多处理器和单处理器多核两种实现方式,其中差异如下: 同一芯片上的多核通信速度更快 同一芯片上的多核能耗更低 OpenMP初见 OpenMP环境配置 笔者当初刚进入的时候,走了许多弯路,这里给出Dev-Cpp版本的OpenMP的环境配置 点击Tools,再点击里面的Complier Options,在里面的General下的Add the following commands when calling the c…
最近兼职公司已经众筹成功的无线门铃的消息推送出现了问题,导致有些用户接收不到推送的消息,真是吓死宝宝了,毕竟自己一手包办的后台服务,影响公司信誉是多么的尴尬,容我简单介绍一下我们的需求:公司开发的是一款无线门铃系统,如果有人在门外按了门铃开关,门铃开关会发射一个信号,屋里的接收网关接收到信号会发出响声,同时也会推送一条消息到用户手机,即使这个手机是远程的,也就是主人不在家也知道有人按了家里的门铃.这里后台需要解决的问题是搭建APNS推送的Provider,因为要想把消息推送到苹果手机,按照苹果公…
Linux堆溢出漏洞利用之unlink 作者:走位@阿里聚安全 0 前言 之前我们深入了解了glibc malloc的运行机制(文章链接请看文末▼),下面就让我们开始真正的堆溢出漏洞利用学习吧.说实话,写这类文章,我是比较怂的,因为我当前从事的工作跟漏洞挖掘完全无关,学习这部分知识也纯粹是个人爱好,于周末无聊时打发下时间,甚至我最初的目标也仅仅是能快速看懂.复现各种漏洞利用POC而已…鉴于此,后续的文章大致会由两种内容构成:1)各种相关文章的总结,再提炼:2)某些好文章的翻译及拓展.本文两者皆有…
由于之前在魅族市场的APK包都不是自己上传的,而是魅族从其他安卓市场帮拉去过来了. 所以需要我们自己去认领APK包. 这个时候就需要按照魅族给的未签名测试包给重新签名然后提交审核了. 1:看完以下说明 jarsigner简单使用说明 jarsigner -verbose -keystore ~/Workspace/mykeystore -signedjar ./meizuemptyapk-release-signed.apk ./meizuemptyapk-release-unsigned.ap…