![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 65
java语言
编程写手
路漫漫其修远兮,吾将上下而求索!
展开
-
Apache Pdfbox:向pdf文件中写入图片
使用Apache-pdfbox向pdf中添加图片原创 2023-04-30 16:19:37 · 948 阅读 · 1 评论 -
Java Swing:自定义压缩工具
当前内容主要为使用Swing来实现一个文件压缩器,借助Apache Commons来实现原创 2022-10-15 10:36:29 · 983 阅读 · 0 评论 -
Antlr4之简单的sql查询解析demo
antlr4对简单的查询sql解析的demo原创 2022-06-12 14:41:11 · 3763 阅读 · 1 评论 -
Apache Thrift:简单的使用demo
当前版本:jdk1.8、thrift 0.16.01. 声明当前内容主要简单的使用thrift实现客户端和服务端,主要从apache iotdb中得知,详情可以查看官方1. 下载thrift(apache 官方访问不是很好可以直接使用华为mirror)下载即可(本人使用exe的,建议也下载gz的,gz的中有tutorial)2. 使用官方的Demo1.将gz中的tutorial中的shade.thrift和tutorial.thrift拷贝到thrift-0.16.0.exe同级目录下2原创 2022-05-28 15:21:47 · 341 阅读 · 0 评论 -
Java:分析三目运算符的执行原理(jdk1.8基于字节码分析装箱拆箱问题)
当前版本:jdk1.81. 声明当前内容主要为复习三目运算符中的内容,当前思考主要来源于《Java开发手册(泰山版)》灵魂13问书籍中的三目运算,本人由于对其看的不是很懂,所以觉得从字节码方面入手可以解决该问题,顺便归纳总结一下2. 基本问题出现public class OperationTest { public static void main(String[] args) { //test5(); } private static void test8() { boolean原创 2022-03-12 12:25:35 · 906 阅读 · 0 评论 -
Java:使用javassist模拟实现cglib代理操作
当前版本:jdk1.81. 声明当前内容主要为使用javassist实现cglib的代理功能,当前javassist内容参考官方文档官方文档主要核心思想:使用javassist动态创建需要操作类的子类在子类中重写方法并构建需要转移的InvocationHandler和方法调用这里直接使用java.lang.reflect.InvocationHandler来实现转移操作2. 基本demo/** * * @author hy * @createTime 2022-03-06 16:原创 2022-03-06 16:24:24 · 380 阅读 · 0 评论 -
Java:Jdk动态代理技术解析
当前版本jdk1.81. 声明当前内容主要为解析jdk的动态代理技术,当前内容参考jdk源码2. 创建jdk方式解析基本的jdk动态代理创建方法如下:public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)一般是需要被代理的接口和自定义的InvocationHandler,找到如下方法内容从注释中可以得到信息,代理类是被生成出来的,原创 2022-03-05 15:54:51 · 398 阅读 · 0 评论 -
Java:使用javah生成.h文件并完成dll调用
当前环境:jdk1.8、vs20151. 声明当前内容主要为javah的使用,并完成dll打包操作并实现java调用dll文件主要内容:使用javah生成.h文件使用vs studio 2015实现.h文件并打包为dll使用java方式调用dll2. 使用javah生成.h文件javah用于native方法的.h文件生成1.创建具有native的类public class JavahTest { public void show() { System.out.println("原创 2022-02-19 15:38:12 · 1713 阅读 · 0 评论 -
Java:实现Nio方式实现tcp通信
1. 声明当前内容主要为复习使用Nio方式实现tcp通信,实现tcp之间的信号传递和解析2. Server端/** * * @author hy * @createTime 2022-02-12 09:48:24 * @description 当前内容为使用Nio方式操作socket进行通信操作 * */public class NioServerSocketTest { public static void main(String[] args) { int threadCou原创 2022-02-12 13:43:53 · 1149 阅读 · 0 评论 -
Apache DS:修改启动端口和使用java方式修改登录密码
当前版本: apacheds-2.0.0.AM261. 声明当前内容主要为学习和使用Apache DS,并完成修改端口和密码的操作,当前内容参考:官方文档主要为:手动修改启动端口 (修改10389为389)使用java方式修改当前的登录密码 (默认密码为secret)2. 修改端口找到特定具有10389的文件夹位置:apacheds-2.0.0.AM26/instances/default/conf/ou=config/ads-directoryserviceid=default/ou=s原创 2022-01-30 15:43:17 · 1611 阅读 · 0 评论 -
Apache DS:使用Java方式对entry进行操作
当前版本: apacheds-2.0.0.AM261. 声明当前内容主要为j记录使用Java方式操作Apache DS当前操作:创建entry、为entry绑定对象、重新绑定、删除绑定删除entry注意:如果entry绑定了对象或者属性,那么删除会报错的!!2. 启动Apache DS./bin/apacheds.sh start并开放10389端口,apache ds默认启动在10389apache ds默认会在第一次启动的时候使用实例default,并完成partition操作,此原创 2022-01-30 13:43:25 · 1338 阅读 · 0 评论 -
Java:使用JAXB的注解实现定制xml结果
1. 声明当前内容主要为测试和使用JAXB中的注解,实现定制xml,当前内容参考官方文档主要包括:@XmlAccessorOrder、@XmlType (控制属性在xml中生成的顺序)@XmlJavaTypeAdapter (将某个属性进行定制转换xml)@XmlAttribute、@XmlValue (属性和值化属性)2. 基本demopublic class AnntationTest { @XmlRootElement // 在生成xml的时候是必须的 @XmlType(pro原创 2022-01-23 10:22:38 · 1609 阅读 · 0 评论 -
WebService:使用wsimport实现代码生成和实现webservice方法调用
1. 声明当前内容主要为调用webservice,主要使用wsimport方式实现webservice方法调用,当前的webservice基于SpringBoot中使用WebService(简单的使用)主要内容:使用wsimport生成wsdl的java调用代码使用生成的java代码实现webservice中的方法调用2. 启动webservice启动当前的webservice后,访问http://localhost:8081/show?wsdl的结果如下该wsdl中就是用于描述该web原创 2022-01-22 10:27:18 · 2338 阅读 · 0 评论 -
Java:使用JAXB方式实现xml和对象之间的转化(注解方式)
1. 声明当前内容主要为本人学习和使用JAXB方式实现xml和对象之间的转化,主要参考官方文档,使用注解方式主要内容:将对象转化为xml文本将xml文本转化为对象修改默认标签名实体类User@XmlRootElement(name = "user")public class User { private String username; private Integer age; private String email; // 省略get、set方法}2. 将对象转化为x原创 2022-01-22 09:51:23 · 1948 阅读 · 2 评论 -
rocksdb:简单的操作Demo
当前环境:jdk1.8、win10、rocksdb 6.27.31. 声明当前内容主要为记录使用rocksdb(一个key-value的数据库)的demo,当前内容借鉴官方文档(由于在Apache Storm启动的时候发现使用了rocksdb)当前内容主要为:存放数据和取出数据的操作当前pom.xml<dependency> <groupId>org.rocksdb</groupId> <artifactId>rocksdbjni</art原创 2022-01-09 13:17:48 · 1600 阅读 · 1 评论 -
Cassandra:使用java方式执行sql操作
当前版本:apache-cassandra-3.0.241. 声明当前内容主要为本人学习和测试使用java方式操作cassandra,当前内容借鉴官方文档主要为使用datastax实现:增删改查keyspace增删改查tablepom依赖<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <driver.version>4.13.0原创 2022-01-02 14:38:29 · 923 阅读 · 0 评论 -
Apache Mina:一个简单的http的服务器并响应json数据的Demo
当前版本:jdk1.81. 声明当前内容主要为使用Apache Mina实现一个简单的http服务器,并完成默认json数据的响应,当前内容参考:apache mina源码主要pom依赖<dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.1.5</version></d原创 2022-01-01 16:13:29 · 718 阅读 · 0 评论 -
JavaFx:窗口切换和ListView以及TableView的值绑定
1. 声明当前内容主要用于本人学习和使用JavaFx实现窗口切换,以及为ListView和TableView绑定数据的操作主要坑由于前面使用了openjfx 11的版本,结果在为ListView获取点击事件的时候出现了字节码不匹配的错误(果断切换回jdk自带的javafx)TableView绑定数据时需要将bean的属性和字段绑定2. 前期工作(切换jdk8的javafx)找到java的jdk目录下jfxrt.jar这个jar包就可以了将之前的openjfx 11的版本从库中删除,添加这原创 2021-07-25 17:29:05 · 1980 阅读 · 3 评论 -
JavaFx:打开另外一个窗体并加载WebView
开发环境:jdk8、openjfx11.0.2、eclipse1. 声明当前内容主要为学习使用javafx实现,从一个窗口中打开另外一个窗口,在另外一个窗口中加载WebView并访问openjfx主要内容:创建Stage并打开通过WebView访问openjfx2. 基本demo1. 使用SceneBuilder画出两个图2.保存为fxml文件第一个图的fxml文件<?xml version="1.0" encoding="UTF-8"?><?import原创 2021-07-25 13:33:15 · 1211 阅读 · 0 评论 -
JavaFx:采用SceneBuilder方式实现格式化java源文件(引入fxml文件完成样式布局)
开发环境:jdk8、openjfx11.0.2、eclipse1. 声明当前内容主要为本人学习和了解使用SceneBuilder方式实现样式布局,并实现之前的格式化java源文件并显示(本人直接以lib方式导入javafx依赖)基本步骤:使用SceneBuilder画图使用Controller控制调用事件加载fxml文件完成渲染读取java源文件并使用javaparser进行格式化输出在TextArea弹出消息窗口提示错误事件(alert)基本pom<dependency>原创 2021-07-25 13:03:47 · 932 阅读 · 0 评论 -
JavaFx:基本的访问mysql的demo(手动构建方式)
开发环境:jdk8、openjfx11.0.2、eclipse1. 声明当前内容主要学习和了解javafx来实现窗体程序,主要为基本的代码方式实现mysql访问校验器,当前内容主要参考:java官方文档主要为:表格的创建获取和写入输入框输入文本button的点击事件2.前期准备1.下载javafx的库openjfx-11.0.2_windows-x64_bin-sdk(本人以库的方式导入,来使用):openjfx2.直接解压,然后拷贝lib到项目工程中,并加入依赖:由于是open原创 2021-07-25 12:39:34 · 413 阅读 · 0 评论 -
Java:使用javaparser格式化Java源文件
1. 声明当前内容主要为本人学习和使用javaparser格式化当前的java源文件,实现像eclipse的format功能基本pom依赖<dependency> <groupId>com.github.javaparser</groupId> <artifactId>javaparser-symbol-solver-core</artifactId> <version>3.22.1</version><原创 2021-07-24 19:06:13 · 17058 阅读 · 1 评论 -
Java:ClassLoader实现热加载原理的解析
1. 声明当前内容主要为学习和测试实现热加载class的原理:一般class被装载到jvm中的时候此时会触发static的静态代码块执行操作基本步骤:手动创建ClassLoader来加载特定位置上的class文件更换new新的ClassLoader来再次测试2. 基本demo1.创建需要装载的类public class NoModifyClass { private String name = "NoModifyClass"; static { System.out.println原创 2021-07-18 11:28:12 · 474 阅读 · 1 评论 -
Java:使用javassist操作class文件添加无参构造函数并赋予默认值和一个奇怪的bug
当前版本:jdk1.8、javassist-3.24.0-GA、eclipse1. 声明当前内容主要为学习和复习之用,使用javassit来为一个class类添加无参构造函数,并赋予默认值的操作当前内容涉及:读取class文件为class文件中添加无参构造函数使用eclipse调用无参构造函数,并打印结果基本的字节码操作指令的使用2. 基本demo首先准备一个实体类User(保存的时候自动编译为class文件)public class User { public /* static原创 2021-07-17 16:12:19 · 1117 阅读 · 1 评论 -
Java:使用javassist读取class文件并获得其中的内容信息
1. 声明当前内容主要为本人学习和复习使用javassit操作读取class文件并获取其中的信息,这个信息主要包括,注解声明,方法,接口,java编译器版本主要操作:主要使用ClassFile方式读取class文件的信息2. demo首先准备一个接口,和一个实现类public interface ByteCodeResolver { ClassFileInfo resolver(byte[] bytes);}实现类@Deprecatedpublic class DefaultB原创 2021-07-17 15:19:12 · 2211 阅读 · 1 评论 -
Java:使用javapackager打包jar为exe并运行
1. 声明当前内容主要为本人学习和复习使用javapackager方式将jar文件打成exe包(也可使用其他的例如exe4j),主要参考官方文档,即一个具有自身容器exexml配置groupId>springboot-test</groupId> <artifactId>springboot-test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>j原创 2021-07-10 10:56:28 · 4120 阅读 · 0 评论 -
Java:自定义ScheduledExecutorService来实现定时提交任务
1. 声明当前内容主要为本人学习和复习定时任务一般的定时任务:使用Executors.newScheduledThreadPool方式创建调用scheduleWithFixedDelay来定时执行主要为实现定时周期性任务,但是每个周期性的任务执行的时间不确定,这个就导致一些问题例如:必须每天提交日志信息(不能延迟)2.newScheduledThreadPool的demo如下:一个1秒钟的定时任务public static void main(String[] args) { Sch原创 2021-07-04 13:19:06 · 1238 阅读 · 1 评论 -
Java:ForkJoinPool的简单使用
1. 声明当前内容主要为本人学习和复习之用,主要为ForkJoinPool的简答使用,主要参考:官方文档2. 基本demoimport java.util.concurrent.ForkJoinPool;import java.util.concurrent.RecursiveAction;import java.util.concurrent.TimeUnit;/** * * @author hy * @createTime 2021-07-04 10:08:54 * @descr原创 2021-07-04 13:02:41 · 257 阅读 · 0 评论 -
Java:@Repeatable注解的使用和反射获取
当前环境:JDK1.81. 声明当前内容主要用于本人学习和复习java的基础知识,主要为@Repeatable注解的使用,以及部分注解的使用主要参考:Oracle官方文档主要为:使用@Repeatable和获取@Repeatable修饰的注解属性在类变量前面使用注解(这个好像无法反射获取)2. @Repeatable基本demo首先需要一个代表单数的注解import java.lang.annotation.Repeatable;import com.sun.istack.NotNu原创 2021-07-03 13:52:30 · 612 阅读 · 1 评论 -
Java:递归扫描某个文件下所有文件并使用正则匹配文件
1. 声明当前内容主要为本人学习和复习java的基础内容,主要为递归扫描文件夹的所有.txt结尾的文件主要参考:javaSE官方文档主要使用:Files这个工具类2. 基本demo public static void main(String[] args) { String userDir = System.getProperty("user.dir"); Path sourcePath = Paths.get(userDir); // 开启递归扫描文件 String find原创 2021-07-03 13:36:38 · 760 阅读 · 0 评论 -
Java:创建和写入一个jar文件并执行
1. 声明当前内容主要为学习和复习使用java方式生产一个jar并使用命令行执行主要为使用JarOutputStream方式创建jar文件2.基本demo1.首先准备一个java文件(Hello.java)public class Hello { public static void main(String[] args) { System.out.println("hello create my jar file"); }}2.找到项目编译路径并找到该Hello.class文件的原创 2021-06-20 13:06:21 · 1219 阅读 · 0 评论 -
Java:读取jar文件中的class并创建实例
1. 声明当前内容主要为本人学习和复习从jar文件中读取class的操作主要包括:使用JarFile方式读取使用JarInputStream方式读取主要参考官方api文档2. JarFile方式Jar就是Zip文件的一种首先准备一个需要读取的jar(myCommons.jar)import java.io.File;import java.io.IOException;import java.net.MalformedURLException;import java.net.U原创 2021-06-20 12:55:35 · 2915 阅读 · 1 评论 -
Allatori:代码混淆器的使用
1. 声明当前内容主要为学习和使用Allatori这个代码混淆器的使用,主要为了混淆java代码下载demo版的:官方版本2. 基本demo1. 解压后并在lib中找到这个2.创建一个maven项目(本人使用eclipse)3.将需要的jar导入到项目中的lib文件中4.创建一个allatori文件夹和在这个文件夹下面创建一个allatori.xml5.开始编写主要的混淆配置信息:allatori.xml<?xml version="1.0" encoding="UTF-8"?原创 2021-06-19 17:17:54 · 1741 阅读 · 0 评论 -
Javassist:使用-javaagent方式实现修改方法内容(打包和非打包方式执行)
1. 声明当前内容主要为使用Javassit+(-javaagent)方式实现修改方法体的内容(不修改源码的情况下)当前内容参考:Javassit官方文档,和部分反编译主要内容:使用javassit修改某个类的某个方法,实现执行打成jar包方式执行pom依赖<dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <原创 2021-06-19 14:20:10 · 2974 阅读 · 0 评论 -
Javaagent:简单的使用-javaagent输出加载的类
1. 声明当前内容主要为本人学习-javaagent,本人由于多次看到(输入java的时候发现,破解idea的时候发现了),所以了解这个的作用当前内容主要为:创建自己的-javaagent的类,并打包在另外一个运行的main方法上使用这个jar包主要实现类打印功能当前内容部分参考:博文2. 创建一个基本的agent并打包package com.hy.vmopt;import java.lang.instrument.ClassFileTransformer;import java.原创 2021-06-19 11:53:44 · 895 阅读 · 0 评论 -
Maven打包:将config和lib以及jar分开打包(探讨各种打包的区别)
1. 声明当前内容主要为测试和使用Maven打包,将当前的资源文件、maven的lib文件以及生成的jar文件分开来当前内容为:使用maven打包并分离jar项目中的lib、resources、jar使用springboot打包使用eclipse的export方式打包比较各种的优缺点2.maven打包配置(将lib、resources、jar分离)基本的pom<build> <plugins> <plugin> <groupI原创 2021-06-19 11:14:41 · 3199 阅读 · 1 评论 -
Apache IoTDB:使用jdbc方式执行各种命令行方式的操作
1.声明当前内容主要为使用java的jdbc方式操作Apache IoTDB这个时序数据库安装参考这个博文:Linux(CentOS7)中安装和测试IoTDB首先需要开放端口,Apache IoTDB端口为66672.基本的pom依赖<dependency> <groupId>org.apache.iotdb</groupId> <artifactId>iotdb-jdbc</artifactId> <version>0原创 2021-03-06 10:25:58 · 1441 阅读 · 2 评论 -
Java基础复习:向文本文件中追加数据(IO)
1.声明当前内容主要用于本人复习java基础:IO流向文件中追加数据2. 坑点使用文件创建FileOutputStream的坑1.创建方式一FileOutputStream fos = new FileOutputStream(file);OutputStreamWriter writer = new OutputStreamWriter(fos);默认使用带一个参数的构造器,所以在创建的时候,默认采用写入方式时(即每次打开文件时将文件内容清空),无论是调用writer的write方法还是a原创 2021-02-06 16:06:43 · 1967 阅读 · 0 评论 -
Jackson之转化字符出现的一个奇怪的问题
1.声明当前内容用于本人学习和笔记之用,用于记录当前的使用jackson中出现的问题,当前内容主要是jackson序列化json字符时出现的问题当前使用jackson的版本为:2.6.7版本2.实体类public class Message { private String msg; public String getMsg() { return msg; } public...原创 2020-05-03 17:43:19 · 725 阅读 · 0 评论 -
Java爬坑之使用equals和==的区别
1.简介最近在牛客网上看到这样一道面试题Integer i01 = 59;int i02 = 59;Integer i03 = Integer.valueOf(59);Integer i04 = new Integer(59);System.out.println(i01 == i02);System.out.println(i01 == i03);System.out.prin...原创 2020-02-14 12:54:26 · 327 阅读 · 0 评论