深度学习环境配置:华硕主板的Win 10 + UEFI + GPT条件下且在SSD + HDD双硬盘下安装Ubuntu+Gtx 1080Ti显卡驱动 + CUDA 9.1 + Cudnn 7.1..._华硕主板匹配cu-程序员宅基地

技术标签: CUDA  tensorflow GPU  win10 ubuntu  

本文写文章日期为2018.03.13
  因为买电脑自带了win10系统,自己就没有重新安装win10,而是在原win10环境下分割一个磁盘来安装ubuntu16.04,本人电脑GPU为Gtx 1080Ti显卡,要注意的是显示器连接线是直接与Gtx 1080Ti显卡连接,而不是连接主板上的接口!电脑配置见下图。我的硬盘是双硬盘一个256G的SSD固态硬盘,一个2T的HDD机械硬盘,现在win10是安装在SSD上,我准备把ubuntu也安装在SSD上。


  以前用的电脑都是BIOS+MBR,以前装的双系统基本都Win7和ubuntu16.04,而这次是在win10下且是在UEFI + GPT条件下安装ubuntu16.04,所以在动手之前google了很多最新教程,避免了很多坑,感谢那些善良的人!

一、安装前准备

1.安装EasyUEFI

通常使用BIOS+MBR构架的双系统需要使用EasyBCD软件来添加启动项,使用UEFI需要EasyUEFI。在win10下先安装EasyUEFI以便于以后在win10下管理启动项以及删除ubuntu系统。

2.制作Ubuntu 16.04LTS启动盘

3.禁用UEFI安全启动、关闭快速启动

4.为Ubuntu系统分配硬盘空间

  • 如果需要,用DiskGenius或者分区助手对各个硬盘大小进行调整
  • “鼠标右键计算机—>管理—->磁盘管理—->选中盘符右键—->压缩卷 ”
    压缩出最少60G(空间太小,等会分区的时候很难分配,而且会运行慢)的空间出来,不要分配盘符,直接让其处于空闲或未分配状态即可。这个未分配的空间就是我们将来的ubuntu系统的安装使用空间。我压缩了130g固态硬盘空间用于安装ubuntu。

二、安装ubuntu 16.04

swap交换空间:8G
efi系统分区 :512M
挂载“/” :30G
挂载“/usr” :35G
挂载“/home”:51G

因为我参考了下面:

1.swap交换空间,相当于Win中的虚拟内存,通常需要划分对应物理内存2倍的空间,考虑到深度学习主机内存一般都是32G、64G或者128G,所以选择忽略不划分,之后如有需要还可以在系统设置中添加swap部分。实际上我划分了8G。
2.EFI系统分区,选择分区类型为“逻辑分区”,分区位置为“空间起始位置”。分配大小为512M,足矣。
3.挂载“/”,类型为EXT4日志文件系统,选择“逻辑分区”和“空间起始位置”。根目录将挂载除了“/home”和“/usr”之外的其他目录,分配30G。
4.挂载“/usr”,类型为EXT4日志文件系统,选择“逻辑分区”和“空间起始位置”。“/usr”为Linux存放软件的地方,分配40G。
5.挂载“/home”,类型为EXT4日志文件系统,选择“逻辑分区”和“空间起始位置”。剩余50G左右空间全部分配给“/home”。

三、安装显卡驱动

四、台式机ubuntu无线上网问题

想在台式机ubuntu16.04和win10上都用一个无线网卡来上网,发现很多网卡都不能在ubuntu中上网,即使可以也只能需要复杂的安装网卡驱动步骤,但是我也发现了在ubuntu系统中免驱可以即插即用且在windows中也可以免驱连网的两种网卡分别是:

五、卸载 Ubuntu

六、安装CUDA 9.1 和Cudnn 7.1.1

在安装完CUDA 9.1 和Cudnn 7.1.1之后发现,tensorflow最新版本 1.7.0不支持CUDA 9.1 和Cudnn 7.1.1,而是支持CUDA 9.0 和Cudnn 7.0,见tensorflow官网安装说明:Installing TensorFlowInstalling TensorFlow on Ubuntu,否则会出现如下错误:

(tensordai) mengzhuo@ubuntu:~$ python
Python 3.6.2 |Continuum Analytics, Inc.| (default, Jul 20 2017, 13:51:32)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
输入命令:import tensorflow as tf
出现错误:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

因此,大家还是安装CUDA 9.0 和Cudnn 7.0吧,安装方法跟下面的方法一样。
CUDA 9.0下载地址为:CUDA Toolkit 9.0,所以大家可直接跳过前3步,直接看第4步安装CUDA 9.0和CUDNN 7.0.5的方法

1.安装CUDA 9.1

sudo gedit /etc/profile

在打开的文件末尾,添加以下两行。
64位系统:

export PATH=/usr/local/cuda-9.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64:$LD_LIBRARY_PATH

这里的文件目录是cuda-9.1不是cuda-9.0。

2.安装Cudnn 7.1

tar -xzvf cudnn-9.1-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

  • 因为是以tgz文件的形式安装的cudnn所以没办法按照官方教程中一样来验证cudnn是否安装成功,不过我到各个文件目录看了下,确认应该是安装成功了。

3.卸载 CUDNN 7.1.1 和CUDA 9.1,

3.1 卸载CUDA 9.1的方法见:

sudo /usr/local/cuda-9.1/bin/uninstall_cuda_9.1.pl

3.2 卸载CUDNN 7.1.1 的方法:

因为安装CUDNN,实际上只是把几文件复制到CUDA的安装目录下,所以卸载CUDNN只需要把CUDA的安装目录”/usr/local/cuda-9.1”一起删除就可以了:

cd /usr/local/
sudo rm -r cuda-9.1

如果曾经验证过CUDA就会在/home/用户名 下产生文件夹“NVIDIA_CUDA-9.1_Samples”,可以把它一起删除:

cd /home/mengzhuo
sudo rm -r NVIDIA_CUDA-9.1_Samples

注意:我用官方卸载方法卸载CUDA 9.1后再用下面的“4.4.1 方法一”安装CUDA 9.0后发现
系统分辨率变成没装驱动一样,并且在ubuntu登录界面出现循环登录,导致不能以图形方式进入ubuntu。
我猜测的原因:卸载CUDA 9.1时估计连带着驱动的一些包被卸载了。
我解决的办法是:在登录界面按Alt+Ctrl+F1进入字符界面,然后卸载我刚才安装的CUDA 9.0,在没有卸载驱动的情况下用驱动的.run安装包,再按照上面讲的安装驱动方法重新安装修复了驱动。然后分辨率变正常,循环登录现象消失。最后我进入ubuntu系统后用了

4.安装CUDA 9.0

CUDA 9.0下载地址为:CUDA Toolkit 9.0

安装方法同上面安装CUDA 9.1一样,其主要方法见:Ubuntu16.04安装CUDA9.1、cuDNN7详细教程,基本同官方教程一样,具体方法如下:

4.1 检查自己的计算机是否具备CUDA安装条件

检查方法见:Ubuntu16.04安装CUDA9.1、cuDNN7详细教程

4.2 安装NVIIDA驱动。

CUDA提供两种安装方式:package manager安装和runfile安装。因为CUDA安装文件将近1.6G,所以 这里我选择runfile安装,采用runfile安装,CUDA自带的驱动可能无法定位内核信息,所以要先安装NVIIDA驱动。我前面已经安装了驱动,所以这步已经免了。

4.3 下载CUDA 9.0的runfile安装文件

下载地址:CUDA Toolkit 9.0

4.4 开始安装CUDA 9.0
4.4.1 方法一:网上大部分的方法都是这种,太复杂,所以可直接看4.4.2的方法二
  • 重启系统,在登录界面时按Ctrl+Alt+F1进入字符终端界面,登录成功后,关闭图形化界面

sudo service lightdm stop

  • 以cd命令进入CUDA 9.0的.run安装文件所在文件夹内,比如我的是:

cd /home/mengzhuo/    # mengzhuo是我的系统用户名

  • 找到下载文件的路径,键入下面的命令安装:

sudo sh cuda_9.0.176_384.81_linux.run

  • 单击回车,直到提示“是否为NVIDIA安装驱动?” 一定要选择否,因为已经安装好驱动程序,其他都是默认。

最后,你会看到cuda驱动、sample、tookit已经安装成功,但是缺少一些库。

  • 添加这些库:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

  • 重新启动图形化界面:

sudo service lightdm start

  • 同时按住Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。 如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了 .重启电脑,检查Device Node Verification:

ls /dev/nvidia*

  • 若结果显示:

/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm

或显示出类似的信息,应该有三个(包含一个类似/dev/nvidia-nvm的),则安装成功。 如果显示其他情况,则按照Ubuntu16.04安装CUDA9.1、cuDNN7详细教程中方法进行设置。

  • 终端中输入

sudo gedit /etc/profile

  • 在打开的文件末尾,添加以下两行:
    64位系统:

export PATH=/usr/local/cuda-9.0/bin: PATHexportLDLIBRARYPATH=/usr/local/cuda9.0/lib64: P A T H e x p o r t L D L I B R A R Y P A T H = / u s r / l o c a l / c u d a − 9.0 / l i b 64 : LD_LIBRARY_PATH

32位系统:

export PATH=/usr/local/cuda-9.0/bin: PATHexportLDLIBRARYPATH=/usr/local/cuda9.0/lib: P A T H e x p o r t L D L I B R A R Y P A T H = / u s r / l o c a l / c u d a − 9.0 / l i b : LD_LIBRARY_PATH

  • 保存文件,并重启。因为source /etc/profile是临时生效,重启电脑才是永久生效。重启电脑,检查上述的环境变量是否设置成功。
4.4.2 方法二:

因为我们在安装cuda时并不需要安装驱动,所以不用按Ctrl+Alt+F1进入字符终端,也不用关闭图化界面。同时,在方法一中,在验证是否安装成功时,make也太复杂了,需要花20+分钟,其实只需要make一个文件就可以,这样只需要几秒就可验证是否安装正确。具体方法如下:

  • 先安装 安装cuda所需的依赖库:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

  • 输入以下命令:

cd /home/mengzhuo/    # mengzhuo是我的系统用户名,该文件夹下存在CUDA9.0的.run安装文件
sudo sh cuda_9.0.176_384.81_linux.run

单击回车,直到提示“是否为NVIDIA安装驱动?” 一定要选择no,因为已经安装好驱动程序,其他都是选择yes。

  • 添加环境变量:

sudo gedit /etc/profile

在打开的文件末尾,添加以下两行:
64位系统:

export PATH=/usr/local/cuda-9.0/bin: PATHexportLDLIBRARYPATH=/usr/local/cuda9.0/lib64: P A T H e x p o r t L D L I B R A R Y P A T H = / u s r / l o c a l / c u d a − 9.0 / l i b 64 : LD_LIBRARY_PATH

  • 保存文件,并重启。因为source /etc/profile是临时生效,重启电脑才是永久生效。重启电脑,检查上述的环境变量是否设置成功。
4.5 验证CUDA 9.0是否安装成功
4.5.1 方法一:网上大部分的方法都是这种,太复杂太花时间,所以可直接看4.5.2的方法二
  • 验证CUDA Toolkit:

nvcc -V

  • 最后,我们需要尝试编译cuda提供的例子,看cuda能否正常运行,打开终端输入:

cd /home/user_name/NVIDIA_CUDA-9.1_Samples
make

  • 系统就会自动进入到编译过程,整个过程大概需要十几到二十分钟,请耐心等待。如果出现错误的话,系统会立即报错停止。 如果编译成功,最后会显示Finished building CUDA samples,如下图所示。

  • 运行编译生成的二进制文件。 编译后的二进制文件默认存放在NVIDIA_CUDA-9.1_Samples/bin中。接着在终端中输入 :

cd bin/x86_64/linux/release
./deviceQuery

  • 结果如下图所示:看到类似如下图片中的显示,则代表CUDA安装且配置成功,其中 Result = PASS代表成功,若失败 Result = FAIL .
  • 最后再检查一下系统和CUDA-Capable device的连接情况
    终端输入 :

./bandwidthTest

看到类似如下图片中的显示,则代表成功

4.5.2方法二:
  • 验证CUDA Toolkit:

nvcc -V

  • 我们需要尝试编译cuda提供的例子,看cuda能否正常运行,这里我们不用像方法一一样make所有samples,而只需make一个sample就可以了,这样可以使时间从20多分钟减少到几秒钟,打开终端输入:

cd /home/mengzhuo/NVIDIA_CUDA-9.0_Samples/1_Utilities # 进入NVIDIA_CUDA-9.0_Samples中 deviceQuery所在文件夹,mengzhuo是我自己的username
make
cd /home/mengzhuo/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release
./deviceQuery

  • 结果如下图所示:看到类似如下图片中的显示,则代表CUDA安装且配置成功,其中 Result = PASS代表成功,若失败 Result = FAIL 。


5.安装CUDNN 7.0.5

  • Cudnn 7.0.5的安装是按照Ubuntu16.04安装CUDA9.1、cuDNN7详细教程中以tgz文件的形式安装的。这个教程也是按照cudnn7.0.5安装官方教程来的。下载cudnn需要注册,我是在cuDNN Download中下载的,下载的是cuDNN v7.0.5 Library for Linux
    ,见下图。

    实际上cuDNN的安装只是将其安装包解压缩之后,把里面的文件复制到对应的地方即可。故总结起来实际上以tgz文件的形式安装cuDNN只需要4条命令就能安装成功,在cuDNN7的tgz安装文件所在的文件夹内:右键—>在终端中打开—>然后在终端内输入以下4命令即可:

tar -xzvf cudnn-9.0-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

注意:上面的第三条命令官方方法是:sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ ,但是我在lib64文件夹下并没有看到名为libcudnn的文件夹,所以应该还是用我上面的第三条命令。

为防止破坏软链接,还有必要再输入以下4条命令,反正我按照上面的官方安装方法后测试时是提示我软链接被破坏了:

cd /usr/local/cuda-9.0/lib64
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig -v #改了lib、lib64、 ld.so.conf都要重新运行一下ldconfig,不然系统找不到动态链接库

因为是以tgz文件的形式安装的cudnn所以没办法按照官方教程中一样来验证cudnn是否安装成功,不过我到各个文件目录看了下,确认应该是安装成功了。

七、安装Anaconda 3.5.1及其中自带的python 3.6

虽然我的ubuntu 16系统自带的python是2.7.12,但是Anaconda不仅能够进行包管理,还能进行环境管理,所以用它来进行创建虚拟环境并管理。去Anaconda的官方下载地址清华anaconda镜像下载对应python版本的Anaconda安装文件。我这里下载的是python3.6的版本:本次使用的是Anaconda3-5.1.0-Linux-x86_64.sh。

八、安装pycharm

  • 方法见Ubuntu 16.04 安装 PyCharm

  • 如果在应用程序中找不到pycharm启动项,可用如下方法:
    打开Pycharm—>Tools—>Creat Desktop Entry…—>Ok

完全不必用这种方法:在ubuntu16.4中为pycharm创建桌面快捷启动方式。这种方法不仅复杂,而且我用这种方法后发现程序图标并没有被加载,所以图标变发了一个问号图片。

九、利用pycharm创建虚拟环境,并在虚拟环境内安装tensorflow、keras等深度学习框架

如果不想利用pycharm创建虚拟环境,并在虚拟环境内安装tensorflow、keras等深度学习框架,而是非要自己在终端手机输入命令来进行,那么可直接跳过本节看下一节“十、在Anaconda创建的虚拟环境内安装tensorflow”,本节和下一节方法是等效的,只是本节方法更简单、更直观而已。

  • 打开pycharm—>Files—>New Project—>Pure python


    1.png
  • 在New environment using中可选择“Conda”或”Virtualenv”来创建虚拟环境,在Location中把“untitled”改成自定义的虚拟环境名字,Python version中可自己选择想要的版本,这里我选择的是用”Virtualenv”来创建虚拟环境,因为我用“Conda”来创建虚拟环境后发现安装包速率很慢,尽管我在pycharm中已经更换了国内的pip源。

  • Files—>Settings—>Project Interpreter


  • 可以点击上图中右上角的齿轮图标,来更换项目解释器。

  • 点击右上角“+”,可以看到“Availabe Packages”,并可以搜索安装想要的包。如果前是选择“Conda”来创建虚拟环境,这里就是一片空白,什么都没有。


  • 更换国内pip源:点击上图中的“Manage Repositories”,然后输入源地址,如下图所示。


十、在Anaconda创建的虚拟环境内安装tensorflow

本节和上一节方法是等效的,只是上一节方法更简单、更直观,如果你已经按照“九、利用pycharm创建虚拟环境,并在虚拟环境内安装tensorflow、keras等深度学习框架”中的方法进行,可跳过本节。

1.利用conda创建虚拟环境

conda create -n tensordai python=3.6

tensordai是虚拟环境的名字。

2.在虚拟环境内安装tensorflow

2.1 方法一:见Ubuntu16.04安装anaconda3+tensorflow

注意:这种方法我没成功,原因是网络老是断掉,所以我更换了国内的pip源,再进行了方法二来安装tensorflow 1.7.0. 所以大家还是直接看方法二吧。

下面是方法1的内容:

GPU版:pip install tf-nightly-gpu
CPU版:pip install tf-nightly

  • 或者可以先下载好对应版本的安装文件:

Linux CPU-only: Python 2 (build history) / Python 3.4 (build history) / Python 3.5 (build history) / Python 3.6 (build history)
Linux GPU: Python 2 (build history) / Python 3.4 (build history) / Python 3.5 (build history) / Python 3.6 (build history)

我点击python3.6版本 Python 3.6 (build history)
中的“build history”,然后下载这个文件“tf_nightly_gpu-1.7.0.dev20180222-cp36-cp36m-manylinux1_x86_64.whl”,然后必须把它重命名为“tensorflow-1.7.0-py3-none-linux_x86_64.whl”,否则会出现错误“tf_nightly_gpu-1.7.0.dev20180222-cp36-cp36m-linux_x86_64.whl is not a supported wheel on this platform.”
再利用下面的命令进行安装:

source activate tensordai #激活虚拟环境
cd ~/Download #我是将下载好的东西放在了Download文件夹里
pip3 install –ignore-installed –upgrade tensorflow-1.7.0-py3-none-linux_x86_64.whl

或者

pip install tf-nightly-gpu

参考:如何在 Ubuntu 16.04 上安装并使用 TensorFlowubuntu16.04安装TensorFlow的正确步骤

2.2 方法二:

cd ~
mkdir .pip
sudo gedit ~/.pip/pip.conf

然后直接编辑文件pip.conf的内容为:

[global]
index-url = http://pypi.douban.com/simple/
[install]
trusted-host = pypi.douban.com

这样就更换pip源成功了。

  • 运行命令:

pip install tf-nightly-gpu

3.测试是否安装成功

  • 进入python环境:

$ python # 进入python环境

import tensorflow as tf
hello = tf.constant(‘Hello, TensorFlow!’)
sess = tf.Session()
sess.run(hello)

a = tf.constant(10)
b = tf.constant(32)
sess.run(a + b)
sess.close()

  • 卸载tensorflow

pip uninstall tf-nightly-gpu

本文链接:https://www.jianshu.com/p/a9d458544ca1

参考文献:

win10安装ubuntu-GNOME双系统踩坑综合

感谢:

我的好兄弟张洞明童鞋对本文的热心帮助与耐心指导!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Dby_freedom/article/details/80361403

智能推荐

JWT(Json Web Token)实现无状态登录_无状态token登录-程序员宅基地

文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录

SDUT OJ逆置正整数-程序员宅基地

文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.

年终奖盲区_年终奖盲区表-程序员宅基地

文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表

matlab 提取struct结构体中某个字段所有变量的值_matlab读取struct类型数据中的值-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值

Android fragment的用法_android reader fragment-程序员宅基地

文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment

FFT of waveIn audio signals-程序员宅基地

文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals

随便推点

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具_awesomemac-程序员宅基地

文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac

java前端技术---jquery基础详解_简介java中jquery技术-程序员宅基地

文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术

Ant Design Table换滚动条的样式_ant design ::-webkit-scrollbar-corner-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;amp;::-webkit-scrollbar { height: 5px; } &amp;amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner

javaWeb毕设分享 健身俱乐部会员管理系统【源码+论文】-程序员宅基地

文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!

论文开题报告怎么写?_开题报告研究难点-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点

原生JS 与 VUE获取父级、子级、兄弟节点的方法 及一些DOM对象的获取_获取子节点的路径 vue-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue