20220610学习工作遇到的问题

Jun 10, 2022

Learn

写sqlite遇到的问题

小心指针写错

有方法: (void*)(*leaf_node_value)(void* node, uint32_t cell_num)

void(*serialize_row)(void* target, Row* source)

调用时居然没有报类型错误: serialize_row(*leaf_node_value(destination_node, index), value), 此处传入的target是对象类型,居然没有报错。正确的是: serialize_row(leaf_node_value(destination_node, index), value)

传入Row* 但是入参是uint32_t 则会被转为数字

入参会直接拷贝: void(*leaf_node_split_and_insert)(Cursor* cursor, uint32_t key, uint32_t value) 如果传入leaf_node_split_and_insert(cursor, key, value); 这个value是Row*对象,则会直接拷贝地址转为uint32_t值。

docker宿主机模式

遇到个问题: 服务要使用ssh连接本机,但是使用全局ip,会走网关,网关管理方(其他公司)似乎将速度降的很慢,于是就想着使用127.0.0.1。

docker有个属性: network_mode: host,这将直接把适配了环境的服务,单独将网络服务拉到和宿主机一致。

既然和宿主机网络一致了,那就不能使用虚拟网卡: networks, 并且相同的docker-compose.yml 文件中的服务,要是有数据库之类的,就无法使用同一个网络服务,于是使用127.0.0.1:${db_port}:${db_port},都不走外网端口。

当前处理方案示例:

1
2
3
4
5
6
7
8
9
services:
mongo:
ports:
- 127.0.0.1:27017:27017
web:
environment:
- DB_HOST=127.0.0.1
- DB_PORT=27017
network_mode: host