嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读

技术阅读

  • 晋升、面试中绕不开的算法问题,这次有攻略了!

    2024-07-16

    经常和大家强调算法的重要性,有个朋友说,他知道算法很重要,但好像工作中并不怎么能用到,只是为了大厂面试去花那么多钱和精力学算法,究竟值不值呢? 这其实也是很多人的疑惑,刚毕业那会也都是这么想的。工作中我们经常听到一些高大上的词汇,比如架构、微服务、大数据、云计算等等,却往往忽略了作为一个软件开发人员最基础的编程能力。 所以你经常会看到一些工作了 3-5 年的 C++ 开发工程师,乱写、乱抄、或者乱改代码,程序执行效率极其低下甚至崩溃;就算不是你写的,接手这样的代码,也一定是件让人抓狂的事。甚至你还会发现,每到跳槽涨...

  • 访问私有成员——从技术实现的角度破坏"封装" 性

    2024-07-16

    在C++教材的前几章就介绍了其特性,即:C++是一门面向对象语言,具有封装、继承和多态三个特点。后来,随着编码的增多以及工作经验的积累,对个概念的理解越来越深。编码习惯也严格按照相应的规则,该封装的时候进行封装,该继承的时候进行继承,以使得编程思维从之前的面向过程逐步过渡到面向对象。作为开发人员,遵循编程规则本来就无可厚非,但是如果大家都遵循规则难免会有创新或者技术进步。有时候,在做某件事或者看到某个实现方案的时候,想想为什么要这么做,有没有更好的实现方案,这个编程或者做事习惯往往使得自己受益匪浅。比如,我们都...

  • 再议内存布局

    2024-07-16

    在上一篇文章中聊到了虚函数表,以及内部的部分布局。对于c++对象的内存布局一直处于似懂非懂似清非清的阶段,没有去深入了解过,所以借着这个机会,一并分析下。多态在我们日常工作中用的算是比较多的一种特性,业界编译器往往是通过虚函数来实现运行时多态,而涉及到虚函数的内存布局往往是最麻烦且容易出错的,本文从一个简单的例子入手,借助gcc和gdb,对内存布局进行分析,相信看完本文,对内存布局会有一个清晰的认识。多态众所周知,C++为了实现多态(运行期),引进了虚函数(语言标准支持的,其它实现方式不在本文讨论范围内),而虚函数的实现...

  • Linux 内核中常用的 C 语言技巧

    2024-07-16

    Linux内核采用的是GCC编译器,GCC编译器除了支持ANSI C,还支持GNU C。在Linux内核中,许多地方都使用了GNU C语言的扩展特性,如typeof、__attribute__、__aligned、__builtin_等,这些都是GNU C语言的特性。typeof下面是比较两个数大小返回最大值的经典宏写法:#define max(a,b) ((a) > (b) ? (a) : (b))如果a传入i++,b传入j++,那么这个比较大小就会出错。例如:#define max(a,b) ((a)>(b)?(a):(b))int x = 1, y = 2;printf("max=%d\n", max(x++, y++));printf("x = %d, y = %d\n", x, y);输出结果:max=3,x=2,y=4。...

  • C++23 特性概览

    2024-07-16

    新年伊始,要说什么选题最合适,那无疑是C++23了。23是个小版本,主要在于「完善」二字,而非「新增」。因此,值得单独拿出来写篇文章的特性其实并不多,大多特性都是些琐碎小点,三言两语便可讲清。本篇包含绝大多数C++23特性,难度三星就表示只会介绍基本用法,但有些特性的原理也会深入讲讲。1Deducing this(P0847)Deducing this是C++23中最主要的特性之一。msvc在去年3月份就已支持该特性,可以在v19.32之后的版本使用。为什么我们需要这个特性?大家知道,成员函数都有一个隐式对象参数,对于非静态成员函数,这个隐式对象参数就是this指针;...

  • 一文看懂 Linux 性能分析|perf 原理

    2024-07-16

    最近线上运行的程序出现性能问题,但通过分析程序源代码(Code Review),并找不到导致问题的根本原因。所以,只能借助强大的性能分析工具 perf 来找出问题所在。perf 工具的功能非常强大,但本文并不是介绍 perf 工具的使用,而是介绍 perf 的实现原理。介绍 perf 使用的文章多如牛毛,但介绍 perf 原理和实现的却凤毛麟角。但正因为 perf 功能非常强大,所以其实现也是非常复杂的。本文只介绍其中的一个功能:分析进程中的函数调用频率。接下来,我们先介绍怎么使用 perf 来分析进程中的函数调用频率。使用 perf 分析程序性能瓶颈在介绍 perf 的...

  • C语言回调函数,提升C技巧必备

    2024-07-16

    ↓推荐关注↓转自:网络版权归原作者所有,如有侵权,请联系删除。一、函数指针在讲回调函数之前,我们需要了解函数指针。我们都知道,C语言的灵魂是指针,我们经常使用整型指针,字符串指针,结构体指针等。int *p1;char *p2;STRUCT *p3; // STRUCT为我们定义的结构体但是好像我们一般很少使用函数指针,我们一般使用函数都是直接使用函数调用。下面我们来了解一下函数指针的概念和使用方法。1. 概念函数指针是指向函数的指针变量。通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。函数指针可以像一般函数一样...

  • 一文读懂 Linux 内存分配策略

    2024-07-16

    本篇主要以问答的方式来探索Linux内存系统的分配策略Linux 进程的内存分布长什么样?在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址空间的范围也不同。比如最常见的 32 位和 64 位系统,如下所示:通过这里可以看出:32 位系统的内核空间占用 1G,位于最高处,剩下的 3G 是用户空间;64 位系统的内核空间和用户空间都是 128T,分别占据整个内存空间的最高和最低处,剩下的中间部分是未定义的。再来说说,内核空间与用户空间的区别:进程在用户态时,只能访问用户空间内存;只有进入内核态后...

  • 100 个网络基础知识

    2024-07-16

    ↓推荐关注↓来源:网络,相关著作权归原作者所有1)什么是链接?链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。2)OSI 参考模型的层次是什么?有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。3)什么是骨干网?骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。4)什么是 LAN?LAN 是局域网的缩写。它是指计算机与位于小物理位置的其他网络设备之间的连接。5)什么是节点?节点是指连接发生的点。它可以是作为网络一部分的计算机或设...

  • 细说|Linux 内存泄漏检测实现原理与实现

    2024-07-16

    在使用没有垃圾回收的语言时(如 C/C++),可能由于忘记释放内存而导致内存被耗尽,这叫 内存泄漏。由于内核也需要自己管理内存,所以也可能出现内存泄漏的情况。为了能够找出导致内存泄漏的地方,Linux 内核开发者开发出 kmemleak 功能。下面我们来详细介绍一下 kmemleak 这个功能的原理与实现。kmemleak 原理首先来分析一下,什么情况会导致 内存泄漏。1. 造成内存泄漏的原因内存泄漏的根本原因是由于用户没有释放不再使用的动态申请的内存(在内核中由 memblock_alloc、kmalloc、vmalloc、kmem_cache_alloc 等函数申请的内存),那么哪些内存...

  • Linux 管道到底能有多快?

    2024-07-16

    ↓推荐关注↓作者:Francesco原文:https://mazzo.li/posts/fast-pipes.html译者:CSDN - 王雪迎本文作者通过一个示例程序,演示了通过Linux管道读写数据的性能优化过程,使吞吐量从最初的 3.5GiB/s,提高到最终的 65GiB/s。即便只是一个小例子,可它涉及的知识点却不少,包括零拷贝操作、环形缓冲区、分页与虚拟内存、同步开销等,尤其对Linux内核中的拼接、分页、虚拟内存地址映射等概念从源码级进行了分析。文章从概念到代码由浅入深、层层递进,虽然是围绕管道读写性能优化展开,但相信高性能应用程序或Linux内核的相关开发人员都会从中受益匪...

  • Linux CPU 上下文切换的故障排查

    2024-07-16

    ↓推荐关注↓译者:子沐爱扫地 来源:https://blog.devgenius.io/linux-cpu-context-switch-troubleshooting-bda45883e59eCPU 上下文切换是保证 Linux 系统正常运行的核心功能。可分为进程上下文切换、线程上下文切换和中断上下文切换。在本文中,我将进一步讨论如何分析 CPU 上下文切换问题。检查 CPU 的上下文切换我们知道,过多的上下文切换会消耗 CPU 的时间来保存和恢复寄存器、程序计数器、内核栈和虚拟内存等数据,从而导致系统性能显着下降。既然上下文切换对系统性能的影响如此之大,那么我们如何检查它呢?好了,你可以使用 vmstat 工...

  • 5 种方式初始化 String 成员,怎样选择?

    2024-07-16

    C++初始化成员的方式有许多,尤其是随着C++11值类别的重新定义,各种方式之间的差异更是细微。本文将以String成员初始化为例,探讨以下5种方式之间的优劣:call by-const-referencecall by-valuetwo-overloadsstd::string_viewforwarding references输入不同,它们的开销也完全不同,我们将以4种不同的输入分别讨论。本篇结束,下方的表格也将填满。实际要讨论的情况远超1种,因此这张表格在不同的情境下,填入的开销也不尽相同。多种情况,多个概念,交叉讨论,错综复杂,这也是本篇文章难度能入四星的原因。下面正式进入讨论。1 call by-const-re...

  • curl 作者:不考虑其他语言重构,计划升级 C 语言标准、明年发布 curl 8

    2024-07-16

    ↓推荐关注↓来源:OSC开源社区(ID:oschina2013)curl 创始人兼核心开发者 Daniel Stenberg 发表博客称,他正在考虑是否要将 curl 使用的 C 语言标准从 C89 升级到 C99。Daniel 表示,他观察到许多广受欢迎的 C 语言开源项目正在向前发展,并将所使用的 C 语言标准升级到 C99 或更高版本,例如 Linux、Git 等项目。而且在 curl 的邮件列表中也经常出现关于升级 C 语言标准的讨论,特别是现在已计划在 2023 年春季发布 curl v8,所以从理论上来讲,这可能是进行一些更改的好时机。如果要升级 C 语言标准到 C99,那就要考虑哪些 C99 特性可以改进像 ...

  • 嘘!悄悄分享 60 个相见恨晚的神器工具

    2024-07-16

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。今天来分享一个神器,或者说是60个神器工具。让 WebP 图片下载为 PNG 格式,从 Github 批量下载表情包,一键滚动截屏整个网页,助你快速成为 B 站老司机,一键分析网站技术栈,翻录网页视频神器等等。这些功能,都能在 Chrome 中使用件简单实现。不信?你往下看就行了。最近,GitHub 上有个名为 ChromeAppHeroes 的项目登上了趋势榜。与其他 GitHub 项目不同,它的目标聚焦在 Chrome 上。目标是为优秀的Chrome插件写一本中文说明书, 让 Chrome 插...

  • C语言的核心和灵魂

    2024-07-16

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。提起C语言,大部分开发者很自然就会想到指针二字。没错,作为C的核心和灵魂,它的地位咱们就不再赘述了。今天,我们想跟大家讲的是指针中的两个特有名词:“悬空指针”和“野指针”。悬空指针C语言中的指针可以指向一块内存,如果这块内存稍后被操作系统回收(被释放),但是指针仍然指向这块内存,那么,此时该指针就是“悬空指针”。下面这段C语言代码是一个例子,请看:void *p = malloc(size);assert(p);free(p); // 现在 p 是“悬空指针”C...

  • 再次感慨,今年互联网环境确实是差。。。

    2024-07-16

    你好,我是飞宇。前段时间发了一篇文章聊到了今年互联网环境,文章内容引起很多人的共鸣了:今年环境是真的差,上周建立了一些社群,很快就满了,今年行情确实不好,大家还是多交流多沟通,群里有大牛也有小白,如果你有意可以一起进群交流。除此之外我也会在后文中分享一下自己开源的Linux C/C++学习仓库笔记,其中既有一些自己的学习笔记,也有一些自己分享的学习资源,希望能对大家有所帮助,有兴趣可以去看看!由于社群已经超过200人了,只能以邀请的形式进群,欢迎你添加我的微信,我拉你进群。除此之外我会经常在微信上分享一些计算机学习经验...

  • 盘点一下Linux/C/C++/嵌入式/硬件相关的公司

    2024-07-16

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。最近入坑电子信息工程专业的表弟问我毕业能去干什么?于是在这里盘点了一下Linux/C/C++/嵌入式/硬件相关的公司。在这里和大家分享一下1.芯片行业目前嵌入式薪资上涨的原因,我觉得很大一部分是芯片公司带起来的。特别是一些初创的GPU、AI、自动驾驶芯片公司,给得都比较高,当然老牌的一线大厂薪资也很可观。芯片行业是招嵌入式的大户,因为芯片从生产出来,需要写配套的固件、驱动等程序,这样才能形成软硬件生态,下游厂商才能够拿去就能够用或...

  • Linux | 详解线程池原理及C语言的实现

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。线程池是一种多线程处理形式,大多用于高并发服务器上,它能合理有效地利用高并发服务器上的线程资源。在Unix网络编程中,线程与进程用于处理各项分支子功能,我们通常的操作是:接收消息 ==> 消息分类 ==> 线程创建 ==> 传递消息到子线程 ==> 线程分离 ==> 在子线程中执行任务 ==> 任务结束退出。对大多数小型局域网的通信来说,上述方法足够满足需求;但当我们的通信范围扩大到广域网或大型局域网通信中时,我们将面临大量消息频繁请求服务器。...

  • 聊聊 35 岁危机,太真实了。。

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。来自:CSDN,作者:农民工老王链接:https://blog.csdn.net/monarch91/article/details/122709576我是一个非科班出身的程序员,大学本科时的专业和编程无关,毕业后做了几年事业单位后,才中途转行做了软件开发。我一入行就听说了35岁危机:程序员到了35岁后,如果没有进入管理层,大都会被公司辞退,再去找工作也异常困难。刚开始,我没有在意,毕竟35岁离我还有十来年。但时光飞逝,我今年也30岁了,感觉离这个35岁危机也不远了,就开始认真思...

  • 10亿设备和程序在用的Qt,2023年还值得学吗?

    2024-07-15

    你好,我是飞宇。运营这个公众号其实要花我每天一些精力,包括写文、编辑、推送、互动,或多或少都会花我一些精力,我的主业是做后端开发,我目前是在字节跳动某基架部门做后端研发,主要技术栈为C/C++、Golang。或许你听过一句话:“心脏与字节只能一个跳动”,所以日常主业就挺忙的,所以在运营这个公众号之余也会接一些推广广告来止止血,给自己一些继续走下去的动力,一定程度上可以继续分享技术保持这个公众号的日常更新。既然恰了烂钱也就拿出一部分给兄弟们搞点福利,所以以后可能每1-2周都会做一些赠书活动,我会定期挑选出一些不错的书籍包...

  • 文心一言 vs ChatGPT!相同 10 问,结果出乎意料

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。1、文学创作提问:龟兔赛跑的结局是什么?如果要续写这个故事,可以有哪些角度? 「文心一言」的回答:ChatGPT 的回答:整体而言,在这个问题中「文心一言」和 ChatGPT 不相上下,「文心一言」以更全面的回答略胜一筹。2、商业文案创作提问:帮我开发的智能扫地机器人起个名字,再写一篇600字左右的商业宣传文案,用于推广这款产品。「文心一言」的回答:ChatGPT 的回答:在这个问题中,相比 ChatGPT,「文心一言」的表现还需要再进步一些。3、...

  • 详解 Linux 处理高并发的利器 epoll

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在 Linux2.4 版本以前,那时的select 或者 poll 事件驱动方式是这样做的。...

  • 美国国家安全局:建议从 C/C++ 切换到内存安全语言

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。美国国家安全局(NSA)发布了一份指南,旨在帮助软件开发商和运营商预防和缓解软件内存安全问题。其鼓励组织将编程语言从 C 和 C++ 之类的语言转变为内存安全的替代语言 — 即 C#、Rust、Go、Java、Ruby 或 Swift,以保护代码免受远程代码执行或其他黑客攻击。“NSA 建议企业尽可能使用内存安全语言,并通过编译器选项、工具选项和操作系统配置等代码强化防御措施加强保护。”NSA 方面表示,内存安全问题在可利用的漏洞中占比很大。并引用了微软...

  • 用ChatGPT画了亿些小姐姐,被惊艳到了!!

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。之前刷小红书的时候,看到某账号是通过ChatGPT生成的小姐姐,粉丝高达1.5W,而且照片与真人相差无几,当时就被震惊了。于是自己也生成了一些好看的照片,体验了一下ChatGPT强大的功能,有几张确实惊艳到了我。请注意!下面的图片全都是ChatGPT生成的图片!!!前阵子ChatGPT一经问世,人工智能再次登顶热搜,不可否认的是它在很多领域确实给人提供了很多便捷之处。比如说,经常接触或使用第二语言的人做翻译的话,用ChatGPT确实好用很多。对于宅...

  • 大家看看,我要裁掉哪个组员呢?太难了

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。分享朋友投稿的一篇文章,我觉得对我很有启发。我所在的事业部一直处于亏损状态,我是知道的。同事之间一直也风言风语,说年底前会裁一波人。我一直安慰我的组员,说公司还是很稳的。结果前几天老板过来找我,说我们每个组都要按比例裁人,我们组四个组员要裁一个,有正常补偿。听到裁员的比例,我还是有点心凉。快年底了,大家都不太好找下家,而且年终奖也没了。互联网大厂就是这么不近人情,上个月还在团建的部门,马上就要选择淘汰的伙伴,感...

  • 24届互联网实习信息汇总

    2024-07-15

    ????一手互联网大厂校招信息汇总文档(内推、日程、薪资等)????点击下方回复”日程“可得 ????你好,我是专门给大家提供校招资讯的小程学姐~专注于校招实习N年~2023春招已经开始了,2024届想要实习的小伙伴抓紧时间准备起来吧!。秋招锦鲤小程学姐已经给大家准备好了最新的实习咨询,赶快行动起来吧~简历投起来~ 如果你不想错过各大厂的春招和实习信息,想要第一手的资讯,那就可以持续关注本公众号的动态信息以及下方的汇总信息(小程学姐每天更新哦~)再画个重点!2024届暑期&日常实习汇总(每日更新):https://flowus.cn/share/5f327c98-1e31-...

  • 互联网寒冬下的程序员

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。最近的大环境实在不怎么好,用当前很流行的一句话就是:今年是未来十年中最好的一年。打开脉脉,一股焦虑扑面而来,随便翻开一个帖子,要么裁员,要么降薪;同时之间的交流,也多了个话题,xxx家又裁员了,比例xxx。按照目前的经济形势,裁员仍会继续,即使没有亏损,对于那些老板们来说,没有赚钱就是亏损,趁着大家都在裁员,干脆来一个随波逐流,把之前想干而敢干的事都干了,反正也没人care。如此形势下,大家都不敢轻易跳槽,窝在现有岗位上...

  • C/C++语言代码优化的经验与方法

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。分享一篇上周看到的帮助我们从执行速度和内存使用等方面来优化C/C++语言代码的文章,文章很长,差不多有一万多字,可以收藏起来以后一定用的上!。简介在最近的一个项目中,我们需要开发一个运行在移动设备上但不保证图像高质量的轻量级JPEG库。期间,我总结了一些让程序运行更快的方法。在本篇文章中,我收集了一些经验和方法。应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码。尽管在C代码优化方面有很多的指南,...

  • 讲真的,今年这情况。。。。咱还是留个心眼吧

    2024-07-15

    点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”干货福利,第一时间送达!你好,我是飞宇。给大家分享一个我在知乎上看到的一个问题:一个答主分享了他自己的体验。这是一个从“裁员无赔偿”,到在争取后“拿到n+1”的故事,看的我酣畅淋漓。文章很长,可以收藏备用,但希望大家都永远用不到。作者:翠花banana原文:https://www.zhihu.com/question/27843346/answer/2690213218杭州,工龄11个月。想裁员不赔偿,我用十天的时间,拿到了到了n➕1!“我们公司没有赔偿这个文化。”“我们公司没有n➕1这个先例。”2022年8月16日,宣布完项...