自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Working...

唯有追求卓越,成功便会不期而至!

  • 博客(47)
  • 收藏
  • 关注

原创 浅谈线程池

1、为什么要使用线程池?        在传统服务器结构中,有一个总的监听线程监听有没有新的用户连接服务器,当每有一个新的用户进入时,服务器就会开启一个新的线程用于处理这个用户的数据包。这个线程只服务于这个用户,当用户与服务器关闭连接以后,服务器就会销毁这个线程。然而频繁的开辟与销毁线程极大的占用了系统的资源。如果有大量的用户请求的情况下,系统为了开辟和销毁线程就会浪费大量的时间和资源。既然有

2013-11-28 14:51:13 1008

原创 汇编实现键盘钢琴

基于上一篇文章,汇编实现背景音乐的播放的理论知识,然后改编了一个小小的键盘钢琴的实现。如果对于实现的原理不太明白,就去看上一篇博客。下面是实现的程序:;汇编实现键盘钢琴data segment DIDAS EQU 1 ;延时(时钟嘀嗒次数) frequency dw 441,495,556,589,661,

2013-11-27 19:54:58 4811

转载 使用16位汇编显示bmp位图

寻找了各种办法终于实现了显示256色的位图,但是防止数据段超过64k最终还是没有使用。还是写下来留作纪念吧。   首先我们需要了解清楚bmp文件的结构,下面是关于bmp(位图)结构体的介绍:1. BMP文件组成BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。2. BMP文件头(14字节)BMP文件头数据结构含有BMP文件的类型、文件大小

2013-11-25 16:35:33 2939 1

原创 博客搬到新家了!CSDN

由于种种原因,将原来的博客搬来至CSDN了,新的博客之家,新的开始,加油!http://blog.sina.com.cn/u/2657346022(原博客地址)

2013-11-25 16:25:50 1045

原创 mmap()函数

mmap()函数将一个文件或者其它对象映射尽内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。注:实际上,mmap()系统调用并不是完全为了共享内存而设计

2013-11-25 14:25:00 2988

原创 智力题(拆分)

由于下午学习时感到有点累了,就随便进几个学姐和学长的博客转转,结构发现了一个还挺巧妙的智力题,于是就打算自己记录下来。题目:你有一条金条,你雇佣一个员工干7天的活,这个金条你只能切2刀,但是你每天都要发给员工一份。发7天,问应该怎样切?其实自己开始想了一下,但是没有克制住自己,就把答案看了~~(这种习惯真不好,知道有答案就不好好思考),所以大家可以想一下,看看自己有没有想对,千万不要像

2013-11-25 14:24:58 917

原创 中断和异常

操作系统需要对计算机系统中的各种外设进行管理,这就需要CPU和外设能够相互通信才行。一般外设的速度慢于CPU的速度。如果让操作系统通过CPU“主动关心”外设的事情,集采取通常的轮询机制(polling),则太浪费CPU资源了。所以需要CPU和操作系统一起提供某种机制,让外设在需要操作系统处理外设相关事件的时候,就能主动通知操作系统,即打断操作系统和应用程序执行,让操作系统完成外设的相关处理,然后再

2013-11-25 14:24:55 1084

原创 分段机制

为什么要了解intel80386的保护模式和分段机制?我们知道intel80386只有进入保护模式,才能发挥其强大的功能,提供更好的保护机制和更大的寻址空间,否则仅仅是一个快速的8086。没有一定的保护机制,任何一个用户程序都可以访问所有计算机的资源,对于8086实模式确实是如此,但是当我们已经跨越到了80386来,分段机制就一直存在,为操作系统提供了保护(当然还有分页机制,我们到后面再去谈)并

2013-11-25 14:24:53 1879

原创 Intel:80386运行模式

80386有四种运行模式:实模式、保护模式、SMM模式和虚拟8086模式。以下主要是对实模式和保护模式做一个简单介绍。实模式:80386加电启动后出于实模式运行状态,在这种状态下软件可访问的内存空间不足1MB,并且不能发挥80386以上级别的32位CPU的4GB内存寻址能力。实模式将整个内存看成分段的区域,程序的代码和数据位于不同的区域,系统对操作系统程序和用户程序是相同看待的,不做区分,并

2013-11-25 14:24:51 2455

原创 Grub Multiboot规范

因为自己最近在尝试着写一个简单的小型操作系统(跟着JamesM’skernel学习),所以没有自己写引导程序,而是用的grub作为引导来加载OS,所以在写程序的时候就要求代码符合Multiboot规范,然后就看了一下文档,感觉内容挺多的,就决定自己将规范简化一下(提前声明,这篇博客中只是介绍了我自己编程中用到的一些知识,可能不全面,如果大家还想看更多详细的,下面是网址:http://www.cn

2013-11-25 14:24:49 3004

原创 重新回来

已经好久没有写博客了,但是再三天后我回重新回来,加油小懒!~~~~记住心中的那个蓝图。

2013-11-25 14:24:47 709

转载 网络编程——互联网协议知识(二)

对于上一篇互联网协议入门(一),主要描述的是从网络分层模型的最下端往上进行分析的,所以互联网入门(二)就是主要站在用户的角度来看待一个简单的网络传输过程。用户上网的配置(1)静态IP当我们拿到一台新的电脑时,往往就会急急忙忙的拿出来赶紧上网,但是这是的电脑是不能上网的。因为在此之前,通常必须做进行网络的配置,这里有四个重要的参数,你要把这些参数进行配置后才可以用计算机连上网:*本机

2013-11-25 14:24:45 995

转载 网络编程——互联网协议知识(一)

现在我们每天都在使用电脑上网,但是对于之前的我,从来都没有想过,这些是如何实现的?所以导致现在的自己仍然想一个网络白痴,所以要来是学习了。。。当我们和远在全国各地的朋友通过网络两两通信,我在西安的一块网卡发出信号,在北京的另一块网卡居然可以收到,但是两个实际根本就不知道对方的物理地址,这真是一件非常神奇的事情。     互联网的核心就是一系列的协议,总称为“互联网协议”。TCP/IP协议是

2013-11-25 14:24:43 1119

原创 线程和fork()

在多线程程序里,在”自身以外的线程存在的状态”下一使用fork的话,就可能引起各种各样的问题.比较典型的例子就是,fork出来的子进程可能会死锁.请不要,在不能把握问题的原委的情况下就在多线程程序里fork子进程.能引起什么问题呢?分为两个方面来进行讲述:(1)在子进程中调用fork函数(此处不涉及锁);在主线程中调用fork()在不涉及锁的情况下,在线程中调用fork一般不会出现

2013-11-25 14:24:41 1177

原创 线程的同步

线程最大的特点就是资源的共享性,然而资源共享中的同步问题是多线程编程的难点。linux提供了多种方式处理线程间的同步问题,其中最常见就有互斥锁、条件变量和异步信号。互斥锁(1)互斥锁通过锁机制来实现线程间的同步。在同一时刻通常只允许一个线程执行一个关键部分代码。pthread_mutex_init——初始化一个互斥锁pthread_mutex_destroy——注销一个互斥锁pthrea

2013-11-25 14:24:38 604

原创 线程属性

1.线程属性:使用pthread_attr_t类型表示,我们需要对此结构体进行初始化,初始化后使用,使用后还要进行去除初始化!pthread_attr_init:初始化pthread_attr_destory:去除初始化int pthread_attr_init(pthread_attr_t*attr);int pthread_attr_destroy(pthread_attr_

2013-11-25 14:24:36 722

原创 迭代器简介

除了使用下标来访问vector对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器。迭代器是一种检查容器内元素并遍历元素的数据类型。标准库为每一种标准容器定义了一种迭代器类型。迭代器类型提供了比下标操作更通用的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的迭代器支持下标操作。因为迭代器对所有的容器都适用,现在的C++更倾向于使用迭代器而不是下标操作访问容器中的元素,即使支持

2013-11-25 14:24:34 722

原创 标准库—vector

vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string类一样,标准库将负责管理与存储元素相关的内存。我们把vector成为容器。一个容器中的所有对象都必须是同一种类型,在使用vector前,必须包含相应的头文件,#include。vector是一个类模板,使用模板可以编写一个类的定义或者函数定义,而且用于多个不同类型的数据类型。     声明从类模板产生的某

2013-11-25 14:24:32 791

原创 Qt中QString的类型转换

(1)int 转QStringint a = 10;QString b;b = QString::number(a);QString转intQString a = "120";int b;b = a.tolnt();(2)char * 转化为QStringchar *p = "abc";QString str;str = QString(QLatin1String(p))

2013-11-25 14:24:30 1502

原创 并发和并行的概念

(1)并发:是指两个或者多个事件在同一时刻发生,并且并发是指两个或者多个事件在同一时间间隔发生的(即在同一时刻交替执行)。在多道程序环境下,并发行是指一段时间内宏观上有多个程序在同时运行,但是在单处理机系统中,每一时刻仅能有一道程序执行,故在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替执行,从宏观上来看好像是同时执行的。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可

2013-11-25 14:24:28 2037

原创 线程(二)

一、线程终止linux下有两种方式可以使线程终止。第一种通过return从线程函数返回,第二种是通过调用函数pthread_exit()使线程退出。#includevoidpthread_exit(void *retavl);有两种特殊情况要注意:一种情况是,在主线程中,如果从main函数返回或者是调用exit函数退出主线程,则整个进程将终止,此时进程中的所有线程也将终止,因此在主线

2013-11-25 14:24:25 622

原创 线程(一)

线程包含了表示进程执行环境必须的信息,其中包括进程中标识线程的线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、erron变量以及线程的私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本、程序的全局内存和堆内存、栈以及文件描述符。线程接口来自POSIX.1-2001。POSIX线程的特征测试宏是_POSIX_THREADS,应用程序可以把这个宏用#ifdef测

2013-11-25 14:24:23 707

原创 Qt中的QLineEdit、QTextEdit和QPla…

(1)QLineEdit是单行文本输入,一般用于用户名、密码等少量文件交互的地方。(2)QTextEit用于多行文本,也可以显示HTML格式文本。(3)QPlainTextEdit和QTextEdit很像,但是它多用于需要文本进行处理的地方,而QTextEdit多用于显示。取得QLineEdit中的值:QLineEdit *line = newQLineEdit;

2013-11-25 14:24:21 3910

原创 linux中段错误产生的原因和调试方…

简单的说,产生段错误就是访问了错误的内存段,一般就是没有权限,或者根本就不存在对应的物理内存,尤其常见的就是访问0地址。一般来说,段错误就是指访问的内存超过了系统所给这个程序的内存空间,通常这个值是由gdbr来保存的,也是一个48位的器存器,其中的32位是保存由它指向的gdt表,后13位包括了程序是否在内存中以及程序在cpu中的运行级别,指向的gdt是由以64位为一个单元的表,在这张表中就保

2013-11-25 14:24:19 981

原创 编译原理三大圣书——龙书、虎书、鲸…

昨天在看一位大神的博客时,博客中提到了三本书——龙书、虎书、鲸书。因为自己知识浅薄,所以在此之前还没有听说过这三本书。但是还在想这博客的内容是关于编译和链接的,干嘛要说起这三本和动物有关的书,结果随后在网上查了才知道,这三本书居然是编译原理的三本圣书。今天就决定将这三本书的简单写进博客中,来让我这个井底之蛙扩展一下知识面(1)龙书原名:Compilers: Principles,Techn

2013-11-25 14:24:17 14031 3

原创 ssh远程文件传输命令

最近几天让几个大牛吊到了,居然连ssh远程文件传输命令都不知道,居然还敢说自己在学linux,太丢人了!所以今天在一个学姐的博客中刚好看到了,然后就像写到自己的博客中。。。       假设有两台电脑,均为局域网,两机就可以用ssh相互通信了(scp只是一个跨机拷贝),中间无防火墙,并且user和other两个用户的SSH都允许root登录。user的IP:192.168.100.101

2013-11-25 14:24:15 1414

原创 缓冲区溢出和栈溢出

一.缓冲区溢出 (1)缓冲区溢出是指计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法的数据上,理想的情况是程序检查数据长度并不允许输入的数据超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的存储空间相匹配,这就为缓冲区溢出埋下隐患。操作系统所使用的缓冲区又被称为“堆栈”,在各个操作进程之间,指令会被临时存储在“堆栈”当中,“堆栈”也会出现缓冲区溢出。

2013-11-25 14:24:13 5310

原创 进程和线程

因为这几天做一个小东西,其中牵扯到了进程和线程的一些东西,然后也发现自己对于进程和线程的理解不是很到位,于是就写点东西记录下来。一.线程线程:应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量的时间来等待事件的发生。其他线程可能进入休眠状态,并且仅定期被唤醒以轮换更改或更新状态信息,然后再次进入休眠状态。为了简化对线程的管理,.NET框架为每一个进程提供一个线程池,一个线程池有若干个等

2013-11-25 14:24:11 690

原创 模态和非模态

今天学习Qt中遇到了两个新名词——模态和非模态,自己也不太了解,于是就上网简单的查到一些解释,感觉挺通俗易懂的,于是就记录下来:      模态对话框,就是指当这个对话框弹出来的时候,焦点集中于该子对话框,子对话框不关闭,用户就无法操作其它窗口,也就是鼠标不能单击这个对话框之外的区域。例如:windows的选择字体颜色对话框,必须先关闭对话框才能进行其他操作。       非模态对

2013-11-25 14:24:08 2647

原创 QWidget、QMainWindow、QDialog和Q…

1.看了Qt后感觉对着三个类都有点混淆了,于是今天就抽时间简单记录一下着三个类之间的区别继承关系:在Qt中所有的类都有一个共同的基类QObject,QWidget直接继承与QPaintDevice类,QDialog、QMainWindow、QFrame直接继承QWidget类。2,说明:QWidget类是所有用户界面对象的基类。窗口部件(QWidget)是用户界面的一个基本单元:它从

2013-11-25 14:24:06 2025

原创 强符号与弱符号

我们经常的编程中碰到一种情况叫符号重复定义。多个目标文件中含有相同名字全局符号的定义,那么这些目标文件链接的时候会出现符号重复定义的错误。      这种符号的定义可以被成为强符号。有些符号的定义可以被成为弱符号。对于C/C++语言来说,编译器默认函数和初始化了的全局变量为强符号,未被初始化的全局变量为弱符号。我们也可以通过gcc编译器的”_attribute_((weak))“,来定

2013-11-25 14:24:04 1536

原创 Qt的资源机制法

图形用户界面(GUI)应用程序通常会使用很多图片,为应用程序提供图片的方法有很多,如下是一些最常用的方法:(1)把图片保存在文件中,并且在运行的时候载入它们。(2)把XPM文件保存在源代码中。(这一方法之所以可行,是因为XPM文件也是有效的C++文件)(3)使用Qt的资源机制  这里主要介绍Qt的资源机制法,是因为它比运行时载入文件的方法更方便,并且该方法适用于所支持的任意文件格式。

2013-11-25 14:24:02 1019

原创 Qt解决中文乱码问题

今天在给一个窗口添加中文标题时,出现了一个问题,就是中文显示出来是乱码。于是就在网上查询,发现Qt终于专门的一个类来处理编码问题(QTextCodec),在Qt3中,QApplication可以设置程序的默认编码,但是在Qt4中就没有该成员函数了。注意:Qt默认的编码(unicode)是不能显示中文的,可能由于windows的默认编码的问题,windows默认使用(GBK/GB2312/G

2013-11-25 14:24:00 885

原创 第一个Qt程序——hello Qt

不知道什么时候开始有这样一个想法——学习Qt,于是就默默的在几天前开始学习了。.其实自己的想法也就是想在做好应用程序时,也可以来做一个漂亮的界面出来,这也许就是小女生爱美的想法Qt" TITLE="第一个Qt程序鈥斺攈ello Qt" />。那为什么会选择Qt?Qt是一个用C++编写的跨平台开发框架。就冲着两点我选择了Qt——用C++编写,跨平台。我想这个理由应该够了吧!那么现在就开始吧。。。

2013-11-25 14:23:58 963

原创 ubuntu12.04建立apache+php+mysql+…

整理出自己的安装过程,和遇到的问题。(安装是参考了网站上的博客)声明一下,下面的安装过程不必按照博客所列的顺序,博主表明序号是为了文章明了!1.安装Apach        sudo apt-get installapache22.安装Mysql       sudo apt-get install mysql-server3.安装PHP       sudo apt-g

2013-11-25 14:23:56 763

原创 Mysql中定义外键约束出现的问题

这段时间在学习Mysql,昨天在建立一个表的外键约束时出现了一个问题,自己还检查了好久才发现错误(因为是菜鸟啦!),所以今天就想把这个错误记录下来!    下面是我建立表的SQL语句:create table course(Cno char(2) not null,Cname varchar(20),Cpno char(2),Credit smallint,primary key

2013-11-25 14:23:54 4089

原创 Mysql中MyISMA和InnoDB的区别

在该开始学习mysql建立表时,发现了mysql中的的MyISAM和InnoDB两种表类型,于是在网上查找了各种解释,进行了一下总结。 MyISAM和InnoDB是在使用Mysql时最常用的两个表类型,这两个表各有优势,视具体应用而定。基本的差别为:MySIAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是表的性能,其执行速度比InnoDB类型要快,但是不提

2013-11-25 14:23:50 3427

原创 ubuntu12.04下mysql的安装和卸载

菜鸟学习mysql的路程开始了,我就从安装mysql开始吧!一.mysql的安装(输入几条简单的命令就搞定了)     sudoapt-get install mysql-server     sudoapt-get install mysql-client     sudoapt-get install php5-mysql(将php和mysql连接起来)安装完成后,Mys

2013-11-25 14:23:45 631

原创 Java和C++中的重载,覆盖,隐藏

在这首先介绍一下C++中的重载,覆盖和隐藏,再来说说Java的这些规则和C++的区别。1.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。2.覆盖是指派生函数覆盖基类函数(1)不同的范围(分别位于派生类和基类);(2)函数名相同;(3)参数相同;(4)基类函数必须有virtual关键字。3.这里“

2013-11-25 14:23:43 879

原创 Java中类,变量,方法,接口的修饰…

1.类的修饰符(1)定义类的顺序:访问修饰符 修饰符 class 类名 extends 父类名称 implements接口名。(在这访问修饰符和修饰符可以调换位置)(2)类的访问修饰符:public说明:可以被所有的类访问和使用,并且public类必须定义在与该类名相同的文件中。package说明:可以被同一个包中的类使用,默认的访问权限可以省略该关键字,可以定义在和publ

2013-11-25 14:23:41 3025

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除