`
文章列表

几点所得

看了JDK中几个Map的实现源码。 不由得感叹数据结构的重要性。 是该踏踏实实扎扎实实的学习数据结构和基本算法了。   不然一辈子做J2EE的命。
一、sort命令       sort命令用来对文本文件进行排序,并将排序结果输出到标准输出,下面通过实例介绍sort各种参数的用法      sort默认排序为首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出 $ cat sort.log |sort aaccv bbkk ergefe jsdhfh qwqw rrrr rrrr wewr    sort -u 排序后去除重复结果 $ cat sort.log |sort -u aaccv bbkk efergferg ergefe ergfewrg ggggg jsdhf qw ...

Map的排序

  今天工作中需要用到一个保持插入顺序的键值对的数据结构。遂想到了Map中的 JDK中map的LinkedHashMap 能满足需要。顺便做了下面的整理。      排序都是依据key来排序的。如果要依据Value来排序,需要自己来实现相关的Map类,有兴趣的可以试试看。      LinkedHashMap 会保持插入时候的顺序,但是相同的key插入多次,默认以第一次插入的顺序为准,除非将accessOrder设置为true,则以最后一次插入的顺序为准 LinkedHashMap<String,String> map=new LinkedHash ...
一、CompletionService的实现类:ExecutorCompletionService        相当于ExecutorService与BlockingQueue的组合,即能够将一组任务的运行结果按结果的先后顺序放入阻        塞队列中,以便逐一取出   二、适用场景:       假定有针对某个问题的一组求解程序,每个求解程序都能返回某种类型的 Result 值,并且您想同时运行       它们,使用方法 use(Result r) 处理返回非 null 值的每个求解程序的返回结果   三、代码示例:        import java.ut ...
一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。  Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。   获得一项前,每个线程必须从信号量获取许可,从而保证可以使用该项。该线程结束后,将项返回到池中并将许可返回到该信号量,从而允许其他线程获取该项。注意,调用 acquire() 时无法保持同步锁,因为这会阻止将项返回 ...
(待续)
         CountDownLatch是不可以重复使用的。每次都需要new一个出来。          一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。    用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。如果需要重置计数,请考虑使用 CyclicBarrier。    CountDownLatch 是一个通用同步工具,它有很多用 ...
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。 CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作 很有用。    代码实例: import java.util.concurrent ...
  在使用某些种类的 Collection 时,可以使用 ReentrantReadWriteLock 来提高并发性。通常,在预期 collection 很大,读取者线程访问它的次数多于写入者线程,并且 entail 操作的开销高于同步开销时,这很值得一试。例如,以下是一个使用 TreeMap 的类,预期它很大,并且能被同时访问   代码实例:   import java.util.Map; import java.util.TreeMap; import java.util.concurrent.locks.Lock; import java.util.concurrent ...
本文基本是JDK文档中的说明内容,但是已经很好的解释了Condition对象的使用方法。   Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供 ...
       首先,调用一个Object的wait与notify/notifyAll的时候,必须保证调用代码对该Object是同步的,也就是说必须在作用等同于synchronized(obj){......}的内部才能够去调用obj的wait与notify/notifyAll三个方法,否则就会报错:   java.lang.IllegalMonitorStateException:current thread not owner   方法的详细解释:   wait():   等待对象的同步锁,需要获得该对象的同步锁才可以调用这个方法,否则编译可以通过,但运行时会收到一个异常:Ill ...
如何避免BUG,这个问题头疼? 总是有各种BUG,,,丢人啊
一、基本的使用        HttpClient组件(这里以HttpClient4.3为例)可以模拟浏览器Http协议的request/response请求的交互。        下面的代码是基本使用的代码示例:          String url= "http://......."; // 构建请求参数 CloseableHttpClient httpclient=HttpClients.createDefault(); HttpGet httpget=new HttpGet(url); CloseableHttp ...
   开始的目的是为了检测一个URL指向的文件是否存在。代码如下: try{ String filePath="http://*****013-09-25_03.csv"; URL furl=new URL(filePath); furl.getContent(); }catch(FileNotFoundException e){ ///// }     但是后续连接http://*****013-09-25_03.csv进行下载的时候,程序堵住无法执行了。原因就是furl.getContent()持有了对文件的长 ...

正则表达式(一)

1、ASCII字符对应的字符组 [\x00-\x7F]       例如:判断是否是ASCII字符        # -*- coding: UTF-8 -*- import re print (re.search("^[\x00-\x7F]$", "c")!=None) print (re.search("^[\x00-\x7F]$", "I")!=None) print (re.search("^[\x00-\x7F]$", "0")!=None) ...
Global site tag (gtag.js) - Google Analytics