docker 容器内的 init 进程以及 SIGNAL_UNKILLABLE
有点杂,记录一下glog在容器环境下fatal log导致hang死的情况 容器内的PID 1 首先知道的是,pid = 1的进程,在linux里是很特殊的,Linux Kernel会忽略掉通过kill()/tgkill()系统调用发送给PID为1的进程的异常信号(SIGSEGV, SIGABRT, SIGBUS等) 而glog里的,初始化会为fatal signal注册一个handl...
有点杂,记录一下glog在容器环境下fatal log导致hang死的情况 容器内的PID 1 首先知道的是,pid = 1的进程,在linux里是很特殊的,Linux Kernel会忽略掉通过kill()/tgkill()系统调用发送给PID为1的进程的异常信号(SIGSEGV, SIGABRT, SIGBUS等) 而glog里的,初始化会为fatal signal注册一个handl...
Linux 内核揭秘 Linux 内核揭秘 如果你是一个C++面试官,你会问哪些问题? 如果你是一个C++面试官,你会问哪些问题? Linux内核的零拷贝实现:数据传输的完美艺术 Linux内核的零拷贝实现:数据传输的完美艺术 Linux Performance Analysis in 60,000 Milliseconds Linux Perfo...
整体的流程差不多分为以下几个步骤: 决定训练量 ↓ 确定训练频率 ↓ 按周期选择练习内容 ↓ 按身体能力选择练习内容 ↓ 将训练量分布到小周期中 ↓ 决定大周期长度 ↓ 选择简易周期模型 ↓ 整合周期训练计划 🏋️♂️ 1 决定训练量 没有一个具体的公式去决定训练量,但是考察指标基本上是: 身体状况(性别,年龄,身高,体重,体脂率等...
🏋️♂️ 1 渐进超负荷 渐进超负荷是力量训练中最重要的原则之一,它指的是: 👉 为了让肌肉增长或力量提高,你必须逐渐增加施加在肌肉上的压力(负荷)。 人体具有适应性,如果你一直做相同的训练、重复相同的动作、相同的重量和组数,你的身体会逐渐适应这个强度,进步就会停滞。 要突破平台期,持续进步,就必须通过渐进增加难度,继续“逼迫”身体做出更多反应。 同时,你应该注意训练间隔,避免过...
大多数结构都要求地址按照align对齐,这个align值一般是4或者8。c++中的一些在align场景下常用的关键字 1 alignment 常规意义下,对齐意味着当前变量的起始地址是针对align做mod的结果是0的,具体的看代码 #include <iostream> #include <cstdint> using namespace std; #de...
leveldb里的组件,负责内存分配的,写的比较简陋 接口就两个,一个分配普通内存,一个分配对齐内存的 class Arena { public: // Return a pointer to a newly allocated memory block of "bytes" bytes. char* Allocate(size_t bytes); // Allocate...
重新理解ring buffer这种牛逼的结构,太牛逼了 chromium里单线程的版本,抄一下代码 // Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #...
about mem memory-barrier part-2-memory-model 再谈C++原子操作与内存屏障 其实还是perfbook里那些 c++ memory manage Thanks for the memory (allocator) 之前一直以为allocator里想侯捷写的,跟malloc一样分bin,结果发现那是sgi的实现… O...
end()能++吗 The behavior is undefined if the specified sequence of increments or decrements would require that a non-incrementable iterator (such as the past-the-end iterator) is incremented, or tha...
主要鉴赏一些move写出来的bug for里使用move 在for里使用move需要考虑细致一点,鉴定一个场景 std::unique_ptr<Task> task(...) for (0..theadpool.size()) { threadpool[i].run(std::move(task)); } ThreadPool::run(UniqueTask ta...