不灭的火

革命尚未成功,同志仍须努力下载JDK17

作者:AlbertWen  添加时间:2017-10-27 09:56:57  修改时间:2025-03-31 19:44:21  分类:13.C/C++/仓颉  编辑

一、什么是消息队列

消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。  每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。

Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。

作者:AlbertWen  添加时间:2017-10-27 09:55:53  修改时间:2025-03-31 22:44:22  分类:13.C/C++/仓颉  编辑

一、什么是共享内存

顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc()分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。

作者:AlbertWen  添加时间:2017-12-13 14:22:52  修改时间:2025-04-01 19:21:48  分类:13.C/C++/仓颉  编辑

以前一直有种误解:

二维数组的是数组的数组,所以数组的首地址是指向第一个元素指针,而这个元素又是一个数组,所以把数组首地址理解为 指向指针的指针

作者:AlbertWen  添加时间:2017-10-26 18:39:36  修改时间:2025-04-01 17:54:46  分类:13.C/C++/仓颉  编辑

C 编程中,经常需要操作的内存可分为下面几个类别:

  1. 堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取的方式都是由编译器自动执行的
  2. 堆区(heap):一般由程序员分配与释放,基程序员不释放,程序结束时可能由操作系统回收(C/C++没有此等回收机制,Java/C#有),注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
  3. 全局区(静态区)(static):全局变量和静态变量的存储是放在一块儿的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
  4. 文字常量区:常量字符串是放在这里的,程序结束后由系统释放。
  5. 程序代码区:存放函数体的二进制代码。
作者:AlbertWen  添加时间:2016-04-16 12:48:48  修改时间:2025-03-31 19:44:22  分类:13.C/C++/仓颉  编辑

在前一小节的“改写版”例程中,像下面这样将指针指向数组的初始元素。

p = &array[0];

其实也可以写成下面这样

p = array;

对于这种写法,很多 C 语言的入门书籍是这样说明的:

在 C 中,如果在数组名后不加[],单独地只写数组名,那么此名称就表示“指向数组初始化元素的指针”。

在这里,我可以负责地告诉你,上面的说明是错误的。

作者:AlbertWen  添加时间:2017-10-26 14:38:24  修改时间:2025-03-16 02:51:48  分类:13.C/C++/仓颉  编辑

在写网络程序的时候,建立TCP socket:

sock = socket(PF_INET, SOCK_STREAM, 0);

然后再绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置问AF_INET,即使用IP。

作者:AlbertWen  添加时间:2019-09-10 23:22:11  修改时间:2025-03-28 08:55:43  分类:13.C/C++/仓颉  编辑

Linux 错误码大全(errno-base.h 和 errno.h)

作者:AlbertWen  添加时间:2016-04-02 15:57:29  修改时间:2025-04-01 04:59:22  分类:13.C/C++/仓颉  编辑

PHP扩展开发 资料收藏

作者:AlbertWen  添加时间:2014-04-09 18:16:00  修改时间:2025-03-29 16:31:07  分类:13.C/C++/仓颉  编辑

Linux下文件的类型是不依赖于其后缀名的,但一般来讲:

  • .o 是目标文件,相当于Windows中的.obj文件
  • .so 为共享库,是shared object,用于动态连接的,和dll差不多
  • .a 为静态库,是好多个.o合在一起,用于静态连接
  • .la 为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la
作者:AlbertWen  添加时间:2017-10-27 09:50:26  修改时间:2025-04-02 02:27:24  分类:13.C/C++/仓颉  编辑

一、什么是信号量

为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。