Java
文章平均质量分 58
聆听。。花开雨落
这个作者很懒,什么都没留下…
展开
-
Java--jar包反编译工具File Expander
当我们使用Java开发时,经常会遇到一种情况:我们拿到了一个 JAR 文件,但是却没有源代码。这时候,我们就需要使用反编译工具来帮助我们还原出源代码。反编译工具可以将编译后的 JAR 文件转换回可读的 Java 源代码。这样,我们就可以看到原始的代码,理解它的逻辑和实现细节。比较成熟的反编译插件有:jd-gui、jadx、FernFlower、IDEA Java Bytecode Decompiler 小奎尝试了几个虽然可以反编译但是操作都有点复杂。转载 2024-01-19 11:10:09 · 472 阅读 · 0 评论 -
java如何调用本地扬声器
java如何调用本地扬声器转载 2022-06-21 14:38:12 · 566 阅读 · 0 评论 -
java--TCP为什么是四次挥手,而不是三次?
因为TCP是全双工通信的(1)第一次挥手因此当主动方发送断开连接的请求(即FIN报文)给被动方时,仅仅代表主动方不会再发送数据报文了,但主动方仍可以接收数据报文。(2)第二次挥手被动方此时有可能还有相应的数据报文需要发送,因此需要先发送ACK报文,告知主动方“我知道你想断开连接的请求了”。这样主动方便不会因为没有收到应答而继续发送断开连接的请求(即FIN报文)。(3)第三次挥手被动方在处理完数据报文后,便发送给主动方FIN报文;这样可以保证数据通信正常可靠地完成。发送完FIN报文后,转载 2021-06-20 11:56:17 · 290 阅读 · 0 评论 -
java--ConcurrentHashMap跟HashMap,HashTable的对比
一、ConcurrentHashMap跟HashMap,HashTable的对比1. HashMap不是线程安全:在并发环境下,可能会形成环状链表(扩容时可能造成,具体原因自行百度google或查看源码分析),导致get操作时,cpu空转,所以,在并发环境中使用HashMap是非常危险的2. HashTable是线程安全的:HashTable和HashMap的实现原理几乎一样,差别:1.HashTable不允许key和value为null;2.HashTable是线程安全的。HashTab转载 2021-06-01 14:49:17 · 166 阅读 · 0 评论 -
java--HashMap的初始容量及扩容机制
通常在我们的应用中,HashMap是用到最多的数据结构之一,在JDK1.8之前,它的底层结构是数组+链表,而在JDK1.8之后,为了查询效率的优化(主要是当哈希碰撞较多的时候),它的底层结构变成了数组+链表+红黑树。今天就来探讨一下HashMap的扩容机制,这也是面试时被问到最多的问题。首先看一下源码中HashMa...转载 2021-06-01 11:37:26 · 2127 阅读 · 0 评论 -
java--关于 ArrayList 初始容量和扩容
众所周知,ArrayList的底层是数组,那么ArrayList的数组容量到底是多少呢? 首先,先new一个ArrayList,然后向集合中添加11个元素,至于为什么是11个,下面再说。 然后我们debug一点一点来看: 我们看到,在执行ArrayList的空参构造的时候,执行了一段代码,那么这段代码表示什么什么含义呢? 可以看到在ArrayList类中定义了两个成员变量,通过注释我们可以知道elementData表示数组缓冲区,而DEFAULT...转载 2021-06-01 10:54:47 · 1541 阅读 · 0 评论 -
java-- Integer类的缓存机制
Integer类的缓存机制一、Integer类的缓存机制 二、其它具有缓存机制的类 三、测试题 试题1 试题2 试题3 总结一、Integer类的缓存机制我们查看Integer的源码,就会发现里面有个静态内部类。 public static Integer valueOf(int i) { assert IntegerCache.high >= 127; //当前值在缓存数组区间段,则直接返回该缓存值 .转载 2021-05-30 13:47:07 · 231 阅读 · 0 评论 -
java jar后台启动的三种方式
java jar启动linux中启动 java -jar 后台运行程序直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉。以下方法可让jar运行后一直在后台运行。java -jar xxx.jar &说明: 在末尾加入 & 符号(1)执行java -jar xxx.jar后(2)ctrl+z 退出到控制台,执行 bg(3)exit完成以上3步,退出SHELL后,jar服务一直在后台运行。nohup java -jar xxxx.转载 2021-05-20 15:34:22 · 2609 阅读 · 0 评论 -
ThreadLocal原理分析与使用场景
什么是ThreadLocal变量ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。 既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量转载 2021-04-28 17:59:17 · 164 阅读 · 0 评论 -
线程终止的三种方式
文章目录0.准备演示Demo (1 和 2共用 Demo)1.线程终止方式--Stop()2.线程终止方式--interrupt()3.线程终止方式--标志位0.准备演示Demo (1 和 2共用 Demo)public class StopThread extends Thread { private int i = 0, j = 0; @Override public void run() { synchronized (this) { // 增加同步锁...转载 2021-04-28 15:13:19 · 1570 阅读 · 0 评论 -
Tomcat启动内存设置
Tomcat启动内存设置Tomcat的启动分为startupo.bat启动和注册为windows服务的启动,下面一一说明。1.startup.bat启动在tomcat_home/bin目录下找到catalina.bat,用文本编辑器打开,加上下面一行:set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M解释一下各个参数:-Xms1024M:初始化堆..转载 2021-02-01 20:50:15 · 1171 阅读 · 0 评论 -
java--null值报空指针问题
任何含有null值的包装类在Java拆箱生成基本数据类型时候都会抛出一个空指针异常。一些程序员犯这样的错误,他们认为自动装箱会将null转换成各自基本类型的默认值,例如对于int转换成0,布尔类型转换成false,但是那是不正确的,如下面所示:String isWearMask = (tpm.getWearMask() == 1 ? "是" : "否");//此时tpm不为null,如果tpm里面的值wearMask为null,会报空指针异常;原因:程序会把 null值拆箱成基本数据类型与 1 比.原创 2021-01-05 11:15:07 · 1845 阅读 · 0 评论 -
Java-- 时间 转换/Date(1384171247000+0800)/
/Date(1384171247000+0800)/ 怎么转化成类似于2013-12-25的格式啊?下面就是转换的过程给定时间转换: publicstaticvoidmain(String[]args){ finalStringstr="1384171247000+0800"; finalStringtime=str.substring(0,str.length()-5); S...转载 2020-09-27 14:48:40 · 2958 阅读 · 0 评论 -
java--深拷贝和浅拷贝的区别
深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。假设B复制了A,修改A的时候,看B是否发生变化:如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,使用深拷贝的情况下,释放内存的时候不会因为出现浅..转载 2020-08-16 16:23:01 · 828 阅读 · 1 评论 -
Java -- Serializable 序列化和反序列化
遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个 Serializable 接口,也就是为啥要序列化c,serialVersionUID 这个的值到底是在怎么设置的,有什么用。有的是1L,有的是一长串数字,迷惑ing。我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题。在处理这个问题之前,你要先知道一个问题,这个比较重要。这个Serializable接口,以及相关的东西,全部都在 J转载 2020-08-15 10:40:58 · 184 阅读 · 0 评论 -
java--为什么重写equals方法,还必须要重写hashcode方法
为什么?是为了提高效率,采取重写hashcode方法,先进行hashcode比较,如果不同,那么就没必要在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用; 我们都知道java中的List集合是有序的,因此是可以重复的,而se...转载 2020-08-12 20:54:37 · 544 阅读 · 0 评论 -
java--性能优化之for循环
完成同样的功能,用不同的代码来实现,性能上可能会有比较大的差别,所以对于一些性能敏感的模块来说,对代码进行一定的优化还是很有必要的。今天就来说一下java代码优化的事情,今天主要聊一下对于for(while等同理)循环的优化。作为三大结构之一的循环,在我们编写代码的时候会经常用到。循环结构让我们操作数组、集合和其他一些有规律的事物变得更加的方便,但是如果我们在实际开发当中运用不合理,可能会给程...转载 2020-04-08 11:45:04 · 215 阅读 · 0 评论 -
imageIO异常:Unsupported Image Type, 不支持图像类型
是不是在使用iamgeio导入图片的时候出现了这个异常呢:javax.imageio.IIOException: Unsupported Image Type如果你确定图片格式没有错,那我想你可能使用过photoshop了。谁说理科男没有艺术细胞的,我每次敲代码导入的图片都是自己PS的....言归正传。P过的图片保存为jpg格式时,默认的模式是CMYK模式(注意,这是给...转载 2019-04-26 17:40:35 · 8146 阅读 · 0 评论 -
Java实现把cmyk格式图片转换为RGB格式图片
package com.pb.util;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;import java.awt.Transparency;import java.awt.color.ColorSpace;import java.awt.imag...转载 2019-04-26 17:43:22 · 1759 阅读 · 0 评论 -
Java将图片读取成rgb
private ImageInfo loadTestImage(String path) throws Exception{ File img = new File(path); if (!img.exists()) { return null; } BufferedImage image = null;...原创 2019-04-26 17:58:48 · 2527 阅读 · 0 评论 -
Java将rgb byte数组转成jpg
//将转换后的图片输出到本地 public boolean rgbBytesToJpg(byte[] rgb, String afterPath, float jpgQuality) { try { BufferedImage bufferedImage = new BufferedImage(210, 370, BufferedImage.TY...原创 2019-04-26 18:03:08 · 4064 阅读 · 1 评论 -
Java远程连接Redis【配置redis.conf开放多个ip地址】
打开redis.conf文件在NETWORK部分有说明 /usr/local/src ################################## NETWORK ##################################### # By default, if no "bind" configuration directive is speci...转载 2019-05-02 23:20:17 · 2075 阅读 · 0 评论 -
C3P0属性说明
acquireIncrement 默认值为3,表示当C3P0数据源中的连接池耗尽时,一次同时获取的连接数。acquireRetryAttempts 默认值为30,表示从数据库中获取新连接失败后,重复尝试的次数。如果将其设置为0或者小于0的数值,则C3P0将一直进行尝试获取连接。acquireRetryDelay 默认值为1000,单位为毫秒,表示C3P0相邻两次获取连接的时间...转载 2019-05-08 14:25:14 · 816 阅读 · 0 评论 -
java中异常抛出后代码还会继续执行吗
今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢?public void add(int index, E element){ if(size >= elements.length) { throw new RuntimeException("顺序表已满,无法添加"); //r...转载 2019-06-05 22:10:20 · 3594 阅读 · 0 评论 -
enum枚举单例的使用
使用情景:java调用dll,在调用dll里面的接口之前,要先调用初始化函数;而这个初始化函数每次都需要执行1分钟才执行完,如果每次调用接口之前都调用一次初始化函数,显然太过浪费时间,很影响用户体验;故用单例模式解决此问题。1.创建单例类:/** * enum枚举单例的使用 */public enum PictureUtil { INSTANCE; private...原创 2019-06-13 22:20:27 · 1364 阅读 · 1 评论 -
java单例模式5种实现方式
1、饿汉式(线程安全,调用效率高,但是不能延时加载):publicclassSingletonDemo{privatestaticSingletonDemo instance =newSingletonDemo;privateSingletonDemo(){}publicstaticSingletonDemo getInsta...转载 2019-06-19 14:59:57 · 1966 阅读 · 0 评论 -
java如何高效拼接字符串
由于String对象时不可变对象,因此在需要对字符串进行修改操作时(如字符串连接和替换),String对象总是会生成新的对象,所以其性能相对较差。 String常量的累加操作:对于静态字符串的连接操作,Java在编译时会进行彻底的优化,将多个连接操作的字符串在编译时合成一个单独的长字符串。 String变量的累加操作:底层使用了StringBuilder的功能。 StringBu...转载 2019-06-11 14:24:23 · 22312 阅读 · 2 评论 -
Java集合----Iterator用法整理
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一...转载 2019-06-25 23:26:13 · 208 阅读 · 0 评论 -
JAVA集合----循环删除list中元素的方法总结
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。 JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。1、for循环遍历listfor(int ...转载 2019-06-25 23:30:46 · 209 阅读 · 0 评论 -
java清空list的多种方法
1.用list.clear()方法清空list;用此方法,其它引用该list的值也会变成空。list2 = list;//此时list2有值list.clear();//先将list赋值给list2,再清空,此时list和list2都为空2.用list = null来清空list3.new ArrayList()来清空list...原创 2019-06-18 13:48:16 · 62952 阅读 · 0 评论 -
面试必问的CAS,你懂了吗?
概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。案例介绍CAS之前,我们先来看一个例子。/*** @author joonwhee* @date 2019/7/6*/public class VolatileTe...转载 2019-07-08 21:55:14 · 251 阅读 · 0 评论 -
Java中将xml文件转化为json的两种方式
最近有个需求,要将xml转json之后存储在redis中,找来找去发现整体来说有两种方法,使用json-lib包中的net.sf.json或者使用org.json,这里将两种方式的实现代码写下来记录一下,以后方便拿来直接用了,省的来回找了。第一种方式json-lib,这种方式需要的依赖包比较多,具体需要以下jar包这个从网上下载既可以了或者是利用Maven指定好依赖即可 ...转载 2019-04-03 14:00:22 · 4575 阅读 · 0 评论