自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 源码的艺术:HashMap中的tableSizeFor方法

这个方法绝了。。。static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0

2020-09-23 12:18:39 127

原创 初探Java Atomic包之AtomicInteger

这个包里有很多类这里就先看个我常用的类AtomicInteger,操作int数据用到了Unsafe类,这个类可以直接访问系统内存资源,所以不安全。一般不开放给用户,对于getUnsafe方法,只开放给系统主加载器。这个类还有个关键的变量就是valueOffset,用反射和Unsafe类方法拿到了“value”的偏移地址。**************************AtomicInteger 类*************************************public cla

2020-09-23 10:34:45 195

原创 静下心看代码:int大小为什么正负不对称

我们都知道int类型是4个字节,32位。取值范围为−231≤int≤231−1-2^{31}\leq int \leq2^{31}-1−231≤int≤231−1为什么要231−12^{31}-1231−1,因为对于有符号数,第一位要用来表示符号。第一位为0表示正数,第一位为1表示为负数。比如0000 0001表示为11000 0001表示为-1即除了最高位表示符号,剩下的位数表示为真值。000 0001=1,再加一个符号位(0表示正数,则0000 0001为1,;1表示负数,则1000 00

2020-09-23 04:11:25 1120 3

原创 ReentrantLock之锁中锁探秘

和Synchronized相对的就是ReentrantLock了区别:Synchronized:java关键字,jvm层面的锁,在jvm上会形成指令monitorenter和monitorexit。等锁时不可打断。会自动释放锁。只能对一个条件加锁。ReentrantLock:是一个类,继承自Lock。等锁时可打断。得手动在finally里面用unlock释放锁。支持公平锁和非公平锁。可以绑定多个Condition。接下来主要讲讲ReentrantLock的实现,继承自Lock类。类里有一个抽象静态内

2020-09-19 10:53:52 287

原创 ThreadLocal:享受编程之美

ThreadLocal是什么?ThreadLocal是一个用来保证每个线程拥有独享资源的,比如ThreadLocal,就是每个线程独有的String对象。那么ThreadLocal是如何做到的呢?关键就是ThreaLocal类里的一个静态内部类:ThreadLocalMap,占了整个ThreadLocal类接近60%的代码。首先在ThreadLocalMap里,还有一个很关键的静态内部类,Entrystatic class Entry extends WeakReference<Thread

2020-09-19 09:09:32 69

原创 java iterable是否是iterator多余的操作??

答案肯定是不是多余的,那么两者都是接口,区别在哪呢public interface Iterable<T> { /** * Returns an iterator over elements of type {@code T}. * * @return an Iterator. */ Iterator<T> iterator();public interface Iterator<E> { /**

2020-08-28 11:09:27 101

原创 Java中的取模

p=nk+r任意一个正整数p都能表示为n个k相乘后加上余数r。对于都是正整数的p和k取模取余都是一样的r=p-nk因为n=p/k所以r=p-n(p/k)如果为p,k中有负数,那取模取余的差别就来了。取模要求的是p/k都为正向0取整,其中有一个为负则向负无穷取整java取模:p%k=p-n(p/k)对于p/k, java的做法是向0取整,对于p,k都为正整数,毫无影响。但是如果p,k中有负数,p/k还是向9去取整的话就会出现错误。比如-5/3, 向0取整为-1,向负无穷取整为-2.

2020-08-11 11:04:46 1334

原创 关于springboot+jsp 打包部署服务器的坑

这几天搞了个springboot+jsp+jpa的项目,写完后想部署在amazon的aws的服务器上。发现打包的jar包一直没办法成功,一直没办法访问jsp页面,但是rest可以成功接受jason数据。后面才发现springboot不支持jsp了29.4.5 JSP LimitationsWhen running a Spring Boot application that uses an embedded servlet container (and is packaged as an execu

2020-08-06 13:17:54 216

原创 与hashmap深入交流

今天从源码角度进一步和hashmap 深入交流。总所周知,hashmap底层是由数组实现的,更确切的说是由数组+单向链表实现的。而这个单向链表则由Node类中的next来实现。transient Node<K,V>[] table;static class Node<K,V> implements Map.Entry<K,V> {Node<K,V> next;......}首先看一下hashmap的初始化,就看最具代表性的一个。我们需要提供初始

2020-07-26 13:07:43 163

原创 小酌Deque

刷力扣239的时候,发现使用一个数据结构Deque会让实现很简单。于是看源码学习一下。Deque继承Queue,但是包含更多方法。DequeDeque就是doulbe end queue,就是两端都可以操作的队列。public interface Deque<E> extends Queue<E> {void addFirst(E e);void addLast(E e);boolean offerFirst(E e);......}ArrayDeque让我们来

2020-07-25 12:01:39 112

原创 binary search会遇到的坑

今日刷力扣,看到一个典型的二分法。278. First Bad Version。于是用典型的二分法进行解题,自信满满submit,没想到提示说time limit exceed让我大吃一惊,堂堂二分法,也能超时?????????????????????????????太不可思议了!后来才发现问题出在 这 int middle = (right+left)/2; int middle = left+(right-left)/2;这两个式子在纯数学角度是一模一样的,但是在coding中 in

2020-07-22 05:12:03 97

原创 Comparator可能会遇到的坑

Comparator是一个用来比较的接口。我们可以自定义一个比较类实现Comparator来实现自定义排序。只需要实现其中的compare方法就可以了。public interface Comparator<T> {int compare(T o1, T o2);............}今天我在刷力扣时,我想对一个二维数组进行自定义的排序。运用了匿名内部类来实现Comparator,但是在compile的时候却报错了。让我百思不得其解,为什么这样会错呢。后来又看了看源码。Compa

2020-07-22 04:41:46 870

原创 小小解剖一下HashMap

EntryMap中有一个接口Entry,是用来存储键值对的,还提供了getKey,getValue等方法。interface Entry<K,V> {K getKey();V getValue();V setValue(V value); boolean equals(Object o); int hashCode(); ............................ }Node<K,V>HashMap就有一个静态内部类Node是实现了这个接口

2020-07-20 07:42:24 81

原创 Contains() different in ArrayList and HashSet

function contains() is defined in Collection, so List, Set,Queue all have this function.But the point is that the efficiency is different.ArrayListfrom the source code, we know that the ArrayList is implement by a object[]transient Object[] elementDat

2020-07-16 11:59:50 258

原创 notes of thinking in java

java 继承 接口子类覆写,方面名参数必须一致,返回值可以不用,只要子类返回值为父类的派生。比如父类返回值Object,子类可以返回String。接口的域默认都为static final, 方法都默认为public, 接口的实现类必须实现所有方法。方法中的参数要在匿名类中使用的,必须是final的,如果参数只是给父类构造器使用而不再匿名类中使用,不用final。在迭代器中,应该先修改list中的内容,因为list的add方法会修改modcount,iterate.next()会检查expected

2020-07-15 11:50:41 82

原创 Arrays.asList‘s analysis

when i solved problems in leetcode, i found i had some problems with Arrays.asList. when i try to initiate a new List using a int[].List<Integer> res=new ArrayList(Arrays.asList(new int[1,2]));i found the result will be List<int[]>, which me

2020-07-15 11:49:37 72

原创 java comparator 与 comparable 源码解析

首先需要明确的是这俩都是接口。都用来比较两个对象之间的大小。comparable实现comparable的类有很多,比如String,Integer,Character等等,代表它们都是可以排序的。而comparable只有一个方法,就是compare。public int compareTo(T o);而以上提及的类都实现了各自的compare方法,比如Integer类publi...

2020-02-25 23:03:35 156

原创 lc 647 Palindromic Substrings

今天刷了第647题,题目乍一看是dp,但是想了一会不知道如何利用dp,于是想先用brute force进行解决。利用了两个for循环// for every charater i will truncate different size's subarrayfor(int i=0;i<s.length();i++) for(int a=i+1;a<=s.l...

2020-02-05 12:52:09 101

原创 一个你最需要的dubbo入门工程,maven+dubbo+hibernate+redis+mvc+mysql

先向一个url进行请求,通过mvn框架映射到相应的controller,消费者会请求提供者暴露在dubbo注册中心(这里用的是zookeeper)上的服务接口,然后远程调用提供方的方法,拿到返回值后返回一个相应的view视图,解析后展示。提供方会通过hiberate对mysql进行查询(前提是redis缓存中没有相应的值),缓存中有值就直接返回。以下是整体的项目框架。    ...

2018-08-23 14:47:42 612

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除