自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 管道通信

管道是一种虚拟文件,它可以连接两个进程,如果进程A和B希望通过管道进行通信,他们必须提前设置该管道,当进程A想对B发送数据时,他把数据写到管道上,仿佛管道就是输出文件一样,进程B可以通过该管道读取到A写入的数据,仿佛管道就是输入文件一样,这样UNIX中, 两个进程之间的通信就类似于普通文件的读写,更为强大的是如果进程发现它所写入的输出文件不是真正的文件而是管道,则需要使用特殊的系统调用

2016-05-07 11:57:51 1312

原创 使用Volley 发送 ProtoBuf数据

Volley是android中包含的http请求库,但是其中只定义几种请求,如果需要结合使用protobuf, 那么需要自定义请求代码比较简单,但是其中有一个比较明显的问题,因为protobuf 最终是以二进制的形式传输,那么在http的发送中只能放在http的body里面,这就对发送http请求的方法产生了限制,只能使用包含http body 的方法来发送请求 ,POST和PUT自定义请求的时候只

2016-04-29 20:50:51 1003 1

翻译 最长回文字符串算法-Manacher’s Algorithm-马拉车算法

本文翻译于LeetCode上关于最长回文字符串的说明除了翻译之外,其中还加入了个人的理解的部分,将其中没有详细说明的部分进行了解释。时间复杂度为O(n)的算法首先,我们需要讲输入的字符串 S 进行一下转换得到 T,转换的方法就是通过在每两个字符之间插入一个字符串“#”,你马上就能知道为什么要这么做。例如 输入字符串 S = “abaaba”, 转换之后得到了 T = “#a#b#a

2015-12-29 20:56:25 4421 2

原创 Java 实现堆排序

堆排序主要是利用堆在根节点上的特性,既在大顶堆的情况下,堆的第一个元素是堆当中最大的元素,而在小顶堆的情况下,堆的第一个元素是最小的节点。所以在堆排序的过程,主要的操作就是对每次取出堆顶的元素之后(在这里使用大顶堆),我们就选出了堆中的最大元素,然后对堆剩下的元素进行再次进行大顶堆的调正,得到一个新的大顶堆,这样再次取值的时候就可以取出剩下元素的最大值,依次类推,即可得到一个有序的数组。堆的时间复杂

2015-12-20 14:22:57 449

原创 希尔排序

希尔排序是对插入排序的一种改进。 下面对希尔排序的介绍来自于维基百科*希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位下面是代码实现package com.

2015-12-06 15:58:50 1315

原创 快速排序

快速排序在实际中运用的比较多的算法之一。快速排序和合并排序一样都是用到了分而治之的思想。 快速首先要从数组中找到一个元素(pivot),然后把数组中比这个数大的数字全部放在这个数字的左边,比他大的数字放在他的右边,然后按照这个步骤去整理pivot的左半边和右半边,到最后数组就是一个有序的状态。快速排序的时间负责度是 n * logn ,并且是一种不稳定的排序算法。 例如 {5,5,4,3,3},

2015-11-29 13:05:56 1379

原创 归并排序

归并算法的是分治思想的一种体现。归并算法的主要过程分为两步,首先是对需要排序的元素进行分组,首先一分为二(组),然后二分为四(组),在之后四分为八(组),将元素不断的划分,知道每组元素只包括两个,(当然如果需要排序的元素为奇数个,那么必定是有一组元素只包含的一个的)。在我们划分之后,在每组元素之内排序,每个小组的元素有序之后,开始合并,直到最后八合为四,四合为二,二合为一。归并排序的算法是稳定的。时

2015-11-15 22:38:31 1281

原创 冒泡排序和选择排序

两种很简单的排序方法,冒泡排序和选择排序。下面按照从小到大排序来做说明:冒泡排序:每次将未排序的数组从前往后两个相邻的元素作比较,如果前面的元素比后一个元素小,那么将这两个元素交换,那么实质上这种交换是将大的元素往后移动了一位,这样一遍排序之后,最大的元素就被放到数组的最后。然后对前面的n -1 个元素重复这个过程。选择排序:选择排序实际上对冒泡排序做了一定的改进,它也是每次把两个元素作比较,但是这

2015-11-07 14:35:20 455

原创 二叉树的先序遍历

二叉树的先序遍历就是先遍历根节点,然后在遍历左节点,最后遍历右节点。二叉树的遍历一般有两种实现:递归实现和非递归实现。其实递归实现和非递归实现的本质是一样的,两者都是利用了堆栈先进后出的原理来进行的。只是在递归的实现中,我们利用了系统方法调用时形成的堆栈,而非递归实现中,我们要自己来手动的实现堆栈元素的进出栈。首先是递归实现 public static void preTraversal(Tr

2015-11-01 17:19:08 1786

原创 直接插入排序

上一篇写了技术基数排序,这节是关于插入排序!插入排序的思想十分简单,打扑克牌的时候我们给牌放位置的方法就是直接插入排序。首先我们拿到第一张牌的时候 例如 8,这个时候它是第一张,所以不需要比较,可以确定暂时的位置是0 (数组的下标从0开始,在这里就用0了)。然后拿到了一张 5,这个时候把5与前面的牌像比较,5 < 8,所以5应该插到8的前面去,8应该往后移动一位。此时在【0】的位置上是5,在【1】的

2015-11-01 15:32:28 363

原创 Java实现基数排序

文章采用Java实现了基数排序基数排序的基本思想:首先对数组的所有数字按照数字的最后一位进行排序,(在十进制下,因为每个数字都是0-9,所以我们可以申请一个长度为10的桶),根据每个数字末尾数的数字放入相应的桶中,例如 125的末尾数是5,我们放入bucket[5] 中,1的末尾是1 ,我们放入buckets[1] 中,这样排序放完之后,所有的数字都按照其末尾数字的大小排序好了。第一遍排序玩之后,开

2015-10-24 10:41:11 572

原创 理解javascript中的prototype

以前一直对javascript中的prototype不是很理解,今天在阅读了《javascript高级程序设计之后》终于理解了其中的prototype。来简单的总结一下从书中学习到的内容。     我们都知道在创建了一个function之后,这个function就具有了prototype这样的一个属性,利用这个prototype我们可以做很多的事情,其中我们经常用到的一点就是利用它来当

2015-01-10 20:22:39 798

原创 JavaScript 中的多线程通信

本文参考《Html 5 与 Css 3 权威指南》      在Html 5诞生之后,我们可以使用javascript来实现多线程处理。H5 新增了一个web workers api,使用这个API,用户可以很容易地创建在后台运行的线程,H5 中被称为workder ,如果将费时比家长的操作放到后台去执行,对用户在界面的操作就完全没有影响了。   创建后

2014-11-19 23:44:05 1619

原创 设计模式之观察者模式

通过一个小例子来说明了观察者模式,介绍了观察者模式的实现方式

2014-04-01 00:43:13 1282

原创 实习的感悟

时间真的过很快,在公司实习的一个星期很快就过去了,虽然只有五天,但是这五天的收获也不小。下面自己给自己简单的总结一下吧。       一,第一天到公司,上午简单了了解了一下公司的文化之后,下午就开始了我们的课程,首先是我们的技术boss给我们讲了一下他的风格和要求,明显就感觉和学校不一样了,在学校和老师相处的时候,自己不喜欢的话不去上课就行了,但是到了公司里面,一切都是没有办法回避的,一切都必

2014-03-07 23:45:49 711

翻译 android布局文件详解

本文是我从Declaring Layout翻译而来的文章,如果有不当之处请指出Declaring Layout布局决定了Activity所展现的样子,他决定了布局的结构和控制着你展现给用户所有的元素,你可以通过两种方式来声明你的布局.①在xml文件中定义UI 元素:android提供了与View 类及其子类相关的简单易懂的标签。     ②在运行时期定义你的布局,即

2013-12-19 22:15:33 7770

翻译 android widget的中文文档

下文是我翻译于 App Widgets的文章,如果有不当之处请大家之处app widget是一种嵌入在其他应用(例如主屏幕)和并且能偶接受间接性更新的小应用,你可以自己提供app widget provider 来在用于界面上定义app widget,包含了app  widget的应用程序组件叫做app widget host.1.基础的工作AppWidgetProvi

2013-12-18 21:21:25 1331 5

原创 android 自己实现日历功能

好久没有写东西了,这两天自己联系android小项目的时候,就想到了自己做一个日历。最简单的功能,当前日期能够突出显示,能够选择月份和年份 。上图                  下面来说实现思路首先:日期的确定主要是采用java中Calendar这个类,有了这个类,所有日期的获取都是浮云了。其次:布局,看到这个布局很容易想到的就是表格布局了,最外部的线性布局加上里面

2013-12-05 20:59:17 2658

原创 Hibernate 之List ,Bag,Map三种映射文件详解

在hibernate中,有几种不同的映射文件,这几种映射文件各有特点,set在前面已经说过,这种映射关系多的一方中没有顺序关系,并且其中也不允许有重复的值,但是在list中,这两个刚好相反,list允许有重复的值,并且多的一方数据在持久化到数据中时也强调了数据的顺序,而bag中和了list和set的特点,bag允许有不用的值,但是这些值之间没有顺序,而map是一种键值对的结构,根据值得不同情况,又

2013-05-21 01:20:03 3781

原创 Hihernate之一对一学习解释

在上一篇中,讲解了Hibernate的数据的级联插入,上一篇中是以一对多的例子来的,在本篇中,主要讲解一对一和多对多两种关系。一对一关系一对一关系可以分为两种,一种是主键关联,另外一种是外键关联,这种外键关联实际上是一对多的一种特例。下面的示例以主键关联为例。这种关系在生活中比较常见,例如学生和其学生证都是一对一的关系,通过学生可以确定他的学生证,通过其学生证可以确定学生本人。下面

2013-05-19 15:36:43 664

原创 Hibernate 下实现数据的级联插入

在上一篇文档中,主要讲了如何在myeclipse中部署一个Hibernate项目,在本文中主要实现数据的级联插入,下面模拟的场景是,用户有多个订单,在插入用户的时候,将用户的订单添加到订单表中。     下面是User 和 Order两个pojo类的代码         public class Order { private int id; private int wh

2013-05-13 01:25:14 1523

转载 Linux下编译安装mysql-5.0.45.tar.gz

原文地址:http://blog.chinaunix.net/uid-415488-id-77119.html(呵)近一段时间由于工作需要,终于开始玩Linux了,今天搞了一天的MySQL编译安装,记录下来,备忘吧!!本人经过测试了几次,屡试不爽,感谢作者,特此转载,呵呵。(卡)安装环境:VmWare5(桥接模式) + RedHat E AS 4 + 已安装了开发工具以及相

2013-05-10 20:03:44 5797

原创 Hibernate 之菜鸟入门

HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据

2013-05-04 20:38:01 925

转载 Ubuntu12.04安装JDK7

ubuntu12.04安装jdk71、首先到oracle下载上下载jdk-7u4-linux-i586.tar.gz2、将jdk-7u4-linux-i586.tar.gz拷贝到/usr/lib/jvm/目录下面,这里如果没有jvm文件夹,则创建该文件夹,命令:sudo mkdir jvm  //创建文件夹jvmsudo cp -r  ~/download/jdk-

2013-05-03 17:48:46 816

原创 使用双向链表实现队列和栈

下面是使用双向链表实现了队列的进出和栈的push和pop操作首先是依然是给出双向链表节点NodeTypepublic class NodeType { public NodeType llink; public int data; public NodeType rlink; public NodeType(int data){ this.data = data; }

2013-04-26 07:59:49 1756

原创 java实现双向链表的操作

单向链表只能单方向的查找链表中的节点,并且在插入或者删除某一个节点的时候,必须知道其的前一个节点。当单向链表的前一个节点指向这个链表的第一个节点的时候称为循环链表。双向链表的每个结构分为三个部分,一个左指针 llink , 一个数据data ,一个右指针 rlink,其手llink存放当前节点的前一个节点,rlink指向当前节点的后一个节点。因此构造java节点类型如下public cla

2013-04-25 07:15:23 1053

原创 单向链表,单向循环链表的基本操作

链表可以解决数组对存储空间要求的问题,可以充分的利用存储空间,可以根据实际使用的需要来使用内存,链表的插入节点和删除节点都数组要简单,因为只要用指针加以处理就行了 ,但是在数组的查找上,数组的速度比链表快,因为从数组的索引就可以找到想要的数据,而链表需要花费很多时间去比较每一个节点,才能找到自己想要数据。 单向链表的每一个节点的数据结构都可以分为两个域,一个数据域,一个是指针域,因此可以以此来构建

2013-04-21 10:59:11 967

原创 线程中不可避免的wait/notify/notifyAll/join

在运用线程的过程中,不可避免的要遇到wait()、notify()、notifyAll()、join()这几个方法,但是首先需要注意的是,这些方法的调用对象,前三个方法的调用对象都是object,而join方法是作为一个Thread对象的方法调用的。Wait()和notify方法的使用,当线程A需要等待线程B完成了某些操作之后才能继续执行,此时线程A就可以调用obj.wait()将线程暂时进入

2013-03-05 21:30:35 954 1

原创 采用多线程的方式实现文件下载

为了更快的下载资源,我们可以采用多线程的方式来实现文件的下载。多线程文件下载的基本原理如下:使用HttpURLConnection获取与资源指定URL的链接,httpurlconnection对象通过getContentLength可以获取下载文件的长度,等到需要下载的文件的长度以后,在本地创建一个与下载文件长度相同的文件,然后通过RandomAccessFile对文件进行写入操作,那么如何加

2013-02-27 13:00:09 687

原创 在android中使用xml调用webservice,实现自己的单词查询

关于webservice的相信介绍,可以到网上查到,现在使用android实现自己的词典。输入自己想要查询的词语之后,可以获取单词的含义。为了调用webservice,我们首先需要解析相应的webservice为我们提供的接口,下面是以post发送请求的案例POST /webservices/EnglishChinese.asmx HTTP/1.1Host: fy.webxml.co

2013-02-23 16:03:48 2726 2

原创 android客户端采用Post和Get方式向web服务器传递参数

android客户端向web服务器传递参数主要用到了HttpURLConnection类,通过这个类,我们可以获取到指定url的连接,在其中我们可以通过设定请求的方法是Post还是get,采用get方法相对容易,我们通过观察浏览器中url可以发现,提交的参数和参数值都被附着到了URL的后面,因此在android客户端中同样是将参数和参数值直接附着在URL后面,而post方法向对方复杂,需要我们设置

2013-02-21 22:17:35 1925 3

原创 ContentProvider学习笔记(下)--查看内存卡上的图片

android系统同样为其他的应用程序访问多媒体资源提供了ContentProviderMediaStore.Audio.Media.EXTERNAL_CONTENT_URI:存储在SD卡上的音频文件ContentProvider的URIMediaStore.Audio.Media.INTERNAL_CONTENT_URI:存储在手机内部存储器卡上的音频文件ContentProvider的

2013-02-20 23:08:46 4521

原创 ContentProvider学习心得(中)--通过单元测试的方式完成对通讯录内容的操作

在基本了解了对内容提供者的操作之后,可以通过几个小例子来训练自己的所学。在很多应用中都需要访问通讯录,因此在这里我们通过单元测试和通讯录的内容提供者完成对通讯录中数据的操作,在通讯录数据库中有很多表,在这个例子中我们需要关注的是data,raw_contacts,mimetypes这三个表,data表格raw_contacts两个表通过raw_contact_id字段关联,关于表中的字段,在通讯录

2013-02-20 21:55:53 782

原创 android组件ContentProvider学习心得(上)

应用和应用之间的数据通常都不是孤立的,每个应用都需要与其他的应用来交换数据,例如,我们安装在手机上的安全软件提供了来电防火墙的功能,这个时候安全软件通常会需要访问我们手机自带通信录中数据。在android中采用了ContentProvider(内容提供者)这一组件实现不用应用之间数据的共享,这种数据的共享包括了不同的数据类型。一个应用程序可以通过ContentProvider来对外提供自己的数据,

2013-02-20 21:08:57 666

原创 Android中SQLite数据库学习心得

在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。 SQLite最大的特点是你

2013-02-19 23:09:08 1959

原创 使用ListView,SimpleAdapter及CheckBox的心得

这两天无聊的时候突然想到过年短信群发的问题,直接群发短信别人收到了肯定不会有什么感觉,但是如果在短信的前面加上每个的名字,那么收短信的人肯定不会是觉得你在群发短信,因此我就想到了做这样一简单的应用,在短信的前面加上每个收信人的姓名,这里的收信人全部从联系人中选取。在联系人的选取界面是一个简单的listview,其中每个条目有三个组件,第一个是checkbox用来选取其所在的联系人,后面两个是tex

2013-02-08 20:12:16 5313 1

空空如也

空空如也

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

TA关注的人

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