openGL学习
由小到大绘制多个点,排成螺旋点击(此处)折叠或打开void RenderScene(void){ GLfloat x, y, z, angle; z = -50.0f; GLfloat zStep = 0...
perl网络编程
简单地发起连接测试连接ftp端口,将打印220 (vsFTPd 2.2.2)点击(此处)折叠或打开use Socket;$proto = getprotobyname('tcp');my $net_addr = inet_aton("1.1.1.2") or die "aton error $!";my $sock_addr = sockaddr_in(...
perl数据操作
一次给多个变量赋值($a, $b, $c) = ("aaa", "bbb", "ccc");print "$a $b $c\n";或者@ls = ("aaa", "bbb", "ccc");($a, $b, $c) = @ls;print "$a $b $c\n";散列%longday =( "Sun" => "Sunday", &n...
perl协程操作数据库
perl用open2打开两个管道,接管sqlplus的标准输入输出,管理数据库。点击(此处)折叠或打开use IPC::Open2;use POSIX;sub conn{ my $r = shift;  ...
perl文件操作
从绝对路径里得到目录名和文件名use File::Basename;use 5.010; 加载了5.010新特性后,就可以用say函数输出,相当于println$fname = "/usr/bin/perl";$bname = basename $fname;$dname = dirname $fname;say $dname;say $bname;也可以一次获取文件名、目录、后缀qr括起来的...
调用mysql
链接选项:-lmysqlcppconn点击(此处)折叠或打开#include <mysql_driver.h>#include <mysql_connection.h>#include <mysql_error.h>int main(){ sql::mysql::MySQL_Driver* driver;...
C语言创建内核容器
用clone()创建一个内核容器,也就是一组命名空间。点击(此处)折叠或打开#define _GNU_SOURCE#include <sys/types.h>#include <sys/wait.h>#include <sys/mount.h>#include <stdio.h>#inc...
boost 正则表达式解析配置文件或命令行
从字符串里取字段点击(此处)折叠或打开int main(){ boost::regex re("<(.*)>[ ]+(\\S+)=(\\S+)[ ]+(\\S+)=(\\S+)[ ]+(\\S+)=(\\S+)[ ]+(\\S+)=(\\S+)[ ]+(\\S+)=(.*)"); boost::cmatch cm;...
shared_ptr实现多线程读写copy-on-write
利用boost的shared_ptr可以实现“读不阻塞写”。过程中每次读取不需要拷贝数据,而只需要在要写的时候拷贝一份数据:点击(此处)折叠或打开#include <iostream>#include <cstdlib>#include <map>#include <vector>#include <boost/smart_ptr.hpp>...
boost shared_ptr, weak_ptr
头文件点击(此处)折叠或打开#include <boost/smart_ptr.hpp>#include <boost/make_shared.hpp>简单使用点击(此处)折叠或打开int main(){ boost::shared_ptr<string> sp(new strin...
函数指针使用c++类成员函数
使用一些C的库时,需要让类的成员函数对接C的回调函数指针。以pthread为例,利用类里的一个静态函数作为pthread_create的参数,将类的this指针传给这个静态函数,然后就可以想干什么干什么了。template class thr: public boost::noncopyable{private: typede...
单件模式
将构造函数设为私有,用静态函数初始化和返回全局唯一的实例。class one{private: static one* _o; int _i; one():_i(0){} ~one(){}public: static one* get() {if(!_o)_o = new one; return _o;} &nbs...
接管子进程的标准输入输出
有这样一种需求,希望让程序调用fdisk、mysql、sqlplus这种可以交互的命令,执行一些操作后分析输出结果,然后再根据这些结果决定如何执行下面的命令。这样就可以代替人工的判断和键盘输入。这种需求可以用管道来接管子进程的标准输入输出,甚至标准错误来完成。具体方法是1 用pipe(int)创建两个管道,分别用...
libpcap使用
验证安装引用pcap.h,确认是否能正常用libpcap开发#include <stdio.h> #include <pcap.h> int main(int argc, char *argv[]) { char *dev = argv[1];...
mmap
如果要把数据结构写到文件里,并且反复编辑这个文件,可能需要反复设置偏移量并进行读写操作。如果文件需要并发操作就更麻烦了。一个简单的办法就是用mmap函数吧文件的一个区域映射到一块内存上,把文件读写转化为内存操作,对内存的修改能自动反映到文件上。如果文件权限允许,mmap还可以实现文件的共享操作。...
dump索引结构
创建一张表T,及索引ITNSQL> create table t as select * from dba_objects;Table created.SQL> create index itn on t(object_name);Index created.查看索引结构SQL> select object_id from dba_objects where object_name = 'ITN'; OBJECT_ID----------&...
共享内存
使用共享内存的步骤#include <sys/ipc.h>#include <sys/shm.h>1 创建int shmget(key_t key, size_t size, int shmflg);2 attachvoid *shmat(int shmid, const void *shmaddr, int shmflg);3 使用和使用malloc的内存一样。4 detachint shmdt(const void *shmaddr);...
信号量
信号量实现的是课堂上“操作系统原理”里提到的经典PV操作即:semaphore s = 1;...P(s);critical code (临界区)V(s);...信号量可以近似理解为博物馆里的互动体验区:体验区有一个初始的机器数;每来一个人,机器数就减少1;每离开一个人,机器数就加1;当机器数降到...
epoll
poll和select相比最大优势在于可以管理更多的文件描述符。epoll和poll相比最大的有时是速度更快,减少了大量文件描述符从内核到用户态的拷贝。使用epoll的大体框架是1 创建epoll instalce,得到epoll的文件描述符调用epoll_create可以在内核创建一个epoll instance,返回这个instance的文件描述符。s...
poll与socket
poll函数与select类似,最显著的区别是提供fd的方式不一样。要让poll监控文件描述符的话,需要提供一个struct pollfd的数组。struct pollfd的内容如下/* Data structure describing a polling request. */struct pollfd{ int fd; /* File d...