美文网首页
待优化集合

待优化集合

作者: imMazda | 来源:发表于2022-06-09 15:14 被阅读0次
  1. 关于任务调度获取锁,而不释放锁


    0f06818fdfd9312863df35ac53b4c20.png
67e6d85c6ddc39f9ce48ed247ed4377.png

影响:


f625884b1a1e9b3e5b9e31457a5abbe.png

注意:
同步机制仅仅就保护临界区 不要扩大作用范围

  1. 关于预防向一块内存区域拷贝数据发生缓冲溢出


    1c3034910c445c8a75a6c2b523d8e49.png

影响:
拷贝前没对文件长度和buf长度进行比较判断... 万一文件长度超过buf长度

注意:
增加判断: sizeof(buf)/sizeof(buf[0]) > file_size ;

备注:
数据究竟是怎样的一种结构 也就是如何格式化数据 是由数据的使用者解释;

以字符串这种格式处理数据的时候 就要用字符串的操作函数;

禁止一方面把数据作为字符串使用,一方面又使用内存操作函数,因为内存操作函数是没有对数据做格式化解释;

  1. malloc之后对返回指针不做是否成功判断


    5737be48d916fa5279d3608cc3dc851.png

影响:
有可能申请堆空间失败,有可能申请堆空间成功;如果申请失败的情况下,恰好指针又是处于一种失管状态(ptr != null),可能修改任何一处内存地址;

注意:
每次malloc之后对返回指针进行是否申请成功判断;另外,对使用完之后的指针进行指向NULL操作;

  1. if嵌套最好不超过3层


    ed543ca4a24e66c77546cd4827628de.png

影响:
代码可读性太差

注意:
建议作空值判断修改
if (ptr == NULL)
{
goto ....;
}

  1. 可用表达失完成的处理 却使用函数


    a69023516a5084339166b0aa883e96c.png

影响:
增加系统开销,对于当下的处理频率来说不算问题,但这是个不好的行为

注意:
if (a == b == c)

  1. 向数组中拷贝满数组大小的数据时 禁止使用常量进行指定数组大小
    int buf[50];

    memcpy( buf,  src, 50 ); 
    

修改为:
memcpy( buf, src, sizeof(buf)/sizeof(buf[0]) );

影响:
避免数组大小经修改后,对应的数组操作处忘记做修改,导致缓冲溢出后果;

备注:
此项目代理中有一处错误如下:


image.png
image.png
  1. 关于优化性能 防止cpu空耗时间


    image.png

影响:
此项目中应用RTX,划分时间片大小为5ms , 上图当进入延时等待过程没有让出cpu,而是选择空耗时间片。且这种空耗时间片的等待消息到达的模式大量应用在 mcu 与 4G模组 基于 uart 的通信模式中;

注意:
可以采用异步消息通知机制,当线程需要延时等待时主动挂起;保证其他线程可以更好的利用cpu

  1. 关于EEPROM保存数据可靠性与代码框架清晰的思考


    image.png

我的设想主要是用一个线程管理eeprom的写入。当系统启动时,从eeprom中读出数据后,在内存中维护一份映射(其实就是静态栈空间的一份数据结构)。当其他线程需要获取数据时,直接从内存中获取; 当其他线程需要更新数据时,直接更新内存中的数据结构,同时向eeprom_manage_threads发送一个消息,接下来当前线程继续处理业务逻辑。 当eeprom_manmage_threads占有cpu时,写入待更新数据。

相关文章

  • 爬虫入门学习手记

    一、简单爬虫架构 URL管理器:管理待抓取URL集合和已抓取URL集合 添加新URL到待爬取集合中 判断待添加UR...

  • 排序算法(二):选择排序

    选择排序算法维护一个待排序集合和一个已排序集合,每轮迭代,从待排序集合中选择一个最小(最大)元素,添加到已排序集合...

  • map集合优化

    通过map集合减少查询数据库次数 说明:将数据优先提取,减少访问数据库次数示例: 反例: 将嵌套for循环简化成单...

  • 待优化集合

    关于任务调度获取锁,而不释放锁0f06818fdfd9312863df35ac53b4c20.png 影响: 注意...

  • 排序算法(三):插入排序

    插入排序算法维护一个已排序集合和一个待排序集合,每轮迭代,从待排序集合中选择一个元素,插入到已排序集合中的适当位置...

  • Java中Map集合、模拟斗地主洗牌发牌、JDK9对集合添加的优

    (十五)Java中Map集合、模拟斗地主洗牌发牌、JDK9对集合添加的优化 - CSDN博客

  • MyLayout框架使用

    MyLinearLayout 布局 待认证 待认证2 LLTest2ViewController 待优化 LLT...

  • 集合覆盖问题(Set Cover Problem)和点覆盖问题及

    集合覆盖问题 集合覆盖问题(Set Covering Problem,简称SCP)是运筹学研究中典型的组合优化问题...

  • 凸优化&非凸优化

    凸优化指的是,如果得到了局部最优,那么这个局部最优就是全局最优。 讲凸优化就涉及到凸函数和凸集合集合C内任意两点间...

  • 第三天(03.21)

    完善android禁止消息通知,吐司无效 App启动优化 Splash页面优化 apk瘦身 待解决

网友评论

      本文标题:待优化集合

      本文链接:https://www.haomeiwen.com/subject/rayoprtx.html