<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tomatop的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tomatop</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tomatop]]></copyright><item><title><![CDATA[Linux告警降噪策略实战指南]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237087</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237087</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:13:09 +0800</pubDate><description><![CDATA[Linux告警降噪策略实战指南的关键不是记住更多命令，而是把告警聚合、抑制规则和通知质量放进完整运行链路中理解。只要能围绕现象、证据、影响范围和恢复路径建立稳定思路，就能更可靠地完成落地实践，并把一次性经验沉淀为长期可维护的 Linux 运维能力。本文面向具备一定 Linux 基础的技术人员，围绕告警降噪策略展开，重点讨论告警聚合、抑制规则和通知质量。在中级运维和系统管理工作中，这类主题常常与配置变更、资源状态、权限边界、自动化任务和业务影响交织在一起，不能只靠单条命令做判断。一、为什么要关注这个主题。]]></description><category></category></item><item><title><![CDATA[linux常用命令——用户管理]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237083</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237083</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:11:24 +0800</pubDate><description><![CDATA[用户可修改所有用户密码（包括强制重置）。指定用户的登录 Shell（如 /bin/bash 可登录，/sbin/nologin 禁止登录）默认情况下，创建用户时会自动生成对应的用户组（与用户名同名）、家目录（创建系统用户（用于运行服务，UID 通常小于 1000，无家目录）与 -u/-g/-G 搭配，显示组名 / 用户名（而非 ID）远程终端）、登录 IP（远程登录时显示）等信息，无权限限制。强制创建用户的家目录（默认已开启，部分精简系统需显式指定）显示在线用户的基础信息（用户名、终端、登录时间、IP）]]></description><category></category></item><item><title><![CDATA[【Linux 网络】理解并应用应用层协议]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237081</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237081</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:09:52 +0800</pubDate><description><![CDATA[但如果有内容，在请求报头中就必须有 Content-Length属性的报头来标记正文长度。HTTP中的 Connection 字段是HTTP报头的⼀部分，它主要用于控制和管理客户端与服务器之间的连接状态。举个例子：一个店面由于装修等缘故临时搬到另一个地方，在店门口贴上公告“由于装修，本店暂时搬到xxxx”。服务器告诉你：“你本地存的那张图片没变，不用重新下载了，直接用吧”。最常见的，表示你的请求服务器收到了，也没出问题，东西给你拿回来了。比如你点“我的订单”，因为没登录，系统把你暂时跳到“登录页”。]]></description><category></category></item><item><title><![CDATA[【Linux系统】初见线程，概念与控制]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237079</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237079</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:08:14 +0800</pubDate><description><![CDATA[进程=分配系统资源的基本实体。线程=CUP调度的基本单位。在之前我们讲过，，如上图所示。而线程是什么呢？1.也采用来描述的2.对，本质是对。也就是说，3对进程，不需要我们人为的去“划分”！因为进程所要执行的代码，其本质都是由一个个组成的！这本就是天然的“划分”好了的状态，所以线程对函数“划分”即可（获得函数的入口地址即可）！4.，不存在说这个资源是线程a的谁都不可以访问！对代码的“划分”也不是真正的划分，。一个线程负责执行一部分代码，让进程的代码同时被多个线程推进！5.]]></description><category></category></item><item><title><![CDATA[Linux反向代理排错排查方法]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237077</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237077</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:06:43 +0800</pubDate><description><![CDATA[Linux反向代理排错排查方法的关键不是记住更多命令，而是把上游转发、状态码异常和超时配置放进完整运行链路中理解。只要能围绕现象、证据、影响范围和恢复路径建立稳定思路，就能更可靠地完成排查问题，并把一次性经验沉淀为长期可维护的 Linux 运维能力。在中级运维和系统管理工作中，这类主题常常与配置变更、资源状态、权限边界、自动化任务和业务影响交织在一起，不能只靠单条命令做判断。第一个风险是只看当前状态，不看历史趋势。处理反向代理排错时，建议先确认问题是否仍在发生，再确认影响范围是单机、单服务还是整个环境。]]></description><category></category></item><item><title><![CDATA[【Linux 实战】从0到1手搓日志系统]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237074</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237074</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:05:13 +0800</pubDate><description><![CDATA[IT行业这么火，涌入的人很多，俗话说林子大了啥鸟都有。大佬和菜鸡们两极分化的越来越严重。为了让菜鸡们不太拖大佬的后腿，于是大佬们针对一些经典的常见的场景，给定了一些对应的解决方案，这个就是设计模式。]]></description><category></category></item><item><title><![CDATA[【Linux网络】Socket编程实战，基于UDP协议的Echo Server]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237071</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237071</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:03:47 +0800</pubDate><description><![CDATA[参数，要看我们想要进行什么类型的通信来决定。sin_family的类型为 sa_family_t，其本质是短整型变量。其本质是一个in_addr的结构体对象。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。]]></description><category></category></item><item><title><![CDATA[【Linux网络】套接字Socket编程预备]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237069</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237069</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:02:21 +0800</pubDate><description><![CDATA[大端机意思是，其内部的数据是按照大端存储的，既高位数据放在低地址处，低位数据放在高地址处。小端机意思是，其内部的数据是按照小端存储的，既高位数据放在高地址处，低位数据放在低地址处。我们讲端口号port是标识计算机中唯一的进程，但是我们也知道PID也是标识计算机中唯一的进程。所以就并没有这么做。传输层是属于OS内核的，用户想要调用任何接口，使用任何功能都必须调用对应的系统调用。换句话说，进程就是人在计算机中的代表，只要把数据交给对应的进程，就相当于交给了人。这些广为使用的应用层协议，它们的端口号都是固定的！]]></description><category></category></item><item><title><![CDATA[深入探索Linux内存管理：初学者指南]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237065</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237065</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 04:00:43 +0800</pubDate><description><![CDATA[在top命令中，可以看到virt列和res列。VIRT用于虚拟内存。这是进程当前分配的千字节数。RES是Resident，这就是真正使用的内存。展开代码语言：Bash自动换行AI代码解释可以看到，Linux系统为进程分配了大量的内存，如果将所有这些VIRT内存相加，会发现远远超过该系统中可用的物理 RAM 的总和。这就是所说的内存过度分配。]]></description><category></category></item><item><title><![CDATA[如何在C语言环境中借助Linux库构建高效网络爬虫]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237061</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237061</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 03:59:03 +0800</pubDate><description><![CDATA[通过合理运用Linux系统的这些库函数，我成功构建了一个高效稳定的C语言爬虫程序。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。代码语言：javascript。- pthread库。]]></description><category></category></item><item><title><![CDATA[一劳永逸！Linux基础命令和工具详解，让你轻松应对各种任务！]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237058</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237058</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 03:57:32 +0800</pubDate><description><![CDATA[利用wc指令我们可以计算文件的Byte数、字数、或是列数，若不指定文件名称、或是所给予的文件名为"-"，则wc指令会从标准输入设备读取数据。（2）在多个文件搜索的时候，可以使用通配符。grep 命令用于在文件中执行关键词搜索，并显示匹配的效果。（2）按最新修改的时间排序，新修改的在前面显示，并显示子目录的文件信息。（6）找出文件中包含 login的行，打印出行号，并显示前后3行。（1）按最新修改的时间排序，新修改的在前面显示。代码语言：JavaScript。代码语言：JavaScript。]]></description><category></category></item><item><title><![CDATA[掌控进程：深入剖析 Linux 内核调度机制]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161237057</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161237057</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 03:55:57 +0800</pubDate><description><![CDATA[用不同的调度策略调度实时进程。普通进程支持两种调度策略：标准轮流分时（SCHED_NORMAL）：默认的调度策略，调度大多数非实时、通用目的的进程。用完全公平调度器（CFS），为所有进程提供公平的 CPU 时间分配，同时考虑进程的nice值。批处理调度（SCHED_BATCH ）：调度普通的非实时进程，针对 CPU 密集型、非交互式任务进行了优化。空闲（SCHED_IDLE）：最低优先级的调度策略。只有系统没有其他任何可运行的进程，SCHED_IDLE进程才会被调度运行。]]></description><category></category></item><item><title><![CDATA[C++ 继承详解及实例代码]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161236832</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161236832</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 02:21:38 +0800</pubDate><description><![CDATA[如果这样写，编译器会理解成类型为derived的对象同时也是类型为base的对象，但类型为base的对象不是类型为derived的对象。本文仅仅作出一些关键点的验证。这里解释一下，这里仅仅表达基类的成员，被public,protected,private三种方式继承后，在原基类为public,protectedc,private的成员在继承类里类型为表格里内容。这样就验证了一个是public，一个是protected，protected是不能直接调用的，但是被继承后是可以被public成员调用的。]]></description><category></category></item><item><title><![CDATA[剖析C++的面向对象编程思想]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161236590</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161236590</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 01:32:10 +0800</pubDate><description><![CDATA[面向对象编程(Object Oriented Programming，OOP，面向对象程序设计) 的主要思想是把构成问题的各个事务分解成各个对象，建立对象的目的不是为了完成一个步骤，而是为了描叙一个事物在整个解决问题的步骤中的行为。因为类是一种抽象的数据类型，并不是一个实体，也不占存储空间，而对象是实际存在的实体，是占存储空间的，其数据成员是有值的，可以被引用的。注意，不要“死磕”概念上的理解，很多有经验的程序员甚至都不能完全解释清楚面向对象和面向过程的区别，要重在实践，不断揣摩编程语言的思想。]]></description><category></category></item><item><title><![CDATA[strcat 函数的使用指南]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161236471</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161236471</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 01:28:13 +0800</pubDate><description><![CDATA[功能       　把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。说明         src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。原型       　extern char *strcat(char *dest,char *src);以上程序将string2字符串的拷贝到string1的结尾。注意: 在strcat()函数调用string1之前，string1必须初始化。下面是我自己的一个实现，不足之处，还望指正！]]></description><category></category></item><item><title><![CDATA[彻底掌握C语言strcat函数的用法]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161236331</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161236331</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 01:21:21 +0800</pubDate><description><![CDATA[这里是库函数里面的函数定义接口。这个函数是将字符串src连接到dst中去，就是连接字符串函数。1、这是模拟实现strcat函数，里面相关的细节和源代码中的相同。2、链式访问：就是把一个函数的返回值当作另一个函数的参数来使用，就是链式访问。]]></description><category></category></item><item><title><![CDATA[C++图文并茂分析讲解内存管理]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161236327</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161236327</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 01:20:27 +0800</pubDate><description><![CDATA[/构造函数intval = 0):_val(val)<< endl;intmain()//申请一个结点的空间new//不用去用sizeof去计算空间大小，很方便(pa);deletepb;]]></description><category></category></item><item><title><![CDATA[Python计算代码运行时间的四种方法]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161236310</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161236310</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 01:19:38 +0800</pubDate><description><![CDATA[对于以下自定义类型：123456789101112131415classTest//构造函数:_a(0)"构造函数"<< endl;//析构函数"析构函数"<< endl;int_a;一、动态申请单个类的空间用new和delete操作符：123new//申请delete//销毁用malloc和free函数：123//申请free(p2);//销毁二、动态申请多个类的空间用new和delete操作符：123new//申请//销毁。]]></description><category></category></item><item><title><![CDATA[详解C++作用域与生命周期]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161236076</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161236076</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 01:03:51 +0800</pubDate><description><![CDATA[由于函数和数据类型是静态的概念，它们没有生命周期的说法，它们从编译、程序的运行到结束整个过程是一直存在的。程序的运行过程可以理解为算法对数据的加工过程，程序的运行的结果，就是算法加工数据产生的结果数据。（5）函数中必须要使用static变量情况：比如当某函数的返回值为指针类型时，则必须是static的局部变量的地址作为返回值，若为auto类型，则返回为野指针。C++中作用域的级别由高到低，主要有文件域（全局作用域）、名字空间域、类域、函数作用域和代码块作用域，其中函数作用域和代码块作用域又统称为局部域。]]></description><category></category></item><item><title><![CDATA[C++编程中的数据类型和常量学习教程]]></title><link>https://blog.youkuaiyun.com/tomatop/article/details/161235341</link><guid>https://blog.youkuaiyun.com/tomatop/article/details/161235341</guid><author>tomatop</author><pubDate>Wed, 20 May 2026 00:03:35 +0800</pubDate><description><![CDATA[将65和66存放在c1，c2中，由于c1，c2是字符变量，因此用cout输出c1，c2时，得到字符A和B（A的ASCII码为65，B的ASCII码为66）。如果字符变量c1的值为'a'，c2的值为'b'，则在变量中存放的是'a'的ASCII码97，'b' 的ASCII码98，如图2.4(a)所示，实际上在内存中是以二进制形式存放的，常量的值是不能改变的，一般从其字面形式即可判别是否为常量。如果希望将"\"字符也作为字符串中的一个字符，则应写为"abc\\n"，此时字符包括5个字符，即a，b，c，\，n。]]></description><category></category></item></channel></rss>