包含标签 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属性:

……

阅读全文

tomcat配置https:keytool生成证书与server.xml配置

前言

内部系统要上 https,当时没有 CA 签发的证书,就用 keytool 做了自签名证书给 tomcat 配上。流程整理下,最后补上新版 JDK/tomcat 的差异说明——老环境照旧,新环境看最后一段。

1、生成安全证书

JDK 1.4 以后都自带 keytool,在 <JAVA_HOME>\bin 下:

1
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "f:\tomcat.keystore"

参数说明:

  • -alias:证书别名,之后引用都用它
  • -keyalg:密钥算法,RSA
  • -keystore:keystore 文件的存放位置

命令会交互式问一串信息,其中**「名字与姓氏」必须填域名**(比如 www.example.com),这是最容易踩的坑——填成自己的姓名,之后运行时证书的域名和实际访问的域名对不上,浏览器照样报证书警告。密码我输的是 tomcat(测试环境),其余按实际情况填。

……

阅读全文

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

……

阅读全文

Java对称加密实战:DES、3DES与AES

前言

加解密是业务开发绕不开的需求,手机号、身份证、银行卡等敏感字段落库加密基本都是对称加密。这篇整理对称加密的原理和 DES、3DES、AES 三种算法的 Java 实现。

一、对称密码算法

对称密码算法是当今应用范围最广、使用频率最高的加密算法,不仅应用于软件行业,在硬件行业同样流行,各种基础设施凡是涉及到安全需求都会优先考虑对称加密算法。

……

阅读全文

tomcat环境及线程池、JDK配置详解

前言

生产环境中 tomcat 的 JVM 和线程池设置不好,很容易出现内存溢出或被流量打垮。这篇整理 tomcat 的三块核心配置:JVM 内存参数(catalina.sh)、线程池(server.xml)、JNDI 数据源(context.xml),以及常见内存溢出的原因和解决方法。

一、常见的三种 Java 内存溢出

1. JVM Heap(堆)溢出

1
java.lang.OutOfMemoryError: Java heap space

JVM 启动时会自动设置 Heap 的值:初始空间(-Xms)是物理内存的 1/64,最大空间(-Xmx)不可超过物理内存。Heap 的大小是 Young Generation 和 Tenured Generation 之和。在 JVM 中如果 98% 的时间用于 GC 且可用的 Heap size 不足 2%,将抛出此异常。

……

阅读全文

tomcat开启远程debug

前言

测试环境的问题在本地复现不出来,最直接的办法就是远程 debug:本地 IDEA 打断点,连到测试环境的 tomcat 上单步跟。配置很简单,给 catalina 加一段 JDWP 参数就行,但有个 shutdown.sh 失效的坑要提前知道。

1、配置方法

linux 下在 catalina.sh 开头(或者按规范放 bin/setenv.sh)加:

1
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888"

windows 下修改 catalina.bat:

1
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888

参数含义:

……

阅读全文

SpringMVC全局token防止重复提交

前言

表单重复提交是老问题:用户手快点了两下提交、网络卡顿刷新重发,数据就插了两条。最常见的解法是提交完成后 redirect 跳转,但它解决不了 ajax 提交和移动端提交的场景(没有页面可跳)。通行的做法是用 token:django 等框架内置了这套机制,SpringMVC 需要自己搭,这篇把完整实现整理出来(思路参考了网上的经典方案,见文末参考)。

……

阅读全文

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”

……

阅读全文

最近文章

分类

标签

其它