- 博客(115)
- 收藏
- 关注
转载 digest鉴权
转自:http://blog.renren.com/share/1414450682/14622488039“摘要”式认证( Digest authentication)是一个简单的认证机制,最初是为HTTP协议开发的,因而也常叫做HTTP摘要,在RFC2671中描述。其身份验证机制很简单,它采用杂凑式(hash)加密方法,以避免用明文传输用户的口令。摘要认证就是要核实,参与通信的双方
2016-09-22 13:16:56
2317
转载 安全编码实践
转自: http://www.uml.org.cn/safe/201212174.asp安全编码实践 作者:chengyun_chu,发布于2012-12-17, 来源:优快云 目录:安全编码实践之一:GS编译选项和缓存溢出安全编码实践之二:NXCOMPAT选项和数据执
2016-06-08 09:54:24
2595
转载 九大排序算法再总结
转自:http://blog.youkuaiyun.com/xiazdong本文是 http://blog.youkuaiyun.com/xiazdong/article/details/7304239 的补充,当年看了《大话数据结构》总结的,但是现在看了《算法导论》,发现以前对排序的理解还不深入,所以打算对各个排序的思想再整理一遍。本文首先介绍了基于比较模型的排序算法,即最坏复杂度都在Ω
2015-03-26 10:23:01
761
转载 常见排序算法小结
转自:http://blog.youkuaiyun.com/whuslei/article/details/6442755排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张
2015-03-26 10:19:16
611
原创 “bind failed on XXXX: Address already in usr”问题
今天调试一个http服务的时候,发现服务重启时,
2014-11-12 16:51:37
1349
转载 linux install 命令
install 1.作用 install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。 2.格式 (1)install [选项]... 来源 目的地 (2)install [选项]... 来源... 目录 (3)install -d [选项]... 目录... 在前两种格式中,会将复制至或将多个文件复制至已存在的,同时设定权限模式及所有者/所属组。在第三
2014-11-07 09:56:28
892
原创 嵌入式linux自动挂载U盘
hotplug+mdev机制实现U盘自动挂载、卸载【背景1】 自动挂载磁盘分区的操作从底层来说,是要内核支持的,2.6 内核的sysfs 虚拟文件系统就提供了这一支持,这个文件系统 (/sys/) 通常用于反应系统硬件信息,总线上的设备变化、网络设备的变化等事件在这里都能反应出来,这个文件系统的变化配合上内核的 hotplug 机制就可以掌握硬件改动相关的信息。 说
2014-11-03 14:49:40
1371
原创 一个关于UDP socket服务端接收长度不正确的问题
最近项目需要实现一个通过UDP协议和远端服务平台通讯的需求,简要描述如下:本端为嵌入式linux路由器(udp客户端,linux C编码),远端为租用的阿里云服务器(udp服务端,java编码),通信协议为UDP,本端会定时向远端服务器发送消息。在实现和调试过程中发现一个问题:1)将远端服务程序放在实验室pc机上调试没有问题,即“路由器-PC”交互正常。2)将远端服务程序放
2014-11-01 21:10:12
3017
原创 linux文件系统类型及mount
1. 查看系统所支持的文件系统的方法1.1 通过命令查看 mount df fdisk file parted fstab1.2 通过系统文件查看 cat /proc/filesystems ls /lib/modules/2.6.x/kernel/fs 例如, # ls /lib/modu
2014-10-30 18:08:26
3642
转载 linux嵌入式系统下实现U盘、SD卡自动挂载功能
在 Linux的嵌入式系统中我们经常用到U盘、SD卡的挂载,而每次都手动挂载或卸载非常麻烦,我们可以采取以下方法实现自动挂载或卸载U盘、SD卡这就要用到mdev了其具体操作如下:1、首先在/etc/init.d/rsC中加入以下语句echo /sbin/mdev > /proc/sys/kernel/hotplug2、在/etc/下简历m
2014-10-30 11:43:11
1194
原创 Linux 编程 之 【socket】 getaddrinfo
【说明】 包含头文件: #include 函数原型: int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **res ); 参数说明: hostname 一个主机名或者地址串(IPv
2014-10-22 19:07:58
1476
原创 Linux 编程之 【socket】 udp
【说明】1)select用法2)udp客户端bind用法 tcp客户端调用bind是没有任何意义的,因为connect中已包括bind客户端地址和端口的操作,即使执行bind也会被connect覆盖。 udp客户端可以通过bind绑定本地地址和端口,其中,注意绑定 INADDR_ANY 地址 和 0 端口的用法。 分别代表由内核分配地址和端口,效果相当于未调用bin
2014-10-09 16:16:18
1139
原创 另眼看HTTP的GET与POST
之前接触http的机会不多,最近遇到一个需要用c语言实现http交互的问题,因此,就上网学习一下相关文章。 关于http的GET与POST方法的区别,网上有很多文章介绍,这里我也推荐两篇很不错的博文: http://blog.youkuaiyun.com/darxin/article/details/4944225 点击打开链接 http://blog.youkuaiyun.com/
2014-09-16 11:52:04
1159
1
转载 5分钟搞定内存字节对齐
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧. /******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?体系结构的对齐和不对齐
2014-09-11 11:57:51
617
转载 linux 编程SOCKET(经典)
Linux系统编程---socket编程1. 预备知识1.1. 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络
2014-09-11 11:28:11
1181
转载 tcp socket发送缓冲区、接受缓冲区、滑动窗口协议之间的关系
原文:http://webseo8.net/newsinfo.aspx?type=0&id=220&page=0 点击打开链接对于每一个TCP的SOCKET来说,都有一个发送缓冲区和接受缓冲区与之对应,下面举个例子说说发送缓冲区、接受缓冲区、滑动窗口协议之间的关系。一、recv端 在监听套接字上准备accept,在accept结束以后不做什么操作,直接sle
2014-09-03 18:03:30
3303
转载 TCP之深入浅出send和recv
本篇我们用一个测试机上的阻塞socket实例来说明主题。文章中所有图都是在测试系统上现截取的。需要理解的3个概念1. TCP socket的buffer每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没
2014-09-02 14:47:03
725
转载 是什么影响了你的速度?802.11g
无线网络技术的发展,始终是以速率(即吞吐量)作为标志的。最早的802.11b技术,其最高速率仅为11Mbps,发展到802.11a、802.11g,最高速率达到了54Mbps,这也是当前WLAN网络的主流技术。最新的802.11n技术,其最高速率更是达到了令人瞠目的300Mbps,这足以让11n成为WLAN技术的弄潮儿,引领了WLAN技术的发展方向。但是以上数值都是物理层的理论数据,在实际应用
2014-09-01 20:14:05
5526
转载 DNS原理及其解析过程【精彩剖析】
原文:http://369369.blog.51cto.com/319630/812889 点击打开链接 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要
2014-09-01 14:39:12
576
转载 http响应状态码大全
http状态返回代码 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。http状态返回代码 代码 说明100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。http状态返回代码 2xx (成功)表示成功处理了请求
2014-09-01 14:34:40
1080
转载 wifidog认证流程图
一. 用户上线1. 用户访问网络,通过iptables将未认证的用户dnat到wifidog进程,wifidog通过307报文将用户重定向到认证服务器2. 用户打开认证服务器登录页面,输入用户名密码,发送认证请求3. 认证成功的话服务器会发送302报文,携带token信息重定向到wifidog页面。认证失败的话会返回失败页面4. 用户携带token信息向wifido
2014-09-01 14:10:25
937
转载 Socket通信中的多进程编程实例
1 需求描述:(1)Linux下编写。(2)创建一个服务器、若干个客户端。(3)用户可以通过客户端输入文字向服务器发送消息。(4)服务器端接收到客户端发送的数据,将用户输入的内容在服务器上打印出来,并原样返回。2 相关基础2.1 套接字Socket通信编程2.1.1 TCP/IP通信过程: 图2.1.1 TCP/IP通信
2014-08-26 22:40:35
769
转载 Linux网络编程之高级并发服务器
1. 介绍在上一节,我们介绍了Linux简单的并发服务器,通过在服务器端建立多个子进程,来接收客户端的请求,实现并发处理,但这种方式明显有缺陷,服务器并不知道客户端请求的数量,所以事先建立的进程数不好确定。所以,这里介绍三种高级并发服务器模式。第一种是服务器端统一accept,接收客户端的到来,然后为每个客户端分配一个进程去处理. 第二种是统一accept接收请求,然后为每个客户端分配一个
2014-08-26 22:32:22
640
原创 samba配置项
1. samba配置项 通过当前所使用系统查看samba的global全部配置项如下(其中比较有意义的项会简单说明):------------------------------------------------------------------------[global] dos charset = CP850 unix charset = UTF-8
2014-08-26 16:07:50
6513
转载 Linux命令 之 free (buffer与cache区别 )
buffer: 缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。cache: 当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓
2014-08-21 18:57:01
1058
原创 USB2.0传输速率
USB 2.0分为三种:USB 2.0低速版(Low-Speed) :1.5Mbps(192KB/s) USB 2.0全速版(Full-Speed) :12Mbps(1.5MB/s) USB 2.0高速版(High-Speed) :480Mbps(60MB/s) 上面的速度只是理论速度,另外:USB 3.0:5Gbps(640MB/s)超速(Super-Speed)
2014-08-20 18:56:24
17994
原创 VMware+Linux 使用笔记
1. 软件安装工具apt 在利用apt工具安装软件时,若安装软件包出问题,则可以尝试一下更新软件包列表和软件更新,方法如下: # apt-get update //获取最新的软件包列表 # apt-get upgrade //软件更新 如果更新失败,则可以进一步尝试更新apt源,即更新 /etc/apt/sources.list 比如,
2014-08-17 21:53:46
796
转载 Linux虚拟文件系统小结
原文:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/27/2610619.html 1.inode1).inode简介inode 是 UNIX/Linux 操作系统中的一种数据结构,其本质是结构体,它包含了与文件系统中各个文件相关的一些重要信息,例如文件及目录的基本信息,包含时间、档名、使用者及群组等。在 UNIX/L
2014-08-10 16:12:43
574
转载 Linux内核空间保护和空间数据传递分析
一定要注意的是不能直接访问用户空间数据,内核代码可以通过特殊的函数来访问用户空间数据,copy_to_user copy_from_user这两个函数就是内核代码访问用户空间数据的函数,但是内核不能直接通过像是memcpy函数来直接操作用户空间数据。按照linux设备驱动书本上的说法,我的理解,三个原因描述如下。其一,驱动程序架构不同或者内核的配置不同,用户空间数据指针可能运行在内
2014-07-31 14:29:39
859
转载 UNIX环境高级编程——IPC总结
IPC主要包括:管道,消息队列,信号量,共享内存, 套接字(SOCKET)。一、IPC对象的持久性 每种IPC机制都会借助一种数据结构,这种数据结构的实例称为该IPC机制的对象(相应的,用于同步互斥的数据结构的实体也可以称为该机制的对象)。理清IPC对象的持久性,有助于理解相应的IPC的工作机制。1.对象持久性 大致上IPC对象的持久性可以分为三种:
2014-07-31 09:30:24
696
转载 从 Linux 内核访问用户空间内存
原文:http://www.ibm.com/developerworks/cn/linux/l-kernel-memory-access/ 从 Linux 内核访问用户空间内存Linux 内存和用户空间 API 简介因为内核和用户空间存在于不同的虚拟地址空间中,在它们之间移动数据需要特别注意。研究虚拟地址空间和内核 API 理念,用于
2014-07-31 09:22:41
894
转载 Linux下性能分析工具汇总
Linux下性能分析工具汇总2011-04-02 10:29 佚名 优快云 字号:T | T本文讲述的是:CPU性能分析工具、Memory性能分析工具、I/O性能分析工具、Network性能分析工具、 Linux 性能调优工具、Linux下性能分析工具汇AD:性能分析工具汇总CPU性能分析工具:vmstat
2014-07-31 08:50:58
910
原创 Linux线程ID和进程ID
1. Linux线程的线程ID和进程IDLinux内核并不支持真正意义上的线程,Linux线程库是用与普通进程具有同样内核调度视图的轻量级进程来实现线程支持的。这些轻量级进程拥有独立的进程id,在进程调度、信号处理、IO等方面享有与普通进程一样的能力。每个Linux线程都同时具有线程id和进程id,其中进程id就是内核所维护的进程号,而线程id则由线程库分配和维护。1)
2014-07-30 15:54:16
4124
转载 Linux 线程实现机制分析
一.基础知识:线程和进程按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥有多个线程,此时,如果
2014-07-29 15:45:53
596
转载 Linux内核态抢占机制分析
【摘要】本文首先介绍非抢占式内核(Non-Preemptive Kernel)和可抢占式内核(Preemptive Kernel)的区别。接着分析Linux下有两种抢占:用户态抢占(User Preemption)、内核态抢占(Kernel Preemption)。然后分析了在内核态下:如何判断能否抢占内核(什么是可抢占的条件);何时触发重新调度(何时设置可抢占条件);抢占发生的时机(何时检查可抢
2014-07-29 15:12:15
668
转载 80X86寄存器介绍
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储
2014-07-29 13:52:02
661
转载 时间复杂度为O(n)的排序算法,你会吗?——其实很简单的
看上去似乎任何已知的算法都无法做到,如果谁做到了,那么所有的排序方法:QuickSort,ShellSort,HeapSort,BubbleSort等等等等,都可以扔掉了,还要这些算法干吗阿,呵呵。我们平常知道是排序算法都是O(n),最好的情况也就是O(nlogn),怎么会有O(n)的呢。不过实际上,在数字范围有限制的情况下,(必须是数字才行的吧)是有一个这样的算法的,只需要用一个数组
2014-07-27 22:00:16
868
转载 Linux内核地址空间与进程地址空间
内核地址空间分布直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。永久内存映射区:该区域可访
2014-07-17 20:04:22
816
转载 Linux进程地址空间详解
之前写的一篇文章《a.out分段及运行时内存结构》简要介绍了Linux下的可执行文件格式和运行时的内存布局,这篇文章将更为详细得讨论Linux下进程的虚拟地址空间的布局。如下所述的内容都是基于32位系统的。Linux传统内存布局进程的线性地址空间分为两部分:1、从0×00000000到0xbfffffff的线性地址,无论进程运行在用户态还是内核态都可以寻址。
2014-07-17 19:50:38
941
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人