欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

月半弯刊第1期 | 有深度的bug,有趣的问题

程序员文章站 2022-04-16 16:24:21
关注、星标公众号,直达精彩内容ID:技术让梦想更伟大作者:李肖遥月半弯刊月半弯刊是公众号半个月推文汇总的一种形式,主要分享以下几点为阶段性总结文章的错误以及读者的建议,让一些错过推文的朋......

关注、星标公众号,直达精彩内容

月半弯刊第1期 | 有深度的bug,有趣的问题

ID:技术让梦想更伟大

作者:李肖遥

月半弯刊

月半弯刊是公众号半个月推文汇总的一种形式,主要分享以下几点

  1. 为阶段性总结文章的错误以及读者的建议,让一些错过推文的朋友可以根据自己的兴趣选择性的去读一些文章。

  2. 分享半月期间工作中遇到的难点,以及网友提出的疑问和网上一些有趣的问题,可以帮助我们一起学习进步。

  3. 职场中的一些杂谈,比如面试,现场调试,团建等等,小小分享,不为吐槽就是给大家图个乐。

本刊原创汇总,肝了6篇

  1. 冷知识:达夫设备(Duff's Device)效率真的很高吗?

回顾: 这篇文章花了两天才写好,之前写过一篇关于编译效率的,有读者留言说达夫设备,我最近好好学习了下,也参考了网上的文章,但是大都讲的有点断片,故自己根据理解重新整理了一下,算是逻辑很好的。

  1. 有没有想过:malloc分配的内存空间地址连续吗

回顾: 这仅仅是开场白,但是后面要讲到内存管理,字节对齐的一块,而这个我就单独水了一篇,实际上也可以开发我们的思维,代码直接复制去编译吧,有答案。

  1. 你见过“最美”的C语言代码是什么?

回顾: 这是一篇水文,纯属娱乐,没想到看得人还不少

  1. 真的可以,用C语言实现面向对象编程OOP

回顾: 我相信嵌入式开发中,越是大型项目,越会用到面对对象编程,同样的C开发为主的嵌入式编程中,也要有这种思想。当然文章最后参考了OOPC那本书,没办法,我也找不到或者不想找到更好的例子。

  1. 电子设计竞赛 | 拿过校内“一等奖”的作品

回顾: 如果是大学生可以看看,当年我参加的电赛,校内唯二的一等奖

  1. 灵魂拷问:嵌入式行业真的没前途吗?

回顾: 这篇对我来说估计是一篇爆文了,平时阅读在1500以内的,这篇有双倍的阅读量,很多大佬在留言区百字评论,发表观点,分享经验。但是最终我还是觉得自己的看法很肤浅,只想告诫大家:相信自己的路。

选了本刊中一些读者提问的问题

私信我的朋友有时候会很多,我没有一一回复,请见谅。

在我的知识星球里,我也会认真回答问题并做好记录,如果您有兴趣,相信你可以找得到。

下面我截图了一些聊天记录开头处,主要是想把大家疑惑的问题汇总一下,帮助我们提高技术,当然大部分问我的问题,我其实都不会。

关于printf与多线程的故事

月半弯刊第1期 | 有深度的bug,有趣的问题

提问者纠结于现场环境与实验室测试环境不一样,实验室测试没问题,现场就不行?

这个很正常,在后面的交流当中,也是确定了问题所在,关于printf与多线程,这与printf设计时的不可重入性有关。

所以当我们在进行多线程编程的时候要注意这一点,另外实验室条件与实际环境肯定是有差别的,保持好心态,总会解决。

FreeRTOS+Lwip运行几分钟之后挂掉

月半弯刊第1期 | 有深度的bug,有趣的问题

这个问题比较复杂,总的来说,可能与内存泄漏有关系,关于内存泄漏,是我们编程中的难点。

另外malloc不仅会要用,而且还要知根知底,动态申请的内存是在哪里?连续吗?等等问题

关于宏定义的一些问题

月半弯刊第1期 | 有深度的bug,有趣的问题

静态变量,局部变量等需要了解,自行查询;宏定义的问题在我们写代码中用多个很多,用的好的话,整个代码也很整洁。

嵌入式架构的问题

月半弯刊第1期 | 有深度的bug,有趣的问题

在我们嵌入式编程中,有些项目是有很多模块的,那么怎么写一个好的架构呢?这点很重要。

一旦又有新的升级或者移植,当结构搭建的好的话,是很方便移植的,也会节约项目开发时间。

总体来说,要有架构的概念,才能体现出编程之美!

算法的问题

月半弯刊第1期 | 有深度的bug,有趣的问题

一个哥们写了关于排序算法的文档,打算做视频。

我说下排序算法,在数据结构中,我们常常用到,面试的时候面试官经常会问:你给我写个冒泡排序瞅瞅?

我曾经就没写出来,错失了一个年薪百万机会,不说了,要去补习数据结构了!

你迷茫了吗

月半弯刊第1期 | 有深度的bug,有趣的问题

谁的青春不迷茫呢?进入职场的我也很迷茫,我没什么鸡汤!

如果你来自农村,家庭一般,或者你想出人头地,那么就努力吧!现在社会变化太快,我们阅历少很难抓住风口,唯一能做的就是把空闲时间拿来提高自己

字符串切割?

月半弯刊第1期 | 有深度的bug,有趣的问题

简单粗暴上代码吧

//来源:技术让梦想更伟大
//作者:李肖遥
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
//返回一个 char *arr[], size为返回数组的长度
char **cExplode(char sep, const char *str, int *size)
{
 int count = 0, i;
 for(i = 0; i < strlen(str); i++)
 {       
  if (str[i] == sep)
  {       
   count ++;
  }
 }

 char **ret = calloc(++count, sizeof(char *));

 int lastindex = -1;
 int j = 0;

 for(i = 0; i < strlen(str); i++)
 {       
  if (str[i] == sep)
  {       
   //分配子串长度+1的内存空间
   ret[j] = calloc(i - lastindex, sizeof(char));
   
   memcpy(ret[j], str + lastindex + 1, i - lastindex - 1);
   j++;
   lastindex = i;
  }
 }
 
 //处理最后一个子字符串
 if (lastindex <= strlen(str) - 1)
 {
  ret[j] = calloc(strlen(str) - lastindex, sizeof(char));
  memcpy(ret[j], str + lastindex + 1, strlen(str) - 1 - lastindex);
  j++;
 }

 *size = j;

 return ret;
}

int main()
{
 int size;

 char **ret = cExplode(',', "aaa,fgg,ggg", &size);


 int i;
 for(i = 0; i < size; i++)
 {
  printf("%s\n", ret[i]);
  free(ret[i]);
 }
 free(ret);
 return 0;
}

职场中的一些杂谈

看到这里可以投个票,希望能转发更多人来参与。


最后

因为此前一直在论坛、社区、博客中混迹江湖,没有好好总结,在做公众号大半年以来,也有自己的收获,坚持输出高质量的干货才是最重要的。

同时也希望大家能够提提建议,帮助下这个号能够发展更好,改版之后小号难存,如果对您有价值,可以星标公众号,在看转发也是对我的支持,感谢大家。

月半弯刊第1期 | 有深度的bug,有趣的问题推荐阅读:

嵌入式编程专辑Linux 内核专辑
Linux 驱动专辑C/C++编程专辑

关注微信公众号『技术让梦想更伟大』,后台回复“m”查看更多内容,回复“加群”加入技术交流群。
长按前往图中包含的公众号关注

本文地址:https://blog.csdn.net/u012846795/article/details/107421550