单调有序数组被循环右移k位后

题目描述:
单调有序数组被循环右移k 位后找最小值时间复杂度的要求log N

一个有序数组循环右移n位,找到右移后该数组的最小值,数组中可能包含重复元素。

以最小值的位置分类,可以分成[……]

继续阅读

代码设计原则

概述

  1. 单一职责原则(SRP):一个类应该仅有一个引起他变化的原因。
  2. 开闭原则(OCP):对扩展是开放的,但是对修改是关闭的。
  3. 里式替换原则(LSP):子类可以去扩展父类的功能,[……]

    继续阅读

Java模板方法设计模式及应用场景

概述

模板方法模式是类的行为模式。

准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从[……]

继续阅读

volatile关键字

volatile关键字

Java关键字volatile用于将一个Java变量标记为在主内存中存储 ,更准确的解释为:每次读取一个volatile变量时将从电脑的主内存中读取而不是从CPU缓存中读取[……]

继续阅读

css选择器

常用选择器

类型选择器

类型选择器也称为元素选择器,用来寻找特定类型的元素

img{
    max-width: 100%;
    max-height: 100%;
}
p {[......]

继续阅读

冒泡排序各种实现

冒泡排序是最简单的排序算法,其时间复杂度O(n2),但是在数据量不是很大的情况,经优化过的冒泡乃是一种高效的算法。

简单粗暴的思路:

  1. 前面元素依次和后面元素进行比较
  2. 如果前面元素[……]

    继续阅读

ReentrantLock工作原理及源码分析

使用 synchronized 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。

而 ReentrantLock 就是一个普通的类,它是基于 AQS(Ab[……]

继续阅读

Java中的ThreadLocal和InheritableThreadLocal

Threadlocal是什么

java中处理多线程资源共享主要有两种方法,一种是同步,另一种就是使用threadlocal,锁机制采用了“以时间换空间”的方式,仅提供一份变量,让不同的线程排队访问[……]

继续阅读