- 博客(45)
- 资源 (9)
- 收藏
- 关注
原创 字符编码与unicode那些事
每个程序员都应该弄明白的字符编码与Unicode那些事.1.预备知识1.1 字符字符是指计算机中使用的字母,数字,符号和其他字(中文,韩文等).1.2 编码 与 解码计算机使用二进制来存储数据,所以我们在屏幕上显示的所有字符,在计算机中都是用0和1表示的. 编码就是将我们屏幕中输入的字符转换为计算机可以识别的二进制的过程. 而解码就是将二进制转换为我们屏幕中所看到的字符的过程.2.字符编
2016-12-10 21:25:33
374
原创 Spring AOP各种概念
切面除了目标类以外的类(事务管理,日志记录,权限验证)都是切面通知切面里的方法就是通知连接点客户端调用哪个方法哪个方法就是连接点切入点相当于代理对象的方法被调用的条件织入形成代理对象的方法的过程就称为织入各种通知通知的针对目标方法来取名的前置通知后置通知异常通知最终通知环绕通知AOP的优势代理方法 = 目标方法 + 通知目标方法与通知是松耦合的
2016-08-25 22:06:48
277
原创 No.1 Two Sum
No.1 Two Sum题目Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution.例子Given nums = [2,
2016-07-28 13:44:48
269
原创 JSP&Servlet学习笔记(一)
URL的主要目的:以文字方式说明因特网上资源如何获得HTTP协议的两大特点:1.基于请求/响应模型客户端对服务器发出的一个取得资源的请求,服务器将要求的资源响应给客户端.每次联机只做一次请求/响应,是一种很简单的通信协议,没有请求就不会有响应2.无状态通信协议 在HTTP协议下,服务器端响应客户端之后,就不会记录客户端的信息,更不会去维护和客户端的状态.所以说H
2015-10-10 10:48:05
831
原创 快速排序
马上就校招了,复习一下基本的数据结构和算法.就从快排开始吧思路:利用分而治之的思想,利用递归即可public static void quickSort(int[] source,int start,int end){ if(start>=end) return; int base = source[start]; int i = start; int
2015-09-07 11:19:08
271
原创 面试题26:复杂链表复制
题目:实现一个函数,复制一个复杂链表,复杂链表中,每个节点除了有一个next指针指向下一个节点外,还有一个sibling指针指向链表中的任意节点或null节点import java.util.HashMap;import java.util.Map;public class Clone { public static Node clone(Node head){
2015-09-01 21:12:39
292
原创 面试题25:二叉树中和为某一值得路径
题目:输入一颗二叉树和一个整数,打印出二叉树中节点值得和为输入整数的所有路径分析:递归public class FindPath { public static void findPath(Node root,int target,ArrayList toPrint,int now){ if(root==null) return; now = now+roo
2015-09-01 20:55:00
342
原创 面试题24:二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历结果,如果是则返回true,不是返回false,假设输入的数组的任意两个数字都不相同思路:递归public class VerifySequenceOfBST { public static boolean verifySequenceOfBST(int[] source,int start,int end){
2015-09-01 20:39:15
325
原创 面试题:23从上往下打印二叉树
题目:从上往下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印思路:BFSpublic class PrintFromTopToBottom { public static void printFromTopToBottom(Node root){ if(root==null) return; Queue queue = new ArrayDequ
2015-09-01 16:57:27
290
原创 面试题22:栈的压入弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,判断第二个序列是否在该栈的弹出序列,假设压入栈的所有数字均不相等思路:用一个辅助栈即可mport java.util.Stack;public class IsPopOrder { public static void main(String[] args) { int[] a= {1,2,3,4,5}; in
2015-09-01 16:24:52
295
原创 面试题21:包含min函数的栈
题目:定义栈的数据结构,在该类型中实现一个能够得到的栈的最小元素的min函数.在该栈中,调用min,push,pop都是O(1)的复杂度import java.util.Stack;public class StackWithMin { private Stack dataStack; private Stack minStack; public StackWithMi
2015-09-01 16:03:23
277
原创 面试题20:顺时针打印矩形
题目:输入一个矩形,按照从外向里以顺时针的顺序依次打印出每个数字思路:打印即可public class PrintMatrixClockwisely { public static void main(String[] args) { int[][] a = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
2015-09-01 15:52:20
440
原创 mysql查询练习(一)
这套练习题是基于oracle的scott库中的empno,dept,salegrade表来进行的.只不过是用mysql.这个库我已经导出上传到csdn了,下载地址:http://download.youkuaiyun.com/detail/llj398110112/9069303好了,下面是练习题一和答案--查询,显示所有员工姓名,部门编号,部门名称select e.ename,d
2015-09-01 11:19:37
13167
1
原创 面试题19:二叉树镜像
题目:完成一个函数,输入一个二叉树,该函数输入它的镜像思路:递归即可public class MirrorRecursively { public static void mirrorRecursively(Node root){ if(root==null) return; Node temp = root.getLeft(); root.setLeft
2015-08-31 15:14:20
344
原创 面试题18:树的子结构
题目:输入两棵二叉树A,B判断B是不是A的子结构.思路:递归遍历A,找到节点相同点后,再递归查看即可public class HasSubTree { public static boolean hasSubTree(Node p,Node c){ boolean ans = false; if(p!=null && c!=null){ if(p.getDa
2015-08-31 14:47:07
306
原创 面试题17:合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的思路:递归可解public class Merge { public static Node merge(Node headA,Node headB){ if(headA==null) return headB; else if(headB==null) return
2015-08-31 11:29:38
281
原创 面试题16:翻转链表
题目:定义一个函数,输入一个链表的头结点,反转链表并输出反转后的链表头结点思路:三个指针,pre指向已经完成的链表头结点,middle指向要操作的结点,next指向没操作的节点public class ReverseList { public static Node reverseList(Node head){ if(head==null) return nul
2015-08-31 11:12:43
304
原创 面试题15:链表中倒数第K个节点
题目:输入一个链表,输出该链表倒数第K个节点的值思路:两个指针扫一遍就行了public class FindKthToTail { public static void main(String[] args) { Node[] nodes = new Node[10]; for(int i=0;i<10;i++){ nodes[i] = new Node(i);
2015-08-31 10:22:50
227
原创 面试题14:调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数调整该数组中的数字的顺序,使得所有奇数位于数组的前半部门,偶数位于后半部门思路:类似快排的思路public class ReorderOddEven { public static void main(String[] args) { int[] a ={1,2,3,4,5,6,7,8}; reorderOddEven(a); Sys
2015-08-31 09:54:49
333
原创 面试题13:在O(1)时间删除链表节点
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点.public class DeleteNode { /* * 要求时间复杂度O(1),只要被删除节点不是最后一个都可以O(1) * 如果是最后一个,并且链表中不止一个节点,依旧需要O(n)的复杂度、 * 但是整体是O(1) * 这里头结点是无意义的. */ public s
2015-08-31 09:40:10
397
原创 面试题12:打印1到最大的n位数
题目:输入一个数字m,按顺序打印从1到最大的n位十进制.思路:打印就行了,考虑大数问题,可以用字符数组模拟加法,也可以使用全排列解法1:字符数组模拟加法public class PrintToMaxOfNDight_1 { public static void print_1(int n){ if(n<0){ return; } char[] toP
2015-08-30 20:40:43
320
原创 面试题11:数值的整数次方
题目:实现函数double Power(double base,int exponent)求base得exponent次方分析:正常算,考虑负数情况.public class Power { public static double power(double base,int exponent){ double result = 1; if(exponent>0){
2015-08-30 20:13:57
286
原创 面试题10:二进制中1的个数
题目:请实现一个函数,输入一个整数,输出该数二进制补码表示中1的个数分析:位运算,扫一遍二进制字符串两种都可以public class NumberOf1 { public static void main(String[] args) { System.out.println(numberOf1_1(9)); System.out.println(numberOf1_
2015-08-30 19:52:37
253
原创 面试题9:斐波那契数列
题目:对一个函数n,求斐波那契数列的第n项.思路:直接递归重复计算很多,直接循环就可以解public class Fibonacci { public static void main(String[] args) { for(int i=0;i<50;i++) System.out.println(fibonacci(i)); } public static lo
2015-08-30 19:37:11
316
原创 面试题8:旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的尾部,我们称之为数组的旋转,输入一个递增排序的数组的旋转,输出旋转数组的最小元素思路:直接扫一遍O(n) 利用二分搜索的思想O(logn)->这种搜索对特例要特殊处理public class GetMin { public static void main(String[] args) { int[]a ={1,0,1,1,
2015-08-30 19:29:27
242
原创 面试题7:用两个栈实现队列
题目:用两个栈实现一个队列.实现两个函数:appendTail和deleteHead思路:画图分析一下即可import java.util.Stack;public class Stack2Queue { private Stack s1; private Stack s2; private int size; public Stack2Queue() {
2015-08-30 16:31:59
300
原创 面试题6:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.思路:递归即可public class BuildTree { public static void main(String[] args) { int[] first = {1,2,4,7,3,5,6,8}; int[] middle = {4,7,2,1,5,3,8,6}; Node root =
2015-08-30 16:22:33
299
原创 面试题5:从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个节点分析:利用栈即可解决import java.util.Stack;public class ReverseLinkedList { public static void main(String[] args) { Node[] nodes = new Node[10]; for(int i=0;i<10;i
2015-08-30 15:56:34
318
原创 面试题4:替换空格
题目:实现一个函数,把字符串中的每个空格替换成"%20"public class ReplaceBlank { public static void main(String[] args) { System.out.println(toAns("We are Happy")); System.out.println(toAns("We are Hap ")); Sys
2015-08-30 15:48:05
322
原创 面试题3:二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,请完成一个函数,输入这样一个数组和一个整数,判断数组中是否含有该整数public class Find { public static void main(String[] args) { int[][] a = new int[][]{ {1,2,8,9}, {
2015-08-30 15:37:49
399
原创 面试题2:实现一个Singleton模式
public class Singleton { //内部持有Singleton唯一引用 private static Singleton instance; //构造器私有化,防止外部new对象 private Singleton(){} //利用锁加双重判断生成单例对象实例,并返回 public static Singleton getInstance(){ if
2015-08-30 15:21:01
413
原创 深入了解Java虚拟机读书笔记(一)JVM内存区域
一.运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机的进程启动而存在,有的区域则是依赖用户线程的启动和结束的建立和销毁. 二.具体分析2.1 程序计数器程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字
2015-08-30 15:08:21
543
原创 Action中访问Servlet API
Struts2提供两种访问方式:①伪访问:借助ActionContext---ActionContext没有构造方法,要使用static的getContext()方法来获取 ActionContext提供getSession()和getApplication()两个方法 来模拟访问HttpSession和ServletContext.
2015-06-05 16:48:55
420
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人