Java基础
一、Win开发环境准备(砂箱版本)
[!tip] 沙箱采用win10自带的工具,用来反复练习是不错的工具,省的创建虚拟机,安装系统,又删掉的时间浪费
== 过程说明 ==
- 沙盒配置,并启动虚拟机(如果是真实系统则跳过这一步)
- 沙箱环境规划(真实环境建议切换到D盘)
- JAVA_HOME、JRE_HOME、MAVEN_HOME、idea均安装在c:\java目录下
- maven的repository放在c盘根目录
- 安装及测试步骤
- 沙箱不用,拷贝安装包到e盘
- 安装jdk、maven、tomcat到指定目录
- 执行vbs脚本添加jdk和maven的环境变量到系统中,方便bash运行和调试
- 执行bat脚本,将maven配置替换为带有aliyun镜像,提高构建速度
- 安装idea
- 配置破解插件,30天自动循环,不然要重装
- 新建spring web工程
- 配置maven及配置文件为本地已设置的插件,提供速度,也避免两个仓库的冗余
- web工程添加controller代码,启动测试
附:工具包一览
G:. ├─PC端开发工具 │ │ 7z2107-x64.exe │ │ apache-maven-3.6.3-bin.zip │ │ apache-tomcat-7.0.47-windows-x64.zip │ │ copySettings.bat │ │ jdk-8u151-windows-x64.exe │ │ Microsoft.WindowsTerminal_Win10_1.13.11431.0_8wekyb3d8bbwe.msixbundle │ │ npp.6.6.6.Installer.exe │ │ settings.xml │ │ setupJavaHome.vbs │ │ setupMavenHome.vbs │ │ test.bat │ │ │ └─543007 IntelliJ IDEA 旗舰版 │ ideaIU-2021.2.2.exe │ Readme.txt │ ├─PC端运维工具 │ └─xmanager │ SN.txt │ xme30.exe │ └─服务端支持工具 centos镜像 gitlab安装包 jenkins安装包,一键部署 maven安装包 nexus安装包,jar、war托管用 docker、compose、k8s安装包
注:idea来源于gg搜索,自测这个有效 https://www.jb51.net/softs/543007.html?pc
0、创建沙盒
<!-- 新建一个test.wsb,然后双击运行即可 -->
<Configuration>
<MemoryInMB>8196</MemoryInMB>
<MappedFolders>
<MappedFolder>
<HostFolder>G:\开发工具</HostFolder>
<SandboxFolder>c:\开发工具</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
</Configuration>
注:沙箱如果垃圾缓存过多,到这里清理 C:\ProgramData\Microsoft\Windows\Containers
1、基本工具安装
- 双击c盘挂载工具包里的工具执行,具体如下
- npp,方便编辑文本工具
- 7z,方便解压缩
2、jdk、maven、tomcat的安装、解压及配置
双击c盘挂载工具包里的工具执行,具体如下
- jdk,目录选择c:\java
- jre, 同jdk,新建目录同jdk,这样可以解决强迫症困扰
- maven、tomcat,拷贝到c:\java目录,然后用7z解压到当前目录
环境配置
- 双击工具包里的vbs脚本,选择java目录下对应的文件夹, 如果多次执行要手工去系统环境变量做修改和删除,毕竟path不太好做重置
- jdk
- maven
- 执行test测试,看看是否ok,注:mvn这里一闪而过,不太好办,或手工执行cmd,
mvn --version
- 双击工具包里的bat脚本,拷贝m2的配置文件到用户目录下,这样就有了阿里云镜像加速
- 双击工具包里的vbs脚本,选择java目录下对应的文件夹, 如果多次执行要手工去系统环境变量做修改和删除,毕竟path不太好做重置
下方是相关代码存档,也便于查看,不想看直接跳过即可
setupJavaHome.vbs
REM https://www.jianshu.com/p/889896b16fc7 Set shell = CreateObject("Shell.Application") Set selFolder = shell.BrowseForFolder(0, "请选择JAVA_HOME目录", 0, ssfDRIVES) Set selFolderItem = selFolder.Self selPath = selFolderItem.Path msgbox "java path is " + selPath dim wsh Set wsh = WScript.CreateObject("WScript.Shell") dosome1="cmd /c " dosome2="@echo off&" dosome3="setx JAVA_HOME "+ Chr(34) +selPath+ Chr(34)+" /M&" dosome4="setx classpath .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar /M&" dosome5="setx path "+Chr(34)+"%path%;%JAVA_HOME%\bin;"+Chr(34)+" /M&" dosome6="echo new shell console exec java -version to check&" dosome7="pause&" begindo = dosome1+dosome2+dosome3+dosome4+dosome5+dosome6+dosome7 wsh.run begindo
setupMavenHome.vbs
Set shell = CreateObject("Shell.Application") Set selFolder = shell.BrowseForFolder(0, "请选择MAVEN_HOME目录", 0, ssfDRIVES) Set selFolderItem = selFolder.Self selPath = selFolderItem.Path msgbox "maven path is " + selPath dim wsh Set wsh = WScript.CreateObject("WScript.Shell") dosome1="cmd /c " dosome2="@echo off&" dosome3="setx MAVEN_HOME "+ Chr(34) +selPath+ Chr(34)+" /M&" dosome5="setx path "+Chr(34)+"%path%;%MAVEN_HOME%\bin;"+Chr(34)+" /M&" dosome6="echo new shell console exec mvn -version to check&" dosome7="pause&" begindo = dosome1+dosome2+dosome3+dosome5+dosome6+dosome7 wsh.run begindo
- test.bat
java -version pause mvn -version pause
- settings.xml
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <mirrors> <mirror> <!--This sends everything else to /public --> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors> <localRepository>d:\repository</localRepository> <servers> <server> <id>deploymentRepo</id> <username>admin</username> <password>linzhihui</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>linzhihui</password> </server> </servers> <profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <sonar.login>admin</sonar.login> <sonar.password>password</sonar.password> <sonar.host.url>http://192.168.20.151:9000</sonar.host.url> </properties> </profile> </profiles> </settings>
- copySettings.bat
copy settings.xml %UserProfile%\.m2
3、Idea安装
工具包里的intellij idea安装到c盘java目录下
这样比较统一,强迫症要求!
破解(可选,沙箱中不是必须,毕竟有30天试用)
- 选择试用,然后进入欢迎界面
- plugin中进入设置页,添加第三方仓库 http://plugins.zhile.io
- 添加插件 IDE Eval Reset
- 激活30天(每月循环操作,但可以勾选默认启动激活省去这个事):
- Click Help or Get Help -> Eval Reset menu.
- Click Reset -> Yes button.
- Restart your IDE.
添加spring web工程
- 新建spring initializr工程,选择jdk8, sping/web
- 添加application平级下的controller.TestController.java
package com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @GetMapping("/test") public String test(){ return "hello springboot"; } }
配置本地maven(需上面工程先添加一个,不然无法进入设置界面)
- 进入设置,build,maven,选择本地maven客户端,如果之前已经拷贝了m2的配置文件,则这里会自动扫描出
- 保存然后重启idea,观察c盘repository目录的自动创建即可!
4、spring web 测试
创建工程、配置在上面节点,这里只要进行web访问即可,端口号和地址查看idea日志即可
补充热部署配置,设置完如果页面没有立刻刷新,可以点击一下idea日志控制台左侧的刷新按钮,快捷键
ctrl+f10
二、idea注释模板
三种常用的 Java 注释方式
- 变量注释
// 声明常量 int number;
- 类注释
package com.example.demo.controller; /** * @description: TODO * @return: * @author: eric 4575252@gmail.com * @date: 5/25/2022 */ public class Test2 { }
- 方法注释
/*** * @description: TODO * @return: void * @author: eric 4575252@gmail.com * @date: 2022-05-25, Wed, 14:38 */ public void test(){ // TODO }
1、类模板(新建时)
- 设置路径:File-Settings-Editor-File and Code Templates-Incudes-File Header 下用现成的,没有就新建,内容如下
/**
* @className: ${NAME}
* @description: TODO 类描述
* @author: eric 4575252@gmail.com
* @date: ${DATE} ${TIME}
**/
2、方法模板(设置回车自动生成)
设置路径:File-Settings-Editor-Live Templates 下添加一个新模板组,名字自定义 JavaTemplateGroup
选中模板组,右侧点击新增按钮,创建新模板, 设置Abbreviation 配置为*,option下的expand设置为回车生成
其中三个参数如下:
- return, methodReturnType()
- date, date(“Y-MM-d, E, H:m”) ==这个查询来源于GG,参数放空只有日期==
- param如下:
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+='* @param: ' + params[i] + ((i < params.size() - 1) ? '\\n ' : '')};return result", methodParameters())
模板内容如下,==注意,要缺一个/==
*
$param$
* @description: TODO
* @return: $return$
* @author: eric 4575252@gmail.com
* @date: $date$
*/
三、idea个人使用习惯
1、修改代码提示快捷键为 alt+/
- 设置路径:File-Settings-Keymap 修改为
Emacs
2、设置代码提醒忽略大小写
- 设置路径:File-Settings-Editor-General-Code Completion 关闭
Match case
3、添加yaml插件,方便微服务、docker配置文件编写
- 设置路径:File-Settings-Plugins 搜索添加
YAML
插件 , ==现在默认自带,可省力了==
4、设置白色主题
- 设置路径:File-Settings-Editor-color scheme 调整主题为
ItelliJ Light
即可
5、添加控制台高亮插件
- 设置路径:File-Settings-Plugins 搜索添加
Grep Console
插件
四、基于idea的git上下行、冲突处理、版本管理
[!tip] 这步需要gitlab支持,环境如下:
- docker 环境,宿主机IP, 192.168.20.151, 端口8929, root/password
1、创建新项目
1、gitlab上创建一个public项目,复制clone按钮下的http路径,用来上传
2、idea对项目创建本地git仓库
==注==:初次使用idea可能没有自带git,右下角有提升下载安装,点击等待即可
3、idea中对项目右键进行提交到本地git仓库
==注==:初次使用git如没有设置全局的用户名和邮箱,会弹出提醒,填写即可,后期如需修改可使用git命令行或tortoise客户端机型gui设置
4、idea中对项目右键,进行push到远程gitlab,这里填入步骤1的clone的http地址,然后输入账号密码,提交即可
==注==:如果账号密码因历史原因或手输错误,需要到windows控制面板中的凭据管理器删除git账号密码,然后再重新push即可输入新账号密码
- 5、登录gitlab检查
2、拉取已有的项目
- 打开idea,新建项目,选择来自version control,输入gitlab的项目clone http地址,等待即可
- 测试,运行app,打开浏览器测试
3、版本冲突处理
[!tip] 过程如下:
- 步骤A:沙箱提交代码或拉取最新代码 1
- 步骤B:本地端拉取最新代码,并修改提交版本2
- 步骤C:沙箱修改代码,预提交为版本2,发生冲突,进行合并,提交版本3
- 步骤D:本地端拉取最新代码,版本为3,结束;
- 步骤D2:若本地端没有拉取最新,进行修改提交,则发生冲突,按步骤C进行冲突处理
当发生冲突时,idea会很智能的提示有冲突要进行合并,并给出几个选项如下
- 1、以服务端最新版本为准
- 2、以本地端为准
- 3、进行人工处理,下面是人工处理的截图,处理结束后再提交即可!
==注==:这里的三版对照,并左右可点击传递修改的内容,非常方便操作!
4、分支、标记处理
- 建议在git log中进行处理,右键选择新增tag,输入版本号,然后提交,==push的时候记得勾选!==
五、
六、
TOMCAT生产/测试环境配置
⭕win补充
研发环境的安装配置方法与JDK类似,后续补充
Linux服务器配置
1 软件包下载
wget http://apache-mirror.rbc.ru/pub/apache/tomcat/tomcat-8/v8.5.46/bin/apache-tomcat-8.5.46.tar.gz -o apache-tomcat-8.5.46.tar.gz
2 解压、链接tomcat
mv apache-tomcat-8.5.46 /opt/software/
ln -s /opt/software/apache-tomcat-8.5.46 /opt/tomcat
3 添加基本组、附加组、用户
groupadd -g 5500 basicgp
groupadd -g 5521 tomcat
useradd -s /bin/nologin -u 5521 -g basicgp -G tomcat -d /opt/tomcat tomcat
chown -R tomcat:tomcat /opt/tomcat/
4 添加系统服务
cat << EOF > /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/opt/java/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment=’CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC’
Environment=’JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom’
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF
5 设置自启动
systemctl start tomcat.service
systemctl enable tomcat.service
6 打开防火墙
firewall-cmd –permanent –zone=public –add-port=8080/tcp
firewall-cmd –reload
验证!
4、MAVEN
Windows开发配置
- apache 官网下载zip包,解压到C:/JAVA/下,并配置环境变量MAVEN_HOME,添加到PATH中,具体可参照之前的文章或RUNOOB
- 验证!
- %UserProfile%.m2\setting.xml
下方配置的私有仓库是group类型,包含了官方镜像、私有release等,所以一个即可
</snapshots>
</repository>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>oschinaMavenThirdparty</id>
<name>oschinaMavenThirdparty</name>
<url>http://maven.oschina.net/content/repositories/thirdparty/</url>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://192.168.20.10:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
创建目录
mkdir c:/users/linzh/mvn/web
执行脚本,生成代码
mvn archetype:generate -DgroupId=com.companyname.automobile -DartifactId=trucks -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
进入目录,编译打包
cd trunks
mvn clean package
#将war放到tomcat中执行,必要的话系统环境变量配置CATALINA_HOME,方便直接运行tomcat下的starup.bat
%CATALINA_HOME%\bin\startup.bat
附端口占用检查,windows版本
C:\Users\linzh\mvn\web\trucks>netstat -ano|findstr 8080
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 850224
TCP 192.168.30.30:50013 223.167.84.139:8080 ESTABLISHED 272876
C:\Users\linzh\mvn\web\trucks>tasklist|findstr 850224
java.exe 850224 Console 1 202,296 K
C:\Users\linzh\mvn\web\trucks>taskkill /f /t /im java.exe
成功: 已终止 PID 851936 (属于 PID 850224 子进程)的进程。
成功: 已终止 PID 850224 (属于 PID 173244 子进程)的进程。
个别项目独立配置私有仓库pom.xml
补充:⭕常规setting.xml配置镜像仓库的方法,作者未使用,因为没调通。。。。
Linux服务器配置
1 下载
wget http://apache-mirror.rbc.ru/pub/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
2 安装配置
tar xvf apache-maven-3.6.2-bin.tar.gz
mv apache-maven-3.6.2 /opt/software/
ln -s /opt/software/apache-maven-3.6.2 /opt/maven
echo ‘MAVEN_HOME=/opt/maven’>>/.bash_profile/.bash_profile
echo ‘PATH=$PATH:$MAVEN_HOME/bin’>>
echo ‘export MAVEN_HOME PATH’>>~/.bash_profile
source ~/.bash_profile
3 maven配置 setting.xml
mv /opt/maven/conf/setting.xml setting.xml.init
mvn -x 可以查看debug信息中setting文件的位置
mkdir -p ~/.m2
cat << EOF > /root/.m2/settings.xml
EOF
4 验证!
执行脚本,生成代码
mvn archetype:generate -DgroupId=com.companyname.automobile -DartifactId=trucks -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
进入目录,编译打包
cd trucks
mvn clean package
将trunks/trunks.war 拷贝到tomcat中执行测试
cp ~/trucks/target/trucks.war /opt/tomcat/webapp/
http://192.168.72.198:8080/trucks/
索引更新
5、GIT
二、开发服务器准备(Nexus、GitLab、)
1、Nexus本地仓库(服务端)
用于私网代理服务器之用,起到内部单次拉取、重复利用的加速之用
- 下载安装
1 下载文件
http://download.sonatype.com/nexus/3/nexus-3.17.0-01-unix.tar.gz
tar -xvf nexus-3.17.0-01-unix.tar.gz
2 安装
mkdir -p /opt/software
mkdir -p /opt/nexus
mv nexus-3.17.0-01 /opt/software
ln -s /opt/software/nexus-3.17.0-01 /opt/nexus
cat > /lib/systemd/system/nexus.service << EOF
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=root
Restart=on-abort
[Install]
WantedBy=multi-user.target
EOF
- jdk安装(略)
- nexus配置
1 配置jdk路径(依据实际环境)
echo ‘INSTALL4J_JAVA_HOME_OVERRIDE=/opt/java’ >> /opt/nexus/bin/nexus
2 设置root用户启动
echo ‘run_as_user=”root”‘>/opt/nexus/bin/nexus.rc
- nexus启停、检查
systemctl start/stop/status nexus
netstat -lntp|grep 8081
#修改nexus端口
[root@resouce ~]# cat /opt/nexus/nexus-3.17.0-01/etc/nexus-default.properties
- 设置开机启动
systemctl enable nexus
systemctl start nexus
仓库安排及缓存配置
hosted,存放内部项目、第三方不合规或付费产品,如oracle驱动
proxy,代理,用于给本地仓库加速,是我们使用的主力,也是本节点需要配置的索引
开启central proxy 的索引缓存,提高速度(修改保存后,有后台任务需要一点时间!)
- 验证!
IP访问 http://192.168.72.199:8081
域名访问 http://nexus.hns.com
默认账号: admin
默认密码: 首次登录根据提示查询、修改, 已修正为 nexus
cat /opt/software/sonatype-work/nexus3/admin.password
三、运维发布(Jenkins)
1、IDE、MAVEN打包、提交到nexus
- setting.xml 中添加服务器信息
- 项目pom.xml配置
- 自动打包
mvn deploy
2、jenkins自动化⭕
1 下载
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -o jenkins20190923.war
2 安装 git
yum install -y git
3 配置JENKINS
ln -s /opt/software/jenkins20190923.war /opt/jenkins.war
cat > /lib/systemd/system/jenkins.service << EOF
[Unit]
Description=jenkins
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/java/bin/java -jar /opt/jenkins.war –ajp13Port=-1 –httpPort=9090
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
设置开机自启动
systemctl enable jenkins
systemctl start jenkins
放开防火墙策略
firewall-cmd –permanent –zone=public –add-port=9090/tcp
firewall-cmd –reload
查看运行状态systemctl status jenkins
如果启动不起来tail -200 /var/log/messages查看日志
4. 初始化配置Jenkins(选择套件GitLab、Git Parameter、Publish Over SSH、SSH)
初始化配置
浏览器打开Jenkinshttp://192.168.72.199:9090
通过cat /root/.jenkins/secrets/initialAdminPassword获取初始密码
根据初始密码登录 + 安装推荐插件(网络不好需要重试,直到安装成功)
安装自定义插件,添加GitLab Plugin, Git Parameter, Publish Over SSH, SSH
设置用户名密码
设置url根路径
初始设置,账号admin 密码jenkins
123123
Linux服务器配置
tar -zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.8.0_241 /usr/local/java
echo “export JAVA_HOME=/usr/local/java” >> /root/.bash_profile
echo “export PATH=$JAVA_HOME/bin:$PATH” >> /root/.bash_profile
source ~/.bash_profile
#验证!
java -version
评论系统未开启,无法评论!