- 浏览: 139553 次
- 性别:
- 来自: 天津
-
最新评论
文章列表
要计算下面线性方程组的解:
X1+X2-5X3-X4+X5=9
8X1+5X2-X3+4X5=2
3X1-7X2-5X3-X4+X5=4
2X1+X2+8X3+3X4-X5=-8
6X2+2X3+7X4-2X5=15
在Matlab中输入:
>> A=[1,1,-5,-1,1;8,5,-1,0,4;3,-7,-5,-1,1;2,1,8,3,-1;0,6,2,7,-2];
>> b=[9;2;4;-8;15];
>> x=sym(A)\sym(b)
>> xx=A\b
得到结果:
x =
...
1. vim使用
"$": 将光标移动到行尾
"^": 将光标移动到行首
"%": 匹配下一个括号
"0": 将光标移动到绝对行首
2. 进程休眠
sleep(int sec): 睡眠sec秒
usleep(int usec): 睡眠usec微 ...
<?php
function getIP()
{
static $realip;
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $ ...
在写网络程序的时候,建立TCP socket:
sock = socket(PF_INET, SOCK_STREAM, 0);
然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。
相关头文件中的定义:
AF = Address Family
PF = Protocol Family
AF_INET = PF_INET
所以在windows中AF_INET与PF_INET完全一样. 而在Unix/Linux系统中,在不同的版本中这两者有微小 ...
1. 基本解释
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
2. typedef + struct 的问题
下述代码在编译时会报错。
typedef struct tagNode
{
char *pItem;
pNode pNext;
} *pNode;
问题分析:
这语句实际上完成两个操作:
1) 定 ...
1. typedef int (*PFV)();
这是定义了一个函数指针,那么PFV p;就可以定义了一个指向函数的指针。
2. typedef int (*p[10])();
这是把p定义为函数指针数组,那么 p array;语句就可以定义了一个函数指针数组,数组名即为array,array这个数组含10个元素。
3. typedef int (*parray)[3];
这是定义了一个指向整型数组的指针,那么 parray ptr;就定义了一个指向数组的指针。如何对这个ptr赋值或者初始化呢?事实上,是通过二维数组名来对其进行赋值(初始化)的,因为二维数组名作 ...
[介绍]
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步
1.预处理,生成.i的文件[预处理器cpp]
2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
4.连接目标代码,生成可执行程序[链接器ld]
[参数详解]-x language filename
设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后
缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀
...
内存池的主要作用,简单地说来,便是提高内存的使用效率。堆内存的申请与释放(new/delete及malloc/free),涉及复杂的内存分配算法, 相比由简单CPU指令支持的栈内存的申请与释放,则是慢上了数量级。另一方面,栈的大小是有限制的,在需要大量内存的操作时,堆的使用是必要的。当然,频繁地申请与释放堆内存,效率是很低的,这也就是内存池出现的原因。
类似std::vector容器,在向vector里添加一个元素之前,该容器往往提前申请了一大块内存,实际添加时就只需要拿出其中一小块来使用,不用每添加一个都使用new一次。内存池所做的,也就是一次申请一块大内存,然后再小块小块地 ...
类的static数据成员的引入:
不同对象之间共享访问,本质上是对该类型所有对象,只维持一份拷贝。与全局变量相比,优势:
1. 静态数据成员仍然是在类域名字空间,没用进入程序的全局名字空间,因此不存在与程序中 ...
在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢?这个问题便是本章的重点:
声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。
下面我们用几个实例来说明这个问题,类的成员需要保护,通常情况下为了不违背类的封装特性,我们是把类成员设置为protected(保护状态)的,但是我们为了简化代码,使要说明的问题更为直观,更容易理解,我们在此处都设置为public。
以下程序我们来做一个模拟访问的例子,在程序中, ...
定义:
#include "/usr/include/sys/socket. h"
#include "/usr/includ/sys/if_packet. h"
packet_socket = socket(PF_PACKET, socket_type, protocol);
描述:
packet socket用于从设备驱动层接收或发送原始数据包, 可用于用户在物理层以上构建自己的通信协议.
socket_type 可为:SOCK_RAW或SOCK_DGRAM.
其中SOCK_RAW可用于发送原始数据包, 此时 ...
在linux环境中要从链路层(MAC)直接收发数据帧,可以通过libpcap与libnet两个动态库来分别完成收与发的工作。虽然它已被广泛使用,但在要求进行跨平台移植的软件中使用仍然有很多弊端。
这里介绍一种更为直接地、无须安装其它库的从MAC层收发数据帧的方式,即通过定义链路层的套接字来完成。
Packet套接字用于在MAC层上收发原始数据帧,这样就允许用户在用户空间完成MAC之上各个层次的实现。给无论是进行开发还是测试的人们带来了极大的便利性。
Packet套接字的定义方式与传送层的套接字定义类似,这个套接字的打开需要用户有root权限,如下:
packet_socket=socke ...
方法一:使用libnet,这里就不介绍了。
方法二:使用原始套接字
指定网卡发送数据的时候不需要指定网卡IP,只要设置struct ifreg ifr.ifr_name就可以了。
例如:
struct ifreq ifr;
fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
memset(&ifr, 0, sizeof (ifr));
strncpy(ifr.ifr_name, "eth0", sizeof (ifr.ifr_name) -1);
ifr.ifr_name[sizeof(ifr ...
一、三种类型的套接字:
1. 流式套接字(SOCKET_STREAM)
提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。
2. 数据报式套接字(SOCKET_DGRAM)
提供无连接的数据传输服务,不保证可靠性。
3. 原始式套接字(SOCKET_RAW)
该接口允许对较低层次协议,如IP,ICMP直接访问。
二、基本套接字系统调有有如下一些:
创建套接字: socket()
绑定本机端口: bind()
建立连接: ...
css称这些链接状态为伪类选择器,在css思考方式里,"真"类属性是用class=的属性来明确指定的,而伪类选择器则是用(:hover ; :visited ; :link ; :active)来指定,具体意义及顺序如下:
a: link用在未访问的连接上。
a :visited用在已经访问过的连接上。
a :hover用于鼠标光标置于其上的连接。
a :active用于获得焦点(比如,被点击)的连接上。
a:visited一定要放到a:hover前才会生效。
CSS样式 ...