CleanCode读书笔记 最小惊异原则 1.从一而终,便于修改 2.遵守大家的约定 有意义的命名 1.名副其实 1.命名需要注释来补充,那就不算名副其实 2.在命名时尽量采用有意义的名称,代码的简洁不会改变(运算符和常量的数量,嵌套数量) 2.避免误导 1.避免使用与本意相驳的词 2.提防使用不同之处较小的词 3.不要使用小写l和大写O作为变量名 4.命名有区分,应当有明显的区分,应使读者可以鉴别 3.使用读得出来的名称 4.使用可搜索的名称 1.长名称胜于短名称,搜得到的名称胜于自造的名称 2.单字母仅用于短方法中的本地变量 3.名称长短应与其作用域大小相对应 4.若变量或常量可能在代码中多次使用,则应赋予其便于搜索的名称 5. …
关于切片和slice的内存共享 package main import ( "bufio" "bytes" "errors" "fmt" _errors "github.com/pkg/errors" "os" "reflect" "regexp" "strconv" "strings" "sync" "sync/atomic" "time" ) func main() { /** * @Description: foo boo …
https://euraxluo.github.io/images/picgo/image.LN3YG1.png
Apollo无人车架构 以HD-map为核心
线控车辆,计算机和传感器通过CAN卡进行通信 ROTS(Ubuntu+apollo kernel) 保证实时性
Feameworf(ROS+) 共享内存 减少传输中的数据拷贝,提高传输效率,减少传输延迟
有效解决一对多传输
共享内存减少CPU资源占用,提高机器计算能力
数据兼容 引入了protopuf文件格式
可以向后兼容
ROS深度兼容protopuf格式
去中心化,减小单点故障的影响 使用RTPS服务发现协议
以域作为划分,通过rtps相互广播,实现完全P2P
sub节点启动,组播registerNode->节点发现及建立unicast->向新加节点发送历史消息-> …