
Java
文章平均质量分 78
介绍java
爱吃牛肉的大老虎
学无止境,既要有深度又要有广度地学习
展开
-
Java代理之Java Agent分析
Java Agent是一种用于在Java应用启动或运行过程中对其进行监控、修改或增强的机制。它利用,可以在应用启动时或运行中动态加载代码,对目标应用的字节码进行操作。这种机制非常适合应用监控、性能分析、调试、代码注入和安全性增强等任务。简单来说,Java Agent就是运行在 Java 虚拟机(JVM)上的一种工具,能在程序运行时对其进行监控、修改甚至重定义。它的作用和AOP(面向切面编程)有点类似,但更加底层,直接作用在JVM层面。可以理解为它是全局的 AOP。原创 2024-11-08 18:30:53 · 981 阅读 · 0 评论 -
Java IO流之为什么要手动关闭IO流
我们深知在操作 Java 流对象后要将流进行关闭,但是现实的情况却往往不尽人意,原因是每个开发者的写法可能不尽相同,不同的写法导致出现各种千奇百怪的问题,下面我们一起来看看几种关闭流的代码案例try {// ...操作流代码// 依次关闭流try {try {// 此处会报 java.io.IOException: Stream Closed 错误按照先后顺序关闭文件流,这种写法下,有可能会报错误。原因是依赖于,如果直接关闭流,再次关闭。原创 2024-05-01 09:01:24 · 1264 阅读 · 0 评论 -
Java序列化之Jackson详解
Jackson是一个用于处理JSON数据的开源Java库。是一种轻量级的数据交换格式,易于阅读和编写,同时也易于计算机解析和生成。在Java领域,Jackson已经成为处理JSON数据的事实标准库。它提供了丰富的功能,包括将Java对象转换为JSON字符串(序列化)以及将JSON字符串转换为Java对象(反序列化Jackson:提供了通用的数据绑定功能(将Java对象与JSON数据相互转换):提供了核心的低级JSON处理API(例如JsonParser和JsonGenerator)原创 2024-03-24 18:28:02 · 4431 阅读 · 0 评论 -
Java IO流之Netty实现聊天通信功能
点击了解 IO流之IO,NIO和AIO讲解Netty是一个相当优秀的通信框架,大多数的顶级开源框架中都有Netty的身影。应用过程中,它最核心的东西叫handler,我们可以简单理解它为消息处理器。收到的消息和出去的消息都会经过一系列的handler加工处理。收到的消息我们叫它入站消息,发出去的消息我们叫它出站消息,因此handler又分为出站handler和入站handler。收到的消息只会被入站handler处理,发出去的消息只会被出站handler处理。原创 2024-03-15 13:54:59 · 1663 阅读 · 2 评论 -
Java实现在线编辑预览office文档
PageOffice是一款在线的office编辑软件,帮助Web应用系统或Web网站实现用户在线编辑文档。可以完美实现在线公文流转,领导批阅,盖章。可以给文件添加水印,在线安全预览防止用户下载和复制文件等我们对以上找到的优秀的解决方案,进行改进和总结,并封装成一个组件:preview组件为什么是组件?因为它跟框架无关,可以在任何框架中使用,且使用起来跟原生的div标签一样方便。并编写使用文档: preview组件文档, 文档支持交互体验。目前docx,pdf,xlsx预览基本可以了,都是最好的方案。原创 2024-01-13 17:42:17 · 4516 阅读 · 0 评论 -
Java之实现添加文字水印、图片水印功能
通过上面的步骤,我们已经获取到了原始图片信息,下面需要创建一个画笔进行水印的添加。水印包含文字水印、图片水印。将鼠标移动到想要添加水印的位置,左下角可以看到鼠标点击位置对应的坐标值,拿到这个坐标值写入程序即可。经过上面的操作后,我们的图片添加文字就已经处理完成了。设置不当,就看不到水印效果。将图片保存到本地,然后选中图片点击右键,编辑,选择。我们想要看得到效果,需要进行处理,保存图片到本地。首先,我们要知道图片上的坐标的表示法。水印图片位置:F:\image\s.png。(磅),数字越大,字就越大。原创 2023-10-09 11:56:08 · 278 阅读 · 0 评论 -
JAVA,Spring,Dubbo的SPI机制讲解
内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要用于框架中开发,例如。目录下的以接口全限定名命名的文件,并加载该文件中指定的接口实现类,以此完成调用。机制,针对同一接口采用不同的实现提供给不同的用户,从而提高了框架的扩展性。方法实现对服务提供接口的查找,最后遍历来逐个访问服务提供接口的实现类。机制的思想非常好,但是也存在相应的弊端。内置的用于查找服务提供接口的工具类,通过调用。说明:实例化是通过反射来实现对应的初始化。的思想,但对其进行扩展和优化。来查找服务提供的工具类。原创 2023-02-14 15:48:55 · 979 阅读 · 0 评论 -
JSON字符串和对象(泛型)互转以及和XML区别
文章目录1 JSON解析问题1.1 User实体1.2 转换为JSON对象后首字母小写1.3 json对象或json字符串与实体互转1.3.1 实体转json对象或字符串1.3.2 json对象或json字符串转换为实体对象1.4 Gson来解析和反解析json对象1.4.1 解析普通对象1.4.2 解析泛型对象1.5 JSONObject来解析和反解析1.5.1 转为json对象或json字符串1.5.2 反解析实体对象1.5.2.1 反解析普通实体对象1.5.2.2 反解析泛型实体对象1.6 JSON引原创 2019-01-07 13:48:52 · 7659 阅读 · 1 评论 -
Java中finalize,hashcode和toString
文章目录1 Finalize1.1 finalize方法作用1.2 怎么使用finalize1.3 finalize异常和问题1.4 finalize执行过程(生命周期)2 hashCode2.1 hashcode做什么用2.2 在类中覆盖equals的时候,为什么要同时覆盖hashCode2.3 hashCode一般规则2.4 如果覆盖了equals却不覆盖hashCode的后果3 toString3.1 toString方法实现什么功能3.2 当toString方法没有被覆盖的时候,返回的字符串通常是什原创 2022-02-26 13:18:50 · 575 阅读 · 0 评论 -
Java排序之Comparator和Comparable比较
文章目录1 引言1.1 Comparable排序1.2 Comparator大小1.3 两者区别1 引言Comparator和Comparable名字比较相似,但是作用不同,Comparator接口比较大小,Comparable接口进行排序,但是具体怎么用还得慢慢来看1.1 Comparable排序Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.s转载 2022-02-21 11:04:35 · 237 阅读 · 0 评论 -
Java之RMI和JNDI
文章目录1 RMI1.1 rmi概念1.2 RMI基础运用1.2.1 定义一个远程的接口1.2.2 编写一个远程接口的实现类1.2.3 创建服务器实例1.2.4 编写客户端并且调用远程对象1.3 RMI反序列化攻击1.3.1 定义远程接口1.3.2 远程接口实现1.3.3 服务器1.3.4 客户端2 JNDI2.1 概念2.2 JNDI结构2.2.1 InitialContext类2.2.2 Reference类2.3 JNDI注入攻击2.4 JNDI注入+RMI实现攻击2.4.1 RMIServer代码2转载 2021-12-10 23:20:07 · 2142 阅读 · 0 评论 -
Java热部署技术
文章目录1 Java热部署1.1 热部署问题1.2 类加载的探索1.4 自定义加载器的实现1.5 利用ASM修改class文件1.6 改变创建对象的行为1.7 使用 JavaAgent 拦截默认加载器的行为1 Java热部署1.1 热部署问题在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于某些大型的应用来说,每次的重启都需要花费大量的时间成本。虽然 osgi 架构的转载 2021-11-16 20:37:59 · 4656 阅读 · 0 评论 -
从jar包中读取资源文件(原理深究)
文章目录1 从jar包中读取资源文件1.1 问题引入1.2 问题分析及解决1 从jar包中读取资源文件1.1 问题引入在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即,使将资源文件一并打包,这些东西也找不出来了。看看下面的代码:package edu.hxraid; import java.io.*; public class Resource { public void getRe原创 2021-11-14 18:18:27 · 474 阅读 · 0 评论 -
Java中static和final总结
文章目录1 final1.1 final总结1.2 使用final意义2 static2.1 static总结2.2 理解Java的static import静态引入机制2.2.1 精确导入的方式2.2.2 按需导入的方式2.2.3 可以导入的种种东西2.2.4 导入之间的冲突问题2.2.5 本地和外来的竞争2.2.6 Static Import的负面影响2.3 java静态方法能否被重写1 final1.1 final总结final修饰类:表示该类不可继承;final不能修饰interface接原创 2021-11-06 21:12:56 · 1091 阅读 · 0 评论 -
Java类访问权限
文章目录1 类访问权限1.1 四种访问权限解析1.2 Protected1 类访问权限1.1 四种访问权限解析Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符四种访问权限:private: Java语言中对访问权限限制的最窄的修饰符,一般称之为私有的。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。default:即不加任何访问修饰符,通常称为默认访问模式。该模式下,只允许在同原创 2021-11-06 20:44:24 · 1146 阅读 · 0 评论 -
Java使用DFA实现敏感词过滤
文章目录1 Java敏感词过滤1.1 DFA简介1.2 Java实现DFA算法实现敏感词过滤1.3 具体代码实现1.3.1 设置检索库1.3.2 查询检索库1.3.3 测试检索库1 Java敏感词过滤敏感词、文字过滤是一个网站必不可少的功能,如何设计一个好的、高效的过滤算法是非常有必要的。1.1 DFA简介在实现文字过滤的算法中,DFA是唯一比较好的实现算法。DFA即Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个s原创 2021-11-05 17:23:34 · 1568 阅读 · 0 评论 -
Java反射之深入理解
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种 。反射的概念是由在年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在和面向对象方面取得了成绩。当然反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之处,这些有助于我原创 2021-11-05 11:28:07 · 306 阅读 · 0 评论 -
Java操作文库使用swfTools案例
文章目录1 模仿在线预览1.1 背景需求1.2 具体实现1.2.1 安装必备工具组件1.2.2 软件开发过程2 模仿文库2.1 基本说明2.2 基本代码2.2.1 doc转pdf2.2.2 swftools将PDF转换swf2.2.3 flexPaper显示swf1 模仿在线预览1.1 背景需求Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现假客户要求,上传到管理系统的文档(包括ppt,word,excel,txt)只能预览不允许下载。想到百度文库和豆丁网,百度文库转载 2021-11-04 22:31:45 · 269 阅读 · 0 评论 -
通过 JACOB 实现 Java 与 COM 组件的互操作
文章目录1 JACOB1.1 概述1.2 JACOB 项目的由来1.3 JACOB操作邮箱1.3.1 使用背景1.3.2 配置您的开发和运行环境1.3.3 实现业务逻辑1.4 JACOB操作邮箱1.4.1 环境配置:1.4.2 常用类以及方法1.4.3 初始化com线程1.4.4 创建应用程序对象1.4.5 打开文档1.4.6 保存文档1.4.7 退出wordapplication1.4.8 释放com线程1 JACOB1.1 概述jacob(java com bridge,java com桥)分为两转载 2021-11-04 21:57:45 · 5422 阅读 · 1 评论 -
Java中文乱码详解
文章目录1 Java编码转换1.1 String转换图1.2 String和Unicode编码1.3 new String()的理解1.4 实际例子1.5 java编码转换过程1.5.1 编辑源文件1.5.2 编译源文件1.5.3 运行编译类1.5.3.1 Console上运行的类1.5.3.2 JSPServlet类1.5.3.4 数据库部分1.6 java是如何编码解码的1.6.1 编码&解码1.6.2 I/O操作1.6.3 按字节1.6.4 按字符1.6.5 字节&字符转换1.6.6原创 2021-11-02 11:48:17 · 69776 阅读 · 0 评论 -
IO流之IO,NIO和AIO讲解
文章目录1 IO,NIO,AIO1.1 各个基本概念1.2 NIO详解1.2.1 Buffer读写数据1.2.2 Buffer和clear方法1.2.3 Buffer参数1.2.4 散射&聚集1.3 Java AIO1.4 使用例子1.4.1 散射聚集1.4.2 I/O 的三种方式对比试验1.4.3 DirectBuffer VS ByteBuffer1.4.4 对DirectBuffer监控代码1.4.5 AIO使用例子1 IO,NIO,AIO1.1 各个基本概念Java I/O 的相关方原创 2021-10-31 12:58:34 · 1684 阅读 · 0 评论 -
IO流分类讲解
文章目录1 IO流基础1.1 IO基础1.2 流分类1.2.1 Java字节流Stream1.2.1.1 使用缓冲区读入1.2.1.2 使用缓冲区写出1.2.2 java 字符流Reader Writer1.2.3 Java缓冲流1.2.4 Java转换流1.2.5 数据流1.2.6 随机访问流RandomAccessFile1.2.7 对象流1 IO流基础javaIO就是输入输出体系,简单的理解就是java对于文件内存网络资源的操作,在java传统的IO体系中,虽然可以完成基本所有需求的操作,但是为了原创 2021-10-31 12:42:57 · 665 阅读 · 0 评论 -
Java序列化深入理解
文章目录1 序列化2 serialVersionUID作用1 序列化2 serialVersionUID作用serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastE原创 2021-10-30 12:22:33 · 339 阅读 · 0 评论 -
Java回调深入理解
文章目录1 什么是接口回调1 什么是接口回调什么是接口回调?1.接口回调是什么[2]?接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例。interface People{void peopleList();}class Student implements People{public void原创 2021-10-26 11:52:06 · 352 阅读 · 0 评论 -
Java异常的深入研究与分析
文章目录1 异常讲解1.1 异常机制概述1.2 异常处理的流程1.3 异常的结构1.3.1 Error异常1.3.2 RuntimeException异常1.3.3 Checked Exception异常1.4 异常处理1.4.1 在声明方法时候抛出异常1.4.2 在方法中如何抛出异常1.4.3 throw和throws的区别1.4.4 使用finally块释放资源1.4.5 try{ return }finally{}中的return1 异常讲解1.1 异常机制概述异常机制是指当程序出现错误后,程序原创 2021-10-18 16:35:12 · 169 阅读 · 0 评论 -
Java中date处理
文章目录1 Date类型1.1 使用Date类代表当前系统时间1.2 使用Date类代表指定的时间(已过时)1.3 获得Date对象中的信息1.4 Date对象和相对时间之间的互转2 Calendar类2.1 使用Calendar类代表当前时间2.2 使用Calendar类代表指定的时间2.3 获得Calendar类中的信息2.4 其它方法说明2.4.1 add和roll2.4.2 after方法2.4.3 getTime方法2.5 Calendar对象和相对时间之间的互转2.6 应用示例2.6.1 计算两原创 2021-10-16 21:24:01 · 529 阅读 · 0 评论 -
java之定时器Timer
文章目录1 概览1 概览Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。简单的一个例程:import java.util.Timer;import java.util.TimerTask;/*** Simple demo that uses java.util.Timer to schedule a task to execute* once 5 seconds have原创 2021-10-15 21:43:55 · 1314 阅读 · 0 评论 -
Java如何生成jar包以及jar包加密
文章目录1 编写代码2 利用jar命令生成jar文件2.1 准备文件2.2 生成jar文件2.3 修改MANIFEST.MF文件2.4 运行hello.jar文件以前看到过别人用java编写的程序可以像exe文件那样执行运行,很是羡慕。现在抽个时间来研究下如何编写的,原来就是几个命令的使用,这里简单记录下生成可执行的jar包文件的步骤。1 编写代码我们这里编写一个类,这个类的主要目的就是测试接收到的参数并打印出参数值。package com.jar.test; /** *测试打成可执行的jar包原创 2021-10-10 22:35:41 · 6728 阅读 · 1 评论 -
java中this,cloneable,instanceof详解
文章目录一、JDK与jre简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。JDK就是Java Development KitJRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java原创 2021-10-10 22:24:47 · 265 阅读 · 0 评论 -
java重载重写和类初始化详解
文章目录1 重载中null和有形参2 重载中string和stringbuffer3 重载中无参和不定长参数我们先看两段代码:public classTest2 { public static void main(String[] args) { f1(null); f2(); } public static void f1(String s) { System.out.println("执行哪个方法原创 2021-10-02 18:37:14 · 963 阅读 · 0 评论 -
java中进行二进制,八进制,十六进制,十进制间进行相互转换
1 十进制转其他进制十进制转成十六进制:Integer.toHexString(int i)十进制转成八进制Integer.toOctalString(int i)十进制转成二进制Integer.toBinaryString(int i)2 其他进制转十进制十六进制转成十进制Integer.valueOf("FFFF",16).toString()八进制转成十进制Integer.valueOf("876",8).toString()二进制转十进制Integer.valueOf原创 2021-08-21 10:13:34 · 534 阅读 · 0 评论 -
JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
Object类可以做什么使用呢?我想大多数人都没有仔细思考过吧,今天带大家领略一下Object的魅力,准确的是或是扩展Object类的魅力。首先要定义两个属性:private static ClassLoader defaultClassLoader;private static Charset charset;在资源处理过程中,类加载器和编码方式是必不可是两个基本属性。在Resources分类中,可以分为:URL,InputStream,Properties,Reader,File需要注意的是转载 2020-12-04 13:11:52 · 3125 阅读 · 1 评论 -
java中的BigDecimal详解及使用
文章目录1 BigDecimal简介1.1 构造函数1.1.1 构造API1.1.2 使用1.2 方法1.2.1 方法API1.2.2 加法操作1.2.3 除法方法1.2.3.1 引出问题1.2.3.2 解决方法1.2.3.2.1 方法一1.2.3.2.2 方法二1.2.4 BigDecimal和格式化1 BigDecimal简介BigDecimal是由任意精度的整数非标度值和32位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负s原创 2020-11-23 11:47:36 · 9579 阅读 · 1 评论 -
System.nanoTime()为什么不能作为数据库主键
文章目录1 System.nanoTime()定义2 比较时间段1 System.nanoTime()定义System.nanoTime()的返回值只和进程已运行的时间有关, 不受调系统时间影响.根据纳秒方法的注释:Returns the current value of the running Java Virtual Machine’s high-resolution time so...原创 2019-12-03 19:32:40 · 929 阅读 · 1 评论 -
(error) CLUSTERDOWN Hash slot not served
用Linux建立redis集群的时候,会包一个错误:(error) CLUSTERDOWN Hash slot not served,网上给出的答案都是前篇一律的复制别人的代码,不同的网站进去了但是同一个没什么卵用的方法,今天我来说一下大体的解决办法,但是有一个前提:必须是初次安装报的错误 首先查看一下建立六个节点时的配置文件是否正确:举一个为例: daemoni...原创 2017-11-16 17:09:11 · 56885 阅读 · 7 评论 -
杨辉三角两种输出结果
package com.sxt;import java.util.Arrays;public class KeBen {public static void main(String[] args) {int[][] array =new int [10][10];array [0]=new int[]{1};//第一行就是1for (int i=1;转载 2017-07-22 12:10:30 · 493 阅读 · 0 评论 -
JAVA之常用的工具类
目录1 org.apache.commons.io.IOUtils2 org.apache.commons.io.FileUtils3org.apache.commons.lang.StringUtils4 org.apache.http.util.EntityUtils5 org.apache.commons.lang3.StringUtils6 org.apache....原创 2019-04-16 09:34:33 · 36027 阅读 · 3 评论 -
解析XML可扩展性文档的方法
解析XML可扩展性文档的方法:普通的解析法和DOM4J技术(1):就用普通的解析法:package com.sxt;import java.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import ja转载 2017-08-12 16:09:57 · 548 阅读 · 0 评论 -
用java的JFrame做一个登录系统的界面
在java的JFrame内通过创建匿名对象的方式做登录界面package com.sxt;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java原创 2017-08-12 14:48:10 · 24129 阅读 · 0 评论 -
写一个方法对任意引用数据类型数组进行排序(入门级慎看,很难!!!)
1. 写一个方法对任意引用数据类型数组进行排序。具体要求如下:1) 方法声明为public void sortArr(Object arr[]){ }2) 方法中首先输出排序前数组内容,然后进行排序,最后输出排序后数组内容。3) 可以是冒泡排序或其他算法实现,不直接调用Java提供的方法实现排序。思路:任意类实现Comparable接口来实现该引用数据类型的元素排序,在sort转载 2017-07-27 13:56:57 · 5931 阅读 · 2 评论