自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java多线程编程实战指南(核心篇)这段代码有问题吧?

最近在看线程中断的知识。不知道是不是我理解有问题还是代码有点问题。求大佬看看第五章 5-18 通用的代码优雅停止办法的实例public class TerminatableTaskRunner implements TaskRunnerSpec { protected final BlockingQueue<Runnable> channel; // 线程停止标记 protected volatile boolean inUse = true; // 待处理任务计数器 p

2020-11-07 21:17:18 132

原创 leetcode:944. 删列造序

给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等。你需要选出一组要删掉的列 D,对 A 执行删除操作,使 A 中剩余的每一列都是 非降序 排列的,然后请你返回 D.length 的最小可能值。删除 操作的定义是:选出一组要删掉的列,删去 A 中对应列中的所有字符,形式上,第 n 列为 [A[0][n], A[1][n], …, A[A.length-1][n]])。比如,有...

2020-04-26 15:55:32 125

原创 leetcode:1403. 非递增顺序的最小子序列

给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。如果存在多个解决方案,只需返回 长度最小 的子序列。如果仍然有多个解决方案,则返回 元素之和最大 的子序列。与子数组不同的地方在于,「数组的子序列」不强调元素在原数组中的连续性,也就是说,它可以通过从数组中分离一些(也可能不分离)元素得到。注意,题目数据保证满足所有约束条件的解决...

2020-04-26 14:57:06 157

原创 leetcode:1221. 分割平衡字符串

在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。返回可以通过分割得到的平衡字符串的最大数量。示例 1:输入:s = “RLRRLLRLRL”输出:4解释:s 可以分割为 “RL”, “RRLL”, “RL”, “RL”, 每个子字符串中都包含相同数量的 ‘L’ 和 ‘R’。示例 2:输入:s = “RLLL...

2020-04-26 14:35:45 137

原创 算法:扑克牌1~9排列问题

扑克牌1~9只能用一次,输出所有符合xxx + xxx = xxx的组合。例如124 + 659 = 783;package com.leetcode;/** * @author VinceLin * 2020/4/13 4:46 下午 */public class Main { /** * 数字最小值 **/ private static fi...

2020-04-16 15:17:13 699

原创 leetcode:面试题 08.01. 三步问题

三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1:输入:n = 3输出:4说明: 有四种走法示例2:输入:n = 5输出:13提示:n范围在[1, 1000000]之间class Solution { public int waysToSte...

2020-04-15 15:39:03 170

原创 leetcode:746. 使用最小花费爬楼梯

数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即...

2020-04-15 15:21:28 144

原创 leetcode:面试题 17.16. 按摩师

一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,7,9...

2020-04-15 15:01:13 93

原创 leetcode:面试题42. 连续子数组的最大和

输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 10^5-100 <= arr[i] &l...

2020-04-15 14:44:31 197

原创 leetcode:有效的括号

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)...

2020-04-10 22:09:47 66

原创 leetcode:翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输出: “examp...

2020-04-10 21:47:07 87

原创 leetcode:删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?public class Solution { public ListNod...

2020-04-10 21:46:00 72

原创 待整理笔记

模块分层:api 对外接口config 通用配置Core 业务处理module 数据持久化Web 控制层scouter 数据收集task 日志Worker 定时任务 脚本工具

2020-03-22 23:14:14 68

原创 Git开发常用指令(配合zsh)

git指令git clone https项目git clone https路径// 查看当前分支和修改过的文件gst// 跳到目标分支gco 分支名// 原语:工作区暂存,保存进栈(回到上次commit,并pull先修bug)step 1: git stash// 拉当前分支的代码step 2: git pull// 继续工作step 3: git stash pop//...

2020-03-22 22:51:30 168

原创 Java源码(ListIterator)-笔记

ListIterator支持双向遍历方法迭代顺序方法从尾到头迭代方法hasPrevious、previous、previousIndex从头到尾迭代方法hasNext、next、nextIndex类定义// 双向迭代器private class ListItr implements ListIterator<E> { private...

2020-02-11 00:28:09 127

原创 Java集合源码(LinkedList)-笔记

底层数据结构双向链表节点数据结构定义private static class Node<E> { E item;// 节点值 Node<E> next; // 指向的下一个节点 Node<E> prev; // 指向的前一个节点 // 初始化参数顺序分别是:前一个节点、本身节点值、后一个节点 Node(Node&...

2020-02-11 00:01:58 78

原创 leetcode:判断子序列

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = “...

2020-02-07 11:03:47 100

原创 leetcode:爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶...

2020-02-06 23:30:46 74

原创 leetcode:区域和检索 - 数组不可变

给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数组不可变。...

2020-02-06 19:10:19 62

原创 leetcode:除数博弈

爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。...

2020-02-06 17:15:01 135

原创 Java集合源码(Iterator)-笔记

迭代器java.util.Iterator几个总要参数int cursor;// 迭代过程中,下一个元素的位置,默认从 0 开始。int lastRet = -1; // 新增场景:表示上一次迭代过程中,索引的位置;删除场景:为 -1。int expectedModCount = modCount;// expectedModCount 表示迭代过程中,期望的版本号;modCount 表示...

2020-02-06 12:53:01 77

原创 Java集合源码(ArrayList)-笔记

ArrayList初始化无参:默认大小为空数组,10是第一次扩容的大小指定大小指定初始数据:public ArrayList(Collection<? extends E> c) { //elementData 是保存数组的容器,默认为 null elementData = c.toArray(); //如果给定的集合(c)数据有值 if ...

2020-02-06 12:04:28 112

原创 leetcode:设计循环队列

设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircula...

2020-01-23 18:24:44 222

原创 leetcode:移除元素

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...

2019-12-17 17:20:44 46

原创 leetcode:删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums ...

2019-12-17 15:32:59 41

原创 leetcode:两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3./** * Definition for singly-linked list. * public class ListNode { * int val...

2019-12-17 14:54:09 54

原创 leetcode:合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * public class ListNode { * int va...

2019-12-17 14:24:09 47

原创 leetcode:最大子序和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。class Solution { public int maxSubArray(int[] nums) { int n = nums...

2019-11-06 15:37:10 66

原创 并发知识点

volatile提供可见性,不保证操作的原子性避免重排序

2019-10-21 21:05:14 174

原创 Bind side

不可重入锁和可重入锁不可重入锁: 就是当前线程执行某个方法获得锁,然后在该方法中又去尝试获取锁,会失败并阻塞可重入锁: 当前线程执行某个方法获得锁,在该方法中又去获取锁,不会失败阻塞。例如syschronized代码中调用本类或父类的syschronized方法,不会被阻塞可重入锁原理每一个锁关联一个线程持有者和计数器,当计数器为 0 时表示该锁没有被任何线程持有,那么任何线程都可能获...

2019-10-14 22:01:45 137 1

原创 数据库知识点

索引失效全值扫描(select * 违反覆盖索引)违反最左前缀法则在索引列上做计算,函数,类型转换is null 或者 is not null也无法使用索引like的内容以%作为开始,例如LIKE “%ABC”字符串不加单引号使用or或者!=或者<>...

2019-10-05 22:13:32 74

原创 leetcode:用最少数量的箭引爆气球

在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend...

2019-09-28 00:51:08 69

原创 leetcode:任务调度器

给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计...

2019-09-27 23:25:43 329

原创 leetcode:相同的树

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:示例 2:示例 3:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNo...

2019-09-24 14:15:31 79

原创 leetcode:对称二叉树

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。递归/** * Definition for a binary tree node. * public class TreeNode { * ...

2019-09-24 00:57:36 71

原创 leetcode:二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。/** * Definition for a binary tree node. * public class TreeNode { * int val;...

2019-09-24 00:17:14 80

原创 leetcode:打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...

2019-09-23 23:55:29 57

原创 I/0

select调用select可以监听多个socket,当select查询到的socket可读时,客户端可以调用读操作,避免了阻塞客户端。但是每次调用select都要轮询检查所有socket,代价太大。epoll与kqueue就是解决这种问题,在socket可读时候,给socket注册某个回调函数,当它们活跃时候,自动完成相关操作。...

2019-09-22 20:45:10 266

原创 Maven知识点

Maven 是什么?Maven 主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理。Maven 的主要功能主要分为 5 点:依赖管理系统多模块构建一致的项目结构一致的构建模型和插件机制你们项目为什么选用 Maven 进行构建?首先,Maven 是一个优秀的项目构建工具。使用maven,可以很方便的对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。其...

2019-09-19 23:00:36 193

转载 Nginx知识点

1、什么是NginxNginx是一个高性能的HTTP和反向代理服务器,及电子邮件代理服务器,同时也是一个非常高效的反向代理、负载平衡。2、为什么要用Nginx跨平台、配置简单,非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发,内存消耗小:开启10个nginx才占150M内存 ,nginx处理静态文件好,耗费内存少,内置的健康检查功能:如果有一个服务器宕机,会做...

2019-09-19 22:12:01 101

空空如也

空空如也

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

TA关注的人

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