自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

C.W.WANG的博客

我的Java学习笔记

  • 博客(30)
  • 资源 (5)
  • 收藏
  • 关注

原创 Head-First-Design-Pattern-学习笔记

title: Head First Design Pattern - 学习笔记 date: 2018-05-04 11:21:01 categories: - 设计模式 tags: - 学习笔记 - Head First Design Pattern工厂模式分类简单工厂模式(Simple Factory)工厂方法模式(Factor...

2018-05-11 09:44:08 409

原创 TomCat与Servlet入门指南

TomCat下载安装这是TomCat下载地址,选择你需要的版本安装。我的是windows版,解压到任意位置即可(路径名尽量不要有中文)。其中第4步CATALINA_HOME设置为解压路径。完成后一直点击确定,就能保存配置信息。 然后在任意位置打开命令行(windows系统下),输入startup 打开浏览器,输入http://localhost:8080/,你会看到...

2018-05-07 18:10:21 275

原创 Thinking in Java - 学习笔记 - (二十)注解

Java编程思想 - 第二十章 - 注解注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。基本语法@Target用来定义注解将用于什么地方(例如一个方法或者一个域)。@Rectetion定义该注解在哪一个级别可用,在源代码中(SOURCE)、类文件中(CLASS)或者运行时(RUNTIME)。注解处理器利...

2018-05-04 09:53:16 198

原创 Thinking in Java - 学习笔记 - (二十一)并发

并发的多面性使用并发时需要解决的问题有多个,而实现并发的方式也有多种,并且在这两者之间没有明显的映射关系。 用并发解决的问题大体上可以分为“速度”和“设计可管理性 两种。并发通常是提高运行在单处理器上的程序的性能。这听起来有些违背直觉。在单处理器上运行的并发程序会增加上下文切换的代价。但阻塞使这个问题不同。 程序中的某个任务因为该程序控制范围之外的某些条件(通常是I/O)而...

2018-05-03 22:05:30 200

原创 Thinking in Java - 学习笔记 - (二十)注解

Java编程思想 - 第二十章 - 注解注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。基本语法@Target用来定义注解将用于什么地方(例如一个方法或者一个域)。@Rectetion定义该注解在哪一个级别可用,在源代码中(SOURCE)、类文件中(CLASS)或者运行时(RUNTIME)。注解处理器利...

2018-05-02 10:01:40 222

原创 Thinking in Java - 学习笔记 - (十八)Java I/O系统

Java编程思想 - 第十八章 - Java I/O系统File类它既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。输入和输出Java类库中的I/O类分成输入和输出两部分。nio速度的提高来自于所使用的结构更接近于操作系统执行I/O的方式:通道和缓冲器。对象序列化Java的对象序列化将那些实现了Serializable接口的对象转换成一个字节序列,并...

2018-04-29 11:27:33 226

原创 Thinking in Java - 学习笔记 - (十六)数组

Java编程思想 - 第十六章 - 数组数组与其他各类的容器之间的区别有三方面:效率、类型和保存基本类型的能力。在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。但是为这种速度所付出的代价是数组对象的大小被固定,并且在其生命周期中不可改变。通常,数组与泛型不能很好地结合。不能实体化具有参数化类型的数组 Peel<Banana>[] peels =...

2018-04-29 10:37:05 201

原创 Thinking in Java - 学习笔记 - (十五)泛型

Java编程思想 - 第十五章 - 泛型泛型实现了参数化类型的概念。“泛型”这个术语的意思是:“适用于许多许多的类型”。泛型方法无论何时,只要你能做到,你就应该尽量使用泛型方法。也就是说,如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法,因为它可以使事情更清楚明白。另外,对于一个static的方法而言,无法访问泛型类的类型参数,所以,如果static方法需要使用泛型能力...

2018-04-29 10:14:23 170

原创 Thinking in Java - 学习笔记 - (十四)类型信息

Java编程思想 - 第十四章 - 类型信息运行时类型信息(RTTI)使得你可以在程序运行时发现和使用类型信息。它使你从只能在编译期执行面向类型的操作的禁锢中解脱了出来,并且可以使用某些非常强大的程序。 Java让我们在运行时识别对象和类的信息的方式:“传统的”RTTI,假定我们在编译时已经知道了所有的类型;“反射”机制,允许我们在运行时发现和使用类的信息。为什么需要RTT...

2018-04-27 11:07:27 250

原创 Thinking in Java - 学习笔记 - (十三)字符串

Java编程思想 - 第十三章 - 字符串可以证明,字符串是计算机程序设计中最常见的行为。不可变StringString对象是不可变的。String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。重载“+”与StringBuilder不可变性会带来一定的效率问题。为String对象重载的“操作符”就是一个例子。...

2018-04-25 11:13:59 179

原创 Thinking in Java - 学习笔记 - (十二)通过异常处理错误

Java编程思想 - 第十二章 - 通过异常处理错误Java的基本理念是结构不佳的代码不能运行。发现错误的理想时机是在编译阶段。有的错误必须在运行期间解决。 改进的错误恢复机制是提供代码健壮性的最强有力的方式。使用异常往往能够降低错误处理代码的复杂度。把“描述在正常执行过程中做什么事”的代码和”出了问题怎么办”的代码相分离。基本异常异常情形(exceptional con...

2018-04-23 11:47:54 216

原创 Thinking in Java - 学习笔记 - (十一)持有对象

Java编程思想 - 第十一章 - 持有对象如果一个程序只包含固定糖耐量的且其生命期都是书籍的对象,那么这是一个非常简单的程序。通常,程序问题根据运行时才知道的某些条件支创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。数组是保存一组对象的最有效的方式,但是数组具有固定的尺寸,而在更一般的情况中,你在写程序时并不知道将需要多少个对象,或者是否需要更复杂的方式来存储对象...

2018-04-22 11:22:17 193

原创 Thinking in Java - 学习笔记 - (十)内部类

Java编程思想 - 第十章 - 内部类可以将一个类的定义放在另一个类的内部,这就是内部类。内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。然而,内部类与组合是完全不同的概念。链接到外部类当生成一个内部类的对象时,与制造它的外围对象(enclosing object)之间就有了一种联系,所以它能访问其外围对象的所有成员,而不需要任何...

2018-04-22 09:53:27 286

原创 Thinking in Java - 学习笔记 - (九)接口

Java编程思想 - 第九章 - 接口接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。抽象类和抽象方法Java提供一个叫做抽象方法(相当于C++的纯虚函数)的机制,这种方法是不完整的;仅有声明而没有方法体。 abstract void f();包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。(否则,编译器就会报错)...

2018-04-20 11:00:00 270

原创 Thinking in Java - 学习笔记 - (八)多态

Java编程思想 - 第八章 - 多态在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。多态不但能够改善代码的组织结构和可读性,还能创建可扩展的程序——即无论在项目最初创建时还是在需要添加新功能时都可以“生长”的程序。“封装”通过合并特征和行为来创建新的数据类型。“实现隐藏”则通过将细节“私有化”把接...

2018-04-18 11:37:16 238

原创 leetcode心得 - 动态规划篇

动态规划(dynamic programming)word-break题目描述 Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. ...

2018-04-18 08:40:07 642

原创 Thinking in Java - 学习笔记 - (七)复用类

Java编程思想 - 第七章 - 复用类复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情。方法一,组合:在新的类中产生现有类的对象;方法二,继承:采用现有类的形式并在其中添加新代码。继承继承并不只是复制基类的接口。当创建了一个导出类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类...

2018-04-16 11:11:33 170

原创 Thinking in Java - 学习笔记 - (六)访问权限控制

Java编程思想 - 第六章 - 访问权限控制访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关。面向对象设计中需要考虑的基本问题:“如何把变动的事物与保持不变的事物区分开来”。这对类库(library)而言尤为重要。为了解决这一问题,Java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问控制的等级,从最大到最小权限依次为:public、...

2018-04-15 11:50:22 268

原创 排序算法

排序算法 - Java实现快速排序最经典实现,worst case为O(n2)O(n2)O(n^2)。但随机化后最坏情况也能达到O(nlog(n))O(nlog⁡(n))O(n\log(n))。 在这里提一下二叉搜索树(BST),它与快速排序有着民曲同工之妙。 比如:对6,10,13,5,8,3,2进行排序 快排,以6为key,小于6的放到左边,其他放到右边 6 ...

2018-04-14 22:37:00 133

原创 Thinking in Java - 学习笔记 - (五)初始化与清理

Java编程思想 - 第五章 - 初始化与清理涉及基本类型的重载如何重载:常数值被当作int值处理。如果传入的实际参数类型小于方法中声明的形式参数类型,实际数据类型就会被提升。如果无法找到恰好接受char参数的方法,就会把char超脱提升至int型。如果传入的实际参数大于重载方法声明的形式参数,就要通过类型转换来执行窄化转换。为什么不以返回值区分重载方法有时并不...

2018-04-14 11:36:45 250

原创 Thinking in Java - 学习笔记 - (三)操作符

Java编程思想 - 第三章 - 操作符 在最底层,Java中的数据是通过使用操作符来操作的。==与equals()==和!=比较的是对象的引用。对象的内容的比较用equals()方法,但是equals()的默认行为是比较引用,可以通过覆盖(override)改变其行为。移位操作符左移位操作符(<<):按照操作符右侧指定的位数将打伤符左边的操作数向左移动(...

2018-04-13 09:26:57 184

原创 Thinking in Java - 学习笔记 - (二)一切都是对象

Java 编程思想 - 第二章 - 一切都是对象 尽管Java是基于C++的,但是相比之下,Java是一种更纯粹”的面向对象程序设计语言。用引用操纵对象尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用”(reference)。 可以将这一情形相像成用遥控器(引用)来操纵电视机(对象)。一个引用并不一定需要有一个对象与它关联。 即使没有电视机,遥控器...

2018-04-12 17:03:19 246

原创 二叉树的层序遍历 - 非递归版Java实现

二叉树的层序遍历二叉树的先序遍历 | 二叉树的中序遍历 | 二叉树的后序遍历 基于队列(Queue)实现的自上而下、从左到右按层遍历二叉树 记录每一层节点的个数n,并出栈n次,这样就可以遍历完一层。 public ArrayList<Integer> levelTraversal(TreeNode root) { if (root == ...

2018-04-12 15:19:10 507

原创 二叉树的中序遍历 - 非递归版Java实现

二叉树的中序遍历二叉树的先序遍历 | 二叉树的后序遍历 | 二叉树的层序遍历 cur == null 说明没有左子树(叶子节点)或者左子树已经完成遍历,可以开始遍历右子树了。 在我的另一篇文章《二叉树的后序遍历》所给出的版本二中有类似的用法。 public ArrayList<Integer> inorderTraversal(TreeNode root) {...

2018-04-12 14:40:48 541

原创 Thinking in Java - 学习笔记 - (一)对象导论

面向对象程序设计方式万物皆为对象程序是对象的集合,它们通过发送消息来告知彼此所要做的每个对象者有自己的由其他对象所构成的存储每个对象都拥有其类型某一特定类型的所有对象都可以接收同样的消息 Booch 对对象提出了一个更加简洁的描述:对象具有状态、行为和标识。隐藏实现细节访问控制让客户端程序员无法触及他们不应该触及的部分。允许库设计者可以改变类内部的...

2018-04-11 17:10:59 251

原创 二叉树的先序遍历 - 非递归版java实现

二叉树的先序遍历二叉树的中序遍历 | 二叉树的后序遍历 | 二叉树的层序遍历 先对root根节点入栈,然后根节点出栈,将根节点的右儿子先入栈,再将根节点的左儿子入栈。import java.util.ArrayList;import java.util.Stack;public class Solution { public ArrayList<Integer&...

2018-04-11 15:42:46 396

转载 二叉树的后序遍历 - 非递归版java实现

二叉树的后序遍历二叉树的先序遍历 | 二叉树的中序遍历 | 二叉树的层序遍历 主要思想:首先遍历root根节点的所有左节点,并依次入栈。对出栈的元素,如果没有右儿子或者虽然有右儿子但右儿子已完成遍历,即可完成出栈;否则,再次入栈,并把右儿子入栈,遍历右儿子的所有左儿子。版本一import java.util.ArrayList;import java.util.Sta...

2018-04-11 14:51:20 4963

原创 Java学习笔记-数据结构-ArrayList

ArrayList实现List接口的可重置大小的数组。构造函数public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}看一下涉及到的成员变量 transient 关键字先不去管它,我们看到,调用ArrayList的无参构造方法时,实际是把一个空的Object数组赋给了e...

2018-04-10 15:33:31 393

原创 Java学习笔记-数据结构

一、 List一个有序的collection,可据下标获取对应元素。允许出现重复元素e1.equals(e2),如果需要还可以允许出现多个null值。二、Set如同set的数学定义,不允许出现重复元素。三、 ArrayList实现List接口的可变大小数组。扩容时默认1.5倍。与Vector基本一样,只是unsynchronized,若不必线程安全,推荐使用ArrayLis...

2018-04-08 22:10:18 143

原创 Java学习笔记-基础

一、 面向对象的特征抽象,封装,继承(允许多层继承,存在单继承局限),多态。二、 int 与 Integer 的区别Integer是int的包装类,int则是java的一种基本数据类型 Integer变量必须实例化后才能使用,而int变量不需要 Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 Intege...

2018-04-08 21:57:42 232

四边形风格扫描转化与交互式编辑

四边形网格交互式编辑:实现四边形扫描转化算法,以此为基础,实现四边形网格中所有四边形的扫描转化、颜色添充;并可通过交互改变四边形顶点位置。

2018-04-15

ICS_PART_TWO

INTRODUCTION TO COMPUTER SYSTEM. HOMEWORK, LAB, MID-EXAM,

2016-12-25

数据结构与算法分析JAVA_LAB06

数据结构与算法分析JAVA_LAB06,BLOOM FILTER 实现

2016-11-23

QUICKSORT_LAB

数据结构与算法分析LAB_05

2016-11-12

HUFFMAN_COMPRESSION

数据结构与算法分析PROJECT_01代码

2016-11-12

空空如也

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

TA关注的人

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