共 11 篇文章 |
|
* 由于HashMap的put()方法添加key-value对时,当新放入HashMap的Entry中key * 与集合中原有Entry的key相同(hashCode()返回值相等,通过equals比较也返回true), * 新添加的Entry的value会将覆盖原来Entry的value,但key不会有任何改变, * 因此如果向HashSet中添加一个已经存在的元素时,新添加的集合元素将不会被放入HashMap中, * 原来... 阅26 转0 评0 公众公开 20-02-17 14:50 |
【老实李】JDK1.8中HashMap的红黑树。HashMap的实现就先介绍到这,下面就先讲一下红黑树,然后才能理解为什么要用红黑树来优化HashMap,用红黑树有什么好处。JDK1.7的时候是使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hash collision),那么这些key会... 阅53 转0 评0 公众公开 20-02-16 13:52 |
来看看它的方法体: void addEntry(int hash, K key, V value, int bucketIndex) { // 当前HashMap存储元素的个数大于HashMap扩容的阀值,则进行扩容 if ((size >= threshold) &&(null != table[bucketIndex])) { resize(2 * table.length); hash = (null != key) ?hash(key) : 0; bucketIndex = indexFor(hash, table.length); } /... 阅30 转0 评0 公众公开 20-02-16 13:13 |
// LinkedHashMap没有重写该方法,调用的HashMap中的entrySet方法 Set<Entry<String, String>> set = linkedHashMap.entrySet(); Iterator<Entry<String, String>> iterator = set.iterator(); while(iterator.hasNext()) { Entry entry = iterator.next(); String key = (String) entry.getKey(); String value = (St... 阅44 转0 评0 公众公开 20-02-16 13:12 |
关于@SpringBootApplication注解。@SpringBootApplication注解等价于以默认属性使用。注 @SpringBootApplication注解也提供了用于自定义@EnableAutoConfiguration和@ComponentScan属性的别名(aliases)。可以使用它们相关的属性设置 即@SpringBootApplication(exclude=SpringBoot1Application.class,excludeName=”“,scanBasePackageClasses=... 阅80 转0 评0 公众公开 20-02-13 11:36 |
Hystrix的线程池隔离和信号量隔离。官网对信号量隔离的描述建议。隔离的细粒度太高,数百个实例需要隔离,此时用线程池做隔离开销过大通常这种都是非网络调用的情况下线程池隔离:it executes on a separate thread and concurrent requests are limited by the number of threads in the thread-pool通过每次都开启一个单独线程运行。它的隔离... 阅1253 转1 评0 公众公开 20-02-13 11:15 |
Spring Cloud Feign设计原理什么是Feign?protected void logRequest(String configKey, Level logLevel, Request request) { log(configKey, "---> %s %s HTTP/1.1", request.method(), request.url());} protected Response logAndRebufferResponse(String configKey, Level logLevel, Response response, long elapsedTime) th... 阅68 转0 评0 公众公开 20-02-13 11:10 |
如何实现一个分布式 RPC 框架。趁实习前的这段业余时间,我实现了一个轻量级的分布式RPC框架,名字叫做 buddha,代码量不大,但是麻雀虽小却五脏俱全。线程的创建和销毁代价颇高,在Linux操作系统中,线程本质上就是一个进程,创建和销毁线程属于重量级的操作。如果线程数过多,那么会有较大比例的CPU时间花费在线程切换上。buddha是我学习验证... 阅31 转0 评0 公众公开 19-08-02 08:39 |
看一下MyBatis的底层实现原理!一日小区漫步,我问朋友:Mybatis中声明一个interface接口,没有编写任何实现类,Mybatis就能返回接口实例,并调用接口方法返回数据库数据,你知道为什么不?这便是Mybatis自动映射器Mapper的底层实现原理。二、Mybatis自动映射器Mapper的源码分析。这便是Mybatis使用动态代理之投鞭断流。三、接口Mapper内的方法... 阅95 转0 评0 公众公开 19-07-15 16:02 |
面试官:MyBatis你只写了接口为啥就能执行SQL啊?二、动态代理。先简单谈谈动态代理在Mybatis中是如何被大佬玩的出神入化的三、Mybatis核心设计思路。直觉告诉我,一个接口是不能运行的啊,一定有接口的实现类,可是这个实现类我自己没写啊,难道mybatis帮我们生成了?关于源码相关的内容,更进一步的解释动态代理在MyBatis中的使用,可以参考... 阅284 转1 评0 公众公开 19-07-15 15:58 |