软件工具说明
# 一、安装
# 安装virtualbox
# 1.安装vagrant
# 2.安装Centos7
# 生成 Vagrantfile
vagrant init centos/7
# 必须在指定文件地址启动
vagrant up
镜像下载缓慢采用下载好镜像后添加方式
# 生成 Vagrantfile
vagrant init centos/7
# 添加镜像
vagrant box add centos/7 文件地址
# 必须在指定文件地址启动
vagrant up
开启SSH,并登陆到centos7
vagrant ssh
修改"Vagrantfile"文件,配置网络信息
config.vm.network "private_network", ip: "192.168.56.10"
重启虚拟机
vagrant reload
开启远程登陆,修改“/etc/ssh/sshd_config”
PermitRootLogin yes
PasswordAuthentication yes
重启SSHD
systemctl restart sshd
外网ping不通
vi /etc/sysconfig/network-scripts/ifcfg-eth1
# 在NETMASK下添加网关和DNS
GATEWAY=192.168.56.1
DNS1=114.114.114.114
DNS2=8.8.8.8
# 重启网卡
service network restart
建立集群环境
# 设置统一ip
# 创建文件夹存放虚拟机生成Vagrantfile
vagrant init centos/7
# 配置vagrant文件
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "k8s-node#{i}" do |node|
# 设置虚拟机的Box
node.vm.box = "centos/7"
# 设置虚拟机的主机名
node.vm.hostname="k8s-node#{i}"
# 设置虚拟机的IP
node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"
# 设置主机与虚拟机的共享目录
# node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"
# VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "k8s-node#{i}"
# 设置虚拟机的内存大小
v.memory = 4096
# 设置虚拟机的CPU个数
v.cpus = 4
end
end
end
end
# 添加镜像
vagrant box add centos/7 xxx.box文件地址
# 必须在指定文件地址启动
vagrant up
# 登录到虚拟机
vagrant ssh 虚拟机名
# 切换到root用户,密码vagrant
su root
# 开启远程登录
vi /etc/ssh/sshd_config
PermitRootLogin 改为yes
PasswordAuthentication 改为yes
# 重启
systemctl restart sshd
# 退出,重复上面步骤
exit;
在"网络地址转换"的连接方式下,三个节点的eth0,IP地址相同。
# 查看k8s-node1的路由表
ip route show
# 查看ip
ip addr
**原因分析:**这是因为它们使用是端口转发规则,使用同一个地址,通过不同的端口来区分。但是这种端口转发规则在以后的使用中会产生很多不必要的问题,所以需要修改为NAT网络类型。
解决方法:
- 选择三个节点,然后执行“管理”->"全局设定"->“网络”,添加一个NAT网络。
- 分别修改每台设备的网络类型,设置->网络->连接方式->NET网络
virtualbox虚拟机和主机不在同一网段互通
# 安装VMware
https://zhuanlan.zhihu.com/p/395220479
注:网络类型选择NAT
虚拟机IP设置:编辑->虚拟网络编辑器->更改设置->NAT模式->NAT设置
服务器IP设置
#1.修改配置文件 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 静态ip,ip地址才不会变化 BOOTPROTO=static NAME=ens33 # 系统启动是否激活网卡 ONBOOT=yes IPADDR=192.168.56.10 GATEWAY=192.168.56.2 NETMASK=255.255.255.0 # DNS解析服务器,改成和网关一致 DNS1=192.168.56.2 DNS2=8.8.8.8 #2.重启网卡 [root@localhost ~]# service network restart
# 安装gradle
(1)配置环境变量
# 安装地址
GRADLE_HOME
# 仓库地址
GRADLE_USER_HOME
path添加%GRADLE_HOME%\bin
# 具体使用
https://blog.csdn.net/Holmes_shuai/article/details/119665758
(2)配置国内镜像
# 在项目的根目录下找到如下文件:build.gradle在repositories里添加如下代码
maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}
# 在apply上面,添加如下代码:
allprojects {
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
mavenCentral()
}
}
# 全局配置(操作系统的当前用户)C:\Users\${Users}\.gradle\init.gradle添加
allprojects{
repositories {
def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
url ALIYUN_JCENTER_URL
}
}
}
allprojects {
repositories {
maven { url 'file:///D:/workSpace/maven/depository/'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
jcenter()
}
repositories {
maven { url 'file:///D:/workSpace/maven/depository/'}
mavenLocal()
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
mavenCentral()
jcenter()
}
buildscript {
repositories {
mavenLocal()
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
mavenCentral()
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
jcenter()
}
}
}
#1.直接依赖第三方开源库,一般是托管在 jitpack 或者 jcenter
implementation 'com.google.code.gson:gson:2.2.4'
#2.直接依赖本地的aar文件,一般是在libs目录下
implementation(name: 'LiteAVSDK_Professional_5.1.5293', ext: 'aar')
#3.直接依赖本地的jar文件
implementation files('libs/bdasr_V3_20170801_60da871.jar')
#4.依赖本地的model
implementation project(':wavelibrary')
#5.去除重复依赖 project用括号包裹住
compile (project(':uisdk:Library:facebook')) {
exclude group: 'com.android.support', module: 'appcompat-v7'
}
# 全局移除
configurations.all {
exclude group: 'android.arch.lifecycle', module: 'runtime'
}
# 作用域
gradle依赖的粒度控制相较于Maven也更加精细,maven只有compile、provided、test、runtime四种scope,而gradle有以下几种scope:
implementation,默认的scope。implementation的作用域会让依赖在编译和运行时均包含在内,但是不会暴露在类库使用者的编译时。举例,如果我们的类库包含了gson,那么其他人使用我们的类库时,编译时不会出现gson的依赖。
api,和implementation类似,都是编译和运行时都可见的依赖。但是api允许我们将自己类库的依赖暴露给我们类库的使用者。
compileOnly和runtimeOnly,这两种顾名思义,一种只在编译时可见,一种只在运行时可见。而runtimeOnly和Maven的provided比较接近。
testImplementation,这种依赖在测试编译时和运行时可见,类似于Maven的test作用域。
testCompileOnly和testRuntimeOnly,这两种类似于compileOnly和runtimeOnly,但是作用于测试编译时和运行时。
# 安装VS Code
#插件安装
Auto Close Tag
Auto Rename Tag
Chinese (Simplified) Language Pack for Visual Studio Code
ESLint
HTML CSS Support
HTML Snippets
JavaScript (ES6) code snippets
Live Server
open in browser
Vetur
#创建全局代码片段 文件 ➡ 首选项 ➡ 用户代码片段 ➡ 点击新建全局代码片段 ➡ 取名 vue ➡ 确定
{
"Print to console": {
"prefix": "vue",
"body": [
"<!-- $1 -->",
"<template>",
"<div class='$2'>$5</div>",
"</template>",
"",
"<script>",
"//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)",
"//例如:import 《组件名称》 from '《组件路径》';",
"",
"export default {",
"//import引入的组件需要注入到对象中才能使用",
"components: {},",
"data() {",
"//这里存放数据",
"return {",
"",
"};",
"},",
"//监听属性 类似于data概念",
"computed: {},",
"//监控data中的数据变化",
"watch: {},",
"//方法集合",
"methods: {",
"",
"},",
"//生命周期 - 创建完成(可以访问当前this实例)",
"created() {",
"",
"},",
"//生命周期 - 挂载完成(可以访问DOM元素)",
"mounted() {",
"",
"},",
"beforeCreate() {}, //生命周期 - 创建之前",
"beforeMount() {}, //生命周期 - 挂载之前",
"beforeUpdate() {}, //生命周期 - 更新之前",
"updated() {}, //生命周期 - 更新之后",
"beforeDestroy() {}, //生命周期 - 销毁之前",
"destroyed() {}, //生命周期 - 销毁完成",
"activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发",
"}",
"</script>",
"<style scoped>",
"/* @import url(); 引入公共css类 */",
"$4",
"</style>"
],
"description": "生成vue模板"
},
"http-get请求": {
"prefix": "httpget",
"body": [
"this.\\$http({",
"url: this.\\$http.adornUrl(''),",
"method: 'get',",
"params: this.\\$http.adornParams({})",
"}).then(({ data }) => {",
"})"
],
"description": "httpGET请求"
},
"http-post请求": {
"prefix": "httppost",
"body": [
"this.\\$http({",
"url: this.\\$http.adornUrl(''),",
"method: 'post',",
"data: this.\\$http.adornData(data, false)",
"}).then(({ data }) => { });"
],
"description": "httpPOST请求"
}
}
#node.js安装并配置npm镜像
npm config set registry https://registry.npm.taobao.org
#安装webpack和vue脚手架
npm install webpack -g
npm install -g @vue/cli-init
# Typora图床
# 1. 创建gitee仓库
登录账号之后,创建一个仓库用于放置图片。
填写下图标注的三项内容,然后点击创建。
- 仓库名称随便设置;
- 是否开源:必须选择公开,否则无法通过链接引用图片;
- 选中”使用Readme文件初始化这个仓库“,这样就不用操作git初始化仓库了。

# 2.配置脚本
含有两个文件
一个是powershell脚本imp_upload.ps1
using namespace System.Drawing using namespace System.Drawing.Imaging using namespace System.IO #$check_size = 500*1024 $check_size = 1024*1024 $run_dir = (Split-Path -Parent $MyInvocation.MyCommand.Definition) + "\" $path_log = "$run_dir\gitee_upload.log" $path_config = "$run_dir\config.json" function error($msg){ try{ "$([DateTime]::Now.ToString("yyyy-MM-dd HH:mm:ss")) Error: $msg" | Out-File -Append $path_log } catch{ # "log error" } } function info($msg){ "$([DateTime]::Now.ToString("yyyy-MM-dd HH:mm:ss")) Info: $msg" | Out-File -Append $path_log } function exit_script( $reason ){ Write-Error $reason -CategoryReason "custom error" -ErrorId "custom error" error "---exit_script---: " + $reason exit } try{ $config = Get-Content $path_config | ConvertFrom-JSON } catch{ exit_script "config error :" + $_.Exception.message } $now = [DateTime]::Now $str_month = $now.ToString("yyyyMM") $str_dt = $now.ToString("yyyyMMdd_HHmmssfff") $url_file_new = "https://gitee.com/api/v5/repos/{owner}/{repo}/contents/{path}" $paths = $args function compress { param ( [Stream] $inStream, [Stream] $outStream, $ratio ) $img = [Image]::FromStream($inStream) $res = [Bitmap]::new($img.width, $img.height, $img.pixelFormat) $gph = [Graphics]::FromImage($res) # 设置画布的描绘质量 $gph.CompositingQuality = [Drawing2D.CompositingQuality]::HighQuality $gph.SmoothingMode = [Drawing2D.SmoothingMode]::HighQuality $gph.InterpolationMode = [Drawing2D.InterpolationMode]::HighQualityBicubic $gph.DrawImage($img, 0, 0, $res.width, $res.height) $gph.Dispose() #以下代码为保存图片时,设置压缩质量 $ep = [EncoderParameters]::new(1) [long[]] $qy = @( $ratio ) #设置压缩的比例1-100 $ep.Param[0] = [EncoderParameter]::new([Encoder]::Quality, $qy); $arrayICI = [ImageCodecInfo]::GetImageEncoders() $jpg_info = "null"; foreach ($ici in $arrayICI) { if ($ici.FormatDescription -eq "JPEG") { $jpg_info = $ici break } } if ($jpg_info -ne "null"){ $res.Save($outStream, $jpg_info , $ep); } else{ $res.Save($outStream, [ImageFormat]::Jpeg); } $res.Dispose() $img.Dispose() } function convertToJpg { param ( [Stream] $inStream, [Stream] $outStream ) $img = [Image]::FromStream($inStream) $res = [Bitmap]::new($img.width, $img.height, $img.pixelFormat) $gph = [Graphics]::FromImage($res) # 设置画布的描绘质量 $gph.CompositingQuality = [Drawing2D.CompositingQuality]::HighQuality $gph.SmoothingMode = [Drawing2D.SmoothingMode]::HighQuality $gph.InterpolationMode = [Drawing2D.InterpolationMode]::HighQualityBicubic $gph.DrawImage($img, 0, 0, $res.width, $res.height) $gph.Dispose() $res.Save($outStream, [ImageFormat]::Jpeg); $outStream.Flush() $res.Dispose() $img.Dispose() } function upload { param ( $b64 = "", $gitee_path = "", $message = "" ) $url = $url_file_new $url = $url.Replace("{owner}", $config.owner) $url = $url.Replace("{repo}", $config.repo) $url = $url.Replace("{path}", $gitee_path) $body = @{} $body.Add("access_token", $config.access_token) $body.Add("content", $b64) $body.Add("message", $message) $body.Add("branch", $config.branch) $json = ConvertTo-Json $body try{ $response = Invoke-WebRequest -Uri $url -Body $json -Method POST -ContentType "application/json;charset=UTF-8" $data = ConvertFrom-Json $response.Content return $data.content.download_url } catch{ error "upload failed" if($_.ToString().Contains("(401)")){ #(401) 未经授权 Write-Error "access_token error" }else { Write-Error -Exception $_.Exception } } } function handleNetImage { param ( $path = "", $idx = 0 ) $resp = Invoke-WebRequest $path if($resp.Content.GetType().Name -eq "Byte[]"){ if($path.Contains("?")){ $path = $path.Substring(0, $path.IndexOf("?") ) } $img_name = $path.Substring( $path.LastIndexOf("/")+1 ) $img_ext = $img_name.Substring( $img_name.LastIndexOf(".") ) $len = $resp.Content.Length if($len -gt $check_size){ # if($len -gt $check_size*10){ # $ratio = 60 # } else{ # $ratio = 80 # } $inStream = [MemoryStream]::new($resp.Content, $False) $outSteam = [MemoryStream]::new() # compress $inStream $outSteam $ratio # 使用[ImageFormat]::Jpeg保存图像,可以减小文件大小,压缩率和图像质量比compress函数好 convertToJpg $inStream $outSteam $img_ext = ".jpg" $b64 = [Convert]::ToBase64String( $outSteam.ToArray() ) $inStream.Dispose() $outSteam.Dispose() } else{ $b64 = [Convert]::ToBase64String( $resp.Content ) } $gitee_path = "$str_month/$($str_dt)_$idx$img_ext" return upload $b64 $gitee_path $img_name } else{ Write-Error "failed to load image from $url" } } function handleLocalImage { param ( $path = "", $idx = 0 ) $info = [FileInfo]::new( $path ) if(! $info.Exists){ return "image path error" } $img_name = $info.Name $img_ext = $info.Extension if($info.Length -gt $check_size){ # if($info.Length -gt $check_size*10){ # $ratio = 60 # } else{ # $ratio = 80 # } $inStream = [FileStream]::new($info.FullName, [FileMode]::Open) $outSteam = [MemoryStream]::new() # compress $inStream $outSteam $ratio # 使用[ImageFormat]::Jpeg保存图像,可以减小文件大小,压缩率和图像质量比compress函数好 convertToJpg $inStream $outSteam $img_ext = ".jpg" $b64 = [Convert]::ToBase64String( $outSteam.ToArray() ) $inStream.Dispose() $outSteam.Dispose() } else{ $b64 = [Convert]::ToBase64String( [System.IO.File]::ReadAllBytes($info.FullName) ) } $gitee_path = "$str_month/$($str_dt)_$idx$img_ext" return upload $b64 $gitee_path $img_name } function handle { param ( $path = "", $idx = 0 ) $downUrl = "" if($path.StartsWith("http://") -or $path.StartsWith("https://")){ $downUrl = handleNetImage $path $idx } else{ $downUrl = handleLocalImage $path $idx } return $downUrl } for($i=0; $i -lt $paths.Count; $i++){ handle $paths[$i] $i } trap{ error $_.Exception.message }
一个是配置文件config.json
{ "owner": "个人空间地址", "repo": "仓库名", "branch": "master", "access_token": "私人令牌" }
# 3.配置Typora
打开Typroa, 顶部菜单点击 文件 - 偏好设置 - 图像。按下图设置(旧版Typora可能不支持以下设置)。
命令填入: PowerShell -ExecutionPolicy Bypass -File "img_upload.ps1脚本路径"
例: PowerShell -ExecutionPolicy Bypass -File "D:\0tmp\img_upload\img_upload.ps1"
# 安装WSL2
https://www.jianshu.com/p/6f3195bad5f1
注: 需要Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11
# 1.启动“适用于linux的windows子系统”和“虚拟机”两个功能
# 1.打开powershell,win+x,a
# 2.启用适用于Linux的Windwos子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 3.启用虚拟机功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 2.在bios中开启虚拟化,重启电脑
# 3.下载Linux内核更新包,并安装
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
# 4.将wsl2版本设置为默认版本
wsl --set-default-version 2
# 5.安装ubuntu
微软商店安装
注:启动提示,参考的对象类型不支持尝试的操作”的故障导致无法使用,添加以下注册表
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog\0408F7A3]
"AppFullPath"="C:\\Windows\\System32\\wsl.exe"
"PermittedLspCategories"=dword:80000000
# 6.修改安装路径
# 查看运行状态
wsl -l -v
# 关闭
wsl --shutdown
# 导出当前Linux的镜像 Ubuntu为wsl -l -v中的系统名字
wsl --export Ubuntu D:\workSpace\Ubuntu2204\ubuntu22.04.tar
# 注销之前的系统并检查
wsl --unregister Ubuntu
# 导入镜像
wsl --import ubuntu2204 D:\workSpace\Ubuntu2204\ D:\workSpace\Ubuntu2204\ubuntu20.04.tar --version 2
# 配置先前设置的默认登录用户 ubuntu2204为导入镜像时起的名字,xxx为之前设置的用户
ubuntu2204.exe config --default-user xxx
# 7.安装DockerDeskTop
官网:https://www.docker.com/
迁移:https://cloud.tencent.com/developer/article/1679501
# 修改安装位置
mklink /j "C:\Program Files\Docker" "D:\javaTools\docker"
# 修改相关文件安装目录
mklink /j "C:\Users\你的用户名\AppData\Local\Docker" "D:\workSpace\Docker\Local"
mklink /j "C:\Users\dlam3\AppData\Roaming\Docker" "D:\workSpace\Docker\Roaming\Docker"
mklink /j "C:\Users\dlam3\AppData\Roaming\Docker Desktop" "D:\workSpace\Docker\Roaming\Docker Desktop"
# 安装
Complete the installation of Docker Desktop-->Use advanced settings-->Manually update WSL 2 myself
# 8.直接在ubantu安装docker
# 安装前先卸载操作系统默认安装的docker,
sudo apt-get remove docker docker-engine docker.io containerd runc
# 更换apt源 清华:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 阿里:https://developer.aliyun.com/mirror/ubuntu/?spm=a2c6h.25603864.0.0.2b5223b8KyFvMQ
cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/source.list
sudo apt-get update
sudo apt-get upgrade
# 安装必要支持
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
# 运行如下命令,安装合适版本
apt-cache madison docker-ce
apt-cache madison docker-ce-cli
# 安装
sudo apt-get install docker-ce=5:20.10.24~3-0~ubuntu-jammy docker-ce-cli=5:20.10.24~3-0~ubuntu-jammy containerd.io
# 开机自启
sudo systemctl enable docker
# 安装JEnv-for-Windows
- 克隆此仓库:https://github.com/FelixSelter/JEnv-for-Windows
- 将其添加到系统变量的PATH中
- 如果使用cmd,调用批处理文件jenv,bat;若使用powershell,调用/src/jenv.ps1
命令
# 添加Java环境到jenv中管理(需提供绝对路径)示例:jenv add jdk15 D:\Programme\Java\jdk-15.0.1
jenv add `<名称>` `<路径>`
# 列出所有jenv管理的Java环境
jenv list
# 全局设置Java版本 示例:jenv change jdk15
jenv change `<名称>`
# 在当前目录始终使用此Java版本 示例:jenv local jdk15
jenv local `<名称>`
# 清除当前目录的Java版本 示例:jenv local remove
jenv local remove
# 为当前会话切换Java版本 示例:jenv use jdk15
jenv use `<名称>`
# 清除当前会话的Java版本 示例:jenv use remove
jenv use remove
# 从JEnv列表中移除已安装的JDK 示例:jenv remove jdk15
jenv remove `<名称>`
# 启用javac、javaw或其他位于java目录中的可执行程序
jenv link `<可执行文件名>`
示例:jenv link javac
# 卸载jenv并自动恢复所需的Java版本
jenv uninstall `<名称>`
示例:jenv uninstall jdk17
# 自动搜索要添加的Java版本
# 示例:jenv autoscan "C:\Program Files\Java"
# 示例:jenv autoscan // 将扫描整个系统 示例:jenv autoscan -y "C:\Program Files\Java" // 默认值将被接受
jenv autoscan [--yes|-y] `?<路径>?`
# 二、使用
# IDEA配置
# ①代码注释
(1)File | Settings | Editor | File and Code Templates里的class修改为
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
public class ${NAME} {
}
(2)includes中File Header修改为
/**
* @author :J-Ming
* @date :Created in ${DATE} ${TIME}
* @description:${description}
**/
(3)File | Settings | Editor | Live Templates建一个组
**
* @Description:
* @author $user$
* @date $date$ $param$
* @return $return$
*/
//param脚本:
groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {result+='\\n' + ' * @param ' + params[i] + ' '}; return result;}", methodParameters());
// 方法注释
模板:
*
*
* @author J-Ming
* @date $date$ $time$$param$ $return$
*/
param:
groovyScript("def result = '';def params = \"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] != '')result+='* @param ' + params[i] + ((i < params.size() - 1) ? '\\r\\n ' : '')}; return result == '' ? null : '\\r\\n ' + result", methodParameters())
return:
groovyScript("return \"${_1}\" == 'void' ? null : '\\r\\n * @return ' + \"${_1}\"", methodReturnType())
(4)在idea里面格式化代码的时候,注释也会被格式化
File | Settings | Editor | Code Style | Java | javadoc
将enable javadoc formating取消掉
# ②插件安装
(1)FindBugs-IDEA静态代码分析
(2)Alibaba Java Coding Guidelines 代码规约
(3)Coding Easier 翻译+字符串处理
(4)Free Mybatis plugin
禁用不必要插件
https://fangweilong.github.io/2018/04/25/idea%E5%85%B3%E9%97%AD%E4%B8%8D%E5%BF%85%E8%A6%81%E7%9A%84%E6%8F%92%E4%BB%B6%E5%87%8F%E5%B0%91%E5%86%85%E5%AD%98%E5%8D%A0%E7%94%A8/
# GIT
自定义密钥名称
$ ssh-keygen -t rsa -C “your email” -f id_rsa_xx
# 将这个新的key添加到ssh-agent中:
$ ssh-agent -s
$ ssh-add ~/.ssh/id_rsa_xx
# 注: 如果执行 ssh-add 时显示错误 Could not open a connection to your authentication agent. 那么执行eval `ssh-agent -s`后重新执行 ssh-add 那条命令即可。
同一电脑配置不同账号的密钥
# 在 ~/.ssh/config 文件中为相关的 GitHub 账号做类似于下面的配置项:
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host dlam
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github2_id_rsa
# 克隆连接修改: dlam:SSH 配置文件中为github2_id_rsa设置的别名, username:GitHub用户名, repo:GitHub仓库的名字
git clone git@dlam:username/repo.git
# ①删除已提交文件
首先进入你的master文件夹下, Git Bash Here ,打开命令窗口
$ git --help # 帮助命令
$ git pull origin master # 将远程仓库里面的项目拉下来
$ dir # 查看有哪些文件夹
$ git rm -r --cached .idea # 删除.idea文件夹
$ git commit -m '删除.idea' # 提交,添加操作说明
$ git push -u origin master # 将本次更改更新到github项目上去
# ②拉取指定分支
1》与远程仓库建立连接:git remote add origin XXXXX.git
2》使用git branch 查看本地是否具有dev分支
3》如果没有 git fetch origin dev
4》git checkout -b dev origin/dev在本地创建分支dev并切换到该分支
5》git pull origin dev就可以把gitLab上dev分支上的内容都拉取到本地了
# 或者
git -b name;
# ③提交代码
#拉取
git pull
#1、新建一个分支
git branch newBranch
#2、检查分支是否创建成功
git branch
#3、切换到新建的分支
git checkout newBranch
#4、将改动提交到新分支
git add .
git commit -m "the new branch"
#5、检查是否提交新分支成功
git status
#6、切回到主分支
git checkout master
#7、新分支提交的改动合并到主分支
git merge newBranch
#8、push代码到远端仓库
git push -u origin master
#9、删除新分支
git branch -D newBranch
# Gradle与Maven
# gradle:
# 高版本gradle使用Lombok需要添加以下配置
dependencies {
implementation 'org.projectlombok:lombok:1.18.4'
annotationProcessor 'org.projectlombok:lombok:1.18.4'
## 打jar包时将sun公司jar包引入
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
}
# 打包成一个Jar
jar {
manifest {
attributes(
'Main-Class': 'com.ming.ImageUpload'
)
}
from {
##configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtime.collect{zipTree(it)}
}
}
# 设置编码
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
# 生成jar包
/**
* 1.打包成一个Jar
* 执行命令gradle build或者./gradlew build,可在build/libs查看生成的jar包
**/
jar {
manifest {
attributes(
'Main-Class': 'com.ming.ImageUpload'
)
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
//configurations.runtime.collect{zipTree(it)}
}
}
/**
* 2.打包成多个Jar
* 执行命令gradle release或者./gradlew relesse,可在build/libs查看生成的jar包 打包成多个Jar
**/
jar {
manifest {
attributes 'Main-Class': appMainClass
}
}
task clearJar(type: Delete) {
delete 'build/libs/lib'
}
task copyJar(type: Copy) {
from configurations.runtime
into('build/libs/lib')
}
task release(type: Copy, dependsOn: [build, clearJar, copyJar])
/** 3.使用application插件
* 执行命令gradle (run、startScript、installApp、distZip、distTar)之一
* 查看build/distributions会有两个压缩文件,压缩文件
* 包含了两个文件夹,bin为启动脚本,lib则是软件jar包和依赖。
* 还可以执行./gradlew installDist生成未压缩文件目录build/install
**/
apply plugin: 'application'
mainClassName = 'appMainClass'
# maven:
# maven手动导入jar包
mvn install:install-file -Dfile=D:\workSpace\bairui\CQ\ChongQingBank\BairuiPlatform\fileConvert\lib\aspose-cells-8.5.2.jar -DgroupId=com.aspose -DartifactId=aspose-cells -Dversion=8.5.2 -Dpackaging=jar