2022-03-02
There is no excerpt because this is a protected post.
手握灵珠常奋笔, 心开天籁不吹箫
There is no excerpt because this is a protected post.
模式和框架应该简单,一旦有复杂化的迹象就需要做抽象和分解,核心要点限制在 3 点, 核心步骤限制在 6 步, 核心方法限制在 9 个. →Read more
Every asynchronous agent has an associated executor. An agent’s executor determines how the agent’s completion handlers are queued and ultimately run. 每个异步代理都有一个关联的执行器。 代理的执行者确定代理的完成处理程序如何排队并最终运行 Example uses of executors include: Coordinating a group of asynchronous agents that operate on shared data structures, ensuring that the agents’ completion handlers never run concurrently[5]. Ensuring that agents are run on […] →Read more
An asynchronous operation is the basic unit of composition in the Boost.Asio asynchronous model. Asynchronous operations represent work that is launched and performed in the background, while the user’s code that initiated the work can continue with other things. Conceptually, the lifecycle of an asynchronous operation can be described in terms of the following events […] →Read more
An asynchronous agent is a sequential composition of asynchronous operations. Every asynchronous operation is considered to run as a part of an asynchronous agent, even if that agent contains only that single operation. An asynchronous agent is an entity that may perform work concurrently with other agents. Asynchronous agents are to asynchronous operations as threads […] →Read more
@startuml struct AlrDetectorConfig { double bandwidth_usage_ratio = 0.65; double start_budget_level_ratio = 0.80; double stop_budget_level_ratio = 0.50; std::unique_ptr<StructParametersParser> Parser(); } class AlrDetector { void OnBytesSent(size_t bytes_sent, int64_t send_time_ms); void SetEstimatedBitrate(int bitrate_bps); absl::optional<int64_t> GetApplicationLimitedRegionStartTime() const; const AlrDetectorConfig conf_; absl::optional<int64_t> last_send_time_ms_; IntervalBudget alr_budget_; absl::optional<int64_t> alr_started_time_ms_; RtcEventLog* event_log_; } AlrDetectorConfig –o AlrDetector @enduml →Read more
Overview 每个流都有一个配置 struct StreamConfig { StreamConfig(); StreamConfig(const StreamConfig& other); ~StreamConfig(); bool operator==(const StreamConfig& other) const; bool operator!=(const StreamConfig& other) const; uint32_t local_ssrc = 0; uint32_t remote_ssrc = 0; uint32_t rtx_ssrc = 0; std::string rsid; bool remb = false; std::vector<RtpExtension> rtp_extensions; RtcpMode rtcp_mode = RtcpMode::kReducedSize; struct Codec { Codec(absl::string_view payload_name, int payload_type, int rtx_payload_type); bool operator==(const […] →Read more
USE Utilization 利用率 Saturation 饱和度 Error 错误率 RED Rate 每秒接收的请求数 Error 每秒失败的请求数 Duration 每个请求的耗时 Gold metrics Latency 处理请求所需的时间 Traffic 处理请求所需的流量 Error 请求的错误率 Saturation 服务的资源使用情况 →Read more
订阅一份报纸,到时候就会投递给你。 订阅一个新闻频道,一有新闻就会推送给你。 本质上,它是一种异步通信的架构模式 与之对应的代码模式就是观察者模式,其注册 register 对应于 subscribe, notify 对应于 publishe subscribe subscriber -> router: subscribe router–>subscriber: ack publisher publisher -> router: event router–>publisher: ack router –> subscriber: event subscviber–>router: ack 典型用例有 Ingestion user interaction and server events. To use user interaction events from end-user apps or server events from your system, you might forward them […] →Read more
这个世界再烂,也拒绝摆烂,写书,写代码,写评论,我写故我在。 与朋友去交流,跑步,打球,让自己流汗,不让自己流泪。 →Read more