Linux字符设备驱动与杂项设备驱动
字符设备驱动 graph LR A[字符设备驱动框架]-->B1[驱动初始化] B1[驱动初始化]-->C1[分配设备号] C1[分配设备号]-->D1[静态分配设备号] D1[静态分配设备号]-->E(register_chrdev_region) C1[分配设备号]-->D2[动态分配设备号] D2[动态分配设备号]-->F(alloc_chrdev_region) C1[分配设备号]-->D3[操作设备号dev_t] D3[操作设备号dev_t]-->Z1(MAJOR提取主设备号) D3[操作设备号dev_t]-->Z2(MINOR提取主设备号) D3[操作设备号dev_t]-->Z3(MKDRV将..
更多人机对弈
背景 小时候在FC上玩过象棋游戏,印象最深的就是那个老头,每次走棋贼慢同时棋力也特高。一直想了解下人机对弈的算法,看了几篇文章后,发现基本的套路都是一样的,自己写了一个小时候玩的两口吃一口的小游戏。 棋类AI基本步骤(以下都是基于两口吃一口这个小游戏) 局面生成:棋子种类、开局位置 // 5x5 棋盘,黑方和白方初始时都有5颗棋子 /* 0 1 2 3 4 ┌─────────┐ 0│○─○─○─○─○│ 1│├─┼─┼─┼─┤│ 2│├─┼─┼─┼─┤│ 3│├─┼─┼─┼─┤│ 4│●─●─●─●─●│ └─────────┘ */ std::string GenBoard(int row, int col, int colNum, int rowNum, std::map<..
更多踩内存
对于C/C++程序员来说,踩内存问题是最难分析定位的,往往问题的源头都比较隐蔽,让人很难排查出问题的根源所在。
更多反向代理和正向代理
代理 代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。刚开始的时候,代理多数是帮助内网client访问外网server用的后来出现了反向代理,"反向"这个词在这儿的意思其实是指方向相反,即代理将来自外网客户端的请求转发到内网服务器,从外到内。 正向代理 正向代理类似一个跳板机,代理访问外部资源比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了。 正向代理的用途: 访问原来无法访问的资源,如google 可以做缓存,加速访问资源 对客户端访问授权,上网进行认证 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息 反向代理..
更多