- 博客(52)
- 资源 (19)
- 收藏
- 关注
原创 java变量的初始化
一、变量初始化规则规则1(无继承情况下):对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器规则2(有继承情况下):子类的静态变量和静态初始化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成总之:先静后动,先父后子,从上到下,先变量后构造二、变量初始化应该注意的几点1.
2015-12-06 15:02:05
782
转载 listview中的item增加事件
ListView的setOnItemClickListener事件和ListView中Item中包含的子控件(比如button)的click事件共存的解决办法:在ListView的item的xml配置文件的根节点添加属性android:descendantFocusability="blocksDescendants",并且,在要添加事件的子控件(如button)的属性里添加andro
2015-07-15 22:06:05
624
转载 mysql性能优化
文章转自:http://coolshell.cn/articles/1846.html今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而
2015-07-04 14:54:44
506
转载 B树 B-树 B+树 B*树
文章转自:http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.htmlB树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其
2015-07-04 09:14:11
331
转载 java中sleep与wait的区别
转自:http://blog.youkuaiyun.com/shineflowers/article/details/400474791. Java中sleep和wait的区别① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要
2015-06-15 18:21:33
1574
原创 equal与hashcode的说明
equal与hashcode的说明 要判断两个对象是否相等,需要用equal来判断这两个对象的地址是否完全一样,有些情况判断两个对象是否相等只需要判断这两个对象的value是否相等,所以需要重写equal来实现,例如set容器中,不能有两个相同的对象,所以需要重写对象的equal,但当容器中的对象比较多时,需要对容器中的对象进行线性比较,性能比较低,所以需要重写hashcode,通过散射来直
2015-06-12 10:02:48
720
原创 mybatis对mysql进行分页
Mybatis对mysql数据库分页在generator中加入插件,下载地址http://download.youkuaiyun.com/detail/shunlongjin/6937045自动生成java对象和mapper后,可以对数据库进行分页处理,具体代码如下
2015-06-10 15:36:58
1149
转载 java动态代理
转自:http://langyu.iteye.com/blog/410071没事的时候翻看lang.reflect包下的代码,发现有两部分内容:涉及反射和动态代理。 很多地方都可以看到动态代理的影子,只是一直没仔细看下。 在学习之前,先提出几个问题,带着问题来看代码: 1.什么是动态代理? 2.为什么使用动态代理? 3.使用它有哪些好处? 4.哪些地方需要动态代
2015-06-07 19:43:38
287
转载 数据连接池的工作原理
转自:http://www.uml.org.cn/sjjm/201004153.asp随着信息技术的高速发展与广泛应用,数据库技术在信息技术领域中的位置越来越重要,尤其是网络应用和电子商务的迅速发展,都需要数据库技术支持动 态Web站点的运行,而传统的开发模式是:首先在主程序(如Servlet、Beans)中建立数据库连接;然后进行SQL操作,对数据库中的对象进行查 询、修改和删除等操作;最后
2015-06-07 09:41:51
3077
原创 在servlet注入service
在servlet不能使用@Autowired来注入需要的service、可以直接从容器中获取,代码如下: ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); StudentDetailMappe
2015-04-25 16:30:36
894
转载 sizeof用法总结
http://blog.sina.com.cn/s/blog_7c983ca60100yfdv.html#SinaEditor_Temp_FontName
2015-04-18 19:35:03
341
转载 海量数据处理
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率
2015-03-25 19:07:31
334
转载 二叉树转化成双向链表
将排序二叉树转化成双向链表,应该是一道很常见的面试题目,网上的实现比较多,有用递归也有用中序遍历法的。看到一位外国友人的实现,还是比较清晰的,思路如下:1,如果左子树不为null,处理左子树 1.a)递归转化左子树为双向链表; 1.b)找出根结点的前驱节点(是左子树的最右的节点) 1.c)将上一步找出的节点和根结点连接起来2,如果右子树不为nul
2015-03-17 20:20:44
1355
原创 面试经验及题目分享
自己实习了一段时间,信心满满地去面试,以为可以从容地应对,但事实并不是那样,自己在做项目的时候,理论知识还是有待欠缺,对很多问题的理解都是一知半解,没办法让人满意,下面是自己整理的自己这次面试中一些题目,分享给大家。同步与异步的区别同步:发送一个请求,等待返回,然后再发送下一个请求异步:发送一个请求,不等待返回,随时可以再发送下一个请求同步可以避免出现死锁,读脏数据的发生,一般共享
2015-03-15 09:56:11
1135
原创 数组的组合数
/***********************************************//**********功能:数组的组合数*****************************//**********时间:2015 3 13**************************//**********作者:xiaozhi xiong*****************//*
2015-03-13 20:05:25
806
原创 约瑟夫环问题
有N个人围一圈依次报数,数到3的倍数的人出列,问当只剩一个人时他原来的位子在哪里?/*约瑟夫环问题---单向循环链表实现*//**********************************//**********Date:2015.3.11*********//*********author:xiaozhi xiong***//**************************
2015-03-11 18:18:59
557
原创 寻找最小的k个数
寻找最小的k个数题目描述:5.查找最小的k个元素题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。算法1:直接排序,找到最小的k个数算法2:将数组a中的前k个数放到数组b中,在将a中后面n-k个数的值与b中最大的数比较,如果a中的数更小,将a中的这个数与b中的最大数交换,当然也可以将b建成一个最大堆代
2015-02-11 11:19:09
612
原创 在二元树中找出和为某一值的所有路径
输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12 和10, 5, 7。思路:1、当访问到某一节点时,把该结
2015-02-09 16:13:39
503
转载 求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。因为是O(N)的复杂度,因此需采用的DP的思想,记录下当前元素之和(为其最优
2015-02-09 10:26:37
385
原创 在栈中增加min函数
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。算法:在栈中设置一个辅助栈来保存最小值代码:/** 为栈增加一个min函数,获取栈中的最小值,复杂度为1** author :xiaozhi xiong ** date:2014-02-08**/ #include "stdio.h"#includ
2015-02-08 11:06:01
680
原创 C++中vector解析
1vector就是动态数组.它也是在堆中分配内存,元素连续存放,有保留内存,如果减少大小后,内存也不会释放.如果新值>当前大小时才会再分配内存.它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大
2015-01-31 15:07:06
793
原创 解析C++中虚函数
C++中的一个重要特征是多态即使用同名函数实现不同的功能,多态分为编译时的多态和运行时的多态,编译时的多态主要是指运算符重载和函数重载,而运行时的多态主要是指派生类和虚函数的多态,即使用基类的应用或指针可以引用派生类中的方法(不能引用基类中没有而派生类中新增的方法),如果没有指明是虚函数,指向派生类的指针或引用将会直接调用基类中的方法。这是由于如果定义为虚函数,将会在对象中增加一个虚函数表,来存放
2015-01-30 15:45:24
803
原创 寻找两个链表的交点
1首先判断是否有交点2找到第一个交点方法一:使用暴力法,时间复杂度为N*N方法二:判断是否相交的办法是最后一个节点是否相同,如果相同,则相交,否则不相交两个链表的长度分别为len1,len2,在长的链表的第abs(len1-len2)开始和短链表一次比较,找到第一个相同的那个链表,时间复杂度为3*N
2015-01-29 20:23:57
573
原创 求两个数组的交集
方法:先用A创建 有序二叉树,然后用B中的数值依次在二叉树中寻找,如果找到了,就增加到交集数组中复杂度:创建二叉树的复杂度logn,在二叉树中查找的复杂度是 logn*(m+1) #include"stdio.h"int commonArray[20];int com_len=0;struct node{ int data; struct node *lNode; struc
2015-01-28 18:14:36
556
原创 按值传递和引用传递的区别
按值传递:在方法中使用这个变量将会复制一个临时变量,返回时会销毁这个临时变量引用传递:不需要创建临时变量和销毁临时变量,节约时间和空间,如果可以选择,优先选择引用传递 #include"stdio.h"#include using namespace std;class CopyTest{private : char *name; int len; static int
2015-01-28 15:05:03
538
原创 杨氏数组查找
1. 简述 杨氏矩阵中,每行元素是递增的,每列元素也是递增的。即a[i][j]2. 原理 从矩阵的左下角或者矩阵的右上角处开始递归运行,以左下角为例,value为要查找的值,(i,j)为当前矩阵中的位置,初始为(M-1, 0)。 如果超过了矩阵范围则说明不存在这样的元素,返回-1,-1。 否则的话,如果当前位置的值大于value,说明要移
2015-01-27 21:46:21
576
原创 传递二维数组到函数中
要对二维数组a[4][3]进行数据处理,可以传入二维数组的首地址&a[0][0],在函数中可以使用*(a+i*4+j)来访问数组中的每一个值例如: printInt(&b[0][0]);void printInt(int *a){ int i=0,j=0; for(;i<3;i++) { for(j=0;j<4;j++) printf("%d ",*(a+i*4+j))
2015-01-27 21:40:31
469
原创 函数模板、重载解析
为了交换int的两个值,我们可以定义一个交换int的函数swap(int a,int b),但是当我们要交换一个char的值时,我们又要定义一个char的swap函数,没定义一种类型的函数,我们都要定义相应的函数,为了避免因为类型不同而重新定义函数,我们可以使用函数模板( 函数的功能相同,只是处理数据的类型不同,统一定义一个模板)。//创建模板1template void Swap( T
2015-01-26 22:13:53
393
原创 创建对象中构造函数和析构函数
在创建一个对象实例,先调用父类的构造函数,再调用派生类在销毁一个对象实例时,先销毁派生类,在销毁父类的析构函数A继承Bclass A{private: char name[10];public:A (){ cout<<"A构造函数\n";}~A(){ cout<<"A析构函数\n";}};class B:public A{ public: B()
2015-01-26 19:16:26
693
转载 字符串四则运算
最近做了一道华为的机试题。感觉自己的方法比网上的简洁。3. 简单四则运算问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注1、表达式只含 +, -, *, / 四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的
2015-01-09 15:22:59
707
转载 int 占用多少字节
本文转自http://charlesxie.blog.51cto.com/2236179/939680最近在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个字节。后来,查了The C Programming language这本书,里面有一句话是这样的:Each compiler is free to choose appropriate sizes fo
2015-01-08 19:00:44
2662
原创 字符串与整型的相互转换
void itoa (int n,char s[]){int i,j,sign;if((sign=n)n=-n;//使n成为正数i=0;do{ s[i++]=n%10+'0';//取下一个数字}while ((n/=10)>0);//删除该数字if(signs[i++]='-';s[i]='\0';for(j=i;j>=0;j--)//
2015-01-08 18:41:35
326
原创 四个人晚上过桥
四个人过桥分别用时1,2,5,10.破桥只能担得起两个人,而且过桥时间得按慢的那个计算。问在黑夜而且只有一个手电筒的情况下,怎么才能在17分钟之内过桥????? 第一步:1、2过桥,用时2分钟;第二步:1带电筒回来,用时1分钟;第三步:5、10过桥,用时10分钟;第四步:2带电筒回,用时2分钟;第五步:1、2过桥,用时2分钟;总共17分钟。
2015-01-06 10:33:15
1079
转载 25匹马赛跑
25匹马通过赛跑来决出前三名,每轮最多5匹马参赛,求最少需要几轮?条件:1、最多5匹马一组,可以决出本组比赛的次序。2、没有计时工具,假设马每轮的速度相同。=====================================================================每次都排除不能争夺前三名的马是关键7轮就可以了1。
2015-01-06 10:23:39
768
原创 深度排序对0-n进行全排序
/***从0-n的整数的全排序*使用深度搜索*/#include"stdio.h"int n;int a[10];int book[10];int num_sort;//深度搜索void dfs(int step){ int i; if(step==n+1) { for(i=1;i<=n;i++) printf("%d",a[i]); printf("
2014-10-24 08:26:06
507
原创 链表操作总结
#include"stdio.h"struct link{ int data; struct link *next;};//创建链表struct link *createLink(int *p,int num){ struct link *head; struct link *newNode; struct link *pre; int i; head=(struct li
2014-10-20 20:00:52
415
原创 二叉树操作
#include"stdio.h"struct Btree{ int data; struct Btree *right; struct Btree *left;};//查找节点struct Btree *findNode(struct Btree *tree,int data){ while(tree) { if(tree->data ==data) return
2014-10-19 16:03:08
381
原创 判断回文
#include"stdio.h"int HuiWen(char *str,int num){ int left,right; if(num%2==0) { left=num/2-1; right=num/2; } else{ left=num/2-1; right=num/2+1; } while(left>=0) { if(str[left]!=str
2014-10-19 09:00:29
329
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人