作为一个程序员,对内存溢出问题肯定不陌生,它已经是软件开发历史上存在了近40年的大难题.在内存空间中,当要表示的数据超出了计算机为该数据分配的空 间范围时,就产生了溢出,而溢出的多余数据则可以作为指令在计算机中大摇大摆地运行.不幸的是,一不小心这就成了黑客们可利用的秘密后门,“红色代码”病 毒事件就是黑客利用内存溢出攻击企业网络的“经典案例”.甚至有人称,操作系统中超过50%的安全漏洞都是由内存溢出引起的.众所周知,C/C++语言虽 然是一种高级语言,但是其程序的目标代码却非常接近机器内核,它能…
0. 不要让main 函数返回 void 入口函数main()返回类型应该为 int, 即程序结束时return 0 表示程序正常返回,函数结束时 return -1 值表示程序异常返回, 如果不显式写出 return 语句,编译器会隐式的加上 return 0(并不要以为main函数可以无返回值),在定义main函数时为了不产生误解,应显式加上return 语句. 注意在老版本中的C++中因为只有 int一种类型所以可以不显式写出main函数的返回值,其会默认main函数返回 int类型,但是…
这几天看了下这本书<编写高质量代码_改善C++程序的150个建议>,觉的蛮有收获的,再次记录下自己以前不清晰的知识点,以供学习. 编写符合标准的main函数 C语言标准规定了main函数的两种标准形式: int main(void) int main(int argc, char* argv[]) C++03标准中给出了两种main函数的定义方式 int main() int main(int argc, char *argv[]) 上述标准都要求main函数返回一个整型数值 extern C…
Java中OutOfMemoryError(内存溢出)的三种情况及解决办法 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识.在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识.jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域).Heap space(堆区域)…
转载自 http://www.cnblogs.com/yangxia-test 使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了,先尝试在jmeter.bat中增加了JVM_ARGS="-Xmx2048m -Xms2048m -Xmn256m -XX:PermSize=128m -Xss256k",但结果运行时间增加了,但最终还是报内存溢出,百度后按照网友的建议更改了如下设置后jmeter就没有再卡了: 1.windows环境下,…
19. 明白在c++中如何使用c c++可以兼容c的绝大部分代码,但是还是有一部分不能兼容. c语言的编译器在调用函数时会把函数翻译成 : "_函数名",例如: int nasa(int a,intb) c语言编译器会将其翻译成:"_nasa"的形式,当调用此函数时就去寻找这个字符串. c++语言的编译器在调用函数时会把函数翻译成:"_函数名_参数类型_参数类型",例如: int nasa(int a,int a) c++编译器会将其翻译成:&q…
12.优先使用前置操作符 #include <iostream> using namespace std; class A { private: int num; public: A operator++(); //前置++ A operator++(int); //后置++ }: A A::operator++() { (*this).num=(*this).num+1; //无须构造一个临时对象 return (*this); } A A::operator++(int) { A p1;…
10. 优化结构体中元素的布局 结构体变量所占空间大小并不是其所含类型所占字节数之和,其所占内存字节数涉及到字节对齐. 字节对齐 :变量在内存中储存都是以字节数为单位,每一个字节都有自己的地址,逻辑上变量的首地址(第一个字节的地址)可以是任意位置,但实际不同类型变量其首地址是有一定规则的,这是为了更快的查找便于存取(牺牲空间来换取效率). 结构体变量中的各个类型在内存中存放时也按照一定的规则,并不是简简单单的用连续的内存 挨边存放. 其遵循的规则有: (1)结构体变量的首地址可以被其所含最宽的基…
27. 区分内存分配的方式 c++中内存分为5个不同的区 ①栈区 栈是一种特殊的数据结构,其存取数据特点为(先进后出,后进先出).栈区中主要用于存储一些函数的入口地址,函数调用时的实参值以及局部变量.栈区的大小和内存分配由编译器和底层硬件配合完成在函数调用时发挥很大作用,但是程序员不需要关心其的操作(因此起较安全). ②堆区 堆区主要是用户自由分配内存的区域,new(malloc())与delete(free())运算符都是在操作这块区域.因为堆区中内存的申请和释放都是交给程序员自己完成所以比较…
编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐,简胜杂,杂胜乱,平胜陡,疏胜密 python定义 #python排序 def quicksort(arr): less=[];greater=[] if len(arr)<=1: return arr pivot=arr.pop() for x in arr: if x<=pivot: less…
建议150:使用匿名方法.Lambda表达式代替方法 方法体如果过小(如小于3行),专门为此定义一个方法就会显得过于繁琐.比如: static void SampeMethod() { List<string> list=new List<string>(){"Mike","Rose","Steve"}; var mike = list.Find(new Predicate<string>(HaveLength…
在通往"Java技术殿堂"的路上,本书将为你指点迷津!内容全部由Java编码的最佳 实践组成,从语法.程序设计和架构.工具和框架.编码风格和编程思想等五大方面,对 Java程序员遇到的各种棘手的疑难问题给出了经验性的解决方案,为Java程序员如何编写 高质量的Java代码提出了151条极为宝贵的建议.对于每一个问题,不仅以建议的方式从 正反两面蛤出了被实践证明为十分优秀的解决方案和非常精糕的解决方案,而且还分析了 问题产生的根源,犹如醍醐灌顶,让人豁然开朗. 全书-共12章,第1~ 3…
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请适当参考其学习思想即可,切勿照…
2014-05-16 09:08 by Jeff Li 前言 系列文章:[传送门] 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,慘不忍睹是吧.确实,人和代码一样都在成长,都在变好其中.有时候仅仅是实现功能的编程,长进不了呀. 博客提供的优点就能够交流,讨论的学习方法你们应该知道. 在这里,我会陆陆续续的进行对<编写高质量代码改善java程序的151个建议>看法,希望大家点击交流. 正文 看这本书原因   1.项目做的仅仅是实现功能,然而没有…
原文:编写高质量代码改善C#程序的157个建议[1-3] 前言 本文主要来学习记录前三个建议. 建议1.正确操作字符串 建议2.使用默认转型方法 建议3.区别对待强制转换与as和is 其中有很多需要理解的东西,有些地方可能理解的不太到位,还望指正. 建议1.正确操作字符串 字符串应该是所有编程语言中使用最频繁的一种基础数据类型.如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开销而付出代价.本条建议将从两个方面来探讨如何规避这类性能开销: 1.确保尽量少的装箱 2.避免分配额外的内存空间…
一位资深程序员给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Jav…
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务必一致 建议4: 避免带有变长参数的方法重载 建议5: 别让null值和空值威胁到变长方法 建议6:覆写变长方法也循规蹈矩 建议7:警惕自增的陷阱 建议8:不要让旧语法困扰你 建议9:少用静态导入 建议10:不要在本类中覆盖静态导入的变量和方法 建议11:养成良好习惯,显示声明UID 建议12:避免…
今天是我看<编写高质量代码:改善C#程序的157个建议>第二遍的时候了,看完这本书的确是受益匪浅,学到了很多东西,也明白了很多道理. 里面的代码我每个都调试了一遍,有时候是有些出入的,可能是作者写的书比较早,使用的开发环境比较旧,也许是我的学习还不到家,今天在看建议17的时候,发现了一些小问题,不是很大,是小问题,记录下来,当别人看到的时候可以起到修正的作用. 可能很多人和我一样,没有太在乎for和foreach的区别,也没有深究其底层发生的一些东西,看了文章才发现里面的东西还真是不少. 好了…
一位资深程序员大牛给予Java初学者的学习路线建议   java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web…
<编写高质量代码 改善Python程序的91个建议> <编写高质量代码 改善Python程序的91个建议>读后程序学习小结 - BigDeng_2014的专栏 - CSDN博客 # coding=utf-8 # Language Reference ''' 参考书:<编写高质量代码 改善Python程序的91个建议>张颖,赖勇浩 著 2014.6 ''' from __future__ import with_statement # assert x, y = 1, 1…
读了一本还不错的书「编写高质量代码改善 Python 程序的 91 个建议」,大多数的建议是真心不错,我虽然写python也有3年多了,但是有些地方确实没去注意过,特地整理了一下,给大家参考. 我已经打包好了一份电子书,有兴趣的可以关注公众号:Python专栏.后台回复:91个建议,获取该电子书. 1.引论 建议1:理解Pythonic概念--详见Python中的<Python之禅> 建议2:编写Pythonic代码 避免不规范代码,比如只用大小写区分变量.使用容易混淆的变量名.害怕过长变量名…
编写高质量代码:改善Java程序的151个建议 --[36~51] 工具类不可实例化 工具类的方法和属性都是静态的,不需要生成实例即可访 问,而且JDK也做了很好的处理,由于不希望被初始化,于是就设置了构造函数private的访问权限,表示出了类本身之外,谁都不能产生一个实例: class UtilsClazz{ public UtilsClazz(){ throw new Error("Don't instantiate "+getClass()); } } 避免对象的浅拷贝 sup…
建议157:从写第一个界面开始,就进行自动化测试 如果说单元测试是白盒测试,那么自动化测试就是黑盒测试.黑盒测试要求捕捉界面上的控件句柄,并对其进行编码,以达到模拟人工操作的目的.具体的自动化测试请学习Code UI Automation,这里不再介绍. 转自:<编写高质量代码改善C#程序的157个建议>陆敏技 到此,<编写高质量代码改善C#程序的157个建议>的笔记已经全部完成. 转载请注明出处: 作者:JesseLZJ出处:http://jesselzj.cnblogs.com…
原文发表在我的博客主页,转载请注明出处! 建议三十四:掌握字符串的基本用法 编程有两件事,一件是处理数值,另一件是处理字符串,在商业应用编程来说,处理字符串的代码超过八成,所以需要重点掌握. 首先有个小技巧,python遇到未闭合的小括号时会自动将多行代码拼接为一行,同时把相邻的两个字符串字面量拼接再议,比如下面的两个代码是等价的. s = ('SELECT *' 'FROM atable' 'WHERE afield = "value"') 'SELECT *FROM atableW…
原文发表在我的博客主页,转载请注明出处! 初衷 python是一个入门十分容易的编程语言,但是想要写好python却是一件不容易的事情,如果不是专业使用python的人,只是将python作为一个脚本语言或者用来处理数据,到了掌握基本的语法之后,便不再寻求进步.但是相信每个学习python的人都知道pythonic这个单词,这个词语很难定义,全靠心领神会,但大家心中都认同Tim Peters的<The Zen of Python>中提到的几点: 美胜丑,显胜隐,简胜杂,杂胜乱,平胜陡,疏胜密…
<编写高质量代码-改善java程序的151个建议> --秦小波 第一章.开发中通用的方法和准则 1.不要在常量和变量中出现易混淆的字母 long a=0l; --> long a=0L; 2.莫让常量蜕变成变量 static final int t=new Random().nextInt(); 3.三元操作符的类型无比一致 int i=80; String s=String.valueOf(i<100?90:100); String s1=String.valueOf(i<…
首先说明,本周活动有效时间为2016年8月28日到2016年9月4日.本周为大家送出的书是由机械工业出版社出版,马伟编著的<编写高质量代码:改善C程序代码的125个建议>. 编辑推荐 10余年开发经验的资深C语言专家全面从C语法和C11标准两大方面深入探讨编写高质量C代码的技巧.禁忌和实践 C语言因为既具有高级语言特性,又具有汇编语言特性,所以它是近二十几年来使用较为广泛.生命力较强的编程语言.无论是操作系统.嵌入式系统.普通应用软件,还是移动智能设备开发,它都能够很好地胜任,是公认的强大的语…
编写高质量代码 改善java程序的151个建议 http://www.cnblogs.com/selene/category/876189.html…
原文发表在我的博客主页,转载请注明出处! 建议二十八:区别对待可变对象和不可变对象 python中一切皆对象,每一个对象都有一个唯一的标识符(id()).类型(type())以及值,对象根据其值能否修改分为可变对象和不可变对象,其中数字.字符串.元组属于不可变对象,字典以及列表.字节数组属于可变对象. 来看一段程序: class Student(object): def __init__(self,name,course=[]): self.name = name self.course = c…
原文发表在我的博客主页,转载请注明出处! 建议四十一:一般情况下使用ElementTree解析XML python中解析XML文件最广为人知的两个模块是xml.dom.minidom和xml.sax,作为主要解析XML方法的两种实现,DOM需要将整个XML文件加载到内存中并解析为一棵树,简单但是内存消耗大:SAX是基于事件驱动的,虽不需要全部装入XML文件,但是处理过程复杂.一般情况下选择ElementTree便可以,cElementTree是其Cython实现,速度更快,消耗内存更少,性能上更…