自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Coder

商业化产品可能是有用的, 但最好的东西往往是免费的, 空气,水,Vim。

  • 博客(25)
  • 资源 (5)
  • 收藏
  • 关注

原创 编程原本(1~3)读书笔记

本书是来自STL之父的大作,作者的观念是编程源于数学,没有好的数学基础,只能玩玩程序的小技巧,很难写出STL这样伟大的程序,书的英文名称叫做elements of programming, elements 其实就是事物背后的本质的意思,发人深省。第一章: 基础本章作者介绍了一个数学系统,理解这个系统才获取了看懂这本书的钥匙。过程(Procedure): 改变对象状态的一组指令

2012-12-30 21:23:37 2139 3

原创 idb vs gdb

很早之前就听说idb比gdb好用,一直不以为然,今天终于受不了gdb动不动就freeze的习惯了,改用idb,感觉好多了,仍然支持gdb的命令,而且还有很friendly的窗口可以看源代码,非常好。1. 如何在某一行加断点?break  main.c:123   2. 如果在某个C++ class的函数加断点?break ccc::abc // 注意和上面的不同

2012-12-28 13:57:05 1511

原创 线程池(thread pool)

过去使用多线程的时候,一直很担心线程创建和销毁对程序造成的负担,最近看到一个线程池的概念,眼前一亮,觉得这个很有用就收集了一些资料在下面。线程池很好的解决了轻量级的线程被频繁调用造成的系统负担的问题。而且用线程池会让代码更加明了,容易读懂,比如我们不要操心每一个小线程本身的生命周期, 试想MPI之流下面应该也有线程池的概念, boost 本身并没有基于线程池的实现,倒是有第三方的在boost基础上

2012-12-28 12:27:25 1252

转载 boost units__带单位的物理模型编程

Quick StartBefore discussing the basics of the library, we first define a few terms that will be used frequently in the following :Base dimension : A base dimension is loosely defined as a mea

2012-12-27 14:53:34 1099

转载 safty array

注:后来发现boost的Multi_array很好用,甚至可以自己指定存储的方式是按照行还是列,以及指定base从0还是1,最重要的一点就是可以和一维数组一样一个指针解决问题。上次遇到一个数组越界的问题很难查,总是会crash在不同的位置,刚好最近在做一个从fortran到C/C++的翻译工作,里面也有很多数组的动作,而且数组要传递很多参数,比如二维的数组就要再传递一个N和M表示两个维

2012-12-27 10:00:13 530

原创 C++ union(只支持基础类型)

遇到一个union里面放一些非基本类型编译不通过的问题,查了一下得到如下解释Current C++ standard does not allow non-POD types inside unions. Hence you get this compiler error from gcc.Instead of using C unions, you should use bo

2012-12-26 15:31:11 1200

原创 C++继承对应的汇编代码

//// main.cpp// asm_study//// Created by mac on 12-12-24.// Copyright (c) 2012年 mac. All rights reserved.//#include class base{public: base(){} virtual ~base(){} virtual int

2012-12-25 19:59:59 1242

原创 ios开发之 xcode使用

1. xcode 编译出来的结果放哪里去了?第一次用xcode 编译了一个动态库,可是怎么也找不到,原来default藏到了home 下面一个Library下面的某个角落,和linux windows上的习惯很不一样,就找了一个办法把它弄到当前项目下面,这个设置是全局的,也就是以后所有的新建的工程都不要再操心了,具体的做法是:xcode->preference->locations->De

2012-12-23 19:00:53 1371

原创 读书笔记: optimizing program performance<computer system a programmer perspective>

文章仅仅使用了O1的优化级别,即使这样作者也可以写出相当于O3的速度的代码甚至比这个还要高, 编译器本身的优化已经很可观了,但是还是不如写得谨慎的代码,因为编译器每做一个优化都要很小心,担心会不会有负面效果,它不能完全的优化到最优的代码组合的程度。1. optimize blocker 有一些会阻碍编译器自动的优化代码,    a) memory aliasing,就是当两个指针指向同一内

2012-12-21 21:57:34 819

转载 使用 Boost 的 IPC 和 MPI 库进行并发编程

boost MPI有一个好处是和STL的容器支持很好,对一般的class也有自己的allocate,如果从最底层开发所有的部件,从boost MPI 入手是个不错的选择。使用非常流行的 Boost 库进行并发编程非常有意思。Boost 有几个用于并发编程领域的库:Interprocess (IPC) 库用于实现共享内存、内存映射的 I/O 和消息队列;Thread 库用于实现可移植

2012-12-20 13:07:12 1403

转载 Linux 环境进程间通信(六):套接口

一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯一的含义是不言而喻的),其他进程可以发现、连接并且与之通信。通信域用来说明套接口通信的协议,不同的通信域有不同的通信协议以及套接口的地址结构等等,因此,创建一个套接口时,要指明它的通信域。比较常见的是unix域套接口(采用套接口机制实现单机内的进程间通信)及网际通信域。1、背景知识linux目前的网络内

2012-12-20 12:51:45 1282

转载 Linux环境进程间通信(五): 共享内存(下)

系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。1、系统V共享内存原理进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地

2012-12-20 12:32:30 602

转载 Linux环境进程间通信(五): 共享内存(上)

采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,

2012-12-20 12:30:29 506

转载 Linux环境进程间通信(四):信号灯

一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号灯强调共

2012-12-20 12:24:22 674

转载 Linux环境进程间通信(三):报文队列

消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随

2012-12-20 12:16:26 1847

转载 Linux环境进程间通信(二):信号

一、信号及信号来源信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基

2012-12-20 12:09:39 1649

转载 Linux环境进程间通信(一):管道

1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独

2012-12-20 11:49:52 711 2

转载 深刻理解Linux进程间通信(IPC)

序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的

2012-12-20 11:44:08 689

原创 模板的使用

看了很多模板的书一直没有实践, 最近把原来的基类的代码用模板改了下template class Rect{ friend class RectCmp;public: Rect(); ...private:union{ struct{ T x1; T y1;

2012-12-17 10:37:12 626

原创 makefile的使用问题总结

这篇文章将用来陆续整理makefile编写的时候出现的问题和网上找到的一些答案。0. gcc的常用规则$ gcc -Wall -c hello_fn.c     产生一个 .o 文件(编译)$ gcc main.o hello_fn.o -o hello 产生可执行文件(链接)如果只有一个文件, 可以把编译和链接用一个command完成gcc -Wa

2012-12-17 10:18:45 1867

原创 读书笔记: processor architecture<computer system a programmer perspective第二章>

本章从一个CPU设计者的角度,讲述了一个简单的CPU设计的过程,从而来帮助我们了解CPU的架构。这里我们设计了一个简单的指令集叫Y86, 讲述了如何设计这些指令,并且带入了一个很重要的提高CPU性能的架构:流水线。并且用硬件设计语言模拟了这样的设计过程。这一章并没有细读,以前多多少少看了一些CPU架构相关的东西。

2012-12-16 19:44:56 890

原创 读书笔记:machine-level representation of program<computer system a programmer perspective第二章>

1. 程序编码, 本章主要介绍了汇编和C的相互转化和理解, 本章的的意义在于看到C能翻译成汇编,看到汇编能翻译成C。 程序本质是一系列的ISA(instruction set architecture)许多在汇编中可见的东西在C中都看不到了,比如 PC(program count 用来指向下一条执行的指令)在汇编中用%eip表示,C中是看不到的。下面是一个c和汇编机器语言的转变的例子:int ac

2012-12-15 17:18:34 923 1

原创 编程本身并不重要,重要的是他所解决了问题

http://bbs.csdn.net/topics/390314171 很有启发的一篇文章程序是用来解决问题的,所有我们应该更关注的是问题,想想怎么解决这个问题,所有的事情要以问题为导向,有问题才有方法,这个很象市场经济有需求才有发展一样,要通过扩大内需来繁荣经济。另外解决问题又分很多层,给别人做是一种,自己做是另一种,终究需要一个洞悉了这个问题的本质的人才能解决这个问题

2012-12-14 13:18:31 489

原创 boost filesystem

过去用C处理系统文件很繁琐,需要调用一些系统接口,什么文件夹递归都要自己去写,而且可移植性比较低,用boost filesystem可以解决这些问题。// 判断是不是文件夹 #include #include “boost/filesystem.hpp”int main() { boost::filesystem::path path("

2012-12-11 15:07:02 793

原创 设计模式的理解的总结

最近把设计模式又翻了一边,写个总结,这个总结比较简单,主要是一些理解,对于他们的实现和应用以后再总结设计模式是编程抽象化的一个具体的应用,它让程序更好的阅读和理解,逻辑上更加合理,是通向更大规模软件的一个基础,换个说法,如果一个软件的模式很混乱那么它混乱到一定的程度就再也编写和维护不下去了,一直觉得java c#的设计模式体现得更好,这是因为和他们的一切都是对象的理念比较一致,c++的稍微少一

2012-12-08 17:45:12 3628

magic_byte_for_linux_file

magic byte for linux file

2013-08-23

Effective C++

Scott Meyers' book, Effective C++, Third Edition, is distilled programming experience — experience that you would otherwise have to learn the hard way. This book is a great resource that I recommend to everybody who writes C++ professionally

2009-03-19

Programming Windows with MFC

MFC, as you probably already know, is Microsoft's C++ class library for Windows programming. Programming Windows with MFC isn't a book about C++; rather, it's a book about writing 32-bit Windows applications in C++ using MFC rather than the Windows API as the chief means of accessing the operating system's essential features and services.

2009-03-18

空空如也

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

TA关注的人

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