写在前面:在经历了各种尝试和试错之后,发现并总结出了比较合适、安全且合理的NVIDIA驱动安装方案,本教程基于Fedora linux发行版,rhel,RockyOS等基本完全相同,deb系及其它linux发行版大同小异,本教程基于NVIDIA官方run包安装方式,尽可能把每一个过程和选择讲述清楚,请大家看完全篇再上手尝试。由于BIOS UEFI Secure Boot的存在使得安装NVIDIA driver并不是像一般的教程直接运行run包或者使用rpmfusion里的[akmod-nvidia] or [xorg-x11-drv-nvidia-cuda]就行。

在linux下安装NVIDIA 驱动方法有多种多样,经过我的测试,还是官方提供的闭源驱动run包是最流畅且占用GPU资源最合理的方法,所以该教程只记录官方run包的安装方式。

如果你是个懒人,实在懒得探究run包或者使用run包安装失败了,在文章最后的最后也会给出rpm包的解决方法。

在总结这篇教程之前,我经历过无数次的失败,虽然心里非常想“F**k you ,nvidia”,但是本着独乐乐不如众乐乐的原则,还是把过程分享出来比较合适。

环境及效果展示:

Fedora37操作系统

NVIDIA driver works successfully.

NVIDIA settings

一、搭建环境

由于构建编译NVIDIA官方提供的run包以及需要给NVIDIA driver签名需要一些工具,所以先进行rpm包的安装。安装NVIDIA驱动属于系统级别的改动,所以以下所有的操作都需要在root下进行!

dnf groupinstall "Development Tools"
dnf update
dnf install kernel-headers kernel-devel
dnf install kmodtool akmods mokutil openssl dkms

如果出现找不到任何一个rpm包的情况,请添加清华源、ustc源、阿里源等,这些并不是冷门的包。

二、下载官方run包

首先要明确用的是什么显卡:

1、在neofetch那里就已经显示了当前的显卡(图片在前面)

2、使用lshw -c video查看

3、 使用lspci|grep -i vga查看

4、在系统设置中查看

进入NVIDIA官方页面下载linux版的驱动

官方驱动 | NVIDIA

根据自己的情况选择正确的NVIDIA驱动。注意如果你是笔记本显卡,可能要选notebook版本,操作系统应选择Linux。如果显卡填错了,会给出错误的显卡驱动,会影响显示效果。

其中,下载类型有生产分支和新功能分支,建议两个都试一遍然后选择版本更高的那个,一般高版本更加合适。

下载之后会取得上图所示的一个run包,这里面装着的就是我们的NVIDIA 驱动了。文件名称中就是版本号(525)了,不同级别的NVIDIA显卡有不同有级别的驱动,不仅仅是linux版的驱动,Windows版本也是同样分级。一般来说NVIDIA公司对Windows版驱动比较上心,所以同样的显卡,以我的1660Ti为例,Windows上官方提供的显卡驱动版本号就高一些。版本号越高,意味着显卡所能实际发挥性能就越强。所以上面强调要选择版本号更高的显卡驱动。

然后把下载下来的run包移动到root目录下。由于NVIDIA对LInux的适配力度并没有像WIndows那么大,所以基本只要下载这一次就好了,它一般不会更新,所以一次性下载好以后就不需要再访问NVDIA官网了,少“F**k you ,nvidia”一次也不错。

接下来我们要来查看自己的电脑BIOS是否开启了安全启动模式,这也是linux安装nvidia驱动里最坑人的地方。

有如下两种方式在linux系统内查看是否开启了安全启动模式。

主板BIOS的安全启动情况,建议要打开它,不然的话安装NVIDIA驱动之后Fedora就不正常了。也就是要保持enable然后进Fedora,如果已经是enable那就不用调节;如果是disable,也要调成enable.

这个安全启动的意义,我会在后记那里说明一下。

三、禁用nouveau开源显卡驱动

在NVIDIA显卡上如果没有安装闭源驱动,那么默认使用的就是nouvea开源驱动。

nouveauhttps://nouveau.freedesktop.org/以上为nouveau官网。

nouveau(英语:/nuːˈvoʊ/) 是一个自由开放源代码GPU驱动程序,是为Nvidia的GPU所编写,也可用于属于系统芯片的高通系列,此驱动程序是由一群独立的软件工程师所编写,Nvidia的员工也提供了些微的帮助,微软也提供了很大的帮助,谷歌也不甘示弱地提供了尽可能多的帮助。

nouveau只是入门级别的显卡驱动,也就是仅仅在勉强够用的水平,在这种情况下是不能完全发挥nvidia显卡的优势的。

所以我们在安装nvidia驱动之前必须禁用它,不要慌,完全没有nvidia驱动的情况下也是能进图形化界面的,只是拿CPU硬算会比较卡。

vim /etc/modprobe.d/blacklist.confblacklist nouveau
options nouveau modeset=0
vim /etc/default/grub在GRUB_CMDLINE_LINUX那一项里加入一句代码:
rd.driver,clacklist=nouveau nouveau.modeset=0

最终效果:

在禁用模块和启动引导里同时禁用nouveau驱动。

grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

根据/etc/default/grub的情况重新制作启动引导配置文件,然后重启

lsmod|grep nouveau

重启之后使用以上指令查看nouveau显卡驱动模块是否被加载,最后没有出现任何模块就对了!

这里必须保证没有任何模块显示出来,如果还有那就是失败了。

四、安装NVIDIA显卡驱动

我们安装的步骤从现在开始。

systemctl isolate multi-user.target

输入以上指令后会进入多用户界面,就是纯命令行界面。首先输入用户名,这里我们用root,然后输入密码,就以root的身份登录了。

chmod +x NVIDIA-Linux-x86_64-525.85.05.run
./NVIDIA-Linux-x86_64-525.85.05.run

给安装包执行权限然后执行,run包最前面是shell脚本所以直接运行就好了。我把run包的执行过程拆解一下方便大家理解。

1、运行后在命令行界面会出现.....的进度条

Uncompress NVIDIA driver 这是在解包,后面我会讲一讲解包出来的东西是什么。

2、进度条读完之后会进入NVIDIA驱动的安装界面,以蓝色调为主,看起来比较安心。

Building kernel modules 此时在构建编译NVIDIA驱动linux内核模块,所以需要“Development Tools”组提供gcc等编译器。编译完成后Continue。

3、提示是否要给编译好的NVIDIA 模块签名

由于签名几步比较关键,为了读者的用户体验,我把这段提示手打出来了。

The target kernel has CONFIG_MODULE_SIG set which means that it supports cryptographic signatures on kernel modules.On some systems,the kernel may refuse to load modules without a valid signature from a trusted key.This system also has UEFI Boot enabled; many distributions enforce module signature verification on UEFI systems when Secure Boot is enabled. Would you like to sign the NVIDIA kernel module?

select:

        Sign the kernel module     or     Install without signing

目标内核设置了CONFIG_MODULE_SIG,这意味着它支持内核模块上的加密签名。在某些系统上,内核可能拒绝加载没有来自可信密钥的有效签名的模块。此系统还启用了UEFI引导;当启用安全引导时,许多发行版在UEFI系统上强制执行模块签名验证。是否要签署NVIDIA内核模块?

我们知道,linux是典型的模块化的宏内核操作系统,在加载安装nvidia内核模块的时候由于Uefi Secure Boot的阻拦,我们必须给该模块签名,如果不签名则无法加载。

所以我们这里选择“Sign the kernel module”,给我们的NVIDIA内核模块签名以免被安全启动阻拦。

4、生成签名密钥

Would tou like to sign the NVIDIA kernel module with an existing key pair,or would you like to generate a new one?

select:

        Use an existing key pair     or     Generate a new key pair

首次安装时务必选择“Genrate a new key pair”,它会自动生成NVIDIA模块的签名密钥,我们将来要把它交给UEFI Secure Boot审核。非首次安装的时候,也就是密钥文件以及存在的情况下,可以选择“Use an existing key pair ”,选择这个选项,它会提示你输入密钥文件存储的位置。

那么实际上我们这里的  /usr/share/nvidia/nvidia-modsign*.der  就是它索要的密钥文件,首次安装的时候没有这个文件,首次安装后选择generate才生成的这个文件。

5、删除私有的签名密钥

The NVIDIA kernel module was successfully signed with a newly generated key pair .Would you like to delete the private signing key?

select:

        Yes     or     No

因为我们上面选择了生成,所以这里删除私有签名密钥就好了。

做出选择之后

An X.509 certificate containing the public signing key will be installed to /usr/share/nvidia/nvidia*.der . ..................此处省略一万字.......................

This certificate must be added to a key database which is trusted by your kernel in order for the kernel to be able to verify the module signature.

select:

OK

必须将此证书添加到内核信任的密钥数据库中,以便内核能够验证模块签名

根据以上提示,虽然我们一厢情愿地想安装NVIDIA驱动.但是Linux kernel和UEFI Secure Boot并不领情,不相信我们的NVIDIA kernel modules sign.没有关系,这个我们选择第一项“Install signed kernel module”就好了,具体操作我后面会讲。

这里问我们是否要安装NVIDIA 32位兼容库,我们选择Yes就好。 

6、选择是否注册DKMS

dkms我们最前面已经安装过了。

DKMs以文件的形式存储并能在系统运行过程中动态地加载和卸载。DKMs由一个用户层的DKM服务器来管理,并非由内核来管理。当核心需要某模块时,由DKM服务器负责把相应的DKM加载;当核心的内存资源紧缺时,由DKM服务器负责卸载一个没有被使用的DKM。

dkms这个工具的作用就是动态加载内核模块,在NVIDIA的提示下,它的大致作用是在你安装新的linux kernel的时候dkms会自动帮你编译安装nvidia驱动模块到你的新内核。这里可以选择Yes或者No,本人测试更新内核的时候,在新内核里并没有自动加上nvidia驱动。这里讲一下选择Yes的情况,选择No的话就直接进入下一步了。

选择Yes后会提示错误,不要慌,虽然它是ERROR,但它并不会影响你安装NVIDIA驱动。我这里建议你把这个提示错误的界面给拍下来,等到后面我们还有用的。

直接OK就好了,没有大碍。

7、修改X的配置文件

选择Yes即可,让NVIDIA驱动帮你自动修改X和grub2的配置文件,就不要自己去改了。

接下来就已经退出NVIDIA驱动的安装界面了,会重新回到命令行界面,如果以上步骤和我讲述的不一样直接提示错误导致退出,可以重新运行NVIDIA驱动安装包,多次尝试。

8、安装NVIDIA驱动之后操作

这里千万不要直接重启,我们还有一些善后事宜要做的。

akmods --force #确保内核模块已编译
dracut --force #确保引导映像已更新
mokutil --import /usr/share/nvidia/nvidia*.der #手动签名NVIDIA驱动
它会提示要你输入一串密码,然后again,这里要记住你输入的密码,一会儿要用到它grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

特别是第三步,非常重要,因为前面提示签名错误,我们这里可以手动签名,所以前面提示错误也无妨。注意:如果你没有打开安全启动,那么就不需要签名这个步骤,NVIDIA驱动也大概不会给你这个.der文件,所以直接跳过mokutil就好了。

输入的那串密码一定要记住,很快就要用到了。

五、重启并验证NVIDIA驱动

重启之后会出现如下界面,不要慌,根据它的提示按下任意键即可。不要一直停留,不然界面消失的话,我们得在linux中重复 mokutil --import /usr/share/nvidia/nvidia*.der 这个步骤然后重启。

选择“Enroll MOK”

选择Yes

这里要写上刚才记录的密码。

reboot重启

重启之后就回到了熟悉的grub2的启动引导界面,然后进入Fedora,就有NVIDIA驱动了。

在terminal输入nvidia然后两个Tab就能显示NVIDIA提供的命令了。

nvidia-smi是官方提供用来监控nvidia显卡情况的工具;nvidia-settings用来设置显卡;nvidia-uninstall用来卸载显卡驱动。

然后就可以开始愉快地玩耍啦。

可以看到,从开源的nouveau驱动切换到了官方闭源的nvidia驱动,显示效果会好很多很多。

六、后记

前面还挖了几个坑,我们来填一下。

首先是dkms报错的问题,我前面说如果报错的话可以把报错信息给拍下来,这里说一下这个东西怎么用。

以上是报错信息,上面给出了执行的代码和错误建议。我们安装好NVIDIA驱动之后可以根据建议再次执行这行代码。

/usr/sbin/dkms install --no-depmod -m nvidia -v 525.85.05 -k 6.1.9-200.fc37.x86_64 --force

这是我的提示代码,大家可以根据自己的报错信息去执行提示的代码。

可以看到注册成功了,确实出现了extra目录。

大家注册dkms后可以观察一下,更新linux kernel的时候是否会自动编译安装nvidia闭源驱动的模块,如果没有自动安装也不要急。我们不需要卸载再安装nvidia驱动,只需要按照步骤再来一遍就好了,从运行run包开始。如果有水平高的小伙伴可以写一个自动编译安装nvidia驱动模块的脚本。

我们再来看看NVIDIA官方提供的run包解包出来的是什么。

实际上,-x选项可以把run包给解出来 。里面是一堆动态链接库,压缩包和可执行文件,这些就是run包的本来面目,以及安装NVIDIA闭源驱动后产生的那些以nvidia开头的命令皆来自这里。

2.1.2  Linux/FreeBSD Exception.  Notwithstanding the foregoing terms
of Section 2.1.1, SOFTWARE designed exclusively for use on the Linux or
FreeBSD operating systems, or other operating systems derived from the
source code to these operating systems, may be copied and redistributed,
provided that the binary files thereof are not modified in any way
(except for unzipping of compressed files).

2.1.3  Limitations.

No Reverse Engineering.  Customer may not reverse engineer,
decompile, or disassemble the SOFTWARE, nor attempt in any other
manner to obtain the source code.

No Separation of Components.  The SOFTWARE is licensed as a
single product.  Its component parts may not be separated for use
on more than one computer, nor otherwise used separately from the
other parts.

2.1.2 Linux/FreeBSD异常。尽管有上述条款

第2.1.1节,专为Linux或

FreeBSD操作系统,或衍生自

这些操作系统的源代码可以被复制和重新分发,

前提是其二进制文件未以任何方式修改

(压缩文件解压缩除外)。

2.1.3限制。

无逆向工程。客户不得逆向工程,

反编译或反汇编软件,也不尝试任何其他

获取源代码的方式。

无部件分离。本软件作为

单一产品。其组成部分不得分开使用

在多台计算机上,也不能与

其他部分。

温馨提示:这是NVIDIA闭源驱动,里面的LICENSE也不是开源的,所以这里面的东西看可以,但不要拿去搞逆向和反编译,也不能擅自修改二进制文件,只能在官方的基础上加上自己脚本什么的方便安装或者自动安装。切记不要搞逆向,否则会涉及侵权!

NVIDIA run包的命令参数如下:

参数 作用
--info 打印驱动程序信息
--check 检查存档完整性
-x 解包
-A 打印常用命令行选项和高级选项的使用信息
--no-rpms 取消与rpm包冲突的检查
--no-opengl-files 不安装openGL相关的文件
--no-wine-files 不安装wine驱动相关的文件
--dkms 使用dkms
--no-dkms 取消dkms
--no-check-for-alternate-installs 跳过对备用驱动的检查
--no-unified-memory 不需要CUDA
--skip-depmod 驱动安装后不自动运行depmod
--no-systemd 禁用systemd单元的安装
--no-nouveau-check 不检查nouveau模块是否被加载
--disable-nouveau 不禁用nouveau
--kernel-modules-only 仅安装内核模块,不要卸载现有驱动程序
--silent 静默模式,不询问
--sanity 对现有NVIDIA驱动程序安装执行基本的健全性测试
--expert / -e 专家模式

--no-questions / -q

不要问任何问题;对于所有是/否问题,都假定默认值(通常为“是”),并且在提示用户输入字符串的任何情况下都假定默认字符串

最后说明一下如果安装NVIDIA闭源驱动失败如何退回nouveau.

su -
nvidia-uninstall
rm -rf /etc/modprobe.d/blacklist.conf
vim /etc/default/grub
把之前添加的和NVIDIA添加的代码删除grub2-mkcofig -o /boot/grub2/grub.cfg
rebootlsmod|grep nouveau

那么如何判断显卡驱动安装失败?

我给出一下几种情况,如果符合你的实际情况,那么就可以认为你安装失败了。当然必须在确保你的每一步都没有错误的情况下。

1、重启后,在Fedora启动界面出现:
Fedora 37 NVIDIA kernel module missing. Falling back to nouveau

这句话的时候,这意味着NVIDIA驱动安装失败了,可以尝试重装或者回退到nouveau.

2、启动成功,但是进去之后进入了纯命令行界面,没有进桌面。

以root身份登录然后执行以下代码

systemctl isolate graphic.target
startx

如果报错了,那么就卸载nvidia闭源驱动再次进入Fedora,NVIDIA闭源驱动的卸载器(nvidia-uninstall)会自动帮你把配置文件改回去,不用自己去改。

很多带虚拟化程序在nouveau和nvidia驱动下工作方式和策略是不一样的。

比如flatpak ,安装NVIDIA 525驱动之后,它也要跟着安装这个环境(org.freedesktop.Platform.GL.nvidia-525-85-05),不然就不能正常工作了。

NVIDIA 容器工具包允许用户构建和运行 GPU 加速的 Docker 容器。该工具包包括一个容器运行时库和实用程序,可自动配置容器以利用 NVIDIA GPU。

产品文档包括体系结构概述、平台支持、安装和使用指南,可在文档库中找到。

常见问题解答可在wiki上找到。

再比如使用docker运行GUI程序也可能报错 ,需要NVIDIA和docker配合的引擎。

GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUsBuild and run Docker containers leveraging NVIDIA GPUs - GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUshttps://github.com/NVIDIA/nvidia-docker

安全启动的意义

可能有很多小伙伴们会认为:这个UEFI Secure Boot真是太可恨了,本来安装个显卡驱动只是点击下鼠标、写几个命令就好的事情居然被搞得这么麻烦。

那么其实这个安全启动是很有意义和必要的。

https://uefi.org/sites/default/files/resources/Improving%20Platform%20Security%20with%20UEFI%20Secure%20Boot%20and%20UEFI%20Variables_20160318.pdfhttps://uefi.org/sites/default/files/resources/Improving%20Platform%20Security%20with%20UEFI%20Secure%20Boot%20and%20UEFI%20Variables_20160318.pdf

趣话安全启动:迷思与启示 - 知乎最近终于沉下心读完了当年明月大作《明朝那些事》。说实话,当朋友推荐这本书时,我的内心是拒绝的,多么低俗的笔名和书名!看过黄仁宇先生《万历十五年》等书和钱穆先生的大作的我,怎么也要读某些古籍书才更加合…https://zhuanlan.zhihu.com/p/30136593

SecureBoot - Debian Wikihttps://wiki.debian.org/SecureBootUEFI Secure Boot - Understanding the UEFI Secure Boot Chainhttps://edk2-docs.gitbook.io/understanding-the-uefi-secure-boot-chain/secure_boot_chain_in_uefi/uefi_secure_boot我这里放几个链接,其中有官方的解释,也有民间大神的说法。

那么,对操作系统有所了解的同学应该很清楚一点,操作系统对于驱动程序级别的病毒是很难管控的,上层应用程序级别的杀毒软件更是拿它没有办法。所以为了操作系统安全,在加载驱动模块的时候要加一把锁,也就是说只有通过签名(被UEFI和kernel认可)的模块才能被成功加载,那些没有被认可的,一律不加载,万一它是一个带病毒的驱动呢?万一是被用心不良的人放进来的呢?这都不好说,所以要加上这么一把锁。

下面是nvidia driver rpm package的解决方法。

我用过rpm包和run包的驱动,发现rpm包虽然安装更加方便,但是显示效果有时候可能会不如nouveau,这里可能是版本或者显卡的原因,并且使用rpm的驱动会导致GPU占用过高,当然闭源驱动提供的那几个命令还是正常使用的。

以下是完整的解决方案:

dnf groupinstall "Development Tools"
dnf update
dnf install kernel-headers kernel-devel
dnf install kmodtool akmods mokutil openssl dkmsdnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpmdnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpmdnf -y install kmod-nvidia
dnf install xorg-x11-drv-nvidia-cudakmodgenca -a #生成签名密钥mokutil --import /etc/pki/akmods/certs/public_key.der
#同样地,输入一串密码并记住akmods --force
dracut --forcegrub2-mkconfig -o /boot/grub2/grub.cfgreboot

重启后进入那个蓝色界面,那串密码也要输入进去,然后就能进入系统了,NVIDIA driver module也能通过UEFI Secure Boot的审核。

如果rpmfusion访问有困难的话请参考以下连接:

RPM Fusion 源使用帮助 — USTC Mirror Help 文档

rpmfusion | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

rpmfusion镜像_rpmfusion下载地址_rpmfusion安装教程-阿里巴巴开源镜像站

使用rpm包的方式会自动匹配显卡驱动的版本号,就不需要自己去搜索和指定了。

如果想卸载通过rpm包的方式安装的NVIDIA驱动也很方便。

dnf history
#找到安装的那几条命令dnf history undo num
#撤销这几步

num是一个数字,是命令前面的标号。

或者也可以直接卸载。

dnf remove $(rpm -qa|grep nvidia)

在Fedora上安装NVIDIA驱动详细教程及解析相关推荐

  1. ubuntu15.04配置php,Linux_Ubuntu 15.04上安装Justniffer的详细教程,Justniffer 是一个可用于替代 Snor - phpStudy...

    Ubuntu 15.04上安装Justniffer的详细教程 Justniffer 是一个可用于替代 Snort 的网络协议分析器.它非常流行,可交互式地跟踪/探测一个网络连接.它能从实时环境中抓取流 ...

  2. 在Ubuntu18.04上安装Nvidia驱动

    拿到了一台新机子,带显卡的那种,当然是各种倒腾了!于是我又一天装了三遍机子来进行各种尝试熟悉配置啥的. 所以首先是在裸机上安装Nvidia驱动. 环境:Ubuntu18.04 刚安装完系统,当然是把软 ...

  3. linux 用pe安装win7系统,在U盘PE上安装Linux操作系统的详细教程

    熟悉安装系统的朋友知道PE可以安装Windows系统,而U盘PE也可以安装Linux操作系统,但是仍有很多朋友仍然不知道U盘PE安装Linux的步骤. 操作系统. 因此,今天,U Daxia的编辑将与 ...

  4. 如何在centos上安装nvidia驱动

    首先查询服务器的gpu型号 [kfk@bigdata-pro01 ~]$ lshw -C display WARNING: you should run this program as super-u ...

  5. 在WinXP操作系统上安装Tornado2.2详细教程

    前沿 使用VxWorks的人都想在自己的电脑中装VxWorks的编译器Tornado,然而Win10操作系统对于Tornado并不友好,根本装不成功.而对于Win7操作系统,之前在实验室一台Win7上 ...

  6. Ubuntu18.04上安装ROS的详细教程

    文章目录 前言 一.环境配置 二.安装步骤 1.添加ROS软件源 2.添加密钥 3.更换软件源 4.安装ROS 5.初始化rosdepc 6.设置环境变量 7.安装 rosinstall 8.验证RO ...

  7. 如何使用计算机网络打印机,如何在电脑上安装网络打印机?详细教程全部教给你!...

    打印工作在我们平时的工作当中,每天都会有大量的需求.不管是打印总结报告.销售业绩,还是报销凭证,打印功能可以说在我们的生活当中必不可少,也不可缺失. 然而我们平时在打印的时候,往往需要在电脑上运用打印 ...

  8. 在不同操作系统上安装Python的详细教程

    Windows 打开Python官方网站(https://www.python.org/downloads/)并下载最新版本的Python. 选择适合您操作系统的版本.如果您使用的是64位的Windo ...

  9. Linux上安装MySQl超详细教程(CentOS系统)

    目录 一.CentOS6.x 版本的yum镜像安装 二.yum联网安装MySQL (一)直接安装 (二)间接安装 三.下载.tar文件安装MySQL 四.卸载MySQL 一.CentOS6.x 版本的 ...

最新文章

  1. 2022-2028年中国汽车制动器行业投资分析及前景预测报告
  2. mint 15用fcitx框架安装中文谷歌输入法
  3. 我的服装DRP之开发感悟
  4. MySQL高级-MySQL查询缓存优化
  5. jstat命令查看jvm的GC情况 (以Linux为例)
  6. Android安卓手机版Kindle字体修改
  7. 1、misa统计SRR结果
  8. 属性详解(@property/@dynamic/@synthesize)
  9. 基于多重继承与信息内容的知网词语相似度计算 - 论文及代码讲解
  10. va_start函数的使用
  11. 计算机C P U的概念就是,2008计算机二级考试:C语言基础教程-C语言的特点
  12. dyt说反话(注意字符串输入)
  13. Java程序员职业发展规划和方向
  14. 无线数传模块DTU终端
  15. uni-app项目的收获及心得体会
  16. 浏览器不支持flash插件之后,h5播放rtmp直播流的解决方案
  17. 《人人都是产品经理》知识点总结
  18. 流利说林晖:AI+ 教育的头号玩家,这盘棋怎么玩?
  19. deepin安装mysql
  20. python无法import pyzbar(No module named ‘pyzbar‘)

热门文章

  1. 创建DAO模式的步骤
  2. win7下u盘安装ubuntu14.10双系统
  3. Coffee and Coursework
  4. 2022年A特种设备相关管理(电梯)考试模拟100题及答案
  5. Uncaught SyntaxError: missing ) after argument list 解决办法
  6. 枚举法用什么算法结构计算机,计算机常用算法枚举算法2-2014
  7. 计算机管理windows无法访问指定设备,windows无法访问指定设备路径或文件如何解决...
  8. Fedora安装MySQL
  9. Web前端,CSS中的浮动、清除浮动
  10. 请介绍一下三地菩萨,再说一说,要证悟什么才能称之为三地菩萨.谢谢.