- 博客(52)
- 资源 (1)
- 收藏
- 关注
原创 JDK源码阅读-Iterator接口
概述查看Collection接口的定义,发现其继承了Iterable接口,而后者又聚合了一个成员类,即Iterator。因此就先瞅瞅这个接口的定义细节。Iterator,即我们常用的迭代器,取代了老式的Enumeration。能够允许我们在不了解集合序列的底层结构时,轻松遍历并操作序列中的对象。因为创建代价小,因此迭代器也被视为“轻量级”对象。JDK8源码中Iterator接口只包含了4个方法...
2019-01-17 22:13:00
162
转载 文章标题
转载概述所谓bitmap就是用一个bit位来标记某个元素对应的value,而key即是这个元素。由于采用bit为单位来存储数据,因此在可以大大的节省存储空间算法思想32位机器上,一个整形,比如int a;在内存中占32bit,可以用对应的32个bit位来表示十进制的0-31个数,bitmap算法利用这种思想处理大量数据的排序与查询优点: 效率高,不许进行比较和移位占用内存少,比如N=10000
2015-10-04 21:51:45
440
原创 [LeetCode]Contains Duplicate
原题链接questionGiven an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every
2015-10-04 20:21:27
398
原创 [LeetCode] Ugly Number
questionWrite a program to check whether a given number is an ugly number.Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly sin
2015-10-03 23:36:47
342
原创 线性时间排序
比较排序算法的时间复杂度下界We have now introduced several algorithms that can sort n numbers in O(n lg n) time. Merge sort and heapsort achieve this upper bound in the worst case; quicksort achieves it on average.
2015-09-30 22:19:49
330
原创 [LeetCode]171 Excel Sheet Column Number
原题链接QusetionRelated to question Excel Sheet Column TitleGiven a column title as appear in an Excel sheet, return its corresponding column number.For example:A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB
2015-09-27 14:58:28
347
原创 [LeetCode]186 Excel Sheet Column Title
原题链接QuestionGiven a positive integer, return its corresponding column title as appear in an Excel sheet.For example:1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB My Answer功能实现函数char* convertToT
2015-09-27 14:00:21
339
原创 单链表
#include <stdio.h>#include <stdlib.h>//definition for the singly-linked list.struct ListNode{ int val; struct ListNode *next;};//convert an array of integer to a singly-linked list.void bui
2015-09-26 16:02:33
314
原创 [LeetCode]203 Remove Linked List Elements
原题链接QuestionRemove all elements from a linked list of integers that have value val.Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5My Answerstruct ListNode* remov
2015-09-26 15:45:25
323
原创 [LeetCode]237 Delete Node in a Linked List
原题链接QuestionWrite a function to delete a node (except the tail) in a singly linked list, given only access to that node.Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node wit
2015-09-26 14:41:41
596
原创 the heapsort algorithm
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define N 11struct heap{ int arr[N]; int length; int heapSize;};int parent(int i){ // parent node return i>>1;}int left(int
2015-09-25 23:37:51
393
原创 给出一个奇数幻方的解
幻方问题将1,2,…,n的平方个整数填入n*n的棋盘中,是每行每列及两条对角线上的元素之后均相等,满足上述条件的一个安排称为一个n阶幻方。de la Loubere构造奇数阶幻方的方法首先将1放入第一行的中间位置上;若i已填入,则除了以下几种特殊情况外,将i+1填入i所在位置的右边一列的上一行:若i在第一行,则将i+1填入i所在位置的右边一列的底行若i在最后一列,则将i+1填入i的上一行的第一列
2015-09-17 23:30:11
458
原创 计算定积分的值
1、概率算法1设a, b, c和d是实数,且a ≤ b, c ≤ d, f:[a, b] → [c, d]是一个连续函数,写一概率算法计算积分:#include <iostream>#include <stdlib.h>#include <ctime>#include <cmath>#include <iomanip>#define N 100000000using namespace s
2015-09-16 19:58:31
1768
原创 C/C++随机数的生成
1.获取特定实数区间内的随机浮点数给定区间[a, b],其中a, b为实数,通过下述代码可获得该区间内的随机浮点数xsrand((unsigned)time(NULL));x = a + (b-a)*rand()/(RAND_MAX*1.0);待续
2015-09-16 19:03:29
409
原创 用概率法+积分法计算PI的值
设f:[0, 1]->[0, 1]是一个连续函数,则由曲线y=f(x),x轴,y轴和直线x=1围成的面积的积分公式为: 向单位面积的正方形内投镖n次,落入阴影部分的镖的数目为k,则可用面积比来近似求出积分的值。#include <iostream>#include <stdlib.h>#include <ctime>#include <cmath>#include <iomanip>#de
2015-09-16 16:17:12
1845
原创 用概率算法计算PI的近似值
数字概率算法主要用于找到一个数字问题的近似解求解PI的近似解的实验将n根飞镖随机投向一正方形的靶子,计算落入此正方形的内切圆中的飞镖数目k。假定飞镖击中方形靶子任一点的概率相等(用计算机模拟比任一飞镖高手更能保证此假设成立) 则可得出公式 PI=4k/ndouble caculatePI(){ double x=0, y=0; unsigned int k=0; srand
2015-09-15 21:13:16
1364
原创 快速排序的四种方式
main functionint main(){ vector<int> vc; srand((unsigned)time(NULL)); int temp = 0; for(int i=0; i<COUNT; ++i){ temp = MIN + rand()%(MAX+MIN-1); vc.push_back(temp);
2015-09-15 17:52:34
415
原创 Java- 字符串(String,StringBuffer,StringBuilder类)
字符串字符串可以分为两大类 String类 创建之后不会再做修改和变动,即immutableStringBuffer、StringBuilder类 创建之后允许再做更改和变动其中StringBuilder是JDK1.5增加的,它是非线程安全的,即未考虑多个线程同时访问的情况。特别注意 在循环中使用String的+=可能会带来效率的问题public static void main(
2015-09-09 19:51:33
443
原创 Java- 基础类
JDK APIJava基础类库java.langJava语言的核心类,Java自动导入Java.lang.*java.util实用工具java.io标准输入/输出类库java.awt javax.swing图形用户界面(GUI)的类库java.net网络功能的类库java.sql数据库访问的类库 等 注:JDK源代码在jdk目录下的src.zip中Object类object类是
2015-08-31 21:30:57
332
原创 Java- 断言及程序的测试JUnit
断言(assert)断言的格式: assert 表达式;assert 表达式: 信息;在调试程序时,如果表达式不为true,则程序会尝试异常,并输出相关的错误信息。起到对程序的检测的作用。public class Assertion{ public static void main(String[] args) { assert hypotenuse(3, 4)==
2015-08-31 18:27:08
2571
原创 Java- 自定义异常
创建用户自定义异常类创建用户自定义异常时 继承自Exception类或某个子类Exception类定义属性和方法,或重载父类的方法重抛异常及异常链接对于异常,不仅要进行捕获处理,有时候还需要将此异常进一步传递给调用者,以便于调用者也能感受到这种异常。这时可以在catch语句块或finally语句块中采取以下三种方式: 将当前捕获的异常再次抛出 throw e;重新生成一个异常,并抛出
2015-08-31 17:21:42
451
原创 Java- 受检的异常(checked Exception)
受检的异常Exception分为两种 RuntimeException及其子类,可以不明确处理,例如边界异常,解析整型时格式异常。否则,称为受检的异常(checked Exception),更好的保护安全性受检的异常,要求明确进行语法处理要么捕获(catch)要么抛出(throw):在方法的签名后面用throws xxx来声明 在子类中,如果要覆盖父类的一个方法,若父类中的方法声明了th
2015-08-31 16:42:58
906
原创 Java- 异常的抛出与捕获
异常的基本概念异常(exception)又称为例外、差错、违例对应着Java运行错误处理机制基本写法: try{ ... }catch(Exception ex){ 异常处理语句组 }import java.io.*;public class ExceptionForNum { public static void main(
2015-08-31 16:17:33
531
原创 没有指针的Java语言
引用与指针引用(reference)实质就是指针(pointer)但它是受控的,安全的,如 会检查空指针没有指针运算: *(p+5),因为很容易造成内存的错误访问不能访问没有引用到的内存自动回收垃圾C语言指针在Java中的体现C: 传地址 -> Java: 对象 引用类型,引用本身就相当于指针 可以用来修改对象的属性、调用对象的方法基本类型:没用对应的应用 如交换两个整数,不
2015-08-30 19:06:40
906
原创 Java- 装箱、枚举、注解
基本类型的包装类基本类型的包装类 它将基本类型(primitive type)包装成引用类型(Object)如:int -> Integer共8类:Boolean,Byte,Short,Character,Integer,Long,Float,DoubleInteger i = new Integer(10);装箱与拆箱装箱(Boxing): Integer I = 10;拆箱(Un
2015-08-26 15:27:44
348
原创 Java- Lambda表达式
Lambda表达式(λ expression)Lambda表达式(Java 8)的基本写法:(param) -> result,其中参数可以是()或一个参数以上,结果是指 表达式 或 语句 或 {语句 }如: (string s) -> s.lengthx -> x*x() -> { System.out.println("aa); }大体上相当于其他语言的”匿名函数“或”函数指针”在J
2015-08-24 23:14:50
283
原创 Java- 内部类与匿名类
内部类、局部类与匿名类内部类(inner class)是在其他类中的类局部类(local class)是在方法中的类匿名类(anonymous class)是一种特殊的内部类,其没有类名。1、内部类内部类的定义 将类的定义classc XXX{...}置入一个类内部即可编译器生成XXX$XXX这样的.class文件内部类不能够与外部类同名内部类的使用 在封装它的类的内部使用内部类
2015-08-24 19:22:47
500
原创 Java- 对象清楚与垃圾回收
对象的自动清除也叫垃圾回收(garbage collection)对象回收是由Java虚拟机的垃圾回收线程来完成的。系统如何判断一个对象是否为垃圾? 任何对象都有一个引用计数器,当其值为0时,说明该对象可以回收。System.gc()方法它是System类的static方法它可以要求系统进行垃圾回收,但仅仅只是“建议”,即不能强制系统进行垃圾回收。finalize()方法Java中
2015-08-22 20:48:47
772
原创 Java- 构造方法的执行顺序
构造方法的执行过程构造方法的执行过程遵循以下步骤: 调用本类或父类的构造方法,直至最高一层(Object)按照声明顺序执行字段的初始化赋值执行构造函数的各语句简单的说: 先父类构造,再本类成员赋值,最后执行构造方法中的语句。class ConstructSequence { public static void main(String[] args){ Pe
2015-08-22 19:58:21
525
原创 Java- 对象构造与初始化
对象构造构造方法的基本概念(constructor)每个对象都有构造方法。抽象类虽然不能实例化对象,但也有构造方法。if not, 编译器加一个default构造方法。调用本类或父类的构造方法调用本类或父类的构造方法 this调用本类的其他构造方法super调用直接父类的构造方法this或super要放在第一条语句,且只能够有一条如果没有this及super,则编译器自动加上supe
2015-08-22 19:02:34
654
原创 Java- 多态和虚方法调用
多态(polymorphism)多态的概念多态是指一个程序中相同的名字表示不同的含义的情况。多态有两种情形: 编译时多态: 重载(overload)多个同名的不同方法如:p.sayHello(); p.sayHello("wang");运行时多态: 覆盖(override)子类对父类方法进行覆盖动态绑定(dynamic binding)—-也成为虚方法调用(virtual metho
2015-08-22 18:10:06
3454
1
原创 Java- 接口(interface)
接口(interface)接口:某种特征的约定,不负责实现 定义接口:interface 接口中所有方法都自动是public abstract 实现接口:implements可是实现多继承,可以被不同的类所实现与类的继承关系无关,即不考虑类的层次关系。只要考虑满足某种特征,就可以用具体的接口。面向接口编程,而不是面向实现 Flayable f = new Brid();所以,也可说接
2015-08-20 20:55:23
382
原创 Java变量及其传递
基本变量类型与引用型变量基本类型变量(primitive type):其值直接存放在变量中。引用型(reference type)的变量除占据一定的内存空间外,它所引用的对象实体(由new创建)也要占据一定空间。字段变量与局部变量字段变量(field)与局部变量(Local variable) 前者在类中,后者是方法中定义的变量或方法的参变量。从内存角度看 存储位置,字段变量是对象的一
2015-08-20 18:33:33
1067
原创 Java的非访问控制符:static,final,abstract
非访问控制符 非访问控制符 基本含义 修饰类 修饰成员 修饰局部变量 static 静态的、非实例的(本质)、类的 可以修饰内部类 Yes final 最终的、不可改变的 Yes Yes Yes abstract 抽像的,不可实例的 Yes(修饰抽象的方法) Yes 控制符:staticstatic字段静态字段最本质
2015-08-19 15:37:54
2832
原创 Java访问控制符:public,private,protected
修饰符(modifiers)分成两类 访问修饰符(acess modifiers),如:public,private等其他修饰符,如:abstract等可以修饰类,也可以修饰类的成员(字段,方法)成员的访问控制符(权限修饰符)类的访问控制符类的访问控制符或者为public,或者为空,即默认若使用public修饰,则该类可以被其他类所访问若使用默认访问控制符,则该类只能被同包中的类访问
2015-08-19 15:17:02
1100
原创 Java的package和import
packagepackage pkg1[.pkg2[,pkg3…]];包及子包的定义,实际上是为了解决名字空间、名字冲突的问题 与类的继承没有关系。事实上,一个子类与其父类可以位于不同的包中。包有两方面的含义 一是名字空间,存储路径(文件夹);二是可访问性(同一个包中的各个类,默认情况下可相互访问)一个类若没有显示的注明权限修饰词,则默认为包访问权限。package语句Java文件至
2015-08-19 00:51:42
572
原创 类继承中super的使用
使用super访问父类的域和方法正是由于继承,使用this可以访问父类的域和方法,但有时为了明确地指明父类的域和方法,就要用关键字super。 例如:父类Person中一个字段age,在子类Student中使用age, this.age, super.age来访问age是完全一样的。当然,不能使用super访问子类中的添加的域和方法。有时需要使用super以区别同名的域和方法使用super可以
2015-08-19 00:00:48
3033
原创 类的继承
继承的概念继承(inheritance)是面向对象的程序设计中最为重要的特征之一 子类(subclass),父类或超类(superclass) 父类包括所有直接继承和简介继承的类Java支持单继承:一个类只能有一个直接父类继承的好处子类继承父类的状态和行为 可以修改父类的状态或重载父类的行为可以添加新的状态和方法。好处 可以提高程序的抽象程度实现代码复用,提高开发效率和可维护性
2015-08-18 22:51:18
562
原创 类、字段和方法
类类是java程序最基本的要素是一类对象的原型它封装了一类对象的状态和方法使用对象访问对象的字段或方法,需要使用算符”.”, 好处: 封装性安全性:由于只能通过引用来访问的,不会破坏内存 字段和方法public class Person{ private String name; private int age; public void sayHello(){
2015-08-18 21:41:39
793
原创 数组
数值的定义和使用数组概述数组是多个相同类型数据的组合一维数组的声明方式:int[] a;方括号写到变量名的前面,也可以写到后面。一维数组声明Java语言中声明数组时不能指定其长度(即数组中元素的个数),例如:int[4] a; //非法根本原因是因为:数组是引用类型 int[] a = new int[5];这里的a只是一个引用,指向一个堆空间 数组初始化静态初始化: 在定义
2015-08-18 20:36:30
302
精通Spring4.x企业应用开发实战
2018-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人