自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

my_business的专栏

平凡的IT人,平淡的IT生活,希望这里的点滴,能成为其中不多的亮点

  • 博客(86)
  • 资源 (2)
  • 收藏
  • 关注

原创 【VxWorks系列】任务间同步与通信之事件

从VxWorks 5.5开始,提供了新的任务间同步通信的机制----事件,事件可用于任务和中断服务程序ISR之间、任务和任务之间、任务和VxWorks资源之间进行通信。 任务用函数eventReceive()来接收它关心的事件,用eventSend()来向另一个任务发送事件。先来看第一个例子:void eventRoute1(void* param){ int task_i

2013-07-17 10:27:02 7462 1

原创 【C++模版之旅】项目中一次活用C++模板(traits)的经历

以前曾在一个项目中碰到过一个挺简单的问题,但一时又不能用普通常规的方法去很好的解决,最后通过C++模板的活用,通过traits相对比较巧妙的解决了这个问题。本文主要想重现问题发生,若干解决方案的比较,以及最后如何去解决的过程,也许最终的方案也并不是最好的方案,但至少个人觉得从发现到思考到解决到改善,这是一个对帮助个人成长很不错的过程,所以凭记忆想把它记录下来,分享给大家。先描述下问题,

2012-10-22 13:58:26 4393 7

原创 【windows8开发】深入浅出C++/CX

什么是C++ /CX? 首先要明白它跟C++ 0x/11以及C++ /CLR是完全不同的东西。C++ 0x/11是目前最新的C++标准库,而C++ /CX其实是微软在Win8开发平台下,对C++语言的一种扩展。C++ /CLR是微软为了C++能在.Net下运行,针对CLR,虽然也是对C++的扩展,但它编译后是托管于CLR的,属于Managed C++。而C++ /CX则属于Native C++,它

2012-04-25 11:51:42 18014 19

原创 一个苏州IT人的5年挨踢经历-------经历篇(之一)

第二章感悟----回顾走过的路      感想性的文字相对比叙述性的要难写很多,尤其是对我们这种搞技术的,煽情不是我们的特长,所以内容的表述肯定不会精彩,但是我会尽量确保真实,当然如果涉及到个人信息的,也会有所保留。首先我会说明下自己近十年间走过的路,自己的成长,挫折,机遇和挑战,然后我会分享一些平时积累的感悟,这个中间如果大家有什么希望讨论的,可以提出来,如果我有想法的,我会把观点加到文

2012-04-07 20:44:37 4224 1

原创 【设计模式攻略】结构型模式之Bridge模式

概要先考虑下在通信,电子等很多领域都常用的桥接概念,它的作用是什么?第一,它可以连接两个区域,第二,它可以隔离两个区域,简单来说也就是连接与分离的作用。而这里的 Bridge模式也是类似,它可以分离系统的不同层次,使不同层次的实现可以相互独立的变化,同时它又为不同层次间建立起了连接进行交互。目的对 Bridge模式,比较教条或比较官方的定义是,可以分离抽象与实现,并使它们可以相

2012-04-05 09:14:03 1833

原创 javascript引擎PK:V8 vs Spidermonkey

一个月前心血来潮瞎折腾了下Nodejs,用ab和JMeter进行简单地压力测试后,不得不佩服它的速度与性能(备注:测试比较了几个框架后得出的结果)。Nodejs是什么,一个基于chrome的javascript V8引擎的platform,特点是事件驱动,异步非阻塞IO模型,轻量。本文不是给Nodejs做广告的,它只是一个引子,关于Nodejs的具体信息大家自己google吧,这里就不多作说明了。

2012-03-23 12:32:56 6802 2

原创 服务器模型分析与验证

CSDN的第一篇技术博客就从这里开始吧。    对于常见的几种服务器模型,有过服务器端开发经验或研究了解过这个领域的可能都清楚。类似介绍这些模型,分析各自特点优劣的文章不胜枚举,本来在这个方向班门弄斧的挥上一笔似乎已经没有太大价值。但是,正由于以前都是看其他牛人的分析结果,虽然都基本认同,但却没有自己去验证过。前段心血来潮,就略花了点时间,自己写代码简单的实现了下几种服务器模型,然后自己写了些

2012-03-06 15:28:05 3092 2

原创 老生常谈,正确使用memset

前段项目中发现一个问题,程序总是在某个dynamic_cast进行动态转换时出异常,查了半天才发现问题原来是出在memset的使用上,虽然问题本身显而易见,但当处于几十万行代码量级中时,就变得不太那么容易定位了。本文归纳了下使用memset几个需要注意的地方,虽然内容很简单,但也希望对大家有所帮助。1. memset是以字节为单位,初始化内存块。当初始化一个字节单位的数组时,可

2014-10-28 11:21:00 112942 14

原创 【设计模式攻略】创建型模式之Abstract Factory模式

概要Abstract factory模式其实就是普通factory模式的一种进化,它比较侧重于对一个系列中相关多个对象的创建工作。何谓一个系列?其实就是某种客观条件下满足特定需求的一组对象集合。当面对多个系列时,需要实现每个系列的实例化的Factory,这时使用一般的Factory模式往往让过程变得复杂,而Abstract factory模式则可以解决这类问题。目的Abst

2014-02-24 14:05:16 2701

原创 【设计模式攻略】创建型模式之Factory method模式

概要之前讨论过行为型模式之一的Template method模式,而Factory method模式其实是Template method模式在Factory场景(创建对象)下的一种应用形式。对Template method模式的定义是在基类中为算法框架定义方法,通过该方法去调用子类中封装的算法各个步骤的具体实现,那么Factory method模式呢?其实就是一种具体的应用,我对它的定义是

2014-02-10 14:52:30 2453

原创 【设计模式攻略】创建型模式之Factory模式

概要Factory模式在现代编程语言中应该也是使用最广泛的模式之一。Factory模式有很多变体,根据实际情况,实现形式多样。最常见的可能还是GOF中提出的Abstract Factory模式和Factory Method模式。本文只是从最基本的Facotry模式概念本身出发,看看抛开GOF提出的两种经典Factory模式不谈,现阶段常见Factory模式的实现形式,在后续的其他文章中会再跟大

2014-02-08 16:18:58 3061

原创 【设计模式攻略】创建型模式之Singleton模式(也谈勿滥用Singleton)

概要如果要说GOF提出的设计模式中最简单以及用的最多的模式是哪种,无疑应该是Singleton模式。它的实现仅仅涉及一个Class,由这个类来负责其本身的实例化,而这个实例化满足唯一性的要求就可以,就这么简单。但是,正因为其简单,简单到随手可用,导致Singleton模式又是目前最容易被滥用的一种模式。后文会讨论滥用Singleton会带来什么问题。目的确保仅仅会实例化一个唯一

2014-02-07 10:12:35 3958

原创 【设计模式攻略】结构型模式之Facade模式

概要Facade模式所涵盖的范围虽然可大可小,但更多的还是被当作一种架构型的模式来考虑,所以它更多的说明的是一种思想,而不是一种实现方式。每个系统内都会涉及多个模块,每个模块又会涉及多个类,每个类会有多种属性或方法,它们之间往往会有各种错综复杂的关系,理清这种关系,设计出能让别人也清楚的架构方案,是一个系统架构者的主要任务之一。而Facade模式就是一种帮助优化模块或类间复杂关系的一种思想。那

2013-10-25 15:13:00 3351

原创 【设计模式攻略】行为型模式之Chain of Responsibility模式

概要程序中经常出现这样的逻辑,收到XX请求,进行XX相关的响应处理,收到YY请求,则进行YY的响应处理。请求与响应之间彼此配对,所以代码也往往会为这种配对提供一对一的对应关系。比如说之前说过的Command模式中,一种Command会跟一个Performer对应起来确保这种逻辑关系。那如果某个请求该如何响应是未知或动态决定的,如何处理呢?答案之一,用一堆条件来判断限制啊?很多情况下,没错,应该

2013-10-25 13:58:16 2375

原创 【设计模式攻略】行为型模式之Command模式

概要一种行为触发另一种行为,这是程序控制中最基本的逻辑。触发的形式,可以有很多种,比如我们经常通过一系列命令或指令来区分不同的触发行为,而在实现的过程中,很多人容易犯这样一个错误,就是把触发方与执行方强耦合在一起,当处理逻辑简单,命令种类不多时,倒并不会有太多问题,但是当程序构架复杂,处理流多样化时,往往会带来诸多不便,甚至引起灾难性的后果。本文想介绍的Command模式,就是一种处理命令

2013-10-23 10:37:05 2325

原创 【设计模式攻略】行为型模式之Iterator模式

概要程序中最常见的一种数据形式之一,就是集合。集合就是vector,list,set,map等容器的统称。,既然使用容器都有一个常规的问题,容器内数据的访问,包括查询,遍历等等操作。而要实现这些操作,普遍的做法就是通过迭代器来实现。很多人在封装自定义的某种集合的数据类型时,往往会在集合类型中额外增加遍历,查询的接口,但这种做法其实并不属于迭代器的范畴。常规的迭代器应该具备如下特点:1. 通

2013-10-10 08:50:31 2597

原创 【C++模版之旅】静态多态(模版模拟多态)的讨论

说到面向对象特性之一“多态”,以我的水平已经说不出太多新意了。相信很多程序员代码K多了,做梦都在“多态中”运行着。常规的多态是C++语义内置支持的一种特性,通过虚函数可以实现这个特性,为了后面以示区别,我们姑且把这种多态称为“动态多态”或”运行期多态“,而本文总主要想讨论下“静态多态”,也可以叫“编译期多态”,同时一起来看下,静态多态会给我们带来哪些惊喜之处,拭目以待吧。 首先看个正常

2013-09-30 14:50:56 6500 4

原创 工作7年,从《一个苏州人......》系列开始,博客1年半,纯纪念

真正涉足CSDN,还是从《一个苏州IT人的5年挨踢经历》系列的发帖开始,当时大家比较捧场,遂把帖子内容整理,其后创建CSDN博客并发表于其上。有了这个开端,后续就习惯性的开始在CSDN写技术博客,从《设计模式攻略》、到《windows8开发专栏》、再到最近的《VxWorks深入浅出》,外加各种杂谈,半年间也积累了70余篇,对内容谈不上满意,内涵还略显苍白,但自己却真心迷恋上寓写于乐的这种感觉。所以

2013-08-01 18:40:40 4302 10

原创 【VxWorks系列】任务间同步与通信之信号

VxWorks中的信号是从POSIX沿用过来的概念,如果你熟悉Linux下的signal,那么几乎就是一回事。信号跟信号量,那完全是两回事,信号有点类似事件,不过事件接口是同步的,而信号处理是异步的,所以其实信号更像中断,或可以称为软中断。先看个简单的例子:void signalRoute1(int sig){ logMsg("signalRoute1 signal id: %

2013-07-18 17:33:02 3933 1

原创 【VxWorks系列】任务间同步与通信之管道

VxWorks提供了一种类似消息队列的任务间数据通信的机制----管道。管道的作用跟消息队列几乎完全一致,就是可以帮助把数据从一个任务发送给另一个任务,但是功能类似,使用方式却截然不同。管道属于一种虚拟的I/O设备,所以它的相关API跟统一I/O访问接口完全一致,比如open,close,read,write等。也就是说它提供了一组通用的I/O操作接口,对使用者来说非常方便。下面可以看一段管道

2013-07-16 10:26:06 4272

原创 【VxWorks系列】任务间同步与通信之消息队列

前文介绍过,信号量可以控制任务间的同步与互斥,那实际的任务间数据传递通信呢?VxWorks提供了消息队列来实现这个机制。消息队列的使用非常简单,通过如下这些API就可以满足需求:创建消息队列:msgQCreate( )  删除消息队列:msgQDelete( ) 发送消息:msgQSend( ) 接收消息:msgQReceive( ) 实际应用中,比较常见的是Ser

2013-07-15 13:29:32 3964

原创 【VxWorks系列】任务间同步与通信之信号量

信号量是VxWorks提供的最常用,最快速的一种任务间通信机制。VxWorks中信号量有三种:二值信号量,互斥信号量,计数信号量。下面一一介绍这三种信号量的作用与区别。信号量通常的作用就是是控制任务的同步与互斥,控制同步:任务1中等待信号量X,当任务2中提供信号量后触发任务1继续运行void fooInTask1(){ semTake(...); // wait fo

2013-07-12 14:34:36 3761 2

原创 【VxWorks系列】任务间同步与通信之共享内存

关于任务间的同步与通信方式,每个人脑子里会蹦出很多,信号量,互斥量,消息队列,管道,信号,事件等等,开始就从最简单的说起。忽略VxWorks在6.X中开始支持进程的概念,在多数常规VxWorks的应用中所有的任务或内核都是运行在同一份线性内存中,所以这里的所谓共享内存的概念相对就非常简单,也就是对于所有你定义的全局或外部可见的数据,不同任务都可以操作,当然这个操作包含了读与写。比如你定义如下全

2013-07-12 11:11:11 5217

原创 【VxWorks系列】中断服务程序中哪些可以做哪些不可以做

中断服务程序主要用来处理来自硬件的中断,毋庸置疑,它是嵌入式程序的重要组成部分。而关于中断服务程序的一些注意事项,虽然已经是老生常谈的问题,但本人还是想简单为自己总结一下,也希望给大家一些参考。首先,中断服务程序中哪些不可以做。1. 不能使用printf,可用logMsg代替。2. 不能使用free,malloc也就意味着也不能是用C++的new,delete操作符3. 不

2013-07-10 15:48:27 5929

原创 【VxWorks系列】基于VMWare配置VxWorks开发环境

常规VxWorks的开发环境都是基于目标开发板或目标机来构建的,但并非所有人都具备这样的条件,所以本文主要介绍如何基于vmware来构建VxWorks开发环境。Step 1. 安装vmware首先需要安装vmware, 版本没有什么限制,我装的是vmware 8.0,关于怎么安装就不细说了,一切都用默认的就ok。安装完成后需要配置下vmware虚拟网卡1(VMnet1)的IP,设置

2013-06-14 14:56:09 14724 6

原创 Windows 8 desktop app中dll搜索路径设置的诡异现象,Bug?

某个桌面程序在win 8上运行异常的问题困扰了我有近一周,今天终于找到了根本原因,严重怀疑是win 8的一个Bug。(所有程序都是desktop app,跟Metro模式无关)情况是这样的,比如有个Main.exe会通过CreateProcess启动另外一个Sub.exe,而这个Sub.exe中会通过LoadLibrary动态加载多个动态链接库,Main.exe和Sub.exe以及相关dl

2013-04-25 16:05:58 3426

原创 使用GDB调试Android NDK native(C/C++)程序

最近写了些需要跨平台兼容的C++库,Android是其中需要兼容的平台之一。区别于Windows,Mac中功能强大的IDE环境,官方并没有为Android ndk提供太多的支持。因此,尝试了下通过一些配置使用gdb来调试Android ndk的C++程序,感觉还算方便,记录下来跟大家分享。先说明下,这里所谓的ndk native程序跟Android上层java应用没有什么关系,也不需要涉及jn

2013-03-29 10:42:50 13866 2

原创 Performance verifying for Sqlite in-memory mode.

Performance verifying for Sqlite in-memory mode.Testing environment:Key-Value Map    List table(100 fields)    test casebytes * times

2013-03-04 14:58:50 1728

原创 A simple case of unit testing

OverviewIt is very important to keep unit test small, simple, fast, and self-contained. A unit test that relies on another server or some other complicated modules to be running is simply no

2013-02-25 17:10:10 1275

原创 【Windows8开发】关于WinRT组件,WinRT dll,Win32 dll,WinRT exe组件的一些尝试

随着Win8的推出,提出了很多新的概念,比如WinRT Component,WinRT dll,WinRT exe component等。基于这些新的概念,进行了很多尝试,本文会把结果分享给大家,希望对大家能有所触发。1. WinRT Component, WinRT dll,Win32 dll区别与联系前面系列文章中提到了n多的WinRT Component(WinRT组件)。那

2012-10-19 10:44:19 9780 8

原创 【Windows8开发】异步编程进阶篇之 谈task如何避免线程取消引发的系列问题

曾经在《【Windows8开发】异步编程进阶篇之 对thread说不,用task》一文中说明过在Metro程序中推荐使用WinRT的task,而避免使用传统的线程API,理由之一就是当使用传统线程调用方式,在人为(通过代码)去终止一个线程时经常会引发一些意料之外的异常情况,导致程序异常或崩溃,让我们回忆一下任务(thread)取消引发的系列问题:1. 强制终止一个线程时,该线程占用资源未释

2012-09-24 14:53:18 5619 7

原创 【Windows8开发】异步编程进阶篇之 Platform::Exception及task间的异常控制

先考虑下使用传统Thread API时,线程间的异常控制往往是一件相当痛苦的事情,由于某个线程的异常未捕获导致整个程序crash的情况也许很多人都碰到过。比如如果有一组任务链处理序列,我们往往需要对每个线程都详细考虑其可能抛出的各种异常,如果需要把一个异常从一个线程抛到另外一个线程进行处理时,那更需要多费很多周折,而且往往费时费力最后却还总是会发现这样那样的疏忽与漏洞。那WinRT提供的task有

2012-09-21 15:40:37 3855

原创 【Windows8开发】异步编程进阶篇之 task group的几种方式及其间的区别

前文中曾介绍过可以通过create_task创建task并异步执行,这是对单个任务而言的,本文主要讨论任务组(task group)的管理,WinRT中提出了多种进行task group管理的方法,接下来开始一一说明。1.  Concurrency::when_all和Concurrency::when_anyWinRT提供了when_all和when_any来控制一组任务的执行。

2012-09-20 16:31:19 4114

原创 【Windows8开发】异步编程进阶篇之 单线程套间(STA)及如何控制task执行上下文

(请大家注意了,本文涉及的概念相当重要,开发中相当管用)开始就先来看一段代码:void SampleCpp::MainPage::Btn_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e){ auto workItemDelegate = [this]() { // d

2012-09-19 22:58:47 4987 5

原创 【Windows8开发】异步编程进阶篇之 create_async, create_task, make_task区别与联系

create_async, create_task, make_task都是WinRT下为异步编程服务的API,它们之间有何联系,又有何区别呢?create_async是为跨语言调用服务的,也就是说如果希望封装的方法可以被C++以外语言的组件调用,那就需要create_async来创建异步处理,那除了这点外,它与create_task在实际应用中还有什么区别与联系呢?首先是返回值。

2012-09-18 12:06:14 10413 4

原创 【Windows8开发】异步编程进阶篇之 对thread说不,用task

之前的文章中曾经简单描述过WinRT异步编程的一些入门知识和浅显的实例,鉴于WinRT中异步的应用相当广泛,本系列中会更深入的介绍C++异步编程的一些细节和难点,希望能带给大家更多实质性的收获。之前异步编程入门篇的一些文章链接如下:异步编程入门篇之 Concurrency::create_async(C++)异步编程入门篇之 Concurrency::task(C++)异步

2012-09-18 10:44:02 5936

原创 【Windows8开发】Metro App生命周期之打包、部署安装与卸载

记得之前刚试用Win 8开发者预览版那会,VS11编译完Metro App工程后,想直接双击exe运行,却弹出个警告框,提示该程序只能结合App容器启动运行。那如何去部署和启动Metro App呢?后来随着对Win 8的了解有了答案。当我们在VS2012中编译我们的代码并F5执行后,你会发现Metro桌面已经生成了该程序的快捷方式了,VS帮我们一条龙做了程序的编译,安装和部署,之后你也

2012-09-11 15:28:18 9987

转载 Being productive in the background – background tasks

from:http://blogs.msdn.com/b/windowsappdev/archive/2012/05/24/being-productive-in-the-background-background-tasks.aspxIn my previous post (Being productive in the background), I explained the Wi

2012-09-11 09:37:35 2907

原创 【windows8开发】Metro App生命周期之Suspended与Resume

先来看这样一个场景:我们打开一个Metro程序,进行了一系列的编辑工作,突然想要查看另外一个Metro程序,然后ALT+TAB切换到这个App,确认完需要查看的内容后想切换回原来那个正在编辑的程序,突然发现那个程序已经被系统终止了,重新打开发现所有已编辑的东西都没了,于是大呼一声,“这是什么破系统.......”。呵呵,其实这不是系统的问题,而是这个应用程序应该解决的问题,本文会讨论Metro

2012-09-06 16:45:11 3022

原创 【windows8开发】Metro App生命周期之启动

前文介绍过Metro App的生命周期中的各个状态(NotRunning, Running, Suspended)以及概要性的说明了程序的启动,挂起,恢复,关闭等概念,而在本文中会通过相关代码,着重介绍Metro App在启动时的一些细节。本文中的示例代码会使用C++,因为都是基于WinRT,所以Javascript的实现的原理应该是类似的,如果有希望具体了解Javascript的实现方式的,可以

2012-08-30 11:01:18 3031

VxWorks BSP for VMWare

VxWorks BSP for VMWare

2013-06-14

vxworks for vmware

基于VMWare的VxWorks启动镜像

2013-06-14

空空如也

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

TA关注的人

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