随笔分类 -  java

摘要:并发集合数据结构是编程中的基本元素,几乎每个程序都使用一种或多种数据结构来存储和管理数据。java api提供了包含接口、类和算法的java集合框架,它实现了可用在程序中的大量数据结构。当需要在并发程序中使用数据集合时,必须要谨慎地选择相应的实现方式。大多数集合类不能直接用于并发应用,因为它们没有对 阅读全文
posted @ 2017-12-04 09:34 牛头人 阅读(1175) 评论(0) 推荐(0)
摘要:java 5开始引入了Executor和ExecutorService接口以及实现这两个接口的类之后,使得java在并发支持上得到了进一步的提升。执行器框架(Executor Framework)将任务的创建和执行进行了分离,通过这个框架,只需要实现Runnable接口的对象和使用Executor对 阅读全文
posted @ 2017-11-28 11:53 牛头人 阅读(479) 评论(0) 推荐(0)
摘要:自从java 5开始,java并发API提供了一套机制,这套机制称之为执行器框架(Executor Framework),围绕着Executor接口和它的子接口ExecutorService,以及实现这两个接口ThreadPoolExecutor类展开。这套机制分离了任务的创建和执行。通过使用执行器 阅读全文
posted @ 2017-11-25 16:02 牛头人 阅读(235) 评论(0) 推荐(0)
摘要:线程同步辅助类信号量(Semaphore):是一种计数器,用来保护一个或者多个共享资源的访问。它是并发编程的一种基础攻击,大多数编程语言都提供了这个机制。CountDownLatch:是java语言提供的同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许线程一直等待。CyclicBarrie 阅读全文
posted @ 2017-11-24 15:21 牛头人 阅读(291) 评论(0) 推荐(0)
摘要:多个执行线程共享一个资源的情景,是最常见的并发编程情景之一。在并发应用中常常遇到这样的情景:多个线程读或者写相同的数据,或者访问相同的文件或者数据库连接。 为了防止这些共享资源可能出现的错误或数据不一致,我们必须实现一些机制来防止这些错误的发生。 为了解决这些问题,人们引入了临界区概念。临界区是一个 阅读全文
posted @ 2017-11-22 17:38 牛头人 阅读(194) 评论(0) 推荐(0)
摘要:一、thread类有一些保存信息的属性,这些属性可以用来标识线程,显示线程的状态或者控制线程的优先级。 1.ID:保存了线程的唯一标识符 2.Name:保存了线程的名称 3.Priority:保存了线程对象的优先级。线程的优先级是从1到10,其中1是最低优先级,10是最高优先级。 4.Status: 阅读全文
posted @ 2017-11-21 17:12 牛头人 阅读(1948) 评论(0) 推荐(0)
摘要:最近公司使用s3做文件存储服务器,因此在程序中需要调用s3的api,目前程序中使用了python和java版本的s3的api,简单做下记录,方便以后使用。 一、s3 api使用python版 1.安装boto3的sdk pip install boto3==1.4.7 2.创建s3的api客户端 i 阅读全文
posted @ 2017-11-03 16:58 牛头人 阅读(6533) 评论(0) 推荐(0)
摘要:三叉链表示的二叉树定义所畏的三叉链表示是指二叉树由指向左孩子结点、右孩子结点、父亲结点【三叉】的引用(指针)数据和数据组成。 package datastructure.tree.btree; /** * 三叉链表示的二叉树定义 * @author Administrator * */ public 阅读全文
posted @ 2017-05-27 14:33 牛头人 阅读(1456) 评论(0) 推荐(1)
摘要:算法概述递归算法简洁明了、可读性好,但与非递归算法相比要消耗更多的时间和存储空间。为提高效率,我们可采用一种非递归的二叉树遍历算法。非递归的实现要借助栈来实现,因为堆栈的先进后出的结构和递归很相似。对于中序遍历来说,非递归的算法比递归算法的效率要高的多。其中序遍历算法的实现的过程如下:(1).初始化 阅读全文
posted @ 2017-05-27 14:30 牛头人 阅读(1312) 评论(0) 推荐(0)
摘要:定义最多有两棵子树的有序树,称为二叉树。二叉树是一种特殊的树。递归定义:二叉树是n(n>=0)个有限结点构成的集合。N=0称为空二叉树;n>0的二叉树由一个根结点和两互不相交的,分别称为左子树和右子树的二叉树构成。二叉树中任何结点的第1个子树称为其左子树,左子树的根称为该结点的左孩子;二叉树中任何结 阅读全文
posted @ 2017-05-27 14:26 牛头人 阅读(7762) 评论(0) 推荐(1)
摘要:树定义和基本术语定义树(Tree)是n(n≥0)个结点的有限集T,并且当n>0时满足下列条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)当n>1时,其余结点可以划分为m(m>0)个互不相交的有限集T1、T2 、…、Tm,每个集Ti(1≤i≤m)均为树,且称为树T的子树(SubTre 阅读全文
posted @ 2017-05-27 10:51 牛头人 阅读(45300) 评论(2) 推荐(0)
摘要:概述程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。递归有直接递归和间接递归•直接递归:函数在执行过程中调用本身。•间接递归:函数在执行过程中调用其它函数再经过这些函数调用本身。•表达方式: •递归算法有四个特性:(1)必须有可最终达到的终止条件,否 阅读全文
posted @ 2017-05-27 10:33 牛头人 阅读(770) 评论(0) 推荐(0)
摘要:(堆)栈概述栈是一种特殊的线性表,是操作受限的线性表栈的定义和特点•定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈•特点:先进后出(FILO)或后进先出(LIFO)栈的结构,如下图所示: 线性表的操作主要包括:(1)清空(堆)栈(2)判断是否为空(3)元素 阅读全文
posted @ 2017-05-27 10:28 牛头人 阅读(805) 评论(0) 推荐(0)
摘要:线程池的作用:线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排 队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一 阅读全文
posted @ 2017-05-16 16:12 牛头人 阅读(362) 评论(0) 推荐(0)
摘要:一 .Amazon S3介绍 Amazon Simple Storage Service (Amazon S3) 是一种对象存储,它具有简单的 Web 服务接口,可用于在 Web 上的任何位置存储和检索任意数量的数据。它能够提供 99.999999999% 的持久性,并且可以在全球大规模传递数万亿对 阅读全文
posted @ 2017-05-11 11:47 牛头人 阅读(25146) 评论(0) 推荐(2)
摘要:队列概述队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。–队尾(rear)——允许插入的一端–队头(front)——允许删除的一端队列特点:先进先出(FIFO 阅读全文
posted @ 2017-05-08 16:01 牛头人 阅读(462) 评论(0) 推荐(0)
摘要:线性表概述线性表是最基本、最简单、也是最常用的一种数据结构。在线性表中数据元素之间的关系是线性,数据元素可以看成是排列在一条线上或一个环上。线性表分为静态线性表和动态线性表,常见的有顺序表(静态的)、单向链表(动态的)和双向链表(动态的)。线性表的操作主要包括:(1)计算表的长度n。(2)线性表是否 阅读全文
posted @ 2017-05-08 15:30 牛头人 阅读(1042) 评论(0) 推荐(0)
摘要:Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。 一、几个常用类的区别 1.ArrayList: 元素单个,效率高,多用于查询 2.Vector: 元素单个,线程安全,多用于查询 阅读全文
posted @ 2017-05-08 11:36 牛头人 阅读(19369) 评论(0) 推荐(0)
摘要:Java 多线程编程 Java 给多线程编程提供了内置的支持。一个多线程程序包含两个或多个能并发运行的部分。程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语: 进程:一个进程包括由操作系统 阅读全文
posted @ 2017-05-08 10:58 牛头人 阅读(393) 评论(0) 推荐(0)
摘要:一、归并排序算法 基本思想: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序示例: 合并方法: 设r[i…n]由两个有序子表r[i…m]和r[m+1…n]组成,两个子表长度 阅读全文
posted @ 2017-05-05 07:21 牛头人 阅读(442) 评论(0) 推荐(0)