`
文章列表
Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [−2,1,−3,4,−1,2,1,−5,4], the contiguous subarray [4,−1,2,1] has the largest sum = 6.     这道题目,我没有做出来,想错了,以为求A[i] 的 max和,就是求出A[i-1] ,然后再拿A[i]比较,就是了,但是    这样的话,对 ...

Decode Ways

A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 Given an encoded message containing digits, determine the total number of ways to decode it. For example, Given encoded message "12", it could ...
今天 本是怀着无比激动的心情来读源码。可是,tomcat一层套一层的 , 却搞的我晕头转向,不知所云。 还是对Tomcat的整体架构,有一定的了解后在来读吧! 另外,今天发现,tomcat webapp目录下的docs目录,有很多干货啊。   1. 接口 : Server , Service , Engine ,Host ,Context , Wrapper , Connnector,实现LifeCycle管理生命周期    组件的层次关系 : 分析server.xml , 体会这种嵌套关系   面向组件的架构!                     、   以下转自 : ...

Unique Paths

A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below). How many possible unique ...

Climbing Stairs

 
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?    题目意思 : n步到达,每次可以走一步或两步 , 有多少种走法!     题目思路 : 当你最后一步走 一步的时候,对应着的 == W(n - 1) , 当你走两步 , == W(n - 2);    W(n) = W(n - 1) + W(n - 2) ...
   刚开始接触JavaEE的时候,就想去阅读Tomcat的源码,无奈,那时候功底不行,火候还不够,看了几天,又落下了。    最近这一段,我迷上上看源代码。遂又想着,要不再把Tomcat的源代码捡起来看看!毕竟,服务器程序,在 ...

word break

  Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s = "leetcode", dict = ["leet", "code"]. Return true because "leetcode" can be segmented as ...
来源 :【java并发】juc Executor框架详解 Java线程池架构原理和源码解析(ThreadPoolExecutor)             1. Executor整体架构:     Executor 接口定义了最基本的 execute 方法,用于接收用户提交任务。 ExecutorService 定义了线程池终止和创建及提交 futureTask 任务支持的方法。 AbstractExecutorService 是抽象类,主要实现了 ExecutorService 和 futureTask 相关的一些任务创建和提交的方法。 ThreadPoolExecutor ...
原文 : http://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedreference.html 在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如下面的例子: 现有一个用单向链表实现的堆栈,栈顶为A,这时线程T1已经知道A.next为B,然后希望用CAS将栈顶替换为B: hea ...
来源: 深入理解Java内存模型(五)——锁     java的CAS同时具有 volatile 读和volatile写的内存语义,      因此Java线程之间的通信现在有了下面四种方式:   线程写volatile变量,随后B线程读这个volatile变量。 线程写volatile变 ...

FutureTask

参考 :Runnable、Callable、Executor、Future、FutureTask关系解读 Future和FutureTask 一个很好的例子 ,   /** * 通过简单的测试程序来试验Runnable、Callable通过Executor来调度的时候与Future的关系 */ package com.hadoop.thread; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.uti ...

AQS

谢谢原作者 : singleAnt,写的非常好【java并发】juc高级锁机制探讨   1. Java中 的高级锁 :    RentrantLock  :// 可重入的锁 ,它是一种独占锁 , 只能有一个对象拥有该锁,区别于synchronize,可中断 ,可定时,可公平的获得锁    RentrantReadWriteLock : // 可重入的读写锁,多个线程可以统一同时读,读是共享的,但写是独占的    Semaphore : // 信号量,它是一个共享锁,可以把他想象成一个池,里面放着当前可以使用的资源,多所有线程都是一样的,没有谁独占    CountDownLatc ...
 一个 闩 , 一个 屏障 ,都是障碍物!只要达到特定条件时,才能移除,继续同行!   CountDownLatch ?   - 闭锁,管理一个和多个线程,只有满足某个条件才能运行!就像一个闩一样,如果你没有满足我的条件,那么就别想出去!      用给定的计数 (count)初始化 CountDownLatch。由于调用了 countDown() 方法(count--),所以在当前计数到达零之前,await     方法会一直受阻塞。计数无法被重置,计数==0时释放所有等待的线程;     应用场景 :  将一个任务分为n个独立的部分,等这些部分都完成后继续接下来的任务    ...
1. 去哪儿面试的时候,被问到java源代码中有用到堆的地方吗?      我不假思索的回到,没有!因为当初压根就没有用到过Queue相关的类!        PriorityQueue就是通过Heap实现的。Heap通过数组模拟的!       分析下他维护堆的性质,以及删除首元素时,源代码中采用的手段:       因为PriorityQueue模拟的是队列,所以就必须遵循FIFO,所以这里存在两个维护堆的过程,       一个从下到上 == add      一个从上到下 == remove      还有一个地方,要注意的就是父子节点的小标处理,一定得注意数组是从0 ...
     我竟然今天才知道循环数组这个概念!    1. 怎么实现循环?       通过首尾两个下标!如果尾下标的下一个就是头下标,那么队列就满了?但是怎么知道尾下标的下一个了?可一通过下标与数组长度取余!       还有就是如果首尾相等,那么这这个队列为空!       ArrayDeque 就是通过一个循环数组实现的!它判断队列是否满了或者获得前一个元素?通过:       分析源码的过程中,我就在纳闷,ArrayDeque里面的elements数组,通过位操作进行循环数组判断时是怎么做到的!       比如说,如果elements.length - 1 = 4 , ...
Global site tag (gtag.js) - Google Analytics