Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

C标准库函数中复杂的函数声明

C标准库函数中复杂的函数声明

<signal.h> 中有一个复杂的函数声明。很叫人费解。void (*signal(int sig, void (*handler)(int)))(int);我们按照向右看向左看的黄金法则来分析这个函数声明。如果你不明白我在讲什么,请看 读懂C复杂声明的黄金法则。首先这个声明的主体是signal,这个应该没有争议。向右看,(int sig, void (*handler)(int)),括号和参数,说明signal是一个函数。第一个整形参数si...
读懂复杂C声明的黄金法则

读懂复杂C声明的黄金法则

黄金法则:从声明的变量开始,先向右看,再向左看,再向右看,再向左看 。如果向右看的时候遇到),则一直向左看,直到遇到(跳出这层括号。然后再重复向右看,向左看。举例说明:例子1int a;a 的右边什么都没有,向左看int,说明a是一个int型变量。例子2char *a;向右看,什么都没有; 向左看是*, 说明a是一个指针; 再向右看,什么都没有; 再向左看是char,说明a是一个指向char的指针。例子3int *a[];向右看,[]说明a是一个数组;向左...
Linux线程的信号量同步

Linux线程的信号量同步

信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。不多做解释,要使用信号量同步,需要包含头文件semaphore.h。主要用到的函数:int sem_init(sem_t *sem, int pshared, unsigned int value);,其中sem是要初始化的信号量,pshared表示此信号量是在进程间共享还是线程间共享,value是信号量的初始值。int sem_destroy(sem_...
ExtJS 6有什么新东西?

ExtJS 6有什么新东西?

ExtJS在Sencha框架中引入了许多新的和令人兴奋的改进。这些变化为基于所有现代浏览器、设备和屏幕尺寸带来了新的功能和可用性。工具包(ToolKits)ExtJS 6最大的变化就是将ExtJS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序。那些具有独特功能的东西将会被分解为两个绝然不同的两个工具包:古典(Classic)和现代...
浅析Objective-C字面量

浅析Objective-C字面量

编写Objective-C程序时,总会用到某几个类,它们属于Foundation框架。虽然从技术上来说,不用Foundation框架也能写出Objective-C代码,但实际上却经常要用到此框架。这几个类是NSString、NSNumber、NSArray、NSDictionary。从类名上即可看出各自所表示的数据结构。Objective-C以语法繁杂而著称。事实上的确是这样。不过,从Objective-C 1.0起,有一种非常简单的方式能创建NSStri...
Objective-C中Block语法、Block使用以及通过Block实现数组排序

Objective-C中Block语法、Block使用以及通过Block实现数组排序

Block:语法块,本质上是匿名函数(没有名称的函数)标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数在C++、JS、Swift等语言有类似语法,叫做闭包Block语法和C语言里的函数指针很相似,下面我们先来回顾下C语言中的函数和函数指针C语言中函数是指:实现某一功能的代码段完整的函数包括两部分:函数声明、函数定义函数声明,即函数原型。例如:int sum (int x,int y);具有两个整形参数,一个整形返回值的函数函数定义,即函数实现...
Hibernate4之Hello World(基础环境搭建)

Hibernate4之Hello World(基础环境搭建)

刚开始复习Hibernate,刚复习时,发现全忘了,连环境搭建都不会了,等于从头再来啊,没办法硬着头皮,只得从头再来了。Hibernate是一款优秀的ORM框架,即object relation mapping 对象关系映射。我的理解就是自动把pojo类对象的操作转为对数据库中相应表的操作。简单说就是创建一个pojo类对象,那么数据库中相应的表中也会插入这么一个对象。修改,删除,当然也是的了。可以理解就是尽可能的隔离数据库操作与java开发。一、下载Hib...
Lua正则表达式(string函数)

Lua正则表达式(string函数)

下面的表列出了Lua支持的所有字符类: . 任意字符%a 字母%c 控制字符%d 数字%l 小写字母%p 标点字符%s 空白符%u 大写字母%w 字母和数字%x 十六进制数字%z 代表0的字符在模式匹配中有一些特殊字符( ) . % + - * ? [ ^ $%用作特殊字符的转义字符,因此 "%." 匹配字符点".", "%%"匹配字符 "%" .转义字符"%"不仅可以用来转义特殊字符,还可以用于所...
Linux 网络编程——IP 数据报格式详解

Linux 网络编程——IP 数据报格式详解

IP 数据报首部TCP/IP 协议定义了一个在因特网上传输的包,称为 IP 数据报 (IP Datagram)。这是一个与硬件无关的虚拟包,由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首都中的源地址和目的地址都是 IP 协议地址。IP 数据报首部的固定部分中的各字段:1)版本:占4位,指IP协议的版本。通信双方使用的 IP 协议版本必须一致。日前广泛...
Linux 网络编程——TCP 和 UDP 数据报文式详解

Linux 网络编程——TCP 和 UDP 数据报文式详解

TCP 报文格式TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 报文段的报头有 10 个必需的字段和 1 个可选字段。报头至少为 20 字节。报头后面的数据是可选项。1)源端口(16位)标识发送报文的计算机端口或进程。一个 TCP 报文段必须包括源端口号,使目的主机知道应该向何处发送确认报文。2)目的端口(16位)标识接收报文的目的主机的端口或进程。3) 序号(...
Linux 网络编程—— libnet 使用指南

Linux 网络编程—— libnet 使用指南

概述通过《原始套接字实例:发送 UDP 数据包》的学习,我们组 UDP 数据包时常考虑字节流顺序、校验和计算等问题,有时候会比较繁琐,那么,有没有一种更简单的方法呢?答案是:借助 libnet 函数库。libnet 是一个小型的接口函数库,主要用 C 语言写成,提供了低层网络数据包的构造、处理和发送功能。libnet 的开发目的是:建立一个简单统一的网络编程接口以屏蔽不同操作系统底层网络编程的差别,使得程序员将精力集中在解决关键问题上。libnet 库提供...
libnet 函数列表

libnet 函数列表

libnet提供的接口函数按其作用可分为四类:* 内存管理(分配和释放)函数* 地址解析函数* 数据包构造函数* 数据包发送函数以下分别列出这些接口函数及其功能(其参数含义简单易懂,不再解释):★内存管理函数单数据包内存初始化:int libnet_init_packet(u_short packet_size, u_char **buf);单数据包内存释放:void libnet_destroy_packet(u_char **buf);多数据包内存初始...
Android应用安全之数据传输安全

Android应用安全之数据传输安全

Android软件通常使用WIFI网络与服务器进行通信。WiFi并非总是可靠的,例如,开放式网络或弱加密网络中,接入者可以监听网络流量;攻击者可能 自己设置WIFI网络钓鱼。此外,在获得root权限后,还可以在Android系统中监听网络数据。不加密地明文传输敏感数据 最危险的是直接使用HTTP协议登录账户或交换数据。例如,攻击者在自己设置的钓鱼网络中配置DNS服务器,将软件要连接的服务器域名解析至攻击者的另一台服务器在,这台服务器就可以获得用户登录信息...
<< 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 >>