Springboot

SpEL表达式

用法: java [-options] class [args…] (执行类)
或 java [-options] -jar jarfile [args…] (执行 jar 文件)


结论:
①:args就是传递给main函数的参数。springboot用命令行指定参数就是传入args
②:java -Xms10m -Xmx512m -DconfigPath=/root -jar xxx.jar。其他想指定系统环境变量的,修改jvm参数的都属于options。


扩展(以下两种参数理论上都是该出现在options的位置上才会生效)
1.系统属性参数
系统属性参数传入的时候需要带一个横杆和大写字母D,比如java -Dhello.world=“jilegeji” -jar xxx.jar这样的。在你业务代码中,你就可以使用它了:System.getProperty(“hello.world”),获取"jilegeji"。
eg:
①:java -Dcoder=“jilegeji” -jar esaMUEServer-0.0.1-SNAPSHOT.jar
在这里插入图片描述
②:java -jar esaMUEServer-0.0.1-SNAPSHOT.jar -Dcoder=“jilegeji”
在这里插入图片描述
2.jvm参数
jvm参数就是和jvm相关的参数了,比如配置gc、配置堆大小、配置classpath等等。
jvm参数分为标准参数、扩展参数和不稳定参数。
标准参数是一定有效,向后兼容的,且所有的jvm都必须要实现的,比如-classpath,这类参数是横杆直接跟参数名
扩展参数是不保证向后向后兼容,不强值要求所有jvm实现都要支持,不保证后续版本不会取消的,这类参数的形式是-Xname,横杠和一个大写的X开头
不稳定参数就是非常不稳定,可能只是特定版本的,特点是-XXname,横杆后带两个大写X开头。

springboot启动时指定命令行参数失效问题的注意事项
1.要有特殊字符的需要使用""。
2.启动类中要使用args才会生效public static void main(String[] args) { SpringApplication.run(EsaMUEServerApplication.class, args); }
代码实例:
java -jar esaMUEServer-0.0.1-SNAPSHOT.jar --spring.datasource.url=“jdbc:mysql://192.168.1.182:3306/esa2?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8” --streamMedia.hostname=“http://192.168.1.181/live” --streamMedia.port=9000

默认情况下,SpringApplication会将所有命令行配置参数(以’–'开头,比如–server.port=9000)转化成一个property,并将其添加到Spring Environment中,命令行属性总是优先于其他属性源。
如果不想将命令行属性添加到Environment,你可以使用SpringApplication.setAddCommandLineProperties(false)来禁用它们。
如果不喜欢将application.properties作为配置文件名,你可以通过指定spring.config.name环境属性来切换其他的名称,也可以使用spring.config.location环境属性引用一个明确的路径(目录位置或文件路径列表以逗号分割)。
java -jar myproject.jar --spring.config.name=myproject

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

springboot内置的Tomcat采用NIO协议(BIO:Blocking IO,NIO:Non-Blocking IO),
可配置的参数为如下:
server.tomcat.min-spare-threads:10	//初始默认线程个数为10
server.tomcat.maxThreads:200	//最大的工作线程数,默认为200。
server.tomcat.maxConnections:10000	//最大连接数,默认10000。最大并发能力指的就是10000,而不是200。
server.tomcat.acceptCount:100

当Tomcat采用BIO协议时,理论上来讲只能处理200个请求(200个线程处理200个耗时操作)。
但是当采用NIO协议时,其实可以同时接受10000个请求连接,以及大于10000个连接时,还可以再等待100个连接。

Tomcat有两种处理连接的模式,一种是BIO,一个线程只处理一个Socket连接,另一种就是NIO,一个线程处理多个Socket连接。
由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。

扩展:操作系统对于进程中的线程数有一定的限制:
Windows 每个进程中的线程数不允许超过 2000
Linux 每个进程中的线程数不允许超过 1000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值