自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 很好的JAVA线程描述

编写具有多线程能力的程序经常会用到的方法有:      run(), start(), wait(), notify(), notifyAll(), sleep(), yield(), join()      还有一个重要的关键字:synchronized      本文将对以上内容进行讲解。      一:run() 和start()      示例1:

2013-12-27 17:39:08 643

转载 多线程共享实例变量例子

多线程共享实例变量例子在网上查了资料,说类的实例变量是多线程共享的。经过实验为什么不是呢?请看下面的代码 package test;public class ThreadDemo extends Thread{private int i = 0;@Overridepublic void run() {   System.out.println(this +":"

2013-12-27 17:37:07 1258

转载 Runnable接口与Thread类的区别

什么时候让线程实现Runnable接口,什么时候让线程继承Thread类?JDK帮助文档中的原话:Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现(不明白是啥意思)孙鑫老师的原话:当不需要改变一个线程中除了run()方法以外的其他方法时,让线程实现Runnable接口。(明白是什么意思,但不知道有什么用      汗!!!)如果让一个线程实现Runnable

2013-12-27 17:35:35 2122

转载 Java中sleep()与wait()的区别

第一种解释:功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩.      还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.第二种解释:sleep是Thread类的静态方法。s

2013-12-05 17:30:45 675

转载 桥梁模式 ----- bridge

本文转载自:http://www.iteye.com/topic/57178桥梁模式的用意是将问题的抽象和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。比如我们有一个画图程序 有2个图形(Circle Rectangle )和2种画图方法(Drawing1 Drawing2)图形可能会使用Drawing1来画图 也可能使用Drawing2来画图在这个画

2013-06-20 17:31:58 641

转载 Linux下信号处理与多线程程序

看APUE,得到些感性认识,然而不同的实现对于一些函数语意实现并不相同,导致编程时会出现一些混淆。下面记录一些容易混淆的地方。    1 signal函数 BSD/Linux的实现并不在信号处理函数调用时,恢复信号的处理为默认,而是在信号处理时阻塞此信号,直到信号处理函数返回。其

2011-07-19 10:41:52 1788

转载 Socket 的 Send Recv 的长度问题

一个包没有固定长度,以太网限制在46-1500字节,1500就是以太网的MTU,超过这个量,TCP会为IP数据报设置偏移量进行分片传输,现在一般可允许应用层设置8k(NTFS系统)的缓冲区,8k的数据由底层分片,而应用层看来只是一次发送。         windows的缓冲区经

2011-07-12 22:35:44 776

转载 IO模式设置网络编程常见问题总结

非阻塞IO 和阻塞IO:        在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明:       基本概念:               阻塞IO::                      socket

2011-07-12 22:23:33 602

转载 Linux 内核堆栈

<br />所有进程(包括内核进程和普通进程)都有一个内核栈,在x86的32位机器上内核栈大小可以为4KB或8KB,这个可以在编译内核的时候配置。内核栈的用途有两个:1)当进程陷入内核态,即内核代表进程执行系统调用时,系统调用的参数就放在内核栈上,内核栈记录着进程的在内核中的调用链;2)在内核栈被配置成8KB大小的情况下,当中断服务程序中断当前进程时,它将使用当前被中断进程的内核栈。<br />对于用户进程,其既有用户地址空间中的栈,也有它自己的内核栈。而内核进程就只有内核栈。<br /> <b

2011-04-05 22:02:00 4588

原创 Vs2005 下安装QT4.6

<br />1.设置VS2005的环境变量<br />   QTDIR=e:/qt4.6<br /> <br />2.进入visual studio tool 启动visual studio 2005命令提示符<br />   set QMAKESPEC=win32-msvc2005<br /> <br />3.进入QTDIR,执行configure -platform win32-msvc2005 -debug -webkit  -no-qt3support -nomake examples -nomak

2011-04-05 21:33:00 865

转载 select 和 epoll

<br />最近有朋友在面试的时候被问了select 和epoll效率差的原因,和一般人一样,大部分都会回答select是轮询、epoll是触发式的,所以效率高。这个答案听上去很完美,大致也说出了二者的主要区别。<br />今天闲来无事,翻看了下内核代码,结合内核代码和大家分享下我的观点。一、连接数<br />我本人也曾经在项目中用过select和epoll,对于select,感触最深的是linux下select最大数目限制(windows 下似乎没有限制),每个进程的select最多能处理FD_S

2011-04-03 15:35:00 637

转载 ARM Linux 启动过程分析

<br /><br />一个嵌入式 Linux 系统从软件角度看可以分为四个部分[1]:引导加载程序(bootloader),Linux 内核,文件系统,应用程序。<br />其中 bootloader是系统启动或复位以后执行的第一段代码,它主要用来初始化处理器及外设,然后调用 Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统(Root Filesystem)。根文件系统是 Linux 系统的核心组成部分,它可以做为Linux 系统中文件和数据的存储区域,通常它还包

2011-04-03 15:24:00 680

转载 sed用法

<br /> 1. Sed简介  <br /> sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。  <br /> 2. 定址  <br

2010-10-08 14:42:00 1263

原创 awk用法

<br />awk用法<br /><br />通用格式:awk 'pattern {action}'  file<br /><br />                cmd | awk 'pattern {action}'<br /><br />如果没有pattern,则对所有行都采用action,如果没有action,则打印匹配行。在pattern中可以使用各种定义的变量$0,,NF,NR等.<br /><br />工作原理:awk 扫描一行,放入变量$0中,然后行被分隔成各个域,以指定

2010-10-08 11:25:00 1869

转载 Linux中的EAGAIN错误码

<br />在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。<br />    从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。此时程序不会阻塞起来等待数据准备就绪返回,read函数会返回一个错误EAGAIN,提示你的应用程序现在没有

2010-10-08 08:39:00 4222

转载 ACE接受器-连接器模式

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />接受器-连接器设计模式(Acceptor-Connector)使分布式系统中的连接建立及服务初始化与一旦服务初始化后所执行的处理去耦合。 <br />这样的去耦合通过三种组件来完成:acceptor、connector 和 servicehandler(服务处理器)。 连接器主动地建立到远地接受器组件的连接,并初始化服务处理

2010-10-03 14:42:00 668

转载 ACE主动对象模式(2)

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />在上篇文章里,我们简单的介绍了一下ACE主动对象实现方式,同时提出了两个问题:方法调用线程如何知道该方法已经执行完成? 如何或得方法的返回值?<br />要解决这两个问题,首先得介绍一下ACE_Future对象,ACE_Future是表示一个会在将来被赋值的"期货"对象,可以通过ready()函数查询它是否已经被赋值。该对象创建

2010-10-01 13:05:00 617

转载 ACE主动对象模式(1)

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />主动对象模式用于降低方法执行和方法调用之间的耦合。该模式描述了另外一种更为透明的任务间通信方法。 <br />传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的,当方法被调用时,调用线程将阻塞,直至调用结束。而主动对象却不一样。这些对象具有自己的命令执行线程,主动对象的方法将在自己的执行线程中执行,不会阻塞调用方

2010-10-01 12:44:00 934

转载 关于登录linux时,/etc/profile、~/.bash_profile等几个文件的执行过程

<br />在登录Linux时要执行文件的过程如下:<br />在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会

2010-09-23 17:53:00 1114

转载 简单工厂 工厂方法 和抽象工厂区别

<br />简单工厂(Simple Factory Pattern)<br /><br />简单工厂模式,把对象(统一接口)的创建封装起来,而不去用了解对象所代表的真正的实现类及其初始化过程。我们只需要把参数传递给简单工厂,工厂就会根据你的需要返回相应的产品对象。示例代码如下:<br /> <br /> Iproduct.java public interface IProduct { void work(); }

2010-09-12 20:58:00 730

原创 ACE进程管理

<br />ACE把所有用于进程创建和控制的API都隐藏在ACE_Process包装类中.这个类允许程序员派生新的进程,继而等待新进程的终止.你通常会为每一个新进程使用一个ACE_Process类的对象,并且可以为新的子进程设置若干选项:<br />1、设置标准IO句柄;<br />2、指定两个进程间的句柄继承的工作方式;<br />3、设置子进程的环境块和命令行;<br />4、在Windows上指定各种安全属性,或在Unix上设置uid/gid/euid;<br />Unix程序

2010-09-05 22:22:00 4791

转载 ACE线程管理机制-并发控制(3)

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />ACE Condition类属<br />ACE Condition类属(条件变量)提供风格与互斥体、读者/作者锁和计数信号量不同的锁定机制。当持有锁的线程在临界区执行代码时,这三种机制让协作线程进行等待。相反,条件变量通常被一个线程用于使自己等待,直到一个涉及共享数据的条件表达式到达特定的状态。当另外的协作线程指示共享数据的状态已发生变化

2010-09-05 14:29:00 614

转载 U-BOOT下使用bootm引导内核方法

<br />注:<br />  u-boot使用的是打上:<br />http://www.hhcn.com/cgi-bin/topic.cgi?forum=3&topic=651&show=0<br />上keety大侠提供的补丁生成的u-boot-1.1.3<br /><br />这段时间不断有人问我u-boot启动内核的问题,记得在上次提供的u-boot源码中提到了go的方案,不过其实u-boot本来有一种更好的方案:bootm<br />花了不少时间,查看了论坛上不少的帖

2010-08-31 12:08:00 506

转载 arm指令中mov和ldr有什么区别

ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。<br />比如想把数据从内存中某处读取到寄存器中,只能使用ldr<br />比如:<br />ldr r0, 0x12345678<br />就是把0x12345678这个地址中的值存放到r0中。<br />而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。<br />x86中没有ldr这种指令,因为

2010-08-29 19:24:00 624

转载 伪指令LDR和ADR的分析

<br />在ARM汇编程序中,就经常使用到LDR和ADR这两条伪指令,现在对这两条伪指令进行分析,欢迎大家指正。<br /> 在资料中,ADR的定义为:小范围的地址读取伪指令,ADR指令将基于PC相对偏移的地址值读取到寄存器中,在编译源程序时ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,刚产生错误。<br />在如上的定义中,有两个关键信息:⑴将基于PC相对偏移的地址值读取到寄存器中;⑵被编译器替换成一条合适的指令。

2010-08-29 19:22:00 4562 1

原创 C++ 虚拟构造函数

<br />C++标准中构造函数不支持多态,也就是说,C++的构造函数不能是虚拟的,在构造函数中调用虚函数、<br />也会被当做普通函数去静态链接。<br /><br />有些设计方案需要“后构造”,即必须在构造了完整的对象后立即调用对象的虚拟函数,可以使用以下几种后构造技术的实现<br /><br />1.推卸责任:在文档中说明用户代码必须在构造了对象之后立即调用后初始化(post initialization)函数。<br />2.迟缓后初始化:在第一次成员函数调用时进行后初始化。基类

2010-08-28 12:11:00 1853 1

原创 用ACE实现的生产者和消费者模式

<br />#include "ace/Log_Msg.h"#include "ace/Task.h"#include "ace/OS.h"#include "ace/Message_Block.h"#include <stdio.h>#include <string.h>typedef struct User_{ int len; char buffer[20]; int count;} User;//The Consumer Task.clas

2010-08-25 18:10:00 1446

原创 ACE_Manual_Event与ACE_Auto_Event区别

<br />#include "ace/Task.h"#include <ace/Manual_Event.h>#include <ace/Auto_Event.h>#include "ace/OS.h"#include <ace/Date_Time.h>#include <iostream>using namespace std;/*** if MANUAL reset* sleep till the event becomes signaled* ev

2010-08-25 16:23:00 2091

转载 WebKit结构和流程分析

<br />1.体系结构<br />WebKit上层组织应用 <br />WebCore <br />¨Page与外框相关的内容(Frame,Page,History,Focus,Window) <br />¨Loader加载资源及Cache <br />¨HTML-DOM HTML内容及解析 <br />¨DOM- DOM CORE内容 <br />¨XML- XML内容及解析 <br />¨Render-排版功能 <br />¨CSS-DOM CSS内容 <br />¨Binding-DOM与Javas

2010-08-23 18:14:00 988

转载 windows上安装Apache虚拟目录设置方法

<br />在Apache的配置文件httpd.conf,搜索Alias /manual "红色字体部分,能看到类似下面的一段代码:(因为每个人的安装目录不同,下面的蓝色字体部分可能不太一样,但是其他部分都是一样的)<br /><br />Alias /manual "D:/Apache Group/Apache2/manual"<br /><br /><Directory "D:/Apache Group/Apache2/manual"><br />      Options Ind

2010-08-22 11:35:00 3771

转载 ACE线程管理机制-并发控制(2)

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />ACE Guard类属<br />与C一级的互斥体API相比较,Mutex包装为同步多线程控制提供了一种优雅的接口。但是,Mutex潜在地容易出错,因为程序员有可能忘记调用release方法(当然,C级的互斥体API更容易出错)。这可能由于程序员的疏忽或是C++异常的发生而发生,然而,其导致及其严重的后果--死锁。 <br />因此,为

2010-08-19 22:52:00 539

转载 ACE线程管理机制-并发控制(1)

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />ACE Lock类属 <br />锁类属包含的类包装简单的锁定机制,比如互斥体、信号量、读/写互斥体和令牌等。这里我就以互斥体为例简单的介绍一下其使用方法,对其它的锁类进行一些简单的说明。 <br /> <br />1.互斥体的使用。 <br />互斥体用于保护共享的易变代码,也就是全局或静态数据。这样的数据必须通过互斥体进行保护,以防

2010-08-19 22:47:00 452

转载 ACE线程管理机制-线程的创建与管理

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />有过在不同的操作系统下用c++进行过多线程编程的朋友对那些线程处理的API可能深有体会,这些API提供了相同或是相似的功能,但是它们的API的差别却极为悬殊,十分令人头痛。 <br />ACE_Thread提供了对不同OS的线程调用的简单包装,通过一个通用的接口进行处理线程创建、挂起、取消和删除等问题。 <br />一. 线程入口函数<br

2010-08-17 21:31:00 445

转载 如何判断链表是否有环

<br />使用两个指针,一快一慢向前试探,如果最终重合则链表有环<br /> <br />#include <stdio.h>typedef struct list { int data; struct list *next;} LIST;int check_circle_2(LIST *head) { LIST *p, *q; p = head; if (p == NULL) return 0; q = p->next; while (p != NULL

2010-08-16 18:04:00 420

原创 Linux下生产者消费者 实现

<br />底层用链表实现的生产者和消费者队列,能够同时支持多个读写线程。<br /> <br />#include <pthread.h>#include <stdio.h>#include <string.h>#include <unistd.h>#define MAXLINE (32)struct user_data{ unsigned int n_size; char line[MAXLINE];}; struct task{ str

2010-08-16 15:52:00 821

转载 linux epoll 模型详解

在linux的网络编程中,很长的时间都在使用select来做事件触发

2010-08-14 17:37:00 9955 3

转载 ACE_Message_Block功能简介

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />ACE_Message_Block在Ace中用来表示消息的存放空间,可用做网络通信中的消息缓冲区,使用非常频繁,下面将在如下方简单的介绍一下ACE_Message_Block相关功能。 创建消息块 释放消息块 从消息块中读写数据 数据的拷贝 其它常用函数 <br />1。创建消息块 <br />创建消息块的方式比较灵

2010-08-14 12:10:00 561

转载 HTTP请求(GET与POST区别)和响应

<br />HTTP有两部分组成:请求与响应,下面分别整理。<br />一.HTTP请求<br />1.HTTP请求格式:<br /><br /><request line><br /><br /><headers><br /><br /><blank line><br /><br />[<request-body>]<br /><br />在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接

2010-08-13 21:54:00 1483

转载 HTTP返回码总结

<br />HTTP协议状态码表示的意思主要分为五类,大体是:  <br /> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  <br /> 1××  保留  <br /> 2××  表示请求成功地接收  <br /> 3××  为完成请求客户需进一步细化请求  <br /> 4××  客户错误  <br /> 5××  服务器错误  <br /> <br /> <br />100 Continue<br />指示客户端应该继续请求。回送用于通知客户端此次请求已经

2010-08-13 20:17:00 50853 3

转载 ACE中UDP通信

<br />本贴转自http://www.cnblogs.com/TianFang/category/78013.html  作者:天方<br /> <br />udp是一种无连接的协议,提供无连接不可靠的服务。<br />在ace中,通过ACE_SOCK_Dgram类提供udp通信服务,ACE_SOCK_Dgram和ACE_SOCK_Stream的API非常类似,一样提供了send,recv及close等常用操作,这里就不再累述了。<br />udp通信时无需像tcp那样建立连接和关闭连接

2010-08-12 22:13:00 697

空空如也

空空如也

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

TA关注的人

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