Java
火星日立zy
这个作者很懒,什么都没留下…
展开
-
Java多线程---线程池源码分析及其实现
之前Java线程池的文章都是关于基本知识和JUC下的类。这篇主要来说一下线程池,并自己来实现一个线程池。 一.线程池介绍 学习过程中会遇到各种池,有线程池,数据库连接池,内存池,常量池等等。下面来一次介绍。线程池:用来管理线程的一个集合(池),作用是用来提高线程的使用效率。如果一个线程的创建和销毁的成本比运行该线程里面的程序的成本要高,则就需要用到线程池。在线程池中,里面的线程可以重用原创 2015-01-22 23:03:33 · 887 阅读 · 0 评论 -
Java多线程---Lock类
上一篇文件讲了java多线程的基础知识,同步处理使用synchronized关键字。从Java5开始,引入了Lock类,改类在包java.util.concurrents.locks下面。使用该包下的类也可以进行并发编程。其中Lock和ReadWriteLock是两个最基本的接口,我们经常使用的是ReentrantLock类和ReentrantReadWriteLock类,它们分别是...原创 2015-01-10 12:57:56 · 604 阅读 · 0 评论 -
Java动态代理
之前的文章说到了代理模式,代理模式的应用还是很多的。Java这方面还支持动态代理,下面我们慢慢来说。一普通代理模式原创 2015-05-12 23:44:56 · 468 阅读 · 0 评论 -
比较排序算法的Java实现
在我们熟知的排序算法中,最早接触的就是冒泡排序和选择排序,后来又有了插入排序,但是这些排序算法都是二次时间的,对于大量数据的排序效率不是很高。因此后面就有了如希尔排序,归并排序,堆排序和快速排序。这里总共有7种,因为它们在排序时都会进行比较,因此也是比较排序算法,而比较排序的最快时间也要Ω(NlogN)。这时根据比较的决策树得到。N个元素,它的排序有N!种情况,将它放入到二叉树中,N!情况都在树叶...原创 2015-04-30 00:50:28 · 558 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历应该说是非常常见的,用递归的话程序非常简单明了,而有的时候需要写非递归的遍历程序,这个时候就需要对此有一定的了解。二叉树的遍历根据根节点和左右子节点遍历顺序的不同,可以分为三种:前序遍历,中序遍历,后序遍历。前序遍历就是先根节点->左节点->右节点。非递归前序遍历编写最简单,最难的是后续遍历。下面就来一一写出它们的程序,这里用的是Java。非递归遍历是一种DFS(深度优先搜素),从原创 2015-05-09 22:26:03 · 435 阅读 · 0 评论 -
线性排序的Java实现
线性排序算法是不用进行元素比较的算法,因此它的时间复杂度不受Ω(NlogN)的限制,它的排序时间复杂度是线性 。这里将会介绍最常见的三种线性排序算法:桶排序,计数排序,基数排序。一 桶排序桶排序(bucke sort)假设输入数据服从均匀分布,平均情况下它的时间代价为O(N),最坏为O(N^2)。桶排序将[0,1)区间换分为k个相同大小的子区间,也叫桶。然后根据输入的数据,将它们放在各个桶原创 2015-04-26 21:39:35 · 724 阅读 · 0 评论 -
设计模式----创建型
1.生产者消费者模式:在计算机科学中,我们将生产者消费者问题描述为:一群生产者在生产消息,并将此消息提供给消费者去消费。它们中间设了具有N个缓存区的缓冲池,生产者每次可将生产的消息放入一个缓存区内,消费者每次可将一个缓存区内的消息拿出来消费。但这个过程有两个条件:任何一方操作一个缓冲区时不能有其它同时对该缓冲区进行操作;只有当缓冲区还有空余,生产者才能生产,只有当缓冲区至少有一个产品,原创 2015-01-15 00:29:25 · 329 阅读 · 0 评论 -
动态规划初探
最先听说动态规划还是在研究生的最优控制课上,课上介绍了用动态规划解决最优问题。其实动态规划(dynamic programming/DP)和分治方法类似,都是通过组合子问题来求解原问题。不过动态规划应用于问题重叠的情况,即不同的子问题具有公共的子子问题,每个子问题只求一次,而不必重新计算。就我个人的理解:动态规划就是将所求的问题分步,每一步的最优解是由当前解和之前的最优解组成。求到最后,也就求原创 2015-04-21 22:45:07 · 415 阅读 · 0 评论 -
设计模式---结构型
在23种设计模式中,创建型有5种,结构型有7种。这里就简单介绍一下结构型的7种设计模式。这7种模式是:适配器模式,装饰器模式,代理模式,组合模式,桥接模式,外观模式和享元模式。1.适配器模式定义: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。这个模式我在《深入分析Java Web》这本书中看过,这里就介绍一个j原创 2015-04-12 20:01:15 · 454 阅读 · 0 评论 -
Java多线程---基本知识
Java的多线程学习 这里主要是对我之前学习java多线程知识的一个总结,之前的内容都记在笔记本上。一.线程的概念线程是轻量化的进程,而进程就是运行中的程序。一个程序至少包含一个进程,而一个进程至少包含一个线程。线程是进程的执行单元。进程(Process):是一个动态概念,拥有完整的地址空间,不依赖于线程而独立存在。线程(Thread):属于进程的一部分,不能单独运行原创 2015-01-05 23:34:52 · 516 阅读 · 0 评论 -
Java序列化的几点注意
从Java1.1开始就支持序列化的操作,序列化就是将对象转换为字节流,用来存储或者进行传输。这样对象就可以被持久化。Java序列化一个类非常简单,该类实现一个Serializable接口或者Externalizable接口。Externalizable是Serializable的子类。Serializable接口没有任何方法,它只是一个标志。1.单例模式下序列化要加上readR原创 2015-03-22 13:50:59 · 413 阅读 · 0 评论 -
Java多线程---JUC包下的常见类
这篇文章主要是关于java.util.concurrent类包下的常用类,会给出相应的介绍并给出实例。 JUC是JDK1.5才引入的并发类库。1.CountDownLatch 这个类是一个同步计数器,主要用于线程间的控制,当CountDownLatch的count计数>0时,await()会造成阻塞,直到count变为0,await()结束阻塞,使用countDown()原创 2015-01-20 19:22:01 · 13716 阅读 · 0 评论 -
Java多线程---CAS和锁优化
一 .CAS 在学习java.util.concurrent(简称JUC)包下的类时,了解到了CAS这个概念,整个JUC包的基础也是CAS,ReentrantLock也是基于它的。学习CAS,先从synchronized关键字说起,synchronized关键字能保证最基本的互斥同步。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个线程使用。而互斥是实现同步的原创 2015-01-13 14:25:32 · 3119 阅读 · 0 评论 -
Zookeeper实现分布式锁
一.zookeeper是一款分布式协调框架,简单的说,zookeeper=文件系统+通知机制。,主要作用:1.命名服务 2.配置管理(数据发布与订阅) 3.集群管理 4.分布式锁 5.队列管理。我最开始了解zookeeper是源于我们的RPC框架Pigeon,里面使用它作为协调管理工具,管理服务实现者和服务请求者。本机下载安装zookeeper还是挺容易的,参考http://blog...原创 2018-02-24 19:41:56 · 491 阅读 · 2 评论