基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺平台。 采用关系型数据库模型 需要建库、建表, 为提升写入和查询效率,要求一个数据采集点一张表 为实现多表聚合,引入超级表概念 子表通过超级表创建,带有标签,通过标签实现多表 高效聚合 高效写入 支持标准 SQL 写入,支持批量写入 支持 Schemaless 写入 支持从 Kafaka, MQTT, OPC, PI System 以及文0 码力 | 29 页 | 2.26 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vector,方便传参。但也带来了缺点,因为迭代器是一个对原容器 的弱引用,如果原容器解构或发生内存重分配,迭代器就会 失效。 vector 容器: insert 函数 • 我们知道 push_back 可以往尾部插入数据,那么如何往头 部插入数据呢?用 insert 函数,他的第一个参数是要插入 的位置(用迭代器表示),第二个参数则是要插入的值。 • 注意这个函数的复杂度是 O(n) , n 是从插入位置 push_front 函数替代。 • insert 在容量不足时,同样会造成重新分配以求扩容,会移 动其中所有元素,这时所有之前保存的迭代器都会失效。 vector 容器: insert 函数,插到指定的元素前方 • 如果要插入到一个特定位置,可以用迭代 器的加法来获取某一位置的迭代器。 • 例如 a.begin() + 3 就会指向第三个元素, 那么用这个作为 insert 的参数就会把 233 这个值插到第三个元素的位置之前。 • iterator insert(const_iterator pos, int const &val); • iterator insert(const_iterator pos, int &&val); // C++11 vector 容器: insert 函数,插入位置是倒数第 2 个 • a.begin() 可以插入到开头位置。 • a.begin()0 码力 | 90 页 | 4.93 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器(可读取), != , == , ++ (一次 性) istream_iterator input_iterator 输出迭代器 * (可写入), != , == , ++ (一次 性) back_insert_iterator output_iterator 前向迭代器 * , != , == , ++ forward_list forward_iterator 双向迭代器 * , != , == 顺便一提:小彭老师打印任意 STL 容器的黑科技 向 set 中插入元素 • 可以通过调用 insert 往 set 中添加一个元素。 • 用户无需关心插入的位置, 例如插入元素 3 时, set 会 自动插入到 2 和 4 之间, 从而使元素总是从小到大排 列。 • pairinsert(int val); 向 set 中插入元素 • 刚刚说过 set 具有自动去重 成插入。 • 例如往集合 {1,2,4} 中插入 4 则什么也不会发生,因为 4 已经在集合中了。 • pair insert(int val); insert 的第二个返回值:表示插入是否成功 • insert 函数的返回值是一个 pair 类型,也就是说他同时 返回了两个值。其中第二个 返回值是 bool 类型,指示 了插入是否成功。 • 若元素在 set 0 码力 | 83 页 | 10.23 MB | 1 年前3
应用 waPC (rust) 做软件测试工具unwrap(); reg.insert(“\/v2\/matches\/.*\/info_modify_req”.into(),echo_req_js on); reg.insert(“\/v2\/matches\/.*\/info_modify_res”.into(),echo_res_jso n); reg.insert(“\/v2\/matches\/.*\/info_fiddler_ab” String::from("data in echo")); } Ok(msg.to_vec()) } #[no_mangle] pub extern "C" fn _start() { 。。。 reg.insert(“\/v2\/matches\/.*\/info_fiddler_ab”.into(),fiddl er_ab); } AB testing 方案 #[allow(non_snake_case)] extern "C" fn _start() { let mut reg = REGISTRY.lock().unwrap(); reg.insert(“3335-:3334_modify_req”.into(),_req); reg.insert(“3335-:3334_modify_res”.into(),_res); } Example includes handshake, websocket0 码力 | 30 页 | 2.50 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串“ pful” 。而因为 “ pful” 比 “ lo” 宽了 2 格,所以为了预留出这 2 格额外的空间,就得 把后面的 “ world” 在内存中整体平移了 2 格(和 vector 的 insert 一 样)。这意味着 replace 最坏是 O(n) 复杂度的,然而如果原来的子字 符串和新的子字符串一样长度,例如 “ helloworld”.replace(4, 2, “pf”) 会 得到 可能你以为自己这一步是妙手,其实是擦粑粑的手。 • 不如和小彭老师来学习本手,夯实基础。 insert 插入一段字符串 • s.insert(pos, str) 会把子字符串 pos 插入到原字符串中第 pos 个字符和第 pos+1 个字符之 间。 • 函数原型: • string &insert(size_t pos, string const &str); // str 是 C++ 字符串类 string 的对象 • string &insert(size_t pos, const char *s); // s 是长度为 strlen(s) 的 0 结尾字符串 • string &insert(size_t pos, string const &str, size_t len); //0 码力 | 162 页 | 40.20 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器的元素,如果不存在,那就创建一个 “ key” 元素并初始化为 0 。等价于: • it = m.find(“key”); • if (it == m.end()) { • it = m.insert({“key”, 0}); • } • val = it->second; 读取 map 元素 • mapm; • val = m.at(“key”); • 的元素,如果不存在,那就创建一个 “ key” 元素并初始化为 0 。等价于: • it = m.find(“key”); • if (it == m.end()) { • it = m.insert({“key”, 0}); • } • it->second = val; 写入 map 元素 • map m; • m.at(“key”) = val; • 读取这个值 抛出 out_of_range 异常 val = m[key] 读取这个值 创建并零初始化(默认构造函数) 写入 m.insert({key, val}) 不会覆盖,默默放弃 创建并写入值 m[key] = val 覆盖旧值 创建并写入值 m.insert_or_assign(key, val) 覆盖旧值 创建并写入值(更高效, C++17 新 增) m.at(key) = val 0 码力 | 90 页 | 8.76 MB | 1 年前3
ClickHouse: настоящее и будущеесекунду • Можно использовать Kafka или RabbitMQ таблицы Асинхронные INSERT запросы 15 • Возможность делать много частых INSERT • Из множества параллельных соединений • Без Kafka и без Buffer таблиц CREATE TABLE games (data JSON) ENGINE = MergeTree; • You can insert arbitrary nested JSONs • Types are automatically inferred on INSERT and merge • Data is stored in columnar format: columns and subcolumns0 码力 | 32 页 | 2.62 MB | 1 年前3
谈谈MYSQL那点事1 LIMIT 1 尽可能的使用 尽可能的使用 NOT NULL NOT NULL 填充数据库 填充数据库 拆分大的 拆分大的 DELETE DELETE 或 或 INSERT INSERT 语句 语句 批量提交 批量提交 SQL SQL 语句 语句 MySQL MySQL 技巧分 技巧分 享 享 MySQL MySQL 技巧分享 技巧分享 常用技巧 常用技巧 FROM xxx FROM xxx 来查看表索引 来查看表索引 使用 使用 LOAD DATA LOAD DATA 导入数据比 导入数据比 INSERT INTO INSERT INTO 快多了 快多了 SELECT COUNT(*) FROM Tbl SELECT COUNT(*) FROM Tbl 在 在 InnoDB InnoDB0 码力 | 38 页 | 2.04 MB | 1 年前3
绕过conntrack,使用eBPF增强 IPVS优化K8s网络性能nf_conn New ip_vs_conn Bugs solved – 2/2 • DNS resolution delays for 5s Iptables SNAT Conntrack insert Udp for A Srcport=x Udp for AAAA srcport = x Udp for A Srcport=x Udp for AAAA Srcport=x Udp for A Srcport=x DROP • Solution • In eBPF code, add a loop to wrap port alloc and insert. • If insert fails, it will retry alloc.0 码力 | 24 页 | 1.90 MB | 1 年前3
sync clickhouse with mysql mongodbdata source to Clickhouse in minutes BONUS Time travel history state Create Update Update Delete insert_id id name flag update_time UUID0 2 Bob1 2 2019-10-01 00:00:00 UUID1 2 Bob1.5 2 2019-10-01 12:00:000 码力 | 38 页 | 2.25 MB | 1 年前3
共 10 条
- 1













