自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Calender

一、DATE、DAY_OF_YEAR、DAY_OF_MONTH的区别1.1 add(int field, int amount) 无区别 1.2 get(int field) calendar.get(Calendar.DATE) 获取年月日的日 calendar.get(Calendar.DAY_OF_YEAR) 获取年月日的日 calendar.get(Calendar.DA...

2018-08-30 17:55:27 752

原创 Mybatis多对多中的SQL(查询、删除、更新、插入)及表的设计

Mybatis一对多中的SQL(查询、删除、更新、插入)及表的设计 Mybatis一对一中的SQL(查询、删除、更新、插入)及表的设计1.1现实模型一个Project需要多个Developer来开发,一个Developer有多个Project开发任务。1.2实体类Projectpublic class Project{ private int id; private String

2017-04-22 10:52:42 4895

原创 Mybatis一对多中的SQL(查询、删除、更新、插入)及表的设计

1.1现实模型一个Teacher有多个Student,一个Student有一个Teacher,通过Teacher来管理Student1.2实体类Teacherpublic class Teacher{ private int id; private String name; private Set<Student> stus=new HashSet<Student>();

2017-04-21 17:16:08 6130 1

原创 Mybatis一对一中的SQL(查询、删除、更新、插入)及表的设计

mybatis

2017-04-21 16:09:06 1639

原创 Struts2之ServletActionContext、ActionContext、ActionInvocation

1、ActionContext api详解static ActionContext getContext():返回ActionContext对象 Map<String,Object> getApplication() :返回代表ServletContext的map Map<String,Object> getContextMap() :返回代表HttpServletRequest的map Ma

2016-12-10 20:50:34 571

原创 我的拖延症和依赖症

在南京呆了两年,我依然不记得离学校最近的地铁站的出站口是哪个,我依然不记得去高铁站该坐哪一路公交,所以我是一个路痴。出去坐地铁我总是跟着室友走,因为我不知道该坐几号线,该坐到哪一站,该走几号出站口。晚上洗衣机洗好的衣服,我一定会等到第二天再晾,学校要交的材料,我一定会等到截止时间前一个小时才能上交,垃圾篓我一定会等到垃圾溢出来才会倒,话费我一定要等到欠费了才去交,牙膏我一定要等到挤不出了才会去买,所

2016-09-23 00:29:35 544 1

原创 根据入栈顺序求出栈顺序

题目描述:给定一个序列B表示入栈的顺序,求所有的不可能出栈顺序和可能的出栈顺序 题目分析:当一个元素入栈后,紧着接着入栈的元素可以是该元素后面的任意一个元素,或者是该元素前面的离该元素最近的一个未出栈元素。import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Scan

2016-09-18 20:05:54 2722

原创 二叉树的四种遍历方式

1、前序遍历 前序遍历即先遍历完左子树,再访问父节点,最后遍历完右子树public class T1 { static class Node { int val; Node left; Node right; public Node(int val,Node left,Node right) {

2016-09-14 12:32:51 2321

原创 最大公约数和最小公倍数

最大公约数 方法1:欧几里得法 设f(a,b)表示a和b的最大公约数(a>=b),则根据欧几里得定理有:f(a,b)=f(b,a%b) 证明: 设r=a/b,q=a%b 则有a=b*r+q,则q=a-b*r, 设d=f(a,b),则a/d=0,b/d=0,q/d=(a-b*r)/d=0,所以d也是q的约数。 现在的重点就是证明d=f(b,q) 设D=f(b,q),则有d<=D=f(b

2016-09-14 11:55:41 310

原创 百度笔试-房屋群

题目大意:为了进行城市规划,需要计算一个住宅区的住宅数目。该住宅区的俯视图已经做好,并规划成一个n×m的网格,如果某个网格单元具有屋顶的一部分,则向其赋值1,否则赋值0,由值为1的相邻单元组成的簇认定为一个单独住宅。对角放置的值为1的网格不被十位同一住宅区。 输入:n×m的二维数组,n表示行,m表示列 输出:整数k表示住宅的总数目import java.util.LinkedList;impo

2016-09-14 09:24:02 531

原创 求长度为n的序列中最大的m个数

思路1:最小堆,时间复杂度O(nlogm) 分析: 1、建一个大小为m的最小堆,最小的元素在根部 2、遍历序列,若元素大于根部元素,则用该元素替换根部元素,并对最小堆进行调整,若元素小于等于根部原色,则不对最小堆做任何改变,这样遍历完整个序列后堆中的元素就是最大的m个元素public class T1 { public static void main(String[] arg

2016-09-13 18:48:39 1761

原创 网易校招笔试-暗黑串

题目描述:长度为n的字符串,只能由A,B,C组成,其中包含ABC子串 的为纯净串,不包含ABC子串的为暗黑串。求长度为n的所有串中暗黑串个个数。 例如:n=2时,暗黑串有AA,BB,CC,AB,AC,BA,BC,CA,CB一共9个暗黑串题目分析: 暗黑串无非就两种形式:以两个相同的字符结尾,以两个不同的字符结尾 f[i][0]:表示长度为i的字符串中以XX形式结尾的暗黑串的个数 f[i][1

2016-09-13 09:23:17 619

原创 美团笔试-人民币

题目大意:有1、5、10、20、100五种面值的人民币,要用这五种面值凑成n(1 public static void solve(int n) { //dp[i][j]:表示只使用p[1]~p[i]中的值凑成成j,能有多少种情况 int[] p={0,1,5,10,20,100}; int[][] dp=new int[p.length

2016-09-12 17:12:34 604

原创 中缀表达式转后缀表达式_求表达式的值

中缀转后缀需要遵守以下规则 1、操作数:直接输出 2、“(”:直接入栈 3、“)”:”将“(”以前的直接输出,并将“)”出栈(不输出) 4、运算符+-*/:将优先级不小于该运算符的操作符出栈,最后将该运算符入栈 5、最后将栈中的元素依次弹出 6、优先级*/大于+-大于()class InToSuf{ public List<String> solve(String[] op)/

2016-09-11 22:20:23 1166

原创 链表是否有环,若有求出环入口

思路:用p1、p2分别遍历链表head,p1每次走一步,p2每次走两步,若有环最终他们会在某一点相遇,此时将p2从头开始遍历链表,这一次他们相遇的结点就是环的入口证明: 设入口为join,他们第一次在pos相遇,join到pos的距离为x,环的大小为R,则第一次相遇时有: p1走过的距离为:S=lenA+x+mR p2走过的距离为:2S=lenA+x+nR 可得:lenA=(n-2m)R

2016-09-11 12:59:18 513

原创 链表相交问题

1、求两个链表是否相交 //判断两个链表是否相交,遍历两个链表至表尾,比较两个表尾是否相等 static boolean judge(Node list1,Node list2) { Node end1=list1; Node end2=list2; while(end1!=null&&end1.next!=null)

2016-09-11 12:28:22 392

原创 整数n的二进制形式中1的个数

方法1:通过将n的每一位与1做&,若结果为1则说明该位为1,否则为0。若n的二进制长度为k,则需要k次 static int sizeofone1(int n) { int cnt=0; while(n>0) { if ((n&1)==1) { cnt++;

2016-09-11 11:00:42 293

原创 链表反转系列

包括反转整个链表、从第k个节点开始反转链表 代码如下:package lianbiaofanzhuang;class Node{ int v; Node next; public Node(int v,Node next) { this.next=next; this.v=v; }}public class T1 { p

2016-09-10 17:01:54 476

原创 最长公共子串

1、最长公共子串与最长公共子序列的区别? 最长公共子序列在原序列中不要求连续,而最长公共子串要求在原序列中是连续的。分析:求两个子串x(x[0],x[1],……,x[n-1]),y(y[0],y[1],……,y[m-1])的最长公共子串,令dp[i][j]表示以x[i-1],y[j-1]结尾的最长公共子串的长度。则可以得出转态转移方程: import java.util.Scanner;//s1

2016-08-15 15:39:39 450

原创 最大流问题—Ford-Fulkerson

1、流网络流网络是一个有向图G=(V,E),图中的每条边(u,v)有一个非负的容量值,表示边(u,v)上可以流进的最大流量。图中有两个特殊的节点:源节点s和汇聚节点t。流网络有以下几个性质容量守恒:流经边(u,v)的流量不能大于(u,v)的容量流量守恒:除了s和t外,对于其它所有节点都有,流入该节点的流量等于流出该节点的流量2、最大流在一个给定的流网络G中,求出s到t的最大

2016-05-21 22:36:45 775

原创 拓扑排序

什么是拓排序对一个有向无环图G进行拓扑排序,是将G中所有的节点排成一个线性的序列,对于G中的任意两个顶点u,v,若(u,v)是图G上的一条边,则u在线性序列中出现在v的前面。拓扑排序的描述入度:对一个节点来说,入度就等于该节点入边的条数1、从有向图G中选取一个入度为0的节点2、从有向图G中删除该节点以及所有以它为尾的边重复以上两步直到图G为空,或者图G不为空但是找不到入度为

2016-05-21 11:05:31 471

原创 所有节点对的最短路径之Floyd-Warshall

Floyd的适用范围1、求所有节点对的最短路径2、边的权重可以为负3、不能存在负环路Floyd算法的描述Floyd实际上是一种动态规划的思想。假如图中有n个节点,编号为1~n,我们令d[k][i][j]表示只能使用1~k号节点作为中间节点时,节点i到j的最短路径距离。d[0][i][j]表示没有中间节点时,i到j的最短路径距离,d[1][i][j]表示只能有节点1作为中间节点时

2016-05-21 09:45:03 385

原创 单源最短路径之Bellman-Ford

Bellman-Ford的使用范围1、单源2、有负权重3、有向Bellman-Ford算法的描述最短路径估计值g(v):当前求得的源节点s到节点v最短距离最短路径d(v):源节点s带节点v的最短路径距离Bellman-Ford算法通过对所有的边进行松弛操作来渐渐地降低从源节点s到每个节点v的最短路径估计值g(v),直到g(v)=d(v)。Bellman-Ford算法

2016-05-20 20:27:06 880

原创 单源最短路径之dijkstra

Dijkstra算法使用的场合1、单源:求一个源节点s到其他某些节点的最短路径2、权重非负:节点之间的权重不能小于03、有向:结点之间的权重都是有向的Dijkstra的描述最短路径估计g(v):当前求得的s到v的最短距离(该路径不一定是最短路径)最短路径d(v):s到v的最短路径距离Dijkstra算法在运行的过程中维持的关键信息是一组点的集合S。从源节点s到该集合S中

2016-05-19 22:25:02 608

原创 排序七部曲之(七)希尔排序

希尔排序的原理:本质上是插入排序。插入排序在某些情况下效率是很高的,比如需要排序的序列基本有序时,插入排序的效率可以接近O(N)。那么问题在于,现实中的序列基本上都是不满足基本有序的,如何使一个序列在进行插入排序前是满足基本有序的呢?科学家希尔将插入排序进行了改进,提高了排序的效率。希尔排序的实现:将待排序列分割成若干个子序列,但子序列的不是逐段分割的,每个子序列由相隔某个增量的元素组成,

2016-05-18 17:44:26 368

原创 排序七部曲之(六)插入排序

插入排序的思想是:在一个有序序列中插入一个新的数,并使插入序列保持有序。经过N-1次插入就能对一个长度为N的序列完成排序。例如对长度为N的序列a,刚开始的有序序列只有一个元素,就是a[0],将a[1]插入到有序序列a[0]中,插入完成后,a[0]~a[1]成了有序序列,接着将a[2]插入到a[0]~a[1]中,插入完成后,a[0]~a[2]成了有序序列。一次类推,将a[3]……a[N-1]插入

2016-05-17 22:09:45 392

原创 排序七部曲之(五)归并排序

并归排序采用的是分——合的策略,什么是分?什么是合?我们举个例子,例如要对长度为n的序列a排序,我们可以将序列a均分成两个部分,并且对着两个部分分别进行排序,这便是分。将排好序的两个部分按顺序整合到一起,这便是合。这样通过先分再合,就对序列a进行了排序。并归序列的难点在于合,两个排好序的序列如何合并成一个序列呢?(本文采用小到的排序)通过比较两个序列的第一个数得到较小的一个,取该数赋值给合并序

2016-05-17 20:19:19 389

原创 多线程与synchronized关键字

在写这篇文章之前我看过一些关于多线程同步的文章,从他们的文章中总结了很多精华,也发现一些不足。很多文章都是从以下四个方面来分析的。1、synchronized修饰一个非静态函数,例如synchronized method()2、synchronized修饰一个静态函数,例如synchronized static method()3、synchronized修饰一个对象,例如synchr

2016-05-08 15:59:14 338

原创 Android事件分发机制完全解析

在阅读本文前,请先参考以下三篇文章Android-onInterceptTouchEvent()和onTouchEvent()总结Android事件分发机制完全解析,带你从源码的角度彻底理解(上)Android事件分发机制完全解析,带你从源码的角度彻底理解(下)在读完上面三篇文章以后,相信大家对事件分发机制有了一个比较清晰的认识,为了更好地理解事件分发机制,我在这里

2016-05-07 17:26:41 1659

转载 Android LayoutInflater深度解析 给你带来全新的认识

1、 题外话相信大家对LayoutInflate都不陌生,特别在ListView的Adapter的getView方法中基本都会出现,使用inflate方法去加载一个布局,用于ListView的每个Item的布局。Inflate有三个参数,我在初学Android的时候这么理解的:对于Inflate的三个参数(int resource, ViewGroup root, boolea

2016-05-06 16:41:44 423

原创 ScrollTo,ScrollBy是如何改变子View位置的

我们知道ScrollTo(int x,int y)、ScrollY(int x,int y)不会改变View本身的位置,但是可以改变子View和本身内容(onDraw中绘制的东西)的位置,口说无凭,下面用一个例子来说明MyView.javapublic class MyView extends ViewGroup{ Paint paint; public MyView

2016-04-08 12:37:21 1434

原创 排序七部曲之(四)快速排序

排序采取的是分治的策略。1、分区:在区间内选取一个基数X(一般是区间的第一个数),经过多次位置的交换使得X左边的数都小于或等于X,X右边的数都大于或等于X,这样该区间就被分成了两个区间2、对左右区间重复步骤1,直到区间内只剩下一个数(只有一个数就不用再进行步骤1)经过以上分析,可以知道快速排序的要点在于分区。分区采用的是一种挖坑+填坑的策略。挖坑+填坑这两个词实在是太抽象,用一个例

2016-03-26 15:01:43 481

原创 排序七部曲之(三)堆排序

堆排序的要点在于构建一个最大推或者最小堆。那么什么是最大堆、最小堆呢?概念介绍二叉堆:二叉堆是一棵完全二叉树二叉堆的性质:1、二叉堆的父节点的键值总是大于或者等于(小于或者等于)子节点的键值2、当父节点的键值大于或者等于子节点的键值时为最大堆,当父节点的键值小于或者等于子节点时时最小堆3、通常对于给定的结点i可以根据在数组中的位置求出其父节点的位置、左右子节点的位置,对于下

2016-03-25 10:41:11 491

原创 排序七部曲之(二)冒泡法

例如要对27 15 34 8 19 1 6进行小到大排序1、从后往前进行,每个数和它前面的第一个数比较,若小于前面的数则互相交换位置,这样经过一轮比较后最小的数就到了第一个位置2、对a[1]~a[6]按照步骤1找出其中最小的放到a[1]中3、按照以上方式经过n-1次完成排序 static void bubbleSort(){ for(int i=0;i<n-1;i++){

2016-03-24 19:33:24 323

原创 排序七部曲之(一)直接选择排序

例如要对27 15 34 8 19 1 6进行小到大排序1、通过将a[0]与其余5个数对比交换(将小的那个放在下标为0的位置),这样a[0]出就是最小的数2、对剩下的a[1]~a[5]采用同样的方式找出其中最小的数放到a[1]处3、按照这个思路找出每个位置对应的数,排序完成 static void simpleSort(){ for(int i=0;i<n-1;i++){

2016-03-24 19:10:08 375

原创 Android图像处理之Canvas

Canvas的相关函数clip打头的函数表示对canvas裁剪成指定的形状void clipPath(Path path)void clipPath(Path path,Region.op op)void clipRect(RectF rect,Region.op op)void clipRect(Rect rect,Region.op op)void clipRect

2016-03-23 15:52:20 728

原创 Android图像处理值Region

Region.op:当两个区域重合时该如何处理,有6个取值:DIFFERENCE::从region1中减去region2INTERSECT:区region1和region3部分REPLACE:用region2替换region1REVERCE_DIFFERENCE:从region2中减去region1UNION:合并region1和region2XOR:取region1和re

2016-03-23 09:48:09 922

原创 Android图像处理之Path

Path路径的意思,任何图形都可以用它来表示,相比于Rect、Cycle、Line等它非常灵活,下面介绍Path的相关函数Path.Direction:Pth的方向,有两个值CCW、CW,CCW表示逆时针,CW表示顺时针Pth.FillType:Path的填充方式,有4个取值EVEN_ODD、WINDING、INVERSE_EVEN_ODD、INVERSE_WINDINGPth.Op:

2016-03-22 21:13:04 1662

原创 Android图像处理之Paint

下面介绍Paint的一些常用函数int getAlpha():返回颜色的透明度属性int getColor():返回画笔的颜色属性int getFlags():返回画笔的标签Paint.cap getStrokeCap():返回画笔的形状Paint.join getStrokeJoin():返回结合处的样式float getStrokeMiter():返回画笔的倾斜度f

2016-03-19 21:35:24 2774

原创 android Matrix的pre、post、set三种变形方式

在Matrix中,pre、post、set都有队应的Rotate、Scale、Translate、Skew函数,每个函数的效果都可以看成是一个3x3矩阵与matrix的乘积。对于同样的函数f()的pre、post、set形式,该函数f()可用同一个矩阵A表示,则pref()所做的工作就是matrix=matrix*A,postf()所做的工作就是matrix=A*matrix,setf()所做

2016-03-18 09:59:38 2481

空空如也

空空如也

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

TA关注的人

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