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

首页 / 操作系统 / Linux

深入理解进程间通信之消息队列

深入理解进程间通信之消息队列

消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。消息队列是随内核持续的。IPC持续概念随进程持续IPC一直存在到打开IPC对象的最后一个进程关闭该对象为止。如管道和有名管道;随内核持续IPC一直持续到内核重新自举或者显示删除该对象为止。如消息队列、信号灯以及共享内存等;随文...
深入理解进程间通信之信号

深入理解进程间通信之信号

信号及信号源信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。 信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息。信号来源 信号事件的发生有两个来源:...
B树——思路、及C语言代码的实现

B树——思路、及C语言代码的实现

0.序 本人现读本科大二,这学期学习数据结构,老师为我们的期末作业布置一道任选题,而我一直以来都有听说B树是一棵挺神奇的树,所以我选择了它,当然更重要的原因是因为B树的难度最高,我喜欢做有挑战性的工作。同时,我听我基友说他热衷于将自己所学所想分享到博客园上,故才有了这样一篇文章。希望我能够在写博客的同时学习到更多东西,同时也能帮助到其他遇到或者即将遇到雷同问题的初学者们。1.关于B树 B树是一种称之为查找树的树,与之类似的有查找二叉树,平衡二叉树,除此...
Unity3D 的物理渲染和光照模型

Unity3D 的物理渲染和光照模型

为什么地球在两极严寒,而在赤道火热?这个问题,仿佛与着色器毫不相干,但却是理解光照模型怎样工作的基础。正如这个教程前面部分所解释的,表面着色器使用数学模型来预测光照在三角形上怎样反射。总的来说,Unity 引擎支持两种着色技术,一个是哑光着色器,一个是镜面材料着色器。前一种对于不透明表面的支持很完美,而后一种则用来模拟反射对象。这些光照模型背后的数学可能非常复杂,但是如果你想创造属于你自己的光照效果,你就得理解它们是如何工作的。直到 Unity 版本 4....
排序算法之快速排序

排序算法之快速排序

基本思想任取待排元素序列中的某个元素(例如第一个元素)作为基准,按照该元素的排序码大小,将整个元素序列划分为左右两个子序列:左侧子序列中所有元素的排序码都小于基准元素的排序码,右侧子序列中所有元素的排序码都大于或等于基准元素的排序码,基准元素则排在这两个子序列中间(这也是该元素最终安放的位置)。然后分别对这两个子序列重复进行上述方法,直到所有的元素都排在相应的位置上为止。代码private void quickSort(int[] a, int left,...
排序算法之希尔排序

排序算法之希尔排序

基本思想设待排元素序列有n个,首先取一个整数gap(gap< n)作为间隔,将全部元素分为gap个子序列,所有距离为gap的元素放在同一个子序列中,在每一个子序列中分别进行直接插入排序。然后缩小间隔gap,重复上述的子序列划分和排序工作。知道最后gap等于1时,将所有元素放在同一个序列中排序为止。 至于gap的取法有各种方案。最初Shell提出取gap=⌊n/2⌋ ,gap=⌊gap/2⌋ ,直...
排序算法之冒泡排序

排序算法之冒泡排序

基本思想首先第一个元素和第二个元素比较,如果第一个大,则二者交换,否则不交换;然后第二个元素和第三个元素比较,如果第二个大,则二者交换,否则不交换……一直按这种方式进行下去,最终最大的那个元素被交换到了最后,一趟冒泡排序完成。代码public void BubbleSort(int[] a, int n) { int temp; for (int i = 1; i < n; i++) { for (int j =...
排序算法之直接插入排序算法

排序算法之直接插入排序算法

基本思想当插入第i(i≥1)个元素,前面的i-1个元素已经排好序。这时用第i个元素与前i-1个元素进行比较,找到插入位置即将第i个元素插入,原来位置上的元素向后顺移。 代码://待排数据存储在数组a中,以及待排序列的左右边界public void InsertSort(int[] a, int left, int right) { int temp;//临时变量 int i, j;//循环标记 for (i = left + 1; i <...
Java关键字浅析之native

Java关键字浅析之native

native的简单概述使用native关键字说明这个方法是原生函数(Native Method),也就是说,这个方法是用C/C++语言实现的,并且被编译成了DLL,由Java去调用。这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是Java的底层机制,实际上Java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。什么是Native Method简单地说,一个Native Meth...
Java对象的串行化(Serialization)

Java对象的串行化(Serialization)

串行化的概念对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的串行化(Serialization) 。 串行化的主要任务是写出对象实例变量的数值。如果变量是另一对象的引用,则引用的对象也要串行化。这个过程是递归的,串行化可能要涉及一个复杂树结构的串...
Java关键字浅析之final

Java关键字浅析之final

final限定变量如果在指定变量值之后,就不想再改变变量值,可以在声明变量时加上final限定,如果后续撰写程序时,自己或者别人不经意想改变final变量,就会出现编译错误。如果对象数据成员被声明为final,但没有明确使用=指定变量值,那表示延迟对象成员值的指定,在构造函数执行流程中,一定要有对该数据成员指定值的动作,否则编译错误。final限定类如果class前使用了final关键字定义,那么表示这个类是最后一个了,不会再有子类,也就是不能被继承。如果...
排序算法之二分法(折半)插入排序算法

排序算法之二分法(折半)插入排序算法

基本思想折半插入排序的基本思想与直接插入排序一样,在插入第i(i≥1)个元素时,前面i-1个元素已经排好序。区别在于寻找插入位置的方法不同,折半插入排序是采用折半查找法来寻找插入位置的。 折半查找法的基本思路是:用待插元素的值与当前查找序列的中间元素的值进行比较,以当前查找序列的中间元素为分界,确定待插元素是在当前查找序列的左边还是右边,如果是在其左边,则以该左边序列为当前查找序列,右边也类似。按照上述方法,递归地处理新序列,直到当前查找序列的长度小...
Java注解(Annotation)详解

Java注解(Annotation)详解

基本概念什么是注解(Annotation) Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。从某些方面来看,Annotation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数以及本地变量的声明语句中。这些信息被存储在Annotation的”name=value”结构对中。更通俗的意思是为程序的元素(类、方法、成员变量等)加上更直观更明了的...
排序算法之三路划分的快速排序

排序算法之三路划分的快速排序

当待排序元素序列中有大量的重复排序码时,简单的快速排序算法的效率将会降到非常之低。一种直接的想法就是将待排序列分成三个子序列:一部分是排序码比基准元素排序码小的;一部分是与基准元素排序码等值的;一部分是比基准元素排序码大的,如下图所示:图1 快速排序的三路划分 但是,如果我们直接据此思想去编写实现算法的话,会让我们面临很大的困难。与基准元素等值的元素到底有多少?以及如何最快速有效地确定划分的边界?所以,完成这样的三路划分是非常困难的,甚至比两路划分过程更加...
iOS定位和位置信息获取

iOS定位和位置信息获取

要实现地图、导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作。Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用。在Core Location中主要包含了定位、地理编码(包括反编码)功能。定位是一个很常用的功能,如一些地图软件打开之后如果用户允许软件定位的话,那么打开软件后就会自动锁定到当前位置,如果用户手机移动那么当前位置也会跟随着变化。要实现这...
Yii2 实现修改密码功能

Yii2 实现修改密码功能

主要难点:1、密码加密 YII2对密码加密生成的结果是不同的,即用相同的初始密码在不同时间得到的加密结果不同,所以我们不能用常用的方法去验证密码是否正确(将密码加密后与数据库中的密码相比较)。YII2有自己的加密以及密码验证流程。 加密 $hash = Yii::$app->getSecurity()->generatePasswordHash("123456"]); 验证 Yii::$app->getSecurity()->...
Java数据结构-线性表之静态链表

Java数据结构-线性表之静态链表

静态链表的定义: 节点由一个一维数组和一个指针域组成,数组用来存放数据元素,而指针域里面的指针(又称游标)用来指向下一个节点的数组下标。这样的链表称之为静态链表。 链表中的数组第一个和最后一个位置需要特殊处理,不存数据。第一个位置(即数组0下标)的节点的指针用来存放备用链表的第一个节点的数组下标。最后一个位置(即数组长度MaxSize-1下标)的节点的指针用来存放指向有数值的第一个数据元素的数组下标,类似于单链表的头结点。静态链表的示例图: 下面举一个摘...
<< 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 >>