使用 VNC 实现多用户登录

2023-05-16

Virtual Network Computing (VNC) 是一种提供计算机远程访问的流行工具。常规的 VNC 配置是针对单用户工作台而进行优化的,可登录到 VNC 端口直接访问单一用户的桌面。然而,这一配置在多用户计算机上使用不太合适。幸运的是,我们有一个替代方案。通过将 VNC 链接到一台 Linux 计算机的普通 X Display Manager Control Protocol (XDMCP) 服务器,访问 VNC 端口就能够让用户提供其用户名和密码,进而能够使单个 VNC 服务器实例处理多个用户登录。

VNC 和 X 服务器架构

Linux使用 X Window System(简称 X)作为其图形用户接口 (GUI)。X 从多个方面来看是一个不寻常的 GUI,一个方面是它本身支持网络。X 服务器 实际上是一个网络服务器程序。网络服务器程序提供给客户端程序对本地资源的访问,对于 X 服务器也是如此。奇异之处在于,对于 X 服务器来说 “本地资源” 是用户使用的显示器、键盘和鼠标。在大部分常见配置中,X 客户端程序作为服务器运行在同一台计算机上。因此,LibreOffice、GNU Image Manipulation Program (GIMP) 或其他程序是使用 X 的网络协议接受用户输入并在同一台计算机上为用户显示输出的 X 客户端。

不过在通过网络使用 X 时,用户位于 X 服务器计算机,而 X 的客户端是用户希望在另一台计算机上运行的程序。这一配置需要第二个网络协议来发起连接。这第二个协议可以是 telnet、Secure Shell (SSH) 或 X Display Manager Control Protocol (XDMCP)。用于这一登录协议的服务器在 X 客户端计算机上运行,而远程登录客户端在 X 服务器计算机上运行。远程登录服务器启动 X 客户端,后者转而联系 X 服务器。图 1 描述了这一关系。虚线箭头表示会话启动。(对于 XDMCP,XDMCP 客户端构建在 X 服务器程序中。)


图 1. X 远程访问需要在两台计算机上装有一个客户端和一个服务器
图表显示 X 客户端与 X 服务器之间的关系 
 

这种设置在很多本地网络上都很有效,但它有缺陷。例如,该配置需要双向网络协议启动,而这是无法通过一些防火墙或网络地址转换 (NAT) 路由器实现的。(SSH 可以利用通道进行 X 会话,消除这一需求。)此外,尽管 X 服务器可用于大部分平台,但它们通常不安装在运行 Windows® 的计算机上。出于这些和其他原因,许多站点倾向于使用另一个协议 Remote Frame Buffer (RFB),该协议在 Virtual Network Computing (VNC) 系列程序中均有实现。

VNC 是一个跨平台的工具,可从任何类型的客户端提供对 Linux、UNIX®、Mac OS X、Windows 和其他系统的远程访问。使用 VNC,用户可以从客户端计算机访问一台远程服务器计算机。在 Linux 上,VNC 服务器要么将本地 X 服务器的界面内容镜像到远程计算机,要么包含其自身的 X 服务器,该服务器可独立于管理本地界面的服务器运行。结果类似于 图 2 所示。同样,虚线箭头表示会话启动。这一配置消除了反向进行网络连接的需求,而且由于 VNC 客户端和服务器存在于如此多的操作系统中,用户可以利用单一客户端程序访问任何服务器。


图 2. 一个 VNC 服务器包括一个可与本地 X 客户端程序通信的 X 服务器
图表显示 VNC 服务器如何发送 X 服务器内容给客户端 
 

VNC 的缺点在于,RFB 身份验证基于密码,而不需要用户名。因此,每个用户必须启动一个独立的 VNC 服务器会话,并通过指定正确的端口号连接到 VNC 实例。这一要求在单用户系统上可能还能接受,但是在多用户计算机上则极其不合适。

要解决这一问题,您可以将两种方法衔接起来。您可以重新配置您的本地 XDMCP 服务器以帮助集成在 VNC 中的 X 服务器提供缺少的多用户身份验证(最终的配置类似于 图 3 所示)。虚线箭头表示会话启动。现在,当远程 VNC 用户联系 VNC 服务器计算机时,他们能够输入其用户名和密码来访问其自己惟一的 VNC 会话,因此计算机可以处理尽可能多的用户。


图 3. 将 XDMCP 添加到 VNC 配置能够提高灵活性

图表显示将 XDMCP 添加到 VNC 配置如何能够提高灵活性

配置 VNC 服务器

有多种启动 VNC 的方法存在,包括使用脚本、使用桌面工具将 VNC 链接到您的桌面环境,以及使用 xinetd 监听 VNC 连接。最后这一种方法就是这里要介绍,因为它能够让您启动 VNC,以便它可以使用您的 XDMCP 服务器。在详细介绍如何配置 VNC 以通过xinetd 来启动之前,您必须选择一个 VNC 服务器。

选择 VNC 服务器

有若干 VNC 服务器程序可用。(参考资料 提供了其中一些服务器程序的链接。)一些更加流行的服务器程序包括 TightVNC、TigerVNC 和 RealVNC。本文以 TightVNC 为例。遗憾的是,配置细节随服务器以及发行版的不同而不同,因此您可能需要针对您的软件来调整这里所提供的使用说明。

安装 xinetd

许多发行版默认安装 xinetd 超级服务器,但一些发行版没有安装此服务器。由于这里所描述的方法使用的是 xinetd,所以如果没有安装的话,您应当安装 xinetd。在大部分发行版上,您可以使用软件包系统安装 xinetd,比如在基于 Debian 的发行版上使用 apt-get install xinetd,或者在 openSUSE 上使用 zypper install xinetd。

您可能还需要配置 xinetd 来进行运行。您通常可以使用其 System V (SysV) 启动脚本,只需运行一次:


 
 
  1. # /etc/init.d/xinetd start 

配置 xinetd 以使它在计算机启动时自动运行,这需要对您的发行版启动脚本方法有一定了解。通常,您可以使用一个实用工具,比如 chkconfig(在 Fedora、openSUSE 和相关发行版中使用),update-rc.d(在 Debian 和相关发行版中使用)或者 rc-update(在 Gentoo 中使用),来执行这项工作,如下所示:


 
 
  1. # chkconfig xinetd on  
  2. # update-rc.d xinetd enable  
  3. # rc-update add xinetd default 

仅输入这些命令中的其中一个,或者找到您发行版相对应的命令。

注意,如果没有配置任何服务的话,xinetd 可能拒绝启动。因此,在您还未配置 xinetd 来管理您的 VNC 服务器之前,您可能要推迟启动。

配置 xinetd

应当由 xinetd 管理的服务器会将配置文件放在 /etc/xinetd.d 目录中。因此,要配置 xinetd 来处理 VNC,您应当创建或编辑一个名称类似 /etc/xinetd.d/vnc 的文件。(在某些发行版上,比如 openSUSE,VNC 服务器包会安装这样的一个文件。) 清单 1 提供了一个示例。
清单 1. xinetd 的一个 VNC 配置示例


 
 
  1. service vnc  
  2. {   
  3. disable     = no 
  4. socket_type = stream 
  5. protocol    = tcp 
  6. wait        = no 
  7. user        = nobody 
  8. server      = /usr/bin/Xvnc  
  9. server_args = -inetd -once -query localhost -geometry 1024x768 -depth 16  
  10. type        = UNLISTED 
  11. port        = 5900 
  12.     } 

该条目设置多个 xinetd 选项,其中大多数选项应当保持原样。您需要调整的那些选项包括:

  • service。您可以在多个端口上运行 VNC,其中每个端口都有不同的选项,但是如果您这么做,您应当针对每一个端口在清单 1 中的第一行为 VNC 提供一个不同的服务名称。
  • server。您应当更改该条目以指向您 VNC 服务器的主要二进制文件,通常名为 Xvnc。
  • server_args。几乎可以肯定您会更改其中的一些选项,如前所述。
  • port。VNC 使用编号为 5900 及以上的端口。您可以在具有不同选项的不同端口上运行服务器。如果这么做,您应当分配给每个实例其自己的端口号。

xinetd 配置最棘手的部分是设置服务器参数。您可以使用 清单 1 中的参数作为模型,不过您可能想要更改其中一些参数:

  • -query localhost。该选项告诉 VNC X 服务器查询 localhost 系统以便进行 XDMCP 身份验证。如果您想使用一台计算机作为中继来访问另一台计算机上的程序,您可以更改它。
  • -geometry 1024x768。您可以使用该选项设置 VNC 会话的虚拟分辨率。注意,该分辨率不需要类同于在服务器计算机上运行的常规 X 服务器的分辨率。您可能想要创建以不同分辨率运行的多个条目,以便让用户使用其本地系统便于应用的任何分辨率登录到 VNC 服务器。
  • -depth 16。该选项设置颜色深度。较低的值能够产生较快的显示更新,但是高色彩桌面环境会因颜色工件而受到折损。有效的值介于 2 到 32 之间。

还有许多其他选项,一些随 VNC 服务器的不同而不同。查询您的 VNC 服务器的文档,了解更多内容。

配置 XDMCP 服务器

大部分 Linux 发行版配置其 XDMCP 服务,主要是为了管理本地显示。为了提供远程访问,您必须重新配置您的 XDMCP 服务器,以接受在同一台计算机上运行的 VNC 服务器的请求。具体细节因 XDMCP 服务器而异。Linux 上最常用的三个 XDMCP 服务器是 GNOME Display Manager (GDM)、Light Display Manager (LightDM) 和 KDE Display Manager (KDM)。其他 XDMCP 服务器,比如 XDM,需要接受不同于此处所描述的调整。不管怎么,在重新配置您的 XDMCP 服务器之后,您需要重启它。

编辑 XDMCP 配置文件

如果您不确定您的系统使用哪个 XDMCP 服务器,那么您可以通过搜索字符串 dm 的进程清单来确认它,如下所示:


 
 
  1. $ ps ax | grep dm  
  2.   929 ?        Ss     0:00 /usr/bin/kdm  
  3.   962 tty7     Ss+    0:19 /usr/bin/Xorg -br :0 vt7 -nolisten tcp -auth \  
  4.                            /var/lib/xdm/authdir/authfiles/A:0-pp4shb  
  5.    30157 pts/3    S+     0:00 grep --color=auto dm 

该输出的第一行表明 KDM 正在运行,因此您需要该服务器的配置文件,以便让 VNC 能够使用 XDMCP。大部分 XDMCP 程序均有遵循类似格式的配置文件。它们在方括号中包含根据分段名称确认的分段,比如 [xdmcp]。分段名称后面的行使用等号设置选项,比如enable=true。表 1 总结了在几个常见的 Linux XDMCP 服务器上启用 XDMCP 所必须设置的配置文件名称、分段名称和选项。

表 1. 为各个 XDMCP 服务器的 VNC 启用 XDMCP 支持选项


您可能会在您的配置文件中找到 XDMCP 分段,或者它也可能完全不存在。如果存在,它可能显式地禁用 XMDCP 支持,包含注释掉的选项,或者为空。不管文件的原始状态是什么,您会想要确保存在 XDMCP 分段,并且该支持是启用的。例如,看一下用于启用 XDMCP 的一个 KDM 配置:


 
 
  1. [Xdmcp]  
  2. Enable=true 

一些发行版启用额外的安全措施,对此您可能需要放宽限制。其中一个安全措施就是防火墙。防火墙脚本往往是特定于发行版的,因此请查询您的系统文档,了解如何修改您的防火墙。您应当确保 localhost 能够访问端口 177,而且您的 VNC 客户端能够访问端口 5900(或者您为 VNC 使用的任何其他端口)。

OpenSUSE 使用一个额外的配置文件来控制某些类型的访问,包括 XDMCP 访问:/etc/sysconfig/displaymanager。在文本编辑器中打开该文件,并搜索下面一行:


 
 
  1. DISPLAYMANAGER_REMOTE_ACCESS="no" 


 将该选项改为 "yes"。如果将其保留为 "no",那么在您连接到 VNC 服务器时,则不会显示 XDMCP 服务器的登录提示。该更改在大部分发行版上都不是 必需启用的:只有 openSUSE 使用该文件。

重启 XDMCP 服务器

将 XDMCP 服务器配置为接受远程登录之后,您必须重启它。在通过 SysV init 文件启动 X 的发行版上,比如 Debian 和 Gentoo,您可以传递给它 restart 选项:


 
 
  1. # /etc/init.d/gdm restart 

如果您的系统(比如 Fedora 和 openSUSE)使用运行级别编号启动 X,您就需要切换到一个文本模式运行级别(通常为 3),然后切换回 GUI 运行级别(通常为 5):


 
 
  1. # telinit 3  
  2. # telinit 5  


 要注意,不管是哪一种方法都会关闭 X,因此在继续之前确保保存了 X 会话中所有打开的作业。

测试和调试配置

此时,您应当能够使用 VNC 客户端从一台远程计算机登录了。例如,大部分 Linux 发行版都提供一个名为 vncviewer 的命令;您可以输入:


 
 
  1. vncviewer remotename  

. . . 通过 VNC 登录到 remotename。当 VNC 经过配置且正常工作时,结果类似于 图 4 所示。如果您在不同端口上配置了多个 VNC 会话,您可以指定 VNC 会话编号,方法就是将其作为主机名的一部分传递,如下所示:


     
     
  1. vncviewer remotename:3 

. . . 登录到会话 3(在端口 5903 上)。

图 4. 当配置为使用 XDMCP 时,VNC 提供一个传统的 Linux 登录提示
VNC 中一个传统 Linux 登录提示的屏幕截图 
 

如果在执行该测试时您没有看到一个 XDMCP 登录界面,那么就需要进行一些调试。要检查的内容包括:

  • 如果 vncviewer 报告连接被拒绝,这很可能意味着超级服务器没有在 VNC 服务器计算机上得到适当的配置。检查您的 xinetd配置,尝试重启超级服务器。也有可能是防火墙阻止对 VNC 服务器计算机的访问。
  • 如果 VNC 客户端启动并连接到了服务器,但是您所看到的只是一个灰色屏幕以及一个可随处移动的光标,问题可能出在 XDMCP 服务器配置上。检查之前描述的设置,并重新启动 XDMCP 服务器。
  • 一个通用的故障排除方法就是检查您的日志文件。您可能需要搜索 /var/log 中的所有日志文件,查看是否引用到 xinetd、您的 XDMCP 服务器和您的 VNC 服务器。

VNC 安全隐患

RFB 不是一个安全协议;大多数 VNC 客户端和服务器不对它们的数据进行加密。(虽然 VNC 对其自己的密码进行加密,但是这里描述的方法不使用这些密码。)要对部署 VMC 的地点和方式十分谨慎。如果您希望在一个不安全的网络上使用 VNC,您有三个选择:

  • 使用一个虚拟专用网络 (VPN)。
  • 通过 SSH 通道传输协议。
  • 使用一个支持加密的 VNC 变体,比如 TigerVNC,它启用传输层安全加密。

实现本文所描述的 VNC 登录会至少开启两个通向外界的端口(VNC 端口和 XDMCP 端口)。您可能希望使用防火墙规则同时限制这两个端口,以最大限度地降低滥用的风险。注意,XDMCP 端口(UDP 端口 177)仅需要向 localhost 开放,因此其防火墙规则会相当严格。

结束语

总的来讲,链接 VNC 和 XDMCP 是支持通过远程 GUI 登录到多用户 Linux 计算机的一个非常有用的技术。该方法比在跨平台环境中直接使用 XDMCP 或者在防火墙或 NAT 问题难以解决时使用 XDMCP 更有优势。它比多用户计算机上更加常见的直接 VNC 方法更有益。如果您使用该方法,一定要考虑安全性问题。请准备好设置防火墙规则来限制不需要的外部访问,并且如果您的传输经由不可信赖的网络,请务必使用加密功能。



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

使用 VNC 实现多用户登录 的相关文章

  • Eclipse下C语言的Socket编程(Winsock,gcc)问题总结

    最近心血来潮想从新温习一下C语言 xff08 工作后一直用Java xff0c 其实大学时C语言课程也没好好上 xff0c 正经的代码基本没写过 xff0c 惭愧啊 xff01 xff09 xff0c 找了些小例子 xff0c 修修改改 x
  • 各种哈希函数的java实现

    收集整理 public class HashUtils br private static final int crctab 61 0x00000000 0x77073096 0xee0e612c 0x990951ba br 0x076dc
  • libssl.so.10缺失库文件的解决办法

    libssl so 10缺失库文件的解决办法 在RHEL6 5中对openssl进行了升级 xff0c 如果老版本是OpenSSL 1 0 1e fips 那直接安装最新的openssl 1 0 1g 1 x86 64 rpm就行了 xff
  • Nvidia Jetson Nano入门与使用

    Pre xff1a Nvidia Nano板等了好久 xff0c 国内终于便宜了一点 刚从网上买一个 xff0c 准备替换掉Nvidia TX2开发板 xff08 因为目前的算法在Nano开发板上跑应该没有问题 xff09 打开包装 xff
  • 算法之路(四)----汉诺塔(又称河内之塔)

    汉诺塔是很简单也很经典的算法之一 汉诺塔是根据一个传说形成的数学问题 xff1a 有三根杆子A xff0c B xff0c C A杆上有N个 N gt 1 穿孔圆盘 xff0c 盘的尺寸由下到上依次变小 要求按下列规则将所有圆盘移至C杆 x
  • 相位一致性——利用频域检测边缘

    相位一致性 利用频域检测边缘 一 相位一致性提出的背景 相位一致性的提出是基于科学家发现了人感觉图像的关键不在于图像的长度差或者高度差之类的因素 xff0c 关键在于图像信号的相位大小 xff0c 例如人知道一个方波的边缘 xff0c 并不
  • 图像分割——掩膜法

    电路板是用掩膜法制作而成的 xff0c 现在电路板表面涂上一层抗腐蚀的材料 xff0c 然后再进行处理 xff0c 最后洗去材料就得到了电路 掩膜法在图像处理中的应用 xff1a 可用于分割图像中的特定部分 xff0c 关键在于怎么取膜 例
  • C++ 值传递、指针传递、引用传递详解

    具体内容源自 xff1a http www cnblogs com yanlingyin archive 2011 12 07 2278961 html 以下是简介 xff1a 值传递 xff1a 形参是实参的拷贝 xff0c 改变形参的值
  • MATLAB: 读取同一目录下的所有文件名并按时间排序

    用MATLAB测试图像处理算法的过程中 通常需要读入一个目录下的多张测试图片 可以根据文件命名规则来读入某个特定目录下的所有文件 但是相对比较麻烦 通过利用MATLAB自带的dir 可以先读入所有的文件名字 知道文件数量 而且不用知道文件的
  • 相机模型(Camera Model)

    Perspective Camera Model Perspective Camera Model 或 Pinhole Camera Model都是简单但是应用广泛的模型 xff0c 描述了将物体从3D世界坐标系转换 xff08 World
  • Solid Compression

    定义 Solid Compression是一种多文件的数据压缩方式 xff0c 其中所有未被压缩的文件是一个整体 xff0c 视为一个独立的data block 这样的文件称为solid archive 7z RAR压缩格式和tar bas
  • 区分AR、VR、MR、CR

    终极扫盲贴 xff1a VR AR MR CR到底如何区分 xff1f
  • (2016/02/19)多传感器数据融合算法---9轴惯性传感器

    2016年2月18日 传感器的原理 加速度计 xff1a 加速度计 我们可以把它想作一个圆球在一个方盒子中 假定这个盒子不在重力场中或者其他任何会影响球的位置的场中 xff0c 球处于盒子的正中央 你可以想象盒子在外太空中 xff0c 或远
  • 【tx2】——NVIDIA TX2--3--NVIDIA Jetson TX2 查看系统版本参数状态及重要指令

    NVIDIA Jetson TX2 查看系统参数状态 当前博主的TX2更新的版本为 xff1a Jetpack 3 3 cuda 9 0 252 cudnn7 0 opencv3 3 1 TensorRT4 0 2 系统内核 xff1a t
  • 训练深度学习模型时电脑自动重启

    文章目录 问题可能原因解决方案 问题 前面用自己的台式机利用GPU训练模型的时候 xff0c 电脑老是自动重启 xff0c 当时试了各种方法 xff0c 找了各种原因 电脑配置 电脑买的是二手的 xff0c xff08 强烈建议买新的 xf
  • 华为机试题[2017.8.23]

    题目 xff1a 给定一个正整数 xff0c 给出消除重复数字以后最大的整数 输入描述 xff1a 正整数 xff0c 注意考虑长整数 输出描述 xff1a 消除重复数字以后的最大整数 下面的好像有问题 xff0c 当输入是4325432时
  • Kubernetes(k8s)中dashboard的汉化

    1 访问服务器的http 192 168 110 133 8080 ui地址 xff0c 如下所示 xff1a 使用dashboard版本registry cn hangzhou aliyuncs com google containers
  • docker + Rancher + guacamole 容器环境搭建并配置vnc连接

    Rancher 43 guacamole 容器环境搭建 准备环境 xff1a docker ce 17 01 43 43 centos7 x 43 guacamole 最新版0 9 14 43 Rancher 搭建完成效果 xff1a 1
  • C语言习题(1)——字符串拷贝,去空格,奇偶抽取字符串

    1 字符串拷贝 作者 xff1a 一叶扁舟 作用 xff1a 字符串的拷贝 时间 xff1a 18 25 2017 5 1 include lt stdio h gt include lt string h gt include lt st
  • 基于安卓平台的滤镜功能相机

    1 1需求背景 爱美之心 xff0c 人皆有之 我们拍照是为了留住一个美好的瞬间 Android自带的相机拍照效果满足不了人们的爱美心理 xff0c 而且比较单一 xff1b 因此为了解决这个问题我们研 发 滤镜功能相机 滤镜功能相机主要基

随机推荐

  • 威廉·巴特勒·叶芝:“我们是最后的浪漫主义者”

    喜欢叶芝是一件很文艺的事情 叶芝的诗滋润了无数少男少女的情怀 在叶芝被茅德 冈 嫌弃的这一生中 我们不知道他是否曾经后悔 我感动了全世界 却感动不了你 但至少 他的诗 感动了后世无数人 题记 多少人曾爱你青春欢畅的时辰 爱慕你的美丽 假意或
  • Javassist即时编译技术,热修复核心与原理

    Java 字节码以二进制的形式存储在 class 文件中 xff0c 每一个 class 文件包含一个Java类或接口 Javaassist 框架就是一个用来处理 Java 字节码的类库 它可以在一个已经编译好的类中添加新的方法 xff0c
  • ubuntu系统编译安装

    Ubuntu程序安装是个很好理解的 xff0c 这里我发表一下个人理解 xff0c 下面就这就来讲术Ubuntu编译安装 Ubuntu编译程序新手指导Ubuntu 团队对它的使用者公开的承诺 Ubuntu 永远免费 并且对于 34 企业版本
  • Android Launcher浅析(一)

    Launcher桌面的一大功能就是支持左右滑动 xff0c 这样的功能在现在的应用中使用非常广泛 xff0c 并且有很多实现的方式 xff0c 可以通过使用Fragment来实现也可以通过自定义的控件来实现 Launcher采用了后者 xf
  • Android OTA升级

    1 xff0c Build otapackage后system img没有打包进去 xff1f Ota包里面缺失system img xff0c 原因是客户修改了prop里面的 ro product device value值 尝试以下两种
  • Android Launcher浅析(三)

    Launcher是系统启动后第一个启动的程序 是其它应用程序的入口 也就是我们的手机程序的桌面程序 一 Launcher的定义及构成 xff1a lt 1 gt 通过查看官方提供的Launcher源码可以知道其实Launcher也是一个Ac
  • 在Java中,return null 是否安全, 为什么?

    Java代码中return value 为null 是不是在任何情况下都可以 xff0c 为什么不会throw NullPointerException Java语言层面 xff1a null值自身是不会引起任何问题的 它安安静静的待在某个
  • 有一个文科女友是一场怎样的体验?

    1 我是一枚标准的工科男 xff0c 毕业后变成了加班狗程序猿 xff0c 我的女朋友是一枚标准的文科妹子 xff0c 这里姑且叫她miss梁吧 xff0c 我觉得以她的智商来看 xff0c 她应该是单细胞动物 xff0c 但是不知道她是怎
  • activity的startActivity和context的startActivity区别

    我们以 startActivity Intent 这个最常用的 api 来讲 1 首先 xff0c Context 类有一个 abstract 方法 Same as 64 link startActivity Intent Bundle w
  • android平台下移动DM接入流程?

    中国移动拟建设终端管理与服务系统 通过对终端产品的激活 配置使用等信息的收集 结合终端公司对产品的供应链管理 实现产品全生命周期的掌控 要求2017年3月起 所有入中国移动产品库的定制 非定制Android终端均要支持终端管理功能 必选要求
  • C++经典面试题(九)

    最近看一些面试题 xff0c 觉得如果自己被问到了 xff0c 并不能很利落的回答出来 一是从来没有这个意识 xff0c 二是没有认真的梳理下 下面对这些题做出分析 xff0c 哈 xff01 个人能力有限 xff0c 其中难免有疏漏 xf
  • 我的大学——学习生活总结

    纪念我终将逝去的青春 大一上學期 專業 1 C語言K amp R amp amp 習題 2 C語言經典習題 3 C語言趣味習題 4 C陷阱与缺陷 5 彙編語言 6 C 43 43 程序設計 7 C 程序設計
  • latex论文作图(python+matplotlib)

    20210425 0 引言 论文中进行作图 xff0c 需要对图片中的各种元素进行控制 xff0c 最近在论文写作过程中为了能够得到匹配文章的高质量图片 xff0c 也是花了很多心血 除了对图片中的风格进行控制 xff0c 另一方面比较重要
  • SAP结转方法:表结法、帐结法

    SAP 处理会计期间结帐方法主要有两种方法 xff1a 表结法和帐结法 国内在会计期末结帐大都采用 帐结 的方法 xff0c 而 SAP 一般都是采用 表 结 xff0c 通过财务报表的编制来披露当期利润 xff0c 即 xff1a 销售科
  • V4L2读取摄像头YUYV(YUV420)帧后使用C语言转存为bmp格式

    摄像头配置读取一帧YUV420 xff08 YUYV xff09 保存为RGB24图像 BRG的顺序 xff0c bmp 下面是内存中摄像头读取的数据直接转存为RGB图片的源码 输入 xff1a 图像指针地址 xff0c 图像长度 xff0
  • Linux内核系统调用原理与实现

    解决什么问题 Linux系统调用主要是操作系统实现的应用编程接口 xff0c 简单的说就是linux内核提供对外 对于应用程序 的接口函数 xff0c 进程通过调用系统调用完成自身的功能 系统调用在每个平台的实现方式都不同相同 xff0c
  • Docker容器基础

    1 介绍 Docker官网 xff1a https docs docker com Docker的github地址 xff1a https github com moby moby Dockerhub官网 https registry hu
  • 【自动驾驶】常见位姿估计算法的比较: 三角测量、PNP、ICP、

    PnP问题 3D 2D DLT 直接线性变换算法 相机标定工程用到的是DLT 直接线性变换算法 xff0c 它是一类PnP问题 3D 2D 请参考 位姿估计 视觉SLAM 笔记 常见位姿估计算法的比较 PnP xff08 Perspecti
  • CC2530 BootLoader,不带协议栈,任意跳转

    最近业余研究了下CC2530的远程固件更新 空中下载 现做个总结 一则方便大家学习共进 二则自己做个记录以防日后忘了 一 BootLoader主要技术点 nbsp nbsp 1 程序跳转到指定位置 nbsp nbsp 2 设置好相应的中断向
  • 使用 VNC 实现多用户登录

    Virtual Network Computing VNC 是一种提供计算机远程访问的流行工具 常规的 VNC 配置是针对单用户工作台而进行优化的 xff0c 可登录到 VNC 端口直接访问单一用户的桌面 然而 xff0c 这一配置在多用户