码农的空间

codding
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年3月20日

摘要: 学习android,开发一个Mp3播放器,可以实现播放,停止和暂停,但是当切换歌曲的时候ddms提示java.lang.IllegalStatementException,并且输出错误信息:setDataSource is called in state 32,查看MediaPlayer的API文档中的State Diagram,发现setDateSource只能Idle的状态下才可以调用,在setDateSource之前调用player.reset()方法就OK了。 阅读全文

posted @ 2011-03-20 14:06 我是孙海龙 阅读(613) 评论(0) 推荐(1) 编辑

2011年3月16日

摘要: 最近学习android开发,写了一个在web服务器下载文件的程序,程序能够下载成功,但是下载下来竟然发现下载的文件和服务器上的文件大小不一致,参考了网上的很多程序,没有发现问题,搞了一夜,终于发现bug,问题出现在往sdcard写入的一段程序:byte[] buffer = new byte[4*1024]; while(( is.read(buffer)) != -1){//问题出现在这儿 //is.read(buffer)不一定正好读入4*1024个字节,测试后发现很少能一次读满buffer,大部分时候是1440字节,不知道什么原因,求教高手! os.write(buffer);}修改这段 阅读全文

posted @ 2011-03-16 23:27 我是孙海龙 阅读(1873) 评论(4) 推荐(1) 编辑

2011年3月14日

摘要: android应用程序可以通过HttpURLConnection的getInputStream()方法访问web服务器上的文件,但是我在调试时始终提示Connection Refused异常,后来仔细分析了一下: 我要下载的服务器文件的url是http://localhost:8080/mp3player/resources.xml,因为我的手机通过usb连接到我的电脑,因此刚开始我认为手机可以访问我电脑的web程序,但是显然这样是不对的。因为手机通过wifi连接到路由器(路由器不会区分当前连接的设备是手机还是电脑),因此使用http://localhost:8080/mp3player/r. 阅读全文

posted @ 2011-03-14 13:02 我是孙海龙 阅读(2635) 评论(5) 推荐(1) 编辑

2011年3月12日

摘要: 插入排序是一种通过不断地把新元素插入到已排好序的数据中的排序算法,常用的插入排序算法包括直接插入排序和shell排序,直接插入排序实现比较简单,时间复杂度是O(n),但是直接插入没有充分的利用已插入的数据已经排序这个事实,因此有很多针对直接插入排序改进的算法,例如折半插入排序等,下边是直接插入排序的Java实现:public static void insertSort(int[] elements){ for(int i = 1;i <elements.length; i++){ int j = -1; while(j <= i && elements[i] &g 阅读全文

posted @ 2011-03-12 22:39 我是孙海龙 阅读(9279) 评论(0) 推荐(1) 编辑

2011年3月10日

摘要: 交换排序是另一种经常使用的内部排序策略,常见的算法有冒泡排序和快速排序,之所以把冒泡排序和快速排序归类为交换排序,是因为这两种算法的主要工作是不断的交换元素来达到排序的目的。 冒泡排序是最经典的交换排序,它的算法思想是:(假设数据存放在数组a[n]中) 1.比较a[0]和a[1],如果a[0]>a[1],则交换a[0],a[1],然后比较新的a[1](可能是原来的a[0])和a[2],如果a[1]>a[2],则交换 a[1],a[2],以此类推,直到a[n-2]和a[n-1]比较完毕,这样,a中的最大数就“沉底”了,即a[n-1]是数组a中的最大值。 2.从头开始继续第1步的操作, 阅读全文

posted @ 2011-03-10 22:09 我是孙海龙 阅读(4129) 评论(0) 推荐(1) 编辑

2011年3月9日

摘要: 选择排序是常用内部排序的一种,常见的实现算法有直接选择排序算法和堆排序算法,选择排序的基本思想是每次从待排数据中选择第n小的数据放到排序列表的第n个位置,假如共有N个数据待排,那么经过N-1次排序后,待排数据就已经按照从小到大的顺序排列了。 直接选择排序算法的思想比较简单:(假设数据放在一个数组a中,且数组的长度是N) 1:从a[0]-a[N-1]中选出最小的数据,然后与a[0]交换位置 2:从a[1]-a[N-1]中选出最小的数据,然后与a[1]交换位置(第1步结束后a[0]就是N个数的最小值) 3:从a[2]-a[N-1]中选出最小的数据,然后与a[2]交换位置(第2步结束后a[1]就是. 阅读全文

posted @ 2011-03-09 01:02 我是孙海龙 阅读(14560) 评论(2) 推荐(1) 编辑

2011年3月6日

摘要: 在计算机科学中,树是一种非常重要的数据结构,而且有非常广泛的应用,例如linux下的目录结构就可以看成是一棵树,另外树也是存储大量的数据一种解决方法,二叉排序树是树的一种特殊情形,它的每个节点之多只能有两个子节点,同时左子树的节点都小于它的父节点,右子树中的节点都大于它的父节点,二叉排序树在搜索中的应用非常广泛,同时二叉排序树的一个变种(红黑树)是java中TreeMap和TreeSet的实现基础。下边是二叉排序树的定义,其中用到了两个类,一个是Node类,代表树中的节点,另外一个是Name类,表示节点的数据,Name类实现Comparable接口,这样才可以比较节点的大小。public cl 阅读全文

posted @ 2011-03-06 12:51 我是孙海龙 阅读(3481) 评论(0) 推荐(1) 编辑

2011年2月26日

摘要: 学习Android平台手机开发,写布局xml文件的时候老是出现这个错误,看了网上的解决方法都没能解决我的问题,仔细检查了文件,竟然是android写成了andriod了,记下来,告诫后来者。 阅读全文

posted @ 2011-02-26 12:52 我是孙海龙 阅读(7628) 评论(1) 推荐(2) 编辑

2011年2月25日

摘要: 打印一个目录的结构,一个目录可以看成一棵树,因此算法的核心是树的遍历,树的遍历又有前序遍历、中序遍历和后序遍历,本文章中使用前序遍历,另外由于树的定义具有递归性质,因此算法采用递归的方式,程序如下:public static void printDirectory(File f,int depth){ if(!f.isDirectory()){//如果不是目录,则打印输出 System.out.println(getTap(depth)+f.getName()); }else{ File[] fs=f.listFiles(); System.out.println(getTap(depth)+ 阅读全文

posted @ 2011-02-25 23:36 我是孙海龙 阅读(4640) 评论(0) 推荐(1) 编辑

2011年2月24日

摘要: 队列是一种重要的数据结构,在排队论和算法设计中有很重要的应用,其实队列也是一种链表,它只允许在表的始端出表(dequeue),在表的末端入表(enqueue),下边是队列的java实现。//队列是一种重要的数据结构,主要应用是资源的排队(例如打印机),需要注意的是要利用循环数据来存储数据class Queue { private int front; private int back; private int size; private Object[] data; public Queue(){ data=new Object[10]; } public int getSize(){ ret 阅读全文

posted @ 2011-02-24 23:22 我是孙海龙 阅读(3915) 评论(0) 推荐(2) 编辑