- 博客(128)
- 资源 (46)
- 收藏
- 关注
原创 用OTL库连接读取access数据库
一.环境及创建一个数据库编程环境:VS2010数据库:access2007OTL库载地址:http://otl.sourceforge.net/home.htm使用access2007创建一个数据库 MetGS.accdb ,表名为:ModelInfo二. 添加用户数据库源 控制面板---管理工具---数据源(ODBC)-----用户D
2015-09-15 15:58:51 1723 6
原创 Ubuntu下VirtualBox虚拟机与主机机互相ping通的简单配置心得
virtualbox 是个非常优秀的软件,通常与主机之间有3种方式,Bridged方式,NAT方式,host-only方式,安装的默认方式是NAT,但是这种方式在virtualbox虚拟机下有个缺点,就是虚拟机可以ping通主机,虚拟机也可以通过主机访问外网,但是主机ping不通虚拟机,让人很头痛.linux下在装个虚拟机本来想配置个服务器,现在都ping不通,还怎么玩.下面,我慢慢说下我的解决方
2015-08-06 11:38:22 20676 1
原创 二叉排序树
1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree)。其定义为:二叉排序树或者是空树,或者是满足如下性质的二叉树:①若它的左子树非空,则左子树上所有结点的值均小于根结点的值;②若它的右子树非空,则右子树上所有结点的值均大于根结点的值;③左、右子树本身又各是一棵二叉排序树。2.二叉排序树的性质
2015-07-03 19:40:43 888
原创 POSIX条件变量
一.条件变量 当一个线程互斥地访问某个变量时,可能发现在其他线程改变状态之前,它什么也做不了.例如,一个线程访问队列时,发现队列为空,它只能等待,直到其他线程将一个节点添加到队列中,这种情况需要条件变量. 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,
2015-06-08 11:40:58 1296
原创 POSIX信号量与互斥锁
3种用于线程同步的机制: POSIX信号量,互斥锁和条件变量一.POSIX信号量常用的POSIX信号量函数如下 int sem_init(sem_t *sem, int pshared, unsigned int value);//初始化一个信号量 int sem_destroy(sem_t *sem); //销毁信号量 int sem_w
2015-06-07 22:20:39 963
原创 POSIX线程(二)
一. 线程属性 (1) 初始化与销毁属性 int pthread_attr_init(pthread_attr_t *attr); int pthread_attr_destroy(pthread_attr_t *attr); (2)获取与设置分离属性 int pthread_attr_setdetachstat
2015-06-06 19:17:14 633
原创 POSIX 线程(一)
一. POSIX线程先关函数POSIX线程库 与线程有关的函数构成一个完整的系列,绝大多数函数的名字都是以"pthread"打头的 要使用这些函数库,引入头文件 连接这些线程函数库时要使用编译器命令的"-lpthread"选项1. pthread_create函数功能:创建一个新的线程原型: int pthread_create(pthread_t
2015-06-06 17:35:15 676
原创 线程简介
一. 什么是线程 在一个程序里的一个执行路线就叫做线程(thread).更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程.二. 进程与线程 进程是资源竞争的基本单位 线程是程序执行的对小单位 线程共享进程数据,但也拥有自己的一部分数据 线程ID 一组寄存器 栈
2015-06-06 11:39:31 650
原创 POSIX共享内存
POSIX共享内存不需要自己手动挂载,只要打开成功,就会自动挂载.一般挂载在 /dev/shm 目录下cd /dev/shmod -c xyz 1. shm_open 函数功能:用来创建或打开一个共享内存对象原型: int shm_open(const char* name,int oflag,mode_t mode);参数: name:共享内存
2015-06-06 10:40:29 1769
原创 posix 消息队列
System V IPC 消息队列 共享内存 信号量POSIX IPC 消息队列 共享内存 信号量 互斥锁 条件变量 读写锁 自旋锁 文件锁 Posix消息队列 和 System v消息队列的区别(1) 对posix消息队列的读总是返回最高优先级的最早消息,对syste
2015-06-05 15:46:51 596
原创 System V共享内存与信号量综合应用之生产者与消费者问题解决
一.生产者---消费者问题有一个仓库(缓冲区),生产者生产出来的东西往里面扔,消费者从里面取东西。如何安排能够使两者之间不冲突。一些基本的约束条件: 1.仓库只有一个,且有固定大小。生产者有多个消费者有多个 2.生产者占用仓库前要判断仓库是否满,满了就不能争用 3.消费者使用仓库前要判断仓库是否空,空了就不能争用 4.仓库中要么只有消费者要么
2015-05-26 16:33:21 2734 2
原创 System V 信号量(三)之用信号量解决哲学家进餐问题
一.哲学家就餐问题 5个哲学家,5个筷子。5个哲学家围坐在一张桌子上,筷子放在分别放在每个哲学家的两旁。如果所有哲学家在某个时刻同时拿起左边的筷子,那么右边的筷子就都被其他的哲学家拿了,造成大家都无法吃饭。但是大家都不想放下左边的筷子(规则是先拿起左边筷子在拿起右边的,吃完饭在放下左,再放下右),这就是死锁。解决这个问题有个办法是在拿起筷子前先判断左右两个筷子是否
2015-05-26 10:25:56 22218 1
原创 System V 信号量(二)
一.进程的同步与互斥 进程间的两种关系:同步和互斥。 同步就是把异步环境下的一组并发进程,因直接制约而互相发送消息,二者进行互相合作、互相等待,使得各进程按一定的速度执行的过程。 互斥是指不允许两个以上的共享该资源的并发进程同时进入临界区。其中直接制约是指一组在异步环境下的并发进程,各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程。由于共享某
2015-05-25 21:30:28 595
原创 System V 信号量(一)
一.信号量 信号量和P,V原语由Dijkstra提出 信号量 互斥:p,v在同一个进程中 同步:p.v在不同进程中 信号量值含义 s>0:s表示可用资源的个数 s=0:表示无可用资源,无等待进程 s struct semaphore {
2015-05-25 10:45:43 744
原创 System V 共享内存
一.共享内存数据结构对于每个共享内存区,内核维护如下信息结构,定义在, 在ubuntu中路径:/usr/include/linux/shm.h二. System V共享内存函数:#include #include int shmget(key_t key, size_t size, int shmflg); void *shmat(
2015-05-23 23:39:17 646
原创 共享内存简介
一.共享内存 共享内存区是最快的IPC形式,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据.上图需要经过四次数据复制使用共享内存,只需要两次系统调用.二、mmap 函数#include 功能:将文件或者设备空间映射到共享内存区。原型 void *mma
2015-05-23 14:42:01 638
原创 System V消息队列(三)
利用消息队列实现回射客户/服务器队列达到复用的目的 类型区分: 服务器用1标识类型,客户端用自己的进程 标识类型 对于服务器端来说,接收到一个消息结构体的类型如果为1,表示是客户请求,而mtex 字段的前4个字节存放着不同进程的pid ,后续字节才是真正的数据,服务器回射客户端时,将pid 作为类型,mtex 为实际数据,客户端只接收对应类型的数据,故可以区分不同
2015-05-23 10:54:04 595
原创 Sytem V消息队列(二)
一.msgsnd 函数 功能:把一条消息添加到消息队列中 int msgsnd( int msqid, // 由msgget返回的消息队列标志吗 const void *msgp, // 一个指针,只想准备发送的消息 size_t msg
2015-05-23 10:03:23 988
原创 System V 消息队列(一)
一、消息队列 1、消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法 2、每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值 3、消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先入先出。 4、消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列
2015-05-23 09:14:17 725
原创 16.unix域协议
一.Unix域协议Uinx域套接字有几个理由: UNIX域套接字用于在同一台机器上运行的进程之间的通信。虽然因特网域套接字也可以达到同一目的,但UNIX域套接字的效率更高。 UNIX域套接字仅仅复制数据;它们并不执行协议处理,不需要添加或删除网络报头,无需计算检验和,不要产生顺序号,无需发送确认报文。 UNIX域套接字
2015-05-17 23:43:24 575
原创 15.基于UDP协议的聊天室程序
使用UDP协议完成一个聊天室程序的小项目,大部分代码都有注释,一看就能看到的.实现的功能: (1)查看/显示已经登陆的用户信息 (2)向已登陆的用户发送消息 (3)输出错误消息,给予提示 (4)退出共有三个文件:chat_public.h
2015-05-17 23:14:22 3019
原创 14.基于UDP协议的socket编程(1)
一.UDP 网络通信模型下面依照通信流程,我们来实现一个UDP回射客户/服务器服务器程序#include #include #include #include #include #include #include #include #define ERR_EXIT(m) \ do{ \ perror(m); \ exit(EXIT
2015-05-09 16:52:33 572
原创 13.epoll
一.用C++ 和 epoll 实现一个服务器 用C++ 实现一个epoll并发服务器#include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl
2015-05-09 13:31:46 688
原创 Linux基础知识复习之命令篇
一.常用命令1.目录结构/bin:常用命令/boot:启动程序/dev:设备文件/etc:启动,关闭,配置程序与文件/home:用户工作根目录/lib:共享连接库/root:超级用户的工作目录/sbin:系统管理员常用管理程序/tmp:临时文件/lost+found:系统出现异常时,用于保存部分资料/misc:常用工具/mnt:光驱,硬盘等的挂载点/media:光驱的自动挂载
2015-05-05 14:13:02 1327
原创 shell脚本编程基础
shell编程基础变量:字符串,数字,环境和参数条件:shell中的布尔值程序控制:if,elif,for,while,until,case命令列表函数shell内置命令获取命令的执行结果 shell脚本是一个包含一系列命令的文本文件. 语法: #!/bin/sh 符号#!用来指定该脚本的解析程序. 修改脚本的属性: chmod +x file
2015-05-02 11:49:10 646
原创 STL案例代码
//1.指针迭代器#include #include using namespace std; #define SIZE 100int iarray[SIZE]; int main(){iarray[20] = 50;int* ip = find(iarray, iarray + SIZE, 50);if (ip == iarray + SIZE)/
2015-04-28 17:36:59 1040 2
原创 智能指针的那些事
C++不像Java,C#语言,它没有垃圾回收机制,但是它提供了强大而灵活的管理机制,使得开发人员自己避免内存泄露。可以通过new 获得内存或创建对象,一定使用delete来释放,这样就避免内存泄露。同时也可以将分配和使用用类封装,从而保证没有内存泄露。#include using namespace std; #include #include class simpl
2015-04-17 09:19:12 836
原创 QT中 uic 工具的使用
使用QT设计师设计的窗口部件,用uic 工具可以转换成C++代码:(1)首先用QT设计师设计一个窗口,选择一个英文目录下,保存为gotocelldialog.ui我的文件保存在:F:\qt-program\gotocell(2)在该目录下创建一个 main.cpp 文件,内容如下:#include #include #include "ui_gotocelldialog
2015-03-30 15:44:04 13303
转载 Centos6.4下安装mysql数据库
转载地址:点击打开链接一、mysql简介说到数据库,我们大多想到的是关系型数据库,比如mysql、oracle、sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱不得不首先推荐的是mysql数据库了,而且Mysql数据库的第一个版本就是发行在Linux系统上的。MySQL是一个关系型数据库管理系统,由瑞典MySQL
2015-03-28 23:51:34 637
原创 Error: Cannot find a valid baseurl for repo: base
我是安装没有图形界面的Centos Linux 系统上安装软件出现问题的,解决方法也很简单的,就是没有配置DNS。 解决方案: (1)用VI打开:vi /etc/resolv.conf 输入内容: nameserver 8.8.8.8 如果没有安装vi,可以直接使用重定向: echo "nameserver 8.8.8
2015-03-27 15:15:35 584
原创 设计模式-------代理模式(ProxyPattern)
人物: 卓贾易 戴励 娇娇实现要求: 桌贾易心里喜欢娇娇, 戴励与娇娇关系好,桌贾易也和戴励关系好,所以,桌贾易让戴励代替自己给娇娇送礼物。第一版: 没有代理的代码
2015-03-18 09:08:25 487
原创 设计模式----装饰模式
装饰模式(Decorator Pattern):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。实例: 显示一个人的穿衣第一版: 直接使用一个Person类来实现穿衣 第二版: 把人和服饰类分开了,穿衣的一些表现通过继承与服饰类 第三版: 使用装饰模式
2015-03-15 21:38:39 440
原创 设计模式----简单工程模式
简单工程模式:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 使用简单工程模式实现一个计算器类:源代码如下:// Operation.csusing System;using System.Collections.Generic;using System.Li
2015-03-15 20:46:53 1236
原创 vim的J简单配置
$ vim ~/.vimrcset nu # 设置行号set autoindent # 设置自动换行set ts=4 # 设置tab为4个空格长度systax on # 进行语法检查,颜色显示保存后,退出,就可以了,以后就是这种设置了
2015-01-14 20:35:16 808
转载 fork()函数的基本使用
摘要:本文详解介绍fork()函数的基本使用,以及父子进程之间的关系.子进程对变量的改变不会影响到父进程、子进程对父进程文件流缓冲区的处理和子进程对父进程打开的文件描述符的处理.创建进程1.fork()函数函数定义:#include pid_t fork(void);返回值:如果返回值大于零,表明处于父进程上下文环境中,返回值是子进程的ID.如果返回值是零,表明处于子进程上
2015-01-11 22:11:21 1150
原创 4. Qt的容器类
Qt提供来一组通用的基于模板的容器类.一. QList类,QLinkedList类 和 QVector类 QList类、QLinkedList类和QVector类经常使用到的Qt容器类有QList、QLinkedList和QVector等。在开发一个较高性能需求的应用程序时,程序员会比较关注这些容器类的运行效率,下表列出了QList、QLinkedList和QVector容
2014-12-21 08:49:19 1350
原创 3.字符串类QString
一. QT功能模块 (1)QtCore: Qt的基本模块,所以其他模块都依赖次模块. (2) QtGui: 定义来图形用户界面. (3) QtNetWork: 定义来QT的网络编程类. (4) QtQpenGL: 定义来QpenGL的支持类. (5) QtSql: 定义来访问数据库的类. (6)
2014-12-20 23:08:43 755
深度探索C++对象模型.pdf
2014-08-24
UNIX网络编程卷2进程间通信(第2版)
2015-05-23
Dev-Cpp 5.10 TDM-GCC 4.8.1 Setup.exe
2015-04-24
C++ Primer 课后习题答案
2015-04-17
王爽汇编语言第二版(全部).ppt
2014-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人