• 工作学习中的一些小的收获&踩的坑(持续更新)


    1. 使用extern在动态库和主函数中共享变量,设置条件等,两种情况

      A. 动态库中定义,主函数文件中声明

      B. 与A相反,但是这个时候需要加上 -W1 --export-dynamic编译选项,否则会报链接错误

    =======================================================================

    2. 如果一个类型的定义被用typedef 隐藏起来了(一般是个结构体指针),两种情况

      A. 定义这个这个类型的.c文件能看到,这时候如果想用这个类型的成员变量,可以把声明定义部分挪到.h头文件中,并根据编译情况,调整相  应的依赖情况

      B. 如果c文件都被闭源了(只提供h和lib),只能通过头文件中查找看看是否有对应的接口来访问相应的变量了

    ========================================================================

    3. 记一个容易犯的bug

    在进行图像颜色空间转换时,常用到i,j 去逐个像素点的处理,如:

    i = y_index/width;

    j = y_index%width;

    uv_index = i / 2 * width + j - j%2;

    我当时在优化这段代码,发现 i /2 *width = = y_index/width /2 *width == y_index/2

    这就出错了,上述等式只是数学上的相等,实际上y_index/width 很有可能就已经是0了,所以由于计算机中的整数除法,和现实中的不太一致,遇到此类操作需要谨慎行事。

    ========================================================================

    4. 各种src, dst操作的位置

    工作中常遇到各种和src,dst有关的操作,但是它们的位置其实并没有所谓的标准可言,这里记录在此,以防后面再踩坑吧

    系统调用或标准库:

    read(fd, buf, len);

    write(fd, buf, len);

    memcpy(dst, src, len*sizeof(type));

    memmove(dst, src, len*sizeof(type));

    linux命令

    mv <src> <dst>

    cp <src> <dst>

    ========================================================================

    3.  json与xml文件对比

    json文件比较轻量,基本上这个算是最大的优势了吧,至少在嵌入式领域是这样

    最近正好打算重构一个gui的platform,打算把一些配置抽出去,放到json文件里让用户去配置

    到时再进一步比较这件事吧

    =========================================================================

    4. 进程间的local socket通信与dbus通信

    这个东西比较专,我打算放到linux专题中去记录

    5. 多个常用目录之间的来回快速切换

    使用pushd命令进行多个目录之间的快速切换

    比如根目录下有/A, /B, /C三个目录,我需要在这里面来回跳

    我可以pushd /A

    pushd /B

    pushd /C

    然后这三个目录全放到一个目录栈中去了

    我可以使用pushd  +N 或pushd -N的方式在这几个目录中快速切换

  • 相关阅读:
    java 原子性 可见性 有序性
    java中Array/List/Map/Object与Json互相转换详解(转载)
    观察者模式(转载)
    TCP协议
    “数字签名”与“数字证书”
    两道笔试题
    定时任务处理过程中的问题
    行数据库VS列数据库
    B树和B+树
    ThreadPoolTaskExecutor介绍
  • 原文地址:https://www.cnblogs.com/Arnold-Zhang/p/11421642.html
Copyright © 2020-2023  润新知