自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 这种方式实现的字典序简直不要太简单!

字典序什么是字典序?举个例子​给定一个字符串数组strs={“ba”,“b”},可以将这些字符串进行任意顺序的拼接,然而得到的所有情况中只有一种是字典序最小的字符串拼接顺序。​拿到这种题目首先想到的是可以将所有的strs按照字典序排序,然后将串起来的结果返回,但是这种方式是错误的,按照这种思路得到上述例子的结果是bba,而正确答案是bab。因此这里提供了另外一种思路。假如要比较两个字符串,可以比较将两个字符串起来之后比较其字典序,得到较小的字典序排序,将最后的结果全部串起来就是最终答案。.

2020-08-14 10:21:46 32

原创 设计一个能够获取栈中最小值的栈。

设计一个栈要求:支持 push,pop,top 操作,并能在常数时间内检索到栈中最小元素。示例public Stack<Integer> stackMin = new Stack<Integer>();stackMin.push(-3);stackMin.push(10);stackMin.push(-32);stackMin.getMin();-->返回-32stackMin.pop();stackMin.top();stackMin.getMin.

2020-08-08 09:25:54 47

原创 两句话总结8锁问题

1、被synchronized 修饰的方法,锁的对象是方法的调用者也就是实际new的对象,先调用的先执行!执行sleep()方法的线程并不会释放锁。2、只要方法被 static 修饰,锁的对象就是 Class模板对象,这个则全局唯一!...

2020-07-17 09:23:00 23

原创 轻松了解Volatile关键字

Volatile关键字Volatile是java虚拟机提供的轻量级的同步机制。1、保证可见性可见性:举个例子,有三个线程A、B、C,假设A线程想要修改主内存中的一个数据num,因为每个线程都有自己的工作内存,想要修改数据的话,需要将num获得放到自己的工作内存,然后修改完成再返回给主内存。num在修改之前等于5,A线程修改之后变为8,当B线程或C线程再去拿num数据时,获得的是8而不是5,这就是保证了可见性。总结一句话就是,某一线程修改数据后,要立马通知其他线程自己修改了!public cl.

2020-07-16 16:41:58 18

原创 HashMap系列之重要方法源码详解

** HashMap 中重要的构造方法:**1、构造一个空的 HashMap,默认初始容量(16)和默认负载因子(0.75)。public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // 将默认的加载因子0.75赋值给loadFactor,并没有创建数组}2、 构造一个具有指定的初始容量和默认负载因子(0.75)HashMap。 // 指定“容量大小”的构造函数 public HashMap(int initialCapa.

2020-07-11 16:35:16 28

原创 HashMap系列之成员变量介绍

1、初始化容量当我们根据key的hash确定其在数组的位置时,如果n为2的幂次方,可以保证数据的均匀插入,如果n不是2的幂次方,可能数组的一些位置永远不会插入数据,浪费数组的空间,加大hash冲突;一般我们可能会想通过 % 求余来确定位置,只不过性能不如 & 运算。而且当n是2的幂次方时:hash & (length - 1) == hash % length;HashMap 容量为2次幂的原因,就是为了数据的的均匀分布,减少hash冲突,毕竟hash冲突越大,代表数组中一个链的长度

2020-07-11 15:23:15 112

原创 23种设计模式之外观模式

外观模式(Facade)[fəˈsɑːd]核心思想:为子系统中的一组接口提供一个统一的界面,Facade定义它为一个高层接口,目的是更加容易的使用这些子系统。举个生活中的简单例子​ 你去超市买空调,首先导购带着你进行商品选购,选定之后你带着有销售人员开好的小票去收银台结账,然后去送货处登记住址及联系方式,好让送货人员在合适的时间去上门送货安装,经过调试正常后本次购物完成。简单分析一下这个例子。​ 首先这个例子是一个顾客,如果是多个顾客的话,每个顾客需要按照自己的需求调用超市的各种系统,就会.

2020-07-11 14:35:58 68

原创 HashMap系列之底层数据结构

HashMap系列之底层数据结构数据结构的概念​ 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。HashMap的底层数据存储过程使用代码:public class Demo01 { public static void main(String[] args) { HashMap<String, Inte

2020-07-06 16:35:36 35

原创 HashMap系列之基本概念

理论概念HashMap基于哈希丟的Map接口实现,是以key-value存锗形式存在。它是线程不安全的,key值和value值允许为null。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的,哈希冲突是由于两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同引起的,通常采用“拉链法”解决冲突。JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(或者红黑树的边界值,默认为8)并且.

2020-07-06 15:44:37 34

原创 轻松搞定荷兰国旗问题

问题描述:​ 给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。(要求额外空间复杂度O(1),时间复杂度O(N))思路:​ 准备三个指针l、r、cur,l指向数组的第一个元素之前,代表小于num的区域,r指向数组最后一个元素之后,代表大于num的区域,cur为当前元素所在位置,遍历数组与num比较,小于num放左边,等于num放中间,大于num放右边。具体流程:一开始从数组第一个元素开始遍历,cur指针.

2020-07-01 00:49:47 34

原创 归并排序

归并排序归并的意思就是说将多个有序表(两个或以上)合并成一个新的有序表。并排序的思路归并排序采用分治思想,其解决思路为:将一个长度为n的数组通过二分的方式进行划分,直到划分为长度为1的有序子表;然后两两合并,并对两个子序列进行排序;合并两个已排好序的子序列得到最终排序结果。实现原理如图所示具体代码实现public class MergeSort { public static void MergeSort(int[]arr){ if(arr.

2020-06-30 17:44:17 31

原创 左神算法之获取栈中最小值

设计一个能够获取当前栈最小值的栈问题描述​ 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作,要求pop、push、getMin 操作的时间复杂度都是 O(1)。解题思路​ 使用两个栈来实现这一功能,一个普通栈stackData,一个能获取最小值的栈stackMin。具体实现将当前数压入stackData中,设当前要压入值为newNum,直接压入stackData;将当前数压入stackMin中:判断最小栈stackMin是否有数,没有的话直接将

2020-06-30 17:37:36 59

原创 服务治理:Spring Cloud Eureka

​ Spring Cloud Eureka是Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。以下是它的核心内容:构建服务注册中心服务注册与发现Eureka 的基础架构Eureka 的服务治理机制Eureka 的配置服务治理​ 服务治理实现了各个微服务实例的自动化注册与发现。简单理解,比如说你想买衣服,你就得去商场,商场里面有很多的商店可以供你选择,然而这些商店的衣服又不是凭空来的

2020-06-30 17:05:33 55

原创 Spring Cloud简介

在学习Spring Cloud之前先思考下面两个问题?1、Spring Cloud是什么?2、怎么用Spring Cloud?接下来带着这两个问题来学习Spring Cloud。Spring Cloud是什么​ Spring Cloud是一款基于Spring Boot实现的微服务架构开发工具,不太了解微服务架构的可以参考这篇文章带你快速了解什么是微服务架构–>什么是微服务架构,它为微服务中涉及的服务治理、负载均衡、配置管理、断路器、智能路由、API网关等操作提供了一种简单的开发方式。

2020-06-30 17:02:14 23

原创 简单了解什么是微服务架构

微服务与微服务架构微服务:​ 从字面意思理解,它就是一个小的服务,是为了解决某个问题或是完成一个具体功能而落地实现的某个服务应用,可以简单理解为IDEA里面的一个Moudle。微服务架构:​ 简单来说,它就是一种架构设计风格,本质就是将一个独立的系统拆成多个小型服务,每个小型服务都存在于独立的进程中,它们有各自的数据库、业务逻辑和独立部署机制,服务之间通过HTTP的RESTful API进行通信。由于有了轻量级的通信协作基础,因此这些微服务可以用不同的语言来编写。微服务的优点能够独.

2020-06-30 16:59:24 63

原创 23种设计模式之适配器模式

适配器模式从字面意思来看就是,一种东西去适配另一种东西。通俗地讲,适配器模式就是将两个不兼容的接口放在一起工作,那么什么是不兼容?举个简单栗子,大家用的笔记本都带有适配器,它的作用就是将我们的交流电220V电压转换成电脑的工作电压,使得家用电压能够适配电脑,二者协同工作,这就是生活中的适配器模式。适配器的结构常见的适配器模式有类适配器和对象适配器两种模式,区别:类适配器采用继承的方式使用源信息(可理解为上述例子中的家用电压),对象适配器采用委托的方式使用源信息。废话不多说,直接上代码!创建.

2020-06-30 16:17:22 43

原创 二叉树序列化和反序列化

二叉树序列化和反序列化二叉树的序列化和反序列其实很简单。序列化可以暴力的理解为将一颗形象的树型结构压扁成链型结构,这个链型结构可以想象成一列火车,这列火车可以用队列表示,里面每节车厢存储了二叉树的各个节点值和辅助信息(方便反序列); 反序列就是将火车车厢里的东西倒出来,根据其进入车厢的顺序,将节点值和辅助信息有序的排列起来,还原成原来的二叉树。eg:该二叉树序列化可表示为:具体代码实现public class Codec { // Encodes a tree to a sin.

2020-06-30 16:10:40 29

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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