- 博客(69)
- 收藏
- 关注
原创 surfaceview
使用surfaceview步骤如下:第一步:继承SurfaceView并实现SurfaceHolder.Callback接口第二步: SurfaceView.getHolder()获得SurfaceHolder对象第三步:SurfaceHolder.addCallback(callback)添加回调函数第四步:SurfaceHolder.lockCanvas
2015-07-31 18:07:48
526
原创 javaweb之过滤器
开发Filter 想要开发一个过滤器需要如下两个步骤: (1)写一个类实现特定的接口Filter 生命周期:当服务器启动时,web应用加载后,立即创建这个web应用中的所有的过滤器,过滤器创建出来后立即调用init方法执行初始化的操作. 创建出来后一直驻留在内存中为后续的拦截进行服务.每
2015-07-19 11:09:09
389
原创 Servlet监听器
监听器:Servlet规范定义三门技术之一 Servlet、监听器、过滤器javaee提供了八种监听器,分为了三类:(1)写一个类去实现监听器接口(2)在web.xml中注册监听器1.用来监听三大作用于创建和销毁的监听器ServletContextListener:监听ServletContex域创建和销毁的监听器 生命周期:web应用加载后立即创建代表当前
2015-07-18 23:18:39
414
原创 事务
事务 事务的概念:事务是指逻辑上的一组操作,这组操作要么同时完成要么同时不完成. 事务的管理:默认情况下,数据库会自动管理事务,管理的方式是一条语句就独占一个事务. 如果需要自己控制事务也可以通过如下命令开启/提交/回滚事务 start transaction;
2015-07-18 17:35:21
363
原创 JDBC
JDBC数据库驱动:数据库厂商为了方便开发人员从程序中操作数据库而提供的一套jar包,通过导入这个jar包就可以调用其中的方法操作数据库,这样的jar包就叫做数据库驱动JDBC:sun定义的一套标准,本质上是一大堆的操作数据库的接口,所有数据库厂商为java设计的数据库驱动都实现过这套接口,这样一来同一了不同数据库驱动的方法,开发人员只需要学习JDBC就会使用任意数据库驱动了
2015-07-18 17:09:34
424
原创 JSP
JSP 1.jsp技术 jsp是sun提供动态web资源开发技术。为了解决在Servlet中拼写html内容css、js内容十分不方便的问题,sun提供了这样一门技术。如果说Servlet是在java中嵌套HTML,则jsp就是在HTML中嵌套java代码,从而十分便于组织html页面 jsp页面在第一次被访问到时会被jsp翻译引擎
2015-07-18 11:51:39
438
原创 提取访问百度次数最多的ip
先遍历一遍ip,将ip按照前多少位进行分段,比如前5位,则会产生32个ip文件,统计每个文件的最大次数,最后比较32个文件的最大次数就得到了想要的结果。怎样判断海量数据中是否有某一个数呢?用位图的方法将遍历海量数据将对应的位置1,如果要查询的数标志位为1,则有这个数,反之则无。
2015-06-30 18:28:20
437
原创 判断回文的方法总结
什么是回文? 回文就是一个字符串正反两种读取方式结果都一样。判断回文的方法:1.两个指针分别指向字符串的首和尾,看两端所指内容是否相等,如过一直相等,则是回文。时间O(n),空间O(1)2.使用一个链表,通过快慢指针找到中点和尾部,将后半部分链表逆转,然后从头和中间遍历链表,如果一直相等则是回文。3.使用栈,先将回文入栈,然后出栈和 原字符串比较,如果相等则是
2015-06-30 18:08:51
1225
原创 动态规划三部曲之解决最长公共子序列问题(三)
#includeusing namespace std;//该函数输出位置矩阵,返回最长长度int LCS(char s1[],int m,char s2[],int n,int **&results) { int **c=(int**)malloc(sizeof(int*)*(m+1)); int **result=(int**)malloc(sizeof(int*)*(m+1
2015-06-30 17:18:12
405
原创 动态规划三部曲之01背包问题的分析和实现(二)
用w[i]表示第i件物品的重量用v[i]表示第i件物品的价值用f[i][j]表示用能 装下总重量为j的背包去装前i件物品能够装最大的价值思考动态规划的第一点----最优子结构: 对于前i件物品,以及给定的包容量,要么第i件物品装进去,要么不装进去,f[i][j]必然存在于二者之一。思考动态规划的第二点----子问题重叠: 对于任意前k
2015-06-30 10:28:13
544
转载 动态规划三部曲之一个故事教你透彻理解动态规划(一)
通过金矿模型介绍动态规划 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出
2015-06-29 20:35:39
4792
6
原创 多路归并对1000 万无序数排序(外排序)
算法思路:首先根据内存要求将排序文件分成k份,然后循环读这k个文件分别进行排序。 然后用同时打开这k个文件,读出每个文件的第一个数字,找出其中最小的数字写到result.txt文件中并且让这个具有最小数字的文件读取下一个数字,继续找k个文件中的最小数字,直到k个文件都被读取完为止,result 中就是最后排完序的结果。多路归并,时间复杂度为O(k*n/k*logn/k )这种方法由于频繁进行
2015-06-29 18:03:56
607
原创 位图排序1000万的无序数(内存小于1M)
#include #include #include #include using namespace std; const int max_each_scan = 5000000; int main() { clock_t begin = clock(); bitset bit_map; bit_map.rese
2015-06-29 17:29:55
470
原创 如何产生1000万个无序数
#include #include #include using namespace std; const int size = 10000000; int num[size]; int main() { int n; FILE *fp = fopen("data.txt", "w"); assert(fp);
2015-06-29 17:22:54
390
原创 判断两链表相交的问题(分有环和无环,以及求第一个相交结点)
首先用一个函数判断两个链表是否有环 1.如果两个链表都没有环,则判断最后一个结点是否相等,如果相等,则相交,如果不等,则不想交 2.如果只有一个有环,则不相交 3.如果两个都有环,则看其中一个环里的点在另一个环里是否出现,如果出现则相交,否则不相交//判断是否有环,如果有返回true和环中结点,无返回false和最后一个结点typedef ElemType int
2015-06-29 16:33:51
491
原创 求子数组最大和
#includeusing namespace std;#define INF 9999;int method1(int a[],int n){ int max=-INF; int sum=0; for(int i=0;i<n;i++) { for(int j=i;j<n;j++) { for(int k=i;k<=j;k++) sum+=a[k];
2015-06-29 11:07:59
345
原创 求数组中和为某个值的一个组合
#include#includeusing namespace std;//给定一个和,求数组中和为这个值的一组数,O(n)bool findTwoNumOfSum(int a[],int n,int sum,int &num1,int &num2){ int i=0,j=n-1; while(i<j) { if(a[i]+a[j]>sum) j--; if(a[
2015-06-28 15:54:00
935
原创 c语言常见函数自编写
//1.子字符串查找,如果找到返回第一个字符下标,找不到返回-1 复杂度O(m*n)int strfind(const char * str,const char* substr){ if(str==NULL||substr==NULL) { return -1; } int len1=strlen(str); int len2=strlen(substr); if(len
2015-06-28 11:40:33
422
原创 四.求一组数据中最大的K个数
和上篇求最小的K个数有所区别的是,本篇用的是最小堆,其他类似。时间复杂度同样为n*logK;#includeusing namespace std;void adjustHeap(int b[],int s,int k){ int temp=b[s]; for(int i=2*s+1;i<=k;i=i*2+1) { if((i+1)b[i+1]) i++;
2015-06-27 10:37:19
379
原创 三.最小堆统计文章中频率前K个最高的词汇
算法思路:首先将文章中的单词进行哈希函数计算映射到哈希表,哈希表的每个节点包含了关键词以及出现次数,将哈希表记录成文件的形式。接着把哈希表前K个关键字按出现频率构成一个最小堆,然后遍历哈希表,当哈希表中元素的计数大于堆顶元素时,将其赋值给堆顶,同时调整最小堆,直到哈希表被遍历完,这样最终最小堆里面存储的关键词就是出现频率最高的Top K流程图如下:#include #
2015-06-26 16:19:10
659
原创 二.用最小堆方法找出海量数据中最小的k个数
思路:用数组b模拟海量数据的数组,数组a存放最小的k个数,首先将数组b的前k个数赋值给a,对a建最大堆,则此时a[0]存放a的最大元素,然后遍历b中k以后的数据和a[0]比较,如果比a[0]小,则赋值给a[0],并且对a进行重新的调整是a[0]仍然最大,这样知道把b遍历完为止。调整堆用时logk,遍历b用时n,时间复杂度nlogb#includeusing names
2015-06-26 12:21:20
486
原创 一.字符串左旋转问题
举个例子,abcef向左旋转两位得到cefab#includeusing namespace std;char* invert(char* start,char* end){ char *temp=start; char t; while(start<end&&start!=NULL&&end!=NULL) { t=*start; *start=*end;
2015-06-26 11:01:45
347
原创 最小生成树的 克鲁斯卡尔算法
#includeusing namespace std;//该算法的时间复杂度为O(elge);Kruskal算法的时间主要取决于边数,它较适合于稀疏图。#define MAX_VERTEX_SIZE 15#define MAX_EDGE_SIZE 15typedef char vertex;typedef struct edge{ int m; int n; int w;
2015-06-24 17:56:01
466
原创 最小生成树的prim算法实现
MST(Minimum Spanning Tree,最小生成树)问题有两种通用的解法,Prim算法就是其中之一,它是从点的方面考虑构建一颗MST,大致思想是:设图G顶点集合为U,首先任意选择图G中的一点作为起始点a,将该点加入集合V,再从集合U-V中找到另一点b使得点b到V中任意一点的权值最小,此时将b点也加入集合V;以此类推,现在的集合V={a,b},再从集合U-V中找到另一点c使得点c到V中任
2015-06-24 15:11:27
424
原创 各种排序算法
#includeusing namespace std;#define MAXSIZE 10//1.冒泡排序void bubble_sort(int a[],int n){ for(int i=0;i<n-1;i++) { for(int j=i;j<n;j++) { if(a[i]>a[j]) swap(a[i],a[j]); } }}//2.
2015-06-16 16:36:33
404
原创 哈希表的创建查询插入删除销毁
#includeusing namespace std;#define M 5//定义数据类型typedef int ElemType ;//定义哈希表上挂的链表的结点typedef struct Node{ ElemType data; struct Node *next;}Node,*pNode;//定义哈希表上的表槽typedef struct HashN
2015-06-15 17:52:42
1500
原创 查找二叉树的创建插入查找删除
#includeusing namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *lchild; struct Node *rchild;}*BSTree;bool search_BSTree(BSTree pTree,int key,BSTree par
2015-06-15 11:46:49
683
原创 二分查找
#includeusing namespace std;//二分查找等于某个数的坐标int bs1(int a[],int size,int v){ int low=0; int high=size-1; int mid; while(low<=high) { mid=low+(high-low)/2; cout<<low <<mid <<high<<endl; i
2015-06-14 13:03:25
321
转载 图的广度优先遍历BFS(分别以邻接矩阵和邻接链表实现)
算法描述: 设图G的初始状态是所有顶点均未被访问过,在G中的任选一顶点vi为初始出发点,则广度优先遍历 可定义如下:首先,访问初始出发点vi,接着依次访问vi的所有邻接点w1,w2,...,wk;然后,依次访问w1,w2,...,wk 的邻接的所有未被访问过的顶点,依次类推,直到图中所有的和初始点vi有路径相通的顶点都被访问过为止。算法实现:
2015-06-13 17:05:34
3789
原创 图的深度优先遍历DFS(分别以邻接矩阵和邻接表实现)
#includeusing namespace std;#define MAX_VEX_NUM 50typedef char VertexType; typedef enum{ UDG,DG}GraphType;typedef struct Graph{ VertexType name[MAX_VEX_NUM]; int adjMatrix[MAX_VEX_NUM][M
2015-06-13 12:07:03
5096
原创 二叉树的创建,以及递归前中后序以及层次遍历
#includeusing namespace std;typedef char ElemType ;typedef struct Node{ElemType data;struct Node *lChild;struct Node *rChild;}Node,*BtTree;void init(BtTree &bt){bt=NU
2015-06-11 20:54:43
467
转载 ListView异步加载网络数据
很多情况,我们需要从网络加载数据,这个时候我们需要异步的方法去加载,并且实现数据缓存到本地的功能。在主界面定义定义一个listview控件main.xml代码xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/re
2015-06-07 18:37:55
486
原创 Handler
Handler是Android消息模型最重要的一个组件,使用它可以在线程之间相互发送消息,实现线程之间的通信。处理使用Handler发送消息以外,通常需要继承Handler类,并重写handleMessage(Message msg) 方法, 接收消息并处理消息。下面通过一个实例来说明Handler的使用方法。例子的主要功能是:通过线程修改界面Button的内容,完整的代码如下:
2015-06-07 18:02:03
372
转载 Android Fragment 真正的完全解析(下)
转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/37992017上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种API,如果你还不了解,请看:Android Fragment 真正的完全解析(上)。本篇将介绍上篇博客提到的:如何管理Fragment回退栈,Fragment如何与Activity
2015-06-01 10:43:34
313
转载 Android Fragment 真正的完全解析(上)
转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/37970961自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~~~哈哈,是不是有点过~~~本篇博客力求为大家说明Fragment如何产生,什么是Fragment,Fragment生命周期,
2015-06-01 10:20:22
441
转载 Android 分析android 客户端保持session 不过期的方式
首先要知道session和cookie,session是存在服务器的的用来区分不同的会话的,是一种服务器机制,cookie 是客户端登陆服务器以后,服务器需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否包含了一个session标识-称为session id,如果已经包含一个session id则说明以前已经为此客户创建过session,服务器就按照sessi
2015-05-30 13:53:39
2112
转载 Android studio集成genymotion
Genymotion是一款功能强大的Android模拟器,不仅速度流畅而且还功能齐全,支持windows、linux和Mac OS等操作系统。对于Android开发来说,使用这款模拟器也是很不错的选择。本文将会对Android Studio如何集成Genymotion做一下简单的描述。1、下载安装Genymotion及VirtualBox由于Genymotion的运行是基于
2015-05-27 19:02:47
481
转载 Android图片上传的客户端和服务端代码
在之前一段的项目中,使用Java模仿Http Post方式发送参数以及文件,单纯的传递参数或者文件可以使用URLConnection进行相应的处理。 但是项目中涉及到既要传递普通参数,也要传递多个文件(不是单纯的传递XML文件)。在网上寻找之后,发现是使用HttClient来进行响应的操作,起初尝试多次依然不能传递参数和传递文件,后来发现时因为当使用HttpClient时
2015-05-24 12:11:40
612
转载 Android图片上传,可以选择多张图片,缩放预览,拍照上传等
仿照微信,朋友圈分享图片功能 。可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 。很不错的源码,大家有需要可以下载看看 。微信微信微信微信下载地址 : 微信上传图片源码//部分代码如下[java] view pla
2015-05-24 12:09:37
1404
转载 Android仿微信底部菜单栏+顶部菜单栏(附源码)
林炳文Evankaka原创作品。转载请注明出处http://blog.youkuaiyun.com/evankaka 本文要实现仿微信微信底部菜单栏+顶部菜单栏,采用ViewPage来做,每一个page对应一个XML,当手指在ViewPage左右滑动时,就相应显示不同的page(其实就是xml)并且同时改变底部菜单按钮的图片变暗或变亮,同时如果点击底部菜单按钮,左右滑动page(其实
2015-05-23 11:35:48
904
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人