OpenMP学习笔记<一>



##并行程序设计思路 并行程序设计和串行的稍微不同, 大概经历下面四个阶段: 划分: 将计算分解成尽可能多的小任务, 可以按处理对象数据进行域分解, 也可以按计算任务进行功能分解. 这两种分解要做到数据集和计算集不相交. 通信: 划分产生的任务, 一般不能完全独立执行, 需要进行数据通信 组合: 根据任务的局部性, 将小任务组合成更大的任务 映射: 将组合后的多个任务分配到多个处理器上, 并期望获得算法的最优性能减少算法的执行时间

#OpenMp 基本概念 OpenMP 属于共享内存编程模型的技术, 通过在源代码中添加指导注释, 成为编译指导: #pragma omp parallel

OpenMP 支持的语言包括 C/C++ 和 Fortran, 支持开源编译器 gcc/g++, 下面首先了解OpenMP 的执行模式和三大要素.

阅读全文 »


链表的基本操作



#单链表 单链表的操作, 包括初始化, 头插入, 尾巴插入, 查询删除节点, 删除链表等等操作.

链表反转没有完成, 程序应该使用类来弄的, 没有实现..CODE 如下:

阅读全文 »


快速排序递归与非递归实现



在 [多核计算与程序设计 ] (http://book.douban.com/subject/3624015/)一书上, 作者提到, 一般的商业应用中, 不会使用到所有的排序算法. 排序因数据多少, 导致效率差距非常大. 插入排序一般用于数据量较少的情况, 快速排序多少都可以; 归并排序用于数据比较多的情况, 而基数排序就用于数据非常多的情况( 30万以上 ).

书上只提到了快速排序, 程序如下: ##递归快速排序

阅读全文 »


弄懂sizeof



#sizeof及其用法

###1. sizeof在msdn上的定义如下:

The sizeof keyword gives the amount of storage, in bytes, associted with a variable or a type (including aggregate types). This keyword returns a value of type size_t.

sizeof 不是函数, 而是 C 语言数据类型关键字.

###2. sizeof 用法如下:

  • sizeof(object)
  • sizeof(typename)

可以对对象使用 sizeof, 也可以对类型使用. sizeof i OR sizeof(int).

阅读全文 »


Python网络编程(译)



这是一个快速学习 Python socket 的教程指南. Python 的socket 编程类似 C 语言.

基本上, sockets 是电脑间网络通信的最基本的元素. 例如, 当你在地址栏中输入 www.love67.net 时, 浏览器会打开并连接一个 socket, 读取 google.com 页面的内容并展示. 同一些聊天客户端例如 Skype, Gtalk 类似, 任何网络通讯都是基于 socket 完成的.

在这个教程中, 我们使用 Python 中的 tcp socket 进行编程, 你也可以参考 program udp sockets in python

#准备知识

本教程假设你已经懂点 Python 的基本知识
让我们开始 socket 的学习吧

#创建一个 socket

我们先创建一个 socket, 使用 socket.socket 来创建:

#Socket client example in python

import socket # for sockets
#create an AF_INET, STREAM_socket(TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Scoket created!'

阅读全文 »