Java
IT1995
每周个人笔记分享,欢迎广大网友查阅!
展开
-
Java笔记-MinIO Java SDK的使用
这个PutObjectArgs是上传接口partSize是分片,这里我填写的是-1。随后创建一个bucket。原创 2024-09-18 08:35:45 · 152 阅读 · 0 评论 -
Spring Boot笔记-使用dynamic-datasource配置多元数据库(MySQL和达梦)
以前都用JPA,配置多元数据库稍微麻烦那面一点点,这几天看了下年轻人的Java代码,发现Mybatis用得比较多了,而且还有比较好用的三方库,配置多元数据库,相对简单,在此记录下。在yml文件中配置,官方只给出了yml。properties没有提,但看了yml后,发现的确比properties要简洁好用多了。使用就相当简单了,用注解就可以了。下面我用jdbctemplate来调用下。这里有点要注意的primary必须指定一个,不然项目启动后会报错。启动后打印这个,就是成功了。原创 2024-07-29 08:34:16 · 441 阅读 · 1 评论 -
Java笔记-PrintWriter无文件或文件内容为空
③查下磁盘是不是满了,df -h和df -ih,如果inode满了,说明文件都创建不了,如果盘满了,能创建文件,但文件不能写入。②要保存的内容是否为空(如object.getValue())的值就是空。但可以用checkError()函数返回值,判断是否有错误。查了下这个类,出现问题不会报异常。①文件路径是否正确;原创 2023-11-20 08:46:22 · 1563 阅读 · 0 评论 -
Java笔记-将Map转指定Class
这里有个要求,就是Map中的key要和Class中的成员名一样,并且Object中数据类型也要一样。应为其实就是用反射去赋值。原创 2023-09-25 08:36:05 · 2847 阅读 · 1 评论 -
Neo4j文档阅读笔记-Installation and Launch Guide
①找到下载好的Neo4j Desktop文件,然后双击进行安装;②安装Neo4j Desktop根据下一步进行安装。原创 2023-07-31 08:51:55 · 3126 阅读 · 0 评论 -
Spring Boot文档阅读笔记-Scheduling Tasks
这篇博文将说明,如何一步一步完成Spring的任务调度功能。主要是使用@Scheduled注解,完成每5秒打印当前时间。首先在Maven中增加awaitility依赖包整体Maven如下:创建调度调度任务的类,ScheduleTasks.java@Scheduled注解说明了在合适调用,比如fixedDelay说明每多少毫秒调用一次。这里还有其他选项,比如使用corn,这里全称应该是crontab,也就是定时任务,如@Scheduled(cron="...")最后在@SpringBo原创 2022-12-05 09:00:09 · 972 阅读 · 1 评论 -
Java笔记-使用processBuilder调用shell(Linux)
环境是这样的,前端发起一个post请求,里面的信息带有要启动的进程,java后端接收到这个进程名后,使用linux的shell调用指定的程序。原创 2022-11-14 09:04:32 · 2383 阅读 · 1 评论 -
Spring Boot文档阅读笔记-3 Ways to Add Custom Header in Spring SOAP Request
本篇博文使用3种不同的方法,在Spring SOAP(Simple Object Access Protocol)上添加自定义头信息。头信息一般是服务端用于身份验证的。SOAP头信息在SWDL文档中是不会提及的,这需要程序员手动在请求上添加头信息。这里可以使用interceptor用于添加头信息,也可以在WebServiceMessageCallback中重写dowithMessage()方法上做,也可以在JAXB Marshaller中添加头信息。下面是一个简单的SOAP请求的XML头信息。原创 2022-11-07 09:17:28 · 936 阅读 · 0 评论 -
Spring Boot文档阅读笔记-CORS Support
如下例子SpringBoot的web应用使用的是8080端口,而JS是通过9090端口调用web应用的restful的API。在这样的场景下,就会发现Cross-OriginResourceSharing的安全隐患。防止JS代码,从不同的源头发起请求。使用在Controller的方法上使用@CrossOrigin注解就可以允许跨域资源共享了。②将这个跨越资源共享设置到Web服务的8080端口上。allowedMethods允许的请求头。addMapping配置可被跨越的路径;...原创 2022-07-28 08:56:45 · 459 阅读 · 0 评论 -
Spring Boot文档阅读笔记-Validating Form Input解析
这篇文章的主要功能是Web应用程序中验证表单输入是否合法的文章。PersonForm对象首先创建一个PersonForm对象:这个对象会验证PersonForm的用户名,代码如下:package cn.it1995;import javax.validation.constraints.Min;import javax.validation.constraints.NotNull;import javax.validation.constraints.Size;public原创 2022-05-31 08:56:55 · 306 阅读 · 0 评论 -
Java笔记-一种表单提交AES加密案例(仿某大学bbs加密逻辑)
最近分析了一大学bbs登录时,加密的流程,在此自己用spring boot做了个类似的,在此记录下,感觉还是有点东西的。逻辑很简单:登录页面:输入用户名/密码后,这里是admin/admin用Fiddler抓包是这样的:这里的Password用了AES加密,这里前端从后端再加载页面的时候,就获取了aes的密钥和向量,当然这里可以用JS逆向,得到这个值(这里和某大学BBS一样)对应的流程图是这样的:程序结构如下:代码如下:LoginControll...原创 2022-04-24 08:47:15 · 1013 阅读 · 0 评论 -
Java笔记-AES加解密(PKCS7padding可用)
如下代码:package cn.it1995.tool;import org.apache.tomcat.util.codec.binary.Base64;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.*;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;imp原创 2022-04-11 10:59:39 · 14238 阅读 · 2 评论 -
Java笔记-解决读取文件时中文乱码问题(InputStreamReader设置编码)
Java一般读取文件时使用如下代码:InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("xxx");BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream);while(reader.ready()){ String line = reader.readLine(); Sys原创 2022-04-07 15:27:12 · 22346 阅读 · 1 评论 -
Java笔记-RestTemplate(Java进程)配置代理Fiddler抓包
和配置其他代理一样的思路,在调用请求前设置(推荐在程序刚运行时也就是main函数开始就配置):String proxyHost = "localhost";String proxyPort = "8888";System.setProperty("http.proxyHost", proxyHost);System.setProperty("http.proxyPort", proxyPort);System.setProperty("https.proxyHost", proxyHost原创 2021-12-14 13:38:19 · 1273 阅读 · 0 评论 -
Java笔记-EasyCaptcha在前后端分离项目的使用
官方地址:https://github.com/whvcse/EasyCaptcha在此膜拜下。官方上已经有了非常详细的说明,下面我做个笔记,方便以后进行查阅,毕竟少花几分钟上手,可以多看几分钟的新东西。添加Maven<dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <原创 2021-10-26 08:57:55 · 902 阅读 · 0 评论 -
Java笔记-通过反射获取枚举类型中所有数据
程序运行截图如下:代码如下:Em.javapackage cn.it1995;public enum Em { ONE(1, "第一个枚举"), TWO(2, "第二个枚举"), THREE(3, "第三个枚举"), FOUR(4, "第四个枚举"); private Integer id; private String describe; Em(Integer id, String describe){原创 2021-10-26 08:53:04 · 3413 阅读 · 0 评论 -
信息安全工程师-AES密码技术及XOR图像遮盖技术(Java&C++)
目录AES加密编码异或XOR加解密步骤AES加密从中可以知道对称加密和公钥密码只能保护机密性,防止窃听。如果要完整性防篡改,需要用单向散列函数、消息认证码、数字签名技术。这里有个关于对称加密的一个问题:如这个问题:对称加密如AES。如果一串密文。有人稍微修了下。用密钥去解会不会解出乱码,还是解密失败?拿java测。稍微测了几次是解密失败。但会不会有解出乱码的情况?问了一些大佬,最后总结出2个答案:①一个钥匙(密钥)只能开一把锁(加密数据)。但.原创 2021-10-24 11:13:50 · 7086 阅读 · 5 评论 -
Java笔记-Semaphore简单应用实例
这个Semaphore和QSemaphore使用和原理一模一样。这里简单写了个例子,开了10个线程去拿邻界资源,资源只有一个,拿到后要进行5s的业务错了,使用Semaphore,如果此资源被占用,那么该线程将会被挂起。程序运行截图如下:D:\java8\content\bin\java.exe -javaagent:D:\idea\content\lib\idea_rt.jar=52182:D:\idea\content\bin -Dfile.encoding=UTF-8 -class原创 2021-09-21 21:03:20 · 484 阅读 · 0 评论 -
Java笔记-DH密钥交换获取密钥及AES加解密
DH密钥交换是这样的:程序运行截图如下:D:\java8\content\bin\java.exe -javaagent:D:\idea\content\lib\idea_rt.jar=61009:D:\idea\content\bin -Dfile.encoding=UTF-8 -classpath D:\java8\content\jre\lib\charsets.jar;D:\java8\content\jre\lib\deploy.jar;D:\java8\content\jre\li原创 2021-09-07 08:28:13 · 1881 阅读 · 0 评论 -
Java笔记-SM3(国密3)和SM4(国密4)的使用
SM3是签名算法,和MD5一样(对于应用层来说)。SM4是对称加密算法,和AES一样(对于应用层来说)。这里还有1点要注意的SM4,的密钥是128位,也就是16个字节。程序运行截图如下:D:\java8\content\bin\java.exe -javaagent:D:\idea\content\lib\idea_rt.jar=62511:D:\idea\content\bin -Dfile.encoding=UTF-8 -classpath D:\java8\content\j原创 2021-08-31 09:10:57 · 12394 阅读 · 0 评论 -
Java笔记-SM2(国密2)的调用及SM2、SM3、SM4使用场景
注意:本博文仅仅说明SM2的使用,应用场景等,不研究其算法。SM2是非对称加密算法,对应应用层程序员来说,使用逻辑和RSA一样。他的最主要的功能:①非对称加密;②签名和验签对于应用层程序员来说,必须熟悉他的使用,以及他的应用领域,一般在写一个安全的应用时,如果单单使用SM2是不安全的,基本上SM2、SM3、SM4都会同时使用。一般都是用SM4对数据内容加密,使用SM3,对内容进行摘要,再使用SM2,对摘要进行签名。这个是数据发送端做的事情。接收端,先用SM2,对摘要进行验签,验签原创 2021-08-31 09:05:57 · 40896 阅读 · 14 评论 -
Java笔记-解决WebServiceTemplate中No subject alternative names matching IP address xxx
主要的原因是证书有问题,就是程序的IP地址和证书的IP地址不匹配。这里是客户端报错,使用的是spring-ws对应的Maven如下; <dependency> <groupId>org.springframework.ws</groupId> <artifactId>spring-ws-security</artifactId> <vers原创 2021-08-24 08:48:21 · 4713 阅读 · 0 评论 -
Android笔记-ERROR: Invalid revision: 3.17.20200511-g8787079
Android Studio版本:报错是这些:往下翻:将版本换成3.10.2File->Settings->System Settings->Android SDK再设置下ndk:File->Project Structure->SDK Location如果报错,在dnk下新建platforms这样就可以了,如果还报错:在local.properties中添加cmake.dir=D\:\\xx...原创 2021-08-17 09:01:40 · 646 阅读 · 0 评论 -
Java笔记-加密应用在网络通信中的使用
逻辑是这样的:逻辑解释:1.OpenSSL生成RSA私钥和公钥,公钥存客户端,私钥存服务端;2.客户端与服务端的DH分别生成自己的公钥和私钥,并且使用相同的公钥和私钥算法;3.首先客户端把DH生成的公钥使用RSA加密,通过HTTP协议,发送到服务端,服务端把先解密RSA,然后把自己DH模块的公钥发给客户端;4.客户端和服务端都拿到了对方的公钥,再与自己的私钥,通过密钥公式,算出AES加密密钥。后面发送数据时都通过AES加密。程序运行截图如下:关键源码如下:..原创 2021-08-17 08:58:43 · 515 阅读 · 0 评论 -
Java笔记-DH密钥交换
DH密钥交换主要是两个公式的编写,即: ·公钥计算公式; ·密钥计算公式;生成随机数作为私钥截图如下:源码如下:DH.javapackage cn.it1995.tool;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Random;public class DH { private ...原创 2021-08-17 08:56:06 · 941 阅读 · 0 评论 -
Java笔记-对称加密AES的使用
AES加密库的使用: ·根据AES密钥创建Secret密钥向量; ·生成初始化参数向量; ·获取AES Cipher; ·执行加密; ·Base64编码(建议)程序运行截图如下:调用如下:public static void main(String[] args) throws UnsupportedEncodingException { String content = "123456"; AES aes = ne...原创 2021-08-17 08:54:28 · 918 阅读 · 0 评论 -
Java笔记-非对称加密RSA的使用
使用OpenSSL生成对应RSA私钥和RSA公钥:#rsa私钥:genrsa -out rsa_private_key.pem 1024pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform pem -nocrypt -out rsa_private_key_8.pem#rsa公钥:rsa -in rsa_private_key_8.pem -pubout -out rsa_public_key.pemBase64使用的是这样Ma原创 2021-08-17 08:52:57 · 1336 阅读 · 0 评论 -
Java笔记-JdbcTemplate批量执行insert及update
主要就是batchUpdate函数用法如下:insert:String cmdTmp = "INSERT INTO %s(CREATE_DATE, UPDATE_TIME, XXX_ID, XXXID, XXX_TYPE) VALUES(?, ?, ?, ?, ?)";String cmd = String.format(cmdTmp, tableName);List<Object[]> batchArgs=new ArrayList<Object[]>();原创 2021-08-17 08:48:24 · 1478 阅读 · 0 评论 -
Android笔记-使用okhttp3库发送http请求
build.gradle新加:implementation 'com.squareup.okhttp3:okhttp:3.8.0'在AndroidManifest.xml添加权限<uses-permission android:name="android.permission.INTERNET"/>源码如下:HttpRequest.javapackage com.example.myclient.http;import okhttp3.Call..原创 2021-08-10 08:41:56 · 815 阅读 · 0 评论 -
Java笔记-使用ServerSocket构建HTTP服务器
运行截图如下;浏览器访问:后端打印:项目结构如下:HttpCallback.javapackage cn.it1995.http;public interface HttpCallback { byte[] onResponse(String request);}HttpServer.javapackage cn.it1995.http;import java.io.IOException;import java.net.Serve.原创 2021-08-10 08:39:32 · 738 阅读 · 0 评论 -
Spring Boot文档阅读笔记-how-to-implement-2-way-ssl-using-spring-boot
two-way-ssl需要12次握手(除去TCP的三次握手),如下图:双向认证过程:1.客户端发送ClientHello消息,告诉服务端要使用SSL。2.客户端发送ServerHello的响应,告诉客户端使用SSL。3.服务端发送证书给客户端;4.服务端发送发送数据,要求客户端发送证书;5.此时客户端与服务端招呼已经结束;6.客户端发送自己的证书给服务端(客户端认证服务端证书成功);7.客户端发送session key(使用服务端公钥加密);8.客户端发送一个C.原创 2021-08-03 08:38:57 · 426 阅读 · 0 评论 -
Java笔记-Linux环境中因编码问题导致中文String解析有问题
背景:各个现场搭建的Linux的环境不相同,遇到了莫名其妙的问题,发现带有中文的字符串解析有问题。通过测试,发现是编码问题,在此记录下。指定为utf-8编码运行此jar包:java -Dfile.encoding=utf8 -jar xxxx.jar...原创 2021-07-27 08:48:37 · 341 阅读 · 0 评论 -
Java笔记-Java中备忘录模式
首先设计模式代表外招功法,是外招的模板,个人觉得他是为面向对象7个原则而准备的:面向对象程序设计要考虑7个原则:单一职责原则:设计目的单一的类;开放封闭原则:对扩展开发,对修改封闭;李氏替换原则:子类可以替换父类;依赖倒置原则:要依赖于抽象,不依赖于具体,面向接口的编程;接口隔离原则:使用多个专用的接口比使用单一的接口要好;组合重用原则:尽可能使用组合,而非继承;迪米特原则:一个对象尽可能少的了解其他对象。通过这7个原则,创建起来的设计模式。桥接模式的基本的概原创 2021-07-13 12:30:43 · 630 阅读 · 4 评论 -
Qt&Java笔记-Qt与Java进行SSL双向认证(Qt客户端,Java服务端)
这里使用Java作为服务端,使用Qt作为客户端。程序运行截图如下:这里的证书Qt使用的p12,Java使用的jks,看以前的博文生成。源码打包下载地址:https://github.com/fengfanchen/Java/tree/master/Ssl_QtClient_JavaServerQt客户端源码:源码如下:QSSLClient.h#ifndef QSSLCLIENT_H#define QSSLCLIENT_H#include <QOb原创 2021-07-06 07:50:15 · 963 阅读 · 1 评论 -
Qt&Java笔记-Qt与Java进行SSL双向认证(Qt服务端,Java客户端)
程序运行截图如下:Qt作为服务端,Java作为客户端。这里的服务端是用的p12证书,客户端使用的是jks。具体的生成方式看以前的博文。QSSLServer.h#ifndef QSSLSERVER_H#define QSSLSERVER_H#include <QObject>#include <QList>#include <QTcpServer>#include <QSslError>QT_BEGIN_NAME原创 2021-07-06 07:42:59 · 999 阅读 · 2 评论 -
Java笔记-解决Cause: java.sql.SQLException: 试图在只读事务中修改数据(达梦数据库)
解决方法:@Transactional(readOnly=false)这里要注意,可能会失效,一定要放对位置。要包住所有sql调用的函数的上面,不要只包一部分,不然不会生效的。原创 2021-06-29 08:44:17 · 4250 阅读 · 5 评论 -
Java笔记-Java中桥接模式
最近在研究一个APP,逆向后发现貌似用了桥接模式,特意学习了下Java中的桥接模式。关于C++的桥接链接如下:https://blog.csdn.net/qq78442761/article/details/98877170下面是java相关的代码以及自己的新理解!首先设计模式代表外招功法,是外招的模板,个人觉得他是为面向对象7个原则而准备的:面向对象程序设计要考虑7个原则:单一职责原则:设计目的单一的类;开放封闭原则:对扩展开发,对修改封闭;李氏替换原则:子类可以替换.原创 2021-06-22 08:48:12 · 534 阅读 · 0 评论 -
Java文档阅读笔记-Guide to the Hibernate EntityManager
1. IntroductinoEntityManager是JPA的一个API,他实现了JPA2.0的程序接口和程序生存周期。下面将介绍其使用方式。2. Maven Dependencies引入Hibernate和mysqlJDBC的依赖:<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId>.原创 2021-06-22 08:45:09 · 537 阅读 · 0 评论 -
Java笔记-Java端口扫描功能(含TCP包分析以及原理)
端口扫描主要是扫描其TCP端口。因为他有三次握手,握上了,如果有加密才进行传输层的加密。写个程序,去连接那个端口,能握手,就说明端口是开着的。关于UDP的端口扫描,有但意义不是很大,因为udp不会面向连接的。主要看服务端会不会回包,以及使用了什么协议如DTLS,如果服务端写成,客户端发送过来的数据异常,就回个异常的,这样就能扫描到,如果没写成这样,那就没办法了。Java代码如下:public class PortScanJava { public boolean is..原创 2021-06-15 09:00:37 · 1799 阅读 · 0 评论 -
Java笔记-Object中Timestamp转指定格式的
这里转成yyyy-MM-dd HH:mm:ss为例: @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Timestamp time;原创 2021-06-15 08:39:35 · 1078 阅读 · 1 评论