![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
东纪元
这个作者很懒,什么都没留下…
展开
-
Java HashMap putVal 源码中(n - 1) & hash是什么意思?
1、在保证容量都是2的幂次时,(n - 1) & hash相当于取余操作(这就是HashMap容量都是2次幂的原因了,是一种优化)即:(n - 1) & hash = hash % n2、位运算比取余操作快(大概十倍)原创 2021-09-03 11:25:09 · 1049 阅读 · 0 评论 -
java 过滤emoji
public class EmojiFilter { public static void main(String[] args) { String s = filterEmoji("为了让自己\uD83D\uDD25就黑露思"); System.out.println(s); } private static boolean isEmojiCharacter(char codePoint) { return (codePoin.原创 2021-05-14 14:08:29 · 455 阅读 · 0 评论 -
关于Java8 Optional的使用场景
https://mp.weixin.qq.com/s/mfoVkcAaxmNjNPn8ofigFg原创 2020-02-12 13:15:51 · 1313 阅读 · 0 评论 -
java 多线程面试复习
https://blog.csdn.net/qq_35190492/article/details/104691668?depth_1-utm_source=distribute.pc_feed.none-task&request_id=&utm_source=distribute.pc_feed.none-task转载 2020-03-09 22:47:37 · 139 阅读 · 0 评论 -
jvm面试问题及我的答案
今天在技术群里被大佬问了一堆jvm的问题。。收集记录下来。。并且附上我的答案(没有百度的,不可尽信,仅仅是我看《深入理解java虚拟机》的粗浅回答)1、堆被分成了新生代和老年代,什么对象会进入老年代。答:(1)大对象(对象大小超过设定的阈值),直接到老年代。(2)在年轻代survivor区域存活minorgc次数超过指定次数的对象。默认是15次。可通过参数设置。(3)s...原创 2020-01-02 20:00:04 · 111 阅读 · 1 评论 -
ReentrantLock是如何实现与synchronized一样的语义?比如在不使用volatile修饰变量是如何保证该变量的可见性的?
在复习《深入理解java虚拟机》的时候想到这个问题的。因为学习多线程的时候我记得synchronized包含的代码块中所用到的共享变量是不需要加volatile修饰的,synchronized本身就保证了代码块所访问的共享变量的可见性。。。这是java本身底层所支持的特性。。然后就产生了一个ReentrantLock的疑问:先简单描述一下ReentrantLock是由java代码...原创 2020-01-02 14:18:00 · 566 阅读 · 0 评论 -
九、hadoop mapreduce分区
mapreduce的分区是指把map任务执行完后得到的数据根据partitioner的规则分配到不同的reducer上处理,(不同的reduce的输出结果会在不同的文件中)一、什么时候分区?每个Mapper执行完map任务后还会在当前节点对map输出数据进行partitioner和sort操作,做完这些操作之后把结果放到内存的缓冲区中。当存储大小超过缓冲区阈值,会把内存的缓冲区数据放...原创 2019-06-16 19:10:14 · 350 阅读 · 0 评论 -
java HttpClient使用代理地址,并且绕过https证书验证(抓包需要客户端往Charles工具指定的ip和端口发送数据)
直接复制下面两个方法,就可以使用代理发绕过证书验证的https请求了。https请求时绕过ssl证书验证:/** * 绕过验证 * * @return * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public static ...转载 2019-06-12 12:03:25 · 4172 阅读 · 3 评论 -
jvm的卡表(Card Table)
转载自:https://juejin.im/post/5c39920b6fb9a049e82bbf94JVM之卡表(Card Table)我们知道,JVM在进行垃圾收集时,需要先标记所有可达对象,然后再清除不可达对象,释放内存空间。那么,如何快速的找到所有可达对象呢?最简单粗暴的实现,就是每次进行垃圾收集时,都对整个堆中的所有对象进行扫描,找到所有存活对象。逻辑是简单,但性能比较...转载 2019-07-04 16:21:57 · 8534 阅读 · 0 评论 -
Cglib 与 JDK动态代理的运行性能比较 (未验证)
https://www.cnblogs.com/haiq/p/4304615.html转载 2019-06-14 09:42:53 · 129 阅读 · 0 评论 -
java Matcher的find、group、groupCount、start、end的使用
参考我的https://blog.csdn.net/qq_36951116/article/details/90549486原创 2019-05-25 19:24:53 · 3184 阅读 · 0 评论 -
java中正则表达式Pattern与Matcher类使用详解(find、group)
一、Pattern的使用这个使用很简单。1、把正则表达式编译为Pattern对象:比如:Pattern compile = Pattern.compile("http://([a-z]+\\.)+[a-z]+");就是用于匹配http的url的正则表达式(随手写的,可能有bug),利用compile静态方法创建对应的Pattern实例对象。2、Pattern里面两个有用的...原创 2019-05-25 19:23:39 · 8866 阅读 · 3 评论 -
centos上使用yum安装java
1、yum install java-1.8* -y安装jdk1.8相关的所有2、配置环境变量原创 2019-04-24 23:13:23 · 261 阅读 · 0 评论 -
NIO 关于SocketChannel的isConnected与finishConnect区别
-----重要的先说-----区别:1、isConnected是判断是否连接成功的,如果连接成功,则true,否则false;源码如下:通过上面两张图能够知道,isConnected只有当状态为2(已连接时)才会返回true。2、finishConnect是判断连接是否完成(看起来和isConnected一样,但是,finishConnect内部会主动抛异常,isCon...原创 2019-04-16 20:43:13 · 3955 阅读 · 0 评论 -
java HttpClient绕过https的ssl证书验证
我在另一篇文章里也有描述,因为标题是描述另一个问题的,所以再起一篇文章https://blog.csdn.net/qq_36951116/article/details/91493376https请求时绕过ssl证书验证:/** * 绕过验证 * * @return * @throws NoSuchAlgorithmException *...转载 2019-06-12 12:07:37 · 2896 阅读 · 0 评论 -
java HttpClient使用代理ip和端口(方便charles抓包)
直接复制下面两个方法,就可以使用代理了。如果即需要绕过ssl验证,又要用代理,(发https请求时,往charles的代理地址发请求会需要ssl证书,否则charles抓到的请求就是unknow)。而绕过ssl验证就可以让charles抓到数据了。当前这篇文章只讲怎么设置代理,如果即需要绕过ssl验证,又要用代理,则看另一篇:https://blog.csdn.net/qq_3695111...原创 2019-06-12 12:13:30 · 2545 阅读 · 0 评论 -
java常量池:字符串常量池,静态常量池,运行时常量池,
转载自:https://blog.csdn.net/qq_25825923/article/details/84972256字符串常量池(String Poll)java6: 存在于永久代中。 字符串常量池保存的是字符串常量。 java7: 转移到了堆中。 字符串常量池存的是字符串常量和堆内的字符串对象的引用。 静态常量池zld自身理解:java编译后生成的...转载 2019-07-03 12:21:17 · 602 阅读 · 0 评论 -
java 线程池
http://www.tianxiaobo.com/2018/04/17/Java-%E7%BA%BF%E7%A8%8B%E6%B1%A0%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90/https://dongxuan.iteye.com/blog/901689转载 2019-07-04 15:05:18 · 297 阅读 · 1 评论 -
ThreadPoolExecutor参数的理解
https://blog.csdn.net/zhongxiangbo/article/details/70882342转载 2019-07-26 09:57:33 · 178 阅读 · 0 评论 -
spring look-method的使用
作用:用于代理当前bean指定的get方法的,使得该bean的get方法的返回值为注入的bean。具体:1、作为返回值的类public class Test {}2、要使用lookup-method标签的测试beanpublic class TestBean{ public Test getTest() { System.out.println...原创 2019-08-16 16:05:32 · 950 阅读 · 0 评论 -
java8 list根据元素的某个字段或者根据元素的多个字段去重(多种方式)
本例子使用的实体类如下:class Person { private String name; private int age; //省略getter/setter/toString}第一种去重方式:java8利用Collectors.toMap去重 List<Person> personList = new Arra...原创 2019-04-10 15:12:59 · 30168 阅读 · 6 评论 -
Java8中计算日期时间差
https://blog.csdn.net/hspingcc/article/details/73332526转载 2019-09-26 18:54:35 · 142 阅读 · 0 评论 -
子类上是否可以继承父类的注解
1、父类某个方法上有注解(不论这个注解是否使用了inherit元注解标注),方法被继承后,只要不重写,那么也相当于这个注解被继承。。。其实这注解不算被继承,只不过是效果和继承一样,因为子类实例调用继承自父类的方法是使用super.父类方法的方式调用的,只不过默认省去super而已,所以最终调用的还是父类的方法,所以注解还是生效。。。而如果子类重写了父类的方法之后,那么调用该方法时就不会再调用到...转载 2018-11-23 13:50:39 · 4088 阅读 · 0 评论 -
解决了个关于Mongo的Decimal128类型的问题
起因:前端调用接口查询finallyScore时,由于后台接口返回的finallyScore是一个对象,从而导致页面展示finallyScore时显示NaN。解决:1、自己也复现了下这个bug,返回的finallyScore在一些情况下是正常的double型数据,而有时就编程对象了。2、然后就是debug,找到mongo查询返回的结果,List<Document>...原创 2019-03-28 15:46:57 · 8532 阅读 · 0 评论 -
java正则表达式句法一览表
转载 2019-04-06 14:48:34 · 159 阅读 · 0 评论 -
关于Map中的put方法返回值,以及putIfAbsent方法的使用
众所周知,Map是根据key进行增删改查的,然后......一、put方法:返回值:返回该key对应的旧的value,如果map中原本没有这个key对应的entry,那么就返回null。如果还不明白,那拆解为下面两步理解:(1)如果map中不存在该key,那么put该key时返回的是null(2)如果map中已经存在该key,那么put该key-value时返回的是旧的valu...原创 2019-01-18 10:18:19 · 11746 阅读 · 0 评论 -
1.8 HashMap文字描述(复习)
1、查找(1)通过hash求余找到相应的桶,如果桶的节点是是链表节点则(2),如果是红黑树节点则(3)(2)遍历链表比较hash,和通过equals比较,找到相等的(3)红黑树的查找,和二分搜索树没什么差别,也是通过key的hash和equals找到相等的2、插入(1)当桶数组 table 为空时,通过扩容的方式初始化 table(2)如果桶中没有任何节点,则新插入节点直接...原创 2019-01-11 14:40:45 · 202 阅读 · 0 评论 -
HashMap 源码详细分析(JDK1.8)
转载自https://segmentfault.com/a/1190000012926722#articleHeader61.概述本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap。HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,在计算哈键的哈希值时,null 键哈希值为 0。HashMap 并不保证...转载 2019-01-11 10:05:45 · 240 阅读 · 0 评论 -
jdk源码阅读顺序及参考博客
https://blog.csdn.net/wozhengtao/article/details/83663631源码可以跟着这个人的学习:http://www.tianxiaobo.com/原创 2018-12-19 09:57:30 · 149 阅读 · 0 评论 -
ArrayList 源码理解
扩容机制:源码如下:minCapacity:最小需要的容量,也就是说存储数据的数组最小需要minCapacity所指定小长度。private void ensureExplicitCapacity(int minCapacity) { modCount++; // overflow-conscious code if (minCapacity - eleme...原创 2018-12-14 09:15:57 · 159 阅读 · 0 评论 -
java 字段覆盖(field)问题
字段的覆盖:public class Father { public String name="Father"; public static void main(String[] args) { Son son=new Son(); System.out.println(son.name); Father father=son...原创 2018-11-01 16:55:37 · 1300 阅读 · 0 评论 -
java 强引用 软引用 弱引用 虚引用 以及引用队列的使用
参考https://blog.csdn.net/u011936381/article/details/11709245一、强引用:对象的引用被至少一个变量所把持,此时该对象引用就是强引用,jvm无论怎么样都不会回收强引用,除非再也没有任何变量继续把持该引用。二、软引用、弱引用、虚引用的使用都需要配合SoftReference、WeekReference、PhantomReference...转载 2018-10-21 14:45:57 · 1844 阅读 · 0 评论 -
java 泛型通配符与super、extends使用的相关问题原理
class A{}class B extends A{}class C extends B{}class D extends C{}class E extends D{}一、 super,读和写数据都支持。(1)写数据时要写下界或者下界类型的子类,这里是C或者C的子类。(2)读数据时获取的只能是Object的对象,要自己把该对象强制转换为自己的类型。。不过获取数据时一般不知...原创 2018-08-08 20:57:29 · 293 阅读 · 0 评论 -
java 中StringBuffer为什么比StringBuilder效率慢
StringBuffer与StringBuilder都是继承自同一个抽象类,基本上方法都一样,实现也几乎都是一样的,而导致StringBuffer效率低一些的原因就是StringBuffer的几乎所有方法都加了synchronized。不论怎样,方法只要加了synchronized同步,效率就是比不加synchronized的低。。为了确保多线程下的安全,牺牲点效率也还行。反正区分好这...原创 2018-05-21 12:56:15 · 4525 阅读 · 0 评论 -
自定义类加载器的一些问题
一、同一个类文件被不同类加载器加载,它们的Class对象不相等。执行主类代码如下:import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;/** * @Author 周利东 * @Date: 2019/1/18 9:47 */public class ...原创 2019-01-18 18:38:20 · 385 阅读 · 0 评论 -
LinkedHashMap 源码详细分析(JDK1.8)
转载自 https://www.tianxiaobo.com/2018/01/24/LinkedHashMap-源码详细分析(JDK1-8)/1. 概述LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。除此之外,LinkedHashMap 对访问顺序也提供了相关支持。在一些...转载 2019-01-15 11:04:04 · 148 阅读 · 0 评论 -
Java ConcurrentHashMap
Java7 中实现的 ConcurrentHashMap 说实话还是比较复杂的,Java8 对 ConcurrentHashMap 进行了比较大的改动。建议读者可以参考 Java8 中 HashMap 相对于 Java7 HashMap 的改动,对于 ConcurrentHashMap,Java8 也引入了红黑树。说实话,Java8 ConcurrentHashMap 源码真心不简单,最难的在...转载 2019-01-15 16:36:40 · 436 阅读 · 0 评论 -
NIO buffer.compact和buffer.clear使用场景及其异同
相同点:调用完compcat和clear方法之后的buffer对象一般都是继续往该buffer中写入数据的不同点:(1)clear是把position=0,limit=capcity等,也就是说,除了内部数组,其他属性都还原到buffer创建时的初始值,而内部数组的数据虽然没赋为null,但只要不在clear之后误用buffer.get就不会有问题,正确用法是使用buffer.put从头开...原创 2019-02-13 21:42:17 · 1452 阅读 · 0 评论 -
NIO ByteBuffer的allocate与allocateDirect区别(HeapByteBuffer与DirectByteBuffer的区别)
其中allocateDirect分配的字节缓冲区用中文叫做直接缓冲区(DirectByteBuffer),用allocate分配的ByteBuffer叫做堆字节缓冲区(HeapByteBuffer)..其实根据类名就可以看出,HeapByteBuffer所创建的字节缓冲区就是在jvm堆中的,即内部所维护的java字节数组。而DirectByteBuffer是直接操作操作系统本地代码创建的内存缓...原创 2019-02-13 16:12:08 · 7055 阅读 · 0 评论 -
NIO Buffer缓冲区的duplicate与slice区别
duplicate英文翻译过来是复制的意思,根据源码,调用duplicate方法返回的Buffer对象就是复制了一份原始缓冲区,复制了position、limit、capacity这些属性,但是,复制后的缓冲区get和put所操作的数组还是与原始缓冲区一样的,所以对复制后的缓冲区进行修改也会修改原始的缓冲区,反之亦然。 slice如下图所示英文翻译后是切片、划分的意思。。。...原创 2019-02-13 14:31:42 · 4121 阅读 · 0 评论