自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

My Coding Life

个人博客:jmyblog.top

  • 博客(60)
  • 收藏
  • 关注

原创 SIGCHLD信号与进程异步等待

进程等待首先,让我们先来回顾一下有关进程等待的知识。所谓进程等待,说的就是父进程等待子进程:如图,父进程调用wait和waitpid函数等待子进程,从而清理系统中的僵尸进程。在此过程中,父进程可以阻塞等待子进程结束,也可以非阻塞地查询是否有子进程结束等待清理(也就是轮询的方式)。若采用阻塞等待方式,父进程就不能处理自己的工作了;采用非阻塞方式,父进程在处理自己工作的同时还要时不时地轮询⼀下子进程状态

2017-06-09 17:32:39 517

原创 linux下gdb的安装方法

前言gdb是Linux环境下的代码调试工具,为了能在linux环境下更有好的编程体验。其安装可谓是势在必行。安装过程安装gdb的过程很简单,具体步骤如下:step1:首先检查系统中有没有安装过,有的话用一下命令卸载gdb旧版本step2:安装Texinfo文档系统(博主也不知道这是啥,反正照做就是了>~<)这个要先切换到root step3: 在网址:http://ftp.gnu.org/gnu/

2017-06-02 18:43:19 38305

原创 linux下”is not in the sudoers file“问题的解决办法

原因当有时候我们使用sudo命令切换用户的时候可能会遇到提示以下错误:xxx is not in the sudoers file. This incident will be reportedxxx是你当前的用户名,其实就是因为这个用户没有加入到sudo的配置文件里,解决办法就是打开配置文件加入用户权限。解决step1:用su换为root用户,并输入以下命令进入sudo配置文件step2:在配置文

2017-06-02 17:04:54 31515 1

原创 线程互斥与同步(part4)—终结篇:“一股清流”—读写锁(rwlock)

前言在博主上篇博文中,讲述了解决线程同步的“扛把子”信号量,并用代码实现其应用。欢迎小伙伴们围观!详情点击:linux线程互斥与同步(part3)—解决线程同步的”扛把子“:信号量( Semaphore)接下来博主将详细介绍linux线程互斥与同步的完结篇:读写锁(rwlock)一股清流为什么把读写锁称为一股清流呢?只因它是一种比较特殊的锁。那它特殊在哪里呢,我们先来讲一个不悲伤的故事:王铁锤和李狗

2017-06-02 13:56:33 924 2

原创 线程互斥与同步(part3)—解决线程同步的”扛把子“:单身狗-信号量( Semaphore)

前言在上篇博文中博主介绍了解决线程同步的条件变量,它和第一篇的互斥锁是一对’cp’。想了解的小伙伴可以点击这里:linux线程互斥与同步(part2)—互斥锁(Mutex)的“cp”:条件变量(Condition Variable)那么这篇博文就为大家隆重介绍线程同步的另一个重要概念:信号量( Semaphore)一个游戏信号量的概念在进程里也有,它是用来描述临界资源的数目的,关于信号量最重要的就是

2017-05-31 11:25:53 1088

原创 线程互斥与同步(part2)—互斥锁(Mutex)的“cp”:条件变量(Condition Variable)

前言在博主的上篇博文中介绍了linux线程互斥的原因,并引入了互斥锁(Mutex)来解决问题,点击这里听互斥锁讲述它的的故事:linux线程互斥与同步(part1)—互斥锁(mutex)的原理及其实现机制那么本篇博客就继续介绍关于linux线程互斥的另一个重要概念:条件变量(Condition Variable)条件变量(Condition Variable)和互斥锁(Mutex)的“cp”关系有句

2017-05-28 09:44:26 1793 1

原创 线程剖析(part2)—线程控制及线程属性

前言在博主的上一篇博客中讲述了线程的基本概念及线程创建,没有看过的小伙伴可以点击这里:linux线程剖析(part1)—1个“假”的tcb本篇博文将重点从两个方面:线程控制(线程等待、线程终止)及线程属性来进一步分析线程特点。线程终止首先,我们需要知道线程终止的几种方式:1.从线程函数中return(特殊:从main函数中return,代表进程退出,也代表主线程退出。那么此时线程必定被终止。) 2

2017-05-26 17:56:36 732

原创 linux线程互斥与同步(part1)—互斥锁(mutex)的原理及其实现机制

一段代码引发的问题首先,我们来编写一段代码,它的目的是定义一个全局变量,创建两个线程对其进行5000++的操作。运行结果如下: 当然,目前来看,这段程序并没有任何的问题。然而,对于此程序,结合线程的特点,我们需要明确两点:局部变量 i 不是共享的,因为它在栈中gCount是共享的,因为它是全局变量,属于代码段。我们知道,只要是共享的资源,那么它就可以看作临界资源,而临界资源的访问需要同步与互

2017-05-25 20:52:18 11220 7

原创 linux线程剖析(Part1)—1个“假“的tcb

linux的“假”线程先说一句废话:线程是在进程内部运行的一个执行分支。这是现在大多数计算机书籍对线程概念的描述。然而,对大多数人来说(比如我),仍然不(yi)知(lian)所(meng)云(bi)。为了深刻理解这句话背后的含义,我们先来看一张图:我们知道,vfork函数是用来创建子进程的。且该函数创建出的子进程与父进程共用一个地址空间。所以,可以将父进程中的代码和函数分解,并分别交给这些子进程并行

2017-05-25 10:15:08 3010 1

原创 朋友圈的“真相”—并查集(UnionFindSet)

一道笔试题已知有n个人,m对好友关系(存于数字r),若两个人是直接或间接的好友(好友的好友的好友……),则认为他们同属于一个朋友圈。例如:n = 5,m = 3,r={{1,2},{2,3},{4,5}};表示一共有5个人,3对好友关系,其中,1和2是好友,2和3是好友,4和5是好友;则1、2、3是一个朋友圈,4、5是一个朋友圈,结果是两个朋友圈。问题:编写程序求出这n个人里有多少

2017-05-21 20:43:48 486

原创 STL容器BitSet(位图)——1道腾讯笔试题的正确打开方式

Question从40亿个没有排序且不重复的无符号整数中快速判断一个数的存在性。 【腾讯笔试题】分析思路由40亿个不重复的无符号整数,我们可以得到两点信息:最大的整数是40亿无符号整数unsigned long表示范围:0—4294967295(42亿)接下来,我们需要利用一下数学知识:4294967295 = 2^32字节,而2^30字节 = 1G所以42亿约为4G 这意味着为了表示这些

2017-05-20 20:48:50 1732 3

原创 Linux与Windows之间的文件共享

前言博主近期的大数据课程中,要求配置Hadoop,其中包括HDFS和YARN的配置。配置的时候老是出现配置文件.xml和.sh等文本文件的问题,后来才知道是格式问题,原因在于Windows和Linux的回车换行表示不同。最后博主通过文件共享覆盖了Linux的配置文件,问题才得已解决。所以呢,楼主在百度写了一篇文件共享的经验,需要用到的小伙伴们请戳这里: http://jingyan.baidu.c

2017-04-12 12:25:50 377

原创 Linux指令初探之——Find的用法

写在前面对于Linux小白来说,庞大的指令系统往往会打的我们措手不及。Linux的指令到底有多少种呢?具体的数字大家可以自行度娘,但你可以随便找一本Linux指令大全。摸一摸它的厚度……俗话说,“世上无难事,只怕有心人。”再多的指令我们也不必惧怕,只要加以练习,就一定会掌握。指令虽多,但相对比较重要的其实不是很多。下面我们来看看这些为数不多的指令中的一个——Find指令。Meaning要掌握一个指令

2017-04-05 11:25:38 402

原创 Linux的环境变量

什么是环境变量环境变量是Linux系统中一个重要的组成部分,它里面主要保存一些目录或命令文件,还可以是与你Linux系统相关的资料,比如用户登录名、主机名、邮件存放目录等,为用户使用Linux系统提供方便。 当然,环境变量是有很多种的。 对于环境变量,We Need To Know…环境变量在Linux系统中是全局的,这意味着任何人都可以访问它。在Linux系统中,环境变量也被保存成文件,毕

2017-03-18 17:55:15 643

原创 Linux权限管理

生活中的权限思想在日常生活中,我们经常会遇到这样的问题:想在QQ音乐里下载一首歌,结果因为不是会员或者没有付费而不能下载想看一段视频,因为不是VIP所以无法播放有别人的银行卡,但因为没有密码而取不了钱(这个有点邪恶了…) …… 没错,这就是生活中的权限问题。 同样,在Linux系统中也有类似这种的权限思想,权限是Linux系统中至关重要的一个概念。Linux系统中的权限1. 两种权限三

2017-03-16 22:38:15 636

原创 初识Linux

一个伟大的男人  基本资料:林纳斯·托瓦兹(Linus Torvalds),1969年生人,美国国籍。   生平概述: -1988年,在大学接触Unix。随后根据教科书及minix源代码,打造了自己的操作系统Linux(alone)。一开始,Linux就像是Unix的副本,但随着功能的不断扩充,Linux早已能够独当一面。 - 1991年8月25日,在网络上发布了Linux内核的源代码。

2017-03-16 20:44:19 539

原创 C++命名空间的几种玩法

**什么是命名空间?**命名空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字:namespace name1{ int a = 0; }说到这里,相信你一定会想到std这个命名空间。没错,标准C++库中的所有组件都是在一个被称为std的名字空间中

2017-02-20 20:47:42 3957

原创 浅析程序执行的整个过程

程序的执行过程是每个编程人员都必须理解掌握的基础知识,一个程序从产生到执行,通常需要这么几个过程:1.在不同的环境里编辑源程序此过程需要在不同的编译系统进行源程序的编写,可以是集成环境IDE(如VC6.0、VS等),也可以用LINUX、UNIX来编写,编写完成后,将源程序放在自己指定的文件夹下。2.对原程序进行编译2.1 预处理编译由编译器提供的预处理器完成,主要包括:宏替换

2016-10-19 14:56:25 1033

原创 浅析宏和函数的区别与联系

1.一些思考我们都知道宏非常频繁地用于执行一些简单的运算,比如求较大较小值,但为什么不用函数来完成呢?主要有以下几个原因:NO.1 用于调用和从函数返回的代码很可能比实际执行这个小型计算工作的代码更大,所以用宏比使用函数在程序的规模和速度方面都更胜一筹NO.2 函数的参数必须指定为一种特定的类型,只能在类型合适的表达式中使用,而宏是与类型无关的,而这既是宏最大的优点也是它最大的缺点

2016-10-19 14:47:54 574

原创 1分钟通晓C语言的4种预定义符号

1.基本信息如下表所示:符号含义值类型作用样例__FILE__进行编译的源文件名十进制数字变量确认调试输出来源“name.c”__DATE__文件被编译的日期  字符串常量

2016-10-18 20:03:22 2400

空空如也

空空如也

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

TA关注的人

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