程序喵大人

其他

百度工程师浅谈分布式日志

规范,提供统一接口,可方便开发者在自己的服务中集成一种或多种分布式追踪的实现。由于近年来各种链路监控产品层出不穷,当前市面上主流的工具既有像Datadog这样的一揽子商业监控方案,也有AWS
2023年3月24日
其他

20 张图带你全面了解 HTTPS 协议,再也不怕面试问到了!

传输的数据是明文。黑客很容易通过嗅探技术截获报文,由于数据没有加密,内容可以被黑客所理解。举个例子:如果用户输入密码取款,那么黑客窃听了此密码后,就可以为所欲为了!容易被篡改:黑客可以在截获
2023年2月28日
其他

操作系统:文件系统的实现

一、文件系统结构磁盘的逻辑单元为块,内存和磁盘之间的I/O传输以块为单位执行。磁盘的特点1可以原地重写,可以从磁盘上读一块儿,修改该块,并将它写回到原来的位置可以直接访问磁盘上的任意一块。因此,可以方便地按顺序或随机访问文件文件系统需要提供高效快捷磁盘访问,以便轻松存储、定位、提取数据。即存储文件、访问文件文件系统有两个不同的设计问题访问问题:如何定义文件系统对用户的接口存储问题:创建数据结构和算法,把逻辑文件系统映射到物理外存设备文件系统本身通常由许多不同层组成。每层实际利用更低层功能,创建新的功能,以用于更高层的服务。设备驱动程序可以作为翻译器,他的输入作为高级指令,输出由底层的、硬件特定指令组成。基础文件系统只需向适当设备驱动程序发送命令。逻辑文件系统通过文件控制块维护文件结构。文件控制块(FCB)包含有关文件的信息,包括所有者、权限、文件内容的位置等。大多数操作系统支持多种不同的文件系统,举例:CD-ROM
2023年2月23日
其他

用chatGPT生成C++代码

众所周知,chatGPT可以不依赖背景立即有效地回答不精确的问题。它提供带有工作代码的答案。一位美国的Telegram算法交易员,以其所在的项目组的实际问题进行了测试,问题如下:“有没有办法自动序列化Protobuf消息?就像以下内容:C++结构体->序列化为Protobuf消息结构体->发送到网络”chatGPT回复如下:如上所示chatGPT解决了这个问题!该程序员输入“Python版本解决办法”得到了如下回复:这正是上面的问题解决办法!AI在未来将对开发者的工作体验产生巨大的影响,这是只是开端。2月16,Incredibuild
2023年2月14日
其他

constexpr

前面介绍了模板这种编译期动作,关于编译期动作,有必要介绍下constexpr。在这之前有必要简单提一下constexpr与const的关系,两者字面上都表达常量的意思。主要的区别是:const修饰的变量可以在运行时才初始化,而constexpr则一定会在编译期初始化。constexpr才是名符其实的常量,所有的constexpr都是const。而const表示的是read
2023年2月6日
其他

Google为Chromium引入Rust?

API都已经有Rust接口。Meta正在推广Rust,Amazon也在更多的依赖Rust。Google现在很多项目也使用了Rust,还特意为Android开发者出了一套Rust教程。NSA(美国
2023年1月16日
其他

百度工程师带你探秘C++内存管理(ptmalloc篇)

bins中的每一个bin分别包含了一个给定范围内的chunk,其中的chunk按大小降序,相同大小按时间降序。当然,并不是所有chunk都按上述的方式来组织,其他常用的chunk,如:top
2023年1月9日
其他

《计算机网络:自顶向下方法》全新第8版

Shanghai)计算机科学系主任)就一起计划撰写一本关于网络教学的课本。Kurose和Ross于1979年在哥伦比亚大学相识,共同选了由Mischa
2022年12月28日
其他

Rust学习资料

最近在研究Rust,目前大多数项目都可以使用Rust开发,但是涉及到和其他语言交互,比如用Rust开发一个SDK,一般还是需要导出C接口。那如何将Rust导出C接口?Rust的FFI就是专门做这件事的。一个正常的Rust
2022年12月26日
其他

CPU Cache伪共享问题

line上。代码中开了两个线程,两个线程大概率会运行在不同的CPU上,每个CPU有自己的Cache。当CPU1操作x时,会把y装载到Cache中,其他CPU对应的的Cache
2022年12月12日
社会时事

送《高性能MySQL》书籍

2022年5月,StackOverFlow社区发布开发者调查报告,全世界超过70000名开发人员参与了调研,回答了他们的技术、工具以及工作偏好。值得关注的是,在最流行的技术调查中,专业开发者群体的倾向有了较为明显的改变。调查显示,PostgreSQL超越MySQL成为专业开发者最喜欢的数据库。MySQL看似结束了霸榜时代,但事实果真如此吗?事实上,专业开发者对PostgreSQL(46.48%)的喜好只是略胜于MySQL(45.68%)。但是,可以看到在所有受访者中,MySQL(46.85%)却明显胜于PostgreSQL(43.59%)。要知道的是,MySQL在开发者最喜欢的数据库榜单中多年霸榜。十年过去,国内的数据库江湖已经换了模样,云数据库成为很多公司的选择,国产数据库创业公司也此起彼伏,而
2022年10月20日
其他

从C语言实现面向对象探究class的秘密

这里我想主要介绍下在C语言中是如何实现的面向对象。知道了C语言实现面向对象的方式,我们再联想下,C++中的class的运行原理是什么?首先我们来写一段C++的class,拿一个Student类来举例子:在头文件中,我定义一个Student类:#pragma
2022年10月12日
其他

C++20最重要的三个新特性

C++之父都说过,C++20是C++语言的一次重大变革,引入了大量的新特性。这其中个人认为最重要新特性是这三个:ModulesCoroutinesConceptsModules直接看代码://
2022年10月8日
自由知乎 自由微博
其他

《C++20高级编程》出版了,送书

这个系列还有个兄弟本《C++20实践入门》,也叫新手本,套装如下,现在活动直降193,直接5折带走,更划算!老规矩,评论区挑5个老铁送书!截止时间:2022年9月27日(周二)晚八点
2022年9月26日
其他

C++ 实现高性能内存池项目实现

nT;如果我们一开始就确定好我们可能需要多少内存,那么在最初的时候就分配好这样的一块内存区域,当我们需要内存的时候,直接从这块已经分配好的内存中使用即可,那么总共需要的分配时间仅仅只有
2022年9月23日
其他

C++类设计和实现的十大最佳实践

http://en.wikipedia.org/wiki/C%2B%2B11#Explicitly_defaulted_and_deleted_special_member_functions
2022年9月20日
其他

操作系统面经

前一段时间面了一些试,这里总结一下关于操作系统的面经,我简历上写了一个操作系统相关的项目,所以面试的问题可能与平常的八股面试题等等有一些差异,更加偏向具体细节和实现。这里就面试遇到的操作系统相关问题以及我自己的想法整理一下,可以参考参考,有什么问题也还请批评指正。这个是实际问到我的问题自己引申出来的问题黑色普通文字是我的“回答”或者与面试官闲聊的内容启动启动过程,BIOS->MBR->Bootloader->OS,多
2022年9月16日
其他

有哪些好用的代码检查工具

CPP静态代码检查工具有很多,具体可以在这个链接中找到:https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis%23C%2C_C%2B%2B常用的我都列在了上图,比如cppcheck,使用方式如图,它在Linux上安装比较方便:sudo
2022年9月5日
其他

如何写出优雅的C++代码

这里其实有一点点问题,头文件引用顺序不满足编码规范,这里其实clang-format都可以检测出来,但clang-tidy也可以检测出来,通过-fix还可以进行自动修复:~/test$
2022年9月3日
其他

互联网最值得加入的173家国企汇总!!

今年的就业形势,实在是严峻。社招都这样,更别说应届生。除过常见的互联网,以及今年热门的新能源。其实如果大家不想卷,家庭条件也还可以,我建议可以考虑一波国企。虽然有一些垃圾国企,但仍然有非常多值得考虑的国企,毕竟优质的国企很稳定,不会像互联网一样担忧年纪大被裁员的情况发生,福利又好,同事间工作不会卷来卷去,享受足额的五险一金等等。我这里汇总了一些计算机专业可以加入的国企,分享给求职的小伙伴们,内容很多,先收藏再看!原文链接:https://www.zhihu.com/question/285730093/answer/2506491786,作者:重庆搬砖喵,整理:沉默王二一、首选证券公司各省基本都有一所证券公司,沿海省份集中在税前30-40万左右,内地集中在20-30万。很少加班,多数为国企,一般要求硕士。然后还有些公募和私募基金的技术岗,比如易方达基金,华安基金、汇添富基金,比较看中学历,待遇比券商更高。我认识的一个中部211硕去了上海资产(私募),22k*18=39.6,在基金公司里算是比较低的了。在证券公司做程序员,不仅要注重专业技术,也要重视业务逻辑,需要了解很多金融类相关的专业知识。二、各大银行总结一下就是3点:稳定+薪资还行+没有营销压力。整体上大银行的待遇>中小银行地方性银行总行的待遇>国有行省级分行银行是个比较大的话题:3家政策行(稳定+高薪),6大国有行,12家全国股份行。每个省的地方性城市银行,地方性农商行,未改制的省联社,还有一批地级市小银行。1)银行分类首先银行主要分为如下5类:3家政策性银行(国家开发银行、进出口银行、农业发展银行),总行+各省的省级分行6家中央管辖的国有行(中农工建交+邮储),结构为:总行+各省的省级分行12家全国性股份制商业银行(中信、华夏、招商、深发、光大、民生、浦发、渤海、广发、兴业、恒丰、浙商),结构为:总行+各省的省级分行已完成股份制改制的各省地方性城市银行+农村商业银行。144家城市商业银行(南京银行、杭州银行、宁波银行、重庆银行、中原银行、北京银行、上海银行,四川银行等等),212家农村商业银行(北京农商银行、重庆农村商业银行、深圳农村商业银行、广州农村商业银行、上海农商银行等等),经营范围基本只在本省。25家未改制的省级农信联社(贵州省农村信用社、河北省农村信用社联合社,辽宁省农村信用社联合社等),经营范围只在本省。2)根据层级分类银行科技信息岗分为以下几类:整体上,总行下属科技信息部>总行下属研发中心>=省级分行>=省会城市支行>=科技子公司>其他地级市支行。还有些信用卡中心,数据中心我不了解就不说了。1、总行下属的科技信息部。很少写代码,主要是做技术规划,做管理(管理外包)和运维,所以招人比研发中心少。招聘要求:一般211硕士起步,学历要求最高。稳定与待遇:稳定,拿总行平均绩效,待遇不差,看银行盈利水平,每个银行差异较大,入职税前15-28万之间,后续30万+。基本不加班,朝九晚五。2、总行部门下属的软件研发中心。专职写代码,招人比较多的:工行研发中心(西安成都珠海广州杭州北京),中行研发中心(西安合肥),农业银行研发中心(天津北京成都)。招聘要求:一般211硕士起步,211&985本科也可以,本科进去性价比高,学校好,基本上去了就要。稳定与待遇:稳定,但是待遇不太高,转正后大概税前15万-25万,根据职称涨薪资。要加班,加班多少看部门。3、全国性银行省分行的科技岗。全国性银行在每个省都有省分行,多数要写代码。招聘要求:硕士起步,或者211本科起步,每个省可能不一样。稳定与待遇:稳定,薪资大概拿省分行平均工资,待遇看当地的经济情况(效益),一般12-20万。广州和深圳,转正后就20多万,干三年,职级上去了,一年总包应该也是30万左右吧。加班看具体情况。4、省会城市支行的科技信息岗位。省分行下属管理各个地级市支行,地级市里当然省会城市待遇最好。一般不写代码。招聘要求:本科起步,省会城市竞争最大。稳定与待遇:稳定,薪资大概12万-20万。待遇看当地的盈利情况。省会支行待遇可能高于省分行。比如杭州支行待遇可能高于浙江省分行待遇。5、总行下属的科技子公司。银行内部的外包公司。比如招银网络科技,建信金融科技,中银金科,浙商银行的子公司“易企银”,兴业数金,专职写代码。招聘要求:本科起步。稳定与待遇:稳定性肯定是下降了,但是待遇上去了,转正后一般税前20-28万。加班会比较多。优点:薪酬较高(20-30万),招聘量大。缺点:稳定性差,无行员编制,加班多,技术一般。6、非省会地级市分支行的科技岗。非省会地级市&区县的科技岗,不写代码,干运维提需求这些。招聘要求:本科。稳定与待遇:稳定,待遇比较一般了,税前10万左右吧,看当地分行的效益拿平均绩效,一般在当地还是中上水平。求职推荐:3家政策性银行总部(国开行、农发行、进出口银行),最稳定。农业银行,邮储银行(不是子公司同时待遇又高),渤海银行(天津有额外20%
2022年8月31日
其他

一个优质的C++学习圈

大家好,我是程序喵。筹备了大半年,我的知识星球,终于开始正式运营了。今天想和大家聊聊我为什么想做星球。为什么要做星球?提高沟通效率,避免微信上点对点低效输出,希望一个回答能够解决更多人的困惑。星球内容和资料可保存,不像群聊,很多资料过一段就失效,而且也会被各种信息冲没。知识星球比群聊更能聚焦在技术上,所有的群聊最后可能都会变成吹水群,我想做个只聊技术或者正能量的社群。没有人数上限,可以链接1000个铁杆粉丝,也可以链接到真正对技术感兴趣的人,过滤一些伸手党。我也想赚点钱,目前写作其实是真赚不到什么钱,性价比超低。我想搭建一个优质的学习C++编程、讨论C++技术,能够帮助别人少走弯路的圈子。同时我会在星球内不定期更新一些C++技术以及精选问题,把网络上及数万个好友私信提的典型问题,我对编程领域的一些思考,都沉淀到这。星球内可随时提问,且支持查看过往所有内容。在星球中,你能收获到什么?星球专属原创C++专栏内容,入门、进阶、实战、源码分析等,应有尽有(这是我想要重点打磨的内容),帮助你从入门到进阶,再到实战做项目,入门专栏已经更新70%了,所有专栏都在持续更新中。获取海量C++编程学习资料。和众多C++大佬们1对1交流,你可以向我,向嘉宾,向星球里其他大佬提问,帮你答疑解惑。大佬们的独家经验分享,包括编程学习、实战技巧、职场晋升、运营创作、人生感悟等。和小伙伴们一起学习打卡,增加动力,共同进步。帮助你完成自己的项目,提升对编程的兴趣。其他福利:抽奖、送书、线下聚会等。另外想说一句:知识付费不是消费,而是投资。希望你投资了我的这个星球能收获到数倍数百倍的回报。我自己也是知识付费的先行者,光买课就已经花了差不多上万块了,但是我也得到了数倍的回报,我认为我这笔投资是非常值得的。如果你想进星球,可以扫下方二维码领取公众号读者优惠券:随着星球人数越多,时间成本、服务成本也会越高,星球价值也会越高,所以星球每到一定人数就会涨价,大家早来早优惠哈。
2022年8月26日
其他

async的两个坑

一般人可能都知道C++异步操作有async这个东西。但不知道大家是否注意过,其实它有两个坑:它不一定真的会异步执行它有可能会阻塞下面是async具体的介绍:async是比future,packaged_task,promise更高级的东西,它是基于任务的异步操作。通过async可以直接创建异步的任务,返回的结果会保存在future中,不需要像packaged_task和promise那么麻烦。关于线程操作可以优先使用async,看一段使用代码:#include
2022年3月7日
其他

C++都有哪些就业方向?是否应该学习C++?

大家好,我是程序喵。我经常会收到很多私信,其中很大一部分都是关于C++就业的问题。比如C++就业都有哪些方向?犹豫要不要学习C++的,C++卷不卷之类的?当然还有很多稀奇古怪的问题。今天就统一回答下,希望能帮到有类似问题的朋友。C++的就业方向其实有很多,基本对性能有极致要求的方向都会用到C++。(嵌入式开发)C++现在很大的一块就是嵌入式开发,嵌入式相关的岗位其实一直都挺多,以硬件产品的公司为主,包括华为、小米、vivo、oppo和一些芯片公司都在大量的招聘嵌入式开发工程师,而且薪资也不低,大家可以Boss直聘上搜一搜。除了上面提到的公司,最近风头正盛的,像物联网,新能源和自动驾驶都是行业风口,薪资高,机会多,这些方向都在招C++开发。其实个人认为做C++的朋友们可以考虑考虑汽车方向,待遇不错,有广阔的就业前景,应该也没一般的互联网公司那么卷,年轻时候先去最近比较火的这些新能源公司多挣点钱,年纪大了如果没混到管理层的话,可以考虑去个传统车企或者外企,谋求稳定。(客户端开发)一般是开发Windows上的桌面软件,比如wps之类的,技术栈的话一般是C++和QT,岗位挺多,也没那么卷。(游戏开发)现在游戏行业这么火爆,腾讯天美相当挣钱,年终奖也是特别高,好像有些团队有100多个月年终奖,它们的游戏引擎就都是使用C++开发的,而且现在各大公司都在布局游戏,网易、腾讯、字节都有游戏部门,还有像米哈游、莉莉丝、暴雪这些游戏公司也都有c++岗位,但是游戏方向是属于垂直型的,如果选择这个方向做了很多年,之后再想转到其他方向可能就有点困难了。(音视频)这两年短视频特别火爆,抖音快手B站都发展的特别快,像字节每天入账好几亿。。。现在大多数公司都在招聘音视频方向的人才,而音视频最主要的技术栈就是C++,大家也可以尝试这个方向,目前还没有那么卷,我自己就是在音视频这个赛道窝着呢,我自己也把近几年看过的一些音视频资料整理成了PDF,详情看这里压箱底的音视频学习资料以及面经整理。(服务端开发)这可能也是C++的老本行,百度腾讯这么大的公司,后台也是使用的C++语言,还有一些量化私募企业、证券公司也都是使用C++。尽管后端开发这块领域被Go和Java蚕食了很多,但是这些语言的使用也仅限于后端业务开发,对性能要求较高的框架之类的东西还都是使用C++呢。很多朋友可能会说C++做服务器现在已经不流行了,貌似是这样,但是也不用对C++失望,现在音视频,游戏和自动驾驶比以前火的多,这些岗位还是需要大量的C++开发的。还有最近特别火的“元宇宙”,我感觉也是非常有利于C++就业的。(人工智能)深度学习工程化开发,深度学习只是一项技术,它终归需要落地,想落地就需要工程化,人工智能目前可以落地的主要领域,个人认为主要还是安防和自动驾驶,这块都会使用C++开发,包括深度学习算法SDK,深度学习框架开发等,我以前也做过这块。除了上面说的这些行业经常使用C++,其实还有编译器操作系统方向的,但不是主流,这块我就不多啰嗦了。至于是否要学习C++、C++卷不卷的这个问题,我想说的是,完全看你兴趣,编程开发语言一共就那几个,可以都了解了解,对哪个感兴趣就选哪个,其实差别也不大,关键还是人,我认为厉害的人选择哪个语言都会有好的前途,总是纠结这纠结那的人往往最后一事无成。至于卷不卷,卷意味着竞争压力大,但岗位也多,同理,不卷意味着竞争压力小,但岗位也会偏少,我认为C++语言处在中间水平吧,没有那么卷,岗位也没有那么少。一句话:如果感兴趣,扎进来就完事了,只要你肯努力,就一定不会被卷走的。也可以直接看视频:往期推荐高端操作:不用继承我也能实现多态知乎高赞:为什么有些大公司技术弱爆了?冷门知识点:进程间通信如何加锁?手撸一个智能指针不要再无脑背诵面向对象三大特性了继承和组合,究竟我要选哪个?一位大佬对于
2022年2月21日
其他

如何优雅的实现多维数组

multi_array;第一眼看上去,貌似没啥毛病。但其实不对,上面的multi_array其实是个4行3列的数组,然而这才是个正确的3行4列的数组:std::array
2022年2月18日
其他

推荐学习这个开源项目

今天,想聊聊workflow这个开源项目。关于workflow,我之前特意写过一篇文章【推荐学习这个C++开源项目】。今天还是想再啰嗦啰嗦,因为自己这一年也在带团队从0到1做项目,需要负责整个项目的架构设计、接口设计、模块划分等工作。做了一段时间后再回过头复盘一下,深知架构设计、接口设计的重要性,也感受到了架构设计的困难程度,编码和设计相比,真的容易的多了。然后自己又回头来研究了一下workflow,想着学习下其他项目的设计理念,随着自己研究的越来越深入,越来越感觉它的高端,对外暴露特别简单的接口却能完成非常复杂的功能。上篇文章是基础篇,主要向大家普及一下workflow的特点和作用,感兴趣的朋友可以移步到那里哈。本篇文章是进阶篇,主要就是想介绍下workflow的任务模型,其他的框架一般只能处理普通的网络通信,而workflow却特别适用于通信与计算关系很复杂的应用。其实我最感兴趣的是它的内存管理机制,下面也会详细介绍。优秀的系统设计在作者的设计理念中:程序
2022年2月15日
其他

高端操作:不用继承我也能实现多态

大家应该都知道C++17引入了variant,这篇文章我们来研究下它究竟有啥用。本期目录
2022年2月14日
其他

知乎高赞:为什么有些大公司技术弱爆了?

本文整理自知乎上的同名讨论帖:《为什么有些大公司技术弱爆了?》,版权归原作者所有。原文地址:www.zhihu.com/question/3203922有网友提问:今年年初,到一家互联网公司实习,该公司是国内行业龙头。不过技术和管理方面,却弱爆了。那里的程序员,每天都在看邮件,查问题工单。这些问题,多半是他们设计不当,造成的。代码写的一团糟,全是复制粘贴,连作者都没改,大家普遍不写注释,也不格式化,代码歪歪扭扭。一个项目里,httpclient竟然出现了四种。一种是该公司研发部写的,一种是老版本的开源项目,一种是新版本的开源项目,还有一种是开发人员造的轮子。打接口请求响应日志,竟然不知道用拦截器。打错误日志竟然不打上下文信息,每个人一种日志风格,千奇百怪。许多重要的中间流程,居然不打日志。idea、eclipse、myeclipse的配置文件竟然全部传到项目里去了。该公司混了两年的程序员,跟快递公司做查询接口,竟然不知道加密运单号。所有服务间通讯,都没有设requestId,导致跟踪会话很困难。一个没什么qps的边缘接口,居然做消费者生产者+阻塞队列的异步模式。显得你技术少是不是。不知道异步会增加维护成本,提高测试难度吗?而且,任务队里没有考虑持久化,赶上发布,丢了好多任务。读取一个小小的xml和exc配置文件,居然用流式解析,没见过这么二逼的,真是醉了。做优化全靠拍脑门拍大腿,难道不会用excel分析日志,用jprofile扫项目?一个100以内的常数集合遍历,他也要写个优化算法进去,算法跟业务还搅在一起,一团乱麻。每个人都在嚷嚷性能、算法、分布式计算……几乎没有文档,全靠从代码反推逻辑。有枚举他不用,非要在每个页面上,把枚举值挨个儿写死,知道后面改代码多么费劲吗?欺骗性的变量名,里面存储的是AES加密的,变量名后缀却写成了DES;里面存的是小写字母,却写成upperStr。一个方法十几个参数,有三分之一是极其简略的缩写,注释肯定也没有的。一个类写到三四千行是常事。开发自测,居然要把代码全丢到公共机器上,而且都是走svn,他们把svn当ftp用。svn里面大量的无意义提交,一多半的提交连都编译不过去。我看到有个应届生,改了两句话,马上提交,说是怕代码丢失。一个运行了两年的项目,spring的包扫描明显配错了,有些bean根本扫不进来,居然没有人发现。一半的bean在spring管理下,另一半的bean他们自己写单例模式来实例化。他们用mysql来做审计系统,出报表,有个报表要跑8分钟。原来是有人用字符串来存多值(逗号分隔),sql里写了like,导致没有利用到索引。为什么不用pg,pg在sql编程方面,功能更丰富,更适合做统计,它本身就支持数组。程序员们都是得过且过的态度,怎么把代码灌进去,跑的通测试,就算交差了。为什么大型互联网公司,技术和管理这么差劲,是怎么形成的?萧井陌的回答:地址:www.zhihu.com/question/32039226/answer/76059969楼主你好,我试着给你解释一下,希望你能满意。新手经常会有这样的想法——「这代码怎么这么烂?写的人干什么吃的?怎么能这样?为什么不按照书上说的做?」,这很正常,大家都年轻过,经历过这种阶段,我懂你心里的想法,所以也愿意详细地向你解释,这一切发生的原因是什么。你说“不过技术和管理方面,却弱爆了。那里的程序员,每天都在看邮件,查问题工单。这些问题,多半是他们设计不当,造成的。”你真的觉得『国内行业老大的互联网公司』会是技术和管理弱爆了的样子吗?你以为团队应该像永动机,但现实永远有各种摩擦、辐射、损耗。内燃机的能量转化率,通常只有
2022年2月10日
其他

手撸一个智能指针

估计大家面试过程中应该都会被问到C++11的shared_ptr是如何实现的,大家应该都能答出来引用计数的概念,但是如果要让你手写一个shared_ptr,你能写出来吗?最近,我写了一个简单的shared_ptr,在这里分享一波。首先定义一个主管引用计数的类:class
2022年2月8日
其他

冷门知识点:进程间通信如何加锁?

这是[每日一题]栏目的第三题,如图:关于进程间的通信方式估计大多数人都知道,这也是常见的面试八股文之一。个人认为这种面试题没什么意义,无非就是答几个关键词而已,更深入的可能面试官和面试者都不太了解。关于进程间通信方式和优缺点我之前在【这篇文章】中有过介绍,感兴趣的可以移步去看哈。进程间通信有一种[共享内存]方式,大家有没有想过,这种通信方式中如何解决数据竞争问题?我们可能自然而然的就会想到用锁。但我们平时使用的锁都是用于解决线程间数据竞争问题,貌似没有看到过它用在进程中,那怎么办?我找到了两种方法,信号量和互斥锁。直接给大家贴代码吧,首先是信号量方式:#include
2022年2月7日
其他

不要再无脑背诵面向对象三大特性了

作者:二律背反链接:https://www.zhihu.com/question/305042684/answer/557460817OOP有且只有一个价值:应对需求的变化。哪里的需求有变化,哪里就要OOP;哪里的需求不变,哪里就不需要OOP。一个hello
2022年2月6日
其他

继承和组合,究竟我要选哪个?

[每日一题]栏目第二题,如图:问题1:想让每个类对象都有一个唯一的ID,有什么优雅的设计?首先肯定要设计一个管理对象ID的类,即:struct
2022年2月4日
其他

一位大佬对于 Qt 学习的最全总结(三万字干货)

}}在一些大的项目中,可能嵌套了很多子项目,有时候会遇到子项目依赖其他子项目的时候,比如一部分子项目用来生成动态库,一部分子项目依赖这个动态库进行编译,此时就需要子项目按照顺序编译。TEMPLATE
2022年2月3日
其他

C++ Trick:右值引用、万能引用傻傻分不清楚

这两个符号,可能是初学C++或者C++11的时候,把很多人劝退的一个点。但想理清其实也不难。首先在非模板函数中,&&肯定是表示右值引用,所以只能接收右值类型的参数。class
2022年2月1日
其他

有没有比友元更优雅的方式

今天开始,「每日一题」栏目正式上线,我争取每天在朋友圈发一个问题,邀请大家讨论,然后在公众号里公布答案。特此声明:这里的每日一题,是指每日最多一题,而不是每日至少一题。这是今天的问题:我这里再详细描述一下:首先有一个类A:struct
2022年1月29日
其他

C++服务性能优化的道与术-道篇:阿姆达尔定律

中我讲到了2000年后摩尔定律的终结,CPU时钟频率定格,多核成为CPU发展的新方向,并行计算成为趋势。在谈到并行计算的时候我们不得不提的就是阿姆达尔定律。阿姆达尔定律即
2022年1月28日
其他

压箱底的音视频学习资料以及面经整理

大家好,我是程序喵。本人是主要从事音视频相关的开发工作,但发现网上关于音视频的学习资料都比较零散,而且也没有一套比较全面的面经,所以我把自己这几年整理的相关资料都掏出来给大家。(获取完整版pdf文档请在公众号后台回复“微信”,添加我微信领取)咳咳:这篇文章我本来都想开付费阅读了,因为真的耗费了我极大精力。后来想想还是算了,支持的就点个赞、转发、在看吧。温馨提示,文末更精彩。废话不多数,直接上干货,内容都是自己整理的,有些地方难免有错误,大家见谅哈。音频处理需要理解的概念有哪些?采样率:每秒采集声音的数量HZ,一般为44100HZ采样精度:每次采样的精度位数,位数越多,能记录的范围就越大,一般为16bit。通道:单声道,双声道,四声道等。比特率:也叫码率,比特率
2022年1月27日
其他

C++ Best Practices (C++最佳实践)翻译与阅读笔记

消除了以上的两种问题}注意:永远不要在用ranged-for的时候修改容器自身16.使用ranged-for时配合auto使用不使用auto会让你更容易不经意间犯一些错误:意外的类型转换:for
2022年1月25日
其他

万字长文 | STL 算法总结

Outputiterator,会导致错误。将无效的迭代器传给某个算法,虽然是一种错误,但不保证能够在编译器期间就被捕捉出来。因为所谓“迭代器类型”并不是真实的型别,它们只是function
2022年1月24日
其他

2021程序喵技术年货

不知不觉2021就过去啦,农历新年到来之际,🐱把去年精华文章奉上。希望大家除了收藏外,求转发!求点赞!2022,让我们卷起来,技术干货走起~1.如何写出优雅的C++代码
2022年1月22日
其他

【性能优化】lock-free在召回引擎中的实现

大家好!在我们的工作中,多线程编程是一件太稀松平常的事。在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者缓存内容不符合预期,重则会产生异常,导致进程崩溃。为了解决这个问题,操作系统提供了锁、信号量以及条件变量等几种线程同步机制供我们使用。如果每次操作都使用上述机制,在某些条件下(系统调用在很多情况下不会陷入内核),系统调用会陷入内核从而导致上下文切换,这样就会对我们的程序性能造成影响。今天,借助此文,分享一下去年引擎优化的一个点,最终优化结果就是在多线程环境下访问某个变量,实现了无锁(lock-free)操作。背景对于后端开发者来说,服务稳定性第一,性能第二,二者相辅相成,缺一不可。作为IT开发人员,秉承着一句话:只要程序正常运行,就不要随便动。所以程序优化就一直被搁置,因为没有压力,所以就没有动力嘛😁。在去年的时候,随着广告订单数量越来越多,导致服务rt上涨,光报警邮件每天都能收到上百封,于是痛定思痛,决定优化一版。秉承小步快跑的理念,决定从各个角度逐步优化,从简单到困难,逐个击破。所以在分析了代码之后,准备从锁这个角度入手,看看能否进行优化。在进行具体的问题分析以及优化之前,先看下现有召回引擎的实现方案,后面的方案是针对现有方案的优化。广告订单以HTTP方式推送给消息系统消息系统收到广告订单消息后将广告订单消息格式化后推送给消息队列kafka(第1步)将广告订单消息持久化到DB(第2步)召回引擎订阅kafka的topic从kafka中实时获取广告订单消息,建立并实时更建立维度索引(第3步)召回引擎接收pv流量,实时计算,并返回满足定向后的广告候选集(第4步)从上面图中可以看出,召回引擎是一个多线程应用,一方面有个线程专门从kafka中获取最新的广告订单消息建立维度索引(此为写线程),另一方面,接收线上流量,根据流量属性,获取广告候选集(此为读线程)。因为召回引擎涉及到同时读和写同一块变量,因此读写不能同时操作。概述在多线程环境下,对同一个变量访问,大致分为以下几种情况:多个线程同时读多个线程同时写一个线程写,一个线程读一个线程写,多个线程读多个线程写,一个线程读多个线程写,多个线程读在上述几种情况中,多个线程同时读显然是线程安全的,而对于其他几种情况,则需要保证其_互斥排他_性,即读写不能同时进行,管他几个线程读几个线程写,代码走起。thread1{
2022年1月20日
其他

SDK开发的一些思考

人应当像“人”字一样,永远向上而又双脚踏地。——
2022年1月17日
其他

Linux中对【库函数】的调用进行跟踪的 3 种【插桩】技巧

在编译阶段插桩,新建的文件rd3_wrap.c是与app.c一起编译的,其中的包装函数名是wrap_rd3_func。app.c中通过一个宏定义实现函数的"重导向":rd3_func
2022年1月15日
其他

【线上问题】P1级公司故障,年终奖不保

__unguarded_partition我们看下__unguarded_partition函数的定义:template
2022年1月13日
其他

探索CPU的调度原理

First,最短任务优先)从相同到达时间的多个任务中选取运行时长最短的一个任务进行调度,接着再调度第二短的任务,以此类推。针对上一节的工作负载,使用SJF进行调度的情况如下,周转时间变成了50s(
2022年1月10日
其他

防御性编程技巧

转载:https://blog.csdn.net/everpenny/article/details/6316698在防御性编程的大框架之下,有许多常识性的规则。人们在想到防御性编程的时候,通常都会想到“断言”,这没有错。我们将在后面对此进行讨论。但是,还是有一些简单的编程习惯可以极大地提高代码的安全性。尽管看上去像是常识,但是这些规则却往往被人们忽视,这就是为什么世界上并不缺少低质量软件的原因。只要程序员们警惕起来,受到足够的督促,更高的安全性和可靠的开发很容易就能够实现。在下面的几页中,将列出防御性编程的一些规则。我们将先从粗略的概览开始,整体地描述防御的技巧、过程和步骤。随着讨论的深入,我们会加入更多的细节,进一步地逐条分析每条代码语句。在这些防御性技巧中,有一些是与具体的编程语言相关的。这很自然——如果你的编程语言会让你射伤到自己的脚,那么你一定要穿上防弹靴。在阅读这些规则时,请对你自己进行一个评估。在这些规则中,现在你遵循的有几条?你打算采纳哪些规则?1
2022年1月8日
其他

C++的全链路追踪方案,稍微有点高端

*caller);参数就是callee和caller的地址,那怎么将地址解析成对应函数名?可以使用dladdr函数:int
2022年1月5日
其他

多线程程序中操作的原子性

field常用来高效的存储有限位数的变量,多用于内核/底层开发中。一般来说,对同一个结构体内的不同bit成员的多线程访问是无法保证线程安全的。例如Wikipedia中的如下例子:struct
2022年1月4日
其他

喵哥吐血整理:软件开发的51条建议

最近在读《软件开发的201个原则》,书内容不多,但是每一页都看的很仔细,好像往往这种言简意赅的书更让人有静下心来仔细阅读的欲望。在我看来,读书的作用本来就不是解答所有的困惑,而是激发人更加深入地学习的动力。如果看这本书的时候,你会主动搜索文献或者资料,去了解更多的信息,那说明这本书就已经帮助了你。话不多说,抛砖引玉,今天和大家分享下我的“读后感”。质量第一:编程一定要把质量放在首位,没有可商量的余地。当你被要求要为质量做妥协时,要直接说不。质量必须可量化。做好质量与开发效率之间的权衡:对质量要求越高,开发效率就越低。越是强调提高开发效率,最终的质量就越低,bug的密度就会增加。如何提高软件质量:让客户参与、在全面开发之前验证需求、保持设计简单、code
2021年12月28日
其他

为什么公司宁可高薪招一个新员工,也不愿意给老员工涨一点工资?

关于这届应届生的薪资情况,简单表达了一下自己的看法,有不少朋友看完,纷纷表示,自己的薪资被倒挂了。很多公司宁愿高价招个新人,也不愿意给老员工加薪,相信这是很多职场上的朋友都遇到过的问题。说实话,我的心态属实就崩了,还得靠自己调整,才能继续保持
2021年12月26日
其他

不到三个月刷了400多道算法题!

我最近在猛刷算法题(加我微信好友的朋友应该隐隐约约也听说了吧)。文末有福利最近三个月的时间,刷了差不多400+题,而且都是用的业余时间(所以最近原创文章更新频率低,求原谅)。
2021年12月24日