自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 Java中的多线程与锁(一)(关于同步)

1. 简介先来引入多线程中可能存在的问题。下面是一个例子:多个线程同时更新计数器/* * 多个线程同时更新计数器(模拟多线程中可能存在的问题) */public class Temp_1 { public static void main(String[] args) { // 连续模拟操作 10 次 for(int i = 0;i < 10;i++) { up...

2019-04-28 16:32:17 357

原创 Java中的多线程与锁(二)(锁的概念)

1. 关于锁锁的概念。锁用来起保护作用,控制对被保护对象的访问。对于一个线程来说,锁有 2 中状态,一种状态 ‘可进入’或‘可通过’,这种状态下锁对该线程没有副作用,线程继续执行,而另一种状态 ‘不可进入’或‘不可通过’,这种状态下,锁对该线程产生了约束,线程可能会立即返回或者进入等待状态,直到某个条件成立,使得该线程可以通过锁,而等待过程中,该线程也可能被外部中断唤醒。那么怎样理解:一...

2019-04-28 16:32:09 322

原创 Linux 套接字:简介(一)(?)

目录

2019-04-13 23:09:48 1280

原创 数据结构:缓冲区/缓存简单实现

利用 取余运算 使得读/写指针在长度为 capacity 的连续内存空间上循环进行读/写操作(待加入:线程安全的读/写函数)目录头文件 buffer.h源文件 buffer.c1. 头文件 buffer.h/* buffer.h */#include <stdlib.h>#include <stdio.h>#include <errno.h&...

2019-04-12 17:34:34 2875 1

转载 GCC 中的 aligned 和 packed 属性(关于地址对齐)

原文链接 - GCC 中的 aligned 和 packed 属性(关于地址对齐)x.

2019-04-12 10:51:45 2676

原创 Linux 内存管理

竟然可以手动分配内存!想想还有点小激动。目录内存操作函数(malloc / calloc / realloc / memcpy 等)demo(malloc 函数,简单内存分配)malloc 函数可以保证其返回的内存是地址对齐的(关于地址对齐),所以它可以被转换为任何类型的指针。demo(将结构体指针指向一块 ’精心安排的‘ 内存区域,并打印该结构体成员变量)#inclu...

2019-04-12 10:34:41 143

原创 问题:C 语言结构体类型参数 与 结构体指针类型参数 的区别

结构体类型 参数传递的是结构中所有成员的副本。而 结构体指针类型 参数传递的是指向原结构体的指针。代码/* test3.c */#include <stdio.h>struct data { int i; char *msg;};void changeData1(struct data d); // 结构体类型参数void changeD...

2019-04-11 15:33:53 568

原创 Linux 线程

目录线程操作函数( pthread_create / pthread_join / pthread_exit)(C 与 Java 实现对比)(编译程序时需要用选项 ‘-pthread’ 来链接线程库)1. 线程操作函数(创建一个新的线程,C 语言 与 Java 对比)C 语言实现,代码如下:/* test1.c */#include <stdio.h>#in...

2019-04-10 17:02:48 165

原创 Linux 进程信号屏蔽字 - 设置进程信号屏蔽字

在使用 sigaction 函数处理信号时,可以一并设置进程的信号屏蔽字。但是有单独的函数可以用来设置进程的信号屏蔽字:sigprocmask 函数。sigprocmask 函数#include <signal.h>int sigprocmask(int how, const sigset_t *set, sigset_t *oset);参数 how 的取值如下:...

2019-04-09 16:21:20 922

原创 Linux 信号(signal)

信号是 UNIX 和 Linux 系统响应某些条件而产生的一个事件。接收到该信号的进程会相应的采取一些行动。我们用术语 生成 表示一个信号的产生,使用术语 捕获 表示接收到一个信号。信号是由于某些错误条件而生成的,如 内存段冲突 / 浮点处理器错误 或 非法指令等。它们由 shell 和终端处理器生成来引起中断,它们还可以作为在 进程间传递消息 或 修改行为 的一种方式,明确地由一个进程发送给...

2019-04-09 15:37:52 392

原创 问题:Linux 信号处理,当连续给一个进程同时发送多个信号时,部分信号丢失而未得到处理

参考链接 - linux 信号signal和sigaction理解(该文章解释了:< 实验 1 中连续多个相同信号处理问题 >,以及 < 实验 2/3 中使用 sigaction 信号屏蔽字解决信号处理函数竞态问题 > )连续给一个进程发送多个相同信号时,部分信号丢失而未得到处理(使用 signal 函数处理信号),代码如下:/* test2.c */#inclu...

2019-04-09 15:35:34 3150 2

原创 Linux 编程中的错误处理

1. 头文件 <errno.h>( !errno 变量存在线程安全问题 !)标准库中的一些函数通过向 <errno.h> 中声明的 int 类型 errno 变量存储一个错误码(正整数)来表示有错误发生。假设我们需要使用一个库函数,该库函数通过给 errno 赋值来产生程序运行出错的信号。在调用这个函数之后,我们可以检查 errno 的值是否为零。如果不为零,则表示在...

2019-04-08 21:56:02 197

原创 2.2.1 进程管理,以及父子进程共享同一个文件资源时,文件的‘读写位置’会相互影响

目录等待一个进程(父进程等待子进程终止)僵尸进程(defunct / zombie)1. 等待一个进程当用 fork 函数调用启动一个子进程时,子进程就有了它自己的生命周期并将独立运行。可以通过在父进程中调用 wait 函数让父进程等待子进程结束。wait 函数#include <sys/types.h>#include <sys/wait.h>...

2019-04-08 18:36:07 1017

原创 问题:同一个进程中,先后对同一个文件描述符进行写入 / 读取 操作,读写指针的位置导致读取内容失败

文件‘读写指针’ / lseek 系统调用在进行文件操作(读 / 写)时,可以使用 lseek 系统调用来设置文件的下一个读写位置。当 多进程 / 多线程 环境中,对同一资源进行读 / 写操作时,很可能会 因为 ‘读写指针’ 的变化导致各种隐蔽的问题,这一点必须要仔细。lseek 系统调用(对文件描述符的读写指针进行设置,即可以用它来 设置文件的下一个读写位置)#include &lt...

2019-04-08 18:03:58 1120 1

原创 Linux 错误码(error code)列表(头文件 ‘errno.h’)

参考链接 - What are the standard error codes in Linux?目录Ubuntu 中安装 ‘errno’ 命令使用 ‘errno -ls’ 命令,查看错误码错误码(error code)列表错误码列表生成程序1. Ubuntu 中安装 ‘errno’ 命令:ubuntu@cuname:~$ sudo apt-get install mor...

2019-04-08 15:56:00 4426

原创 Linux 编程,C 语言中的陷阱 - sizeof(字符串字面量)

目录sizeof 运算符 / C 语言字符串字面量(计算字符串字面量长度时,会计入字符串结尾的空字符 ‘\0’)1. sizeof 运算符C 语言中的 字符串字面量作为字符数组来处理当 C 语言编译器在程序中遇到长度为 n 的字符串字面量时,会为字符串字面量分配长度为 n + 1 的内存空间。这块内存空间将用来存储字符串字面量中的字符,以及一个用来标志字符串末尾的额外字符(空字符,...

2019-04-08 10:52:31 613

转载 Linux 信号常量表

目录原文链接 - Linux Signalsx(暂时使用图片代替)

2019-04-07 23:09:57 299

原创 2.1 Linux 启动新进程

启动新进程system 函数(使用 shell 启动新进程)exec 函数(替换进程映像,并未创建新的进程)fork 函数(复制进程映像,创建新进程,父子关系:原进程与新进程)1. system 函数(使用 shell 启动新进程)在一个程序的内部启动另一个程序,从而创建一个新进程。system 函数确实创建了一个新的进程,但是新进程和原进程之间没有父子关系!仅仅是用一个 sh...

2019-04-07 20:22:51 809

原创 2.0 Linux进程

进程状态(stat)STAT代码说明S睡眠。通常是在等待某个事件的发生,如一个信号或有输入可用R运行。严格说,是‘可运行’,即在运行队列中,处于正在执行或即将运行状态D不可中断的睡眠(等待)。通常是在等待输入或输出完成T停止。通常是被 shell 作业控制所停止,或者进程正处于调试器的控制之下Z死(Defunct)进程或僵尸(zombie)进...

2019-04-07 12:05:22 137

原创 1.0 Linux文件系统

Linux(Unix)文件类型文件类型ls缩写应用常规文件-保存数据目录d存放文件符号链接l(小写的 ’L‘)指向其他文件字符设备节点c访问设备块设备节点b访问设备命名管道函数p进程间通信套接字s进程间通信硬链接与软链接...

2019-04-07 11:35:46 192

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除