如何设置ulimit使得程序在segmentfault是什么 fault等严重错误时可以产生coredump

相关文章推荐
使用 GDB 调试 CoreDump 文件
28 AUGUST 2011
写C/C++程序经常要直接和内存打交道,一不小心就会造成程序执行时产生Segment Fault而挂掉。一般这种情况都是因...
转自:http://blog.ddup.us/?p=176
写C/C++程序经常要直接和内存打交道,一不小心就会造成程序执行时产生Segment Fault而挂掉。一般这种情况都是因...
本文介绍如何使用gdb分析coredump文件和远程调试,尤其是当出现段错误时,可以很快找出是哪段代码导致出错。
1. 产生coredump,使用gdb分析
首先,你所用的linux要支持c...
什么是coredump,ulimit,Windows下miniDump和FullDump的设置,gdb 调试coredump的简单示例,生成core文件,自定义core文件的文件名,设置永久保存,gd...
写C/C++程序经常要直接和内存打交道,一不小心就会造成程序执行时产生Segment
Fault而挂掉。一般这种情况都是因为数组越界访问,空指针或是野指针读写造成的。程序小的话还比较好办,对着源代...
准备交叉gdb,即使用你的交叉开发工具编译出来的GDB:
注意一定要是交叉gdb,如果你看到
[root@yjypmypm Debug]# arm-hismall-linux-gdb hello...
GDB+coredump
为了便于开发,现在经常把可执行文件里的debug信息取出来单独作为一个文件,这样,可以使得可执行文件体积变小很多。比如,rpm包普遍采用这样的方法。
这种情况下,如果要对产生的 coredump进行调...
我的程序crash,有了coredump文件,在Linux PC上用arm-linux-gdb debug it. The result is:
0x in ?? ()
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)博客访问: 387864
博文数量: 144
博客积分: 2635
博客等级: 少校
技术积分: 1353
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
&& &Linux下的C程序常常会因为内存访问错误等原因造成segment fault(段错误)此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上来,之后可以用gdb对core文件进行分析,还原系统发生段错误时刻的堆栈情况。这对于我们发现程序bug很有帮助。&& &使用ulimit -a可以查看系统core文件的大小限制;使用ulimit -c [kbytes]可以设置系统允许生成的core文件大小。ulimit -c 0 不产生core文件ulimit -c 100 设置core文件最大为100kulimit -c unlimited 不限制core文件大小步骤:1、当发生段错误时,我们查看ulimit -a &(core file size
(blocks, -c) 0)并没有文件,&2、设置 :ulimit -c unlimited &&不限制core文件大小3.、运行程序 ,发生段错误时会自动记录在core中4、test]$ ls -al core.*
在那个文件下(-rw------- 1 leconte leconte 139264 01-06 22:3 1 core.2065)5、使用gdb 运行程序和段错误记录的文件。(est]$ gdb ./test core.2065)6、会提哪行有错。&& & 很多系统默认的core文件大小都是0,我们可以通过在shell的启动脚本/etc/bashrc或者~/.bashrc等地方来加入 ulimit -c 命令来指定core文件大小,从而确保core文件能够生成。除此之外,还可以在/proc/sys/kernel/core_pattern里设置core文件的文件名模板,详情请看core的官方man。
阅读(1069) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。相关文章推荐
死锁产生的四个必要条件是:
内存耗用:VSS/RSS/PSS/USS
VSS - Virtual Set Size
虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size
转自:/note//
RSS is the total memory actually held in RAM for a proce...
本地地址:http://blog.csdn.net/wj_j2ee/article/details/7161586
关于内核转储的设置方法
1. 内核转储作用
(1) 内核转储的最大好处是能够保存问题发生时的状态。
(2) 只要有可执行文件和内核转储,就可以知道进程当时的状态。
(3) 只要获取...
linux安装时会有一个选项,设置在程序出异常时是否生成core文件,一般默认都很小,或者压根就没有开。如果该选项关闭的话,程序异常退出就不会留下任何痕迹,基本上就无法定位任何导致异常的故障,这和wi...
此资料源自同事,故不知转载地址,在此做记录用
1. 内核转储(coredump)作用
(1) 内核转储的最大好处是能够保存问题发生时的状态。
(2) 只要有可执行文件和内核转储,...
之前玩过一段时间的嵌入式设备(如下叙述以手机为例)的软件开发, 当时出现了一个低概率问题: 系统开机会低概率卡死在某个模块中。 这个问题必须解决。
如果有问题的手机发布到用于手中, 假设...
一个嵌入式的linux,可能发生了死锁。按照一般的做法,gdb远程连接,察看调用栈,分析源代码并找出原因,修改验证,真的是一件赏心悦目的事情。但世界总不按照人想到的方向发展,编译生成了gdbserve...
什么是coredump
通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件。许多程序和操作系统出错时会自动生成一个co...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)09网易校园招聘笔试题A卷(研发类笔试题) - liyangguang1988的专栏 - CSDN博客
09网易校园招聘笔试题A卷(研发类笔试题)
面试与工作
第一部分(必做):计算机科学基础
<span style="color:#.(单选)软件设计中模块划分应该遵循的准则是:
A.低内聚低耦合
B.高内聚低耦合
C.低内聚高耦合
D.高内聚高耦合
答:B& 内聚指模块内部各成分之间相关程度的度量 强度性低到高分成 偶然内聚 :关系松散没什么联系 逻辑内聚:几个逻辑上相关的功能被放在同一模块中,如一个模块读取各种不同类型外设的输入,逻辑内聚的模块各成分在功能上并无关系。时间内聚:一个模块完成的功能必须在同一时间内执行,这些功能只是因为时间因素关联在一起。通信内聚:如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。顺序内聚: 如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。功能内聚:模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。信息内聚:模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该模块执行哪一个功能。&
耦合指模块之间的关联程度。耦合由高到低分成:内容耦合:当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。公共耦合:两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构。控制耦合:一个模块通过接口向一个模块传递控制信号,接受信号的的模块根据信号&#20540;进行适当的动作。标记耦合:一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号&#20540;而进行适当的动作,这种耦合被称为控制耦合。数据耦合:模块之间通过参数传递数据。非直接耦合:两个模块间没有直接关系,完全通过主模块的控制和调用实现。&
内聚指模块内部各成分之间相关程度的度量 强度性低到高分成 偶然内聚 :关系松散没什么联系 逻辑内聚:几个逻辑上相关的功能被放在同一模块中,如一个模块读取各种不同类型外设的输入,逻辑内聚的模块各成分在功能上并无关系。时间内聚:一个模块完成的功能必须在同一时间内执行,这些功能只是因为时间因素关联在一起。通信内聚:如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。顺序内聚: 如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。功能内聚:模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。信息内聚:模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该模块执行哪一个功能。
耦合指模块之间的关联程度。耦合由高到低分成:内容耦合:当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。公共耦合:两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构。控制耦合:一个模块通过接口向一个模块传递控制信号,接受信号的的模块根据信号值进行适当的动作。标记耦合:一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。数据耦合:模块之间通过参数传递数据。非直接耦合:两个模块间没有直接关系,完全通过主模块的控制和调用实现。
<span style="color:#. (单选)最坏情况下时间复杂度不是n(n-1)/2的排序算法是:
A.快速排序
B.冒泡排序
C.直接插入排序
答:D& 快排最差是每次partion得到的位置在数组的两端时出现如排序有序数组。& 每次partion全部比较一次,每一趟比较后一个数位置确定,下次比较少一个数字少比较一次& (1&#43;…N-1)& 冒泡每一趟通过相邻数字间交换实现把最大或最小数排到数组两端& 比较次数为(1&#43;…N-1)& 直接插入最差情况是在逆序时如从小到大排序时每个数都比前面的所有数小& 比较次数(1&#43;..N-1)& 堆排序最好最差情况一样 都为nlogn&
快排最差是每次partion得到的位置在数组的两端时出现如排序有序数组。
每次partion全部比较一次,每一趟比较后一个数位置确定,下次比较少一个数字少比较一次
(1+…N-1)
冒泡每一趟通过相邻数字间交换实现把最大或最小数排到数组两端
比较次数为(1+…N-1)
直接插入最差情况是在逆序时如从小到大排序时每个数都比前面的所有数小
比较次数(1+..N-1)
堆排序最好最差情况一样 都为nlogn
<span style="color:#. 哈希表中解决冲突的方法通常可以分为open addressing和chaining两类,请分别解释这两类冲突解决方法的大致实现原理
答:第一个使用冲突算法在哈希表中在此寻找合适位置,& 分为线性探测再散列,存储地址D发生冲突,则放到存储地址(D+1)%m;若又发生冲突则放到存储地址(D+2)%m二次探测,ND = (D&#43;di)%m; di取1*1,-1*1,2*2,-2*2,……,K*K,-K*K (K≤m/2)。拉链法个将所有关键字为同义词的结点链接在同一个单链表中&
答:第一个使用冲突算法在哈希表中在此寻找合适位置,
分为线性探测再散列,存储地址D发生冲突,则放到存储地址(D+1)%m;若又发生冲突则放到存储地址(D+2)%m二次探测,ND = (D+di)%m; di取1*1,-1*1,2*2,-2*2,……,K*K,-K*K (K≤m/2)。拉链法个将所有关键字为同义词的结点链接在同一个单链表中
<span style="color:#. 简单的链表结构拥有很好的插入删除节点性能,但随机定位(获取链表第n个节点)操作性能不佳,请你设计一种改进型的链表结构优化随机定位操作的性能,给出设计思路及其改进后随机定位操作的时间复杂度
使用 Node * List[MAX]按顺序存储链表节点地址,随机访问时间复杂度O(1);相对的删除增加节点时间变成O(n);&
使用 Node * List[MAX]按顺序存储链表节点地址,随机访问时间复杂度O(1);相对的删除增加节点时间变成O(n);
<span style="color:#. 什么是NP问题?列举典型的NP问题(至少两个)?对于一个给定的问题你通常如何判断它是否为NP问题?
NP问题是可以在多项式时间内被确定机(通常意义的计算机)解决的问题.NP(Non-Deterministic Polynomial, 非确定多项式)问题,是指可以在多项式时间内被非确定机(它可以猜,他总是能猜到最能满足你需要的那种选择,如果你让他解决n皇后问题,他只要猜n次就能完成----每次都是那么幸运)解决的问题。经典问题有:旅行商问题 TSP Travelling Salesman Problem、子集和问题、Hamilton回路、最大团问题&
判断方法:可以将时间的时间复杂度与某个NP问题的时间复杂度作比较&
NP问题是可以在多项式时间内被确定机(通常意义的计算机)解决的问题.NP(Non-Deterministic Polynomial, 非确定多项式)问题,是指可以在多项式时间内被非确定机(它可以猜,他总是能猜到最能满足你需要的那种选择,如果你让他解决n皇后问题,他只要猜n次就能完成----每次都是那么幸运)解决的问题。经典问题有:旅行商问题 TSP Travelling Salesman Problem、子集和问题、Hamilton回路、最大团问题
判断方法:可以将时间的时间复杂度与某个NP问题的时间复杂度作比较
<span style="color:#.
以下是一个tree的遍历算法, queue是FIFO队列,请参考下面的tree,选择正确的输出
<span style="color:#
2& <span style="color:#
queue.push(tree.root)& while(true){&
&&& node=queue.pop();& &&& output(node.value);&
&&& if(null==node)&
&&&&&& break;& &&& for(child_node in node.children){&
&&&&&&& queue.push(child_node);& &&& }& }&
queue.push(tree.root)
while(true){
node=queue.pop();
output(node.value);//输出节点对应数字
if(null==node)
for(child_node in node.children){
queue.push(child_node);
B. 1245367
C. 1376254
D. 1327654
答:A& 按层次遍历输出&
按层次遍历输出
第二部分(选作): C/C&#43;&#43;程序设计
<span style="color:#.有三个类A B C定义如下,请确定sizeof(A)
sizeof(B) sizeof(C)的大小顺序,并给出理由
struct A{& &&& A() {}8字节,有虚函数所以又虚指针 占4字节 加上8字节变量& &&& ~A() {}& &&& int m1;& &&& int m2;& };& struct B:public A{&
&&& B() {}& &&& ~B() {}& &&& int m1;& &&& char m2;& &&& static char m3;&
};& struct C{& &&& C() {}& &&& virtual~C() {}&
&&& int m1;& &&& short m2;& };&&
A() {}8字节,有虚函数所以又虚指针 占4字节 加上8字节变量
struct B:public A{//8字节 char因为4字节对齐占4个字节,static不存储在类中
static char m3;
virtual~C() {}//四字节对齐变量一共占8字节,有虚函数加4字节虚指针一共12字节。
A:8字节变量& B:8字节 char因为4字节对齐占4个字节,static不存储在类中&
C:四字节对齐变量一共占8字节,有虚函数加4字节虚指针一共12字节。&
A:8字节变量
B:8字节 char因为4字节对齐占4个字节,static不存储在类中
C:四字节对齐变量一共占8字节,有虚函数加4字节虚指针一共12字节。
<span style="color:#.请用C&#43;&#43;实现以下print函数,打印链表I中的所有元素,每个元素单独成一行voidprint(const
std::list&int& &I)
void print(const std::list&int& &I){&
&&& for(const std::list&int&::const_itorator it = I.begin():it != I.end(): it&#43;&#43;)&
&&&&&&& cout&&*it&&& }&
void print(const std::list&int& &I){
for(const std::list&int&::const_itorator it = I.begin():it != I.end(): it++)//访问常量必须使用常迭代器。
cout&&*it&&
<span style="color:#. 假设某C工程包含a.c和b.c两个文件,在a.c中定义了一个全局变量foo,在b.c中想访问这一变量时该怎么做?
答:使用extern&&
答:使用extern
<span style="color:#. C&#43;&#43;中的new操作符通常完成两个工作,分配内存及其调用相应的构造函数初始化
1) 如何让new操作符不分配内存,只调用构造函数?
<span style="color:#) 这样的用法有什么用?
答:参考 http://blog.csdn.net/aixiaolin/article/details/7367237
使用定位放置new&&
#include &new& // 必须 #include 这个,才能使用 &placement new&&
#include &Fred.h& // class Fred 的声明&
void someCode()& {& char memory[sizeof(Fred)];
& void* place =
& Fred* f = new(place) Fred();
& }&& 作用为:对于需要反复创建并删除的对象,可以降低分配释放内存的性能消耗&
使用定位放置new
#include &new& // 必须 #include 这个,才能使用 &placement new&
#include &Fred.h& // class Fred 的声明
void someCode()
char memory[sizeof(Fred)]; // Line #1
void* place = // Line #2
Fred* f = new(place) Fred(); // Line #3 (详见以下的“危险”)
// The pointers f and place will be equal
作用为:对于需要反复创建并删除的对象,可以降低分配释放内存的性能消耗
<span style="color:#. 下面这段程序的输出是什么?为什么?
class A{& public:& &&& A(){p();}& &&& virtual void p(){print(&A&)}&
&&& virtual ~A(){p();}&
};& class B{& public:& &&& B(){p();}& &&& void p(){print(&B&)}&
&&& ~B(){p();}& };& int main(int,
char**){& &&& A* a=new B();& &&& delete& }&
virtual void p(){print(&A&)}
virtual ~A(){p();}
void p(){print(&B&)}
~B(){p();}
int main(int, char**){
A* a=new B();
输出:ABBA& 原因:先构造父类 再构造子类 子类构造完成前virtual无效,析构虚函数会先析构子类&
输出:ABBA
原因:先构造父类 再构造子类 子类构造完成前virtual无效,析构虚函数会先析构子类
<span style="color:#. 什么是C&#43;&#43; Traits?并举例说明
答:特性萃取&& template &class T&&
class Demol{& &&& typedef& T T& }& template &class T&&
class Demol&T *&{&
&&& typedef& T T& }&
答:特性萃取
template &class T&
class Demol{
template &class T&//偏特化
class Demol&T *&{
第三部分(选作): JAVA程序设计
1. (单选)以下Java程序运行的结构是:& public class Tester{&
public static
void main(String[] args){& && Integer var1=new Integer(1);&
&& Integer var2=var1;& && doSomething(var2);& && System.out.print(var1.intValue());& && System.out.print(var1==var2);& }& public static
void doSomething(Integer integer){&
integer=new Integer(2);&
}& }& A. 1true& B. 2true& C. 1false& D. 2false& 2. (单选)往OuterClass类的代码段中插入内部类声明, 哪一个是正确的:& public class OuterClass{&
private float f=1.0f;&
& }& A.& class InnerClass{& public static
float func(){return}&
}& B.& abstract class InnerClass{& public abstract float func(){}&
}& C.& static class InnerClass{&
protected static
float func(){return}&
}& D.& public class InnerClass{&
static static
float func(){return}&
}& 3. Java中的interface有什么作用? 举例说明哪些情况适合用interface, 哪些情况下适合用抽象类.&
4. Java多线程有哪几种实现方式? Java中的类如何保证线程安全? 请说明ThreadLocal的用法和适用场景& 5. 线程安全的Map在JDK 1.5及其更高版本环境 有哪几种方法可以实现?& 6.& 1) 简述Java ClassLoader的模型, 说明其层次关系及其类加载的主要流程即可.& 2) TypeA.class位于classpath下, /absolute_path/TypeA.class为其在文件系统中的绝对路径, 且类文件小于1k, MyClassLoader为一个自定义的类加载器, 下面的这段类加载程序是否正确, 如果有错请指出哪一行有错, 简述理由&
import java.io.F& import java.io.FileInputS& import java.io.InputS& public class Tester{&
public static
void main(String[] args){& && MyClassLoader cl1=new MyClassLoader();&
&& try{& &&& File f=new File(&/absolute_path/TypeA.class&);&
&&& byte[] b=new byte[1024];&
&&& InputStream is=new FileInputStream(f);&
&&& int I=is.read(b);&
&&& Class c=cl1.defineMyClass(null,b,0,1);& &&& TypeA a=(TypeA)c.newInstance();& && }catch(Exception e){& &&& e.printStacktrace();& && }& }& }&
1. (单选)以下Java程序运行的结构是:
public class Tester{
public static void main(String[] args){
Integer var1=new Integer(1);
Integer var2=var1;
doSomething(var2);
System.out.print(var1.intValue());
System.out.print(var1==var2);
public static void doSomething(Integer integer){
integer=new Integer(2);
2. (单选)往OuterClass类的代码段中插入内部类声明, 哪一个是正确的:
public class OuterClass{
private float f=1.0f;
//插入代码到这里
class InnerClass{
public static float func(){}
abstract class InnerClass{
public abstract float func(){}
static class InnerClass{
protected static float func(){}
public class InnerClass{
static static float func(){}
3. Java中的interface有什么作用? 举例说明哪些情况适合用interface, 哪些情况下适合用抽象类.
4. Java多线程有哪几种实现方式? Java中的类如何保证线程安全? 请说明ThreadLocal的用法和适用场景
5. 线程安全的Map在JDK 1.5及其更高版本环境 有哪几种方法可以实现?
1) 简述Java ClassLoader的模型, 说明其层次关系及其类加载的主要流程即可.
2) TypeA.class位于classpath下, /absolute_path/TypeA.class为其在文件系统中的绝对路径, 且类文件小于1k, MyClassLoader为一个自定义的类加载器, 下面的这段类加载程序是否正确, 如果有错请指出哪一行有错, 简述理由
import java.io.F
import java.io.FileInputS
import java.io.InputS
public class Tester{
public static void main(String[] args){
MyClassLoader cl1=new MyClassLoader();
File f=new File(&/absolute_path/TypeA.class&);
byte[] b=new byte[1024];
InputStream is=new FileInputStream(f);
int I=is.read(b);
Class c=cl1.defineMyClass(null,b,0,1);
TypeA a=(TypeA)c.newInstance();
}catch(Exception e){
e.printStacktrace();
第四部分(选作): Linux应用与开发
<span style="color:#. 写出完成以下功能的Linux命令:
1) 在当前目录及其子目录所有的.cpp文件中查找字符串&example&,不区分大小写;
2) 使用sed命令,将文件xyz中的单词AAA全部替换为BBB;
3) 用一条命令创建aabb cc三个子目录
4) mount cdrom.iso至/dev/cdrom目录
5) 设置ulimit使得程序在Segment fault等严重错误时可以产生
2. 设umask为<span style="color:#2,则新建立的文件的权限是什么?
A. -rw-rwr--
B. rwxrwx-w-
C. -------w-
D. rwxrwxr-x
3. 用户HOME目录下的.bashrc和.bash_profile文件的功能有什么区别?
4. 写出完成以下功能的gdb命令(可以使用命令简写形式):
1) 使用gdb调试程序foo,使用coredump文件core.12023;
2) 查看线程信息
3) 查看调用堆栈
4) 在类ClassFoo的函数foo上设置一个断点
5) 设置一个断点,当表达式expr的&#20540;被改变时触发
1) 例举Linux下多线程编程常用的pthread库提供的函数名并给出简要说明(至少给出<span style="color:#个)
2) pthread库提供哪两种线程同步机制,列出主要API
3) 使用pthread库的多线程程序编译时需要加什么连接参数?
第五部分(选作):
Windows开发
<span style="color:#. DC(设备上下文)有哪几类?区别在哪里?
CpaintDC 在窗口的成员函数OnPaint中使用的一种设备上下文,在构造过程中自动调用BeginPaint析构时自动调用EndPaint&
CClientDC 代表客户区域的设备上下文& CWindowDC 代表整个窗口的设备上下文& CMetaFileDC 代表Windows图元文件的设备上下文&
CpaintDC 在窗口的成员函数OnPaint中使用的一种设备上下文,在构造过程中自动调用BeginPaint析构时自动调用EndPaint
CClientDC 代表客户区域的设备上下文
CWindowDC 代表整个窗口的设备上下文
CMetaFileDC 代表Windows图元文件的设备上下文
<span style="color:#.
碰撞检测是游戏中经常要用到的基本技术对于二维情况,请回答以下问题:
1). 如何判断一个点在一个多边形内
答:四边形上下左右边界判断
2). 如何判断两个多边形相交
答:判断A四边形每条边与B多边形的每边相交情况,如果有相交则多边形相交
<span style="color:#). 如何判断两个点集所形成的完全图所围的区域是否相交
答:求凸包然后然后问题变成判断多边形是否相交
<span style="color:#.PostMessage SendMessage和PostThreadMessage的区别是什么
答:post和send把消息送进指定窗口创建的线程的消息队列,send会等待消息处理后继续执行,post直接处理下一条语句,postThread直接把消息传递给对应线程的消息队列&
答:post和send把消息送进指定窗口创建的线程的消息队列,send会等待消息处理后继续执行,post直接处理下一条语句,postThread直接把消息传递给对应线程的消息队列
<span style="color:#. 什么叫Alpha混合?当前流行的图片&#26684;式中哪些支持alpha通道?LayeredWindow和普通Window有什么区别?
答:&& (1)将要绘制的物体颜色与颜色缓冲区中存在的颜色相混合,从而绘制出具有半透明效果的物体。& 假设一种不透明东西的颜色是A,另一种透明的东西的颜色是B,那么透过B去看A,看上去的颜色C就是B和A的混合颜色,可以用这个式子来近&#20284;,设B物体的透明度为alpha(取&#20540;为0-1,0为完全透明,1为完全不透明)&
R(C)=alpha*R(B)&#43;(1-alpha)*R(A)& G(C)=alpha*G(B)&#43;(1-alpha)*G(A)& B(C)=alpha*B(B)&#43;(1-alpha)*B(A)& R(x)、G(x)、B(x)分别指颜色x的RGB分量。& (2)PNG TGA& (3)Layered Window可以实现像素级的透明度调整而普通window只能整体调整透明度&
(1)将要绘制的物体颜色与颜色缓冲区中存在的颜色相混合,从而绘制出具有半透明效果的物体。
假设一种不透明东西的颜色是A,另一种透明的东西的颜色是B,那么透过B去看A,看上去的颜色C就是B和A的混合颜色,可以用这个式子来近似,设B物体的透明度为alpha(取值为0-1,0为完全透明,1为完全不透明)
R(C)=alpha*R(B)+(1-alpha)*R(A)
G(C)=alpha*G(B)+(1-alpha)*G(A)
B(C)=alpha*B(B)+(1-alpha)*B(A)
R(x)、G(x)、B(x)分别指颜色x的RGB分量。
(2)PNG TGA
(3)Layered Window可以实现像素级的透明度调整而普通window只能整体调整透明度
<span style="color:#. 如果要实现一个多线程(非MFC)程序,选择多线程CRT,创建线程的时候应该用CreateThread还是_beginthreadex(),为什么?
_beginthreadex()而非CreateThread?
答:参考http://blog.csdn.net/shu_nt/article/details/7543528
传统的CRT不支持多线程,为了能正常使用,_beginthreadex()使用了系统的TlsGetValue函数来获取对应线程的tiddata内存块地址,使tiddata与线程关联互不影响。&
如果要作多线程(非MFC)程序,在主线程以外的任何线程内& - 使用malloc(),free(),new&
- 调用stdio.h或io.h,包括fopen(),open(),getchar(),write(),printf(),errno&
- 使用浮点变量和浮点运算函数& - 调用那些使用静态缓冲区的函数如: asctime(),strtok(),rand()等。& 你就应该使用多线程的CRT并配合_beginthreadex(该函数只存在于多线程CRT), 其他情况下你可以使用单线程的CRT并配合CreateThread。&
因为对产生的线程而言,_beginthreadex比之CreateThread会为上述操作多做额外的簿记工作,比如帮助strtok()为每个线程准备一份缓冲区。&
然而多线程程序极少情况不使用上述那些函数(比如内存分配或者io),所以与其每次都要思考是要使用_beginthreadex还是CreateThread,不如就一棍子敲定_beginthreadex。&
当然你也许会借助win32来处理内存分配和Io,这时候你确实可以以单线程crt配合CreateThread,因为io的重任已经从crt转交 给了win32。这时通常你应该使用HeapAlloc,HeapFree来处理内存分配,用CreateFile或者GetStdHandle来处理 Io。&
还有一点比较重要的是_beginthreadex传回的虽然是个unsigned
long,其实是个线程Handle(事实上_beginthreadex在内部就是调用了CreateThread),所以你应该用 CloseHandle来结束他。千万不要使用ExitThread()来退出_beginthreadex创建的线程,那样会丧失释放簿记数据的机会, 应该使用_endthreadex.&
传统的CRT不支持多线程,为了能正常使用,_beginthreadex()使用了系统的TlsGetValue函数来获取对应线程的tiddata内存块地址,使tiddata与线程关联互不影响。
如果要作多线程(非MFC)程序,在主线程以外的任何线程内
- 使用malloc(),free(),new
- 调用stdio.h或io.h,包括fopen(),open(),getchar(),write(),printf(),errno
- 使用浮点变量和浮点运算函数
- 调用那些使用静态缓冲区的函数如: asctime(),strtok(),rand()等。
你就应该使用多线程的CRT并配合_beginthreadex(该函数只存在于多线程CRT), 其他情况下你可以使用单线程的CRT并配合CreateThread。
因为对产生的线程而言,_beginthreadex比之CreateThread会为上述操作多做额外的簿记工作,比如帮助strtok()为每个线程准备一份缓冲区。
然而多线程程序极少情况不使用上述那些函数(比如内存分配或者io),所以与其每次都要思考是要使用_beginthreadex还是CreateThread,不如就一棍子敲定_beginthreadex。
当然你也许会借助win32来处理内存分配和Io,这时候你确实可以以单线程crt配合CreateThread,因为io的重任已经从crt转交 给了win32。这时通常你应该使用HeapAlloc,HeapFree来处理内存分配,用CreateFile或者GetStdHandle来处理 Io。
还有一点比较重要的是_beginthreadex传回的虽然是个unsigned long,其实是个线程Handle(事实上_beginthreadex在内部就是调用了CreateThread),所以你应该用 CloseHandle来结束他。千万不要使用ExitThread()来退出_beginthreadex创建的线程,那样会丧失释放簿记数据的机会, 应该使用_endthreadex.
第六部分(选作):数据库开发
<span style="color:#. 基于哈希的索引和基于树的索引有什么区别?
2. User表用于记录用户相关信息, Photo表用于记录用户的照片信息,两个表的定义如下:
CREATE TABLE User( --用户信息表
UserId bigint,& --用户唯一id
Account varchar(30)& --用户唯一帐号
CREATE TABLE Photo(& --照片信息表
PhotoId bigint, --照片唯一id
UserId bigint,& --照片所属用户id
AccessCount int,& --访问次数
Size bigint& --照片文件实际大小
1) 请给出SQL打印帐号为&dragon&的用户访问次数最多的<span style="color:#张照片的
2) 给出SQL打印拥有总的照片文件大小(total_size)最多的前<span style="color:#名用户的id,并根据total_size降序排列
3) 为优化上面两个查询,需要在User和Photo表上建立什么样的索引?
4) 简述索引对数据库性能的影响?
3. 什么是两阶段提交协议?
4. 数据库事务基本概念:
1) 什么是事务的ACID性质?
2) SQL标准中定义的事务隔离级别有哪四个?
3) 数据库中最常用的是哪两种并发控制协议?
4) 列举你所知的数据库管理系统中采用的并发控制协议
5. 数据库中有表User(id, name, age):
表中数据可能会是以下形式:
<span style="color:#
<span style="color:#
<span style="color:#
<span style="color:#
<span style="color:#
<span style="color:#
..............
由于人员年龄有可能相等,请写出SQL语句,用于查询age最大的人员中,
id最小的一个记录
6. 并发访问数据库时常使用连接池,请问使用连接池的好处是什么?对于有多台应用服务器并发访问一台中心数据库的情况,数据库访问往往成为系统瓶颈,请问在应用服务器上设计和使用连接池时该注意哪些问题,以保证系统的可靠性正确性和整体性能.假设每台应用服务器都执行相同的任务并且负载均衡.
第七部分(选作):
<span style="color:#. 以下哪一条Javascript语句会产生运行错误:
A. var obj=( );
B. var obj=[ ];
C. var obj={ };
D. var obj=/ /;
2. 如下页面代码(示例代码DOCTYPE为Strict)
& !DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.0 Transitional//EN&
& html xmlns=&& xml:lang=&zh&lang=&zh&&
& title&测试&/title&
& meta http-equiv=&content-type& content=&text/charset=gbk& /&
& meta http-equiv=&content-style-type& content=&text/cee&/&
& meta http-equiv=&content-script-type&content=&text/javascript& /&
& script type=&text/css&&
*{margin:0; padding:0}
& html{width:100%;height:100%;
&& overflow:overflow-x:
&& text-align:border:0}
& .test{height:200px}
& /script&
& div class=&text&&&&/div&
假设a.jpg图片的规&#26684;是<span style="color:#0pxX100px,请给出当前背景图片距div.a顶部距离的计算方式和结果(css)
3. HTTP协议相关知识
A) 常见的HTTPRequest头字段有哪些?
B) web服务器如何区分访问者是普通浏览用户还是搜索引擎的Spider?
C) cookie按生命周期分类分为哪两类?其生命周期分别是多长?向浏览器设置cookie时cookie有哪些属性可以设置,分别起到什么作用?
D) HTTP协议中Keep-Alive是什么意思?使用Keep-Alive有何好处,对服务器会有什么不利的影响?对于不利的影响有什么解决方案
4. 简述你最常用的Web服务器的一种或者几种,并说明如何在Web服务器和应用服务器之间建立反向代理
5. 简述你所了解的MVC各层次的常用开发框架,说明其特点
6. 简述Web应用环境下远程调用的几种方式,并且从性能异构性等方面比较其优劣
第八部分(选作):
<span style="color:#.flash和js如何交互?
2. flash中的事件处理分哪几个过程 Event对象的target和currentTarget有什么区别?
第九部分(选作):软件测试
<span style="color:#. 请描述你对测试的了解,内容可以涉及测试流程,测试类型,
测试工具等
2. 如果有一天你早上上班,发现不能上网了,你会用什么步骤找出问题所在?
3. Web应用中实现了好友功能,用户可以给别人发&加为好友&的请求,发了请求后可以取消请求,对方收到请求后,
可以选择接受或者拒绝.
互为好友的两个人,
每个人都可以单方面删除对方,请设想尽可能多的路径对此功能设计测试用例,每个用例包括测试步骤和预期结果
4. 公司开发了一个web聊天工具,用于网络用户之间的聊天,一个人同时可以和多个人聊天,功能类&#20284;于MSN等等IM工具
要求该系统能承受<span style="color:#万个在线用户,平均每个用户会和<span style="color:#个人同时聊天,在网络条件正常的情况下,要求用户收到消息的延迟时间不超过<span style="color:#分钟.现在需要对系统进行性能测试,验证系统是否达到预定要求,请你写一个性能测试方案.提示如下:
1) 性能测试的过程一般都是模拟大量客户端操作,同时监控服务器的性能和客户端相应,根据服务器的性能指标和客户端响应状况进行分析和判断
2) 系统的性能问题可以从两个角度考虑,一个是服务器问题,设计得不好的程序,在大负载或者长时间运行情况下,服务器会down机;另一个是客户端问题,
在负载大的时候,
客户端响应会变慢
3) 在答题中,可以不涉及性能测试工具,监控工具等细节,
把你的测试思路说清楚就可以
5. 自动功能测试中会将测试用例组织成测试集合来统一运行,测试集合suite按功能分类可以有若干个模块module,每个模块module下包含若干个测试用例test.现测试集合已经运行完毕,但是需要在测试报告中统计各个模块的用例失败率,将失败率超过<span style="color:#%的模块名与其失败率记录下来报警,请编写实现上述功能的getTestReport函数.可使用Java或C&#43;&#43;等您熟悉的编程语言,提供的接口及方法如下:
测试集合接口Isuite:
Collection&ITest&getTests()& //得到测试集合下的所有测试用例test
测试用例接口Itest:
String getModule()& //得到该用例对应的模块名称module
int getResult()& //得到该用例的执行结果:0失败 1成功
void alertMessage(String message)
public static void getTestReport(ISuite suite){
& //你的实现写在这里
相关文章推荐

我要回帖

更多关于 segmentfault是什么 的文章

 

随机推荐