![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 85
天水麒麟姜伯约
这个作者很懒,什么都没留下…
展开
-
jar包打包实践
作为java程序员,打包是一项基础性的技能。开发工具一般都集成了相应的打包功能,似乎不用我们投入过多的关注。但是开发工具的打包功能也不是万能的,也不一定能适合所有的场景。就好比交通工具,虽然有汽车,但是在交通拥堵的路面也许不如自行车灵活方便。所以我们还是有必要去了解一下如何使用JDK自带的工具进行打包。3.非springboot项目如何使用springboot的打包方式。1. 不打包运行java应用程序。2.命令行打包的几种方式。原创 2023-02-15 12:11:35 · 4358 阅读 · 0 评论 -
JVMTI 实现统计Java类对象实例个数
上述回调函数的第三个参数class_tag可以用来进行对Class进行分组,相同的class_tag对应相同的类对象,从而在FollowReferences的回调函数中完成Class对象实例个数的累加和所占用空间大小的计算。Java没有提供很直接优雅的方式让我们能够去轻易的去获取类对象的实例的数量,也许是出于性能的考虑,也许是这种事情本身没有显示出多大的价值,毕竟不那么常用。当Class参数值为空的时候,返回虚拟机中已装载的类的统计信息集合,当Class参数值不为空的时候,返回该Class的统计信息。原创 2023-02-13 21:22:31 · 1222 阅读 · 0 评论 -
URLClassLoader 加载同名类
URLClassLoader作为最常用、使用最广泛的类加载器,在java世界中扮演着举足轻重的角色。问题还是出在类加载器身上,由于双亲委托机制的存在,对于包含相同类名的jar包,class类实例只会选择优先被加载的jar包,后者则会被无视。一般的,系统类加载器是AppClassLoader,当然也可以通过jvm选项Djava.system.class.loader。一般通过在URLClassLoader的类构造器中指定URL数组来初始化路径的加载,当然也可以使用反射的方式来动态加载路径。原创 2023-02-11 19:57:21 · 1356 阅读 · 0 评论 -
Elasticsearch painless脚本中使用java自定义类函数
并且在使用http api的过程中,集成了各种脚本引擎,极大的提升了数据批量操作的效率以及灵活性,并且允许开发者按照接口规范按照实际需要对脚本引擎进行拓展。比如遇到一些较为复杂的数据处理逻辑时,为了避免在在脚本中使用过长过多的表达式,因为可能容易出现语法上的错误,而且在脚本中加入过多的表达式可能不容易进行调试。可以发现java.lang.String类开放了大部分的方法,java.lang.System类只开放了有限的几个方法,脚本语法简单易上手。这些方法主要是static方法,在脚本中调用的时候使用 "原创 2023-02-10 19:01:01 · 650 阅读 · 1 评论 -
Java代理agent实践
比如我们常用的开发工具idea就可以通过在jvm虚拟机参数中加入了 -javaagent 选项来实现破解,因为idea启动的时候装载了一个jvm进程,这也是破解的前提。这个包功能非常强大,jdk常用的工具在这个包中都有对应的实现,比如javac,jinfo,jar等。这两个方法参数时一致的,在调用loadAgent或者命令行参数指定-javaagent的时候jvm会将控制权转移到这两个方法,在这里,类似的在idea中运行java程序的时候从控制台的命令行参数中也可以找到javaagent的影子。原创 2023-02-08 22:45:46 · 1377 阅读 · 0 评论 -
修改jdk 运行时类
为了不影响rt.jar的正常使用,我们可以对rt.jar的副本进行替换操作。未修改之前java.net.URLClassLoader类位于 C:\Program Files\Java\jdk1.8.0_181\jre\lib\rt.jar 中。修改之后的java.net.URLClassLoader类位于F:\git26\bootclasspath\rt.jar。对于不同的jar包包含相同的类文件,classloader只会加载前者,所以有了上面的差异。以jdk1.8为例,它的运行时rt.jar位于。原创 2023-02-07 21:42:04 · 639 阅读 · 0 评论 -
java多线程环境下使用v8脚本引擎初探
相比之下,由于省去了诸如C++,C#,java等编译型语言编译的环节,极大的提升了程序的修改与部署效率。我们还可以找到很多类似的场景去应用脚本引擎的这些优点,比如我们可以通过在java后台集成脚本引擎实现程序的动态部署和热更新。在实际应用的时候,可能还需要继续进行完善的封装,比如说把脚本代码放在单独的文本文件之中进行集中统一管理。众所周知,v8脚本引擎是一门优秀的脚本语言,它的特点就是执行效率高。而且在上述脚本中实现了对java对象的植入,将console对象的log方法注册到了脚本引擎的上下文之中。原创 2023-01-08 13:22:36 · 1199 阅读 · 0 评论 -
windows下使用jdbc读写excel文件
使用java读写excel的方法不胜枚举,这里介绍的把excel文件当作一个数据库来对待并使用jdbc连接去读写它。还是那句话,存在就是合理的。每种读写excel的方法都有其优点和缺点,都有它所侧重的地方,都有适合它的应用场景。多掌握一种方法可能就意味着多一种选择,可能恰恰有的场景下这种解决方法就是最优的。当然勤于发现,善于发现就能看到更多的好处。jdbc早已经成为一种标准,正是因为它是一种标准,所以你如果掌握了这种标准就以为着你可以用最小的学习成本去学习这一类的东西。比如你只会写sql或者擅长写sql,那原创 2022-05-03 18:10:07 · 2018 阅读 · 2 评论 -
使用javassist改写类实现拦截sql语句输出实操
众所周知,javassist能够在字节码层面去重新构建一个已经存在的类,同时结合java虚拟机代理Instrumentation 根据类的字节码重定义类的能力。我们可以去动态改写一个类的方法,这个粒度可以精确到代码行。一般我们重定义类,可能希望增加或者减少字段,增加或者减少方法。但是结合我们常用的hotspot虚拟机具体实现,只对重写方法体逻辑生效,也就是我们只能重构类里面已经存在的方法。虽然虚拟机的实现只能局限于这种程度,但是并不意味着它的用途的狭隘,我们仍然能够利用这种支持做最大化的应用。只重写方法体的原创 2022-05-02 13:21:40 · 1660 阅读 · 0 评论 -
Java中feign的独立使用
独立应用feign能够帮助我们解决什么样的问题或者带来什么好处呢。一方面是优雅,优雅的代码总是具有更好的可读性,这将意味着可能具有更好的维护性。另一方面是独立,独立意味着它可以不依赖繁琐的框架,意味着能够在更多的环境中得到应用。1、建立一个基于maven的普通的Java项目,pom.xml配置如下<dependencies> <dependency> <groupId>io.github.openfeign</groupId>原创 2022-04-30 12:32:54 · 3452 阅读 · 0 评论 -
Java中使用webview内嵌vue页面
技术服务于业务,在什么情况下我们需要使用webview去内嵌vue页面呢。众所周知webview作为一个组件,可以看成是一个微型浏览器内核。那么如果在我们的程序中集成webview,那么我们的程序是不是也可以看成是一个定制版本的微型浏览器呢。如果只是纯粹的web应用也就是不需要参与过多的与本地化资源交互,我们只需要在浏览器中使用前端就可以了。虽说B/S模式已经大行其道但是毕竟还是得益于浏览器本身丰富的能力,当遇到一些特殊的需求,比如说在浏览器中调用本机程序等等,此时浏览器本身的能力已经无法满足需求的时候,我原创 2022-04-30 10:39:37 · 4995 阅读 · 3 评论 -
windows下c/c++创建Java虚拟机加载可执行jar包
一般的,我们使用java.exe或者javaw.exe来执行我们的java应用程序。但是实际上这两个可执行程序只是java虚拟机的启动器,使用java.exe将会创建一个控制台窗口用于输出,而javaw则不会创建控制台窗口。如果你讨厌黑乎乎的控制台窗口,那么就使用javaw.exe去加载。java虚拟机的主要实现包含在 java.dll 和 jvm.dll这两个动态链接库之中。我们以jdk1.8.0_181为例,java.dll 位于C:\Program Files\Java\jdk1.8.0_181.原创 2022-04-24 22:05:47 · 2796 阅读 · 0 评论 -
浅谈Java中DefineClass方法以及ClassLoader
一、反射调用ClassLoader类的defineClass方法直接根据字节数组定义一个类package org.hope;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.net.URL;import java.net.URLClassLoader;public class Main2{ public static void main(St原创 2022-04-04 13:20:17 · 4790 阅读 · 0 评论 -
Windows环境下在Java中内嵌MySQL数据库初探
一、以下测试程序包含两个类 com.suntown.Main 和 com.suntown.EmbedMySqlServer,依赖的jar包有mysql-connector-mxj-gpl-6-0-11-db-files.jar 对应的mysql版本为 6.0.11-alpha-communitypackage com.suntown;import java.sql.Connection;import java.util.Properties;public class Main ...原创 2022-03-29 16:48:05 · 1815 阅读 · 1 评论 -
elasticsearch自定义脚本插件实现列值自增
一.使用java编写elasticsearch 自定义插件,对应的elasticsearch版本为6.8.4,以下代码用到三个类com.suntown.UserScriptEnginePlugin、com.suntown.MyExpertScriptEngine、com.suntown.UserUpdateFactorypackage com.suntown;import org.elasticsearch.common.settings.Settings;import org.elast原创 2022-03-22 14:08:13 · 3867 阅读 · 0 评论