工作中 学习到的一些东西
努力追求work life balance!
正确的技术价值观:
不要陷入技术死角,不要陷入,不要陷入。多看书,看看人文历史,多看书,多出去看看。
常读程序源的价值观:https://cloud.tencent.com/developer/article/1045068
价值模型 = (技能收益 + 知识收益) × 提升空间 / 投入成本
工作活动
如何传递信息给团队伙伴?
传递给大家,问题是什么,解决方案是什么,多个解决方案 的利弊,供决策人来决策;相关人员沟通沟通下,具体邮件内容怎么呈现;
1.问题是什么?
2.方案是什么?
3.利弊的利弊?
4.提供决策
如何请教问题?
Hi,各位,OTA新的需求实现评审,上午已经线下review了,请各位抽空在线上在review一下相关代码,如有问题请指教,多谢!
请在主语前加,请***,麻烦等词语
编程方法:
过程式编程:这种编程方式是一种基于命令的编程方式,程序员通过编写一系列步骤来完成任务。
面向对象编程:这种编程方式是一种将数据和函数组合成对象的编程方式。程序员通过定义对象、方法和属性等来实现程序功能。
声明式编程:这种编程方式强调结果而不是过程,程序员只需描述要达到的目标,而不需要详细说明实现步骤。
并发式编程:这种编程方式是一种使用多个执行线程来同时执行任务的编程方式。
动态编程:这种编程方式是一种在程序运行时根据需要创建和修改程序代码的编程方式。
嵌入式编程:这种编程方式是一种在嵌入式设备上编写程序的编程方式。
软件设计思维
遵循"不接收不传递" 设计思维可以改善软件的可维护性、可扩展性和可读性,同时减少潜在的错误和异常情况的隐藏。这种设计原则有助于提高代码的质量,使团队更容易合作*。*
不接收不传递问题主要包括两个方面:
1.模块输入异常要兼容处理,不要依赖相关模块;
2.模块的输出异常要做兼容处理,确保输出都是设计考虑范围,不要让相关模块处理输出异常;
- 操作系统原理: 学习操作系统的基本组成部分,包括进程管理、内存管理、文件系统、设备驱动等。
- 内核编程: 深入理解内核模块的开发,学习如何编写和调试内核代码。X
- 驱动开发: 学习如何为不同的硬件设备编写驱动程序。X
如何学习:
- 学习经典书籍,如《深入理解计算机系统》、《操作系统概念》等。
- 参与开源操作系统项目,如Linux内核,了解其架构和代码实现。X
Wireshark过滤器设置
(1)协议过滤
比较简单,直接在抓包过滤框中直接输入协议名即可。
TCP,只显示TCP协议的数据包列表
HTTP,只查看HTTP协议的数据包列表
ICMP,只显示ICMP协议的数据包列表
(2)IP过滤
host 192.168.1.104
src host 192.168.1.104
dst host 192.168.1.104
(3)端口过滤
port 80
src port 80
dst port 80
(4)逻辑运算符&& 与、|| 或、!非
src host 192.168.1.104 && dst port 80 抓取主机地址为192.168.1.80、目的端口为80的数据包
host 192.168.1.104 || host 192.168.1.102 抓取主机为192.168.1.104或者192.168.1.102的数据包
coredump解析:
- 添加编译链中的gdb工具:./arm-none-linux-gnueabihf-gdb
- gdb运行coredump文件
- 指定coredump文件的symbols路径:file ./symbols/usr/local/bin/tvmain
- set sysroot ./symbols
- 打印:bt
文件系统:https://www.cnblogs.com/lyj1023/p/16178047.html
ext4,rootfs系统挂载
sudo mount –t loop optfs.ext4 ./mn-opt
当系统串口无法正常访问时,可以通过挂载文件系统 便于我们分析定位问题。
挂载分区
在云内挂在ota_patch_package.tar.gz中的分区。可以用来更新rootfs中的upgradeprogress而无需整编做差分包。
#mkdir rootfs_dir
#mount -o loop rootfs rootfs_dir
如果rootfs是squashfs, 则需要用unsquashfs 命令解开,然后再用mksquashfs命令做会squashfs
# sudo unsquashfs rootfs.squashfs
# sudo mksquashfs squashfs-root rootfs.squashfs -xattrs -comp lzo