自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 100亿个数中寻找中位数

题目:在一个大文件中有100亿个32位整数,乱序排列,要求找出中位数;内存限制为512M;请写出算法设计思路;基本分析:(1)中位数的定义:一个给定排序好的序列,奇数个的话,我们就取中间的一个;偶数个的话,我们一般取中间两个数的平均值;因此对于本题,我们需得到中间的第50亿和第50亿+1这两个数;(2)首先512M的内存,如果都来装这个32位整数的话,可以存储2^(9+10

2015-10-17 16:56:05 7166

原创 两种方式实现数组中负数在左,正数在右

一、实现原理是:两个变量,一个用来记录当前的遍历点,一个用来记录最左边的负数在数组中的索引值。然后遍历整个数组,遇到负数将其与负数后面的数进行交换。遍历结束,即可实现负数在左,正数在右。此种实现原理和实现都较为简单。

2015-10-08 19:45:07 3033

转载 数据库并发引起的问题

数据库事务并发带来的问题有:更新丢失、脏读、不可重复读、幻象读。我们利用张三的银行卡来说明,假设张三的余额有100元。1、更新丢失:一个事务的更新覆盖了另一个事务的更新。事务A:向银行卡存钱100元。事务B:向银行卡存钱200元。A和B同时读到银行卡的余额,分别更新余额,后提交的事务B覆盖了事务A的更新。更新丢失本质上是写操作的冲突,解决办法是一个一个地写。2、脏读:一个事

2015-09-26 10:50:19 995

转载 Java笔试题

都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~~~当复习期末考吧。花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题~~~ 下面都是我自己的答案非官方,仅供

2015-09-23 11:11:02 10211

转载 Java常见面试题

1)transient和volatile是java关键字吗?(瞬联)如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:class T{         transient int a;  //不需要维持      int b;  //需要维持}  这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保

2015-09-23 11:06:11 539

转载 HTTP请求的基本过程

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根

2015-09-23 10:54:31 869

原创 二分查找的实现

import java.util.*;/** * 二分查找 * 如果有重复的数字则返回该数字在数组中出现的第一次位置 * @author Administrator * */public class BinarySearch { public int getPos(int[] A, int n, int val) { // write code here

2015-09-20 18:53:13 511

原创 Java实现线性存储的二叉树

/** * 线性存储的二叉树 * * @author Administrator * */public class LinearBinaryTree { //用来存储数据的数组 private Object[] datas; //定义默认的树的深度 private int DEFAULT_DEEP=8; //保存树的深度 private int deep; privat

2015-09-17 21:01:01 488

原创 判断两棵二叉树是否相等

题目描述:给定两棵二叉树,写一个函数来检查他们是否相等。注:两棵二叉树相等的定义是:他们的结构相同,而且相应位置上节点的值也想等。class Node(){ int val; Node right; Node left; Node (int val){ this.val=val; }}public class Solution { public boolean i

2015-09-16 15:16:31 1490

原创 Java整数转换成字符

Java中提供了三种整数转换成字符串的方式,大家都很熟悉:1.  String s = String.valueOf(i);         2.  String s = Integer.toString(i);         3.  String s = "" + i; 注:Double, Float, Long 转成字串的方法大同小异。然而自己实现呢?其实也很简单,我

2015-09-16 10:46:19 8491

原创 客户端与服务器的数据表的同步问题

图片来源参见水印。文章参考http://a52071453.iteye.com/blog/1978498。美团二面中面试官问了这样的一个问题,在传输有限的情况下,如何保证多个客户端与服务器保持的数据表的一致性?其实解决的方法很简单。先说一下整体的思路:首先由于客户端可能存在很多,而且不可能每个客户端都时时的和服务器保持连接,因此有服务器主导的同步机制是存在问题的。那

2015-09-16 09:17:03 4636 2

转载 死锁的产生及其避免

本文为转载用作自我学习,转载请参考原文链接。所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。  

2015-09-15 23:53:09 656

原创 如何判断二叉树是否是结构性对称的?

判断二叉树是否是结构性对称的,其实思想是很简单的:通过分别相对应的位置的节点是否对称存在即可,即相应的位置上同时存在或者同时不存在都是对称的。否则不对称Java程序实现的代码如下: public boolean isSymmetrical(Node root){ if(root==null) return true; return isCheck(root.ri

2015-09-14 20:46:35 1222

原创 排序算法之快速排序

/** * 快速排序 * @param a * @return */ public void fastSort(int a[],int left,int right){ if(left>=right){ return ; } int criticalIndex=makeSorted(a, left,right); fastSort(a,left,critic

2015-09-14 16:23:09 414

原创 排序算法之简单插入算法

先记下来,后面再写 /*** 简单插入排序* @param a* @return*/public int[] insertSort(int a[]){for(int i=1;iint temp=a[i];int j=i;if(tempwhile(j>=1&&tempa[j]=a[j-1];j--;}a[j]=temp;}}re

2015-09-14 12:48:28 309

原创 排序算法之选择排序

选择排序是一种比较直观也比较简单的排序算法。其原理是:用第i个元素和他后面的元素依次相比,将最小的放入i处,经过循环,可将小的依次选择出来。一下为源代码:        /**选择排序算法* * @param a* @return*/public int[] selectSort(int a[]){int temp;for(int i=0;ifor(in

2015-09-14 09:05:23 396

原创 排序算法之冒泡算法

public class TestSort{/*** * 冒泡算法1* 实现大的数字往后冒* @param a* @return*/public  int[] bubbleSort_1(int a[]){int temp;for (int i=0;ifor(int j=1;jif(a[j]temp=a[j];a[j]=a[j-1];a[j

2015-09-13 23:54:57 401

原创 Java求解数组中的两个元素的最小距离

题目描述:给定一个数组,数组中含有重复的元素,给出两个数x和Y在数组中出现位置的最小距离。思路:每次遇到x或者y,记录当前值,并且距离计算开始,当下一次遇见两者中的一个进行比较,如果是前面遇到的,则距离计算清空,否则和记录的最小距离进行比较,存储较小值。时间复杂度O(n).代码如下:public class Test09 {/*** 得到数组之间的两个指

2015-09-12 16:52:56 2098

转载 算法时间复杂度

此文为转载他人的文章,仅作为自己学习的材料。算法复杂度分为时间复杂度和空间复杂度,一个好的算法应该具体执行时间短,所需空间少的特点。     随着计算机硬件和软件的提升,一个算法的执行时间是算不太精确的。只能依据统计方法对算法进行估算。我们抛开硬件和软件的因素,算法的好坏直接影响程序的运行时间。     我们看一下小例子:     int value = 0;  

2015-09-12 16:09:05 411

原创 Java实现字符串的反转

import java.util.ArrayList;/** * 实现字符串的反转 *  * @author Administrator * */public class Test04 {/*** 转换函数* Java中的String是不可变量,即当String初始化后,其内容不再发生变化,因此当其内容发生变化时,Java是通过重新创建一

2015-09-11 10:22:07 486

原创 Java利用递归的方法求整数数组中的最大值

/** * 利用递归的方法来球一个整数数组中的最大值 * 思路就是:递归的求解“数组的第一个元素”与“数组中的其他元素的子数组的最大值”的最大值 * @author Administrator * */public class Test02 {public int maxNum(int a[],int begin){int length= a.length-begi

2015-09-10 22:39:01 1940

原创 Java中static键字的思考以及使用static创建单例模式

Java中static关键字可以作用在成员变量和成员函数上可以是看作是一种所属关系的声明,即被static修饰的成员变量和成员方法是属于类的,而不属于类的实例化对象。从内存分配上来看,被static修饰的成员变量在类成功加载后就已经为其分配内存,也就可以对其进行访问,当创建类的对象时,不再为其分配格外的内存,而是各个对象实例共享一个内存。我们都知道,在我们使用static 修饰的静态方法时

2015-09-04 11:01:39 1217

原创 Java断言Assert的使用以及在Eclipse中使用assert

在JDK 1.4 之后添加了断言的功能,非常方便开发人员进行调试。Java为其提供了assert关键字来实现该功能。基本的使用语法是:我们可以用新的JAVA关键字assert来书写断定语句。一条断定语句有以下两种合法的形式:  assert expression1;  assert expression1 : expression2;  expression1是一条被判断的布尔

2015-09-04 10:35:15 1478

原创 Java中break跳出多层循环

众所周知,在Java语言中,break的作用是强制跳出当前的循环,不再执行剩余的代码,但是,break的作用只是跳出当前的循环,当处于嵌套的多层循环时,使用break也只能跳出最内层的循环,而当我们需要跳出整个的循环体时,我们就需要采用使用标示了。如下是示例代码:public class BreakTest{public void static main(String args

2015-09-04 10:06:20 6040

原创 Java利用接口和类来实现类似函数指针的功能

package com.test.interfacetest;/** * 利用接口和类实现函数指针的功能 * @author Administrator * */interface Compare{public int cmp(int a , int b );}class Compare1 implements Compare {@Override

2015-09-03 16:24:14 2923

原创 Java实现链式存储的线性表

package com.test.mylinkedlist;import javax.swing.border.EmptyBorder;import com.test.myarraylist.MyArrayList;/** * 链式结构的线性表的实现 * @author Wangjie * @version 1.0 *  */public

2015-09-01 10:17:10 547

原创 基于数组实现顺序存储的线性表

package com.test.myarraylist;import java.util.Arrays;/** * 基于数组实现线性表 *  * @author Wangjie * @version 1.0 * @param  */public class MyArrayList {private int DEFAULT_SIZE = 16

2015-09-01 10:14:35 728

原创 String比较中==和equal()的区别

解释一下==号,他比较的是一个对象在内存中的地址值,比如2个字符串对象String s1 = new String("str");String s2 = new String("str");如果用==号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。equals的情况比较复杂,它是java.lang.Object类中的一个方法。因为java中所

2015-08-16 23:46:47 984

原创 HashMap和HashSet的底层实现

HashMap和HashSet是Map接口、Set接口常用的实现类,因此研究这两个实现原理有助于更好的使用它们,并理解他们的区别。下面先来分析HashMap的底层实现。Map中存储的是对,每个对都以Map.Entry的数据结构存储,然后用一个table数组来存储Entry,该table就是根据实例化的参数创建的数组。存储的位置则按照Key计算的hash返回值来计算。以下是Java源

2015-08-15 13:29:49 994

原创 局部变量被内部类访问时必须用final修饰的问题

今天随手写了点东西,又遇到了这个问题,就是在当内部类想要访问局部变量的时候 ,Java就要求该局部变量必须用final关键字进行修饰。之前写程序的时候经常遇到这样的问题,当时只是奔着快点结局问题的目的也没仔细的思考它本质的原因。但是我想Java如此的设计肯定有其目的,于是便静下心来想了一下。先贴一个实例。/* * final修饰局部变量的问题测试 *  */public

2015-08-11 12:04:55 1562

原创 使用QT 2D绘图实现窗体的阴影效果

在常见的桌面的商业软件中,我们很容易见到窗体的阴影效果,这是为了使窗体具有脱离桌面的感觉。为了实现这种效果,其实我们有很多的方法,常见的比如利用ps做的具有阴影的图片做背景,现在我们利用编程的方法来实现。下面直接贴代码,非常简单。 QColor color(0,0,0,50); for(int i=0;i10;i++){ QPainterPath

2015-08-09 18:36:38 678

原创 QT中的2D绘图的总结

因为QT属于现学现用,由于要用到QT 2D绘图,所以临时学习了一下,当然只是浅尝辄止,并没有对其进行深入的研究,只是能作为一个工具去使用去完成一定的任务,现在记录下来以便以后用到时可以快速的捡起。QT中的2d 绘图,我们不得不提到一个QPainter类,该类包含了所有的简单图形的绘制方法,比如绘制矩形,椭圆,图片等等,使用非常简单,查看API即可。在我的理解上QPainter就好比

2015-08-09 18:13:13 1545

原创 Android中canvas画图的简单应用

在最近的Android的实验中用到了绘制图形,于是简单的学习了一下利用canvas进行2D图形的简单绘制,一下是个人的总结,以便日后翻看。其中,有三个重要的东西:Bitmap、Canvas、Paint以实际生活中的绘画过程进行类比的话,更容易理解:1.Bitmap:相当于画布   其创建有很多种,这里只说一种很简单的方式:    Bitmap baseBit

2015-06-12 00:07:55 554

空空如也

空空如也

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

TA关注的人

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