自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

守望的博客-编程珠玑

Linux/C/C++/数据结构与算法/工具/资源,关注公众号编程珠玑,第一时间获取更多原创技术文章...

原创 Linux/C/C++ 不可错过的好书

来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 前言 经常有读者让我推荐书籍,这次我就把我私藏的计算机书单分享给你们!不过由于时间匆忙,不会进行更加详细的介绍。 以下大部分书籍可在公众号后台恢复关键字获取电子版,不过建议购买纸质书。 声明 由于...

2019-10-24 19:57:00 23376 33

原创 学Linux到底学什么

来源:公众号【编程珠玑】 作者:守望先生 网站:https://www.yanbinghu.com/2019/09/25/14472.html 前言 ​我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到底要学什么? 为什么要学Linux 在回答学什...

2019-09-27 21:08:37 34715 64

原创 32位程序和64位程序这些区别你知道吗?

我们在编写C/C++程序时,32位程序和64位程序的代码有何区别?如何编写既可以编译成32位程序又可以编译成64位程序的代码? 代码上的区别 实际上,对于32位程序和64位程序来说,代码上的区别不大,严格来说,甚至是一样的,它的主要区别在于一些基本数据类型占用的字节长度不一样(注:这里仅针对类...

2020-06-26 09:14:00 73 0

原创 神奇,C代码竟然能当成shell脚本一样“直接”执行!

前言 我们都知道,写完了的C代码是需要编译链接之后才能运行的(也许你不需要手动点击编译,但是IDE可能帮你做了这件事),那么能不能让C代码像执行shell脚本或者Python脚本一样,直接可运行呢?类似于: $./main.c 就可以直接运行了。 看起来虽然没啥用,但是感觉有点小刺激。...

2020-05-24 17:49:54 86 0

原创 C语言数组下标-1你见过吗?

不知道你有没有见过-1作为数组下标的,我算是见到了。当然这一点在Python之类的语言中毫不稀奇。 ​下标-1的代码 这里redis源码中的一部分: sdssdsMakeRoomFor(sdss,size_taddlen){ void*sh,*newsh; size_tavail=sdsa...

2020-05-16 18:21:40 244 0

原创 C语言为什么只需要包含stdio.h就能使用里面声明的函数?

​有人问:C语言为什么只需要include<stdio.h>就能使用里面声明的函数?这是一个看起来非常简单的问题,但是很多初学者,甚至学了很久的人都可能没有搞明白。 为什么包含即可用? 要明白包含即可用的原因,就必须讲到C语言代码是如何变成可执行文件的了,这里可以参考《hello程...

2020-05-10 21:23:46 306 0

原创 如何在Linux下显示当前git分支

之前有读者在《Linux下如何优雅地修正命令?》中问到,如何在终端显示当前的git分支,实际上这就是自定义终端显示配置了。 不过在直接介绍如何显示当前分支之前,来看看到底怎么回事。 bashrc配置 每次我们登录一个shell终端的时候,前面都有一些固定的显示信息: root@ubuntu...

2020-04-18 20:24:35 102 0

原创 教你写出健壮可靠的shell脚本!
原力计划

如果秉承着能跑就行的态度写shell脚本,是很自在的,但是如果你想要写出健壮,可靠的shell脚本,可没那么容易。那么有什么可操作的经验或者方法吗? 语法检查 第一个最简单的方法就是利用工具对脚本进行检查,这一部分已经在《有了这个神器,再也不怕shell写不对了》中介绍过了,它能最大程度地发现...

2020-04-18 16:38:05 904 2

原创 一行注释也能影响代码运行?别不信!

​来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 没想到吧,一行注释也能影响运行结果 也许你在某个段子里听说过,某行注释删掉后,程序竟然不能预期执行?真的会这样么?你还别不信。 见证“奇迹” 1//来源:公众号【编程珠玑】 2//作者:守望...

2020-04-12 08:37:49 3535 14

原创 有了这个神器,再也不怕shell写得不对了
原力计划

来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng ​ 写过shell脚本的人都知道,即便出现一些简单的语法错误,运行的时候也可能没有办法发现。有些看似运行正确的脚本,实际上可能在某些分支,某些场景下仍然出现错误,而有的写法可能运行正常,但是却不符合POSI...

2020-04-11 21:04:47 459 0

原创 如何快速修正你的Linux命令?

​来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 如何快速纠正你的linux命令?我们在输入命令的时候,难免会出现输入命令错误,或者输入过多,过少的情况,那么除了各种按方向键退回之外,还有什么快速纠正命令的方法? 本文用|表示光标位置。 移动到命令开...

2020-03-21 11:11:18 188 0

原创 除了语言本身,程序员还应掌握哪些技能

​来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 前言 作为C/C++开发,其语言的掌握自然是非常重要的,当然了,与此相关的算法,计算机基础,网络等知识也都是需要学习了解的,那么除此之外,还有哪些是建议掌握的呢? Linux 这个我在《学Linu...

2020-03-21 11:03:29 199 0

原创 高频面试题-如何交换两个变量值?办法没你想得那么多!

​来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng C语言交换两个整型变量,你有哪些方法?那么多方法,又有哪几个可行? 不可行的方法 初学者最容易理解错的方法: //来源:公众号【编程珠玑】 //https://www.yanbinghu.com...

2020-01-11 20:32:58 2591 2

原创 解引用NULL会导致挂死?

来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 解引用NULL指针为什么会出错,导致程序挂死?或者说访问内存地址为0的位置为什么会视为非法? 先了解NULL ​参考《NULL,0,'\0'有何区别?》。 解引用NULL 解释...

2020-01-10 08:09:18 433 0

原创 几个简单但你可能忽略的C知识点

C语言main函数的写法 标准中,只有下面两种写法: intmain(void){/**body**/} 以及 intmain(intargc,char*argv[]){/**body**/} 而C++的第二种与C类似,第一种是这样的: intmain(){/**body**...

2020-01-04 08:53:00 630 0

原创 换个角度说makefile

作为Linux下的C/C++开发者,没接触过makefile一定说不过去,通常构建大型的C/C++项目都离不开makefile,也许你使用的是cmake或者其他类似的工具,但它们的本质都是类似的。 作为一个轻度使用者,应读者要求,斗胆介绍一下makefile,不过与普通的makfile教程不同的...

2020-01-04 08:46:57 410 0

原创 多线程就一定快吗?天真!

​ 在《多线程排序》中介绍了多线程排序,似乎看起来多线程快了很多,然而多线程就一定更快吗? 为什么多线程就不一定快? 还是拿《多线程排序-真香!》中的程序举例,下面是各个线程数量的排序结果: 线程数 时间/s 1 2.393644 ...

2019-12-31 09:18:14 912 0

原创 生成随机数的方式你选对了吗?

来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 生成随机数的N种方式 首先需要说明的是,计算机中生成的随机数严格来说都是伪随机,即非真正的随机数,真正随机数的随机样本不可重现。那么我们来看看代码中有哪些方式可以生成随机数。 rand rand函数...

2019-12-25 21:06:39 3074 0

原创 多线程排序-真香

​来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 在《系统编程-多线程》中已经了解了多线程的一些特点,其中包括快!那么今天就来看看如何利用多线程来排序。 思路 我们的思路是这样的: 假设有N个线程,则将数组数M据分为N组 每个线程对...

2019-12-25 21:00:17 1402 1

原创 void*该如何理解?

原文地址:https://www.yanbinghu.com/2019/12/15/19682.html 说到C就不得不提指针,而一提到指针,有一个是比较特殊的,那就是void*。 void*到底是怎样的存在? ​指针类型的含义 在说明void*之前,先了解一下普通指针类型的含义。 ...

2019-12-18 19:10:34 531 1

原创 系统编程-文件I/O

​来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 我们都听过Linux下一切皆文件,实际上无论是普通的文件读写,还是网络IO读写,它们都有着类似的操作过程。本文通过基本文件IO操作,来了解Linux“一切文件”的读写。当然过程中穿插着很多其他内容。 ...

2019-12-14 10:51:16 234 0

原创 善用shared_ptr,远离内存泄露(文末福利)

​来源:公众号【编程珠玑】 作者:守望先生 《为何优先选用unique_ptr而不是裸指针?》中说到,如果有可能就使用unique_ptr,然后很多时候对象是需要共享的,因此shared_ptr也就会用得很多。shared_ptr允许多个指向同一个对象,当指向对象的最后一个shar...

2019-12-12 21:26:53 227 0

原创 不可不知的三种缓冲类型

​来源:公众号【编程珠玑】 作者:守望先生 原文地址:https://www.yanbinghu.com/2019/12/01/27836.html 为什么有时候写入文件的内容却没有?没什么printf打印在终端的内容看不到?这一切背后有着怎样早为人知的秘密? 今天来说说缓冲的事。也许...

2019-12-07 21:13:52 263 0

原创 如何让你的程序同时只能运行一个?

有些程序我们希望在一台机器上只有一个实例在运行,我在windows下也遇到过很多类似这样的程序,如QQ,它只允许同时运行一个。那么我们在Linux该如何实现这样的单例运行的程序呢? 思路 实现这样的程序方法很多,但是总体思路都是类似的: 1.启动程序,检测标志,判断是否有同样的程序运行,...

2019-12-02 21:32:08 269 0

原创 聊点基础的--sizeof,strlen,数组,字符串在一起能整哪些坑?

对于初学者来说,sizeof,strlen,数组,字符串整在一起是痛苦的,它总能在某些莫名其妙的时候整一个措手不及。本文看看它们在一起能挖什么坑。 例子 在说明这些问题之前,先看一段代码,看看你是否都理解了。(注:以下代码结果为编译为64位程序后运行结果) //来源:公众号【编程珠玑】 #...

2019-11-22 12:47:14 769 2

原创 这个编程技巧别说我没告诉你

​ 前言 有读者在后台留言说用c写一篇有限状态机的推文,正好之前也用过,就分享一下吧。 背景 先举一个简单的例子,假设是这样的,一个小孩有两种状态,睡眠,清醒。睡的时候可能会撒尿,微笑,撒尿之后会转为清醒状态,而清醒的时候可能会笑,会吃,吃完之后会转会睡眠状态 用C语言实现,一般写法可能是...

2019-11-16 09:00:35 533 1

原创 工作中几乎用不到算法,为何要学算法?

前言 不知道你有没有发现,非算法类的岗位,工作之后几乎没有用到什么算法,为什么还要学算法?本文谈谈自己的看法,不供参考。 从用人者角度 毋庸置疑,面试是用来筛选候选人的,在这个僧多粥少的时候,就需要提高筛选条件,例如最常见的学历,不是说学历一般的人不好,而是总体来说,学历好的人里面挑选到合适...

2019-11-14 14:02:24 591 0

原创 为何优先选用unique_ptr而不是裸指针?

前言 ​在《拥抱智能指针,告别内存泄露》中说到了内存泄漏问题,也提到了C++中的智能指针基本原理,今天就来说说类模板unique_ptr。 在此之前,先回答读者的一个提问:C语言中该怎么办?有几点建议: 编写时尽量遵循函数内申请,函数内释放的原则 注意成对编写malloc和fre...

2019-11-11 21:16:45 430 0

原创 Linux安装C++手册,就是这么简单

前言 在Linux编写或者编译C代码的时候,直接使用man命令就可以查看该函数的使用手册,非常方便,如: man3sleep 但是一般却没有C++的函数手册,怎么把C++的帮助手册也装在机器上呢? 本文借助C++手册的安装,说明如何自助安装man手册。 man原理 如果你还不习...

2019-11-08 09:26:55 259 0

原创 超棒离线手册-每个开发者的福音

前言 昨天在分享如何安装man手册时候,有读者留言提到了zeal,特意去体验了一下,感觉还不错,也分享给大家。在这里再次感谢读者【0x27】。 zeal 不知道你是否曾经想过,如果有一个工具,类似于软件管理工具,我要什么文档下载什么文档,然后就可以使用了,那该多好,就不用到处找文档了。 z...

2019-11-08 09:25:03 290 0

原创 拥抱智能指针,告别内存泄露

前言 我们都知道,当申请的内存在不用时忘记释放,导致内存泄漏。长期来看,内存泄漏的危害是巨大的,它导致可用内存越来越少,甚至拖慢系统,最终进程可能被OOM(out of memory)机制杀死。 C与C++中的内存泄漏 在C语言中,我们用malloc申请内存,free释放内存;在C++中,也...

2019-11-07 21:39:02 2470 2

原创 linux自助安装man手册,就是这么简单!

前言 ​在Linux编写或者编译C代码的时候,直接使用man命令就可以查看该函数的使用手册,非常方便,如: man3sleep 但是一般却没有C++的函数手册,怎么把C++的帮助手册也装在机器上呢? 本文借助C++手册的安装,说明如何自助安装man手册。 man原理 如果你还不...

2019-11-05 22:16:30 477 0

原创 C++和C中的const关键字有何区别?

前言 在《const关键字到底该怎么用》一文中介绍了C语言中的const关键字,本文说说C++中的const关键字,它的大部分特点和C语言中的类似,所以本文主要针对不同之处。 修饰普通变量--只读 在C语言,虽然表面是不允许被修改,但是看下面的代码: #include<std...

2019-11-02 08:53:32 223 0

原创 有了它,再也不怕C中的复杂声明了

前言 随着学习的深入,你可能慢慢地接触到越来越多的复杂声明,而这里有一个网站,帮你识别复杂的声明。 试一试 你知道下面的声明是什么意思吗? void(*signal(int,void(*)(int)))(int); 没关系,访问https://cdecl.org/ 输入上面的内容就可...

2019-11-01 12:33:40 222 0

原创 几道C/C++小题,看看你会不会?

构造函数 下面使用无参构造函数声明变量的方式对吗?为什么?应该如何修改? Testtest(); 答案参考《认真理一理C++的构造函数》。 数组和指针 下面代码的输出结果是什么? //实际中千万不要这么写 #include<stdio.h> intmain(...

2019-11-01 12:32:13 290 0

原创 向别人请教问题,不要这样开头

前言 我们经常会有请教别人问题的时候,而下面这几种是不太建议的提问开头 在吗? 能问你一个问题吗? 有谁知道xxx吗? 当然你向我提问的时候,也不用称呼为大佬或者大神之类的,我就是一个普通的开发者。 为什么 毋庸置疑,你提问的目的自然是想得到解答,而上面三种提问...

2019-11-01 12:30:51 623 0

原创 作为一个Linux/C/C++开发工程师,聊聊对Python的看法

​首发:公众号【编程珠玑】 作者:守望先生 前言 首先说明,这不是软文。仅仅是个人看法,同时也会仍然坚持C/C++,毕竟要吃饭。 近年来以及最近想必大家总能看到Python的身影, 有的是频繁报道Python制霸编程语言排行榜,有的是总能看到各种Python的培训课程,作为主要使用其...

2019-10-29 12:33:15 1967 4

原创 杀死进程的N种姿势你知道吗

首发:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 四折购书福利不要错过,鉴于问我推荐书的朋友比较多,过几天我会整理一个自己的书单分享给大家,有的好书存在缺货情况,建议早下手。好了,正文开始。 前言 你是如何终止你的程序的?在《killall为什么找不...

2019-10-23 22:04:02 1231 4

原创 killall为什么有时候会找不到进程?

前言 在Linux下有很多命令用于杀死进程,它们可以用于不同的场景,例如通过进程名杀死进程,通过pid杀死进程。这些方法我不准备一一列举,本文想说明的一个问题是,为什么明明通过ps找到了进程,但是通过killall却说找不到呢?如果你没有遇到过这样的问题?那你更要注意了! killall简介 ...

2019-10-21 21:08:16 647 0

原创 printf每天都在用,你知道它的变长参数是怎么实现的吗?

首发:公众号【编程珠玑】 作者:守望先生 原文:https://www.yanbinghu.com/2018/09/22/24370.html 前言 变长参数,指的是函数参数数量可变,或者说函数接受参数的数量可以不固定。实际上,我们最开始学C语言的时候,就用到了这样的函数:printf,它...

2019-10-17 07:50:44 523 0

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