java
文章平均质量分 69
风吹千里
潜心一技、做到极致。
展开
-
UTF-8编码原理
UTF-8是目前使用最广泛的Unicode字符编码,本文顺着历史顺序讲解,来引出UTF8编码的来由和工作原理。原创 2024-04-03 09:47:34 · 313 阅读 · 0 评论 -
Java中整数转浮点数的原理
在JDK中Float,Double类中有一个方法。原创 2024-04-03 09:29:04 · 766 阅读 · 0 评论 -
Java如何获取某个包下所有的类
【代码】Java如何获取某个包下所有的类。原创 2023-03-08 10:35:25 · 1022 阅读 · 0 评论 -
在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区
如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)。老年代的内存空间远大于新生代,进行一次Full GC消耗的时间比Minor GC长得多。你也许会问,执行时间长有什么坏处?频发的Full GC消耗的时间是非常可观的,这一点会影响大型程序的执行和响应速度,更不要说某些连接会因为超时发生连接错误了。好,那我们来想想在没有Survivor的情况下,有没原创 2022-11-06 11:27:31 · 128 阅读 · 0 评论 -
jstat命令查看jvm的GC情况
jstat命令查看jvm的GC情况 (以Linux为例)jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]注意!!!:使用的jdk版本是jdk8. 类加载统计: Loaded:加载class的数量 Bytes:所占用空间大小 Unloaded:未加载数量 Bytes:未加载占用空间 Time:时间 编译统计 Compiled:编译数量。...转载 2020-09-04 12:58:09 · 240 阅读 · 0 评论 -
Java优化正则表达式的匹配效率
回溯是造成正则表达式效率问题的根本原因,每次匹配失败,都需要将之前比对过的数据复位且指针调回到数据的上一位置,想要优化正则表达式的匹配效率,减少回溯是关键。独占模式应该算是贪婪模式的一种变种,它同样会尽量匹配更多的内容,区别在于在匹配失败的情况下不会触发回溯机制,而是继续向后判断,所以该模式效率最佳。贪婪模式是正则表达式的默认匹配方式,在该模式下,对于涉及数量的表达式,正则表达式会尽量匹配更多的内容,我用模型图来演示一下匹配逻辑。注意,到这步因为不满足匹配条件,所以触发回溯机制,将判断条件回调到上一个。转载 2022-10-13 22:35:10 · 911 阅读 · 0 评论 -
Java NIO学习笔记概述
refer to original文章目录1.Java NIO TutorialJava NIO: Channels and Buffers(通道和缓冲区)Java NIO: Non-blocking IO(非阻塞IO)Java NIO: Selectors(选择器)2.Java NIO OverviewChannels and BuffersSelectors3.Java NIO Channe...原创 2019-12-08 17:53:02 · 370 阅读 · 1 评论 -
Java ==和equals的区别
对于包装类,java在编译Integer i = 100;时,会翻译成为Integer i = Integer.valueOf(100);,而java API中对Integer类型的valueOf的定义如下。所以,包装类直接通过非new的方式生成对象时,如果值>=-128 and原创 2022-09-13 12:58:03 · 146 阅读 · 0 评论 -
Java编程杂记四
文章目录自动装箱和拆箱枚举Java多线程的开发中有三种特性原子性可见性有序性volatile保证原子性?自动装箱和拆箱如:Integer integer = 9;int n = integer;就相当于Integer integer = Integer.valueOf(9); //自动装箱int n = integer.intValue(); //自动拆箱枚举枚举本质就是一个类,在一个文件中已经定义了一个public class,就不能定义public enum公用的枚举类。如在同一文件中原创 2020-08-08 07:50:31 · 96 阅读 · 0 评论 -
Java编程杂记三
文章目录参考Unsafe类double-check 写法空对象调用静态方法空对象instanceofScheduledThreadPoolExecutorJava远程调试String.intern不同jar完全相同的包名和类名的加载问题java 获取泛型的实际类java为什么有些异常throw出去需要在函数头用throws声明,一些就不用。clone浅clone深cloneserialVersionUID参考jdk8源码java 版本 java version “1.8.0_191”Unsafe类原创 2020-08-08 07:48:03 · 238 阅读 · 0 评论 -
Java编程杂记二
文章目录@[toc]Java 空接口Java断言关键字assertJava多态线程停止情景模拟解决方案方案一:stop()方法方案二:interrupt()方法Thread.sleep()为什么需要抛InterruptedException多个finally和return的执行顺序finally不一定执行多个finally执行顺序没有return的情况有return的情况20200624补充Java 空接口空接口是没有包含任何方法的接口。叫标记接口。标记接口是没有任何方法和属性的接口.它仅仅表明它的类原创 2020-08-08 07:47:03 · 143 阅读 · 0 评论 -
MAC环境获取openjdk源码
文章目录使用Mercurial获取OpenJDK源码安转Homebrew安装Mercurialclone 源代码MAC环境获取openjdk步骤使用Mercurial获取OpenJDK源码安转Homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install...原创 2020-04-28 19:24:31 · 386 阅读 · 0 评论 -
elasticsearch6.4源码debug
我最近在看ES的源码,我在网上看到各种各样的教程。说这样的错误,那样的错误,然后怎么怎么做,但是这些都没有解决我的问题,我写这边博客,不一定也能解决每个博友遇到的问题。首先,贴一下我的参考资料。https://github.com/elastic/elasticsearch/blob/master/TESTING.asciidoc我觉遇到问题,还是要首先看官网的说明书。这篇说明可以通过命令...原创 2020-03-04 15:56:37 · 251 阅读 · 0 评论 -
java编程杂记一
文章目录Java 空接口Java断言关键字assertJava多态线程停止情景模拟解决方案方案一:stop()方法方案二:interrupt()方法Thread.sleep()为什么需要抛InterruptedExceptionJava 空接口空接口是没有包含任何方法的接口。叫标记接口。标记接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其它代码来测试允许做一些事情。...原创 2020-02-29 01:02:18 · 212 阅读 · 0 评论 -
java遇到Process 输出流阻塞的问题
今天发现之前写的一个程序,在程序中调用外部程序,需要把进程的InputStream的内容返回,在这个过程中,之前采用的直接获取,发现存在InputStream的结果太大,导致外部进程阻塞。 经过查资料,发现网上有InputStream流按照byte[]数组来读取,把内容拼接组成返回结果,这样可以解决进程阻塞的问题,但是存在内容读取重复的问题,而且不易解决。如果返回结果是字符串,最后在看到一个...转载 2020-01-16 23:28:39 · 1318 阅读 · 0 评论 -
Java IO 文件写不全问题
今天记录一下JAVA IO方面的一些细节问题使用 Java 程序往磁盘写文件时碰到了这样的问题:文件写不全。假如内容(StringBuffer/StringBuilder)有 100W 个字符,但是通过 Java 程序写到文件里的却不到 100W ,部分字符不见了。代码大致是这样的:private void writeToDisk() throws Exception { ...原创 2018-11-21 12:01:46 · 1098 阅读 · 0 评论 -
求解两个字符串的最长公共子序列
转自https://www.cnblogs.com/hapjin/p/5572483.html今天项目遇到一个问题我觉得这个博客打开我的思路,特在此转一下博客,后面有时间研究一下。一,问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这两个字符串的最长公共子序列长度为4,最长公共...转载 2018-11-15 20:55:02 · 2088 阅读 · 1 评论 -
java的单例详解
开发项目可能需要用到单例来实现一些功能,因此关于java多线程的单例模式,这是我通过学习和自己实验理解之后总结出来的。原创 2017-06-22 23:00:30 · 205 阅读 · 0 评论 -
java 与构造函数同名的函数是否可以存在?
今天写这篇文章主要记录一下自己的对java的学习。java 构造函数又称构造器,今天我遇到这样一个疑惑,就是在构造函数前面加上返回类型如void或者其他返回类型会怎么样?实验代码:public class Test { /** * @param args the command line arguments */ public static voi原创 2017-06-18 17:57:55 · 650 阅读 · 1 评论 -
java 几种移位运算场景
1.超过自身位数的移位我们知道,int类型占用4字节,32位,而long类型占用8字节,64位。那么,如果将int类型(long类型)移动超过31位(63位)便失去了意义,因为用通俗的话来说,就是“全移走了”。不过幸运的是,系统对这种情况做了处理。 是怎么处理的呢?普遍都是这样认为的:如果左侧操作数是int类型,会对右侧操作数进行除数为32的求余运算,如果左侧操作数为long类型,会对右侧...原创 2018-04-03 14:53:55 · 314 阅读 · 0 评论 -
java位运算符常用场景
1.计算m*2^n次方(如计算3X8==3<<3) 2.判断一个数n的奇偶性 a&1 = 0 偶数 a&1 = 1 奇数 n&1==1?“奇数”:“偶数” 为什么与1能判断奇偶?所谓的二进制就是满2进1,那么好了,偶数的最低位肯定是0(恰好满2,对不对?),同理,奇数的最低位肯定是1.int类型的1,前31位都是0,无论是1&0还是0&am...原创 2018-04-03 14:59:35 · 2670 阅读 · 4 评论 -
java泛型 泛型的内部原理:类型擦除以及类型擦除带来的问题
转自https://blog.csdn.net/wisgood/article/details/11762427一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。 Java中的泛型基本上都是在编译器这个层次来实现...转载 2018-04-25 10:49:22 · 327 阅读 · 0 评论 -
JAVA8 十大新特性详解
转自https://www.cnblogs.com/xingzc/p/6002873.html 前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Time API ...转载 2018-04-25 16:01:52 · 909 阅读 · 0 评论 -
深入浅出 Java 8 Lambda 表达式
转自http://blog.oneapm.com/apm-tech/226.html 摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等。本文系 OneAPM 工程师编译整理。Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的...转载 2018-04-25 18:51:36 · 154 阅读 · 0 评论 -
Java8函数式编程之函数式接口
Java8函数框架解读函数编程的最直接的表现,莫过于将函数作为数据自由传递,结合泛型推导能力,使代码表达能力获得飞一般的提升。那么,Java8是怎么支持函数编程的呢?主要有三个核心概念:函数接口(Function) 流(Stream) 聚合器(Collector)在上一篇的转载博客< 深入浅出 Java 8 Lambda 表达式>里,了解了什么是Lambda表达式,...原创 2018-04-26 14:21:05 · 327 阅读 · 0 评论 -
Java8函数式编程之StreamAPI
什么是 Stream?Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。数据源 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。聚合操作 类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorte...原创 2018-04-26 18:02:42 · 192 阅读 · 0 评论 -
java类型转换之向上转换和向下转换
向上转型:即子类对象转换为父类对象。向下转型:即父类对象转为子类对象,这是又分为安全的向下转型和不安全的向下转型class Animal{ String type; public Animal(String type){ this.type = type; } public void eat(){ System.out.pri...原创 2018-04-27 09:53:02 · 2545 阅读 · 0 评论 -
Java中的Mark interface之RandomAccess接口
RandomAccess接口也是一个标记接口,还有Serializable接口,Cloneable接口 首先来看Collections.binarySearch的源码public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) { ...原创 2018-04-27 13:31:32 · 215 阅读 · 0 评论 -
自定义对象序列化
转自http://bluepopopo.iteye.com/blog/486548在Java中使用Serialization相当简单。如果你有一些对象想要进行序列化,你只需实现Serializable接口。然后,你可以使用ObjectOutputStream将该对象保存至文件或发送到其他主机。所有的non-transient和non-static字段都将被序列化,并且由反序列化重构造出一模一样...转载 2018-05-20 11:17:00 · 939 阅读 · 0 评论 -
Java编程:Java里的协程
今天看到这篇博客记录一下,后面有时间来研究一下协程看能不能对现在的项目有所提高转https://blog.csdn.net/zdy0_2004/article/details/51323583?utm_source=blogxgwz0这东西其实有很多名词,比如有的人喜欢称为纤程(Fiber),或者绿色线程(GreenThread)。其实最直观的解释可以定义为线程的线程。有点拗口,但本质上就...转载 2018-10-29 11:09:42 · 26276 阅读 · 2 评论 -
java for的几种循环方式
最近开发的一个项目中用到一种for的循环方式,我之前没有看到过,因此在这个空闲的时间,整理了一下java关于循环的知识。for循环第一种for循环这种循环方式是最常见也是最常用的,就是for(int i=0;i int [] array=new int[]{2,3,4,5,6,8}; for(int i=0;i<array.length;i++){原创 2017-06-29 23:50:35 · 10062 阅读 · 0 评论