自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数组中未出现的最小正整数

题目:给定一个无序整型数组,找到数组中未出现的最小正整数。例:arr=[-1,2,3,4] 返回1。 arr=[1,2,3,4] 返回5。answer1:排序,找到第一个arr[i]!=i+1的数,未出现的最小正整数就是i+1. 如果数组遍历完,还是没有出现arr[i]!=i+1的数,未出现的最小正整数是i+1(此时是第二个例子) ,但是,这不是最优解,因为排序...

2019-04-04 11:03:13 7529 1

原创 redis设计与实现——2

1.数据库 1.Redisserver{ Redisdb db;这是一个集合, Int dbnum;这是数据库的数量,一共有16个 } Redis可以通过select n切换数据库, 在服务器内部,客户端状态redisClient结构的db属性记录了客户端当前的目标数据库 redisClient{ Redi...

2019-03-04 16:55:20 285

原创 redis设计与实现——1

Redis的底层结构:String,list,set,hash,sortedset。这五种仅仅是redis的对象类型,redis是一个对象系统,并没有直接使用底层的数据结构,而是以对象的形式来存储的。Redis的底层数据结构,一共有7种,String: redis是c编写的,c中的字符串是以空格结尾的,redis并没有使用c中的字符串,而是自己实现了一种字符串sds...

2019-03-04 15:02:03 350

转载 从2-3树理解红黑树

转载自https://www.cnblogs.com/zhenbianshu/p/8185345.html?utm_source=debugrun&utm_medium=referral前言红黑树是数据结构中比较复杂的一种,最近与它交集颇多,于是花了一周的空闲时间跟它死磕,终于弄明白并实现了红黑树。写文总结一下,希望能给试图理解红黑树的同学一些灵感,也让我能记得更深刻。在研究红...

2019-02-25 10:33:41 198

转载 数据结构中的树

文章转载自:https://www.cnblogs.com/maybe2030/p/4732377.html作者:Poll的笔记1. 二叉树  二叉树是数据结构中一种重要的数据结构,也是树表家族最为基础的结构。  二叉树的定义:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2...

2019-02-25 09:50:19 114

原创 红黑树

红黑树必须符合以下特性:所有节点都是红色或者是黑色 根节点总是黑色,root节点是黑色 如果节点是红色,子节点必须是黑色(不能出现两个连续的红色节点) 从根节点到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点(即相同的黑色高度,高度只差不超过4,一条路径全黑,一条路径一半黑一半红)5.新插入的节点都是红色的 数据调整:1.变色  2.左旋  3.右旋 插入调整-...

2019-02-19 15:10:40 391

原创 java8——lambda

lambda1.lambda就是一个语法糖,额,语法糖2.语法较为简单, 基本语法:(parameters) -> expression 或 (parameters) ->{ statements; }  简单例子:    // 1. 不需要参数,返回值为 5      () -> 5            // 2. 接收一个参数(数字类型),返回其2倍的值  ...

2018-10-22 08:43:20 97

原创 shell调用存储过程

最近在有个需求  就是定时查询数据库,有三个方案,   1.java定时任务   2.数据库定时器,定时执行存储过程   3.shell脚本调用存储过程,crontab定时执行shell脚本   我使用的是第三种方法,这一篇主要数一下我踩过的坑!!!   shell脚本,调用存储过程:   mysql -h *** -u *** -D *** -p*** -e ***   -h...

2018-10-19 15:52:31 6132

转载 jvm——内存结构

原文章传送门------》Dear_mango的博客JVM五大区 一、程序计数器程序计数器( Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。字节码解释器工作时就是通过改...

2018-06-29 20:50:33 108

原创 jdk源码——Enum

      这一篇主要介绍一下枚举类的源码,我们应该都是用过枚举类型吧,用法我就不再多说了,如果没有用过,可以在网上搜索一下,用法也是比较简单的。     一,先看一下Enum类的定义吧。public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializ...

2018-06-29 15:53:08 459

转载 jdk源码——Long

还文章是转载,文章作者:汪洋之舟---seaboatJava的Long类主要的作用就是对基本类型long进行封装,提供了一些处理long类型的方法,比如long到String类型的转换方法或String类型到long类型的转换方法,当然也包含与其他类型之间的转换方法。除此之外还有一些位相关的操作。Java long数据类型long数据类型是64位有符号的Java原始数据类型。当对整数的计算结果可能...

2018-06-28 20:22:46 206

转载 jdk源码——Integer

该文章是转载的,原文章传送门这篇文章是很详细的,我是无法写出这么详细的文章的。Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。类定义public final class Integer exte...

2018-06-27 15:45:41 141

原创 jdk源码——String

   这一篇文章是对String类源码的介绍,String类很重要,他不是基本类型,所以大家要清楚,但是他的使用频率和基本数据类型一样。  我们看一下String类的定义//String是final类型的,属于不可覆盖类型public final class String implements java.io.Serializable, Comparable<String&...

2018-06-26 16:17:58 633

原创 jdk源码——Object

    Objetc这个类,我感觉有必要看一下,这个类是所以类的父类(超类),重要性不言而喻。    当我们看到这个类是,第一反应,代码了好少,去掉注释的话,也就三十四行代码量,第二,这个类中的好多方法都是被native修饰的,也是就是本地方法,第三,就是这个类中有多个方法是被final修饰的,接下来,看一下object类的源代码吧!    首先提一下,native修饰的作用,被native修饰的...

2018-06-25 22:56:13 129

原创 java——线程(三)

       这一篇是线程的中级篇吧,还没有涉及到高级篇,高级篇,涉及到的原理比较多,终极篇,还是仅仅停留在多线程的使用上,只不过,使用的层次提高了很多。      中级使用1.(将两种线程创建的方式合二为一) new Thread(new Runnable() { @Override public void run() { ...

2018-05-22 22:42:24 110

原创 java——线程(二)

上一篇线程主要是线程的基本使用方法,这一篇文章讲解线程之间的同步和通信。线程的同步和通信是一个重点。很多书上讲解线程之间的同步时,都使用了一个售票系统。 首先我们用上一篇写知识点,模拟一个售票系统。public class ThreadDemo2 implements Runnable{ private int i=100; @Override public void run() {...

2018-05-21 10:12:20 107

原创 java——线程(一)

      说实话,从大一开始学习java之后,到现在大三即将面试进行实习,这期间,我还真没有怎样使用过线程技术,即使做项目的时候,我也接触到线程的机会也是极其少的,我将原因归结于,水平太低,还没有达到高层次的开发,毕竟没有做过正规项目的开发。这一部分知识,早就忘得一干二净了,仅仅知道线程的创建方式有三种,等基本的用法,让我将线程用于开发中,我怕挨揍........        那个,这里提一句...

2018-05-20 23:24:35 102

原创 jdk源码——集合(ConcurrentHashMap)

     看这个集合的源码时,内心是拒绝的,六千多行的代码量,够我们看一段时间的。ConcurrentHashMap使线程安全的,底层是散列表+红黑树,线程安全不是在方法上使用synchronize关键字,使用了两种方式,第一是锁分段,第二是一个CAS算法。    jdk1.8之前使用的是锁分段机制,jdk1.8之后,变为CAS算法。   简单说一下,锁分段机制,嗯,意思就是这么个意思。每个段中都...

2018-05-19 23:41:14 146

原创 jdk源码——集合(Hashtable)

      基本的容器类,我们已经分析完了,虽然感觉自己的分析一般,但是,还是有些收获的。      这一篇,分析一个线程安全的容器,Hashtable,大家都知道,使线程安全的方法就那几种,而Hashtable就是用了线程安全的最简单的方法(一个关键字),synchronize关键字。将方法锁住,其他任何线程都无法进入。其实这种做法的效率及其地下,也逐渐被替代了。到现在,HashTable已经过...

2018-05-19 16:03:25 109

原创 jdk源码——集合(TreeSet)

TreeSet集合,也没啥分析的,底层是一个TreeMap集合,TreeSet的方法,也都是调用TreeMap的方法。——TreeSet集合的成员变量 private transient NavigableMap<E,Object> m;//底层是一个Map,TreeMap就是NavigableMap的一个实现类, // Dummy value to associate ...

2018-05-19 15:30:03 188

原创 jdk源码——集合(TreeMap)

      集合中真正的重头戏,TreeMap集合,TreeMap集合的底层是红黑树结构,前面我们简单的介绍了一下红黑树结构,仅仅是简单的介绍,就是添加一个节点时,红黑树的结构维护。其实,红黑树的删除,也是一个不小的工程。红黑树的删除,我就不单独介绍了,就根据TreeMap集合的删除源码介绍了。      容器篇也快介绍完了,介绍完了TreeMap集合后,还有一个TreeSet集合,其实大家都知道...

2018-05-18 23:41:42 176

原创 jdk源码——集合(LinkedHashSet)

         这一篇分析的是LinkedHashSet的源码,根据HashSet的底层是一个HashMap集合,类比可知,LinkedHashSet的底层是一个LinkedHashMap集合,这只是我们的猜测,所以我们从网上搜一下,LinkedHashSet的底层果然就是LinkedHashMap集合。         然后,我们看一下LinkedHashSet的源代码,第一感觉,好少,有点不...

2018-05-18 21:36:33 131

原创 jdk源码——集合(LinkedHashMap)

     这一篇分析的是 LinkedHashMap的源码,可能有些同学会有些疑惑,HashMap和LinkedHashMap有什么区别呢?     HashMap的集合的底层是一个散列表(数组+链表)+红黑树    LinkedHashMap集合的底层其实也是一个散列表(数组+链表)+红黑树,只不过是链表是双向链表,HashMap的链表时单向链表结构。因为结构的差异,所以,操作会有些不同。   ...

2018-05-18 10:49:54 120

原创 jdk源码——集合(HashSet)

       看过HashMap的源码之后,在看HashSet集合简直是so Easy,仅仅从代码的数量上就可以看出来了。       这一篇的分析顺序是Set,AbstractSet,HashSet。       Set感觉没有什么可分析的。public interface Set<E> extends Collection<E> {//Set接口继承了Collectio...

2018-05-17 23:29:56 107

原创 jdk源码——集合(HashMap)

      上一篇,做了一下准备工作,分析了一下Map接口和AbstractMap类的源码,现在正式开始分析HashMap的源码。     HashMap底层是一个散列表+红黑树结构,所谓散列表结构,就是(数组+链表),为什么会有红黑树结构呢?jdk1.8之后,HashMap的磁层添加了红黑树结构,在一个条件下,可以将散列表转化为红黑树结构。           先看一下HashMap类的定义,p...

2018-05-16 23:12:51 392

原创 jdk源码——集合(二)

      上一篇文章分析了红黑树(主要是红黑树的添加操作,来维护红黑树的结构),jdk源码——集合(红黑树),这一文章,来分析HashMap的源码,所以这篇文章的顺序是Map,AbstractMap,HashMap。这篇文章应该是为分析HashMap源码的准备篇吧。     public interface Map<K,V> { /* 接口中的方法或者成员变量,都被p...

2018-05-16 20:07:02 141

原创 jdk源码——集合(LinkedList)

上一篇分析了ArrayList的源码jdk源码——集合(ArrayList),这一次分析LinkedList的源码。先看一下LinkedList的类定义:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, ...

2018-05-15 15:16:38 169

原创 jdk源码——集合(ArrayList)

写了一篇文章,jdk源码——集合(一)

2018-05-13 21:20:20 196 2

原创 jdk源码——集合(一)

上一篇文章,主要大致了解了了一下容器的类库,好了,废话不都说。顺便提一句,我的jdk是-1.8版本的,查看源码的时候,最好依照java api。了解List,Set集合,首先需要看一下Collection。不多讲。/*Collection接口继承了Iterable,Iterable是一个迭代器,有三个方法, iterator(),forEach(Consumer<? super...

2018-05-13 09:08:59 700 1

原创 jdk源码——集合

jdk源码——集合 第一次在csdn上写文章,内心毫无波澜,甚至还有点想 看容器代码,首先要对容器类有一个大致的了解。 下图是《java 编程思想》中容器类库的简化图 其中,黑色粗线框表示常用类, 点线框表示接口, 带有空心箭头的电线表示一个...

2018-05-12 21:23:06 352 1

空空如也

空空如也

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

TA关注的人

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