分类 java 中的文章

maven的scope参数

1、用maven引用没进中央仓库的包

在使用maven的时候,如果我们要依赖一个本地的jar包的时候,通常都会使用<scope>system</scope>和<systemPath></systemPath>来处理。
例如:

1
2
3
4
5
6
7
8
<!--引用本地jar包-->
<dependency>
    <groupId>com.mytest</groupId>
    <artifactId>test</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${pom.basedir}/lib/test-1.0.jar</systemPath>
</dependency>

如果你仅仅是这么做了,在你使用SpringBoot打包插件生成jar包的时候,你会发现这个jar包不会被打进去,进而出现错误。
这个就需要在maven插接中配置一个includeSystemScope属性:

……

阅读全文

kafka集群和zk集群搭建

前言

一台应用的第三方服务器的kafka只有3个分区,测试一直存在积压的消息,搭建了一套最简单集群测试下,记录中间的参数。

1、准备工作

1.1 环境准备

环境 版本 说明
centos 7.0 操作系统服务器,3台
JDK 1.8.261 安装好jdk并设置好环境变量
zookeeper 3.4.9 zk官方安装包
kafka 2.2.0_2.12 kafka官方安装包

1.2 服务器

IP 端口 说明
192.168.211.125 zk:2181
zk heartbeat:2888、3888
kafka:9092
zk默认端口
zk心跳默认端口
kafka默认监听端口
192.168.211.126 zk:2181
zk heartbeat:2888、3888
kafka:9092
zk默认端口
zk心跳默认端口
kafka默认监听端口
192.168.211.127 zk:2181
zk heartbeat:2888、3888
kafka:9092
zk默认端口
zk心跳默认端口
kafka默认监听端口

1.3 目录规划

中间件 安装目录 数据目录 日志目录 说明
jdk /home/jdk_version - - Oracle jdk是直接tgz解压的,只需要安装目录
openjdk不需要这个目录规划
zk /home/zookeeper_version /opt/data/zookeeper /opt/data/zookeeper/zkdata
/opt/data/zookeeper/zklogs
zkdata是zk的数据目录,zklogs是日志目录
kafka /home/kafaka_version /opt/data/kafka /opt/data/kafka/kafka_logs kafka_logs是日志目录

2、下载zk

官网:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/
下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

……

阅读全文

android下的termux模拟器安装openJDK和运行springboot项目

前言

2020年9月份打造好了termux,但是苦于jdk没法安装,只能简单的用ecj(eclipse的java,类似jdk的javac),但是springboot或者tomcat的项目怎么跑啊? 今天为了做培训演示,找到了termux下的openJDK资源,记录下安装的经过。termux的安装和工具准备参考前一篇android下安装termux模拟器-超便携linux

……

阅读全文

springboot的devTools热部署

前言

springboot利用devtools实现热部署

1、application.yml

1
2
3
4
5
6
7
8
9
spring:
    devtools:
        restart:
            #热部署生效
          enabled: true
            #设置重启的目录
            #additional-paths: src/main/java
            #classpath目录下的WEB-INF文件夹内容修改不重启
          exclude: WEB-INF/**

设置WEB-INF下的jsp修改不需要重启。

2、pom.xml

1
2
3
4
5
6
7
8
<!--devtools热部署-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    <!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖该项目的项目如果想要使用devtools,需要重新引入 -->
    <scope>true</scope>
</dependency>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
      <fork>true</fork>
    </configuration>
    <dependencies>
      <!-- spring热部署-->
      <!-- https://mvnrepository.com/artifact/org.springframework/springloaded -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>springloaded</artifactId>
        <version>1.2.6.RELEASE</version>
      </dependency>
    </dependencies>
</plugin>

3、idea设置

1、File-Settings-Compiler-Build Project automatically
2、ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running

……

阅读全文

JDK1.8.0.161版本bug定位

前言

好好运行的系统,突然故障,无意间根据错误信息查找,竟然是jdk的bug,描述下曲折的定位过程。

1、错误日志

有个老系统有使用到soap接口,采用CXF结合接口文件wsdl自动生成的接口开发的,突然在3月2日(后续日志定位才发现真正故障的时间)无法正常工作,但是实际发现时间已经到了3月6日了,直接查看日志文件,报错“组装saop报文头异常:Entity References are not allowed in SOAP documents”

……

阅读全文

java OOM的种类整理

前言

java OOM的种类整理

1、分类

1.1【情况一】:

1
java.lang.OutOfMemoryError: Java heap space:

这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环
如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:

-Xms3062m
-Xmx3062m

  

1.2【情况二】

1
java.lang.OutOfMemoryError: GC overhead limit exceeded

【解释】

JDK6新增错误类型,当GC为释放很小空间占用大量时间时抛出;一般是因为堆太小,导致异常的原因,没有足够的内存。

……

阅读全文

springmvc的参数校验注解整理

1、JSR303注解字段校验

注解 说明 功能
@AssertFalse Boolean,boolean 验证注解的元素值是false
@AssertTrue Boolean,boolean 验证注解的元素值是true
@NotNull 任意类型 验证注解的元素值不是null
@Null 任意类型 验证注解的元素值是null
@Min(value=值) BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型 验证注解的元素值大于等于@Min指定的value值
@Max(value=值) 和@Min要求一样 验证注解的元素值小于等于@Max指定的value值
@DecimalMin(value=值) 和@Min要求一样 验证注解的元素值大于等于@ DecimalMin指定的value值
@DecimalMax(value=值) 和@Min要求一样 验证注解的元素值小于等于@ DecimalMax指定的value值
@Digits(integer=整数位数, fraction=小数位数) 和@Min要求一样 验证注解的元素值的整数位数和小数位数上限
@Size(min=下限, max=上限) 字符串、Collection、Map、数组等 验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小
@Past java.util.Date,java.util.Calendar;Joda Time类库的日期类型 验证注解的元素值(日期类型)比当前时间早
@Future 与@Past要求一样 验证注解的元素值(日期类型)比当前时间晚
@NotBlank CharSequence子类型 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格
@Length(min=下限, max=上限) CharSequence子类型 验证注解的元素值长度在min和max区间内
@NotEmpty CharSequence子类型、Collection、Map、数组 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@Range(min=最小值, max=最大值) BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型 验证注解的元素值在最小值和最大值之间
@Email(regexp=正则表达式,flag=标志的模式) CharSequence子类型(如String) 验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式
@Pattern(regexp=正则表达式,flag=标志的模式) String,任何CharSequence的子类型 验证注解的元素值与指定的正则表达式匹配
@Valid 任何非原子类型 指定递归验证关联的对象;如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证
……

阅读全文

java小日常记录-不定期更新

前言

记录工作中碰到的一些 java 小日常积累

1、远程debug调测

web项目远程调测 - 仅用于测试环境或者上线前的调测

注意:

仅限测试环境或者上线前的调测,如果用于生产环境,你的开发工具再debug模式起着的话,会拦截所有的请求。

1
2
# linux增加以下这段就可以远程连接服务器的5888端口了
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888"

1.1 关闭的问题

添加了debug端口以后好像会出现./shutdown.sh 无法关闭tomcat,需要手动kill

……

阅读全文

web应用分析利器-xrebel

前言

XRebel 是不间断运行在 web 应用的交互式分析器,当发现问题会在浏览器中显示警告信息。XRebel 会实时监测应用代码的性能指标和可能会发生的问题。

看名称跟之前的jrebel有点相像,对了,是同一家公司的产品,jrebel解决java项目动态部署,xrebel解决j2ee应用的交互式分析(甚至sql都能分析到,强悍得不要不要的)。

……

阅读全文

eclipse之jrebel热部署插件

前言

JRebel是一个J2EE热部署的工具。使用它可以减少浪费8-18%的开发时间在项目的构建和部署上。虽然Java也提供了HotSpot的JVM,但是如果你修改的类中有方法名称变动的话,HotSpot就无能为力了,必须要重要启动应用服务器。JRebel则可以动态监视class文件及配置文件,如果有文件更新,被调用时就会被JRebel重新加载,达到热部署的目的。

……

阅读全文

最近文章

分类

标签

其它