Linux学习-61-Linux系统服务管理

2023-05-16

14 Linux系统服务管理

  • 系统服务:服务是在后台运行的应用程序,并且可以提供一些本地系统或网络的功能。Linux 中常见的服务有那些,这些服务怎么分类,服务如何启动,服务如何自启动,服务如何查看?这都是我们需要知道的。 Linux 中服务的分类比较多,而且每种服务又有多种启动和自启动方法,所以容易混淆。同时,常见网络服务的端口号也是必须掌握的基础知识。

14.1 Linux系统服务及其分类

  • 系统服务是在后台运行的应用程序,并且可以提供一些本地系统或网络的功能。我们把这些应用程序称作服务,也就是 Service。不过,守护进程( Daemon)":为了实现服务、功能的进程。比如,我们的 apache 服务就是服务(Service),它是用来实现 Web 服务的。那么,启动 apache 服务的进程是哪个进程呢?就是 httpd 这个守护进程(Daemon)。也就是说,**守护进程就是服务在后台运行的真实进程。**可以把服务与守护进程等同起来。在 Linux 中就是通过启动 httpd 进程来启动 apache 服务的,可以把 httpd 进程当作 apache 服务的别名来理解。

  • 服务的分类:Linux 中的服务按照安装方法不同可以分为 RPM 包默认安装的服务和源码包安装的服务两大类。其中,RPM 包默认安装的服务又因为启动与自启动管理方法不同分为独立的服务和基于 xinetd 的服务。
    在这里插入图片描述

  • Linux 中常见的软件包有两种:一种是 RPM 包;另一种是源码包。那么,通过 RPM 包安装的系统服务就是 RPM 包默认安装的服务(因为 Linux 光盘中全是 RPM 包,Linux 系统也是通过 RPM 包安装的,所以我们把 RPM 包又叫作系统默认包),通过源码包安装的系统服务就是源码包安装的服务。源码包是开源的,自定义性强,通过编译安装更加适合系统,但是安装速度较慢,编译时容易报错。RPM 包是经过编译的软件包,安装更快速,不易报错,但不再是开源的。这些特点都是软件包本身的特点

  • RPM包和源码包安装到Linux 系统中时,两者安装位置不同,源码包安装到我们手工指定的位置当中,而 RPM 包安装到系统默认位置当中(可以通过"rpm -ql 包名"命令查询)。也就是说,RPM 包安装到系统默认位置,可以被服务管理命令识别;但是源码包安装到手工指定位置,当然就不能被服务管理命令识别了(可以手工修改为被服务管理命令识别)。所以,RPM 包默认安装的服务和源码包安装的服务的管理方法不同,我们把它们当成不同的服务分类。服务分类说明如下。RPM 包默认安装的服务。这些服务是通过 RPM 包安装的,可以被服务管理命令识别。

  • 这些服务又可以分为两种:

    • 独立的服务:就是独立启动的意思,这种服务可以自行启动,而不用依赖其他的管理服务。因为不依赖其他的管理服务,所以,当客户端请求访问时,独立的服务响应请求更快速。目前,Linux 中的大多数服务都是独立的服务,如 apache 服务、FTP 服务、Samba 服务等。
    • 基于 xinetd 的服务:这种服务就不能独立启动了,而要依靠管理服务来调用。这个负责管理的服务就是 xinetd 服务。xinetd 服务是系统的超级守护进程,其作用就是管理不能独立启动的服务。当有客户端请求时,先请求 xinetd 服务,由 xinetd 服务去唤醒相对应的服务。当客户端请求结束后,被唤醒的服务会关闭并释放资源。这样做的好处是只需要持续启动 xinetd 服务,而其他基于 xinetd 的服务只有在需要时才被启动,不会占用过多的服务器资源。但是这种服务由于在有客户端请求时才会被唤醒,所以响应时间相对较长。
  • 源码包安装的服务。这些服务是通过源码包安装的,所以安装位置都是手工指定的。由于不能被系统中的服务管理命令直接识别,所以这些服务的启动与自启动方法一般都是源码包设计好的。每个源码包的启动脚本都不一样,一般需要查看说明文档才能确定。

  • 查询已经安装的服务和区分服务:知道 Linux 服务的分类,那如何区分这些服务。首先要区分 RPM 包默认安装的服务和源码包安装的服务。源码包安装的服务是不能被服务管理命令直接找到的,而且一般会安装到 /usr/local/ 目录中。也就是说,在 /usr/local/ 目录中的服务都应该是通过源码包安装的服务。RPM 包默认安装的服务都会安装到系统默认位置,所以是可以被服务管理命令(如 service、chkconfig)识别的。其次,在 RPM 包默认安装的服务中怎么区分独立的服务和基于 xinetd 的服务?这就要依靠 chkconfig 命令了。chkconfig 是管理 RPM 包默认安装的服务的自启动的命令,这里仅利用这条命令的查看功能。使用这条命令还能看到 RPM 包默认安装的所有服务。命令格式如下:

[root@localhost ~]# chkconfig --list [服务名]
  • 选项:
    • –list:列出 RPM 包默认安装的所有服务的自启动状态;
[root@CncLucZK ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

bt             	0:off	1:off	2:on	3:on	4:on	5:on	6:off

  • 这条命令的第一列为服务的名称,后面的 0~6 代表在不同的运行级别中这个服务是否开启时自动启动。这些服务都是独立的服务,因为它们不需要依赖其他任何服务就可以在相应的运行级别启动或自启动。但是没有看到基于 xinetd 的服务,那是因为系统中默认没有安装 xinetd 这个超级守护进程,需要我们手工安装。安装命令如下:
[root@CncLucZK ~]# rpm -q xinetd
package xinetd is not installed
[root@CncLucZK ~]# yum -y install xinetd
...
Installed:
  xinetd-2:2.3.15-24.el8.x86_64                                         

Complete!
#xinetd超级守护进程

注意,在 Linux 中基于 xinetd 的服务越来越少,原先很多基于 xinetd 的服务在新版本的 Linux 中已经变成了独立的服务。安装完 xinetd 超级守护进程之后,我们再查看一下,命令如下:

[root@CncLucZK ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

bt             	0:off	1:off	2:on	3:on	4:on	5:on	6:off

xinetd based services:
	chargen-dgram: 	off
	chargen-stream:	off
	daytime-dgram: 	off
	daytime-stream:	off
	discard-dgram: 	off
	discard-stream:	off
	echo-dgram:    	off
	echo-stream:   	off
	tcpmux-server: 	off
	time-dgram:    	off
	time-stream:   	off
  • 在刚刚的独立的服务之下出现了一些基于 xinetd 的服务,这些服务没有自己的运行级别,因为它们不是独立的服务,到底在哪个运行级别可以自启动,则要看 xinetd 服务是在哪个运行级别自启动的。

14.2 linux端口及查询方法

  • 服务是给系统提供功能的,在系统中除了有系统服务,还有网络服务。而每个网络服务都有自己的端口,一般端口号都是固定的。IP 地址是计算机在互联网上的地址编号,每台联网的计算机都必须有自己的 IP 地址,而且必须是唯一的,这样才能正常通信。也就是说,在互联网上是通过 IP 地址来确定不同计算机的位置的。知道了一台服务器的 IP 地址,我们就可以找到这台服务器。但是这台服务器上有可能搭建了多个网络服务,比如 WWW 服务、FTP 服务、Mail 服务,那么我们到底需要服务器为我们提供哪个网络服务呢?这时就要靠端口(Port)来区分了,因为每个网络服务对应的端口都是固定的。WWW 服务对应的端口是 80,FTP 服务对应的端口是 20 和 21,Mail 服务对应的端口是 25 和 110。

  • 为了统一整个互联网的端口和网络服务的对应关系,以便让所有的主机都能使用相同的机制来请求或提供服务,同一个服务使用相同的端口,这就是协议。

  • 计算机中的协议主要分为两大类:

    • 面向连接的可靠的TCP协议(Transmission Control Protocol,传输控制协议);
    • 面向无连接的不可靠的UDP协议(User Datagram Protocol,用户数据报协议);
  • 这两种协议都支持 216,也就是 65535 个端口。这么多端口怎么记忆呢?系统给我们提供了服务与端口的对应文件 /etc/services。 查看—下:

[root@CncLucZK ~]# cat /etc/services 
....
ftp-data        20/tcp
ftp-data        20/udp
# 21 is registered to ftp, but also used by fsp
ftp             21/tcp
ftp             21/udp          fsp fspd
#       http://www.iana.org/assignments/port-numbers
http            80/tcp          www www-http    # WorldWideWeb HTTP
http            80/udp          www www-http    # HyperText Transfer Pro
# 24 - private mail system
smtp            25/tcp          mail
smtp            25/udp          mail
# unfortunately the poppassd (Eudora) uses a port which has already
# been assigned to a different service. We list the poppassd as an
#3com-tsmux     106/tcp         poppassd
#3com-tsmux     106/udp         poppassd
pop2            109/tcp         pop-2 postoffice        # POP version 2
pop2            109/udp         pop-2
pop3            110/tcp         pop-3           # POP version 3
pop3            110/udp         pop-3

...

网络服务的端口也能够修改,不过一旦修改了端口,那么客户机在访问服务器时很难知道服务器对应的端口是什么,也就不能正确地获取服务了。所以,除非在实验环境下,否则不要修改网络服务对应的端口。

  • 查询系统中已经启动的服务:每个网络服务对应的端口是固定的,可以通过查询服务器中开启的端口,来判断当前服务器开启了哪些服务,虽然判断服务器中开启的服务还有其他方法(如通过ps命令),但是通过端口的方法查看最为准确。命令格式如下:
[root@localhost ~]# netstat 选项
  • 选项:
    • -a:列出系统中所有网络连接,包括已经连接的网络服务、监听的网络服务和 Socket 套接字;
    • -t:列出 TCP 数据;
    • -u:列出 UDF 数据;
    • -l:列出正在监听的网络服务(不包含已经连接的网络服务);
    • -n:用端口号来显示而不用服务名;
    • -p:列出该服务的进程 ID (PID);
[root@CncLucZK ~]# netstat -tulnp
#列出系统中所有已经启动的服务(已经监听的端口),但不包含已经连接的网络服务
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1337/sshd           
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      920/python3         
tcp6       0      0 :::33060                :::*                    LISTEN      1364/mysqld         
tcp6       0      0 :::3306                 :::*                    LISTEN      1364/mysqld         
tcp6       0      0 :::80                   :::*                    LISTEN      1314292/httpd       
udp        0      0 172.17.0.3:68           0.0.0.0:*                           1174/NetworkManager 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           798/chronyd         
udp6       0      0 ::1:323                 :::*                                798/chronyd 

执行这条命令会看到服务器上所有已经开启的端口,也就是说,通过这些端口就可以知道当前服务器上开启了哪些服务。

  • 解释一下命令的执行结果:
    • Proto:数据包的协议。分为 TCP 和 UDP 数据包;
    • Recv-Q:表示收到的数据已经在本地接收缓冲,但是还没有被进程取走的数据包数量;
    • Send-Q:对方没有收到的数据包数量;或者没有 Ack 回复的,还在本地缓冲区的数据包数量;
    • Local Address:本地 IP : 端口。通过端口可以知道本机开启了哪些服务;
    • Foreign Address:远程主机:端口。也就是远程是哪个 IP、使用哪个端口连接到本机。由于这条命令只能查看监听端口,所以没有 IP 连接到到本机;
    • State:连接状态。主要有已经建立连接(ESTABLISED)和监听(LISTEN)两种状态,当前只能查看监听状态;
    • PID/Program name:进程 ID 和进程命令;
[root@CncLucZK ~]# netstat -anp
#查看所有的网络连接,包括已连接的网络服务、监听的网络服务和Socket套接字
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1337/sshd           
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      920/python3         
tcp        0      0 172.17.0.3:8888         107.172.214.60:47757    ESTABLISHED 920/python3         
tcp        0    232 172.17.0.3:22           110.19.110.72:8384      ESTABLISHED 2101519/sshd: root  
tcp        0      0 172.17.0.3:8888         192.99.5.174:47618      ESTABLISHED 920/python3         
tcp        0      0 172.17.0.3:41522        169.254.0.55:8080       TIME_WAIT   -                   
tcp        0      0 172.17.0.3:40764        169.254.0.55:5574       ESTABLISHED 2064/YDService      
tcp6       0      0 :::33060                :::*                    LISTEN      1364/mysqld         
tcp6       0      0 :::3306                 :::*                    LISTEN      1364/mysqld         
tcp6       0      0 :::80                   :::*                    LISTEN      1314292/httpd       
udp        0      0 172.17.0.3:68           0.0.0.0:*                           1174/NetworkManager 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           798/chronyd         
udp6       0      0 ::1:323                 :::*                                798/chronyd    
#Socket套接字输出
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     SEQPACKET  LISTENING     15363    1/systemd            /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     17440    1/systemd            /var/run/.heim_org.h5l.kcm-socket
unix  2      [ ACC ]     STREAM     LISTENING     17445    1/systemd            /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     7119164  1314293/httpd        /etc/httpd/run/cgisock.1314292
unix  2      [ ACC ]     STREAM     LISTENING     17444    1/systemd            @ISCSID_UIP_ABSTRACT_NAMESPACE
unix  2      [ ]         DGRAM                    17760    798/chronyd          /var/run/chrony/chronyd.sock
unix  2      [ ]         DGRAM                    11519341 2101530/systemd      /run/user/0/systemd/notify
unix  2      [ ACC ]     STREAM     LISTENING     11519345 2101530/systemd      /run/user/0/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     11519351 2101530/systemd      /run/user/0/bus
unix  2      [ ACC ]     STREAM     LISTENING     26709    1364/mysqld          /var/lib/mysql/mysqlx.sock
...
Active Bluetooth connections (servers and established)
Proto  Destination       Source            State         PSM DCID   SCID      IMTU    OMTU Security
Proto  Destination       Source            State     Channel

  • 执行"netstat -an"命令能査看更多的信息,在 Stated 中也看到了已经建立的连接(ESTABLISED)。这是 ssh 远程管理命令产生的连接,ssh 对应的端口是 22。还看到了 Socket 套接字。在服务器上,除网络服务可以绑定端口,用端口来接收客户端的请求数据外,系统中的网络程序或我们自己开发的网络程序也可以绑定端口,用端口来接收客户端的请求数据。这些网络程序就是通过 Socket 套接字来绑定端口的。也就是说,网络服务或网络程序要想在网络中传递数据,必须利用 Socke 套接字绑定端口,并进行数据传递。

使用"netstat -an"命令查看到的这些 Socke 套接字虽然不是网络服务,但是同样会占用端口,并在网络中传递数据。

  • Socket 套接字的输出各字段值:
    • Proto:协议,一般是unix;
    • RefCnt:连接到此Socket的进程数量;
    • Flags:连接标识;
    • Type:Socket访问类型;
    • State:状态,LISTENING表示监听,CONNECTED表示已经建立连接;
    • I-Node:程序文件的 i 节点号;
    • Path:Socket 程序的路径,或者相关数据的输出路径;

参考文献:
Linux系统服务及其分类

下一篇:Linux学习-62-独立服务和基于xinetd服务的管理方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux学习-61-Linux系统服务管理 的相关文章

  • win7重装的坑:启动分区不存在 使用分区工具修正

    其实安装win7几个步骤 xff1a 制作启动硬盘 xff08 先制作启动盘 xff0c 再将下载好的ios镜像文件放入 xff09 使用一键安装工具安装系统修改引导启动项 原来的系统盘上面会有原来的主引导文件 xff08 MBR MSR格
  • IN和EXISTS的区别和使用

    一 结论 in 适合子表比主表数据小的情况 exists 适合子表比主表数据大的情况 当主表数据与子表数据一样大时 in与exists效率差不多 可任选一个使用 二 区别 2 1 in的性能分析 select from A where id
  • Android自定义ViewGroup交互进阶,右滑进入详情

    自定义Viewgroup右滑进入详情 前言 在之前的 ViewGroup 的事件相关一文中 xff0c 我们详细的讲解了一些常见的 ViewGroup 需要处理的事件与运动的方式 我们了解了如何处理拦截事件 xff0c 如何滚动 xff0c
  • spring事务实现的几种方式

    一 前言 1 事务几种实现方式 xff08 1 xff09 编程式事务管理对基于 POJO 的应用来说是唯一选择 我们需要在代码中调用beginTransaction commit rollback 等事务管理相关的方法 xff0c 这就是
  • Java实现通过正则表达式判断一个字符串是否含有指定字符

    场景 1 校验一个字符串是否包含有指定字符 这个很简单 xff0c 就单纯的用indexOf或者Contains方法实现就可以了 2 校验一个字符串是否包含的特殊字符 特殊字符虽有多个但也只有几个 xff0c 双重for循环套用indexO
  • springboot使用@SpringBootTest注解进行单元测试

    一 示例 1 1 添加依赖 span class token prolog lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt span span class token tag s
  • 比较两个List是否相等

    1 直接使用equals 比较 众所周知 xff0c 两个列表具有完全相同的元素并且具有完全相同的顺序时 xff0c 它们是相等的 因此 xff0c 如果我们业务要求两个list顺序一致 xff0c 可以使用equals xff08 xff
  • JVM-StringTable(三)

    一 常量池与串池StringTable的关系 span class token keyword public span span class token keyword class span span class token class n
  • SpringBoot常用拦截器(HandlerInterceptor,ClientHttpRequestInterceptor,RequestInterceptor)

    一 SpringBoot常用拦截器 下面3种拦截器 xff0c 都是http拦截器 xff0c 在处理业务逻辑之前对http请求信息进行处理 xff0c 比如获取请求头 xff0c 请求参数 xff0c 设置请求头 xff0c 请求参数等等
  • JAVA多线程基础篇-join方法的使用

    一 概述 join 是Thread类中的一个方法 xff0c 它的作用是将当前线程挂起 xff0c 等待其他线程结束后再执行当前线程 xff0c 即当前线程等待另一个调用join 方法的线程执行结束后再往下执行 通常用于在main主线程内
  • BindingException:Invalid bound statement (not found)异常

    一 前言 本文的mybatis是与springboot整合时出现的异常 xff0c 若使用的不是基于springboot xff0c 解决思路也大体一样的 二 从整合mybatis的三个步骤排查问题 但在这之前 xff0c 我们先要知道整合
  • SQL中case when用法详解及使用案例

    一 语法 Case具有两种格式 简单Case函数和Case搜索函数 简单Case函数格式 xff1a CASE 列名 WHEN 条件值1 THEN 选项1 WHEN 条件值2 THEN 选项2 ELSE 默认值 END Case搜索函数 x
  • 想入行C++游戏脚本制作?首先听听7年经验大佬怎么说?

    先自我介绍一下 xff0c 七年的程序开发经验 xff0c 在小一线城市税后2W多点 xff0c 本应过着很舒适的生活 xff0c 每天喝点小酒 xff0c 玩玩游戏 但自从入了A股 xff0c 一切都改变了 xff0c 如今的我 xff0
  • 大学刚毕业,用10000小时,走进字节跳动拿了offer

    前言 xff1a 没有绝对的天才 xff0c 只有持续不断的付出 对于我们每一个平凡人来说 xff0c 改变命运只能依靠努力 43 幸运 xff0c 但如果你不够幸运 xff0c 那就只能拉高努力的占比 2020年7月 xff0c 我有幸成
  • tensorflow中tfrecord数据操作

    前言 xff1a 为了更加展示tfrecord数据的相关操作 xff0c 笔者后续又写了一个实践的简单例子进一步解释 xff0c 具体可以看 xff1a TFrecords 制作数据集小例子 xff08 多标签 xff09 爱吃火锅的博客
  • 软件测试阶段

  • VR技术类毕业论文文献有哪些?

    本文是为大家整理的VR技术主题相关的10篇毕业论文文献 xff0c 包括5篇期刊论文和5篇学位论文 xff0c 为VR技术选题相关人员撰写毕业论文提供参考 1 期刊论文 运动炫科技 智慧赢未来 VR技术在体育领域内的应用与展望 期刊 xff
  • CentOS7防火墙添加端口

    CentOS7防火墙添加端口 CentOS防火墻添加端口比较简单 xff0c 三步走 xff08 皆以root用户执行 xff0c 或者用sudo命令 xff09 xff1a 1 查看开发的端口 firewall span class to
  • 手写一个--生产者消费者模式

    文章目录 前言wait notify方法实现生产者消费者模型1 使用Object的wait notify 方法2 使用Lock和Condition的await signal 方法3 使用BlockingQueue阻塞队列方法 前言 生产者消
  • C语言中static关键字用法和作用

    static修饰的对象 xff1a static关键字可以修饰 xff1a 局部变量 全局变量 函数 static修饰后改变了什么 xff1f 1 改变了生存周期 xff1b 就是一个变量 函数从分配内存去表示到回收内存的过程 2 改变了作

随机推荐

  • c语言中NULL到底是什么?

    C语言中NULL到底是什么 xff1f 1 NULL在C C 43 43 中定义为 xff1a ifdef cplusplus 定义这个符号就表示当前是C 43 43 环境 define NULL 0 在C 43 43 中NULL就是0 e
  • register关键字详解

    前言 xff1a 编译器的优化很大程度上就是通过数据流分析 调整读取内存的顺序等 xff0c 减少CPU对内存的读写 因为内存的运行速度相对于CPU是很慢的 xff0c 计算机中添加cache就是为了解决CPU和内存运行速度差异过大的问题
  • 海思烧录工具HiTool的使用方法以及烧录uboot

    1 什么是HiTool HiTool是海思公司提供的用于海思芯片的烧录工具 xff0c 可用于烧录uboot kernel rootfs等 这里只是简单的介绍用HiTool通过串口去烧写uboot xff0c 更加仔细的使用方法可以参考海思
  • /etc/profile文件简单介绍

    什么是 etc profile文件 etc profile文件为系统的每个用户设置环境变量信息 此文件的修改会影响到所有用户 想了解更多细节内容可以用 xff1a vi etc profile 命令进行查看 etc profile文件和 b
  • 五月再不跳槽,就晚了

    从时间节点上来看 xff0c 3月 4月是每年跳槽的黄金季 xff01 之后的五月也会放出一些岗位 以 BAT 为代表的互联网大厂 xff0c 无论是薪资待遇 还是平台和福利 xff0c 都一直是求职者眼中的香饽饽 xff0c 大厂经历 在
  • I2C通信协议详解和通信流程分析

    1 I2C通信特征 1 1 物理接口 xff1a SCL 43 SDA 1 SCL serial clock xff1a 时钟线 xff0c 传输CLK信号 xff0c 一般是I2C主设备向从设备提供时钟的通道 2 SDA serial d
  • 用LED驱动框架注册led设备的示例代码

    1 LED驱动框架分析 参考博客 xff1a 内核LED驱动框架讲解以及led设备注册示例代码 xff1b 2 简单的用LED驱动框架注册led设备的代码 span class token macro property span class
  • 【C++入门】静态成员详解(定义、实现原理、使用注意事项)

    1 类的静态成员 1 在类中用static修饰成员 xff0c 则该成员是静态成员 xff1b 2 静态成员是属于类本身的 xff0c 所有类的对象共享 xff1b 3 类的对象都可以访问静态成员 xff0c 但是所有类的成员访问的静态成员
  • pci总线协议学习笔记——PCI总线基本概念

    1 pci总线概述 1 PCI xff0c 外设组件互连标准 Peripheral Component Interconnection xff0c 是一种由英特尔 xff08 Intel xff09 公司1991年推出的用于定义局部总线的标
  • RK3568芯片开发笔记——调试pwm控制红外功能

    1 PWM介绍 参考博客 xff1a ARM芯片开发 xff08 S5PV210芯片 xff09 定时器 看门狗 RTC xff1b 2 配置pwm功能的方法 1 内核层 xff1a 内核代码里有pwm子系统 xff0c 里面有pwm相关函
  • 海思芯片(hi3536av100)启动模式选择

    1 支持多种模式可配置 1 支持BootRom启动 2 支持从 SPI NOR Flash 启动 3 支持从 SPI NAND Flash 启动 4 支持从 eMMC 启动 5 支持 PCIe 从片启动 2 启动方式的选择 BOOT SEL
  • C语言头文件详解

    1 include的作用 简单一句话 xff1a 在include的地方 xff0c 把头文件里的内容原封不动的复制到引用该头文件的地方 2 头文件的引用 头文件引用有两种形式 xff1a include lt stdio h gt 和 i
  • wps云文档 wps自动备份怎么设置和取消

    转载请说明来源于 34 厦门SEO 34 本文地址 xff1a http www 96096 cc Article 169633 html wps云文档 WPS 为用户提供了自动备份的功能 xff0c 这为用户带来了方便的同时也给用户带来了
  • IDEA中Spring的配置使用

    IDEA中Spring的配置使用 1 首先创建JavaEE Web Application项目 xff0c 勾选Spring xff0c Libraries选择Set up library later xff08 有spring jar包的
  • content-type类型总结

    content type content type是http请求的响应头和请求头的字段 当作为响应头时 xff0c 告诉客户端实际返回的内容的内容类型 作为请求头时 xff0c 客户端告诉服务器实际发送的数据类型 前端开发过程中 xff0c
  • 外包干了6年,寄了

    前两天有读者想我资讯 xff1a 我是一名Android工程师 xff0c 工作已经四年多快五年了 现在正在找工作 xff0c 由于一直做的都是外包的项目 技术方面都不是很深入 xff0c 现在找工作都是会问一些 xff0c 四大组件 xf
  • java.lang.RuntimeException: Unable to instantiate activity ComponentInfo(不能实例化)异常解决

    java lang RuntimeException Unable to instantiate activity ComponentInfo xff08 不能实例化 xff09 异常解决 一 可能出现的原因及解决方法 xff1a xff0
  • Error:java: Compilation failed: internal java compiler error 的解决过程

    1 错误描述 xff1a IDEA导入一个新的项目 xff0c 运行时包编译失败 2 错误原因 这个错误的原因是因为 JDK 版本问题 xff0c 有两个原因 xff0c 一个是编译器版本不匹配 xff0c 一个是当前项目 JDK 版本不支
  • SpringCloud-21-Hystrix全局降级和解耦降级逻辑

    8 6 全局降级方法 通过上面的方式实现服务降级时 xff0c 需要针对所有业务方法都配置降级方法 xff0c 这极有可能会造成代码的急剧膨胀 为了解决该问题 xff0c 我们还可以为所有业务方法指定一个全局的回退方法 xff0c 具体步骤
  • Linux学习-61-Linux系统服务管理

    14 Linux系统服务管理 系统服务 xff1a 服务是在后台运行的应用程序 xff0c 并且可以提供一些本地系统或网络的功能 Linux 中常见的服务有那些 xff0c 这些服务怎么分类 xff0c 服务如何启动 xff0c 服务如何自