- 博客(29)
- 资源 (10)
- 收藏
- 关注
原创 Java中Map的遍历方式
Java中Map的遍历方式总结!!!import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class MapIterator { public static void main(String[] args) { Map map = new HashMap(); map.pu
2016-03-31 21:34:16 387
原创 Java中的String、StringBuffer和StringBuilder区别
Java中关于字符串的类有String、StringBuffer和StringBuilder,然而三者到底有什么区别呢?String:字符串常量。也就是说String是不可变的对象,因此每次对String类型的对象进行更改操作时,实际上是生成了新的String对象,然后修改指针指向新的String对象。因此可以发现,如果经常要改变字符串内容,用String就会造成内存中大量无引用的对象
2016-03-31 14:57:05 916
原创 金额转换
题意描述:将阿拉伯数字的金额转换成中国文字描述的金额,如(¥1011 )-> (一千零一拾一元)输出解题思路:“0-9”阿拉伯数字对应的中文文字分别为“'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'”;中文描述金额时会有单位描述,如个位后面带“元”、十位后面带“拾”等等,并且有这样一个规律:个、十、百、千、万、十万、百万、千万、亿,所以分...
2016-03-29 21:59:11 500
原创 C/C++中指针、引用、数组、链表的区别
指针与数组可以替换使用,容易让人产生错觉二者是等价的,那么二者到底有什么区别呢?数组:在静态存储区被创建或者在栈上被创建,数组名对应着一块内存(而不是指向),其地址与容量在生命期内保持不变,且数组的内容可以改变;指针:可以随时指向任意类型的内存块,“可变”,所以指针更加灵活但也更加危险数组:用标准库函数strcpy进行复制,而不能使用b=a直接复制这将产生编译错误指针:
2016-03-28 22:01:27 1671
原创 C++中const与#define的区别
先上一个典型程序:#includeusing namespace std;int main(){ int num = 1; #define t1 num + num #define t2 t1 % t1 cout << "t2 is " << t2 << endl; // t2 is 2 const int s1 = num + num; const int s2 =
2016-03-28 21:43:13 2096 1
原创 二叉树的建立及层次遍历及前中后序遍历递归与非递归的实现
该例主要展示Java实现二叉树,并实现二叉树的先序、中序和后序遍历public class Node { private int value; private Node left; private Node right; public Node(int value){ this.value = value; } public void insert(int value
2016-03-25 20:53:06 588
原创 求两个升序数组中最小元素差
题意描述:有两个升序的数组A,B 求|A[i]-B[j]|的最小值解题思路:首先想到的是暴力解法,即内外双循环,逐一拿数组中的两元素作差,取最小的min,但这样做的时间复杂度达到了O(m*n)。所以想优化解法,先上代码再解析吧:int GetMinArraySubtraction(int A[], int lenA, int B[], int lenB) { if (lenA == 0
2016-03-24 16:51:34 2284 1
原创 截取字符串
题目要求:编写一个截取字符串的程序,输入为一个字符串和一个字节数字,输出为按字节截取的字符串,保证汉字不被截取半个,如eg:“我ABC”,4 => 截取“我AB”eg:“我ABC汉DEF”,6 => 截取“我ABC”,而不是“我ABC”+“汉”的半个解题思路:那么截取字符串时考虑当前字符是否为汉字的一部分,如果不是汉字则计数字节数直接+1;如果是汉字的一部分,为前半部分时计数字节数不加,如果
2016-03-22 16:37:19 831
原创 LeetCode --- ExcelSheetColumnTitle 、ExcelSheetColumnNumber解题分析
题目描述:Excel表的每一列都是字母,问将其列字母转换成数字比如何转换,将数字兑换成列又如何转换。形式如下:1A2B3C……26Z27AA28AB……解题思路:该题目就是找到数字与字母之间的转换关系。对于给定的数字,1~26为A~Z、27~52为AA~AZ、然后是BA~BZ……所以确定两点:(1)计算时如果数字模26,则26个就对应0,所以应为n%25+1;(2)高位的
2016-03-21 15:51:50 420
原创 文件的复制
题目描述:程序实现将srcDir目录下的所有“.java”结尾的文件复制到desDir目录下,并将后缀名改为“.txt”解题描述:其基本思想就是读srcDir目录下的文件,写到desDir目录下面;同时在读前对文件进行过滤,只读“.java”结尾的文件,写之前将文件目录名的后缀改为“.txt”public class CopyFile { private static void cop
2016-03-21 15:27:38 454
原创 合并内容格式不同的两个文件
题目描述:将文件a.txt中的单词与文件b.txt中的单词交替合并到文件c.txt中,a.txt中的单词用回车符分隔,b.txt中的单词用回车符或者空格分隔思路分析:由于题目明确说明了文件a.txt与文件b.txt的分隔符有所不同,所以考虑新建一个文件类,该类描述文件,属性有单词、分隔符;然后在再建立一个合并文件的类,该类进行交替读写文件操作文件描述类:public class Fil
2016-03-21 10:55:07 1815
原创 “==”与equals方法区别的深入分析
在正式开始之前,先来看一个有趣的程序吧:int a = 100, b = 100;System.out.println(a == b);//(1) trueint c = 1000, d = 1000;System.out.println(c == d);//(2) trueInteger e = 100, f = 100;System.out.println(e == f); //
2016-03-18 11:46:05 465
原创 Java中Vector、ArrayList、LinkedList的区别
List能够用于存放多个元素,维护元素的次序,并且允许元素重复(这一点区别于Set)。在Java中List接口有三个实现类,分别是ArrayList、Vector和LinkedList。3个具体实现类的区别如下:ArrayList:最常用的List实现类,内部是通过数组形式实现的。具有数组形式存储的优缺点:可以对元素进行快速的随机访问,但如果当前存储空间不满足时就要申请新的存储空间并进行复制、
2016-03-16 15:35:54 685
原创 Java中Map接口HashMap与HashTable的区别及HashMap深入理解
HashMap和HashTable都完成了Map接口,实际上HashMap是HashTable轻量级实现(非线程安全的实现),对比于ArrayList和Vector的区别:HashMap和ArrayList都是线程不同步的,即多线程不安全的,但只有一个线程访问时效率相比于另一个要高;HashTable和Vector都是线程同步的,即多线程安全,但相比于上面两个访问效率较低。Ha
2016-03-16 15:29:22 15469 2
原创 Java中synchronized与java.util.concurrent.locks.Lock区别
相同点:Lock能完成synchronized所实现的所有功能区别:Lock比synchronized更精确的线程语义和性能;chronized会自动释放锁,而Lock需要程序员手动释放,而且必须在finally从句中释放。Lock更强大的功能,如tryLock方法可以非阻塞方式去拿锁:import java.util.concurrent.locks.Lock;import java.
2016-03-16 11:54:05 1863
原创 Java中sleep()与wait()区别
学习时正好碰到这两个方法,就查阅相关资料,并通过程序实现,进行区别一下:sleep():正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行。注意:sleep方法只让出了CPU,而并不会释放同步资源锁!!!wait():则是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了noti
2016-03-16 11:15:13 67063 13
原创 Java中的异常及其处理机制
异常:指Java程序运行时所发生的非正常情况或错误。我们都知道Java是一种OOP程序设计语言,程序中把现实抽象成一个个的对象来处理,而同理对于异常,所有异常的根类为Java.lang.Throwable。Java对异常也进行了分类,Throwable下面派生了两个子类:Error和Exception:Error表示应用程序本身无法克服或者恢复的严重问题、程序自己不能处理,如内存溢出、线程
2016-03-16 09:15:48 490
原创 try...catch...finally块嵌入return
不论C++还是Java中,try...catch...finally语句块都是用来控制程序异常的处理,而finally块是最后一定执行的,那么现在在try...catch...块中加入了return语句,finally仍会执行吗?public class Try_Return_Final { int test(){ int x = 1; try{ return x; }f
2016-03-15 10:36:27 427
原创 super.getClass()方法调用
用Java写程序时,有时我们想得到当前类的名称,而有时候我们又想得到当前类的父类的名称。我们知道得到当前类的名称可以直接调用getClass().gtName()即可,但思考如下程序:import java.util.Date;public class Super_getClass extends Date{ public void test(){ System.out.print
2016-03-15 08:59:47 2669
原创 Java中的continue、break和return
一、continue结束本次循环,进入下次循环for(int i=0; i<5; i++){ for(int j=0; j<5; j++){ if(j == 3) continue; System.out.print("(" + i + "," + j +")"); } System.out.println();}二、break1、break终止本次循环
2016-03-13 14:10:49 473
原创 Java中的&与&&运算符
首先我们都知道,C/C++中“&”有两个作用,一个是取地址,另一个是位操作中的与运算符,当然C++中还有引用的意思;而“&&”是与运算的意思。同理在Java中,“&”和“&&”都可以用作逻辑与的运算符,表示逻辑与(and) ,当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。“&&”还具有短路的功能,即如果第一个
2016-03-13 13:08:12 16697
原创 LeetCode --- Valid Anagram解题分析
题目描述:给定两个字符串,判断是否是字谜游戏。比如: s = "anagram", t = "nagaram", return true.s = "rat", t = "car", return false. 解题思路一:只要字符串中所有字母出现次数相同即可判定是字谜游戏,所以统计两字符串各字符出现的次数,如果都相同则返回true,否则返回false:bool isAna...
2016-03-09 20:41:40 862
原创 Python安装第三方库PIL时失败的解决办法
Python中,安装第三方模块,是通过setuptools这个工具完成的。Python有两个封装了setuptools的包管理工具:easy_install和pip。目前官方推荐使用pip。安装一个第三方库——Python Imaging Library,这是Python下非常强大的处理图像的工具库。一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一
2016-03-08 17:26:05 11212 1
转载 传统数据库的运行过程
以查询为例解析传统数据库的运行原理(参考文献):SELECT a1,a2,a3 FROM tableA Where condition 可以看得出来,该语句是由Projection(a1,a2,a3)、Data Source(tableA)、Filter(condition)组成,分别对应sql查询过程中的Result、Data Source、Operation,也就是说SQL语
2016-03-08 10:47:07 1493
原创 LeetCode --- RomanToInteger、IntegerToRoman解题分析
题目描述:罗马数字转阿拉伯数字,阿拉伯数字转罗马数字,数字的范围是1~3999。拿到这个题目,首先得明白罗马数字的书写形式及与数字的照关系,如下图所示:所以,对于罗马数字转阿拉伯数字,可以借用map表中的对的格式进行处理public class Solution { public int romanToInt(String s) { char[] sym
2016-03-07 14:42:38 515
原创 内部排序算法总结
/*** 对排序算法的整理* 1、插入排序:* (1)直接插入排序* (2)折半插入排序* (3)希尔排序* 2、交换排序:* (1)冒泡排序* (2)快速排序* 3、选择排序:* (1)简单选择排序* (2)堆排序* 4、归并排序和基数排序*/本文中的算法实现都对以下序列排序:int[] a = {3,1,5,7,...
2016-03-03 22:19:36 1050
原创 Java虚拟机的内存区域
最近复习Java知识,记录一下程序运行时Java程序中存储数据的5地方,通过对对象的放置、内存的分配进一步理解程序的运行:1)寄存器:最快的存储区,位置处理器内部,但其数量极其有限,所以寄存器应该根据需要进行分配。不能直接控制,也不会在程序中感觉到寄存器的存在,(C和C++中允许程序员向编译器建议寄存器的分配方式);2)堆栈:位于通用RAM(随机访问存储器)中,对象引用存储于堆栈中。通过堆
2016-03-03 10:13:07 475
原创 哈希表的问题总结
一、哈希表哈希表,也称散列表,英文名称Hash Table。是根据关键码值(Key value)而直接进行访问的数据结构,也就是说通过把关键码值映射到表中一个位置来访问记录以便加快查找的速度。这个映射的函数叫做散列函数,存放记录的数组叫做散列表。可以定义为:给定表Table,存在函数F(key),对任意给定的关键字key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表Table为
2016-03-02 22:05:27 2756
原创 计算机系统中的编码问题
一、目前常用的编码因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。由于计算机是
2016-03-01 17:21:46 2451 1
中国计算机学会推荐国际刊物会议列表(数据库数据挖掘与内容检索)
2016-06-20
GroupLens_MovieLens数据集
2016-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人