- 博客(28)
- 收藏
- 关注
原创 java递归构造二叉树
已知二叉树的中序遍历和先序遍历构造二叉树public TreeNode buildTree(int[] preorder, int[] inorder) { if (preorder.length == 0 && inorder.length == 0) return null; TreeNode root = new TreeNode(pre...
2020-04-06 15:34:10
781
原创 翻转数组的二分查找java实现
public int BSearch(int[] arr, int x) { int l = 0; int r = arr.length - 1; int mid = 0; while (l <= r) { mid = (l + r) / 2; if (arr[mid] == x)...
2020-03-22 13:12:58
370
原创 git存储原理
一, git 中的存储分为四种对象分别是:commit对象,tag对象,tree对象,blob对象commit对象:每个执行git commit 时都会产生;tag对象:执行git tag时会产生;tree对象:执行git commit时会产生一个顶级树对象,就是对应着目录blob对象:具体存储数据的文件git仓库中会又一个隐藏文件.git使用ls -a可以查看其中有个objects文...
2019-12-30 11:26:05
727
原创 git push时缺少Change-Id报错
报错信息如下:其实这里已经给你解决办法了,按照它的提示就可以解决一,如果你是最近的一条commit没有Change-Id按照如下步骤解决1.执行gitdir=$(git rev-parse --git-dir) scp -p -P 29418 xxx@gerrit.xxx.com:hooks/commit-msg ${gitdir}/hooks/2.执行 git commit --amen...
2019-12-10 16:15:18
2435
原创 LeetCode第64题
之前面试滴滴实习的时候被问到了,以前没有好好刷LeetCode,突然今天刷题的时候看到了。public class LeetCode_64 { public int minPathSum(int[][] grid) { int res = 0; int m = grid.length; int n = grid[0].length; ...
2019-10-03 16:08:53
213
原创 快速排序的时间复杂度分析
说来惭愧,之前面试的时候一直被问到快速排序的事件复杂度,但是只是仅仅知道而已,没具体去计算过,最近一次面试又被问到这个问题了,所有前来总结一下。 一、最优情况下时间复杂度 快速排序最优的情况就是每一次取到的元素都刚好平分整个数组。 此时的时间复杂度公式则为:T[n] = 2T[n/2] + f(n);T[n/2]为平分后的子数组的时间复杂度,...
2019-09-13 20:19:46
23276
原创 java实现深度优先搜索
package com.lishilin;import com.sun.istack.internal.NotNull;import java.util.*;public class Dfs {public static class Node implements Comparable<Node> { private String name; privat...
2019-08-25 18:23:15
700
原创 java阻塞队列源码分析
源码分析ArrayBlockingQueue参数最多的构造方法public ArrayBlockingQueue(int capacity, boolean fair) { if (capacity <= 0) throw new IllegalArgumentException(); this.items = new Objec...
2019-08-09 21:44:39
338
原创 java并发编程三大组件源码分析
我相信JUC下的CountDownLatch,CyclicBarrier,Semaphore这三个组件很多人都使用过,这里就不浪费篇幅去使用了,下面来看一下他们是如何实现的。首先这里需要有准备阶段,在看源码之前你需要了解AbstractQueuedSynchronizer和Condition类,这里可以查看我之前写的一篇博客AbstractQueuedSynchronizer源码解读源码解析...
2019-08-09 18:11:27
273
原创 servlet3.0的异步调用
要理解异步首先我们要理解几个概念同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发 IO 操作并等待或者轮询的去查看 IO 操作是否就绪,而异步是指用户进程触发 IO 操作以后便开始做自己的事情,而当 IO 操作已经完成的时候会得到 IO 完成的通知。以银行取款为例:同步 : 自己亲自出马持银行卡到银行取钱(使用同步 IO 时,Java 自己处理 IO 读写);异步 : ...
2019-08-08 12:26:16
383
原创 BeanFactory和FactoryBean的区别
BeanFactory和FactoryBean都是spring的接口,BeanFactory是以Factory结尾的,很明显它是一个Bean的工厂,它是spring容器的最顶层接口。FactoryBean它是以Bean结尾的,很明显它是一个Bean。一般情况下,spring是通过反射来实例化Bean的,在默写情况下,实例化Bean的过程比较复杂,在xml文件中配置大量信息,配置方式的灵活性受限...
2019-07-29 17:39:57
178
转载 tcp握手挥手机制
https://blog.youkuaiyun.com/qq_38950316/article/details/81087809 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。  ...
2019-07-09 09:46:41
312
原创 java实现广度优先搜索
import java.util.*;//如同二叉树的层次遍历public class Bfs { public static class Node implements Comparable<Node> { private String name; private TreeSet<Node> set = new TreeS...
2019-06-30 17:25:12
1874
原创 java实现最短路径的Dijkstra算法
import java.util.*;public class Dijkstra { Set<Node> close = new HashSet<>();//存储访问过程的节点 Set<Node> open = new HashSet<>();//存储没有访问的节点 Map<String,Integer> p...
2019-06-30 17:18:03
233
原创 JDK1.8HashMap源码分析
1、首先分析put方法 public V put(K key, V value) { return putVal(hash(key), key, value, false, true);//求key的Hash值,调用putVal方法 } 2、分析具体的插入方法 final V putVal(int hash, K...
2019-06-29 19:20:26
120
原创 浅谈jvm内存溢出和死锁问题
public class User { private int id; private String name; public User() { } public User(int id, String name) { this.id = id; this.name = name; } impor...
2019-06-26 19:52:16
607
原创 java浅谈单例设计模式
一个好的单例模式主要关注的点:是否是线程安全的是否可以实现延时创建对象(在类被加载的时候就被创建了对象)是否可以通过反射后者序列化和反序列化破坏单例饿汉式public class Singleton { private Singleton(){} private static Singleton instance = new Singleton(); public sta...
2019-06-26 13:27:33
110
原创 静态内部类和非静态内部类的区别
类加载包括三个步骤:加载,连接,初始化加载:将编译出来的字节码加载到JVM的方法区,并在堆区生成一个Class对象连接包括三个步骤:①验证:验证字节码是否符合JVM的要求②准备:将类的静态成员分配内存,并赋默认值③解析:将符号引用变成直接引用初始化:给类的静态变量赋初始值静态内部类和非静态内部类的区别:(1)静态内部类和非静态内部类在外部类被加载时都不一定会被加载,只有达到各自的加...
2019-06-26 12:51:30
400
原创 实现一个简单的springMVC
完全手写springMVC实现pom文件,没有导入任何的spring相关jar <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>...
2019-06-23 19:50:03
158
原创 java实现观察者模式
javaapi中提供了两个类,可以帮助实现观察者模式Observerable为发布者,Observer为订阅者订阅者:发布者=1:1/1:n/n:mimport java.util.Observerable;import java.util.Observer;public class ObserverDemo {public static void main(String[] args...
2019-06-19 23:26:57
200
原创 java的AbstractQueuedSynchronizer实现原理
抛出问题:1、ReentrantLock是如何实现线程等待的?2、ReentrantLock是如何实现重入锁的?3、ReentrantLock是如何实现公平锁和非公平锁?J.U.C的ReentranLock底层是通过AQS同步器实现的,如图先看一下调用链这里是非公平锁的调用链ReentrantLock类有一个抽象静态内部类为Sync/** * Base of synchr...
2019-06-18 23:38:00
126
原创 java实现循环遍历二叉树
import java.util.Stack;/** * 循环遍历二叉树 * @author * */public class BinaryTree {public static class TreeNode { int val; TreeNode left; TreeNode right; public TreeNode (){} public TreeNode (...
2019-06-18 19:43:30
929
原创 java实现时间复杂度为n的排序
public class Sort {public static void sort(int[] ages){ int[] tmp = new int[100];//辅助空间,存储每个年龄的人数 for(int i=0;i<ages.length;i++){ tmp[ages[i]]++; } int index = 0; for(int i=0;i<tmp.leng...
2019-06-18 19:40:39
596
原创 springboot扩展自定义媒体类型
实体类型package com.lsl.http.restonspringwebmvc.pojo;public class Person { private int id; private String name; private String sex;@Overridepublic String toString() { return "Person{...
2019-06-17 15:47:08
2928
原创 zookeeper实现分布式锁
package com.lishilin.javaapi.distributlock;import org.apache.zookeeper.*;import java.util.List;import java.util.Random;import java.util.SortedSet;import java.util.TreeSet;import java.util.conc...
2019-06-16 18:58:26
121
原创 java实现红黑树
package com.lsl;public class RedBlackTree {//根节点private RedBlackNode root;private static final boolean RED = false;private static final boolean BLACK = true;public class RedBlackNode { pri...
2019-06-16 18:51:01
117
原创 git常用命令
1)git help # 显示command的help2)git show # 显示某次提交的内容 git show $id3)git co – # 抛弃工作区修改4)git co . # 抛弃工作区修改5)git add # 将工作文件修改提交到本地暂存区6)git add . # 将所有修改过的工作文件提交暂存区7)git rm # 从版本库中删除文件8)git rm ...
2019-06-16 18:47:17
84
原创 java实现LRU算法
package com.lsl.nginxdemo;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Map;import java.util.Set;public class LRU extends LinkedHashMap<String,String> {public L...
2019-06-16 18:33:53
144
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人