#!/bin/bash
set -e
DATE=$(date +%Y%m%d%H%M)
# 基础路径
BASE_PATH=/work/projects/yudao-server
# 服务名称。同时约定部署服务的 jar 包名字也为它。
SERVER_NAME=yudao-server
# 环境
PROFILES_ACTIVE=dev
# heapError 存放路径
HEAP_ERROR_PATH=$BASE_PATH/heapError
# JVM 参数
JAVA_OPS="-Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$HEAP_ERROR_PATH"
# SkyWalking Agent 配置
#export SW_AGENT_NAME=$SERVER_NAME
#export SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.0.84:11800
#export SW_GRPC_LOG_SERVER_HOST=192.168.0.84
#export SW_AGENT_TRACE_IGNORE_PATH="Redisson/PING,/actuator/**,/admin/**"
#export JAVA_AGENT=-javaagent:/work/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar
# 停止:优雅关闭之前已经启动的服务
function stop() {
echo "[stop] 开始停止 $BASE_PATH/$SERVER_NAME"
PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}')
# 如果 Java 服务启动中,则进行关闭
if [ -n "$PID" ]; then
# 正常关闭
echo "[stop] $BASE_PATH/$SERVER_NAME 运行中,开始 kill [$PID]"
kill -15 $PID
# 等待最大 120 秒,直到关闭完成。
for ((i = 0; i < 120; i++))
do
sleep 1
PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}')
if [ -n "$PID" ]; then
echo -e ".\c"
else
echo '[stop] 停止 $BASE_PATH/$SERVER_NAME 成功'
break
fi
done
# 如果正常关闭失败,那么进行强制 kill -9 进行关闭
if [ -n "$PID" ]; then
echo "[stop] $BASE_PATH/$SERVER_NAME 失败,强制 kill -9 $PID"
kill -9 $PID
fi
# 如果 Java 服务未启动,则无需关闭
else
echo "[stop] $BASE_PATH/$SERVER_NAME 未启动,无需停止"
fi
}
# 启动:启动后端项目
function start() {
# 开启启动前,打印启动参数
echo "[start] 开始启动 $BASE_PATH/$SERVER_NAME"
echo "[start] JAVA_OPS: $JAVA_OPS"
echo "[start] JAVA_AGENT: $JAVA_AGENT"
echo "[start] PROFILES: $PROFILES_ACTIVE"
# 开始启动
nohup java -server $JAVA_OPS $JAVA_AGENT -jar $BASE_PATH/$SERVER_NAME.jar --spring.profiles.active=$PROFILES_ACTIVE > nohup.out 2>&1 &
echo "[start] 启动 $BASE_PATH/$SERVER_NAME 完成"
}
# 部署
function deploy() {
cd $BASE_PATH
# 第一步:停止 Java 服务
stop
# 第二步:启动 Java 服务
start
}
deploy
文章浏览阅读141次。题目1题解1from queue import PriorityQueueclass Solution: def mostCommonWord(self, paragraph: str, banned: List[str]) -> str: pq = PriorityQueue(maxsize=0) for c in "!?',;.": ..._python里为什么会出现这样的结果? >>> -10//3, 10//-3, -10//-3, -(10//3) (-4, -
文章浏览阅读470次。我觉得这张图就够了,实际上tf.nn.embedding_lookup的作用就是找到要寻找的embedding data中的对应的行下的vector。tf.nn.embedding_lookup(params, ids, partition_strategy=‘mod’, name=None, validate_indices=True, max_norm=None)参数说明:par..._tf.nn.embedding_lookup(
文章浏览阅读6.5k次,点赞6次,收藏18次。俗话说:工欲善其事,必先利其器。在学习一门编程语言之前,我们必须先安装好它的开发环境,由于工作需求不得不去研究C51单片机的知识。下面就开始安装我们的开发环境keil4。1,、打开keil的官网http://www.keil.com/c512、鼠标移到C51V960A.EXE,右键鼠标点击在新标签页打开链接,点击后浏览器就开始下载了(如果你的电脑下载了下载软件,那么就在你的下载软件中下载..._keil4没有stc怎么办
文章浏览阅读332次。table选项卡原理$(this).addClass("active").siblings().removeClass("active");_table 选项卡
文章浏览阅读1.6k次,点赞98次,收藏94次。将一份代码成功编译后,可以得到一个可执行程序,程序运行后,相关代码和数据被load到内存中,并且操作系统会生成对应数据结构(比如PCB)对其进行管理及分配资源,准备工作做完之后,我们就可以得到一个运行中的程序,简称为进程,对于操作系统来说,光有进程的概念是无法满足高效运行的需求的,因此需要一种执行粒度更细、调度成本更低的执行流,而这就是线程Windows中的线程
文章浏览阅读2.5k次,点赞25次,收藏29次。这说明对于垂直于w的向量,householder变换的作用就是对其不起任何作用,那么对于一个普通的向量v来说,平行于w的分量被householder反向,垂直于w的分量不变,那么最终的效果就是将向量v作关于法向量为w的平面的镜像对称。给定一个m×n的矩阵A,其中m≥n,即矩阵A是高矩阵或者是方阵,QR分解将矩阵A分解为两个矩阵Q和R的乘积,其中矩阵Q是一个m×n的各列正交的矩阵,即QTQ=I,矩阵R是一个n×n的上三角矩阵,其对角线元素为正。,an是线性无关的,而且得到了一个正交向量组q1,q2,_matlab qr分解
文章浏览阅读6k次,点赞7次,收藏5次。前两天接手公司Dorado项目,由于IDEA中没有 Dorado插件,无奈又下载了eclipse(ps:个人还是比较喜欢用idea的)eclipse带Dorado插件的链接:https://pan.baidu.com/s/1SayfdnlWELGuY9AE6BTiKg 提取码:t7vw刚接手Dorado,不太熟找个例子试下,Dorado文档,根据文档介绍,笔者一步一步的开始搭建项目,..._org.springframework.beans.factory.beandefinitionstoreexception: failed to re
文章浏览阅读84次。笔记内容来源于宋浩老师概率论课程_什么时候用古典概型什么时候用全概率公式
文章浏览阅读490次。我们人类在从不同距离,不同方向,不同光照条件下观察一个物体时,虽然这个物体的大小,形状,明暗都会有不同,但是我们仍然可以判断出,它们是同一个物体。由于图片中存在噪声,导数对噪声敏感,如果直接提取边缘,会有许多噪声的地方也会出现极值,所以先用高斯平滑滤波,可以突出图片中边缘,去除噪声;注:由于提取边缘用的高斯滤波,高斯平滑函数的σ决定高斯函数的胖瘦和高低,即决定边缘提取的精度,σ越小,边缘提取越精确。由于图片中的边缘是分布在不同方向上的,比如横着方向提取的边缘,表示图片在这一区域的像素值,横着方向变化剧烈。_数字图像处理学习
文章浏览阅读5.9k次,点赞3次,收藏14次。1、安装软件——KingstVISKingstVSI软件安装地址没有安装难度,就一顿下一步就行,有个驱动安装窗口一定要点安装2、软件安装完,界面如下图:包含4部分:工具栏、通道设备栏、波形显示窗口、采样结果分析窗口..._kingstvis
文章浏览阅读1.6k次。From:http://blog.csdn.net/smstong/article/details/205672350 引言理解vim的启动过程对于增强使用vim的信心非常重要,本文所有的信息均来自vim自身提供的参考手册和作者实际操作实践。VIM REFERENCE MANUAL的Starting Vim这节详细描述了vim的启动过程。vim完整的启动过程非常复杂,因为要_gvim 添加脚本加载路径
文章浏览阅读528次。我用的是当前最新版jdk-7u10-windows-i586。安装时有两个需要选择的安装路径,一个是JDK一个是JRE。两个最好安装在同一文件夹下。jre7即为jre安装文件包。接着便按步骤来,没什么难得。最重要的是设置环境变量,网上的各种教程有些混乱,而且大多没讲清楚,这里简单说一下。配置环境变量只需要配置两个参数:path和classpath。网上有的教程配置了JAVA_jdk7u10windows