自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 740

原创 翻转数组的二分查找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 347

原创 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 680

原创 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 2286

原创 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 188

原创 快速排序的时间复杂度分析

说来惭愧,之前面试的时候一直被问到快速排序的事件复杂度,但是只是仅仅知道而已,没具体去计算过,最近一次面试又被问到这个问题了,所有前来总结一下。 一、最优情况下时间复杂度 快速排序最优的情况就是每一次取到的元素都刚好平分整个数组。 此时的时间复杂度公式则为:T[n] = 2T[n/2] + f(n);T[n/2]为平分后的子数组的时间复杂度,...

2019-09-13 20:19:46 22378

原创 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 665

原创 java阻塞队列源码分析

源码分析ArrayBlockingQueue参数最多的构造方法public ArrayBlockingQueue(int capacity, boolean fair) { if (capacity <= 0) throw new IllegalArgumentException(); this.items = new Objec...

2019-08-09 21:44:39 304

原创 java并发编程三大组件源码分析

我相信JUC下的CountDownLatch,CyclicBarrier,Semaphore这三个组件很多人都使用过,这里就不浪费篇幅去使用了,下面来看一下他们是如何实现的。首先这里需要有准备阶段,在看源码之前你需要了解AbstractQueuedSynchronizer和Condition类,这里可以查看我之前写的一篇博客AbstractQueuedSynchronizer源码解读源码解析...

2019-08-09 18:11:27 250

原创 servlet3.0的异步调用

要理解异步首先我们要理解几个概念同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发 IO 操作并等待或者轮询的去查看 IO 操作是否就绪,而异步是指用户进程触发 IO 操作以后便开始做自己的事情,而当 IO 操作已经完成的时候会得到 IO 完成的通知。以银行取款为例:同步 : 自己亲自出马持银行卡到银行取钱(使用同步 IO 时,Java 自己处理 IO 读写);异步 : ...

2019-08-08 12:26:16 358

原创 BeanFactory和FactoryBean的区别

BeanFactory和FactoryBean都是spring的接口,BeanFactory是以Factory结尾的,很明显它是一个Bean的工厂,它是spring容器的最顶层接口。FactoryBean它是以Bean结尾的,很明显它是一个Bean。一般情况下,spring是通过反射来实例化Bean的,在默写情况下,实例化Bean的过程比较复杂,在xml文件中配置大量信息,配置方式的灵活性受限...

2019-07-29 17:39:57 158

转载 tcp握手挥手机制

https://blog.csdn.net/qq_38950316/article/details/81087809    序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 &nbsp...

2019-07-09 09:46:41 296

原创 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 1826

原创 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 211

原创 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 108

原创 浅谈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 585

原创 java浅谈单例设计模式

一个好的单例模式主要关注的点:是否是线程安全的是否可以实现延时创建对象(在类被加载的时候就被创建了对象)是否可以通过反射后者序列化和反序列化破坏单例饿汉式public class Singleton { private Singleton(){} private static Singleton instance = new Singleton(); public sta...

2019-06-26 13:27:33 100

原创 静态内部类和非静态内部类的区别

类加载包括三个步骤:加载,连接,初始化加载:将编译出来的字节码加载到JVM的方法区,并在堆区生成一个Class对象连接包括三个步骤:①验证:验证字节码是否符合JVM的要求②准备:将类的静态成员分配内存,并赋默认值③解析:将符号引用变成直接引用初始化:给类的静态变量赋初始值静态内部类和非静态内部类的区别:(1)静态内部类和非静态内部类在外部类被加载时都不一定会被加载,只有达到各自的加...

2019-06-26 12:51:30 373

原创 实现一个简单的springMVC

完全手写springMVC实现pom文件,没有导入任何的spring相关jar <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version&gt...

2019-06-23 19:50:03 141

原创 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 183

原创 java的AbstractQueuedSynchronizer实现原理

抛出问题:1、ReentrantLock是如何实现线程等待的?2、ReentrantLock是如何实现重入锁的?3、ReentrantLock是如何实现公平锁和非公平锁?J.U.C的ReentranLock底层是通过AQS同步器实现的,如图先看一下调用链这里是非公平锁的调用链ReentrantLock类有一个抽象静态内部类为Sync/** * Base of synchr...

2019-06-18 23:38:00 113

原创 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 894

原创 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 577

原创 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 2800

原创 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 110

原创 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 107

原创 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 73

原创 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 131

空空如也

空空如也

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

TA关注的人

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