- 博客(36)
- 资源 (2)
- 收藏
- 关注
原创 HTTP权威指南-缓存机制算法
缓存机制详细算法缓存只需要计算两个值:已缓存副本的使用期(age),和已缓存副本的新鲜生存期(freshness lefetime)使用期就是自从服务器将其发送出来(或者最后一次被服务器再验证)之后“老去”的总时间(!服务器总是记录所有文档的最新版本)。但是缓存可能不知道文档是来自上游缓存还是来自服务器的,所以它不能假设文档是最新的。它必须根据显式的Age首部(优先),或者通过对服务器生成
2014-04-25 19:37:43
751
转载 《Thinking in Java》的Java编程规范-设计思想
1, Elegance always pays off. 优雅总是物有所值。-------ps:没有完全理解
2014-04-14 14:02:33
555
原创 Future的使用,不是应用哦
package org.test.current.future;import java.util.Random;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.Executor;import java.util.
2014-04-11 11:56:00
624
原创 单例模式的实现技巧
package org.test.singleton;public class Singleton { private Singleton(){ System.out.println("创建单例模式可能会比较慢"); } /** * version1.0 * 构造函数必须私有化, * 成员变量instance和geiInstance必须是静态的 * 简单,缺陷:没有延
2014-04-09 21:10:36
527
原创 死循环的另外一种写法
class aa{ bb b;// = new bb(); public bb getB() { return new bb(); } public void setB(bb b) { this.b = b; }}class bb{ aa a;// = new aa(); public aa getA() { return new aa(); } public v
2014-04-08 21:03:05
690
原创 观察者模式-气象台的实现与应用
*观察者模式典型实现方式:1、定义2个接口:观察者(通知)接口、被观察者(主题)接口 * 2、定义2个类,观察者对象实现观察者接口、主题类实现被观者接口 * 3、主题类注册自己需要通知的观察者 * 4、主题类某个业务逻辑发生时通知观察者对象,每个观察者执行自己的业务逻辑。
2014-04-08 20:04:43
670
原创 蜀军大战吴军-策略模式
策略模式故事背景:刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开能解决棘手问题,嘿,还别说,真解决了大问题,搞到最后是周瑜陪了夫人又折兵,那咱们先看看这个场景是什么样子的。 先说说这个场景中的要素:三个妙计,一个锦囊,一个赵云,妙计是亮哥给的,妙计放在锦囊里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊取出妙计,执行,然后获胜
2014-04-02 17:36:10
1149
原创 简单工厂方法与工厂方法
简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接受的参数的不同来返回不同的实例(一般情况下不修改代码的话,是无法扩展的)图不是我画的,Java实现代码//IDataSource.javapublic interface IDataSource { void LinkDataBase();}//MicroftSQL.javapublic class MicrofSQL imple
2014-04-02 14:21:22
642
原创 java调试技巧
1 System.out.println() System.err.println() Logger.getGlobal().info()直接调试2 每个类写一个main,单元测试3 JUnit4 日志代理5 throwable的printStackTrace6 堆栈跟踪显示在System.err上,new Throwable().printStackTrace(PrintWr
2014-03-28 21:58:13
503
原创 异常的理解
所有的异常都是Throwable继承而来的,它的第一层子类是Error 和ExceptionError类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。Exception两个分支RuntimeException(有程序错误导致的异常包括:错误的类型转换、数组访问越界、访问空指针)IOException(试图在文件尾部后面读取数据、试图打开一个不存在的文件、试图根据给定的字符串查找
2014-03-28 18:06:22
482
原创 并发编程基础入门需要注意的问题
1 可变状态是至关重要的 所有的并发问题都可以归结为如何协调对并发状态的访问,可变状态越少,就越容易确保线程安全性2 尽量将域声明为final类型,除非需要它们是可变的3 不可变对象一定是线程安全的 不可变对象能极大地降低并发编程的复杂性。它们更加简单而且安全,可以任意共享而无需使用加锁或保护性复制等机制。4 封装有助于管理复杂性 在编写线程安全的程序时,
2014-03-28 12:00:45
516
原创 Java动态绑定的理解-调用对象方法的执行过程
1,编译器查看对象的声明类型和方法名。假设调用x.f(param),且隐式参数x声明为C类的对象。需要注意的是:有可能存在多个名字为f,但参数类型不一样的方法。例如,f(int),f(String).编译器会一一列举所有C类中名为F的方法和其超累中访问属性为public且名为f的方法(超类的private方法不可以直接方法)至此,编译器已获得所有可能被调用的候选方法。2,接下来,编译器将查
2014-03-27 21:14:59
909
原创 内部类的隐式使用this逸出问题
原文解决http://stackoverflow.com/questions/1588420/how-does-this-escape-the-constructor-in-java例如: 在一个构造方法中,你创建了一个EventListener内部类(它隐含的引用了当前对象this的方法),并注册到一个监听中。》因此你的对象就可能被另一个线程使用,尽管它没有完成初始化。
2014-03-27 15:23:15
1818
原创 HTTP method POST is not supported by this URL
HttpServlet重写的doGet和doPost方法的时候,不应该super,具体再研究
2014-03-25 10:58:57
643
原创 复习
深复制:所有基本数据类型的赋值 Object.clone()、String浅复制:引用数据类型的赋值,对于数组本身的复制是深复制,但是对于数组的每一个元素是浅复制。策略模式Comparator接口/*指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。通过将不同的算法独立实现,并使他们之间可互相替换,从而使算法的变化独立于使用算法的客户*/ 比较常用Array.sort使用了
2014-03-21 12:56:01
648
原创 面向对象较为重要的概念
结构化编程:循环、分支,软件工程要解决代码的重用,结构化编程的代码重用性不好 面向对象:把我们的问题分解成是由对象相互协作产生的,把软件工作看成对象与对象之间的相互协作。可以被视作一种在程序中包含各种独立而又互相调用的单位和对象的思想,传统的程序设计主张将程序看做一系列的函数的结合或者就是一系列对电脑下达的指令,面向对象程序设计了程序的灵活性和可维护性 面向对象编程:系统
2014-03-21 12:55:26
657
原创 淘宝经营策略-小谈操盘手
目前淘宝的主要发展是以淘宝的流量来给天猫输血,在tmall出生的第一天就已经能知道,tmall将会成为马云的战略性产品,taobao很多原创性和单一产品价值相对较高的宝贝商家将会逐步转向tmall、jd等大型商城,留下在淘宝的,只会因经营模式上的差别以及商品性质问题而不转移去其他平台,在将来,淘宝更多的标签将会是[二手][虚拟服务][点卡充值]等。在大天猫的前提下,小商家如果遵从现状,那么还可
2013-12-28 23:21:19
808
原创 微软面试-101-有一个整数数组,请求出两两之差绝对值最小的值,
//1、有一个整数数组,请求出两两之差绝对值最小的值,//记住,只要得出最小值即可,不需要求出是哪两个数。////O(N+NlogN)解法//排序//区最小相邻差绝对值 //O(N+N)解法//思路 设原数组为a[] = a1 a2 a3 a4 a5 a6 a7 a8//得数组 b[a.length-1] = a1-a2 a2-a3 a3-a4 a5-a6 a6-a7 a7-a8
2013-11-22 11:56:44
1805
原创 java集合框架图
Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。实现类:8个实现类(实线表示),对接口的具体实现。· Collection 接口是一组允许重复的对
2013-11-20 12:00:27
891
原创 微软等面试100题筛选答案-25-求最长连续数字子串
//写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)//功能://在字符串中找出连续最长的数字串,并把这个串的长度返回,//并把这个最长数字串付给其中一个函数参数outputstr所指内存。//例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,//outputst
2013-11-19 10:27:56
983
原创 微软等面试100题筛选答案-5-求K小
较为详细的分析http://blog.csdn.net/v_JULY_v/article/details/6370650//题目:输入n个整数,输出其中最小的k个。//例如输入1,2,3,4,5,6,7和8这8个数字,//则最小的4个数字为1,2,3和4。//选择K小/K大//解法,建立K大小的已经排序的数组/堆/二叉树,跟着维持这个解空间的大小,插入n个数#include "std
2013-11-18 10:13:55
773
原创 微软等面试100题筛选答案-3-求子数组最大和
http://blog.csdn.net/byluo/article/details/15498813//输入一个整形数组,数组里有正数也有负数。//数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。//求所有子数组的和的最大值。要求时间复杂度为O(n)。//最大子段和#include "stdafx.h"#includeusing namespace std;
2013-11-18 09:37:30
890
原创 微软等面试100题筛选答案-2-设计包含min函数的栈
//定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。//要求函数min、push以及pop的时间复杂度都是O(1)。#include "stdafx.h"#include using namespace std;templateclass StackSuppliedMin{public: vector datas; vector minStack; void
2013-11-18 09:29:24
881
原创 微软等面试100题筛选答案-1-二元查找树转换成一个排序的双向链表
//输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。//要求不能创建任何新的结点,只调整指针的指向。#include #include "stdafx.h"#include using namespace std;struct BSTreeNode{ int m_nValue; // value of node BSTreeNode *m_pLeft; /
2013-11-18 09:09:06
778
原创 二叉查找数C++ 数组模拟二叉树及面向对象实现
数组实现#include "stdafx.h"#include using namespace std;#define iArrSize sizeof(iArr)/sizeof(iArr[0])void inertValue(int *iBinTree, int iNode, int iValue){ if (iBinTree[iNode] == 0){//默认设定不对0插入
2013-11-14 11:43:46
781
原创 动态规划、贪心、dynamic programming(DP)
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶
2013-11-12 10:44:10
1298
原创 动态规划问题-DP 最大子段和O(n)解决方法
//已知 有9,-8,1,-10,88,4,-5,7,9,-100,求最大子段和#include "stdafx.h"#includeusing namespace std;#define iMAXSIZE (sizeof(iSrcArr)/sizeof(iSrcArr[0]))+100//最大子段和//void getBiggestSum(int iSrcArr[],
2013-11-12 10:38:08
1116
原创 几种常用排序算法的比较
在计算机科学所使用的排序算法通常被分类为:1-计算的复杂度(最差、平均、和最好性能),依据列表(list)的大小(n)。一般而言,好的性能是O(n log n),且坏的性能是O(n2)。对于一个排序理想的性能是O(n)。仅使用一个抽象关键比较运算的排序算法总平均上总是至少需要O(n log n)。2-存储器使用量(以及其他电脑资源的使用)3-稳定度:稳定排序算法会依照相等的关键(换言之
2013-11-11 22:21:44
858
原创 简易递归快排 QuicklySort C++
快排和归并的递归是相类似的,主要是都用到了分而治之的方法,快排需要选取中间点O(nlog n) 期望时间,O(n^2) 最坏情况; 对于大的、乱数列表一般相信是最快的已知排序//我一直认为最坏情况是O(nlogn)#include "stdafx.h"#include using namespace std;#define i_max_size sizeof(i_src)/s
2013-11-10 11:34:24
977
原创 归并排序 C++/Java 递归实现代码 -犯了菜鸟老毛病
建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。
2013-11-10 10:08:33
991
原创 插入排序 Java/C++
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元
2013-11-09 23:04:01
771
原创 数据结构重新复习-线性表
1 数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。2 以栈、队列、字符串等特殊线性表的形式来使用的3 是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和一个后继结点。一般地,一个线性表可以表示成一
2013-11-05 22:39:16
666
原创 算法思路重新实现-堆排序 中的 C++ & Java
堆排序-树形选择排序的改进,使用的辅助空间较少(1个元素用于空间交换)分大堆和小堆,每个节点的值都大于(小于)左右子树,即为最大(小)堆。即保证堆顶是最大(小)值,Java Code loading in some day
2013-11-05 01:29:16
542
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人