引言
部署方式:
- tomcat
- java -jar
- docker: 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Docker的应用场景:
-
Web 应用的自动化打包和发布
。 - 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
Rancher是一个开源的企业级容器管理平台。
通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。
Rancher的基础设施服务包括网络, 存储, 负载均衡, DNS和安全模块。Rancher的基础设施服务也是通过容器部署的,所以同样Rancher的基础设施服务可以运行在任何Linux主机上。 rancher.com/docs/ranche…
I 手动部署
1.1 java -jar
打包:mvn clean package -Dmaven.testskip=true
拷贝scp target/xx.jar root@192.168.30.13:/opt/javaapps
启动:java -jar -Dserver.port=8099 xx.jar
打包的执行顺序:
- 使用清理插件:maven-clean-plugin:2.5执行清理删除已有target目录(版本2.5);
- 使用资源插件:maven-resources-plugin:2.6执行资源文件的处理(版本2.6);
- 使用编译插件:maven-compiler-plugin:3.1编译所有源文件生成class文件至target\classes目录下(版本3.1);
- 使用资源插件:maven-resources-plugin:2.6执行测试资源文件的处理(版本2.6);
- 使用编译插件:maven-compiler-plugin:3.1编译测试目录下的所有源代码(版本3.1);
- 使用插件:maven-surefire-plugin:2.12运行测试用例(版本2.12);
- 使用插件:maven-jar-plugin:2.4对编译后生成的文件进行打包,包名称默认为:artifactId-version,
比如本例生成的jar文件:rtp-front-1.0-SNAPSHOT,包文件保存在target目录下(这个生成的包不能在命令行中直接执行,因为我们还没有入口类配置到Manifest资源配置文件中去)。
filename 可以在pom.xml中指定。
1.2 多环境配置
通过spring.profiles.active来具体激活一个或者多个配置文件
1.3 后台启动
nohup Command [ Arg … ] [ & ]
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍旧执行。
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
后台启动web项目
Mac 后台启动新的微信客户端进程
1.4 添加开机启动项:systemd服务
使用 nohup 和 & 这种方式启动jar包的话,只会放在后台里面执行,如果某天,人为或机器故障等原因,触发机器重启了,那样程序就会关闭。 所以推荐使用Centos7系统自带的systemctl管理实现一个开启自动管理。
Systemd Service 是一种替代/etc/init.d/下脚本的更好方式,它可以灵活的控制你什么时候要启动服务,一般情况下也不会造成系统无法启动进入紧急模式。所以如果想设置一些开机启动的东西,可以试着写 Systemd Service。
使用systemctl start xxx启动服务,开机启动systemctl enable xxx启动服务
。
systemctl 新增服务: 进入system目录 cd /usr/lib/systemd/system
创建service启动文件
ExecStart:在输入的命令是start时候执行的命令,这里的命令启动的程序必须使用绝对路径,比如你必须用/sbin/arp而不能简单的以环境变量直接使用arp。 ExecStop:在输入的命令是stop时候执行的命令,要求同上。 ExecReload:这个不是必需,如果不写则你的service就不支持restart命令。ExecStart和ExecStop是必须要有的。
Type:服务的类型,各种类型的区别如下所示
- simple:默认,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出那么一切皆休。
- forking:标准 Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。
- oneshot:适用于那些被一次性执行的任务或者命令,它运行完成后便了无痕迹。因为这类服务运行完就没有任何痕迹,我们经常会需要使用 RemainAfterExit=yes。意思是说,即使没有进程存在,Systemd 也认为该服务启动成功了。同时只有这种类型支持多条命令,命令之间用;分割,如需换行可以用\。
- dbus:这个程序启动时需要获取一块 DBus 空间,所以需要和 BusName= 一起用。只有它成功获得了 DBus 空间,依赖它的程序才会被启动。
使用Systemd运行Java Jar应用程序:
tomcat
II 常用工具
2.1 用压测模拟并发
Apache ab,模拟并发性,简单,要求低,不会占用很多的cpu,也不会占用很多内存。
ab -n 100 -c 100 接口地址(-n 表示发出100个请求 ,-c 表示100个并发)
ab -t 60-c 100 接口地址 (-t 表示连续60秒内不停发请求,-c 表示100个并发)
————————————————
版权声明:本文为CSDN博主「iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:[blog.csdn.net/z929118967/…blog.csdn.net/z929118967/…
)
2.2 Swagger RESTful 风格的 Web 服务框架
2.3 Tyk
Tyk 是一个开源的、轻量级的、快速可伸缩的 API 网关,支持配额和速度限制,支持认证和数据分析,支持多用户多组织,提供全 RESTful API。
2.4 生成唯一的主键
III jpa & mybatis
- 使用SQL建表
- 表和表之间的关系推荐使用代码逻辑去控制,方便进行扩展(分表),不推荐使用注解。
注解 | 含义 |
@ManyToOne | 定义了连接表之间的多对一的关系。 |
@OneToMany | 定义了连接表之间存在一个一对多的关系。 |
3.1 jpa
- 添加依赖
- 在application.yml文件中添加数据库配置
- 创建实体
-
PersonRepository.java
接口继承JpaRepository接口
- 使用personRepository
注解 | 解释 |
@Entity | 声明类为实体或表。 |
@Table | 声明表名。 |
@Basic | 指定非约束明确的各个字段。 |
@Embedded | 指定类或它的值是一个可嵌入的类的实例的实体的属性。 |
@Id | 指定的类的属性,用于识别(一个表中的主键)。 |
@GeneratedValue | 指定如何标识属性可以被初始化,例如自动、手动、或从序列表中获得的值。 |
@Transient | 指定的属性,它是不持久的,即:该值永远不会存储在数据库中。 |
@Column | 指定持久属性栏属性。 |
@SequenceGenerator | 指定在@GeneratedValue注解中指定的属性的值。它创建了一个序列。 |
@TableGenerator | 指定在@GeneratedValue批注指定属性的值发生器。它创造了的值生成的表。 |
@AccessType | 这种类型的注释用于设置访问类型。如果设置@AccessType(FIELD),则可以直接访问变量并且不需要getter和setter,但必须为public。如果设置@AccessType(PROPERTY),通过getter和setter方法访问Entity的变量。 |
@JoinColumn | 指定一个实体组织或实体的集合。这是用在多对一和一对多关联。 |
@UniqueConstraint | 指定的字段和用于主要或辅助表的唯一约束。 |
@ColumnResult | 参考使用select子句的SQL查询中的列名。 |
@ManyToMany | 定义了连接表之间的多对多一对多的关系。 |
@ManyToOne | 定义了连接表之间的多对一的关系。 |
@OneToMany | 定义了连接表之间存在一个一对多的关系。 |
@OneToOne | 定义了连接表之间有一个一对一的关系。 |
@NamedQueries | 指定命名查询的列表。 |
@NamedQuery | 指定使用静态名称的查询。 |
3.2 mybatis
IV 常用第三方Java SDK
4.1 FreeMarker
FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 FreeMarker 是 免费的, 基于Apache许可证2.0版本发布。
修改模版之后,只要编译工程就可以生效,对应的idea的快捷键是command+F9。
4.2 微信相关
官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7
- 微信授权、微信模版消息、微信开发平台
微信开发 Java SDK ,支持包括微信支付,开放平台,小程序,企业微信,公众号等的后端开发 github.com/Wechat-Grou…
- 微信支付:
要求JDK8+ github.com/Pay-Group/b… IDE 需安装 lombok 插件
4.3 webscoket
使用 @ServerEndpoint 注解方式
- 添加 ServerEndpointExporter 到 IOC 容器中
- 使用@ServerEndpoint
4.4 Spring Data Redis
Spring Data Redis是较大的Spring数据家族的一部分,它提供了从Spring应用程序轻松配置和访问redis的功能
。
Redis可视化工具 Redis Desktop Manager
:
官网下载:redisdesktop.com/download