java
文章平均质量分 57
Alvin-M
better And better!
展开
-
基础排序算法Java版本(上)
由于java对各类算法都已经做了封装,所以很少使用java来写算法,为了巩固一下一些基本的算法,所以这次是用java来实现基本算法,若有错误的地方,希望大家能够指正。public class Sort { public static void swap(int[] temp ,int a,int b){ int t = temp[a]; temp[a] = te原创 2015-11-11 20:50:04 · 353 阅读 · 0 评论 -
ReenTrantLock技术内幕(一)
AbstractQueuedSynchronizer(AQS)是JUC的基石,是由伟大的Doug Lea设计完成。具体的设计过程可以看他写的论文,介绍的非常详细。AQS其实是一个抽象类,但内部已经帮我们实现了许多的核心方法。通过利用CAS操作与改进CLH队列来完成同步操作并且提供了一种细颗粒的锁机制,我们知道ReenTrantLock的底层就是通过实现AQS来完成同步操作。在AQS中提供了下面五个方原创 2016-03-19 23:54:58 · 298 阅读 · 0 评论 -
java并发原理(上)
我们知道CPU是用来处理、运算计算机所有数据的功能模块,而我们的程序在运行时会将数据保存在内存中,CPU会去内存中读取计算时所使用到的数据。随着CPU运算速度的升级,出现了CPU运算速度与内存读写速度不匹配的情况,为了解决CPU在运行时总是等待从内存中读写数据从而导致CPU空闲而影响效率的问题,在CPU内部集成了一定量的寄存器与高速缓存,来提高CPU在处理数据时的效率。现代CPU的架构模型虽然有多种原创 2016-02-22 22:50:33 · 445 阅读 · 0 评论 -
JAVA多线程和并发基础面试问答
多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点) Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的转载 2016-02-02 17:18:08 · 300 阅读 · 0 评论 -
JAVA并发原理(下)
VolatileVolatile关键字用于确保共享数据的可见性与有序性,但是并不能保证方法的原子性,在程序中对Volatile关键字使用得当的话,它比synchronized的使用和执行成本会更低,因为他不会引起线程的上下文切换和调度。先讲一下重排序,重排序是什么?我们所编写的程序会经过编译器编译,然后写入内存中。在执行时,CPU会从内存中读取并执行,在这里,编译器与CPU为了提高程序执行时的效率,原创 2016-03-02 23:09:38 · 899 阅读 · 0 评论 -
java中Executor线程池讲解与实例
近期研究了一下java自带的线程池工具Executo,所以记录一下学习的内容。什么是线程池? 线程池是预先创建线程的一种技术。线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中。这些线程都是处于睡眠状态,即均为启动,不消耗CPU,而只是占用较小的内存空间。当请求到来之后,缓冲池给这次请求分配一个空闲线程,把请求传入此线程中运行,进行处理。当预先创建的线程都处于运行状态,原创 2016-02-02 15:24:53 · 2470 阅读 · 0 评论 -
Java 7之基础 - 强引用、弱引用、软引用、虚引用
1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: [java] view plain copy print? Object o=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出Ou转载 2016-01-22 10:18:11 · 319 阅读 · 0 评论 -
JAVA类的初始化顺序
java类的初始化顺序是面试中常问到的一个问题,下面通过一个加载例子就可以让我们深入了解java类的加载顺序,而不是死记硬背。 先定义一个父类Fatherpublic class Father { public static String str1 = "Father静态字符串"; public String str2 = "Father普通字符串"; static {原创 2016-01-19 22:24:07 · 363 阅读 · 0 评论 -
二叉树非递归遍历实现-java版本
最近看了一下二叉树非递归遍历的实现,现在将思路写出来,若有不对,希望大家能够指出 //二叉树非递归先序遍历 private void preOrderBSTByUnRecur(Node head){ //先判断头节点是否为空 if(head != null){ Stack<Node> stack = new Stack<Node>();原创 2015-12-12 10:52:58 · 651 阅读 · 1 评论 -
笔试面试中的字符串题目思路与简单解析JAVA版本
分享一些在笔试或者面试中会遇到的字符串类型的题目,这些题目都是我四处收集起来或者自己想到就做的题目,可能不是最优解,仅供大家参考,若有更好的方法也希望能够一起交流,本文会不定时的更新,希望能给需要用到的人带来帮助。 1.原创 2015-11-16 19:06:11 · 348 阅读 · 0 评论 -
二叉树的实现Java版本
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树每个节点至多有两个子节点:左子节点与右子节点。 二叉树的第i层最多有2^(i-1)个子节点。 深度为k的二叉树的所有节点数量不超过2^k-1个。 完全二叉树:深度为k都二叉树,除了第k层,其余各层原创 2015-11-17 21:19:03 · 305 阅读 · 0 评论 -
链表基础操作与常见题目Java实现
好久没有关注数据结构的题目了,最近回顾了一下,链表的基础题目大概有以下几种,用java实现了一下,大部分题目根据一下链接而来 http://www.jb51.net/article/71885.htm 自己实现了一遍,收益良多,所以分享给大家。/** * Created by Alvin on 15/11/13. */ public class LinkList { //链表头原创 2015-11-13 22:58:29 · 325 阅读 · 0 评论 -
基础排序算法与二分查找算法Java版本(下)
/** * Created by Alvin on 15/11/11. */ public class Sort {public static void swap(int[] temp ,int a,int b){ int t = temp[a]; temp[a] = temp[b]; temp[b] = t; } //选择排序,从无序数组中选出一个数值插入至数组中原创 2015-11-15 00:57:28 · 475 阅读 · 0 评论 -
Java NIO:浅析I/O模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr转载 2016-02-29 23:56:24 · 280 阅读 · 0 评论