自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(156)
  • 资源 (1)
  • 收藏
  • 关注

原创 Python 之关键字

Python 之关键字以下标识符被作为语言的保留字或称关键字,不可被用作普通标识符。关键字的拼写必须与这里列出的完全一致。Python3False await else import passNone break except in raiseTrue class finally ...

2020-03-27 13:47:10 254

原创 Python 的三种拷贝方式

Python 中的三种拷贝方式赋值拷贝深拷贝浅拷贝赋值拷贝one = [1, 2, 3]two = oneprint(one, two)two[0] = 0print(one, two)one = [[1], [2], [3]]two = oneprint(one, two)two[0] = [0]print(one, two)one = [[1], [2],...

2020-03-11 11:19:01 451

转载 CSDN-markdown编辑器

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2020-03-11 11:11:52 309

翻译 __Python 之禅__

Python 之禅>>> import thisThe Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated...

2020-01-13 13:01:51 178

原创 Java 中的阻塞队列

Java 中的阻塞队列ArrayBlockingQueue:由数组结构组成的有界阻塞队列LinkedBlockingQueue:由链表结构组成的有界阻塞队列PriorityBlockingQueue:支持优先级排序的无界阻塞队列DelayQueue:使用优先级队列实现的无界阻塞队列SynchronousQueue:不存储元素的阻塞队列LinkedTransferQueue:由链表结构...

2019-09-30 21:11:07 164

原创 Java 线程池

Java 线程池线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务。如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。线程池的主要特点为:线程复用控制最大并发数管理线程线程复用每一个 Thread 的类都有一个 start 方法。 当调用 start 启动线程时 Java 虚拟机会调用该类...

2019-09-30 20:54:38 186

原创 线程基本方法

线程基本方法线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等。线程等待 wait调用该方法的线程进入 WAITING 状态,只有等待另外线程的通知或被中断才会返回,需要注意的是调用 wait 方法后,会释放对象的锁。因此,wait 方法一般用在同步方法或同步代码块中。线程睡眠 sleepsleep 导致当前线程休眠,与 wait 方法...

2019-09-30 20:36:21 160

原创 终止线程的 4 种方式

终止线程的 4 种方式正常运行结束程序运行结束,线程自动结束。使用退出标志退出线程一般 run 方法执行完,线程就会正常结束。然而,常常有些线程是服务线程。它们需要长时间的运行,只有在外部某些条件满足的情况下,才能关闭这些线程。可以使用一个变量来控制循环,最直接的方法就是设一个 boolean 类型的标志,并通过设置这个标志为 true或 false 来控制 while 循环是否退出。...

2019-09-30 20:16:46 360

原创 Java 线程生命周期

Java 线程生命周期当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建 (New)、就绪 (Runnable)、运行 (Running)、阻塞 (Blocked) 和死亡 (Dead) 5 种状态。当线程启动以后,它不可能一直占用 CPU 独自运行,所以 CPU 需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换...

2019-09-30 20:00:37 191

原创 Java 中的 jar 包和 war 包

Java 中的 jar 包和 war 包jar 包简单地说,JAR(Java Archive)是一种包文件格式。JAR 文件具有 .jar 扩展名,可以包含库、资源和元数据文件。本质上,它是一个压缩文件,包含压缩版本的.class文件和编译后的Java库和应用程序的资源。例如,下面是一个简单的 JAR 文件结构:META-INF/MANIFEST.MFcom/baeldung...

2019-09-30 18:50:42 156

原创 Java 中的四大内部类

Java 中的四大内部类内部类简单说就是定义在另一个类中的类,内部类具有一下特点:内部类方法可以访问该类定义所在作用域中的数据,包括私有数据。内部类可以对同一包下的其它类隐藏定义回调函数而又不想编写太多代码时使用匿名内部类比较便捷Java 内部类可以分为四种:普通内部类局部内部类匿名内部类静态内部类普通内部类普通类相比内部类具有访问拥有特权,它可以访问外围类私有成员,...

2019-09-30 18:36:02 194

原创 Java 泛型中的通配符

Java 泛型中的通配符 T、E、K、V、?Java 泛型(generics)是 JDK 5 中引入的一个新特性。泛型提供了编译时类型安全检测机制,允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型可以用在类,方法,接口上。泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的 “任意化”。“任意化” 带来...

2019-09-30 18:21:06 203

原创 Java 中的各种锁

Java 中的各种锁Java 中设计了很多种锁,大致如下:公平锁 / 非公平锁可重入锁 / 不可重入锁独享锁 / 共享锁互斥锁 / 读写锁乐观锁 / 悲观锁分段锁偏向锁 / 轻量级锁 / 重量级锁自旋锁注意: 这些分类有的指锁的状态,有的指锁的特性,有的指锁的设计…下面对每个锁的名词进行相应的解释:公平锁 / 非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公...

2019-09-30 17:10:17 159

原创 Java 类的加载方式

类的加载方式类的加载方式隐式加载显式加载隐式加载有几种情况:首次通过 new 创建一个类的实例首次调用类的静态成员首次加载一个类,会先加载它的父类JVM 启动时,会自动加载定义了 main 方法的类显式加载有两种方式:通过 ClassLoader.loadClass通过 Class.forName区别隐式加载是在首次使用时才加载类,显式加载是先提前加载类再使用...

2019-09-30 09:25:30 207

原创 Java 中类加载的时机

Java 中类加载的时机类加载过程分为加载、链接、初始化三个阶段,从而实现对某个类进行初始化。在加载阶段,Java 虚拟机通过查找字节流(*.class 文件),并且根据字节流创建 java.lang.Class 对象。在这个过程中,JVM 将类的字节码文件中的二进制数据读入内存,存放在方法区内。然后在堆中创建 java.lang.Class 对象,用来封装类在方法区的数据结构。类加载阶段...

2019-09-29 20:48:45 180

原创 【刷题 issue16】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第二章 链表问题2.6 环形单链表的约瑟夫环问题【题目】请用单向循环链表描述约瑟夫问题。输入:一个环形单向链表的头节点 head 和报数的值 m。输出:最后生存下来的节点,且这个节点自己组成环形单向链表,其它节点都删掉。进阶: 如果链表节点数为 N,在时间复杂度为 O(N) 内完成原问题要求。【难度】原问题:士 ★☆☆☆进阶:校 ★★★☆【题解】普通的解法描述如下:...

2019-08-31 12:47:28 183

原创 【刷题 issue15】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第二章 链表问题2.5 反转部分单向链表【题目】给定一个单向链表的头节点 head,以及两个整数 from 和 to,在单向链表上吧第 from 个节点到底 to 个节点这一部分进行反转。【要求】如果链表长度为 N,时间复杂度要求为 O(N),额外空间复杂度要求为 O(1)。如果不满足 1≤from≤to≤N,则不需要调整。【难度】士 ★☆☆☆【题解】本题可能出现更换头节点...

2019-08-31 12:46:14 162

原创 【刷题 issue14】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第二章 链表问题2.4 反转单向和双向链表【题目】分别实现反转单向链表和反转双向填表的函数。【要求】如果链表长度为 N,时间复杂度要求为 O(N),额外空间复杂度要求为 O(1)。【难度】士 ★☆☆☆【题解】本题比较简单,注意在反转链表之后更新链表新的头节点。【实现】ReverseSingleLinkedList.javapublic class Revers...

2019-08-31 12:45:34 142

原创 【刷题 issue13】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第二章 链表问题2.3 删除链表的中间节点和 a/b 处的节点【题目】给定链表的头节点 head,实现删除链表的中间节点的函数。**进阶:**给定链表的头节点 head,整数 a 和 b没实现删除位于 a/b 出节点的函数。【难度】士 ★☆☆☆【题解】如果要删除一个节点,则需要找到待删除节点的前一个节点。对于原问题,如果链表为空或者长度为 1,不需要调整。如果链表的长度大于 1,...

2019-08-31 12:44:51 176

原创 【刷题 issue12】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第二章 链表问题2.2 在单链表和双链表中删除倒数第 K 个节点【题目】分别实现两个函数,一个可以删除单链表中倒数第 K 个节点,另一个可以删除双链表中倒数第 K 个节点。【要求】如果链表长度为 N,时间复杂度达到 O(N),额外空间复杂度达到 O(1)。【难度】士 ★☆☆☆【题解】对于单链表,如果链表为空或者 K<1,则参数是无效的,直接返回即可。否则让链表从头...

2019-08-31 12:43:57 168

原创 【刷题 issue11】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第二章 链表问题2.1 打印两个有序链表的公共部分【题目】给定两个有序链表的头指针 head1 和 head2,打印两个链表的公共部分。【难度】士 ★☆☆☆【题解】给定两个链表士有序链表,可以从两个链表的头开始进行如下判断:如果 head1 的值小于 head2 的值,则 head1 往下移动;如果 head2 的值小于 head1 的值,则 head2 往下移动;如果 he...

2019-08-31 12:43:01 154

原创 【刷题 issue10】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.10 最大值减去最小值小于或等于 num 的子数组数量【题目】给定数组 arr 和整数 num,共返回右多少个子数组满足如下情况:max(arr[i…j)-min(arr[i…j) ≤ nummax(arr[i…j) 表示子数组 arr[i…j] 中的最大值,min(arr[i…j) 表示子数组 arr[i…j] 中的最小值。【要求】如果数组长度为 ...

2019-08-30 22:58:28 268

原创 【刷题 issue9】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.9 求最大子矩阵的大小【题目】给定一个整形矩阵 matrix,其中的值只有 0 和 1 两种,求其中全是 1 的矩形区域中,最大的矩形区域内 1 的数量。【难度】校 ★★★☆【题解】如果矩阵的大小为 O(N×M),本题可以做到时间复杂度为 O(N×M)。解法的具体过程如下;矩阵的行数为 N,以每一行做切割,统计以当前行作为底,每个位置往上的 1 的数...

2019-08-30 22:56:19 173

原创 【刷题 issue8】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.8 构造数组的 MaxTree【题目】定义二叉树节点如下:public class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; }}一个数...

2019-08-30 22:54:34 178

原创 【刷题 issue7】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.7 生成窗口最大值数组【题目】一个整形数组 arr 和 一个大小为 w 的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。如果数组长度为 n,窗口大小为 w,则一共产生 n-w+1 个窗口的最大值。请实现一个函数:输入:整形数组 arr,窗口大小为 w。输出:一个长度为 n-w+1 的数组 res,res[i] 表示每一个窗口状态下的最大值。【难度】...

2019-08-30 22:50:03 204

原创 【刷题 issue6】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.6 用栈来求解汉诺塔问题【题目】汉诺塔问题比较经典,这里修改一下游戏规则:限制不能从最左侧的塔直接移动到最右侧,也不从最右侧直接移动到最左侧,必须经过中间。求当塔有 N 层的时候,打印最优移动过程和最优移动总步数。【要求】使用一下两种方法解决:方法一:递归的方法;方法二:非递归的方法,用栈模拟整个过程。【难度】校 ★★★☆【题解】方法一:【递...

2019-08-30 17:13:13 224

原创 【刷题 issue5】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.5 用一个栈实现另一个栈的排序【题目】在一个栈中的元素的类型为整形,现在将该栈从顶到底按从大到小的顺序排序,只能申请一个栈。除此之外,可以使用新的变量,但不能使用额外的数据结构。【难度】士 ★☆☆☆【题解】将要排序的栈记为 stack,申请的辅助栈记为 another。在 stack 上执行 pop 操作,弹出的元素记为 temp:如果 temp&n...

2019-08-30 17:12:17 209

原创 【刷题 issue4】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.4 猫狗队列【题目】宠物、猫和狗的类定义如下:public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.t...

2019-08-30 17:11:02 226

原创 【刷题 issue3】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.3 如何仅用递归函数和栈操作逆序一个栈【题目】实现栈中元素的逆序,要求只能采用递归函数实现,不能用其它数据结构。【难度】尉 ★★☆☆【题解】本题考查栈的操作和递归函数的设计,为此需要设计两个递归函数。递归函数一:将栈 stack 的栈底元素返回并移除;递归函数二:逆序一个栈,即题目要求实现的方法。【实现】ReverseAStack.java...

2019-08-30 17:09:33 150

原创 【刷题 issue2】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.2 由两个栈组成的队列【题目】编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)【难度】尉 ★★☆☆【题解】队列的特点是先进先出,而栈的特点是先进后出。借助两个栈把顺序颠倒过来即可实现队列的操作。其中一个栈作为压入栈,在压入数据时只往这个栈中压入,记为 stackPush;另一个栈只作为弹出栈,在弹出数据时只从这个栈弹出,记为stack...

2019-08-30 11:46:04 157

原创 【刷题 issue1】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解

第一章 栈和队列1.1 设计一个有 getMin 功能的栈【题目】实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。【要求】pop、push、getMin 操作的时间复杂度都是 O(1)。设计的栈类型可以使用现成的栈结构。【难度】士 ★☆☆☆【题解】数据结构采用两个栈:一个用来保存当前栈中的元素,记为 stackData;另一个栈用于保存每一步操作...

2019-08-28 21:12:14 350

原创 Java 虚拟机 垃圾收集

文章目录2. 垃圾收集2.1 判断一个对象是否可被回收引用计数算法可达性分析算法方法区的回收finalize()2.2 引用类型强引用软引用弱引用虚引用2.3 垃圾收集算法标记 - 清除标记 - 整理复制分代收集Java 虚拟机2. 垃圾收集垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对...

2019-07-31 21:46:52 116

原创 Java 虚拟机 运行时数据区域

文章目录1. 运行时数据区域1.1 程序计数器1.2 Java 虚拟机栈1.3 本地方法栈1.4 堆1.5 方法区1.6 运行时常量池1.7 直接内存Java 虚拟机1. 运行时数据区域1.1 程序计数器记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。1.2 Java 虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用...

2019-07-31 21:05:03 114

原创 Java 容器 LinkedList

文章目录5. LinkedList5.1 概览5.2 与 ArrayList 的比较Java 容器5. LinkedList5.1 概览基于双向链表实现,使用 Node 存储链表节点信息。private static class Node<E> { E item; Node<E> next; Node<E> prev; ...

2019-07-31 19:52:49 102

原创 Java 容器 CopyOnWriteArrayList

文章目录4. CopyOnWriteArrayList4.1 读写分离4.2 适用场景Java 容器4. CopyOnWriteArrayList4.1 读写分离写操作在一个复制的数组上进行,读操作还是在原始数组中进行,读写分离,互不影响。写操作需要加锁,防止并发写入时导致写入数据丢失。写操作结束之后需要把原始数组指向新的复制数组。4.2 适用场景CopyOnWriteArrayL...

2019-07-30 21:47:36 123

原创 Java 容器 Vector

文章目录3. Vector3.1 同步3.2 与 ArrayList 的比较3.3 替代方案Java 容器3. Vector3.1 同步它的实现与 ArrayList 类似,但是使用了 synchronized 进行同步。public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elem...

2019-07-30 21:22:13 156

原创 Java 容器 ArrayList

文章目录2. ArrayList2.1 概览2.2 扩容2.3 删除元素2.4 Fail-Fast2.5 序列化Java 容器2. ArrayList2.1 概览因为 ArrayList 是基于数组实现的,所以支持快速随机访问。RandomAccess 接口标识着该类支持快速随机访问。public class ArrayList<E> extends AbstractList...

2019-07-30 21:10:42 105

原创 Java 容器概览

文章目录1. 概览1.1 CollectionSetListQueue1.2 MapJava 容器1. 概览容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。1.1 CollectionSetTreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如Hash...

2019-07-30 20:43:46 156

原创 Servlet response 用法

文章目录Servlet response 用法设置响应内容设置响应格式设置响应编码301 或者 302 客户端跳转设置不使用缓存Servlet response 用法response 是类 HttpServletResponse 的实例,用于提供给浏览器的响应信息。设置响应内容通过 response 设置响应,比如 PrintWriter pw= response.getWriter() ...

2019-07-30 20:07:28 249

原创 Servlet request 用法

文章目录Servlet request 常见方法request 的常见方法获取参数获取头信息服务端传参Servlet request 常见方法request 对象的类是 HttpServletRequest,提供了很多有实用价值的方法。request 的常见方法request.getRequestURL(): 浏览器发出请求时的完整URL,包括协议 主机名 端口(如果有)"reques...

2019-07-30 19:51:07 200

空空如也

空空如也

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

TA关注的人

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