随笔分类 - java相关
摘要:1、背景 随着项目的增多,各个项目的版本之间存在差异,因此在升级时,维护项目版本和最新版本之间增量的sql脚本成为一个严重的问题,非常耗时耗力,因此引入一个数据库变更管理工具迫在眉睫。目前比较常用的有flyway和liquibase,liquibase使用xml文件来定义和管理数据库脚本,不依赖于具
阅读全文
摘要:1、问题描述 前端调用一个耗时较长的后端接口,预估时间需要一分半,每次在1分钟时,会自动断开,提示超时。 2、问题背景 前端调用接口,会分别经历Nginx、Gateway到微服务A,服务A经过逻辑处理后,会通过FeignClient调用微服务B的接口。 3、问题分析 初步分析可以知道,肯定是在上面的
阅读全文
摘要:1、背景 项目中存在一个需求,当用户不传项目ID时,将其赋值为默认值,初步分析后,发现接口数量众多,且绝大多数接口都需要传递项目ID。Controller接口的参数形式很多,大多数的Post请求都是以对象的方式接收参数,部分Post的form-data请求和Get请求是以多个基本数据类型的方式接收参
阅读全文
摘要:之前记录过在windows上加载单个ddl动态库(JNA简单使用(一)(java和c++互操作) - 浪迹天涯的派大星 - 博客园 (cnblogs.com)),这次记录一下在linux上调用存在多个依赖的so动态库。 1、背景 需要c++分片处理一种特殊格式的文件,Java接受分片数据后保存,采用
阅读全文
摘要:有时候项目中需要对模块指定JDK打包,下面会介绍如何利用Idea指定打包的JDK版本,以及如何判断Jar的jdk版本 1、Idea打包时指定JDK的版本 如果需要修改整个项目的JDK版本进行打包,如下图,选择对应的JDK版本 2、打包多模块项目指定单个模块的JDK版本 多模块的项目中,如果需要修改某
阅读全文
摘要:文章主要是对加密算法这一块的梳理,包含了对称加密、非对称加密、DH密钥交换和消息摘要算法的关键参数和代码实现,所有代码经过实际测试,可以正常使用。 1、加密算法分类 一般的对称加密可以从加密算法、加密模式(根据模式不同,可能会有初始化向量,用于第一块明文的加密)、填充方式和密钥长度这四个方面确定,非
阅读全文
摘要:前面的文章(Java中的单元测试)已经说过单元测试中的mock测试,大都是正常分支下的测试,异常测试用于测试某些场景下是否会触发指定的异常,用来验证代码逻辑的正确性。目前根据Junit的版本有三种不同的方式,如下: 1、@Test注解中的expected属性 此方式比较简单,但是存在局限性,就是只能
阅读全文
摘要:1、概念介绍 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。单元是人为规定的最小的被测功能模块。 本文主要讲Java中的单元测试中的代码编写,一般最小的单元就是一个方法,设计测试场景(一些边界条件),看运行结果是否满足预期,修改了代码也能帮助验证是否影响了原有的逻
阅读全文
摘要:1、RandomAccessFile简介 RandomAccessFile类是一个随机读取文件数据的java类,常用于分片上传和下载,使用方法和InputStream类似,不同之处在与其构造方法,需要传入mode,mode有四种,"r"、"rw"、"rwd"、"rws" r 只读模式,进行写操作会报
阅读全文
摘要:1、Linux上启动jar包用于调试,通过指定参数启动,记录一下,命令行如下: nohup java -jar -Xmx256M -Xms256M xxxx.jar --server.port=9092 --client.key=your clientKey --client.secret=your
阅读全文
摘要:1、引言 目前遇到了Maven打包的问题,这玩意不用记,每次网上查一下就可以,但是网上的答案大都是模棱两可,要不就是细节不清楚,并且不同的Maven打包需求不一样,有时候需要打可运行jar包;有时候需要打Source jar包;有时候需要将公共模块抽取出来打成jar包,并不需要运行,提供给别人引用等
阅读全文
摘要:在实际的项目开发中,经常会遇到对参数进行校验的场景,最常见的就是后端需要对前端传过来的数据进行校验。 我理解的数据校验大致分为两类: 一类是对数据本身进行校验,不涉及与数据库交互的,比如正则校验、非空校验、指定的枚举数据、最大值、最小值等等。 二类是数据的校验需要和数据库交互的,比如是否唯一(数据库
阅读全文
摘要:项目中遇到需要java调用c++动态库的需求,所以就简单记录一下使用 网上查找了一下相关的资料,发现有两种通用的方式,一种是JNI(Java Native Interface)和JNA(Java Native Access), 比较了一下两者的优缺点,JNI性能比较好,但是实现起来较为复杂,JNA性
阅读全文
摘要:锁的状态分为4种,无锁、偏向锁、轻量级锁、重量级锁其实涉及到锁的升级,随着线程竞争的加大,从偏向锁->轻量级锁->重量级锁,且升级过程不可逆 问:为什么会有锁升级?直接就上重量级锁不好吗?答:因为重量级锁性能不好。 问:为什么重量级锁性能不好?答:因为加锁和解锁过程,涉及到CPU用户态切换到内核态再
阅读全文