暂无个人介绍
1、给string赋char*型值,通过以下方式: 构造函数 string ( const char * s, size_t n ); string ( const char * s ); //要求s指向的C风格的字符串必须以'\0'结尾。
1、使用printf应当说是类型不安全的。所以才引入了C++的流输入输出。 比如: #include "stdint.h" #include "iostream" using namespace std; int main() { in...
学习写一个最简单的web交互页面,可以向apache传送数据,通过cgi接受,并返回数据。 示例代码 View Code $("#my").click(function() {var id1 = document.
1、协议 语法:通信双方“如何讲” 语义:确定通信双方“讲什么” 时序:通信双方“讲话”的次序 2、TCP与UDP 3、套接字使用地址结构为: sockaddr IP v4地址为: sockaddr_in 4、阻塞与非阻塞 ...
一、head与od 1、head -n 18 filename.cpp | tail -n 1 head [OPTION]... [FILE]... //output the first part of files -n, --lines=[-]N print the first N lines instead of the first 10; with the leading '-', print all but the last N lines of each file。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。 1、格式 scp [-124rv][-P port] [[user@]host1:]file1 [.
epoll是做为一个虚拟文件系统来实现的,这样做至少有以下两个好处: 1、可以在内核里维护一些信息,这些信息在多次epoll_wait间是保持的,比如所有受监控的文件描述符。 2、epoll本身也可以被poll/epoll; 【1】epoll的实现中,所等待的设备就绪后,便调用call_back函数,把该设备加入到就绪队列中,避免了像poll那样设备就绪后再次轮询所有设备找就绪者,由O(n)降到O(1)。
Q1 What happens if you add the same fd to an epoll_set twice? A1 You will probably get EEXIST.
说明:本文来自翻译epoll man文档。 1、ET,LT这两种事件分发机制的不同。我们假定一个环境: 1. The file descriptor that represents the read side of a pipe ( RFD ) is added inside the epoll device.
linux中使用TCP通信示例 socket通信,是最常见的风格应用。 示例代码
1、epoll使用模型 示例程序1 View Code for(;;){ nfds = epoll_wait(epfd, events, 20, 500);for(i = 0; i ptr, strlen((char*)md->ptr), 0 ); //发送数据 ev.
1、基于概念 epoll是一种机制,来处理大量并发连接时事件的读写顺序。 在linux的网络编程中,很长的时间都在使用select来做事件触发。2.5.X内核后,引入epoll。 epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
在linux下输入或显示中文或通过secureCRT连接linux,常有中仍乱码,关键是要设置中文字符集,通过locale这个变量。 Locale是软件在运行时的语言环境,它包括语言(Language),地域(Territory)和字符集(Codeset)。
1、基本规则 锚点----标识位置 ^: 表示句首. $: 表示句尾. \: 表示詞尾. 修饰符 *: 表示前一個 char. set 的出現次數為 0 或多次,[a-z]+able.
1、Usage: grep [OPTION]... 'PATTERN' [FILE]... Search for PATTERN in each FILE or standard input. PATTERN is, by default, a basic regular expression (BRE). Example: grep -i 'hello world' menu.h main.c 2、常用参数【option】 1)-E,--extended-regexp 采用扩展表示式去解释样式。
1、recv和send函数提供了和read和write差不多的功能。但是他们提供了第四个参数来控制读写操作. int recv(int sockfd,void *buf,int len,int flags) int send(int sockfd,void *buf,int len...
1)安装vim-enhanced包 rpm -qa | grep vim (一般都有安装包,此步可省) 2)修改secureCRT的属性:Options->SessionOptions ->Emulation,然后把Terminal类型改成xterm,并点中ANSI Color复选框。
1、在[1]中下载软件。 2、./configure && make && make install 3、上面安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下, 下面创建软链接, 并命名为rz/sz: # cd /usr/bin # ln -s ...
c_str()返回的指针保证指向一个size()+1长的空间,而且最后一个字符肯定'\0'。而data返回的指针则保证指向一个size()长度的空间,有没有null-terminate不保证,可能有,可能没有,看库的实现了。
1、一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。 SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。
1、shell基本 2、父shell在执行shell命令时,通常是创建子shell,继承父shell环境,执行命令,退出,相关环境销毁;父shell得到子shell的退出状态。 通过命令.或source来使其有当前环境中执行,而不创建子进程。
说明,以下文字转载自【1,2】 1、Get和Post的区别 HTTP请求格式: [] 在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。
CGI全称Common Gateway Interface(共同编程接口),是一种编程接口,不论什么语言,只要按照该接口的标准编写出来的程序,即可叫做CGI程序。CGI 程序的输入/输出是使用编程语言的标准输入/标准输出,所以用C/C++来写 CGI 程序就好象写普通程序一样。
1、Computers – YaST – Install Software – Set filter to “Patterns” then select and accept “Web and LAMP” under Server functions. 2、yast2 –install apache2 opensuse11:~ # cd /srv/www/htdocs opensuse11:~ # vi index.html opensuse11:~ # rcapache2 start http://localhost 可以察看网页。
1、YaST--System--Choose Language选简体中文 2、YaST-Software-Install and Remove Software,在Filter的下拉框中选Package Groups,搜索System-I18n-Chinese或Chinese,把找到的安装包选中,安装。
1、修改suse主机名【1】 修改/etc/HOSTNAME文件,例如: SLES-1 然后运行命令设置主机名 # /etc/rc.d/boot.localnet start 2、修改IP 1)命令 #ifconfig eth0 静态IP地址 netm...
1、在Linux2.2内核中,并不存在真正意义上的线程。当时Linux中常用的线程pthread实际上是通过进程来模拟的,也就是说Linux中的线程也是通过fork()创建的“轻”进程,并且线程的个数也很有限,最多只能有4096个进程/线程同时运行。
查看SUSE版本信息 1、cat /proc/version 内核版本 #cat /proc/version 2、uname -a 内核版本 3、lsb_release -a 发行版本 4、cat /etc/SuSE-release 可以看...
今天写了个简单的mysql程序,通过C语言。 示例代码 View Code #include "stdio.h"#include "mysql.h"#include #include "stdlib.
今天装了mysql,结果登录不了,每次登录,都提示:"Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock",在网上找了资料,原来是服务没有启动。
1、今天在通过secureCRT连接虚拟机上的suse时,超时。 经查证是,使用【1】中的方法后,没有问题了。 SUSE默认的防火墙设置为禁止所有外来联结。 【 手动修改: #vi /etc/sysconfig/SuSEfirewall2 #TCP端口的情况: FW_SERV...
3)合并线程:pthread_join int pthread_join(pthread_t* thread, void **ret); 第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。
1、在Linux中,线程一般被认为是“轻量级的进程”。 Linux 创建进程所使用的函数是fork()或者vfork()。而对线程的创建和管理Linux可以使用POSIX的线程库pthreads提供的APIs。
线程取消的方法是向目标线程发Cancel信号,但如何处理Cancel信号则由目标线程自己决定,或者忽略、或者立即终止、或者继续运行至Cancelation-point(取消点),由不同的Cancelation状态决定。
说明:本文由【2,3】整理而得。 这篇文章主要从一个 Linux 下一个 pthread_cancel 函数引起的多线程死锁小例子出发来说明 Linux 系统对 POSIX 线程取消点的实现方式,以及如何避免因此产生的线程死锁。
以下内容根据【1】进行整理。关于取消点,将在后面进一步讨论。 1、一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。
2)条件变量(cond) 利用线程间共享的全局变量进行同步的一种机制。条件变量上的基本操作有:触发条件(当条件变为 true 时);等待条件,挂起线程直到其他线程触发条件。 int pthread_cond_init(pthread_cond_t *cond,pthread_cond...
5)线程私有数据 进程内的所有线程共享进程的数据空间,因此全局变量为所有线程所共有。但有时线程也需要保存自己的私有数据,这时可以创建线程私有数据(Thread-specific Date)TSD来解决。
(2)线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。
说明:以下内容,根据参考中【1~6】内容整理而得。 一、基本概念 1、线程是计算机中独立运行的最小单位。进程是分配资源的单位。 2、为什么使用多线程? (1)启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。
一. 常用编译命令选项 假设源程序文件名为test.c。 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。
一、什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
数字与字符的相互转换,通常情况下atoi,itoa,但是,这有两个问题,一是: (1)只能是int与char的转换,也就是说,数据最大值应当小于2G。 (2)在linux中,没有itoa。
8)objects = *.o 通配符同样可以用在变量中。并不是说[*.o]会展开,objects的值就是“*.o”。Makefile 中的变量其实就是 C/C++中的宏。如果你要让通配符在变量中展开,也就是让 objects 的值是所有[.o]的文件名的集合,那么,你可以这样:objects := $(wildcard *.o),这种用法由关键字“wildcard”指出。
4)变量的引入 变量的引入和应用: CC=gcc HD=-I headers SC=-c $
1、make是一个解释makefile中指令的命令工具。Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。
首先要明确一点:当我们调用new表达式时,做两件事:使用operator new()分配内存,然后调用构造函数。在delete中调用析构函数,然后用operator delete()释放内存。
在读取配置文件时,window环境下,有GetProfileString函数,而Linux下则没有。我写了一个能实现其功能的函数,如下所示,基本思想是捉住配置文件中用“[]”标记的段没有“=”,而非“[]”段有“=”这一特征,先找section段,再找键,得到对应的值。
1、unix风格的错误机制下,当函数,如wait执行出错后,it returns -1 and sets the global variable errno to an error code that indicate the cause of the error.如果成功,则返回有用的结果。
一、排版 1.相对独立的程序块之间、变量声明之后必须加空行。 int conn_fd; int ret; conn_fd = socket(AF_INET, SOCK_STREAM,0); if (conn_fd < 0) { perror("socket create"); } 2.程序块要采用缩进风格编写,缩进为4个空格或一个Tab键。