自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 创建线程的方法

从操作系统的角度来看,线程是CPU调度的最小单位——可以理解为一种资源、权利,即能够获得CPU的使用权网上很多文章中说java创建线程的方法有两种(Thread Runnable)或三种(外加Callable Future),这种说法不能说是错误的,但是很容易误导人,实际上,创建线程(拥有CPU使用权的线程)只有一种方法,那就是继承Thread类。实现Runnable(包括Callable Futu

2016-09-18 16:32:13 620 1

原创 策略模式

1、定义 策略模式定义了算法族,分别封装起来,让他们之间可以相互替代,此模式的变化独立于使用算法的客户上述中的算法即行为、方法,策略模式通俗点说,解决一个问题有多种方法,程序在运行时会自己去选择执行什么方法策略模式的角色:抽象策略角色(Strategy):策略类,通常由一个接口或者抽象类实现 具体策略角色(ConcreteStrategy):包装了相关的算法和行为 环境角色(Contex

2016-09-17 14:40:41 422

原创 IPC

前言有了信号量和管程,为什么还需要进程间通信机制(Interprocess communication, IPC)呢?其一,信号量和管程传递的信息较为简单,无法传递大量信息;其二,不适用于多CPU情况消息传递(message passing)发送进程S和接受进程R的地址空间不同,S不能在R的地址空间进行任何操作,所以消息的发送需要操作系统来完成,操作系统有一组消息缓冲区,发送进程要发送消息时,调用s

2016-08-10 17:12:14 518

原创 互斥和同步

前言进程间通信(Inter Process Communication)主要有三个问题:进程如何把信息传递给另一个进程确保两个或更多的进程在关键活动中不会出现交叉,比如两个进程试图争夺同一资源正确的顺序,某个进程运行前必须等待另外一个进程的运行完、注意后面两个问题和解决方法同样适用于线程1、互斥原子性(Atomic):连续的,在执行过程中不允许被中断原语:完成某种特定功能的一段程序,具有原子

2016-08-10 17:10:35 2785

原创 进程和线程的区别

进程和线程的区别

2016-08-10 17:02:12 493

原创 线程

前言线程,具有进程的某些性质,又称轻量级进程。引入线程的原因:应用需要——对于一个单线程的进程,它在完成一项任务时,那么就不能执行其他任务开销的考虑——进程的相关操作(创建、撤消、进程间通信、切换等)需要内核的介入,时间空间开销大(系统调用、上下文切换),而线程的相关操作开销要小性能的考虑——对于多CPU,需要大量计算和大量IO处理,多线程可以允许计算和IO重叠处理,从而加快应用程序的执行速度

2016-08-03 16:35:01 433

原创 进程

前言操作系统中最核心的概念是进程,操作系统的其他所有内容都是围绕着进程的概念展开的多道程序设计:在伪并行情况下的进程集,它允许多个程序同时进入内存并运行,其目的是为了提高系统效率。通过将内存(主存,也就是RAM)分为几个部分,没一部分存放不同的作业,内存中的不同作业是使用硬件来保护的每道程序都有各自的逻辑PC,但实际上只有一个物理上的PC,故在程序运行时,每道程序的逻辑PC被装入到实际的PC中,当该

2016-08-03 16:34:44 748

原创 RBT(红黑树)的删除算法

2-3树中删除最小键作为一个热身,回到2-3树来看下删除,简单起见,从删除最小键开始。如果含有最小键的节点不是2节点(3节点或4节点),那么直接删除该节点,不会破坏树的平衡性,但是如果是2节点,由于删除后变为空节点,有可能会破坏平衡性,故删除最小键的思路是沿左链接向下进行变换,确保当前节点不是2节点。 根节点根节点的左右孩子都为2节点此时将3个2节点合并为一个4节点 根节点的右孩子不为2节点左孩

2016-08-03 16:26:37 5073 4

原创 RBT(红黑树)插入算法

#2-3查找树为了保持平衡性,同时也为了避免AVL那样多次的判断和旋转,需要一些灵活性,故允许一个节点可以保存两个键,它有三条链接,称3节点,BST中的节点称2节点。 2-3查找树的定义:它是一棵查找树或空树,由2节点和3节点组成,2节点含有一个键和两条链接,2节点的左子树中的键均小于该节点的键,右子树中的键均大于该节点的键;3节点含有两个键和三条链接,左子树中的键小于该节点的键,中子树中的键在该

2016-08-03 16:26:12 1508

原创 AVL

前言由于二叉查找树(BST)没有平衡条件,插入可能使树的结构不平衡,一种比较极端的情况就是其结果看起来就是一个带有两个链接的链表一样。如按顺序向BST中插入ABCDE,结果将是: 重建图: 若采用AVL,结果是: 从层序遍历的结果来看,此时重建的AVL也是一棵满二叉树。 AVL即带有平衡条件的二叉查找树,其平衡条件是每个节点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定

2016-08-03 16:25:35 626

原创 二叉查找树(BST)

前言二叉查找树是一棵二叉树,如果用来构造符号表的话,那么每个节点含有一个键值对,对于每个节点,其键大于其左子树中所有节点的键,且小于其右子树中所有节点的键,如果中序遍历二叉查找树并打印其键,那么键将按从小到大的顺序打印。如果仅仅是为了描述二叉查找树,是可以不用构造符号表的,每个节点只含有键就够了,但是本着实用主义,还是构造了符号表,符号表又称字典、索引,数据库的曾删改查就是基于符号表(B-树、红黑树

2016-08-03 16:25:14 543

原创 二叉树遍历

1 二叉树的先序遍历先序遍历从树的头节点开始,按照先根节点,然后左子树,再右子树的顺序遍历整棵树。 先给出二叉树节点的定义 package binaryStree;/** * 二叉树节点定义 * @author 小锅巴 */public class TreeNode { public TreeNode left;//左链接 public TreeNode right;/

2016-08-03 16:24:55 434

原创 try catch finally中有return语句的执行情况及原因分析

前言之前在学习Java异常时遇到了try cathc finally中有return的情况,但是到底return执不执行,以怎样的顺序执行,以及原因是什么,还没弄清楚。 1 执行顺序以及原因先来看一个简单的例子,为了便于阅读方法的字节码指令,没有采用static方法 package chapter6;/** * @author 小锅巴 */public class Finally {

2016-08-03 15:54:26 1635

原创 String、StringBuffer、StringBuilder

1、StringString的部分源码(jdk1.8.0_65)如下: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private fi

2016-08-03 15:40:38 603

转载 锁与volatile的内存语义

原文地址:http://blog.csdn.net/u011116672/article/details/50147233 参考的资料应该是这里和这里,原博主总结得挺好的,我就直接转载了

2016-08-03 15:27:59 941

原创 并发基础

前言并发和操作系统的相关度很高,会多次回到操作系统中,为什么要回到操作系统呢?JVM屏蔽了底层硬件、操作系统的不一致性,以向程序员在不同的硬件、操作系统上提供一致的开发环境,但是,最终的实现还是要依赖底层硬件、操作系统的,java中的线程还是要映射到操作系统上的大部分是各种资料的总结,若有错误或者不足,欢迎交流讨论1、基本概念关于竞争条件、临界区、原子性、互斥等概念,请移步操作系统,这里说下同步和互

2016-08-03 15:10:10 369

原创 Java泛型之一

Bruce说学习泛型的最大障碍是类型擦除,泛型的博文我分成两篇,这篇主要是类型擦除、边界、通配符,使用泛型的约束和局限性以及可能带来的问题放在另外一篇,作者水平有限,如有错误或者不足,欢迎交流讨论。0 前言一般的类和方法,要么使用基本类型,要么使用自定义的类,不能编写应用与多种类型的代码,在Java增加泛型之前,泛型程序设计是使用继承实现的,即使用Object类型或者Object数组。采用继承实现会

2016-04-16 12:52:09 414

转载 互联网协议入门(二)

原文地址:http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html上一篇文章分析了互联网的总体构思,从下至上,每一层协议的设计思想。这是从设计者的角度看问题,今天我想切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。============================

2016-04-14 15:53:46 396

转载 互联网协议入门(一)

原文地址:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网

2016-04-14 15:50:38 501

原创 数据结构之栈

1、顺序存储结构与链式存储结构顺序存储结构数据存在内存地址连续的一块区域,数组便是这种存储结构的典型表现。由于是在一块的内存区域,只要确定第一个元素的内存地址,后面的元素就可以在这快区域上随机存取。下面的示意图展示了顺序存储结构在内存中的存储形式: 链式存储结构 链式存储结构区别于顺序存储结构的一点就是数据是存放内存中任意一个地址中,每个数据除了有自己的数据属性还有下一个数据内存地址的引用,

2016-04-14 00:16:55 466

原创 快速排序(附Java实现和分析)

总结一下快速排序,如有错误或者不足,欢迎交流讨论。 1、快速排序的思路快速排序和归并排序的思路很相似,都是采取的分治思想。快速排序通过选择一个元素,该元素称为枢轴元素或切分元素,然后将它放到一个合适的位置上,使得它前面的元素不大于它,它后面的元素不小于它,然后将枢轴元素为分界点,两边的数组也采取类似的方法,即选取枢轴元素,使得前面的元素不大于它,后面的不小于它,重复进行下去,直到数组里面只有一个元

2016-04-07 12:21:07 5569

原创 Java中的异常处理

Java中的异常处理总结下Java中的异常处理,基本来自Java编程思想和真实的归宿的博文,如有错误或者不足,欢迎交流讨论。 1 什么是异常处理,为什么需要异常处理异常(Exception)即程序的意外情况,C及早期的语言的错误处理往往是预定俗成的,并不是语言的一部分,语言本身不强制程序员检查和处理异常,如果每次调用方法都要检查错误,代码将变得难以阅读,且开发的效率无疑要大大降低,出错后要检查特定的

2016-04-01 21:12:55 623

原创 欧几里德算法求最大公约数

欧几里德算法求最大公约数求最大公约数,貌似最近考得有点多,写篇博客记录下。如有错误或者不足,欢迎交流讨论。 1. 原理 2. 具体代码实现 原理欧几里德算法,又称辗转相除法,用公式表示即为gcd(a,b)=gcd(b,a mod b),其中a>b,mod为取余运算。 证明(还是来自百度): a可以表示成a = kb + r(a,b,k,r皆为正整数),则r = a mod b 假设d是a

2016-03-29 21:24:17 847

原创 归并排序(附Java实现和分析)

归并排序(附Java实现和分析)介绍归并排序的思路,并分析时间复杂度、空间复杂度和稳定性,如有错误或者不足,欢迎交流讨论。 思路:归并即将两个有序数组归并成一个更大的有序数组。有具体来说,分两种,自底向上,先将数组中每两个排序,然后将两个含有两个元素的有序数组归并为一个含有4个的数组,然后再将两个含有4个元素的数组归并为含有8个元素的一个含有8个元素的数组,如此这般;自顶向下,即将要排序的数组分为

2016-03-29 19:18:17 645 1

原创 Java中的内部类

Java中的内部类总结一下内部类,如有错误或者不错,欢迎交流讨论。 内部类的定义,作用 内部类的分类 和内部类相关的几个问题 1、什么是内部类,为什么需要内部类,它有什么用?在一个类的内部定义一个类,就是内部类。内部类提供了某种进入外围类的窗口;每个内部类都能独立继承子一个实现(接口或抽象类),无论其外围类是否实现,对内部类都没有影响;实现多继承,Java的中继承是单根继承,只能继承

2016-03-29 10:48:57 722

原创 网易2015年Java开发笔试第三题 选择题

主要涉及初始化及继承。若有错误或不足,欢迎交流讨论。 题目来源:网易2015年Java校招笔试第三题 class HelloA{ public HelloA(){} { System.out.println("I'm A class "); } static { System.out.println("static A");

2016-03-24 22:12:29 1235

转载 接口与抽象类的区别

接口与抽象类总结下接口与抽象类的区别,如有错误或不足,欢迎交流讨论。 使用原因定义两者的不同点 使用抽象类的原因:防止使用者创建该类的对象 使用接口的原因:除了防止创建该类的对象,为了能够向上转型为多个基类,由此带来设计上的方便,比如策略模式,可以根据不同的子类对象具有不同的行为。且由于Java中的类是单根继承结构,接口是Java实现多继承的途径。 抽象类:包含抽象方法的类。抽象方法即

2016-03-24 21:34:40 460

原创 Java中的继承、封装、多态

Java中的继承、封装、多态本博客包含以下内容,博主是菜鸟,正在努力学习中,如有错误或不足,欢迎交流讨论。基本定义初始化和类的加载final关键字类之间的关系向上转型多态的缺陷构造器和多态1、基本定义继承:在创建一个新类(子类、导出类)时,使用extends关键字表明它派生于一个已经存在的类(父类、基类、超类),导出类会获得基类的所有域和方法,但并不是一定能直接访问,和访问权限控制有

2016-03-21 17:00:11 1536 7

原创 Java中的访问权限控制

成员、方法的访问权限控制包访问权限 没有访问修饰符的默认权限,有时也表示称为friendly。当前包中的所有其他类对那个成员都有访问权限,当对于包之外的类,却是private的,没有访问权限。public访问权限 被修饰的成员或方法可以被任何人访问。private访问权限 只有包含该成员(方法)的类具有访问权限,其他任何类都无法访问。protected访问权限 继承访问权限,对子类

2016-03-16 16:10:50 972

原创 Java中数据初始化

总结一下Java的初始化,本文涉及的内容自动初始化成员指定初始化静态初始化实例初始化数组的初始化引用的初始化1、自动初始化对于在类中定义成员变量(又称为成员属性、字段),基本数据类型会自动初始化,引用类型——对象变量,会被初始化为null。注意,必须是字段,对于局部变量,必须指定初始化为其赋值,局部变量不初始化是程序员的疏忽。自动初始化是Java为了所有变量在使用前都能得到初始化,它要

2016-03-11 10:54:14 2877

原创 引用与指针

我个人的理解,引用即声明的对象变量,他指向“new出来”的对象。了解C的同学可能立马会想到指针,然而,不同的Java系统,引用的具体实现不一样,有的采用指针实现,特点是数组访问速度快;有的是采用句柄来实现,句柄——指针的指针,特点是有利于垃圾回收。在Java中,创建引用的操作只有一种,即new,改变引用所指向的对象也只有一种,即赋值操作,所以Java里面对引用的操作只有创建和赋值。对比C/C++里的

2016-03-11 09:52:16 444

原创 Java构造函数到底有没有返回值?

Java构造函数到底有没有返回值?

2016-03-11 09:37:27 19548

转载 算法的复杂度

原贴地址http://blog.csdn.net/booirror/article/details/7707551算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个

2016-02-26 15:14:47 386

转载 程序员练级之路 (作者:陈皓)

建议:不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉

2015-10-21 19:21:42 381

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除