第一章:自动化上线代码基本介绍

1.软件开发生命周期

老板的创意---产品经理---立项---开发团队---测试团队---运维上线

产品经理---加需求---开发团队---测试----更新代码,上线

2.什么是环境?

开发环境  win gbk, mac utf8 ,php,python     开发的个人电脑

测试环境   代码集中起来,在测试环境上运行一次lnmp,测试mysql,测试 redis, ltnm

预发布环境   连接线上数据库,专门的测试域名

生产环境  线上环境   shop  lnmp  ||   bbs  lnmp

公共基础设施:  监控zabbix  + gitlab +  Jenkins  + ntp  + yum  + jumpserver  + openvpn

3.什么是代码部署?

4.代码部署的方式?

手工:  运维需要全程陪同,重复的人工操作,容易出错

自动:

5.什么是持续集成Continuous Integration

经常频繁的代码合并, 持续集成跟运维有关的工作,提供一个代码仓库,版本控制系统(备份,迁移)

6.什么是持续交付?

开发团队---测试团队---运维上线

开发团对,单元测试,---测试用力---代码质量检测--- 测试, sonarqube

7.什么是持续部署Continuous deployment?

频繁的代码上线,持续部署

第二章:持续集成

1.什么是版本控制系统?

2.版本控制系统解决了什么问题?

快速回滚到指定的版本,只保留变化的内容

3.常见版本控制系统svn与git区别?

svn:  中心化的代码仓库

git:    分布式的代码仓库

4.git的诞生

git由林纳斯.托瓦兹

1991

2002年 csv

2005年 花了两周时间 git

2020年

5.安装和配置git

 
 
 
 
 
 
1
#git的安装
2
yum install git -y
3
git --version
4
5
git config --global user.name "oldqiang"
6
git config --global user.email "296917342@qq.com"
7
git config --global color.ui   "true"
 
 

6.创建版本库

 
 
 
 
 
 
1
git init  
 
 

7.git仓库添加文件

 
 
 
 
 
 
1
git  add   .    #添加文件到缓冲区
2
git  commit  -m   'add three file'
 
 

8.git修改文件名称并提交

 
 
 
 
 
 
1
git  mv  file1  file4
2
git commit -m 'change file name'
3
4
#删除文件
5
git rm 3.txt    #删除工作目录和缓冲区文件
6
git commit -m  'rm 3.txt'
 
 

9.git的文件对比

 
 
 
 
 
 
1
git diff  file3  #本地目录和缓冲区文件对比
2
git diff --cached  file3   #缓冲区文件和仓库文件对比
 
 

10.实现回退功能

 
 
 
 
 
 
1
查看当前的历史版本
2
git log --oneline   
3
git reset --hard 942bdf3
4
5
查看所有的历史版本
6
git reflog --oneline
7
git reset --hard 942bdf3
 
 

撤销修改的文件

 
 
 
 
 
 
1
提交到缓冲的区文件撤回
2
git reset HEAD file3(文件名)
3
git checkout -- file3(文件名)
4
5
未add到缓冲区的文件撤回
6
git checkout -- file3(文件名)
 
 

11.git分支管理

 
 
 
 
 
 
1
#增加一个新分支
2
git branch dev01
3
#切换分支
4
git checkout  dev01
5
6
#在开发分支上合并主分支
7
git merge master  -m '注释'
8
9
#切回主分支
10
git checkout  master
11
#在主分支合并开发
12
git merge dev01  -m '注释'
 
 

12.git标签管理

标签给commit起一个容易记的别名

 
 
 
 
 
 
1
#给当前版本打标签
2
git tag v1.2 
3
4
#删除标签
5
git  tag  -d  v1.2
6
7
#给任意版本打标签
8
git tag  -a v1.0  -m  '优化了1111  修复bug'  a119962 
 
 

13.git远程仓库gitee

14.gitlab安装

私有代码仓库

 
 
 
 
 
 
1
#上传gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm到当前目录
2
3
echo "192.168.37.202  mirrors.aliyun.com" >>/etc/hosts
4
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5
yum localinstall gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm -y
6
7
vim  /etc/gitlab/gitlab.rb
8
#设置访问url和关闭prometheus
9
external_url 'http://gitlab.oldqiang.com'
10
prometheus_monitoring['enable'] = false
11
12
#配置gitlab通过smtp发送邮件
13
gitlab_rails['gitlab_email_enabled'] = true
14
gitlab_rails['gitlab_email_from'] = '296917342@qq.com'
15
gitlab_rails['gitlab_email_display_name'] = 'oldboy_gitlab'
16
17
gitlab_rails['smtp_enable'] = true
18
gitlab_rails['smtp_address'] = "smtp.qq.com"
19
gitlab_rails['smtp_port'] = 465
20
gitlab_rails['smtp_user_name'] = "296917342@qq.com"
21
gitlab_rails['smtp_password'] = "xxxxxx"
22
gitlab_rails['smtp_domain'] = "qq.com"
23
gitlab_rails['smtp_authentication'] = "login"
24
gitlab_rails['smtp_enable_starttls_auto'] = true
25
gitlab_rails['smtp_tls'] = true
26
27
gitlab-ctl  reconfigure
 
 

15.gitlab汉化

 
 
 
 
 
 
1
#下载汉化包https://gitlab.com/xhang/gitlab
2
wget  http://192.168.37.202/linux59/gitlab-11-9-stable-zh.tar.gz
3
tar xf gitlab-11-9-stable-zh.tar.gz 
4
gitlab-ctl stop
5
\cp -a gitlab-11-9-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
6
gitlab-ctl start
 
 

16.gitlab-用户-用户组-项目之间的关系

 
 
 
 
 
 
1
先创建用户组,在基于用户组创建项目,最后创建用户,编辑用户组,添加成员,注意权限
 
 

17.gitlab备份和恢复

 
 
 
 
 
 
1
#备份
2
gitlab-rake gitlab:backup:create
3
4
#恢复
5
gitlab-ctl stop unicorn
6
gitlab-ctl stop sidekiq
7
gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5 
8
gitlab-ctl start unicorn
9
gitlab-ctl start sidekiq
10
11
12
vim /etc/gitlab/gitlab.rb
13
gitlab_rails['manage_backup_path'] = true
14
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
15
gitlab_rails['backup_keep_time'] = 604800
16
17
#迁移云主机
18
先备份,云主机安装相同版本,恢复
 
 

18.gitlab版本升级

 
 
 
 
 
 
1
gitlab升级,  10-->11-->12
2
gitlab升级不能跨大版本
 
 

扩展内容:

1:安装svn服务器,讲svn中的数据迁移到git仓库

yum  install  git-svn  -y

git clone  svn

 
 
 
 
 
 
1
#安装svn
2
yum install subversion -y
3
mkdir /svn/repo -p
4
5
#初始化仓库
6
svnadmin create /svn/repo
7
8
cd /svn/repo/conf
9
vim  svnserve.conf
10
[general]
11
anon-access = none
12
auth-access = write
13
password-db = passwd
14
authz-db = authz
15
realm = /svn/repo
16
[sasl]
17
18
19
vim passwd
20
[users]
21
admin = 123456
22
23
vim authz
24
[/]
25
admin = rw
26
test = r
27
28
#启动svn服务
29
svnserve -d -r /svn/repo
30
31
#svn迁移到git
32
yum  install  git-svn  -y
33
git svn clone svn://10.0.0.100 --username=admin --no-metadata --authors-file=password.txt git
34
35
cat password.txt
36
admin=zhangsan<296917342@qq.com>
 
 

2:找回gitlab的root密码

第三章: 持续部署

Jenkins自动化上线

1:什么是Jenkins

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要

Jenkins是一个调度平台

2:安装Jenkins

 
 
 
 
 
 
1
#部署tomcat
2
rpm -ivh jdk-8u102-linux-x64.rpm
3
mkdir /app
4
tar xf apache-tomcat-8.0.27.tar.gz -C /app
5
cd /app/apache-tomcat-8.0.27/webapps/
6
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/latest/jenkins.war
7
mv jenkins.war ROOT.war
8
/app/apache-tomcat-8.0.27/bin/startup.sh 
 
 

打开浏览器访问http://10.0.0.5:8080安装Jenkins

3:Jenkins插件的安装

4:创建一个job(一个代码上线的流程)

通用: 配置参数化构建

源码管理: 拉取git仓库

构建触发器:   gitlab自动触发Jenkins远程构建

构建环境:   删除workspace

构建:   html   远程上线,   java    maven编译  部署

构建后:   通知  邮件通知,钉钉通知

5:Jenkins拉取gitlab的代码

详情见视频

6:使用脚本实现html自动化代码上线

 
 
 
 
 
 
1
[root@oldboy scripts]# cat auto_deployment_html.sh 
2
#!/bin/bash
3
code_dir='/root/.jenkins/workspace/yiliao'
4
project='yiliao'
5
tag='v2'
6
tarname="${project}_${tag}.tar.gz"
7
web_ip="10.0.0.100 10.0.0.101"
8
cd $code_dir &&  tar zcf /opt/$tarname *
9
10
for n in $web_ip;
11
do
12
   scp -rp /opt/$tarname root@${n}:/tmp/
13
   ssh root@${n} "mkdir /html/${project}_$tag && \
14
tar xf /tmp/$tarname -C /html/${project}_$tag && \
15
rm -fr /html/web      && \
16
ln -s /html/${project}_$tag /html/web"
17
done
 
 

7:使用Jenkins实现html自动化代码上线

使用gitlab自动触发构建项目

详情见视频

使用参数化构建完成版本回退

详情见视频

8:使用脚本实现java项目自动化代码上线

9:使用Jenkins实现java项目自动化代码上线

10:手动使用sonarqube实现代码质量检测

11:将代码质量检测集中Jenkins代码上线过程中

12:Jenkins分布式构建

13:Jenkins的用户权限

第一章:自动化上线代码基本介绍

1.软件开发生命周期

老板的创意---产品经理---立项---开发团队---测试团队---运维上线

产品经理---加需求---开发团队---测试----更新代码,上线

2.什么是环境?

开发环境  win gbk, mac utf8 ,php,python     开发的个人电脑

测试环境   代码集中起来,在测试环境上运行一次lnmp,测试mysql,测试 redis, ltnm

预发布环境   连接线上数据库,专门的测试域名

生产环境  线上环境   shop  lnmp  ||   bbs  lnmp

公共基础设施:  监控zabbix  + gitlab +  Jenkins  + ntp  + yum  + jumpserver  + openvpn

3.什么是代码部署?

4.代码部署的方式?

手工:  运维需要全程陪同,重复的人工操作,容易出错

自动:

5.什么是持续集成Continuous Integration

经常频繁的代码合并, 持续集成跟运维有关的工作,提供一个代码仓库,版本控制系统(备份,迁移)

6.什么是持续交付?

开发团队---测试团队---运维上线

开发团对,单元测试,---测试用力---代码质量检测--- 测试, sonarqube

7.什么是持续部署Continuous deployment?

频繁的代码上线,持续部署

第二章:持续集成

1.什么是版本控制系统?

2.版本控制系统解决了什么问题?

快速回滚到指定的版本,只保留变化的内容

3.常见版本控制系统svn与git区别?

svn:  中心化的代码仓库

git:    分布式的代码仓库

4.git的诞生

git由林纳斯.托瓦兹

1991

2002年 csv

2005年 花了两周时间 git

2020年

5.安装和配置git

 
 
 
 
 
 
1
#git的安装
2
yum install git -y
3
git --version
4
5
git config --global user.name "oldqiang"
6
git config --global user.email "296917342@qq.com"
7
git config --global color.ui   "true"
 
 

6.创建版本库

 
 
 
 
 
 
1
git init  
 
 

7.git仓库添加文件

 
 
 
 
 
 
1
git  add   .    #添加文件到缓冲区
2
git  commit  -m   'add three file'
 
 

8.git修改文件名称并提交

 
 
 
 
 
 
1
git  mv  file1  file4
2
git commit -m 'change file name'
3
4
#删除文件
5
git rm 3.txt    #删除工作目录和缓冲区文件
6
git commit -m  'rm 3.txt'
 
 

9.git的文件对比

 
 
 
 
 
 
1
git diff  file3  #本地目录和缓冲区文件对比
2
git diff --cached  file3   #缓冲区文件和仓库文件对比
 
 

10.实现回退功能

 
 
 
 
 
 
1
查看当前的历史版本
2
git log --oneline   
3
git reset --hard 942bdf3
4
5
查看所有的历史版本
6
git reflog --oneline
7
git reset --hard 942bdf3
 
 

撤销修改的文件

 
 
 
 
 
 
1
提交到缓冲的区文件撤回
2
git reset HEAD file3(文件名)
3
git checkout -- file3(文件名)
4
5
未add到缓冲区的文件撤回
6
git checkout -- file3(文件名)
 
 

11.git分支管理

 
 
 
 
 
 
1
#增加一个新分支
2
git branch dev01
3
#切换分支
4
git checkout  dev01
5
6
#在开发分支上合并主分支
7
git merge master  -m '注释'
8
9
#切回主分支
10
git checkout  master
11
#在主分支合并开发
12
git merge dev01  -m '注释'
 
 

12.git标签管理

标签给commit起一个容易记的别名

 
 
 
 
 
 
1
#给当前版本打标签
2
git tag v1.2 
3
4
#删除标签
5
git  tag  -d  v1.2
6
7
#给任意版本打标签
8
git tag  -a v1.0  -m  '优化了1111  修复bug'  a119962 
 
 

13.git远程仓库gitee

14.gitlab安装

私有代码仓库

 
 
 
 
 
 
1
#上传gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm到当前目录
2
3
echo "192.168.37.202  mirrors.aliyun.com" >>/etc/hosts
4
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5
yum localinstall gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm -y
6
7
vim  /etc/gitlab/gitlab.rb
8
#设置访问url和关闭prometheus
9
external_url 'http://gitlab.oldqiang.com'
10
prometheus_monitoring['enable'] = false
11
12
#配置gitlab通过smtp发送邮件
13
gitlab_rails['gitlab_email_enabled'] = true
14
gitlab_rails['gitlab_email_from'] = '296917342@qq.com'
15
gitlab_rails['gitlab_email_display_name'] = 'oldboy_gitlab'
16
17
gitlab_rails['smtp_enable'] = true
18
gitlab_rails['smtp_address'] = "smtp.qq.com"
19
gitlab_rails['smtp_port'] = 465
20
gitlab_rails['smtp_user_name'] = "296917342@qq.com"
21
gitlab_rails['smtp_password'] = "xxxxxx"
22
gitlab_rails['smtp_domain'] = "qq.com"
23
gitlab_rails['smtp_authentication'] = "login"
24
gitlab_rails['smtp_enable_starttls_auto'] = true
25
gitlab_rails['smtp_tls'] = true
26
27
gitlab-ctl  reconfigure
 
 

15.gitlab汉化

 
 
 
 
 
 
1
#下载汉化包https://gitlab.com/xhang/gitlab
2
wget  http://192.168.37.202/linux59/gitlab-11-9-stable-zh.tar.gz
3
tar xf gitlab-11-9-stable-zh.tar.gz 
4
gitlab-ctl stop
5
\cp -a gitlab-11-9-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
6
gitlab-ctl start
 
 

16.gitlab-用户-用户组-项目之间的关系

 
 
 
 
 
 
1
先创建用户组,在基于用户组创建项目,最后创建用户,编辑用户组,添加成员,注意权限
 
 

17.gitlab备份和恢复

 
 
 
 
 
 
1
#备份
2
gitlab-rake gitlab:backup:create
3
4
#恢复
5
gitlab-ctl stop unicorn
6
gitlab-ctl stop sidekiq
7
gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5 
8
gitlab-ctl start unicorn
9
gitlab-ctl start sidekiq
10
11
12
vim /etc/gitlab/gitlab.rb
13
gitlab_rails['manage_backup_path'] = true
14
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
15
gitlab_rails['backup_keep_time'] = 604800
16
17
#迁移云主机
18
先备份,云主机安装相同版本,恢复
 
 

18.gitlab版本升级

 
 
 
 
 
 
1
gitlab升级,  10-->11-->12
2
gitlab升级不能跨大版本
 
 

扩展内容:

1:安装svn服务器,讲svn中的数据迁移到git仓库

yum  install  git-svn  -y

git clone  svn

 
 
 
 
 
 
1
#安装svn
2
yum install subversion -y
3
mkdir /svn/repo -p
4
5
#初始化仓库
6
svnadmin create /svn/repo
7
8
cd /svn/repo/conf
9
vim  svnserve.conf
10
[general]
11
anon-access = none
12
auth-access = write
13
password-db = passwd
14
authz-db = authz
15
realm = /svn/repo
16
[sasl]
17
18
19
vim passwd
20
[users]
21
admin = 123456
22
23
vim authz
24
[/]
25
admin = rw
26
test = r
27
28
#启动svn服务
29
svnserve -d -r /svn/repo
30
31
#svn迁移到git
32
yum  install  git-svn  -y
33
git svn clone svn://10.0.0.100 --username=admin --no-metadata --authors-file=password.txt git
34
35
cat password.txt
36
admin=zhangsan<296917342@qq.com>
 
 

2:找回gitlab的root密码

第三章: 持续部署

Jenkins自动化上线

1:什么是Jenkins

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要

Jenkins是一个调度平台

2:安装Jenkins

 
 
 
 
 
 
1
#部署tomcat
2
rpm -ivh jdk-8u102-linux-x64.rpm
3
mkdir /app
4
tar xf apache-tomcat-8.0.27.tar.gz -C /app
5
cd /app/apache-tomcat-8.0.27/webapps/
6
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/latest/jenkins.war
7
mv jenkins.war ROOT.war
8
/app/apache-tomcat-8.0.27/bin/startup.sh 
 
 

打开浏览器访问http://10.0.0.5:8080安装Jenkins

3:Jenkins插件的安装

4:创建一个job(一个代码上线的流程)

通用: 配置参数化构建

源码管理: 拉取git仓库

构建触发器:   gitlab自动触发Jenkins远程构建

构建环境:   删除workspace

构建:   html   远程上线,   java    maven编译  部署

构建后:   通知  邮件通知,钉钉通知

5:Jenkins拉取gitlab的代码

详情见视频

6:使用脚本实现html自动化代码上线

 
 
 
 
 
 
1
[root@oldboy scripts]# cat auto_deployment_html.sh 
2
#!/bin/bash
3
code_dir='/root/.jenkins/workspace/yiliao'
4
project='yiliao'
5
tag='v2'
6
tarname="${project}_${tag}.tar.gz"
7
web_ip="10.0.0.100 10.0.0.101"
8
cd $code_dir &&  tar zcf /opt/$tarname *
9
10
for n in $web_ip;
11
do
12
   scp -rp /opt/$tarname root@${n}:/tmp/
13
   ssh root@${n} "mkdir /html/${project}_$tag && \
14
tar xf /tmp/$tarname -C /html/${project}_$tag && \
15
rm -fr /html/web      && \
16
ln -s /html/${project}_$tag /html/web"
17
done
 
 

7:使用Jenkins实现html自动化代码上线

使用gitlab自动触发构建项目

使用参数化构建完成版本回退

8:使用脚本实现java项目自动化代码上线

9:使用Jenkins实现java项目自动化代码上线

10:手动使用sonarqube实现代码质量检测

11:将代码质量检测集中Jenkins代码上线过程中

12:Jenkins分布式构建

13:Jenkins的用户权限

注:后续的内容下一篇文章补全。

Git-Jenkins-代码的上线的更多相关文章

  1. GIt+jenkins代码自动上线

    代码自动上线功能 企业部署代码上线是件比较麻烦的事情,还好我们有jenkins这个持续集成的软件可以帮助我们做很多的事情,现在我们就 来测试用jenkins推送代码上线. 我们这里测试的是一个html ...

  2. devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线

    持续集成 gitlab+jenkins(pipeline)实现代码自动上线 环境准备:Centos7.6版本ip:192.168.0.13 主机名:gitip:192.168.0.23 主机名:jen ...

  3. Jenkins获取git tags代码

    配置Jenkins获取git tag代码的方式其实方法很多,目前我使用比较多的主要是通过Git Parameter 来配置动态的获取最新tags代码,主要我们首先需要安装一下Git Parameter ...

  4. 持续集成①安装部署jenkins从git获取代码

    持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...

  5. 【CentOS】安装部署jenkins从git获取代码[转]

    持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...

  6. Jenkins进阶-获取git tags代码(2)

    配置Jenkins获取git tag代码的方式其实方法很多,目前我使用比较多的主要是通过Git Parameter 来配置动态的获取最新tags代码,主要我们首先需要安装一下Git Parameter ...

  7. git jenkins 介绍

    1.什么是持续集成?2.什么是持续交付?3.什么是持续部署?4.版本控制工具? git    1.git基本操作    2.git 分支    3.git 标签tag    4.gitlab  git ...

  8. jenkins代码自动部署

    jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, ...

  9. git jenkins 基本部署

    git  jenkins  本地仓库基础 1.安装git [root@gitlab ~]# yum install git -y 2.配置git [root@gitlab ~]# git config ...

  10. Android Studio +git+jenkins+gitHub

    之前做的jenkins+gitlab的jmeter,,,其实已经记不太清楚了. 最近又在搞Android学习,就试一下AndroidStudio+jenkins自动打包apk看看. step1: An ...

随机推荐

  1. angular2相关

    脚手架安装一个项目 1.全局安装angular脚手架 npm install -g @angular/cli 2.初始化一个文件夹 ng new my-angular-demo 3.进入文件夹 cd ...

  2. 一维滑动窗口(SlidingWindow)

    滑动窗口(Sliding Window)问题经常使用快慢指针(slow, fast pointer)[0, slow) 的区域为滑动窗口已经探索过的区域[slow, fast]的区域为滑动窗口正在探索 ...

  3. Xapian实战(一):环境搭建 + 简介

    1. 参考资料 http://xapian.org/docs/install.html Xapian的存储系统.性能以及检索模型等 2. 安装 1) xapian # ./configure --pr ...

  4. Mybatis详解系列(五)--Mybatis Generator和全注解风格的MyBatis3DynamicSql

    简介 Mybatis Generator (MBG) 是 Mybatis 官方提供的代码生成器,通过它可以在项目中自动生成简单的 CRUD 方法,甚至"无所不能"的高级条件查询(M ...

  5. 数学--数论--POJ281(线性同余方程)

    埃琳娜(Elina)正在阅读刘如家(Rujia Liu)写的书,其中介绍了一种表达非负整数的奇怪方法.方式描述如下: 选择k个不同的正整数a 1,a 2,-,a k.对于一些非负米,把它由每一个我(1 ...

  6. java基于socket的网络通信,实现一个服务端多个客户端的群聊,传输文件功能,界面使用Swing

    最近在复习java的io流及网络编程.但复习写那些样板程序总是乏味的.便准备写个项目来巩固.想来想去还是聊天项目比较好玩.如果日后完成的比较好自己也可以用(哈哈哈).并且自己后面也要继续巩固java多 ...

  7. 「译」JVM是如何使用那些你从未听过的x86魔幻指令实现String.compareTo的

    原文https://jcdav.is/2016/09/01/How-the-JVM-compares-your-strings/ 魔幻的String.compareTo 我们之前可能已经见过Java的 ...

  8. ASP.NET Core的配置信息

    ASP.NET Core的配置信息 Key-Value键值对 内存里.JSON.XML.INI等文件 配置信息与配置系统是解耦的 可以依赖注入 ASP.NET Core的配置信息来源 appsetti ...

  9. 面试官:你说你懂i++跟++i的区别,那你会做下面这道题吗?

    面试官:你说你懂i++跟++i的区别,那你知道下面这段代码的运行结果吗? 面试官:"说一说i++跟++i的区别" 我:"i++是先把i的值拿出来使用,然后再对i+1,++ ...

  10. 【x64软路由】OpenWrt(LEDE) 20200329编译 反追踪 抗污染 加速 PSW 无缝集成 UPnP NAS

    固件说明 基于Lede OpenWrt R2020.3.19版本(源码更新截止20200329)Lienol Feed及若干自行维护的软件包 结合家庭x86软路由场景需要定制 按照家庭应用场景对固件及 ...