linux cpu占用率如何看
281
2022-09-20
Java常用工具
引言
部署方式:
tomcatjava -jardocker: 是一个开源的应用容器引擎,基于 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来具体激活一个或者多个配置文件
//开发环境java -jar app.jar --spring.profiles.active=dev--server.port=8060//测试环境java -jar app.jar --spring.profiles.active=qa --server.port=8060//生产环境java -jar app.jar -Dspring.profiles.active=prod --server.port=8060
1.3 后台启动
nohup Command [ Arg … ] [ & ]
Command:要执行的命令。Arg:一些参数,可以指定输出文件。&:让命令在后台执行,终端退出后命令仍旧执行。
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
后台启动web项目
nohup java -jar sell.jar > /dev/null 2>&1 &
nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null &
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启动文件
[Unit]Description=xxxAfter=syslog.target network.target[Service]Type=simpleExecStart=/usr/bin/java-jar/opt/javaapps/sell.jarExecStop=/bin/kill-15 $MAINPIDUser=root Group=root[Install]WantedBy=multi-user.target
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应用程序:
[Unit]Description=service for descriptionAfter=syslog.target network.target remote-fs.target nss-lookup.target[Service]Type=forkingExecStart=/java-service/shell/xxx-startExecStop=/java-service/shell/xxx-stopPrivateTmp=true[Install]WantedBy=multi-user.target
tomcat
[Unit]Description=tomcatapiAfter=network.target[Service]Type=forkingExecStart=/usr/local/apache-tomcat-8.5.29/bin/startup.shExecReload=ExecStop=/usr/local/apache-tomcat-8.5.29/bin/shutdown.shPrivateTmp=true[Install]WantedBy=multi-user.target
II 常用工具
2.1 用压测模拟并发
Apache ab,模拟并发性,简单,要求低,不会占用很多的cpu,也不会占用很多内存。
ab -n 100 -c 100 接口地址(-n 表示发出100个请求 ,-c 表示100个并发)
ab -t 60-c 100 接口地址 (-t 表示连续60秒内不停发请求,-c 表示100个并发)
)
2.2 Swagger RESTful 风格的 Web 服务框架
2.3 Tyk
Tyk 是一个开源的、轻量级的、快速可伸缩的 API 网关,支持配额和速度限制,支持认证和数据分析,支持多用户多组织,提供全 RESTful API。
2.4 生成唯一的主键
public class KeyUtil{ /** * 生成唯一的主键 * 格式: 时间+随机数 * synchronized 在高并发也能保证不会重复 * @return public static synchronized String genUniqueKey(){ Random random = new Random(); Integer number = random.nextInt(900000) + 100000; return
III jpa & mybatis
使用SQL建表表和表之间的关系推荐使用代码逻辑去控制,方便进行扩展(分表),不推荐使用注解。
注解 | 含义 |
@ManyToOne | 定义了连接表之间的多对一的关系。 |
@OneToMany | 定义了连接表之间存在一个一对多的关系。 |
3.1 jpa
添加依赖
在application.yml文件中添加数据库配置
spring: datasource: url: jdbc:mysql://localhost:3306/mytest type: com.alibaba.druid.pool.DruidDataSource username: root password: root driver-class-name: com.mysql.jdbc.Driver //驱动 jpa: hibernate: ddl-auto: update //自动更新 show-sql: true //日志中显示sql语句
创建实体
@Entity@Getter@Setterpublic class Person{ @Id @GeneratedValue private Long id; @Column(name = "name", nullable = true, length = 20) private String name; @Column(name = "agee", nullable = true, length = 4) private int
PersonRepository.java接口继承JpaRepository接口
public interface PersonRepository extends JpaRepository
使用personRepository
@Autowired private PersonRepository personRepository; @PostMapping(path = "addPerson") public void addPerson(Person person){ personRepository.save(person); }
3.2 mybatis
IV 常用第三方Java SDK
4.1 FreeMarker
FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 FreeMarker 是 免费的, 基于Apache许可证2.0版本发布。
修改模版之后,只要编译工程就可以生效,对应的idea的快捷键是command+F9。
官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7
要求JDK8+ github.com/Pay-Group/b… IDE 需安装 lombok 插件
4.3 webscoket
使用 @ServerEndpoint 注解方式
添加 ServerEndpointExporter 到 IOC 容器中
@beanServerEndpointExporter serverEndpointExporter(){return new
使用@ServerEndpoint
@Component@Slf4j@ServerEndpoint(value = "/socket")public class SocketHandler{//存储SocketHandler的set private static CopyOnWriteArraySet
4.4 Spring Data Redis
Spring Data Redis是较大的Spring数据家族的一部分,它提供了从Spring应用程序轻松配置和访问redis的功能。
Redis可视化工具 Redis Desktop Manager:
官网下载:redisdesktop.com/downloadmac:apps.apple.com/us/app/redi…
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~