自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (34)
  • 收藏
  • 关注

转载 Linux多线程实践(10) --使用 C++11 编写 Linux 多线程程序

在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t 甚或几 p 的数据的数据库系统,到手机上的一个有良好用户响应能力的 app,为了充分利用每个 CPU 内核,都会想到是否可以使用多线程技术。这里所说的“充分利用”包含了两个层面的意思,一

2015-02-19 19:09:58 4861

原创 Linux多线程实践(9) --简单线程池的设计与实现

线程池的技术背景   在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务(不止一个不同的任务)就是一个需要解决的关键问题,其实这就是一些"池化资源"

2015-02-19 18:15:35 4590 1

原创 Linux多线程实践(8) --Posix条件变量解决生产者消费者问题

Posix条件变量int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr);int pthread_cond_destroy(pthread_cond_t *cond);int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex

2015-02-19 18:02:38 3850

原创 Linux多线程实践(7) --多线程排序对比

屏障int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restrict attr, unsigned count);int pthread_barrier_destr

2015-02-19 17:51:08 4832 1

原创 Linux多线程实践(6) --Posix读写锁解决读者写者问题

Posix读写锁int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr);int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);int pthrea

2015-02-19 17:44:25 4301

原创 Linux多线程实践(5) --Posix信号量与互斥量解决生产者消费者问题

Posix信号量Posix 信号量有名信号量无名信号量sem_opensem_initsem_closesem_destroysem_unlink sem_waitsem_post 有名信号量#include /* For O_* constants */#include /* For mode constants */#include sem_t *s

2015-02-19 17:24:07 4046

原创 Linux多线程实践(4) --线程特定数据

线程特定数据int pthread_key_create(pthread_key_t *key, void (*destr_function) (void *));int pthread_key_delete(pthread_key_t key);int pthread_setspecific(pthread_key_t key, const void *pointer);void * p

2015-02-19 17:11:01 4089 1

原创 Linux多线程实践(3) --线程属性

初始化/销毁线程属性int pthread_attr_init(pthread_attr_t *attr);int pthread_attr_destroy(pthread_attr_t *attr);线程分离属性int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate);int pthread_a

2015-02-19 16:52:55 2427

原创 Linux多线程实践(2) --线程基本API

POSIX线程库  与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”开头,要使用这些函数库,要通过引入头文,而且链接这些线程函数库时要使用编译器命令的“-lpthread”选项[Ubuntu系列系统需要添加的是”-pthread”选项而不是”-lpthread”,如Ubuntu 14.04版本,深度Ubuntu等] 1.pthread_createint pthr

2015-02-19 16:33:24 2870

原创 Linux多线程实践(1) --线程理论

线程概念   在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列/指令序列”;    一切进程至少有一个执行线程;进程  VS. 线程     1.进程是资源分配(进程需要参与资源的竞争)的基本单位,而线程是处理器调度(程序执行)的最小单位;   2.线程共享进程数据,但也拥有自己的一部分(非常少O(∩_∩)O~)数据,如线程ID、程序计数器、一组

2015-02-19 16:20:42 3114

原创 Linux IPC实践(13) --System V IPC综合实践

实践:实现一个先进先出的共享内存shmfifo    使用消息队列即可实现消息的先进先出(FIFO), 但是使用共享内存实现消息的先进先出则更加快速;   我们首先完成C语言版本的shmfifo(基于过程调用), 然后在此基础上实现C++版本的ShmFifo, 将1块共享内存与3个信号量(1个mutext信号量, 1个full信号量, 1个empty信号量)封装成一个类ShmFifo, 然后编写各

2015-02-19 16:08:19 2138

原创 Linux IPC实践(12) --System V信号量(2)

实践1:信号量实现进程互斥父子进程执行流程如下:父进程子进程PPO(print)X(print)sleepsleepO(print)X(print)VVsleepsleep从图中可以看出, O或X总是成对出现的, 要么两个O, 要么两个X;/**P,V原语实现父子进程互斥使用终端**/// 程序代码int main(int argc,char *argv[]){ int semid

2015-02-19 15:58:27 2174

原创 Linux IPC实践(11) --System V信号量(1)

信号量API#include #include #include int semget(key_t key, int nsems, int semflg);int semctl(int semid, int semnum, int cmd, ...);int semop(int semid, struct sembuf *sops, unsigned nsops);semgetint s

2015-02-19 15:52:53 2417 1

原创 Linux IPC实践(10) --Posix共享内存

1. 创建/获取一个共享内存#include #include /* For mode constants */#include /* For O_* constants */int shm_open(const char *name, int oflag, mode_t mode);参数:   name:  共享内存名字;   oflag: 与open

2015-02-19 15:14:46 2172

原创 Linux IPC实践(9) --System V共享内存

共享内存API#include #include int shmget(key_t key, size_t size, int shmflg);void *shmat(int shmid, const void *shmaddr, int shmflg);int shmdt(const void *shmaddr);int shmctl(int shmid, int cmd, stru

2015-02-19 15:02:57 2490

原创 Linux IPC实践(8) --共享内存/内存映射

概述    共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据(如图)。 共享内存 VS. 其他IPC形式     用管道/消息队列传递数据  用共享内存传递数据     共享内存生成之后,传递数据并不需要再走Linux内核,共享内存允许两个或多个进程共享一个给定的

2015-02-19 14:51:20 3794

原创 Linux IPC实践(7) --Posix消息队列

1. 创建/获取一个消息队列#include /* For O_* constants */#include /* For mode constants */#include mqd_t mq_open(const char *name, int oflag); //专用于打开一个消息队列mqd_t mq_open(const char *name,

2015-02-18 19:45:00 2350 1

原创 Linux IPC实践(6) --System V消息队列(3)

消息队列综合案例消息队列实现回射客户/服务器 server进程接收时, 指定msgtyp为0, 从队首不断接收消息server进程发送时, 将mtype指定为接收到的client进程的pid client进程发送的时候, mtype指定为自己进程的pidclient进程接收时, 需要将msgtyp指定为自己进程的pid, 只接收消息类型为自己pid的消息;// client/server进程接收/

2015-02-18 19:26:29 2013 1

原创 Linux IPC实践(5) --System V消息队列(2)

消息发送/接收APImsgsnd函数int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);参数   msgid: 由msgget函数返回的消息队列标识码, 也可以是通过ipcs命令查询出来的一个已经存在的消息队列的ID号   msgp:是一个指针,指针指向准备发送的消息,   msgsz:是msgp指向的消息长度, 注意

2015-02-18 19:19:13 2111

原创 Linux IPC实践(4) --System V消息队列(1)

消息队列概述   消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限于本机);   每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值.   消息队列也有管道一样的不足: (1)每个消息的最长字节数的上限(MSGMAX); (2)系统中消息队列的总条数也有一个上限(MSGMNI); (3)每个消息队列所能够保存的总字节数是有上限的(MSGMNB) . 查看系

2015-02-18 17:58:18 2226

原创 Linux IPC实践(3) --具名FIFO

FIFO具名/命名管道   (匿名)管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。   如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道;命名管道是一种特殊类型的文件. 创建一个命名管道1)命名管道可以从命令行上创建:  $ mkfifo 2)命名管道在程序里创建: #include #include

2015-02-18 17:45:07 1932

原创 Linux IPC实践(2) --匿名PIPE

管道概念   管道是Unix中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”, 管道的本质是固定大小的内核缓冲区;   如:ps aux | grep httpd | awk '{print $2}' 管道限制   1)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;   2)匿名管道只能用于具有共同祖先的进程(如父进程与fork

2015-02-18 17:35:29 1662

原创 Linux IPC实践(1) -- 概述

进程的同步与互斥   进程同步: 多个进程需要相互配合共同完成一项任务。   进程互斥: 由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥;系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源, 而在进程中涉及到互斥资源的程序段叫临界区. Linux IPC发展   Linux下的进程通信手段基本上是从UNIX平台上的进程

2015-02-18 17:21:58 1564

原创 Linux信号实践(5) --时间与定时器

三种不同精度的睡眠1.sleep#include unsigned int sleep(unsigned int seconds);RETURN VALUE  Zero if the requested time has elapsed, or the number of seconds left to  sleep,  if  the call was interrupted by a sig

2015-02-18 16:19:39 1950

原创 Linux信号实践(4) --可靠信号

Sigaction#include int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);功能:   sigaction函数用于改变进程接收到特定信号后的行为。参数   第一个参数为信号的值,可以为除SIGKILL及SIGSTOP外的任何一个特定有

2015-02-18 16:07:04 1777

原创 Linux信号实践(3) --信号内核表示

信号在内核中的表示   执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。   注意,阻塞和忽略是不同,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。信号在内核中的表示可以看作是这样的:  图-

2015-02-18 15:50:45 1839

原创 Linux信号实践(2) --信号分类

信号分类 不可靠信号Linux信号机制基本上是从UNIX系统中继承过来的。早期UNIX系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,它的主要问题是:   1.进程每次处理信号后,就将对信号的响应设置为默认动作。在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号。   2.因此导致, 早期UNIX下

2015-02-18 15:31:17 1758

原创 Linux信号实践(1) --Linux信号编程概述

中断    中断是系统对于异步事件的响应, 进程执行代码的过程中可以随时被打断,然后去执行异常处理程序;    计算机系统的中断场景:中断源发出中断信号 -> CPU判断中断是否屏蔽屏蔽以及保护现场 -> CPU(查询中断向量表, 找到中断服务程序的入口地址)执行中断处理程序 ->(处理完中断之后) ->恢复现场,继续执行原来的任务 中断分类硬件中断(外部中断)  外部中断是指由外部设备通过硬件请

2015-02-18 15:01:26 2519

原创 Linux进程实践(5) --守护进程

概述   守护进程是在需要在后台长期运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,在服务器关闭的时候自动关闭;守护进程的名称通常以d结尾,比如sshd、xinetd、crond、atd等。守护进程编程规则    调用umask将文件模式创建屏蔽字设置为一个已知值(通常是0)   调用fork(),创建新进程,它会是将来的守护进程   然后使父进程exit,保证子进程不是进程组组长

2015-02-18 11:32:14 2181 2

原创 Linux进程实践(4) --wait避免僵尸进程

Wait的背景   当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止)   子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态。   父进程查询子进程的退出状态可以用wait/waitpid函数#include #include pid_t wait

2015-02-18 11:22:47 3389

原创 Linux进程实践(3) --进程终止与exec函数族

进程的几种终止方式(1)正常退出   从main函数返回[return]   调用exit   调用_exit/_Exit(2)异常退出   调用abort   产生SIGABOUT信号   由信号终止  Ctrl+C [SIGINT]   ...(并不完全, 如return/pthread_exit等)测试[exit/_exit]//尝试查看该程序的打印输出int main(){ c

2015-02-18 11:02:41 4244

原创 Linux进程实践(2) --僵尸进程与文件共享

孤儿进程与僵尸进程孤儿进程:   如果父进程先退出,子进程还没退出那么子进程的父进程将变为init进程。(注:任何一个进程都必须有父进程)//生成孤儿进程int main(int argc, char *argv[]){ pid_t pid = fork(); if (pid < 0) err_exit("fork error"); else if (p

2015-02-18 10:44:43 2005

原创 Linux进程实践(1) --Linux进程编程概述

进程 VS. 程序什么是程序?   程序是完成特定任务的一系列指令集合。什么是进程?  [1]从用户的角度来看:进程是程序的一次执行过程  [2]从操作系统的核心来看:进程是操作系统分配的内存、CPU时间片等资源的基本单位。   [3]进程是资源分配的最小单位  [4]每一个进程都有自己独立的地址空间与执行状态。  [5]像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构

2015-02-18 10:19:23 2236

原创 文件I/O实践(3) --文件共享与fcntl

文件共享 一个进程打开了两个文件文件表条目(file-table-entry):   1.文件状态标志(file-status-flags): 读/写/追加/同步/非阻塞等;   2.当前文件偏移量   3.v节点指针//验证int main(int argc, char *argv[]){ int fd1 = open("test.txt", O_RDONLY); i

2015-02-18 09:59:46 2490

原创 文件I/O实践(2) --文件stat

功能:获取文件元数据#include #include #include int stat(const char *path, struct stat *buf);int fstat(int fd, struct stat *buf);int lstat(const char *path, struct stat *buf);stat结构体struct stat{ dev_t

2015-02-18 09:40:27 2203

原创 文件I/O实践(1) --基础API

什么是I/O输入/输出是内存和外设之间拷贝数据的过程:   设备->内存: 输入操作   内存->设备: 输出操作 高级I/O: ANSI C提供的标准I/O库函数成为高级I/O, 也称为带缓冲的I/O; 低级I/O: Linux 提供的系统调用, 通常也称为不带缓冲的I/O; 文件描述符  对于Linux内核而言, 所有的文件或设备都对应一个文件描述符(Linux的设计哲学: 一切皆文件), 这

2015-02-18 09:30:10 2516 2

原创 Linux环境编程导引

计算机系统硬件组成 总线贯穿整个系统的一组电子管道称为总线, 分为:  片内总线  系统总线 数据总线DB 地址总线AB 控制总线CB  外部总线 I/O设备I/O设备是系统与外界联系的通道    键盘鼠标是输入设备,显式器是输出设备,磁盘既是输入设备也是输出设备,输入输出是相对于内存来说的。 内存  内存是一个重要的部件,它是与CPU进行沟通的桥梁。它用来存放程序以及程序要处理的数据,磁盘中的程

2015-02-18 09:04:21 2401 2

原创 数据结构拾遗(3) --红黑树的设计与实现(下)

完整源代码: http://download.csdn.net/detail/hanqing280441589/8450041 红黑节点设计与实现template class RedBlackNode{ friend class RedBlackTree;//所有的成员都是privateprivate: RedBlackNode(const Comparable &theE

2015-02-17 10:39:45 2492

原创 数据结构拾遗(2) --红黑树的设计与实现(中)

Insert完善    根据规则4, 新增节点必须为红; 根据规则3, 新增节点之父节点必须为黑. 示例:    (1)插入16(红色)/55(红色), 则既不用旋转, 也不用重新染色    (2)插入82(红色), 则违反了红黑规则, 需要进行动态的调整; 红黑树所需的处理1.单旋转     新插入的X与其父P都是红色的, 而且X还是G的外部孙子; 2.双旋转    新插入的X与其父P都是红色的

2015-02-17 10:29:44 2150 1

原创 数据结构拾遗(1) --红黑树的设计与实现(上)

红黑树是一种自平衡的二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组(C++ STL 中的map/set)。它是在1972年由Rudolf Bayer发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。红黑树虽然很复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效

2015-02-17 10:17:22 3530 1

TCPIP系列博客

计算机网络系列博客打包下载, 主要面向正在处于找工作阶段的本科生阅读

2015-04-08

epoll封装与测试代码

  在本部分我们实现一个较为好用实用的Epoll并发类, 由于实现代码与使用方式较简单, 因此就不在此赘述了, 下面我还使用了该类实现了一个基于Epoll的echo-server, 以演示该类的用法;   由于此处仅为Epoll类库的第一个版本, 因此错误之处必然会存在, 如果读者在阅读的过程中发现了该类库的BUG, 还望这篇博客的读者朋友不吝赐教; 而作者也会不断的更新该类库(主要更新代码我会发布到此处), 以处理新的业务需求;

2015-03-11

shutdown_close

  1.close终止了数据传送的两个方向;   而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。

2015-03-09

Socket 类封装 改进版

实现中的几个注意点:   1 Socket类几个成员函数的访问权限为protected 使Socket类可以进行继承 但不允许私自使用;   2 TCPClient类的send receive方法使用了著名的writen readn 来源UNP 实现 解决了TCP的粘包问题   3 TCPSe

2015-03-09

est_for_shutdown_and_close源代码

  1.close终止了数据传送的两个方向;   而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。   2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他进程已经打开了套接字(shutdown并没采用引用计数)。   而close需要等待套接字引用计数减为0时才发送FIN段。也就是说直到所有的进程都关闭了该套接字。

2015-03-09

test_for_shutdown_and_close

  1.close终止了数据传送的两个方向;   而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。   2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他进程已经打开了套接字(shutdown并没采用引用计数)。   而close需要等待套接字引用计数减为0时才发送FIN段。也就是说直到所有的进程都关闭了该套接字。

2015-03-09

Socket-类封装

实现中的几个注意点:   1)Socket类几个成员函数的访问权限为protected, 使Socket类可以进行继承,但不允许私自使用;   2)TCPClient类的send/receive方法使用了著名的writen/readn(来源UNP)实现, 解决了TCP的粘包问题.   3)TCPServer端添加了地址复用, 可以方便TCP服务器重启;   4)添加了异常类,让我们在编写易出错的代码时,可以解放思想,不用一直考虑该函数调用出错会发生什么情况!

2015-02-28

echoServer(按行读取版本)

使用recv_peek实现按行读取readline(只能用于socket)

2015-02-27

echoServer定长包与添加报头版本

自定义应用层协议实践 发报文时:前四个字节长度+报文内容一次性发送; 收报文时:先读前四个字节,求出报文内容长度;根据长度读数据。 发送结构:

2015-02-27

基于多进程的P2P聊天程序

server端与client都有两个进程:   父进程负责从socket中读取数据将其写至终端, 由于父进程使用的是read系统调用的阻塞版本, 因此如果socket中没有数据的话, 父进程会一直阻塞; 如果read返回0, 表示对端连接关闭, 则父进程会发送SIGUSR1信号给子进程, 通知其退出;   子进程负责从键盘读取数据将其写入socket, 如果键盘没有数据的话, 则fgets调用会一直阻塞;

2015-02-27

echoserver多进程版

  我们的echo服务器最大的缺点就是无法支持多客户连接,即使客户端能够连接到服务器上,服务器也不为该客户做服务,(直接没什么反应),虽然链接是有的(也就是说,客户端是已经连接到服务器上的了,但是服务器就是不搭理你....)

2015-02-26

红黑树(RBtree)实现代码

一个基于C++的红黑树实现, RedBlackTree, C++, 二叉树, 平衡二叉树

2015-02-17

线程池(C/C++版)

C/C++ threadpool封装, 线程池, Linux, 多线程, pthread

2015-02-16

生产者消费者代码(C++版)

用Posix信号量, Posix互斥量, 解决生产者消费者问题(c++版)

2015-02-13

echoServer(thread版)源代码

将并发echo server改造成多线程形式   注意线程竞速问题的解决

2015-02-11

ShmFifo源代码(C++版)

  我们首先完成C语言版本的shmfifo(基于过程调用), 然后在此基础上实现C++版本的ShmFifo, 将1块共享内存与3个信号量(1个mutext信号量, 1个full信号量, 1个empty信号量)封装成一个类ShmFifo, 然后编写各自的测试代码

2015-02-10

shmfifo源代码(C语言版)

使用消息队列即可实现消息的先进先出(FIFO), 但是使用共享内存实现消息的先进先出则更加快速; 所涉及计数: 将申请到的共享内存作为一块缓冲区, 读/写进程不断的从其中读出/写入数据, 而读/写进程则就相当于生产者/消费者了, 因此,使用信号量sem_mutex(初值为1)来互斥访问共享内存, 使用sem_full(初值为共享缓冲区块数), sem_empty(初值为0)来同步两个进程;

2015-02-10

NetCat后门工具

Netcat,Windows后门工具,希望能够遵守相关法律,谢谢

2014-01-25

C++面向对象多线程编程.pdf

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C++ 多范型设计.pdf

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C++程序员必备常识.pdf

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C++ 编程思想 第2卷 实用编程技术.pdf

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C/C++语言硬件程序设计基于TMS320C5000系列DSP

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C 库函数 Word版

C 库函数 Word版 千辛万苦找打的 的确很有用

2013-10-25

GDAL1.8 已经编译完成

一个师兄发给的GDAL1.8 已经编译完成的 省去了大家自己编译繁琐的步骤 遥感 图像处理

2013-10-25

Java 程序员上班那点事儿

Java 程序员上班那点事儿 全本 清晰扫描版 花了两块大洋买的

2013-10-24

C++ 标准模版库

C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集 合,它提供给程序员一些标准的数据结构的实现如 queues(队列), lists(链表), 和 stacks(栈)等. C++ STL 提供给程序员以下三类数据结构的实现: 标准容器类 顺序性容器 vector 从后面快速的插入与删除,直接访问任何元素 deque 从前面或后面快速的插入与删除,直接访问任何元素 list 双链表,从任何地方快速插入与删除 关联容器 set 快速查找,不允许重复值 multiset 快速查找,允许重复值 map 一对多映射,基于关键字快速查找,不允许重复值 multimap 一对多映射,基于关键字快速查找,允许重复值 容器适配器 stack 后进先出 queue 先进先出 priority_queue 最高优先级元素总是第一个出列

2013-10-20

codeblocks12.10汉化包

code blocks 汉化插件 1 解压压缩文件 将codeblocks mo文件放到codeblocks根目录下: CodeBlocks share CodeBlocks locale zh CN (locale和zh CN没有的话自己新建) 2 重启codeblocks: &quot;setting environment view internationnal &quot;构选这个选项 下拉框中选中“chinese” ok">code blocks 汉化插件 1 解压压缩文件 将codeblocks mo文件放到codeblocks根目录下: CodeBlocks share CodeBlocks locale zh CN (locale和zh CN没有的话自己新建) 2 重启codeblocks: &quot;setting environment view internationnal &quot;构选这个选项 下拉 [更多]

2013-08-09

C_free_中文版

很好用的一个C/C++开发工具,安装是需要加载密匙,只要百度一下就可以.

2013-08-07

空空如也

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

TA关注的人

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