Python工程师Java之路(t)使用Shell脚本部署SpringBoot

Web应用部署实战:从传统部署到Docker容器化全流程详解 项目部署是将本地开发环境中的应用迁移至服务器,使其能够对外提供稳定服务的关键环节。其核心原理在于实现环境的一致性、服务的可靠性与访问的可用性。从技术价值看,自动化、标准化的部署流程是提升开发运维效率、保障线上服务稳定性的基石。在应用场景上,无论是单体应用、前后端分离项目,还是微服务架构,都需要根据项目特点选择合适的部署策略。本文聚焦于两种主流部署路径:传统手动部署与基于Docker的容器化部署。传统部署通过SSH、SCP等工具,在服务器上直接配置运行环境、安装依赖并配置Web服务器(如Nginx)与进程管理 阅读详情

1、概述

push
pull
编译 打包 重启
开发环境
Git仓库
服务器
进程
  1. 代码从开发环境上传到Git仓库
  2. 服务器从Git仓库拉取代码
  3. 在服务器上进行编译、打包、重启

2、在服务器上安装Maven

2.1、下载

wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

2.2、解压

tar -zxf apache-maven-3.5.4-bin.tar.gz
mv apache-maven-3.5.4 /opt/module/
/opt/module/apache-maven-3.5.4/bin/mvn -version

2.3、修改配置

vim /opt/module/apache-maven-3.5.4/conf/settings.xml
<!-- 本地仓库存放路径 -->
<localRepository>/opt/module/mavenRepository</localRepository>
<!-- 配置国内镜像,使下载更快 -->
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

2、在服务器上安装Git

2.1、安装git

yum install -y git

2.2、创建仓库地址的目录

mkdir /opt/module/git_repository
chown -R hjw:hjw /opt/module/git_repository

2.3、创建代码仓库(名为hello)

git init --bare /opt/module/git_repository/hello

2.4、免密配置

https://blog.youkuaiyun.com/Yellow_python/article/details/127570500

3、Shell脚本

cd /opt/module/projects
touch SpringBootRestart.sh
chmod 777 SpringBootRestart.sh
vim SpringBootRestart.sh
#!/bin/sh

# artifactId
ARTIFACT=hello
# 版本
VERSION=-0.0.1-SNAPSHOT
# Maven路径
MVN=/opt/module/apache-maven-3.5.4/bin/mvn
# 代码位置
LOC=/opt/module/projects/$ARTIFACT
# jar名
JAR=${ARTIFACT}${VERSION}.jar

pid=`ps -ef|grep ${JAR}|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${pid} ]; then
    echo '停止进程'
    kill -15 $pid
fi
sleep 3
pid=`ps -ef|grep ${JAR}|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${pid} ]; then
    echo '杀进程'
    kill -9 $pid
else
    echo '停止进程成功'
fi

echo '从Git仓库拉取最新代码'
cd $LOC
git pull

echo '打包'
output=`$MVN clean package -Dmaven.test.skip=true`

echo '启动项目'
cd target
nohup java -jar ${JAR} &> ${ARTIFACT}.log &

# 查看进程状态
sleep 2
echo `ps -ef|grep ${JAR}|grep -v grep`

4、SpringBoot部署测试

4.1、使用IDEA创建工程(下面2种方法)

方法1:先创建SpringBoot工程,再去关联Git仓库

方法2:直接创建关联Git仓库的工程

4.2、服务器从仓库下载代码

mkdir -p /opt/module/projects
cd /opt/module/projects
git clone 用户名@主机地址:/opt/module/git_repository/hello

4.3、执行脚本

/opt/module/projects/SpringBootRestart.sh

Claude Code Skill:从代码补全到自动化工作流的AI编程新范式 在软件开发领域,自动化工作流和代码生成是提升工程效率的核心技术。其原理在于将重复性、模式化的开发任务抽象为可执行的脚本或模板,通过参数化配置实现一键执行。这一技术的核心价值在于将资深开发者的经验固化为团队共享的资产,减少人为错误,确保最佳实践的标准化落地。在实际应用场景中,从项目初始化、代码重构到测试生成和部署配置,自动化工作流都能显著降低开发成本。Claude Code的Skill功能正是这一理念的集大成者,它将自然语言交互与自动化脚本相结合,让开发者能够通过对话指令触发复杂的多步骤操作。例如,一个“初始 阅读详情

相关推荐

Ansible自动化部署100台服务器实战指南

Ansible是一种基于SSH的无Agent配置管理工具,其核心价值在于通过声明式语言描述系统期望状态,并依托幂等性保障重复执行的安全性。它不依赖客户端代理,仅需目标主机具备Python和SSH访问能力,天然适配混合云、信创环境及网络设备等异构基础设施。相比Shell脚本或人工运维,Ansible显著提升大规模部署(如100台服务器)的一致性、可追溯性与交付效率,广泛应用于中小企业园区网规划、AI算力服务器编排及Java项目持续交付等场景。本文聚焦Ansible在真实生产环境中的落地实践,涵盖动态主机清单、

weixin_33922670的博客 484

Java: SpringBoot 执行Shell/Bat脚本

通过Java启动Shell、Bat脚本,执行脚本命令,支持接收正常结果及异常结果。

GIS摆渡人 2408

深度剖析CVE-2021-2471:WebLogic反序列化漏洞原理与实战防御

Java反序列化是一种将字节流还原为对象的核心机制,其原理在于反序列化过程中会自动调用对象的特定方法,如readObject()。这一特性在带来便利的同时,也引入了严重的安全风险:当程序反序列化不可信数据时,攻击者可构造恶意对象链,触发危险操作,最终实现远程代码执行。其技术价值在于揭示了企业级中间件在复杂协议处理中的安全盲点。在应用场景上,Java反序列化漏洞常出现在处理RMI、T3、IIOP等协议的服务中,例如Oracle WebLogic Server。本文聚焦于CVE-2021-2471这一经典案例,

chuange6363的博客 417

Java(springboot)执行shell脚本

将shell脚本封装成springboot @service @controller 基于ProcessBuilder实现

村长在路上 2613

生产级机器学习系统:从模型部署到稳定接管的工程实践

机器学习系统在生产环境中的稳定性,远不止于模型精度,其核心是端到端的系统工程能力。当特征管道中断、时间窗口错位、Schema静默漂移或重试风暴发生时,真正决定业务连续性的,是可观测性设计、Fallback机制与延迟预算控制等基础设施能力。本文聚焦金融风控等强监管场景,深入解析特征健康监控、分布漂移分级响应、模型服务性能优化(如ONNX Runtime低延迟部署)及RACI治理矩阵等关键实践,强调‘部署即责任移交’的本质——让模型成为可审计、可降级、可解释、可持续演进的决策组件,而非一次性交付的算法快照。

weixin_30832143的博客 429

CVE-2023-33246漏洞利用工具实战:从原理到自动化RCE检测与利用

远程代码执行(RCE)漏洞是网络安全领域的高危威胁,其原理在于攻击者通过利用应用程序的安全缺陷,在目标系统上执行任意代码。这类漏洞的技术价值在于能够直接危及系统核心安全,常被用于权限提升、数据窃取或横向移动。在消息队列、Web应用等广泛的应用场景中,RCE漏洞的利用往往依赖于对特定协议或接口的深入理解。本文聚焦于一个具体的RCE漏洞实例——CVE-2023-33246,该漏洞影响Apache RocketMQ的NameServer组件。通过剖析其未授权访问和过滤器机制缺陷的原理,我们探讨了如何构建一个集漏洞

weixin_30613343的博客 310

本地AI编程助手部署实战:从环境搭建到项目集成指南

AI智能体(Agent)框架通过集成大模型后端、任务规划引擎和工具集,实现了对复杂开发任务的自动化处理。其核心原理在于将自然语言指令分解为可执行的代码操作序列,并结合项目级上下文理解,提供精准的代码生成与重构建议。这一技术为开发者带来了显著的效率提升,尤其在项目脚手架搭建、代码审查和重复性任务处理场景中价值突出。应用时,本地化部署保障了代码隐私与安全,而开源模型与定制化工具链的融合,则让【大工程师】这类框架能够深度集成到现有开发工作流中,成为提升工程效能的【超级副驾驶】。

weixin_30470643的博客 364

TRAE实战指南:多智能体AI编程工作台本地化部署与全栈协同开发

多智能体系统(MAS)是支撑复杂AI工程落地的核心范式,其本质在于通过角色化Agent分工协作、共享知识图谱、遵循一致性协议,实现从单点代码补全到端到端工程闭环的跃迁。TRAE作为国内首个面向生产环境的本地化AI协作者底座,以TRAE Solo为核心引擎,不依赖云端API,支持SSH远程调度、CLI统一编排、IDE轻量集成,真正将AI嵌入Git提交、PR审查、CI测试等日常研发流程。它融合多智能体系统一致性、技能插件沙箱化、项目知识图谱构建等关键技术,适用于Spring Boot微服务、微信AI Agent

weixin_30443747的博客 421

AI工程师认证全解析:从核心能力到认证策略的实战指南

在人工智能技术快速发展的背景下,理解认证体系与工程师核心能力的关系至关重要。认证的本质是对特定技术能力的标准化验证,其价值在于为学习路径提供清晰指引,并作为职业发展的“敲门砖”。从技术原理上看,一个合格的AI工程师需要构建包含基础工程、机器学习、领域知识及系统安全在内的复合能力体系。在工程实践中,诸如API开发、容器化部署、模型服务化等技能,与`springboot接口token认证`、`OAuth2.0认证`等企业级安全规范紧密结合,确保了AI应用在生产环境中的可靠性与安全性。对于希望进入大模型应用领域的

weixin_30718391的博客 460

大厂Python自动化测试面试题合集

题目:函数的作用是什么?调用函数的语法?答案:将独立功能代码封装成模块,复用代码;函数名(实参)。题目:函数 return 作用是什么?无 return 时函数返回什么?多返回值底层是什么类型?答案:返回函数执行结果;无 return 默认返回 None;return x,y,z 底层自动封装为元组。题目:函数四大参数类型分别是什么?定义顺序要求?答案:必选参数、默认参数、可变位置 * args、命名关键字、可变关键字 **kwargs;顺序:必选→默认→*args→命名关键字→**kwargs。

悦分享 105

别再为Word转PDF表格变形发愁了!Aspose.Words for Java 19.5 保姆级避坑指南

本文详细介绍了使用Aspose.Words for Java 19.5解决Word转PDF时表格变形问题的完整方案。从格式转换原理到实战技巧,涵盖固定表格宽度、禁用自动调整、强制文本换行等核心方法,并提供高级场景应对策略和性能优化建议,帮助开发者高效处理复杂文档转换需求。

weixin_28702105的博客 267

python虚拟环境搭建与工程化实战

python虚拟环境、项目依赖、工程化管理深入研究与分析

yanghuashuiyue的专栏 1501

Gamit10.71添加新的天线类型

添加新的天线类型需要涉及到四个文件:antmod.dat,rcvant.dat,guess_rcvant.dat,hi.dat。 注意:格式要一致!!! 举例说明,我要添加一个JCA229的天线(带JCAD天线罩),对应接收机使用的是南方的South Net-S9。

Penny的博客 2713

运维3年裸辞转行:告别7×24小时背锅,我用4个月逆袭上岸(附全流程实操指南)

运维转行,从来都不是一件容易的事,但也没有想象中那么难。对于运维从业者而言,我们有扎实的IT基础,只要明确方向、做好计划、坚持实战、避开坑点,无论是边工作边准备,还是裸辞转型,都能成功实现职业跨越,摆脱“7×24小时待命”“背锅常态化”的困境,找到更适合自己的技术赛道。如果你现在正在运维岗位上迷茫,不知道未来该怎么走,不妨勇敢一点,尝试转型,也许会有不一样的收获。最后,祝愿所有运维同行,都能找到自己的职业方向,在技术道路上稳步前行,实现自己的职业价值!

2301_79455190的博客 476

DeepSeek的训练与优化流程

DeepSeek的训练体系不仅追求极致的计算效率,更注重将物理规律、人类知识、安全伦理深度融入训练过程,其"效率-安全-可解释性"三角平衡的设计理念,为行业提供了重要参考范式。

m0_56896669的博客 1438

Ubuntu+Dify实战:如何让大模型知识库完美支持图片召回(附避坑指南)

本文详细介绍了在Ubuntu系统上部署Dify平台,并实现大模型知识库图片召回功能的完整实战方案。通过解析Dify处理图片的底层逻辑,重点讲解了配置Nginx代理服务器将本地图片路径转换为可公开访问URL的核心工程步骤,并提供了文档预处理、环境变量配置以及父子分段策略等高级技巧,帮助开发者构建图文并茂的AI应用,有效提升知识库的丰富性和用户体验。

c7d8e的博客 447

AutoGPT思想赋能DevOps:构建智能部署与监控流水线实战

在软件工程领域,自动化是提升效率与可靠性的核心驱动力。其基本原理是通过脚本或工具替代人工重复操作,实现从代码提交到应用上线的标准化流程。这一技术价值在于显著减少人为错误、加速交付周期并保障服务稳定性。典型的应用场景包括持续集成、自动化测试、一键部署及基础设施监控。随着AI智能体技术的发展,以AutoGPT为代表的“任务自主拆解与执行”范式,为传统自动化注入了决策与自适应能力。本文聚焦于如何将这一思想融入DevOps实践,通过结合成熟的CI/CD工具链与监控体系,构建更智能的运维流程。例如,在实现jenkin

anqiu4023的博客 402

【ROS学习笔记】8.话题消息(Message)的定义与使用

ROS学习笔记8——话题消息(Message)的定义与使用

takedachia的博客 9548

2026企业级AI编程助手私有化部署权威选型指南

AI编程助手作为生成式AI在研发效能领域的核心落地形态,其本质是将大模型能力工程化封装为可治理、可审计、可运维的内部服务。技术原理上需融合代码理解(AST+语义图谱)、RAG知识增强(多源异构解析与权限穿透)、IDE深度集成(上下文感知与光标智能定位)及安全闭环(实时敏感过滤、输出水印、全链路审计日志)。其技术价值在于保障数据主权、满足等保三级与信创合规要求,并支撑千人级并发下的稳定低延迟响应。典型应用场景覆盖金融、政务、能源、制造等行业研发中台建设,尤其适用于已完成AI试点、正推进生产环境规模化落地的20

weixin_30561177的博客 460

AI智能体实战:从LangChain到多智能体协作的自动化新范式

在人工智能技术快速发展的今天,大语言模型(LLM)已成为推动自动化变革的核心驱动力。其原理在于通过深度学习海量文本数据,使模型能够理解、生成自然语言并执行推理任务。这一技术进步催生了AI智能体(AI Agent)这一新兴概念,它赋予自动化系统自主决策和动态规划能力,从而突破了传统脚本和RPA工具在固定流程上的局限。从技术价值看,AI智能体框架通过封装LLM调用、工具集成与流程编排,显著降低了构建复杂人机协同应用的开发门槛。在实际应用场景中,智能体尤其擅长处理信息调研、内容创作辅助、数据分析等需要处理非结构化

weixin_33730836的博客 773

uniapp - 详解使用高德地图在地图上实现绘制边界/点聚合/行政区域高亮等功能,Uniapp高德地图点聚合标记及绘制点线面示例代码(全端兼容H5网页、小程序、安卓app、苹果app、nvue)

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,高德地图,uniAPP高德地图实现点聚合,地图区域描边、点标记、点信息详情弹窗,实现绘制边界区域,uniapp H5使用高德地图实现点聚合、行政区域高亮,实现高德地图的marker聚合功能,高德地图进行marker标点,点信息展示,点击标记点弹出对话框,点击聚合点后显示信息模态框,打标点,【Uniapp】高德地图的接入自定义标点与信息窗体使用,绘制行政区域边界,绘制多边形,电子围栏,高德行政区划边界,

✅ 精选推荐文章 1万+

基于ChatGLM3-6B构建企业级DevOps AI助手:从设计到落地实践

大语言模型(LLM)通过理解与生成自然语言,正逐步改变人机交互方式。其核心原理是基于海量数据训练出的Transformer架构,能够捕捉复杂的语义关联。在工程实践领域,这种能力的技术价值在于将非结构化的人类指令转化为结构化的、可执行的操作,从而显著降低技术工具的使用门槛。具体到软件开发领域,持续集成/持续部署(CI/CD)是现代DevOps实践的关键环节,但复杂的流水线配置和问题排查往往耗费开发者大量精力。通过为大模型集成工具调用(Function Calling)能力,并构建安全沙箱,可以将其从通用的对话

weixin_34315485的博客 381

【DDR5 PCB走线SI/PI仿真调试】详细全攻略

问题场景发现症状优化措施过孔Stub效应TDR波形尖峰,信号反射严重使用盲孔,背钻减少Stub,降低Via数量串扰过大眼图闭合,误码率增加增加走线间距,插入地线隔离,减少平行长度电源阻抗过高PDN谐振导致纹波大多频率去耦,靠近电源引脚布置多档电容,合理分层信号时序失配优化走线长度匹配,避免信号走线跨层跳变DDR5设计不仅是硬件的挑战,更是仿真能力的考验。掌握SI/PI仿真,理解信号背后的物理本质,才能真正把握高速接口的“灵魂”!

weixin_43199439的博客 989

开发者技术性躺平指南:极简环境、清晰代码与自动化实践

在软件工程领域,降低认知负载和提升开发效率是核心追求。通过理解极简主义原则,开发者可以优化工作流,减少不必要的复杂性。其技术价值在于将精力聚焦于核心业务逻辑与创新,而非琐碎的配置和重复劳动。应用场景涵盖本地开发环境搭建、代码结构设计、团队协作规范以及持续集成部署等全流程。本文以环境配置极简化、代码结构清晰化、自动化工具引入为切入点,系统阐述如何通过减少认知负载和引入自动化脚本,实现开发工作的降本增效与可持续性。

weixin_34220179的博客 397

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

技术文章系列整理(持续更新)

本博客有很多关于性能及测试开发的文章。我试着对你可能感兴趣的一些重要文章进行分类。

7DGroup,让技术更有价值! 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Linux Systemd服务配置实战:实现应用开机自启与优雅关闭

在服务器运维和后台服务开发中,进程管理与自动化部署是保障系统稳定性的核心技术。其核心原理是通过操作系统提供的服务管理框架,将应用程序封装为系统服务,实现后台守护、自动重启和生命周期管理。这项技术的核心价值在于提升服务可靠性、简化运维操作,并确保业务连续性,广泛应用于Web服务器、数据库、消息队列及各类自定义后台任务的部署场景。以Linux Systemd为例,通过编写.service单元文件,可以精细控制服务的启动顺序、运行用户、重启策略和资源限制。本文聚焦于Systemd服务配置的工程实践,详细解析如何将

weixin_30471561的博客 387

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 海南三亚游记2022-2023跨年
下一篇: 海岛旅行回忆总结(不定更)
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值