Linux系统管理技术手册——第25章 X窗口系统

ubuntu桌面管理环境 gdm3,KDM,lightdm gdm3,kdm和lightdm都是显示管理器。它们提供图形化登录并处理用户身份验证。 从维基文章中: 显示管理器向用户显示登录屏幕。 当用户成功输入用户名和密码的有效组合时,会话开始。 gdm3是gdm的继承者,它是GNOME显示管理器。 更新的gdm3使用了最小的gnome-shell版本,并提供了与GNOME3会话相同的外观和感觉。 你可以安装它: 复制代码 sud... 阅读详情

X窗口系统(X Window System),也叫 X11,或简称为 X。X窗口系统分为几个关键组件:显示管理器(display manager),主要任务是验证用户身份,并由启动脚本启动一个初始的环境,还要启动 X服务器 和 窗口管理器(window manager)。

X服务器 定义了抽象接口可以访问系统的位图化显示设备和输入设备。窗口管理器 可以让用户移动、缩放窗口,还可以管理多个独立的虚拟桌面。

最底层,应用软件被链接到一个widget库,这个库实现了上层用户界面的各种机制,如按钮和菜单。

这种服务器的设计可以原生的支持远程桌面,而且还可以允许服务器支持各种不同的窗口管理器和widget库。

25.1 X 显示管理器

显示管理器要启动初始环境,可以通过图形化的登录界面,也可以通过命令行直接启动。常见的显示管理器包括:xdm(X display manager)、gdm(GNOME display manager)、kdm(KDE display manager)。

/etc/X11 下有存放xdm、gdm或者kdm配置文件的子目录,这些配置文件规定了显示管理器该怎样运行。显示管理器最后的任务是执行一般在 /etc/X11 下的脚本 Xsession ,这个脚本建立起用户的桌面环境,是系统级的启动脚本。然后执行用户个人的启动脚本 ~/.xession ,进而启动窗口管理器,任务栏,帮助程序等。

当执行完 ~/.xsession 之后,用户就被退出系统(如果 ~/.xsession 里所有的命令都在后台执行,那么这个脚本会立即结束,于是用户在刚登陆之后立即又被退出系统),所以一般最后一个执行的程序是窗口管理器,保持在前台避免退出系统。

25.2 运行一个X应用程序

25.2.1 环境变量 DISPLAY

X应用程序通过查询环境变量 DISPLAY 的值,才知道到哪里显示自己。这个变量包括服务器的主机名或者IP地址、显示号(标识要连接上的一个具体的X服务器实例),还有一个可选的屏幕号(用于有多个显示器的情况)。

# 把X应用程序指向了主机servername.domain.com,显示10和屏幕2.
DISPLAY=servername.domain.com:10.2;

25.2.2 客户机身份认证

基本思想为,在登陆过程一开始的时候,X显示管理器生成一个随机数,叫做一个 cookie ,这个服务器的cookie被写到该用户的主目录下,一个叫做 ~/.Xauthority 的文件里。

任何客户端程序,只要知道这个 cookie ,就会得到允许,可以连接该服务器。用户可以运行 xauth 命令查看已有的cookie,还可以向这个文件添加新的cookie。

要把X应用程序显示到旁边的机器上,可以执行:

xprogram -display server:0
# 如果没有正确的cookie,就会显示如下:
Xlib: connection to "server:0.0" refused by server
xprogram: unable to open display 'server:0'

使用 xauth list 命令查看服务器上的 cookie ,服务器上的每个网络接口都有一个 cookie ,将服务器上的 cookie ,用 xauth add 命令添加到客户机上,就能远程显示了。

25.2.3 用SSH转发X连接

一般情况下,是从运行 X服务器 的机器,通过 ssh 登录到想要运行 X应用程序 的机器上。DISPLAY 变量和验证信息由 ssh 自动设置。显示号从 :10.0 开始,每增加一条转发 X流量 的 ssh 连接,这个值就加1。

ssh 转发 X11应用程序 的流量,必须在 ssh 的服务器和客户端都启用 X转发功能,而且客户机依然必须要有x服务器正确的 cookie。

25.3 配置 X服务器

Xorg 的配置文件一般可以在 /etc/X11/xorg.conf 找到。有几个程序能够帮助用户配置 X (如,xorgconfig)。

可以运行 Xorg-probeonly 命令查看输出的显示卡芯片组和其它探测到的值(虚拟机的Ubuntu 22.10上并没有这个命令)。可以运行 Xorg -configure 命令,让服务器根据探测到的值创建一个初始的配置文件。

xorg.conf 文件的内容被组织成几段,每一段配置以关键字 Section 开头,以 EndSection 结尾。

xorg.conf 文件的配置段:

配置段说明
ServerFlags列出一般性的 X 服务器配置参数
Module指定为加速图形显示、平滑字体等功能而动态加载的扩展模块
Device配置显卡、驱动程序和硬件信息
Monitor描述显示器的物理参数,包括刷新率和显示分辨率
Screen把一台显示器和一个显卡(Device)联系起来,规定在该配置中能采用的分辨率和颜色深度
InputDevice指定输入设备,如键盘和鼠标
ServerLayout把输入设备绑定到一组屏幕上,并且定出屏幕彼此之间的相对位置

一台物理上的显示器(Monitor)加一块显卡(Device)就构成了一个屏幕(Screen)。一组屏幕(Screen)再加上若干输入设备(InputDevice)就构成了一个服务器布局(ServerLayout)。

25.3.1 Device段

一个 Device 段描述一块特定的显卡。必须提供一个字符串来标识这块显卡,还要给它提供一个正确的驱动程序。只有当相应的 Section 段用到这个设备的时候,才加载这个驱动程序。典型的 Device 段可能像下面这个样子:

Section "Divice"
    Identifier        "Videocard0"
    Driver            "radeon"
    option            value
    ...
EndSection

25.3.2 Monitor段

Monitor 段描述连接到计算机的显示器。它能够指定详细的刷新率。对于比较老的硬件来说,需要有刷新率的信息,但是现在的显示器大都可以通过探测得到这个值。典型的 Device 段可能像下面这个样子:

Section "Monitor"
    Identifier        "ViewSonic"
    Option            "DPMS"
    HorizSync         30-65
    VertRefresh       50-120
EndSection

和所有配置段一样,Identifier 行给显示器分配一个名字,以后可以用这个名字来代表这台显示器。我们在这里打开了DPMS(Display Power Management Signaling,显示器电源管理)功能,所以当我们偷偷离开去吃点心喝咖啡的时候,X服务器会关闭显示器的电源。

HorizSync 和 VertRefresh 两行只适用于CRT显示器,它们应该填上显示器的正确值。这两个值可以用频率范围或者逗号隔开的多个频率值来指定。

理论上,驱动程序可以探测到它所支持的显示器型号的值,但是指定这两个参数可以避免驱动程序使用不支持的频率。

25.3.3 Screen 段

Screen 段把一个设备(显卡)联系到一台显示器,这台显示器有特定的颜色深度和特定的一组显示分辨率。下面的例子使用了上面提到的显卡和显示器。

Section "Screen"
    Identifier        "Screen0"
    Device            "Videocard0"
    Monitor           "ViewSonic"
    DefaultDepth      24
    Subsection "Display"
        Depth    8
        Modes    "640x400"
    EndSubsection
    Subsection "Display"
        Depth    16
        Modes    "640x400" "640x480" "800x600" "1024x768"
    EndSubsection
    Subsection "Display"
        Depth    24
        Modes    "1280x1024" "1024x768" "800x600" "640x400" "640x480"
    EndSubsection
EndSection

同样,Identifier 配置了屏幕的名字,并且提到了前面定义的显卡和显示器。这段配置里,有配置子段,为每一种颜色深度定义了一个子段,默认子段用 DefaultDepth 指定。

一个 X服务器 的实例只能以一种颜色深度来运行。X服务器 在的启动的时候要判断该颜色深度所支持的分辨率。

25.3.4 InputDevice段

每个设备有自己的 InputDevice 段,所有的设备都可以在配置文件中定义,但是只会使用在 ServerLayout 段中指出的那些设备。

# 一个键盘,AutoRepeat 选项指出一个键需要按下多久才开始重复,以及重复的速度有多快
Section "inputDevice"
    Identifier        "Generic Keyboard"
    Driver            "keyboard"
    Option            "AutoRepeat" "500 30"
    Option            "XkbModel" "pc104"
    Option            "XkbLayout" "us"
EndSection
# 一个鼠标,CorePointer 选项把这个鼠标指定为系统首要的指示设备。和这个鼠标关联的硬件文件用一个 Option 来指定。
# 通信协议(protocol)取决于具体的鼠标品牌、鼠标的功能、以及鼠标的接口。可以把它设置为 auto,这样服务器会尝试替用户检测用什么协议。如果鼠标滑轮不工作,那么试试协议改为 IMPS/2。如果鼠标有好几个按键,那么可以试试用 ExplorerPS/2 这个协议。
# Emulate3Buttons 这个选项通过定义同时点鼠标双键等于点鼠标中键的方式,让一个双键鼠标去模拟一个三键鼠标。
# 有时候需要 ZAxisMapping 这个选项,以便支持滚轮或者游戏杆设备。
Section "inputDevice"
    Identifier        "Generic Mouse"
    Driver            "mouse"
    Option            "CorePointer"
    Option            "Device" "/dev/input/mice"
    Option            "Protocol" "IMPS/2"
    Option            "Emulate3Buttons" "off"
    Option            "ZAxisMapping" "4 5"
EndSection

常见的鼠标设备文件:

操作系统设备文件
Linux/dev/input/mice
Solaris/dev/mouse
HP-UX/dev/deviceFileSystem/mouseMux
AIX/dev/mouse0

25.3.5 ServerLayout 段

ServerLayout 段是配置的最高层结点。这段配置把其它所有配置段结合到一起,用来表示一个 X 显示(display)。它把一组屏幕(screen)和这个布局关联起来。如果多个显示器分别连接到不同的显卡上,那么在指定每个屏幕的同时,还可以带一些可选的方向说明,表明这些屏幕在物理上是怎样摆放的。本例中,屏幕1(Screen1)在左边,而屏幕2(Screen)在右边。

# 有些显卡能够一次驱动多台显示器,这种情况下,在ServerLayout 段只能指定一个Screen。
Section "ServerLayout"
    Identifier        "Simple Layout"
    Screen            "Screen 1" LeftOf "Screen 2"
    Screen            "Screen 2" RightOf "Screen 1"
    InputDevice       "Generic Mouse" "CorePointer"
    InputDevice       "Generic Keyboard" "CoreKeyboard"
    Option            "BlankTime"    "10" # Blank the screen in 10 minutes
    Option            "StandbyTime"  "20" # Turn off screen in 20 minutes(DPMS)
    Option            "SuspendTime"  "60" # Full hibernation in 60 minutes(DPMS)
    Option            "OffTime"  "120" # Turn off DPMS monitor in 2 hours
EndSection

25.3.6 xrandr: X 服务器的配置工具

XRandR(X Resize and Rotate Extension)可以让客户机动态的改变其X服务器屏幕的大小,方向和倒影。xrandr 是这一扩展功能的命令行工具。

当然可以手动调整 xorg.conf 文件,但是使用xrandr可以极大的提高效率。不带参数的运行 xrandr 的话,它会显示可用的显示及可能的分辨率。

可以给每个显示指定要用的分辨率,还有该显示相对于其它显示的摆放位置。例如:

xrandr --auto --output VGA-0 --mode 800x600 --right-of DVI-0

参数 --auto 打开所有可以用的显示器。 --output 和 --mode 两个参数把 VGA 的显示分辨率设为 800x600,
--right 这个参数指定 VGA 显示器在物理上位于 DVI 显示器的右边。

如果想让 xrandr 在启动 X服务器 之后自动运行,可以把这条命令放到自己的 ~/.xprofile 文件里,X服务器在启动的时候会执行这个文件。

25.3.7 内核模式设定

为了更好的显示效果,现在设定图形显示的初始模式这一责任,通过KMS(kernel mode setting,内核模块设定)落到了Linux内核身上。

显卡的配置文件在 /etc/modprobe.d 这个目录下,通过这些配置文件的设定,就可以启用或者禁用KMS。

25.4 故障排查和调试

25.4.1 X的特殊键盘组合

Control + Alt + (F1-F6) ,X服务器会进入基于文本 的虚拟终端。

如果监视器和显卡的视频信号不同步,那么就要试着修改屏幕的分辨率。配置文件中 Screen 段可以设置分辨率,默认使用激活的 Modes 行中的第一个显示分辨率。可以使用 Control + Alt + (+/-) 来切换分辨率。

按下 Control + Alt + Backspace 会立即杀死X服务器。
如果从一个主控台运行了 X服务器,当服务器退出时,就会发现自己返回到了主控台。
如果是一个显示管理器启动了 X服务器,当服务器退出时,会重新派生出一个新的服务器,再次提示输入登录名和口令。

25.4.2 X服务器出问题

进入终端之后就能调查 X服务器到底出了什么问题,X服务器的日志偶尔能在 虚拟终端1(Control + Alt + F1) 上看到。最常见的是日志被记录在 /var/log/Xorg.0.log 这样的日志文件中。

日志的每一行开头都有一个特征分类符号:出错(EE)、警告(WW),还能判断出 X服务器如何找到每一种信息:通过默认配置(==)、在一个配置文件里(**)、自动检测到的(–)、由X服务器的命令行指定的(++)

根据日志的报错修复 X服务,当X启动并运行之后,就可以使用 xdpyinfo 命令获得更多有关 X服务器配置的信息。

25.5 桌面环境简述

25.5.1 KDE

KDE代表 K Desktop Environment(K桌面环境),用C++语言编写,在Qt工具集库上构建的环境。比较漂亮,热衷于全方位定制自己环境的用户最喜欢这个桌面。为KDE编写的应用程序几乎总在名字里面有个字母 K。

KDE支持一套全面的开发工具,其中包括一个集成开发环境(IDE)。

25.5.2 GNOME

GNOME用C语言编写,基于GTK + widget库的另一种桌面。没有KDE那么花哨,也没有KDE配置性强。大多数Linux发行版使用GNOME作为自己默认的桌面。

Linux入门实战:从零构建系统观与核心操作流 如果你是一名开发者,或者正在向技术岗位转型,那么“Linux”这个词一定不会陌生。从服务器运维、云计算、容器化到嵌入式开发,Linux 系统几乎无处不在。然而,对于很多初学者来说,Linux 的学习路径却异常模糊:是应该从枯燥的命令行开始死记硬背,还是直接上手某个发行版?网上教程千千万,为什么自己照着做还是频频报错,连系统都装不好? 问题的核心在于,大多数入门材料要么过于理论化,脱离实际环境;要么是零散的“命令大全”,缺乏系统性的场景串联。这导致很多新手在“从入门到放弃”的边缘反复横跳。实际上,掌握 Lin 阅读详情

相关推荐

Linux通用系统高危漏洞修复案例

2024年3月28日,监 Linux kernel权限提升漏洞(CVE-2024-1086)的PoC/EXP在互联网上公开,该漏洞的CVSS评分为7.8,目前漏洞细节已经公开披露,美国网络安全与基础设施安全局(CISA)6月1日也更新了其已知漏洞(KEV)目录,要求联邦机构在 2024 年 6 月 20 日之前打上补丁,修复追踪编号为 CVE-2024-1086 的 Linux 内核权限提升漏洞。由于该漏洞的公开性,攻击者可能会利用这个漏洞进行恶意攻击,因此建议尽快采取修复措施。

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 4920

linux X系统 X窗口系统(X Window System)

Xorg是一个开放源代码的跨平台的图形系统,它是UNIX和Linux的主要图形系统,它的前身是XFree86。它支持多种输入设备,如键盘,鼠标,触摸屏,手写板,视觉辅助设备,扫描仪等。Xorg的主要功能是提供图形界面,它能够支持多种图形硬件,包括显卡,控制器,扩展卡,显示器,绘图板,扫描仪,多种输入设备,以及其他类型的外围设备。这样,开发人员就可以使用Xorg的驱动程序框架,编写可以支持新的图形硬件的驱动程序,从而使新的图形硬件能够与Xorg的其他组件一起工作,从而提供更好的图形显示效果。

a1058926697的博客 6476

x11 window 第三章:窗口管理(下)

In the X Window System, awindowis a rectangular area on the screen that lets you view graphic output. Client applications can display overlapping and nested windows on one or more screens that are driven by X servers on one or more machines. Clients who ..

啊渊的专栏 1075

Linux显示系统

X Window是Linux上的窗口系统,由三个基本元素组成:X Server、X Client和二者通信的通道。

薛文旺 821

用Python3编写的简单X11窗口管理器.zip

用Python3编写的简单X11窗口管理器.zip

Linux系统中xorg.conf文件详细介绍

以下是对Linux系统中的xorg.conf文件进行了详细的分析介绍,需要的朋友可以过来参考下

Linux 迎来 29 岁,而这些 Linux 好书你却还没读过?

code小生一个专注大前端领域的技术平台公众号回复Android加入安卓技术群程序员书库(ID:CodingBook)猿妹编译书单来自:https://itsfoss.com/bes...

weixin_38754349的博客 183

光谱分布、光谱辐射通量密度与不同时间段分布光谱(图示)

1、光谱分布图 2 太阳辐射能量图 3、不同时间段的太阳分布光谱图 4、不同波长的光的能量分布主要区域 5、不同波段的使用场景

maopig的专栏 2万+

linux系统lockscreen,Linux screen教程

如何应用Linux screen 来管理会话shell 会话意外断开了,需要多shell会话吧?正当你通过SSH登录到远程服务器上,兴高采烈地敲击着键盘。突然,字符不闪了,接着看到的是可怕的消息“Connetion Closed(连接断开)”,这时你的会话已经丢失。唉,你刚刚进行了一半的工作不得不从头再来!好在你可以使用screen阻止这一切的发生。Linux的screen工具不仅能保存你的会话以...

weixin_35445090的博客 1098

YOLOv11 改进策略 | HWD:引入 Haar 小波变换,减少信息丢失

在卷积神经网络(CNN)中,下采样(Downsampling)是降低特征图分辨率、扩大感受野的关键操作,通常通过最大池化(MaxPool)或步长为 2 的卷积(Strided Convolution)实现。然而,这些方法在降低分辨率的同时,往往会丢失图像中的高频细节信息(如边缘、纹理)和精确的空间位置信息,这可能对后续特征提取和目标检测精度产生不利影响,尤其是对于小目标和需要精细定位的任务。

走向CTO的路上... 1787

SQL Server 内存占用高分析及解决办法(超详细)

如果想让 Sql Server 主动释放 占用并空闲的内存空间,可以设置Sql Server占用内存的上限,就会让Sql server在。如执行存储过程,自定函数时,SQL Server 需要先二进制编译再运行,编译后的结果也会缓存起来,再次调用时就无需再次编译。才会释放一点占用的内存,所以很多时候,我们会发现运行SQL Server的系统内存往往居高不下这些内存一般都。缓存,以便于再次请求此页的数据的时候,直接从内存返回,就无需读取磁盘了,大大提高了速度。最后文章有啥不对,欢迎大佬在评论区指点!

2301_79080944的博客 3951

计算机三级Linux应用与开发技术——Linux系统使用基础

计算机三级Linux应用与开发技术——Linux系统使用基础

freshman的博客 691

Ansys Lumerical 2023 R1.2新功能实战:薄膜铌酸锂调制器仿真全流程解析

本文详细解析了Ansys Lumerical 2023 R1.2在薄膜铌酸锂电光相位调制器仿真中的最新功能与应用。通过实战演示,展示了从电极配置、电场计算到模式分析的全流程,重点介绍了各向异性介电常数支持和多物理场耦合优化等关键技术,助力开发者高效设计高性能光通信器件。

weixin_28454475的博客 1204

Linux操作系统基础命令

ls

紫月i的博客 294

毫米波雷达入门知识

毫米波雷达入门知识

ssbzxcvbnm1234567的博客 5441

基于Xilinx K7-410T的高速DAC之AD9129开发笔记(一)

引言:从本文开始,我们介绍下项目中设计的并行LVDS高速DAC接口设计,包括DAC与FPGA硬件接口设计、软件设计等。项目设计高速DAC采用了ADI公司的AD9129,该芯片最大更新速率5.7Gsps,该芯片在宽带通信应用、LTE、雷达信号产生、干扰机等领域有广泛应用。

FPGA_Designer 2533

linux系统lockscreen,Linux screen教程-如何应用Linux的screen来管理会话

shell 会话意外断开了,需要多shell会话吧?正当你通过SSH登录到远程服务器上,兴高采烈地敲击着键盘。突然,字符不闪了,接着看到的是可怕的消息“Connetion Closed(连接断开)”,这时你的会话已经丢失。唉,你刚刚进行了一半的工作不得不从头再来!好在你可以使用screen阻止这一切的发生。Linux的screen工具不仅能保存你的会话以防断开连接,它还能通过在同一个SSH会话中使...

weixin_42503487的博客 296

Playwright Test Agent 实战:零代码基础也能写自动化测试「喂饭教程」

本文详细介绍了Playwright智能体的三大核心组件:规划智能体设计测试策略,生成智能体转换用例为代码,修复智能体自动修正失败测试。教程包含环境配置步骤、智能体使用方法和实战案例,展示了如何通过自然语言指令快速创建稳定的测试脚本。相比传统方法,Playwright智能体大幅降低测试自动化门槛,提升效率并减少维护成本,使测试人员无需编码基础也能实现高质量的自动化测试。

blues_C的博客 2016

logkeys项目深度解析:开源键盘记录器的技术架构与工作原理

logkeys是一个功能强大的GNU/Linux开源键盘记录器,它为系统管理员和开发者提供了可靠的键盘输入监控解决方案。这个工具不仅简单易用,而且技术架构设计精良,能够稳定地捕获所有常见的字符和功能键输入。在本文中,我们将深入探讨logkeys的工作原理、技术架构以及实际应用场景,帮助你全面了解这个实用的Linux系统工具。 ## 📋 什么是logkeys键盘记录器? logkeys是一个基

gitblog_00855的博客 686

EDKII环境配置完整版

参考博客【EDK2 UDK2018的环境搭建】:https://blog.youkuaiyun.com/qq_39155263/article/details/82965744下载EDK2 1.直接从https://github.com/tianocore/edk2/ 网站下载.zip压缩文件 2.运用svn 从http://svn.code.sf.net/p/edk2/code/trunk/edk2edk2下载 3.安装Visual Studio2017 安装其他Tool 1.IASL 从https..

tianpu2320959696的博客 1849

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux常用命令总结(超详细 建议收藏)

爆肝6000字,整理出了Linux的常用命令,超详细(可当手册),建议收藏

qq_59084325的博客 1929

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Linux

Linux是一个开源的操作系统内核,它最初是由Linus Torvalds编写的,后来由全世界的程序员共同开发。Linux内核的设计运行在许多不同的硬件平台上,比如PC、服务器、移动设备和嵌入式系统等。Linux发行版是基于Linux内核,并夹杂对开发者和用户友好的东西如安装程序、图形界面和应用程序等。流行的Linux发行版有:- Ubuntu:易于使用,面向桌面用户,由Canonical公司开发。- CentOS:面向企业用户,由红帽公司的源码编译而来,稳定可靠。

一位即将谢顶的BD程序牛 1527

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux命令行核心技能:从入门到实战的系统学习指南

很多刚接触 Linux 的同学,面对黑乎乎的命令行窗口,常常感到无从下手。无论是想部署一个网站、管理服务器,还是进行软件开发,命令行都是绕不开的核心技能。网上的资料虽然多,但要么过于零散,要么直接甩出一张“命令大全”图,新手看了更懵。 本文旨在解决这个痛点,为你梳理出一条清晰的 Linux 命令学习路径。我们不追求面面俱到地罗列所有命令,而是聚焦于那些最核心、最高频、能让你快速上手并解决实际问题的命令。从文件操作、文本处理到系统管理和网络工具,每个命令都会配以清晰的场景示例和解释,确保你不仅能“照着敲”,更

cuili5839的博客 345
上一篇: Mybatis返回列表size不为0但是报空指针异常
下一篇: Linux系统管理技术手册——第3章 引导和关机
Suzuki Mirai
博客等级 码龄9年 17粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值