Jenkins部署实战篇
Jenkins部署实战篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.持续集成理论
1>.开发写代码的演变过程
1.1>.一个开发单打独斗,撸代码,开发网站,自由自在;
1.2>.多个开发同时开发一个网站,同时改一份代码。但是同时给一个文件会导致冲突;
1.3>.分支结构,每天上班第一件事克隆代码,下班前最后一件事合并代码;
1.4>.好景不长,开发越来越多,代码文件越来越多。每天下班前合并代码时,发现很多合并失败的文件。为了解决这些合并失败的文件,最后每天加班3小时人工合并代码而且还没有工资;
温馨提示:面临以上的问题的解决方法:将合并代码的周期缩短,以前一天,现在两小时,一小时,半小时......,随时随地将代码合并,这种方法专业术语叫做持续集成。
2>.持续集成特点
持续集成的英文名称为:Continuous Integation,简称CI。持续集成指的是,频繁地(一天多次)将代码集成到主干。它的好处主要有以下两个:
2.1>.快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
2.2>.防止分支大幅度偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成;
3>.运维测试代码的演变
3.1>.初级运维很苦逼,刚开始开发每次合并一次代码,然后运维把代码pull下来测试就可以了;
3.2>.但是,后来开发引进了持续集成方法论,开发们都“弹冠相庆”;
3.3>.运维同学感觉好苦逼,一天到晚不听的测试代码;
3.4>.每天下班之后,运维拖着疲倦的身子回到宿舍,就想,有没有办法自动化?
3.5>.初级运维请教了传说中的大神,知道了一些方法;
3.6>.借助一个自动化的部署工具,叫做Jenkins;
3.7>.开发上传自己的代码到GitLab,GitLab发消息通知Jenkins,随后Jenkins从仓库拉取代码,最后全自动部署到测试服务进行相关测试,并将测试结果通知运维和开发;
3.8>.还有偷懒的方法,直接把这个工具交给开发使用,从此就可以高枕无忧了;
温馨提示:这种自动测试的方法叫做持续交付。
4>.持续交付特点
持续交付英文名称为:Continuous Delivery,简称CD。我们可以说持续交付是持续集成的下一步,它的好处主要有以下两个:
4.1>.持续交付指的是频繁的将软件的新版本,交付给质量团队或者用户,以供审批。如果评审通过,代码就进入生产阶段;
4.2>.持续交付可以看作持续集成的下一步。它强调的时,不管怎么更新,软件是随时随地可以交付的;
5>.运维上线代码的演变
5.1>.代码测试通过了,该到生产环境部署了,运维又该干活了;
5.2>.其实这是一锤子买卖了,要么成功,要么失败回滚;
5.3>.可以使用自动部署工具,但是很多公司还是相信人工上线;
5.4>.但是我们还有偷懒的方法,比如Ansible,Saltstack;
温馨提示:这里也有个方法叫做持续部署。
6>.持续部署特点
持续部署,的英文名称为:Continuous Deployment,简称CD。把代码部署到服务器就是持续部署,它有以下两个特点:
6.1>.持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境;
6.2>.持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段;
温馨提示:你是否经常听一些做持续集成的公司喜欢说的行话:CI/CD ->持续集成/持续交付/持续部署。
二.Jenkins介绍
1>.Jenkins是一个用Java编写的开源的持续集成工具。在Oracle发生争执后,项目充Hudson项目独立出来;
2>.Jenkins提供了软件开发的持续集成服务;
3>.Jenkins运行在servlet容器中(例如Apache Tomcat);
4>.Jenkins支持软件配置管理(SCM)工具(包括Accurev SCM,CVS,Subversion,Git,Perforce,Clearcase和RIC);
5>.Jenkins可以执行基于Apache Ant和Apache Maven的项目,以及任意的shell脚本和Windows批处理命令;
6>.Jenkins的主要开发者是川口耕介;
7>.Jenkins是MIT许可证下发布的自由软件;
三.安装Jenkins环境准备
1>.Jenkins服务器配置
2>.GitLab服务器配置
3>.Jenkins的RPM安装包下载地址
本篇博客采用常规安装方法,即使用RPM包安装
Jenkins官网的RPM安装包:http://pkg.jenkins.io/redhat-stable/
清华源地址关于Jenkins的安装包:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/
4>.linux中能发邮件的账号
四.安装Jenkins
1>.安装jdk
[root@jenkins yinzhengjie]# yum search jdk
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.shu.edu.cn
* extras: mirrors.huaweicloud.com
* updates: mirrors.shu.edu.cn
====================================================== N/S matched: jdk =======================================================
copy-jdk-configs.noarch : JDKs configuration files copier
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-headless.x86_64 : The OpenJDK runtime environment without audio and video support
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-accessibility.i686 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility-debug.i686 : OpenJDK accessibility connector for packages with debug on
java-1.8.0-openjdk-accessibility-debug.x86_64 : OpenJDK accessibility connector for packages with debug on
java-1.8.0-openjdk-debug.i686 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-debug.x86_64 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-demo.i686 : OpenJDK Demos
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.8.0-openjdk-demo-debug.i686 : OpenJDK Demos with full debug on
java-1.8.0-openjdk-demo-debug.x86_64 : OpenJDK Demos with full debug on
java-1.8.0-openjdk-devel.i686 : OpenJDK Development Environment
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.8.0-openjdk-devel-debug.i686 : OpenJDK Development Environment with full debug on
java-1.8.0-openjdk-devel-debug.x86_64 : OpenJDK Development Environment with full debug on
java-1.8.0-openjdk-headless.i686 : OpenJDK Runtime Environment
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-headless-debug.i686 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.8.0-openjdk-javadoc-debug.noarch : OpenJDK API Documentation for packages with debug on
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK API Documentation compressed in single archive
java-1.8.0-openjdk-javadoc-zip-debug.noarch : OpenJDK API Documentation compressed in single archive for packages with debug on
java-1.8.0-openjdk-src.i686 : OpenJDK Source Bundle
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk-src-debug.i686 : OpenJDK Source Bundle for packages with debug on
java-1.8.0-openjdk-src-debug.x86_64 : OpenJDK Source Bundle for packages with debug on
ldapjdk-javadoc.noarch : Javadoc for ldapjdk
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser plug-in and Web Start implementation
ldapjdk.noarch : The Mozilla LDAP Java SDK Name and summary matches only, use "search all" for everything.
[root@jenkins yinzhengjie]#
查找java的安装包([root@jenkins yinzhengjie]# yum search jdk)
[root@jenkins yinzhengjie]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.shu.edu.cn
* extras: mirrors.huaweicloud.com
* updates: mirrors.shu.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.181-3.b13.el7_5 will be installed
--> Processing Dependency: java-1.8.0-openjdk-headless(x86-64) = 1:1.8.0.181-3.b13.el7_5 for package: 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
--> Processing Dependency: libjvm.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
--> Processing Dependency: libjava.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
--> Processing Dependency: libjvm.so()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
--> Processing Dependency: libjava.so()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
---> Package java-1.8.0-openjdk-devel.x86_64 1:1.8.0.181-3.b13.el7_5 will be installed
--> Running transaction check
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.181-3.b13.el7_5 will be installed
--> Processing Dependency: jpackage-utils for package: 1:java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_64
--> Running transaction check
---> Package javapackages-tools.noarch 0:3.4.1-11.el7 will be installed
--> Processing Dependency: python-javapackages = 3.4.1-11.el7 for package: javapackages-tools-3.4.1-11.el7.noarch
--> Running transaction check
---> Package python-javapackages.noarch 0:3.4.1-11.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===============================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================
Installing:
java-1.8.0-openjdk x86_64 1:1.8.0.181-3.b13.el7_5 updates 250 k
java-1.8.0-openjdk-devel x86_64 1:1.8.0.181-3.b13.el7_5 updates 9.8 M
Installing for dependencies:
java-1.8.0-openjdk-headless x86_64 1:1.8.0.181-3.b13.el7_5 updates 32 M
javapackages-tools noarch 3.4.1-11.el7 base 73 k
python-javapackages noarch 3.4.1-11.el7 base 31 k Transaction Summary
===============================================================================================================================
Install 2 Packages (+3 Dependent packages) Total download size: 42 M
Installed size: 144 M
Downloading packages:
(1/5): python-javapackages-3.4.1-11.el7.noarch.rpm | 31 kB 00:00:00
(2/5): javapackages-tools-3.4.1-11.el7.noarch.rpm | 73 kB 00:00:00
java-1.8.0-openjdk-1.8.0.181-3 FAILED ] 579 kB/s | 9.8 MB 00:00:56 ETA
http://centos.ustc.edu.cn/centos/7.5.1804/updates/x86_64/Packages/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64.rpm: [Errno 14] curl#7 - "Failed to connect to 2001:da8:d800:95::110: Network is unreachable"
Trying other mirror.
(3/5): java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64.rpm | 250 kB 00:00:00
(4/5): java-1.8.0-openjdk-devel-1.8.0.181-3.b13.el7_5.x86_64.rpm | 9.8 MB 00:00:47
(5/5): java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_64.rpm | 32 MB 00:01:02
-------------------------------------------------------------------------------------------------------------------------------
Total 687 kB/s | 42 MB 00:01:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : python-javapackages-3.4.1-11.el7.noarch 1/5
Installing : javapackages-tools-3.4.1-11.el7.noarch 2/5
Installing : 1:java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_64 3/5
Installing : 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64 4/5
Installing : 1:java-1.8.0-openjdk-devel-1.8.0.181-3.b13.el7_5.x86_64 5/5
Verifying : 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64 1/5
Verifying : 1:java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_64 2/5
Verifying : 1:java-1.8.0-openjdk-devel-1.8.0.181-3.b13.el7_5.x86_64 3/5
Verifying : python-javapackages-3.4.1-11.el7.noarch 4/5
Verifying : javapackages-tools-3.4.1-11.el7.noarch 5/5 Installed:
java-1.8.0-openjdk.x86_64 1:1.8.0.181-3.b13.el7_5 java-1.8.0-openjdk-devel.x86_64 1:1.8.0.181-3.b13.el7_5 Dependency Installed:
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.181-3.b13.el7_5 javapackages-tools.noarch 0:3.4.1-11.el7
python-javapackages.noarch 0:3.4.1-11.el7 Complete!
[root@jenkins yinzhengjie]#
安装java社区版本(即openjdk版本,它就类似linux的CentOS系统),不建议安装oracle的官方版本,因为它收费([root@jenkins yinzhengjie]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel)
[root@jenkins yinzhengjie]# java -version #查看java版本
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@jenkins yinzhengjie]#
[root@jenkins ~]# mkdir /usr/java #切结,如果是源码安装的java的话,我们需要手动创建这个目录
[root@jenkins ~]#
[root@jenkins ~]# cd /usr/java/
[root@jenkins java]#
[root@jenkins java]# ln -s /soft/jdk1.8.0_181/ /usr/java/jdk1.8 #这两个链接必须得做,否则如果你rpm方式安装jdk的话,可能会出现Jenkins只启动进程,但是端口始终无法启动的状况
[root@jenkins java]#
[root@jenkins java]# ln -s /soft/jdk1.8.0_181/ /usr/java/defalut
[root@jenkins java]#
2>.安装Jenkins的rpm安装包
[root@jenkins download]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.73.1-1.1.noarch.rpm
--2018-09-08 20:13:20-- https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.73.1-1.1.noarch.rpm
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 72756863 (69M) [application/x-redhat-package-manager]
Saving to: ‘jenkins-2.73.1-1.1.noarch.rpm’ 100%[=====================================================================================>] 72,756,863 496KB/s in 2m 0s 2018-09-08 20:15:20 (593 KB/s) - ‘jenkins-2.73.1-1.1.noarch.rpm’ saved [72756863/72756863] [root@jenkins download]# ll
total 71052
drwxrwxr-x 3 yinzhengjie yinzhengjie 144 Sep 6 13:26 cdh
-rw-r--r-- 1 root root 72756863 Sep 14 2017 jenkins-2.73.1-1.1.noarch.rpm
[root@jenkins download]#
下载Jenkins安装包([root@jenkins download]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.73.1-1.1.noarch.rpm)
[root@jenkins download]# ll
total 71052
drwxrwxr-x 3 yinzhengjie yinzhengjie 144 Sep 6 13:26 cdh
-rw-r--r-- 1 root root 72756863 Sep 14 2017 jenkins-2.73.1-1.1.noarch.rpm
[root@jenkins download]#
[root@jenkins download]# rpm -ivh jenkins-2.73.1-1.1.noarch.rpm
warning: jenkins-2.73.1-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jenkins-2.73.1-1.1 ################################# [100%]
[root@jenkins download]#
3>.启动Jenkins服务
[root@jenkins download]# /etc/init.d/jenkins start
Starting jenkins (via systemctl): [ OK ]
[root@jenkins download]#
[root@jenkins download]#
[root@jenkins download]#
[root@jenkins download]#
[root@jenkins download]# ps -ef | grep jenkins
jenkins 5627 1 0 20:18 ? 00:00:00 /etc/alternatives/java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root 5647 5501 0 20:20 pts/0 00:00:00 grep --color=auto jenkins
[root@jenkins download]#
[root@jenkins ~]# netstat -untalp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 6106/java
[root@jenkins ~]#
4>.访问Jenkins的webUI界面(根据界面的提示信息,去服务器端将密码写进去即可)
5>.上个步骤执行成功后,会弹出下面的对话框,我们点击关闭即可
6>.开始使用Jenkins
7>.如果出现下面的界面,那么恭喜你,Jenkins部署成功啦!
8>.Jenkins的目录介绍
[root@jenkins ~]# rpm -ql jenkins
/etc/init.d/jenkins #启动文件存放位置
/etc/logrotate.d/jenkins #日志分割配置文件
/etc/sysconfig/jenkins #Jenkins主配置文件
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war #war包存放目录,war包就是把网站站点打个包
/usr/sbin/rcjenkins #Jenkins的命令
/var/cache/jenkins #war包解压目录,Jenkins网页代码目录
/var/lib/jenkins #Jenkins的工作目录,Jenkins的配置就在这个目录
/var/log/jenkins #Jenkins的日志存放目录
[root@jenkins ~]#
五.修改Jenkins密码(我们在安装Jenkins的时候就发现Jenkins存放初始密码存放位置是:/var/lib/jenkins/secrets/initialAdminPassword)
1>.点击当前用户,进入用户配置界面
2>.点击设置
3>.修改密码
4>.点击注销
5>.使用新密码登录Jenkins
6>.经过我反复验证,修改密码后,原始存放Jenkins密码文件并没有发生变化
六.Jenkins的其它操作
1>.Jenkins的插件安装
详情请参考:https://www.cnblogs.com/yinzhengjie/p/9589319.html
2>.
3>.
Jenkins部署实战篇的更多相关文章
- Jenkins插件安装实战篇
Jenkins插件安装实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 上篇博客我介绍了Jenkins是啥,以及持续集成,持续交付,持续部署的概念,那么问题来了:你知道CI和C ...
- Jenkins部署Python项目实战
一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...
- Jenkins自动发布代码实战篇
Jenkins自动发布代码实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Jenkins服务器配置秘钥对并上传到Gitlab中 1>.在Jenkins后端生成秘钥 ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战
1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲. 本文章主要讲述Docker.Jen ...
- 持续集成之 Spring Boot 实战篇
本文作者: CODING 用户 - 何健 这次实战篇,我们借助「CODING 持续集成」,实现一个简单的 Spring Boot 项目从编码到最后部署的完整过程.本教程还有 B 站视频版,帮助读者更好 ...
- Jenkins部署net core小记
作为一个不熟悉linux命令的neter,在centos下玩Jenkins真的是一种折磨啊,但是痛并快乐着,最后还是把demo部署成功!写这篇文章是为了记录一下这次部署的流程,和心得体会. 网上很多资 ...
- springboot(十六):使用Jenkins部署Spring Boot
jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署分为三个步骤: 第一步,jenkins安装 第二步,插件安装和配置 第 ...
- (转)Spring Boot(十六):使用 Jenkins 部署 Spring Boot
http://www.ityouknow.com/springboot/2017/11/11/spring-boot-jenkins.html enkins 是 Devops 神器,本篇文章介绍如何安 ...
随机推荐
- 原型设计(“留拍”Axure整体操作过程)
使用 Axure 来设计原型[通过 视频(自己录视频上传到优酷网站) 来介绍 “留拍” 的基本 原型 ,后续再 美化界面 和 补充 详细功能]: 请点击下图的播放按钮来弹出视频(通过URL连接):
- 异常 try – finally 注意的地方
finally 异常机制中还有一个重要的部分,就是finally, catch后面可以跟finally语句,语法如下所示: try{ //可能抛出异常 }catch(Exception e){ / ...
- docker+redis 持久化配置(AOF)
RDB持久化与AOF持久化简单描述 RDB:RDB使用快照的方式存储数据库中的内容,直接将所有键值对数据全部存入二进制文件.建议使用BGSAVE来进行备份,整个过程会新fork一个子进程来执行,不影响 ...
- Jenkins and Python
https://jenkins.io/solutions/python/ In the Python ecosystem there are tools which can be integrated ...
- Java使用HTTPClient4.3开发的公众平台消息模板的推送功能
代码引用,参考文章:http://www.cnblogs.com/feiyun126/p/4778556.html,表示感谢! package com.yuanchuangyun.cyb.manage ...
- vue$ref
vue的$ref方法 可以在元素上template中直接添加ref属性 类似html的id属性 用来做选项卡的切换的
- VS2008中英文转换
设置Visual Studio的语言: 工具=>选项=>环境=>区域设置=>语言 如图: 对于英文不好的朋友还是挺好用的
- 获取或操作DOM元素特性的几种方式
1. 通过元素的属性 可以直接通过元素属性获取或操作特性,但是只有公认的特性(非自定义的特性),例如id.title.style.align.className等,注意,因为在ECMAScript中, ...
- js運算符
運算符算術運算符.邏輯運算符.賦值運算符.比較運算符.條件運算符 字符串的合併,用+,如果是字符串和數字用+連接,則當做字符串合併. 條件運算符:if(條件)?語句1,語句2:
- face parsing
主页:https://www.sifeiliu.net/project 基于CNN face parsing: https://www.sifeiliu.net/face-parsing codes: ...