• 好好学习,天天向上~
  • 欢迎欢迎~

2019年03月的内容

linux笔记

Linux学习第30节,内核中互斥锁的设计,及其C语言代码实现

上一节主要讨论了 Linux 内核中的信号量,知道了持有信号量的线程可以睡眠,因此如果有一段临界区需要较长时间的保护,与自旋锁相比,选择信号量无疑是更合适的。多数用户使用信号量只使用计数 1,这时的信号量其实就是一个互斥的排它锁——好比允许睡眠的自旋锁。 事实上,相对于自旋锁,...

lcc 3天前 17℃ 0评论 1

c语言

C语言陷阱与技巧第1节,C语言函数中的局部变量作用范围是整个函数吗?

在开发C语言程序的过程中,若是能为变量取一个合适的名字,即使不写额外的注释也能让整个程序段一目了然。不过遗憾的是,有时候好用的名字会被其他变量占用,这时为变量取名就是一件头疼的事了。 我常常在同事的代码里看到诸如 size1, size2, size3 的变量名,令人眼花缭...

lcc 3天前 12℃ 0评论 1

c语言

C语言面试题详解第16节

在程序员求职面试中,有相当一部分时间是用来问答数据结构相关问题的。由于链表是一种经常使用又相对简单的数据结构,所以在面试中经常出现。 另外,虽然在程序开发中常常使用别人写好的库(例如操作链表相关的库),但是C语言是一门注重效率的语言,C程序员只有了解每个库,才能写出消耗资源少,运...

lcc 3天前 13℃ 0评论 1

c语言

C语言面试题详解第15节

上一节介绍了算法的概念,讨论了算法与程序开销,以及程序工作效率之间的关系,并且在最后给出了一道面试题,要求使用C语言写出几种常用的数组排序算法,并比较各种方法的工作效率。限于篇幅,上一节主要讨论了插入排序法,本节我们再来看看其他几个常用的数组排序算法。 当然了,为了让文章不至于...

lcc 3天前 8℃ 0评论 1

c语言

C语言面试题详解第14节

有句古话叫“隔行如隔山”,在有些外行人看来,编写程序是一项非常有技术含量的工作,甚至还有些“科幻”色彩。其实没那么夸张,程序员编写程序其实只是为了控制计算机替人类工作而已。区分程序员技术水平的方法,就是看他编写的程序是否能够使用更小的开销,以更高的效率完成工作。 提升程序工作效率...

lcc 2周前 (03-12) 49℃ 0评论 0

linux笔记

Linux学习第29节,从C语言源码分析,信号量和自旋锁有何区别

上一节主要介绍了Linux内核中的自旋锁,知道了自旋锁是不能睡眠的,因此只适合用于短时间的保护临界区。如果需要较长时间的持有锁,就不应该再使用自旋锁了,因为这会大量消耗 cpu 的性能,大大降低整个系统的效率。 不过,在Linux内核开发中,不可避免的会遇到需要长时间保护的临界区...

lcc 2周前 (03-09) 35℃ 0评论 1

linux笔记

Linux学习第28节,自旋锁的C语言代码实现

上一节主要介绍了 Linux内核中的原子操作,在某种程度上避免了多个线程对同一全局变量的竞争问题。要是内核中的其他C语言程序开发中的临界区都能像上一节介绍的原子变量那样简单就好了。 然而事与愿违,在某个C语言项目中,可能某个临界区甚至会跨越多个函数。例如,函数 A 负责从共享数...

lcc 2周前 (03-09) 27℃ 0评论 0

c语言

C语言面试题详解(第13节)

为什么要研究“递归” 递归并不算是C语言的语法,更像是程序设计中的一种算法,从某种程度上来说,递归过程其实就是实现自我嵌套的过程,理解这一过程要求程序员具备一定的逻辑思维能力。当然了,使用合适的方法,对理解复杂递归过程也是有一定的帮助的。因此,上一节在讨论了C语言中的递归函数时,...

lcc 2周前 (03-09) 29℃ 0评论 0

c语言

C语言基础非常重要,为什么字符串输出不正常呢?

最近公司部门里来了两个刚毕业的新同事小明和小华,小伙子头脑很灵活,交待给任务时,一般都能有不错的想法。但是基本功略差,写出的C语言代码很难看。中午吃饭时,正巧跟他们碰到一起,我就提到嵌入式程序开发要注重基础,没想到被他俩鄙视了,哈哈。他们认为研究基础的都是码农,程序员要注重的是思...

lcc 2周前 (03-09) 29℃ 0评论 0

杂谈

世界上第一个程序员是女性

在大多数人的印象中,计算机程序员大都是男性。事实也差不多如此,许多大型科技公司里,从事软件编程和技术工作的女性员工都比较少。谷歌可能有比较高的比率,但也仅仅只有 17% 的技术人员是女性。 然而,可能绝大多数人都想不到,几十年前,正是女性首创了计算机编程!小编问了一些计算机专业的...

lcc 2周前 (03-09) 20℃ 0评论 0