- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 读书笔记--MapReduce词频统计
词频统计作为MapReduce入门的一个基础算法,相当与各种语言的“Hello World”程序。下面简单说一下MapReduce的算法实现。 Mapper代码:public class WordMapper extends Mapper<Object,Text,Text,IntWritable>{ private IntWritable o...
2019-06-02 22:51:38
556
原创 DataTablesUtil服务器端分页查询
DataTablesUtil提供的分页查询默认是web端分页,即在数据库中查询所有的数据之后,再根据需要进行分页查询,这样带来的后果就是如果某个表的数据量比较大则会给服务器带来较大的负担。DataTablesUtil是支持服务端分页的。下面是一个Table:<table class="table table-border table-bordered table-bg displa...
2018-11-19 16:38:31
359
3
原创 Java线程池的使用
在开发过程中,我们有时需要频繁创建多个线程进行运算的时候,每次都new出一个新的Thread对象并不能有效地利用资源,同时可能造成由于线程缺乏统一管理,无限制创建新线程,占用过多资源导致线程死锁问题。在这样的情况下我们就可以使用Java的线程池来管理、调度线程。线程池的的优点在于三点:一,能够复用存在的线程,减少创建、销毁线程的操作,减少进行对应操作的开销;二、能够有效控制并发数量,提高系统资源利...
2018-02-16 18:01:38
433
原创 Java线程的基本使用(二)
除了通过Runnable注入以及实现Thread类的run方法之外(其实都是Runnable),java还提供了Callable、Future和FutureTask这几个与多线程相关的概念,不过这几个类型都只能用于线程池中。Callable声明如下:public interface Callable<V>{ V call() throws Exception;}Callable感觉...
2018-02-15 13:58:45
292
原创 Java线程的基本使用
先声明一下,本文参考了何红辉著《Android开发进阶 从小工到专家》第三章节:“Android中的多线程”内容,故逻辑可能会出现一些相似之处。在java中,多线程使用的成本是相对较低的,其中有两种常见的使用方法:第一种,直接重写Thread的run()方法,然后启动线程:public class ThreadDemo { public static void main(String[] a...
2018-02-15 00:42:45
409
原创 Android圆形水波纹按钮的实现(Ripple)
在Android中,谷歌已经提供了对于按钮水波纹效果的一个实现。在组件的中添加以下代码即可实现:超出组件边框(但不超出父类视图),此时水波纹效果为圆形:android:background="?android:attr/selectableItemBackgroundBorderless"不超出组件边框,水波纹效果为组件的形状:android:background="?android:attr/s...
2018-02-13 18:27:15
12114
1
原创 Android自定义控件的简单使用
先声明一下,本文参考了何红辉的《Android开发进阶 从小工到专家》第二章节内容。在Android开发中,尽管Android源代码库中已经提供给我们很多功能强大的View,但在开发中总是会出现不完全满足我们需求的情况,这时候自定义控件就是我们必须使用的实现方式。假设我们要实现一个进度条,首先,我们先创建一个类SimpleView2继承View,并且在类中声明我们需要的属性:public clas...
2018-02-13 01:26:36
5775
原创 Android广播的简单使用
BoradcastReceiver是Android下的四大组件之一,用于接收其他Service或者Activity发送的广播。首先,要接受广播,得有一个广播的发送源。这个发送源,可以是其他应用的Activity、Service,也可以是当前应用的Activity或者Service。发送广播的方法非常简单:Intent intent=new Intent();//设置intentinte
2017-09-18 13:43:09
1220
原创 利用第三方API服务实现归属地查询
许多平台诸如阿里、百度等都对外提供了一些付费的API服务,使用这些服务能够大量节省开发成本。在这里我将实现利用来电归属地API服务实现来电归属地查询。 首先新建一个Android项目,并创建一个Activity。 该Activity中包含一个搜索框(使用EditText),一个按钮(Button)和一个查询结果的文本框(TextView)。页面设计代码如下:
2017-07-28 01:22:46
1430
原创 Intent的简单介绍
Android程序中有三大基本组件:Activity,Service和BroadcastReceiver,而这三个组件都是通过Intent对象来激活的。Intent对象是Android程序中各个组件之间的传输数据的对象。我们可以把需要激活的组件的描述记录在Intent对象中,并利用特定的函数来实现激活指定或指定功能的组件(此时Android会根据此Intent对象的描述找到相应的组件)。
2017-02-14 18:06:02
1323
原创 Activity的常用操作
在Android应用于用户交互的过程中,经常需要从一个Activity跳转到另一个(或多个)Activity上。本文以计算是否闰年的Android应用为例,简单说一下如何从一个Activity启动、跳转到其他Activity。 在Android Studio中创建一个项目,设置MainActivity的布局xml文件:<LinearLayout xmlns:android=
2017-02-05 13:04:38
500
原创 Activity的四种状态和生命周期
Android程序中,Activity存在四种状态:Running, Paused, Stopped, Killed。
2017-02-02 13:07:09
8390
原创 Android布局管理器
Android的五种布局管理器:线性布局管理器(LinearLayout)、绝对布局管理器(AbsoluteLayout)、相对布局管理器(RelativeLayout)、框架布局管理器(FrameLayout)、表格布局管理器(TableLayout)
2017-01-31 23:32:50
562
原创 C语言堆排序的实现
堆排序是一种树形选择排序,在排序过程中,将数组a[]看成一棵完全二叉树,利用双亲节点和孩子节点之间的内在关系,在当前无序的序列中选择关键字最大(或最小)的排序。其空间复杂度为O(1),在最坏的情况下时间复杂度为O(nlog2n)。堆排序是一种不稳定的算法,且只能用于顺序结构,不能用于链式结构;初始建堆所需的比较次数较多,因此记录少的时候不宜采用。堆排序在最坏情况下的时间复杂度比快速排序下最坏的时间
2017-01-25 12:40:09
1424
原创 C语言归并排序算法的实现
归并排序是将两个或两个以上有序表合并成一个有序表的过程,其算法稳定,可以用于链式存储结构,且不需要附加储存空间,但递归时由于必须开辟相应的递归工作栈,故这个算法对内存要求较高。归并排序的时间复杂度为O(nlog2n),空间复杂度为O(n)。下面是实现代码:预定义和类型定义:#define OK 1#define ERROR 0#define MAXSIZE 100typedef
2017-01-25 12:36:42
2032
原创 C语言简单选择排序算法的实现
简单选择排序从元素中跳出最小关键字,将其放在已排序列的最后,未排序的序列最前,直到全部排序完成为止,其空间复杂度为O(1),时间复杂度为O(n2)。下面是实现代码:首先仍然是预定义和类型定义:#define OK 1#define ERROR 0typedef int Status;typedef int ElemType;typedef struct{ ElemType *
2017-01-25 12:34:26
6807
原创 C语言快速排序算法的实现
快速排序是由冒泡排序改进而得的,相比冒泡排序,快速排序的一次交换可能消除多个逆序。其平均时间复杂度为O(nlog2n),空间复杂度最好情况下为O(log2n),最坏情况下为O(n)。适用于顺序结构,不适用于链式结构,不稳定,适合于初始记录无序,n比较大的情况。下面是实现代码:首先是预定义和类型定义:#define OK 1#define ERROR 0typedef int St
2017-01-25 12:30:11
673
原创 C语言冒泡排序的实现
冒泡排序是一种最简单的排序方法,通过比较相邻的元素,若发生倒序,则交换,使最大值“沉”到最后。其空间复杂度为O(1),时间复杂度为O(n2)。冒泡排序是一种稳定的排序,可可用于顺序或者链式存储结构,平均时间性能比直接插入差。当初始记录无序且n较大时,不宜采用此方法。首先是预定义和类型定义:#define OK 1#define ERROR 0typedef int ElemType;
2017-01-25 12:24:20
5080
原创 C语言希尔排序的实现
希尔排序事实上是分组插入的方法,由于其受增量序列dt[]的影响,时间复杂度暂时未知,空间复杂度为O(1)。希尔排序是一种不稳定的算法,适用于顺序结构,不能用于链式结构,其增量序列可以有很多种取法,但应该使增量序列中的值没有除1之外的公因子,并且最后一个增量必须是1。适合用于初始无序、n值比较大的情况。首先是预定义和类型定义:#define OK 1#define ERROR 0#def
2017-01-25 12:21:52
867
原创 C语言直接插入排序和折半插入排序算法的实现
直接插入排序是是一种稳定的排序,其算法简便,适用于顺序结构和链式结构,更适合于基本有序(正序)的情况。其空间复杂度为O(1),时间复杂度为O(n2)。下面是实现算法:先是预定义和类型定义:typedef int Status;typedef int ElemType;typedef struct{ ElemType *data; int length;}SqList;创建
2017-01-22 11:34:03
7063
原创 C语言二叉排序树的实现
二叉排序树是一种排序和查找都很有用的特殊二叉树。二叉树的性质:1. 若它的左子树不为空,则左子树上所有结点的值均小于它的根节点的值。2. 若它的右子树不为空,则右子树上所有节点的值均大于它的根节点的值。3. 他的左右子树也是二叉排序树。由于其以上性质,查找的时候只需要判断关键字与节点值的大小,查找器左右子树就可以找到所要找的值(当然,如果二叉树中没
2017-01-22 11:16:42
2563
4
原创 C语言设置监视哨的顺序查找、折半查找算法的实现
设置监视哨算法的实现也算是相当简单,和顺序查找的思路一样,但把查找数组a[]的第一个元素a[0]赋值为所要查找元素的值。下面是实现代码:int Search_Seq(int a[], int length, int key){ int i; a[0] = key; for (i = length; a[i] != key; i--) ; return i;}将要查找的值k
2017-01-22 11:12:52
5943
原创 C语言关键路径实现
在工程中,要估算工程完成最短时间,就是要找到一条从源点到汇点的带权路劲长度最长的路径,成为关键路径。确定关键路径的四个描述量:1. 事件vi的最早发生时间ve(i):进入世界vi的每一活动都结束,vi才有可发生,所以ve(i)是从源点到vi的最长路径长度。其中v0一般为0.2. 事件vi的最迟发生时间:事件vi的发生不得延误vi的每一后继事件的最迟发生时间。
2017-01-22 11:07:57
8831
9
原创 C语言二叉树的实现
二叉树的储存结构包含顺序存储结构和链式存储结构,由于顺序存储结构很容易造成不必要的浪费,本人用的是链式存储结构。基本操作包括:遍历二叉树、先序遍历的顺序建立二叉树、复制二叉树、计算二叉树深度、计算二叉树结点个数。
2017-01-19 20:39:10
791
原创 Android程序的基本组件
Android程序的4个基本组件:Activity,BroadcastReceiver,ContentProvider和Service。
2017-01-17 23:52:47
486
原创 Java大数相加的问题(杭电ACM1047)
原题:Integer InquiryTime Limit:2000/1000 MS( MemoryLimit: 65536/32768 K (Total Submission(s):18568 AcceptedSubmission(s): 4847Problem DescriptionOne of the first users of BIT's newsupe
2017-01-17 21:35:05
821
原创 Java汉字识别
在java语言中,字符采用的是Unicode字符编码的方案,这样有利于世界各种字符的处理问题。而汉字在Unicode编码中是从4E00到9FA5(十六进制)之间,所以可以使用这个区间的判断来确定是否字符串中是否存在汉字、统计汉字个数。
2017-01-17 21:35:02
1032
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人