当前位置: 首页 > news >正文

网站如何盈利有哪些招聘网站

网站如何盈利,有哪些招聘网站,汽车网站名称,dedecms中英文网站开发前言 呵呵 最近有一些构建服务, 发布服务的一些需求 我们这里的服务 一般来说是 java application, spring boot application 针对发布, 当然最好是 增量发布, 尽量的减少需要传递给 发布服务器 的资源的大小 比如 我的这个 java application, 可能会存在很多依赖, 常规…前言 呵呵 最近有一些构建服务, 发布服务的一些需求  我们这里的服务 一般来说是 java application, spring boot application  针对发布, 当然最好是 增量发布, 尽量的减少需要传递给 发布服务器 的资源的大小   比如 我的这个 java application, 可能会存在很多依赖, 常规有很多种做法  1. 吧 application 和其依赖绑定打成一个 fat jar, 然后传到发布服务器上面, java -jar $jar  2. 通过 classpath 来关联依赖的 jar, java -classpath $classpath -jar $appJar 或者 java -classpath $classpath:$appJar $mainClazz  假设依赖很多的话, 方式 显然会传递很多 大概率不会变化的依赖的数据, 造成一些 不必要的麻烦, 时间开销 等等  我们这里会 介绍一些场景来尽可能的减少发布所需要的一些数据, 将一些稳定的数据 一直保存在发布服务器上面就好  但是依然会存在一些问题, 希望您看完之后 有所收获  1. 如何更加 轻量级 的发布 java application  1. 比如 $classpath 太长的情况下, 怎么处理, 命令行支持的命令的长度是有限的, 应该怎么处理 ?  2. spring boot 的包包括了依赖, 应该怎么 更加轻量级的发布 ?  java application 启动的一些方式 抽象的来说又如下几种启动方式  1. java -classpath $classpath $mainClazz 2. java -classpath $classpath -jar $jar  但是我们这里要讨论如下几种情况, 当然 都可以抽象为上面两种方式, 但是 在一些特殊的场景有一些特殊的使用, 因此我们单独拎出来  1. java -classpath $classpath $mainClazz 2. java -jar $jar 3. java -classpath $classpath -jar $jar 4. java CommandlineRunner $classpathFile $mainClazz 5. java -jar $shortenJar $mainClazz 6. java -jar $springbootJar1. java -classpath $classpath $mainClazz 这个就是我们最常见的了, 通过 -classpath 选项指定 classpath, 然后 $mainClazz 是启动类, 寻找 classpath 中的 $mainClazz, 然后调用 $mainClazz 的 main 方法  不多赘述  2. java -jar $jar 这个就是 直接通过 jar 来启动, 清单文件中包含了需要的 $classpath 和 $mainClazz  寻找 classpath 中的 $mainClazz, 然后调用 $mainClazz 的 main 方法  不多赘述  3. java -classpath $classpath -jar $jar 在 2 的基础上增加了 指定 -classpath  不多赘述  4. java CommandlineRunner $classpathFile $mainClazz 这个就是 idea 提供的缩短 classpath 的方案之一  通过 CommandlineRunner 代理一次, 从外部读取 classpath, 放入 classloader, 然后再 查找 $mainClazz, 调用 main 方法  具体的实现, 请参见  idea 的 CommandlineRunner  然后启动的方式大致如下, 抽象的来说可以归类为 java -classpath $classpath $mainClazz  /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/java -Dfile.encodingUTF-8 com.intellij.rt.execution.CommandLineWrapper /private/var/folders/pw/lb8dvl7d6474r5plrnwtcp180000gn/T/idea_classpath880125671 com.hx.test12.Test02WechatJson 然后 $claspathFile 中的内容大致如下  /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/jconsole.jar /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/packager.jar /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/sa-jdi.jar /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/tools.jar /Users/jerry/IdeaProjects/HelloWorld/target/classes /Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar /Users/jerry/.m2/repository/com/hx/HXLog/0.0.2/HXLog-0.0.2.jar /Users/jerry/.m2/repository/com/hx/HXCommon/0.0.2/HXCommon-0.0.2.jar /Users/jerry/.m2/repository/com/hx/HXJson/0.0.2/HXJson-0.0.2.jar 5. java -jar $shortenJar $mainClazz  这个就是 idea 提供的缩短 classpath 的方案之一  idea 生成一个 $classpathJar 里面通过 清单文件 指定了所有的 classpath, 然后搜索 $mainClazz, 调用 main 方法  然后启动的方式大致如下, 抽象的来说可以归类为 java -classpath $classpath $mainClazz  /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/java -Dfile.encodingUTF-8 -classpath /private/var/folders/pw/lb8dvl7d6474r5plrnwtcp180000gn/T/classpath298101813.jar com.hx.test12.Test02WechatJson $shortenJar 里面仅仅包含一个 清单文件, 里面的 classpath 如下 注意清单文件是有规范的, 比如这里一行多少字符, 换行之后几个空格, 这些都是有约束的  6. java -jar $springbootJar 我们做 spring boot 项目, 打包的话 可以直接生成一个可执行的 jar 直接 java -jar $springbootJar 就可以启动服务了, 非常方便  当然 也是 spring 代理了一次, 后面将执行工作交给了我们的 XXXApplication  里面的查询 类 spring 自己封装了一套 seach 体系  如何更加 轻量级 的发布 java application  呵呵 这里主要介绍一些 我们平时项目中应该怎么更加轻量级的发布 普通的 java application  首先 打包只需要打包 我们经常变化的部分  其他的相对比较固定的依赖 等等, 可以直接上传到服务器 我们通过 classpath 来关联  $classpath 太长的情况我们应该怎么处理?, idea 提供了两种解决方式  但是 我们这里显然是更加适合 CommandlineRunner 的处理方式, 因此 需要自己吧 CommandlineRunner dump 出来, 可能需要稍微做一些调整, 原有的 CommandlineRunner 在读取了 $classpathFile 之后就删除了该文件, 我们这里 显然是不想删除 $classpathFile  思路 大体就这些, 接下来 分享一些 发布相关脚本   总体分为三类文件, 一类是 common 脚本, 一类是应用脚本, 一类是 CommandlineRunner 所在的包  common 这边主要是提供一些公共的服务, 比如 启动, 关闭, 备份 等等  应用这边主要提供 启动服务, 关闭服务, 备份服务, 重启服务, 发布服务 等等  CommandlineRunner 主要是提供 shorten $classpath 的服务  CommandlineRunner 我们这里就不多赘述了, 自己参见 idea 的 CommandlineRunner 即可, 我这里也只是封装了一个 bootstrap/CommandlineRunner.jar 而已  common/backup.sh  echo backup start ... SCRIPT_DIR$(cd $(dirname $0); pwd) MY_BASE_DEFAULT$(cd $SCRIPT_DIR; cd ..; pwd) PWDpwd MY_BASE${MY_BASE-$MY_BASE_DEFAULT} project$1 mainClazz$2echo -e \ env as follows \n \ SCRIPT_DIR : $SCRIPT_DIR \n pwd : $PWD \n MY_BASE : $MY_BASE \n project : $project \n \ mainClazz : $mainClazz \ if [ $project ]; thenecho please specify project at \$1 exit fi if [ $mainClazz ]; thenecho please specify main clazz file at \$2 exit fiprojectFolder$MY_BASE/$project if [ ! -d $projectFolder ]; thenecho project folder $projectFolder does not exists, please check that exit fi# do business curDate$(date %Y-%m-%d) curTime$(date %H-%M-%S)bakDir$MY_BASE/bak/$curDate/$project/$curTime mkdir -p $bakDirecho backup project $project to $bakDir # 1. zip dev/bak first, then transfer bak.zip zip -r $projectFolder/dev/bak.zip $projectFolder/dev/bak/* rm -rf $projectFolder/dev/bak/* mv $projectFolder/dev/bak.zip $projectFolder/dev/bak/bak.zip cp -r $projectFolder/dev/bak/* $bakDir/ 2/dev/null echo copied /dev/bak/* in project $project to $bakDir echo backup end ... common/commandLineWrapperStartUp.sh echo startup start ... SCRIPT_DIR$(cd $(dirname $0); pwd) MY_BASE_DEFAULT$(cd $SCRIPT_DIR; cd ..; pwd) PWDpwd MY_BASE${MY_BASE-$MY_BASE_DEFAULT} project$1 ideaClasspathFile$2 mainClazz$3 mainArgs$4echo -e \ env as follows \n \ SCRIPT_DIR : $SCRIPT_DIR \n pwd : $PWD \n MY_BASE : $MY_BASE \n project : $project \n \ ideaClasspathFile : $ideaClasspathFile \n mainClazz : $mainClazz \n mainArgs : $mainArgs \ if [ $project ]; thenecho please specify project at \$1 exit fi if [ $ideaClasspathFile ]; thenecho please specify idea classpath file at \$2 exit fi if [ $mainClazz ]; thenecho please specify main clazz file at \$3 exit fiprojectFolder$MY_BASE/$project ideaClasspathFileFullpath$MY_BASE/$project/$ideaClasspathFile if [ ! -d $projectFolder ]; thenecho project folder $projectFolder does not exists, please check that exit fi if [ ! -f $ideaClasspathFileFullpath ]; thenecho idea classpath file $ideaClasspathFileFullpath does not exists, please check that exit fiEXISTS_PIDjps -lvm | grep $mainClazz | grep -v grep | awk {print $1} if [ $EXISTS_PID ]; then # nohup java -cp $MY_BASE/common/Bootstrap.jar com.hx.idea.CommandLineWrapper $ideaClasspathFile $mainClazz $mainArgs ./logs/nohup.log 21 java -jar /meiya/bootstrap/CommandLineWrapper.jar $ideaClasspathFileFullpath $mainClazz $mainArgs logs/nohup.log 21 # tail logsleep 3sEXISTS_PIDjps -lvm | grep $mainClazz | grep -v grep | awk {print $1}echo the main class $mainClazz startup succeed, running at $EXISTS_PID tail -f logs/nohup.log elseecho the main class $mainClazz already running at $EXISTS_PID fiecho startup end ... common/commandLineWrapperShutdown.sh echo shutdown start ... SCRIPT_DIR$(cd $(dirname $0); pwd) MY_BASE_DEFAULT$(cd $SCRIPT_DIR; cd ..; pwd) PWDpwd MY_BASE${MY_BASE-$MY_BASE_DEFAULT} project$1 mainClazz$2echo -e \ env as follows \n \ SCRIPT_DIR : $SCRIPT_DIR \n pwd : $PWD \n MY_BASE : $MY_BASE \n project : $project \n \ mainClazz : $mainClazz \ if [ $project ]; thenecho please specify project at \$1 exit fi if [ $mainClazz ]; thenecho please specify main clazz file at \$2 exit fiprojectFolder$MY_BASE/$project if [ ! -d $projectFolder ]; thenecho project folder $projectFolder does not exists, please check that exit fiEXISTS_PIDjps -lvm | grep $mainClazz | grep -v grep | awk {print $1} if [ $EXISTS_PID ]; thenecho the main class $mainClazz does not startup elsekill -9 $EXISTS_PIDecho the main class $mainClazz shutdown succeed, kill -9 $EXISTS_PID fiecho shutdown end ... $appHome/startUp.sh  ../common/commandLineWrapperStartUp.sh $APP_NAME ./dev/conf/gen_idea_classpath.txt org.springframework.boot.loader.JarLauncher $appHome/shutdown.sh  ../common/commandLineWrapperShutdown.sh $APP_NAME org.springframework.boot.loader.JarLauncher $appHome/restart.sh  # 1. shutdown echo ./shutdown.shsleep 3s# 2. startup echo ./startUp.sh $appHome/backup.sh  bakDir./dev/bak rm -rf $bakDir mkdir -p $bakDirecho prepare copy files to /dev/bak cp *.properties $bakDir/ 2/dev/null echo copied *.properties to $bakDir cp *.txt $bakDir/ 2/dev/null echo copied *.txt to $bakDir cp *.jar $bakDir/ 2/dev/null echo copied *.jar to $bakDir cp *.xml $bakDir/ 2/dev/null echo copied *.xml to $bakDir cp *.sh $bakDir/ 2/dev/null echo copied *.sh to $bakDir cp -r resources $bakDir/ 2/dev/null echo copied /resources to $bakDir echo copied files to /dev/bak echo ../common/backup.sh $APP_NAME org.springframework.boot.loader.JarLauncher $appHome/release.sh  mainJar$APP_NAME-0.0.1.jar updatedMainJar$APP_NAME-0.0.1.jar.0# 0. sanity check # ifs update for filename with blank echo SAVED_IFS$IFS IFS$(echo -en \n\b)if [ ! -f $updatedMainJar ]; thenecho the newMainJar $updatedMainJar does not exists, please check that exit fi# 1. backup first ./backup.sh# 2. shutdown echo ./shutdown.sh# 3. release jar echo rm -rf $mainJar echo removed oldMainJar $mainJar move $updatedMainJar $mainJar echo rebuild $mainJar succeed sleep 3s# 4. startup echo ./startUp.sh# restore ifs IFS$SAVED_IFS新增一个项目, 需要拷贝一套 应用脚本, 然后需要调整一些配置  1. startUp.sh 需要调整 $APP_NAME, $classpathFIle, $mainClazz  2. shutdown.sh 需要调整 $APP_NAME, $mainClazz  3. restart.sh 不需要调整  4. backup.sh 需要调整 备份的业务, $APP_NAME, $mainClazz  5. release.sh 需要调整 $mainJar, $updatedMainJar, 发布的业务  spring boot 的包包括了依赖, 应该怎么 更加轻量级的发布 ?  这里的思路也很简单, 发布的服务器上面存放一份完整的 $springbootJar 的解压的版本 deflatedJar, 里面包含了 项目的 class, 配置文件, 依赖信息, spring 的代理信息 等等  然后我们通过 maven 打包 spring boot 项目之后, 清理掉较大的 依赖 这部分 jar, 这时候 整个 jar 包就比较小了  然后 上传到发布服务器, 然后 解压待发布的 jar, 覆盖 deflatedJar 里面的已有的内容, 然后再重新打 jar 包, 然后替换掉之前的 发布包, 然后启动服务即可  主要是 release.sh 中的 发布的这一部分需要做一些调整  # 3. release jar echo rm -rf $mainJar echo removed oldMainJar $mainJar # unzip -o -d deflatedJar/ $APP_NAME-0.0.1.jar.0 unzip -o -q -d deflatedJar/ $updatedMainJar echo deflated lastest jar into defaltedJar/ rm -rf $updatedMainJar echo removed updatedMainJar $updatedMainJar rm -rf deflatedJar/BOOT-INF/classes/application.yml cp application.yml deflatedJar/BOOT-INF/classes/application.yml echo replace application.yml to BOOT-INF/classes/application.yml cd deflatedJar # zip -r -0 ../$APP_NAME-0.0.1.jar . zip -r -q -0 ../$mainJar . cd .. echo rebuild $mainJar succeed 完
http://www.hkea.cn/news/14536740/

相关文章:

  • 2023年度最火关键词岳阳seo招聘
  • 国外企业招聘网站wap网站和app的区别
  • 石家庄网站制作官网南宁营销型网站制作
  • 网站怎么做免费seo快排
  • 网站开发游戏程序开发如何做一个属于自己的网站
  • 阳江房地产信息网官方网站企业微信平台
  • 网站建设咨询做视频找素材的网站有哪些
  • 成都电子商城网站开发wordpress个性登录
  • 舟山市普陀区建设局网站wordpress主题文章列表的
  • 网站运营与推广计划书建筑网格图绘制
  • qq游戏做任务领铜板网站沈阳市城市建设管理局网站
  • 做网站如何引用头部免费行情软件网站大全
  • 梁山做网站的公司wordpress条件搜索
  • 好网站推荐一下长沙网页设计培训班在哪里
  • 简述建设一个商务网站的过程推进网站集约化建设
  • 校园网站建设管理制度杭州职称评审系统网站
  • ae模板免费网站wordpress更换文章背景色
  • 为什么网站搜索不到网站锚点怎么用
  • 品牌展示榜ui做的好的网站网站开发公司 广告词
  • 个人做网站名称可以随意更改吗男男做爰视频网站
  • 网站网页设计尺寸定制应用软件有哪些
  • 自己做个网站多少钱培训网络营销的机构
  • c 网站开发视频教程网站建设实施方案及预算
  • 古田路9号设计网站万网网站建设流程
  • 做网站点击挣钱不?关于征求网站建设
  • 网站怎样做 文件签收义乌专业做网站的
  • 深圳品牌学校网站建设济南做外贸网站的公司
  • 如何建设基层网站黑龙江省住房与城乡建设厅网站
  • 做网站是怎么回事人工智能网站应怎么做
  • 网站开发项目的规划与设计文档黑龙江建设网查ca证书