- 博客(71)
- 收藏
- 关注
原创 linux文件特殊权限:SUID,SGID,SBIT
通常我们看到的文件的权限就是rwx这个三个读、写、可执行的权限的组合,但是,眼尖的朋友可能会发现有些文件的权限怪怪的?譬如说/tmp和/usr/bin/passwd,如下图所示: 不应该只有rwx吗?还有其他的特殊权限(s跟t)啊?s和t到底是什么呢?Set UID 当s这个标志出现在文件拥有者的x权限上时,例如刚刚提到的/usr/bin/pass
2016-08-25 18:33:37 741 1
转载 linux下的c++filt命令
一个简单的linux命令,确实不值得大费周折,但是如果能与实际开发工作联系起来,解决实际开发中的困惑,在生动的实际场景中学习命令,那无疑是棒棒哒的感觉。 最近刚好用c++filt解决了相关实际问题,故而方向如下: 我们知道,在c++中,是允许函数重载的,也就引出了编译器的name managing机制,今天我们要介绍的c++filt命令便与此相关。
2016-08-08 17:15:06 1033
原创 一些多媒体相关术语
一、单播、多播(组播)和广播、直播、点播1、单播 网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。 2、多播(组播) “多播”也可以称为“组播”,在网络奇数的应用并不是很多,网络视频会议、网络视频点播特别适合采用多播方式。因为如果采用单
2016-06-16 14:28:52 5961
原创 RTSP协议详解
1、概述1.1 RTSP简介 RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准,该协议定义了一对多应用程序如何有效地通过IP网络传输多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传
2016-06-13 19:49:44 3898
原创 H264基本概念之宏块、片和片组
一、宏块(Macro Block):一个编码图像首先要划分成多个块(4 X 4像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16 X 16个像素。宏块分为I、P、B宏块,I宏块只能利用当前片中已解码的像素作为参考进行帧内预测;P宏块可以利用前面已解码的图像作为参考图像进行帧内预测;B宏块则是利用前后向的参考图形进行帧内预测。 二、片(Slice):一帧视频图像可编码成一个或
2016-05-31 14:37:20 1837
原创 场与帧
“先有场后有帧”。 首先看一下什么是“逐行扫描”。为了获得活动的图像,电影和电视是把若干幅静止的画面快速地连续播放,我们就会觉得这些画面上的物体是在连续地运动着。每一幅“静止”的画面称为一“帧”(Frame),电影的播放速度是24帧/秒,PAL制电视是25帧/秒,NTSC制电视是30帧/秒。电视的每帧画面又是由若干条水平方向的扫描线组成的、PAL制为625行/帧,NTSC制为52
2016-05-31 13:56:14 2141
转载 H264 编码原理及I帧B帧P帧
前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大的图像画面,我们可以先编码出一个完整的图像帧A,随后的B帧就不用编码全部图像,只写入与A帧的差别
2016-05-31 12:02:50 1798
转载 shared_ptr的一些尴尬
shared_ptr在boost库中已经有很多年了,C++11又为其正名,把他引入STL库,放到了std的下面,可见其颇有用武之地;但是shared_ptr是万能的吗?有没有什么样的问题呢?本文并不说明shared_ptr的设计原理,也不是为了说明如何使用,只说一下在使用过程中的几点注意事项。智能指针是万能良药? 智能指针为解决内存泄漏、编写异常安全代码提供了一种解决
2016-05-27 17:20:46 613
原创 mp4文件格式解析
前言 MP4视频文件封装格式是基于QuickTime容器格式定义的,因此参考QuickTime的格式定义对理解MP4文件格式很有帮助。MP4文件格式是一个十分开放的容器,几乎可以用来描述所有的媒体结构,MP4文件中的媒体描述与媒体数据是分开的,并且媒体数据的组织也很自由,不一定要按照时间顺序排列,甚至媒体数据可以直接引用其他文件。同时,MP4也支持流媒体。MP4目前广泛用于
2016-05-17 19:05:24 4918 2
转载 Linux中状态为D或Z的进程
长期生活在Linux环境中,渐渐地就有一种环保意识油然而生。比如,我们会在登录提示里写上“悟空,我跟你说过叫不要乱扔东西,乱扔东西是不对的。哎呀我话还没说完你怎么把棍子扔掉了?月光宝盒是宝物,乱扔它会污染环境,要是砸到小朋友怎么办?就算砸不到小朋友,砸到花花草草也不好嘛....”;在用户缺省目录里放一个题为“自觉保护环境,请勿堆放垃圾”的空文件,并用chattr + i设置为不可修改;看到垃圾文件
2016-05-16 13:25:18 3418
原创 linux下ffmpeg库 ARM交叉编译
一、前言: 因为想用ffmpeg实现录像网络视频流功能,所以需要编译ffmpeg相关库,不过目前对视频方面很多知识还是小白,后续会写一些关于视频方面知识的文章 二、准备工作 1、ffmpeg源码地址:http://ffmpeg.org 作者目前版本是ffmpeg-3.0.2 2、编译器:arm-none-lin
2016-05-13 11:42:19 25099 3
原创 Linux文件操作函数接口
一、系统调用和设备驱动程序 只需用很少的函数就可以对文件和设备进行访问和控制,这些函数称为系统调用,由UNIX和Linux直接提供,它们也是通向操作系统本身的接口。 操作系统的核心部分,即内核,是一组设备驱动程序。它们是一组对系统硬件进行控制的底层接口。二、系统调用函数接口1、size_t write(int fildes,const void *
2014-04-02 16:01:25 939
原创 /proc文件系统
Linux将一切事物都看成文件,硬件设备在文件系统中也有相应的条目。我们使用底层系统调用这样一种特殊方式通过/dev目录中的文件来访问硬件。 控制硬件的软件驱动程序通常可以以某种特定方式配置,或者能够报告相关信息。 用于与设备驱动程序进行通信的工具在过去就已经十分常见,近来年,倾向于提供更一致的方式来访问驱动程序的信息。事实上,这种一致的方式甚至延伸到包括与linu
2014-04-02 10:33:53 576
原创 linux find命令详解
一、find命令格式1、find的一般形式为: find pathname -options [-print -exec -ok ...]2、find命令的参数 pathname:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录 -print:find命令将匹配的文件输出到标准输出 -e
2014-03-27 22:54:25 614
原创 gcc基础
一、简介 GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GN
2014-03-25 10:56:03 626
原创 POSIX简介
POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。 POSIX标准意在期望获得
2014-03-24 13:43:36 877
原创 C强制类型转换与隐式转换
一、隐式类型转换 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示: 图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。 纵向箭头表示当运算符两边的运算数为不同类型时的转换,如一个long 型数据
2014-03-11 17:15:58 991
原创 CR LF说明
CR和LF是用ASCII的控制字符(ASCII分为可显示的和不可显示的,使用UE打开的时候,可显示的就显示为字符,不可显示的就显示为点),它们的值为 0x0D 13 '/r' 0x0A 10 '/n' (有的ASCII 写作 ,也就是new line的意思,这样似乎好理解下) CR的意思是:carriage ret
2014-03-11 14:07:12 1437
原创 进程调度
多道程序设计的目的是无论何时都有进程在运行,从而使CPU利用率最大化。分时操作系统的目的是在进程之间快速切换CPU以便用户在程序运行时能与其进行交互。为了实现这些目的,进程调度选择一个有效的进程(可能从多个有效的进程中选择)在CPU上运行。单处理器系统不会超过一个进程在运行,如果有多个进程,那么余下的则需要等待CPU空闲并重新调度。 一、调度队列 进程进入系统时会被加到作业队
2013-03-19 15:29:11 1036
原创 进程管理
进程可以看作是正在执行的程序。进程需要一定的资源(如CPU时间、内存、文件和I/O设备)来完成其任务。这些资源可以在创建进程或执行进程时被分配。 进程是大多数系统的工作单元。系统有一组进程组成:操作系统进程执行系统代码,用户进程执行用户代码。所有这些进程可以并发执行。 虽然从传统意义上讲,进程运行时只包含一个单一的控制线程,但是目前大多数现代操作系统都支持多线程
2013-03-18 15:59:02 988
原创 系统生成与系统启动
一、系统生成 可以为某处的某台机器专门设计、编写和实现一个操作系统,然而操作系统通常设计成运行在一类计算机上,这些计算机位于不同的场所,并具有不同的外设配置。对于每个特定的计算机,必须要配置或生成系统,这个过程通常称为系统生成(SYSGEN,system generation)。 操作系统通常通过磁盘或者CD-ROM来发布。为了生成一个系统,我们需要执行一个特殊
2013-03-13 09:21:11 1237
原创 操作系统设计
模块化设计 最新的操作系统设计方法是用面向对象编程技术来生成一个模块化的内核。这里,内核有一组核心部件,内核在启动或运行时对附加服务动态链接。这种策略是使用可动态加载的模块。 这样的设计允许内核提供核心服务,也能动态地实现特定的功能。例如,特定硬件的设备和总线驱动程序可以加载给内核,而对于各种文件系统的支持也可以作为可加载的模块加入其中。总体上看,这就像是一个分
2013-03-06 11:23:10 637
原创 系统调用
系统调用为有效的服务提供了一个接口。这些调用通常用C和C++语言编写,当然对于底层的任务,可能需要以汇编语言指令的形式提供。 即使是一个简单的程序也会大量使用操作系统。通常,系统每秒执行数千个系统调用。 不过绝大多数程序员不会看到这些系统调用的细节。一般应用程序开发人员根据应用程序接口(application programming interface,AP
2013-02-28 20:10:19 1157
原创 操作系统的用户界面
用户与操作系统交互有两种基本的方法: a、提供命令行接口或者命令解释程序(command interpreter),允许用户直接输入由操作系统完成的命令。 b、用户通过图形用户界面(graphical user interface,GUI)与操作系统进行交互。 一、命令解释程序 一些操作系统在其内核中包含命令解释程序,其他的一些操作系统
2013-02-26 10:00:52 2195 1
原创 操作系统结构
操作系统最重要的一点是要有多道程序处理能力。单个用户通常不能总是使用CPU和I/O设备都忙。一、多道程序设计 多道程序设计通过组织作业使CPU总有一个作业可执行,从而提高CPU的利用率。 它的思想如下:操作系统同时将多个任务保存在内存中,该作业集可以是作业池中作业集的子集(作业池中包括所有进入系统的作业)。操作系统选择一个位于内存中的作业并开始执行。最终,该
2013-02-18 10:17:59 400
原创 操作系统概述
一、计算机系统大致可以分为4个组成部分:计算机硬件、操作系统、系统程序与应用程序和用户,如下图所示。 1、硬件:包含CPU、内存和输入输出设备,为计算机系统提供基本的计算资源2、应用程序:如字处理程序、电子制表程序、编译器、网络浏览器,规定了用户按何种方式使用这些资源。3、操作系统:控制和协调不同用户的应用程序对硬件的使用。 为了更加全面地理解操作系统所担
2013-02-18 09:13:14 462
原创 系统保护操作
现在操作系统是中断驱动的。事件几乎是用中断或陷阱的发生来标记的。 陷阱(Trap)或者异常是由软件产生的中断,这个中断是由一个错误(例如除0运算或者无效内存访问)或者用户进程产生的一个操作系统调用请求产生的。 共享系统资源改善了利用率,但与此同时也带来了问题。如果没有保护来处理这些错误,那么计算机必须只能执行一个进程,否则所有输出值都值得怀疑。一、双重模式
2013-02-05 10:33:44 796
原创 Android Service
Service是一个应用组件,它可以在后台执行耗时的操作,没有对用户提供一个界面。Service分为两类:1、Started 应用组件通过调用startService()方法启动Service。一旦service启动,它将在后台无限期运行,即使在启动它的组件被销毁的情况下。通常情况下,一个Started Service执行一个单一的操作且不返回任何结果给启动它的组件。
2012-10-10 17:24:26 562
原创 关闭服务端连接
在客户端和服务端的数据交互完成后,一般需要关闭网络连接。对于服务端来说,需要关闭Socket和ServerSocket。 在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说,在服务端的Socket关闭后,客户端的Socket的isClosed和isConnected方法仍然会分别得到false和true。但对已关闭的Socket的输入输出流进行操作会抛出一个Sock
2012-09-29 11:27:01 992
原创 在服务端接收和发送数据
在建立完ServerSocket对象后,通过accept方法返回的Socket对象,服务端就可以和客户端进行数据交互。 Socket类和ServerSocket类都有两个得到输入输出流的方法:getInputStream和getOutputStream。对于Socket类而言,使用getInputStream方法得到的InputStream是从服务端获取数据,而getOutput
2012-09-29 11:09:46 1301
原创 创建ServerSocket对象
ServerSocket类的构造方法有四种重载形式,它们的定义如下:public ServerSocket() throws IOExceptionpublic ServerSocket(int port) throws IOExceptionpublic ServerSocket(int port, int backlog) throws IOExceptionpublic Serve
2012-09-29 10:57:03 3330
原创 实现HTTP断点续传下载工具(附源代码)
在前面的文章曾讨论了HTTP消息头的三个和断点继传有关的字段。一个是请求消息的字段Range,另两个是响应消息字段Accept-Ranges和Content-Range。其中Accept-Ranges用来断定Web服务器是否支持断点继传功能。在这里为了演示如何实现断点继传功能,假设Web服务器支持这个功能;因此,我们只使用Range和Content-Range来完成一个断点继传工具的开发。
2012-09-29 09:50:18 986
原创 HTTP消息的格式
当用户在浏览器中输入一个基于HTTP协议的URL时(以http://开头的URL),就相当于通知浏览器按着这个URL组织生成一个HTTP请求,并将这个请求发送到服务器;同时,等待服务器的响应。无论是请求还是响应,都统称为HTTP消息。HTTP协议分为两部分: 1、 HTTP请求消息。 2、HTTP响应消息。一、HTTP请求消息
2012-09-29 09:47:31 1318
原创 HTTP协议简介
一、什么是HTTP协议HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入http://host:port/pat
2012-09-29 08:54:46 720
原创 套接字(Socket)的异常
在Socket类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。在Socket类的方法中抛出最多的就是SocketException,其余还有七个异常可供Socket类的方法抛出。这些异常的继承关系如图1所示。其中灰色背景框所描述的例外就是Socket类的方法可能抛出的异常。图1 异常类继承关系图public class IOEx
2012-09-28 17:19:16 952
原创 Socket类的getter和setter方法
在Java类中,getter和setter方法占了很大的比重。由于Java中没有定义属性的关键字;因此,getter和setter方法用于获得和设置Java类的属性值;如getName和setName方法用于设置name属性的值。如果某个属性只有getter方法,那这个属性是只读的;如果只有setter方法,那么这个属性是只写的。在Socket类中也有很多这样的属性来获得和Socket相关的信息,
2012-09-28 14:22:46 955
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人