ReZero's Utopia.

ReZero's Utopia.

Everything is permitted.

JVM notes
How java code run? 1234567891011121314$ echo 'public class Foo { public static void main(String[] args) { boolean flag = true; if (flag) System.out.println("Hello, Java!"); if (flag == true) System.out.println("Hello, JVM!"); }}' > Foo.java$...
Go exception handle
原文链接:https://blog.golang.org/error-handling-and-go 1234567func Open(name string) (file *File, err error)f, err := os.Open("filename.ext")if err != nil { log.Fatal(err)}// do something with the open *File f 函数的返回值附带一个 error 作为异常返回,当出现异常时其不为 nil error 是接口类型,只包含了一个字符串做描述,因此...
AQS
AQSCLH1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495package com.hand.hcf.app.base.bigdata;import java.util.concurrent.atomic.AtomicReference;/** * @version: 1.0 *...
Leet-Code
1234567891011121314151617181920212223242526272829303132333435363738//Given a 2D binary matrix filled with 0's and 1's, find the largest square cont//aining only 1's and return its area. //// Example: //// //Input: ////1 0 1 0 0//1 0 1 1 1//1 1 1 1 1//1 0 0 1 0////Output: 4// Relate...
Algo tips
Binary Search123456789101112131415int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 while(left <= right) { int mid = left + (right - left) / 2; if(nums[mid] == target) return mid; else if (num...
TCP
TCP/IP网络连接 注意网络状态的变化 12syn_sent -> established -> fin_wait1 -> fin_wait2 -> time_wait > closedlisten -> syn_rcvd -> established -> closed_wait -> last_ack =======> closed 三次握手 SYN 失败 RTO变化:2**(cat /proc/sys/net/ipv4/tcp_syn_retries[即重传次数上限]) SYN-ACK 失败...
Java HashMap & Concurrent Hash Map
为啥拉链用尾插不用头插? jdk 1.7 用的头插,但头插的问题就是resize:因为hash取值后放置是从后往前(头插,逆序链表方向)的,但是在resize时会重计算hash,此时是顺序遍历方向,那么就可能出现一开始A头插在B前,rehash时B后进行rehash导致B头插在A前。这样AB的顺序resize后就不同了。这样就会使得多线程时对引用的指向调整有问题,有可能造成循环链表了。尾插法的顺序和rehash时遍历的顺序一致自然就不会有这个问题。 Collections.synchronizedMap 内部维护了一个 map 用来引用需要改造的map,通过加 mutex 排他...
Mysql InnoDB
Mysql InnoDB InnoDB In-Memory Structures1、Buffer Pool: 未落盘前数据的缓存位置 - LRU,链表 Change Buffer: 要修改数据不在内存中时对应页修改的记录位置 记录到 Change Buffer时,同时记录 redo log,然后再慢慢把数据 load 到内存,load 过来后,再把 Change Buffer 里记录的修改,应用到内存(BufferPool)中,这个动作叫做 merge;而把内存数据刷到磁盘的动作,叫 purge: change buffer 只应用于二级索引(辅助索引),因为聚簇索引是唯一的,即每...
(转) Mysql 索引
索引为什么采用 B+ tree Hash不支持范围查询 二叉树树高很高,只有B树跟B+有的一比。 B树一个节点可以存储多个元素,相对于完全平衡二叉树整体的树高降低了,磁盘IO效率提高了。 而B+树是B树的升级版,只是把非叶子节点冗余一下,这么做的好处是为了提高范围查找的效率。提高了的原因也无非是会有指针指向下一个节点的叶子节点。 explain索引命中id is null 和 id = 1 都能命中索引 (除此之外的大多都不能命中索引,比如 负向 != 比较 > < 范围 between 等) 但是 id is null or id = 1 还是触发 全表扫描(ty...
avatar
ReZero
大屁水饺的理想国.