自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (5)
  • 收藏
  • 关注

原创 java 集合框架-TreeMap

一、背景1、SortMap接口扩展Map接口,定义按照key有序的映射集合以key的自然顺序(实现Comparable的对象)排序或者指定的Comparator排序有序指的是迭代的有序,如entrySet、keySet、values 等方法返回的元素集合有序SortMap新增定义了一些基于有序的方法://返回一个左闭右开区间的子视图,修改子视图等同修改该mapSortedMap&...

2018-09-19 19:06:41 198

原创 java 集合框架-LinkedHashMap

一、概述1、继承扩展HashMap,实现Map接口,基于双链表实现有序,支持插入有序和访问顺序2、允许NULL元素,基本操作(add、contrains、remove)与HashMap一样有稳定性能(hash分布均匀情况下)3、由于需要维护链表,性能较HashMap差,而迭代可能不一定,LinkedHashMap的迭代所需时间与 大小 成比例,HashMap迭代所需时间与 容量 成比例...

2018-09-04 14:33:49 323

原创 java-集合框架HashSet

一、概述1.HashSet 继承AbstractSet抽象类、实现Set接口,内部通过Hash table(HashMap) 实现2.元素无序,可以有一个NULL元素3.一般操作(add、remove、contains、size)不考虑元素的Hash函数时间,是常量时间复杂度4.迭代器时间相当于 元素的size + 背后HashMap的容量(capacity),所以如果需要经常迭代...

2018-09-04 14:31:44 185

原创 java 集合框架-HashMap

一、概述HashMap应该是我们最常会使用到的Map容器了吧,这里先简单罗列写它的特点: 1.实现所有Map接口方法,允许null值key、null值value 2.不保证元素的顺序,包括先后添加的顺序,特别是随着容量增加顺序不能保证 3.实现等价于HashTable,区别是HashMap是非线程安全的 4.假设hash方法可以正确的分散,基本的get、put操作的时间复杂度为常量时间(N)

2017-06-15 18:52:56 392

原创 java 集合框架 Map-AbstractMap

Map接口键值对映射(key-value),对于一个map,每个key都是唯一的,不重复,而且每个key对应一个value,value可以重复需要注意可变对象作为key,key对象是否相等,是使用equal方法判断的,如果可变对象改变的状态导致equal方法结果改变,那么映射的错误是未知、不确定的;因此,映射最好使用不可变对象为key,如基本类型、String等;映射是否有序,Map接口没有规

2017-06-15 18:52:00 456

原创 ReentrantLock锁与内置锁synchronized

Syschronized 关键字 同步代码块(同步方法)对象内置锁使用对象自身的内置锁(监视器锁-monitor lock)实例方法-使用实例对象锁,static 方法 使用Class对象锁对象内置锁为互斥锁,一个同步块,只有一个线程进入同步代码块中的代码具有原子性计入代码块内获取到锁,无论正常退出or移除都会释放锁可重入可重入,表示内置锁获取锁的粒度是线程,而不是调用同一个线程可以

2017-02-08 18:12:46 1675

原创 JVM学习-垃圾收集器

虚拟机有许多的垃圾收集器可以选择,这里简单的记录分享下每个收集器的特点一、Serial历史最久,曾经是新生代唯一选择单线程,进行时暂停所有用户线程-Stop The WorldClient模式下默认新生代收集器单个线程更加高效简单,没有线程交互开销,一般client应用内存使用不大,停顿时间很短二、ParNewSerial的多线程版本,控制参数、收集算法、Stop The World、

2017-02-03 17:07:13 353

原创 java 集合框架-CopyOnWriteArrayList

CopyOnWriteArrayList是java.util.concurrent并发包下的集合类,与集合功能与ArrayList相似,主要区别为这是线程安全类 如类名一样,在对底层数组写(修改)时,会复制一份数组进行实际操作,操作完成后修改引用为新数组;而在读的时候是直接读取数组接下来我们来看具体的源码: /** The lock protecting all mutators

2017-01-18 18:20:43 349

原创 java 集合框架-ArrayList

在上一篇中我们描述了AbstractList的一些特性,包括迭代器的快速失败机制,这篇我们继续分享List下最常用的ArrayList以及非常类似的Vector,ArrayList具体实现类主要有以下特性: - 支持动态大小,集合的大小可以自动扩展 - 不是线程同步安全,所有方法都不同步 - 实现支持迭代器快速失败

2017-01-12 16:53:29 424

原创 java 集合框架-AbstractList

AbstractList 作为具体List型具体类,实现AbstractCollection抽象类、继承List接口,实现了部分方法 - indexOf - lastIndexOf - subList - addAll - iterator - listIterator - equals - hashCode下面源码分析一些较复杂的方法实现

2016-11-17 20:35:29 506

原创 java 集合框架-AbstractCollection

AbstractCollection 作为顶级接口Collection的抽象实现子类,实现了一下集合基本方法: - isEmpty - contains - toArray - add - remove - containsAll - addAll - clear - toString下面我们一一看下实现的源码

2016-11-17 20:34:09 458

原创 java 集合框架-概述

Java 集合框架在java.util 包下,包括常用的容器类数据结构、工具类等,本章主要为对下图的简单概括,后续章节通过源码说明每个容器类的详细实现细节:集合框架中两个顶级的集合接口:Collection、Map,定义了最基本的一些操作方法;其中Collection接口是继承可迭代接口 Iterable 的,所有的子类都是可以使用 Iterator 迭代器方式

2016-11-17 20:32:56 451

原创 JVM学习-java垃圾回收(三)-内存分配

在上一篇中主要说到了垃圾回收算法、垃圾收集器等,这篇我们来学习下对象在内存分配的策略;一、概述对象在内存分配,一般都是在堆内存上分配,主要是会分配到新生代的Eden区,如果有开启本地线程分配缓冲区,会按线程优先在TLAB上分配,还有少数情况会直接在老年代分配;对象内存的分配的策略细节由垃圾收集器组合决定,还有许多虚拟机参数可以由我们控制设置;这里我们主要看下几天普遍的分配规则,并在 Serial

2016-08-31 17:43:01 1048

原创 JVM学习-java垃圾回收(二)-GC日志

GC 日志是一个分析Java内存回收有用的工具,它能准确的记录每一次GC的执行时间和结果GC or Full GC关于Full GC,容易有误解,以为是堆全部年代内存GC;其实”Full” 并不是用来区分新生代GC和老年代GC,只是表示这次GC发生了”Stop The World(STW)”-XX:+PrintGC这个参数开启简单的GC日志模式,为每次的GC或Full GC打印一条信息,如:[GC

2016-08-24 14:19:39 2039

原创 JVM学习-java垃圾回收(一)

在上一篇中主要描述了Java 内存的分布,对象存储和访问已经各个内存区域可能的异常等,本篇主要描述Java 垃圾回收中有关内存回收策略和垃圾回收器的部分内容;

2016-08-01 18:09:35 708 1

原创 JVM学习-java内存区域与异常

java是一门跨硬件平台的面向对象高级编程语言,java程序运行在java虚拟机上(JVM),由JVM管理内存,这点是和C++最大区别;虽然内存有JVM管理,但是我们也必须要理解JVM是如何管理内存的;JVM不是只有一种,当前存在的虚拟机可能达几十款,但是一个符合规范的虚拟机设计是必须遵循《java 虚拟机规范》的,本文是基于HotSpot虚拟机描述

2016-07-21 13:14:42 2422

原创 Java NIO 学习(六)--Selector

在之前讲解的网络相关的channel,都有讲到非阻塞模式,只简单说明了那些方法在非阻塞模式下的返回情况,并没有实际的应用;本节要讲到的selector就是NIO中非阻塞模式使用的一大优点;一、概述selector,选择器,同过一个选择器,程序可以通过一个线程处理多个channel,而不需要像之前ServerSocketChannel那样每接收一个请求都单开一个线程处理通信;selector基于事件

2016-07-16 20:03:15 1138

原创 Java NIO 学习(五)--DataGramChannel

本节讲解的是DataGramChannel,类是与java 网络编程的DatagramSocket类;使用UDP进行网络传输,UDP是无连接,面向数据包的协议,对传输的数据不保证安全与完整;

2016-07-15 12:38:42 3352 1

原创 Java NIO 学习(四)--ServerSocketChannel与SocketChannel

本机要讲到的ServerSocketChannel、SocketChannel,与Java网络编程中的ServerSocket、Socket是非常相识,至少从使用方式上来看是这样,本质上都是TCP网络套接字,只是多了“channel”;

2016-07-13 17:53:14 12090 4

原创 Java NIO 学习(三)--FileChannel

一、概述NIO 中FileChannel可以理解为一个连接到文件的通道,可以通过FileChannel对文件进行读写; FileChannel没有非阻塞模式,读写都只有阻塞的方式;

2016-07-06 19:56:12 799

原创 Java NIO 学习(二)--Buffer

在第一节中,简单的描述了NIO三个核心的类:channel、buffer、selector;由于缓冲区作为操作的基本,而且底层channel接口没有过多细节(只有两个方法:isOpen、close)这里先讲解缓冲区的详细内容,后面再讲解具体类型的channel和selector;

2016-07-05 12:58:36 795

原创 Java NIO 学习(一)--简介

Java NIO (New IO)是JDK1.4后引入的新输入/输出API,提供基于缓冲区(buffer)的块写入/读取,而以前的I/O是基于流(Stream)的方式,NIO基于块的IO操作,将最耗时的缓存区读取和填充交由底层操作系统实现,因此速度上要快得多;主要由以下三个核心部分组成: 1. channel 2. buffer 3. selector二、channel - 通道通道可

2016-07-04 12:21:56 576

原创 使用CGLib实现动态代理

java的动态代理是必须基于接口的,而在编程中,使用到的外部类并不是基于接口编程的比比皆是,这有如何实现动态代理?使用可以基于类实现动态代理的CGLib!

2016-06-20 19:36:36 5547

原创 Java动态代理

在java常用的设计模式中有一种模式叫:代理模式----通过一个代理类负责处理被代理类(委托类)的调用,如果你了解或使用过Spring的切面(AOP),可以更好的理解何为代理,通俗的讲就是在一个类的方法执行的前后加入操作(如进入和完成方法打印日志),实际上Spring正是使用java的动态代理来实现切面的;一般代理类和委托类实现同样的接口,代理类通过调用委托类对象的方法真正的实现服务,

2016-06-17 17:43:19 781

原创 ThreadPoolExecutor解析-主要源码研究

注:本文的分析和源码基于jdk1.7;一、ThreadPoolExecutor创建ThreadPoolExecutor作为java.util.concurrent包中核心的类,先看下类型的结构:最顶级的接口都是Executor,而ThreadPoolExecutor继承于抽象类AbstractExecutorService,提供以下4个构造函数用于创建:public T...

2016-05-26 14:26:24 10228 7

转载 转:Java并发编程:volatile关键字解析

在对关键字volatile学习了解后,原本打算写个博客总结下的,但是看到这篇文章写的太好;我决定直接转载:《Java并发编程:volatile关键字解析》:http://www.cnblogs.com/dolphin0520/p/3920373.html

2016-02-23 10:46:52 694

原创 一个简单网络爬虫示例

在学生时期,可能听到网络爬虫这个词会觉得很高大上,但是它的简单实现可能学生都不难懂。网络爬虫应用,就是把整个互联网真的就当做一张网,像蜘蛛网那样,应用就像一个虫子,在网上面按照一定的规则爬动。现在互联网应用最广的就是http(s)协议了,本文例子就是基于使用http(s)协议的,只作为示例,不涉及复杂的算法(实际上是最重要的)。设计思路: 程序入口从一个或多个url开始,通过http

2016-02-04 11:17:28 18809 2

原创 写在参加工作后-记录

距离从大学毕业后工作到现在已有半年多时间,这段时间一直都没有更新博客,忙是主要原因,第二感觉工作的内容不是很好写出来。感觉半年多可以在各方面提高很多,忙也是值得的。年终总结时感觉做了很多东西,但是不好写,不知道怎么写,主要还是平时记录的太少,技术相关的还是需要写些技术博客记录。还有几天就要过年了,这两天就比较很空闲,也是需要来更新下自己技术博客了。 恩。。。。闲话不多说。就写这几句好了。

2016-02-04 09:59:01 441

转载 String类、StringBuffer类、StringBuilder类的区别

本文主要介绍String类、StringBuffer类、StringBuilder类的区别  :   一、概述(一)String字符串常量,但是它具有不可变性,就是一旦创建,对它进行的任何修改操作都会创建一个新的字符串对象。(二)StringBuffer字符串可变量,是线程安全的,和StringBuilder类提供的方法完全相同。区别在于

2014-06-13 17:28:07 792

转载 Java中的匿名内部类总结

匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法abstract class Person {      public abstract void eat();  }     

2014-06-13 17:25:28 517

转载 JavaEE的核心技术简介

一. JavaEE的架构二. JavaEE的核心技术简介三. JavaEE平台中的角色四. 当前流行的JavaEE平台五.  JavaEE的应用 一.JavaEE架构:JavaEE的运行环境定义了4种类型的应用组件:l       Applet客户端l       Application客户端l       Web组件l       EJB组件 

2014-06-12 23:28:07 2103

转载 Java JDK1.8新特性

一、lambda含义    lambda表示数学符号“λ”,计算机领域中λ代表“λ演算”,表达了计算机中最基本的概念:“调用”和“置换”。在很多动态语言和C#中都有相应的lambda语法,这类语法都为了简化代码,提高运行效率。二、lambda 项目的背景,参考这里。    无论是面向对象语言还是函数式语言,基本数值都可以被动态的封装入程序动作:面向对象语言通过“

2014-06-12 17:26:08 1498

原创 C# 实现启动欢迎界面的简单方法

第一步: 主程序启动主窗体(这里表示为 form1)如下:    static class Program    {        ///         /// 应用程序的主入口点。        ///         [STAThread]        static void Main()        {            Applicatio

2014-06-10 23:57:20 2231

原创 java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 异常解决

今天在学习hibernate的工程中,使用上投入他刷

2014-04-26 23:57:47 2045

原创 实现多个具有相同方法的接口和父类与实现接口有相同方法

一、实现多个具有相同方法的接口这种情况还是比较少会遇到的,但事实是存在这样的问题,所以写下解决的方法:使用内部类:interface InterA {void f();}interface InterB {void f();}public class C implements InterA {public void f() {// 实现接

2014-04-13 15:34:49 8353

原创 Servlet实现跳转的几点区别(sendRedirect(),getRequestDispatcher().forwar())

response.sendRedirect(r)和request.getRequestDispatcher()

2014-04-12 11:03:18 1376

原创 JavaScript不支持函数重载

在学习JavaScript的过程中发现一个很有趣的问题:初学者刚开始学习的时候觉得Javascript和Java很相近,除了Javascript是弱类型语言外;但是有趣的是Javascript并不支持函数的重载,如果像Java那样写出函数重载Javascript并不会报错,这就是有趣的地方了---不支持但又不算错误。那么对于同名的函数,当调用时只是简单的调用最后一个函数,就像是最后的一个函数把前面

2014-02-27 20:05:41 2799

原创 第一个html+css页面

html和css的学习过程与其他语言的学习有很大的不同。你可以一天看完html和css的语法,但不能一天就能用它们完整完成一个页面。最开始我是通过看书和练习书上的例子来学习,学完一本书后也没啥感觉,因为练习都只是针对几个知识点的,缺少实践。最近我又通过看韩顺平的视频重学,视频学习的好处就是没有那么乏味,较为生动形象,对于练习可以自己先做,再接着看视频讲解。对于最后的一个练习《可爱屋》,不看任何分析

2014-02-25 09:15:46 1300

原创 旅游背包(多维有界的背包问题)

描述:想去旅游吗?那得先准备背包!背包用来装旅游物品,现在共n种(n<=50)旅游物品,每种物品都有体积vi,重量wi,数量ci,价值ti (vi,wi,ci和ti都为整数)。限制体积最多V立方厘米(V<=1000),重量最多W公斤(W<=500)。请问你如何选择物品,使得带上的物品总价值最大,这个最大总价值为多少?比如:物品 体积 重量 数量

2013-11-16 10:58:29 12849 2

原创 最长上升子序列

描述:A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN) be any sequence (ai1, ai2, ..., aiK), where 1 <= i1 < i2 < ... <

2013-11-04 10:58:38 2779

Java语言程序设计-基础篇(原书第8版)原书代码_资料

Java语言程序设计-基础篇(原书第8版)作者官网资料,包含书上原代码,图片,音频等等。

2013-10-10

优先队列实验报告

数据结构,课程设计优先队列实验报告 用最大堆实现的优先队列

2013-03-30

C++代码规范

程序代码不是想怎么写都可以的,要有一定的规范,自己的风格,这个可以参考一下

2013-03-12

c语言趣味程序百例精解

趣味的C语言 有一百例,初学者可以看看,最好自己先想想怎么写

2013-03-12

数据结构复习

数据结构考试复习资料,包括有ppt,word文档

2013-03-11

空空如也

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

TA关注的人

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