- 浏览: 324890 次
- 性别:
- 来自: 西宁
最新评论
-
sassds:
佩服啊 高手
分享一款js特效 -
bhjackson:
学习啦,能否详细介绍下回溯的过程?O(∩_∩)O谢谢
分享回溯法- 找n个数中r个数的组合 -
zk7019311:
了解了解。。。。。
业务层代码复用的一点建议 -
lijie1819:
看到LZ的设计思想,感觉和抽象工厂模式有点相像。
业务层代码复用的一点建议 -
wjjcml1982:
酷毙了!楼主太强悍了!
分享一款js特效
文章列表
1. 问题描述: 输出自然数1到n的所有不重复的排列,即n的全排列。
2. 问题分析:
(1) 解空间: n的全排列是一组n元一维向量(x1, x2, x3, ... , xn),搜索空间是:1<=xi<=n i=1,2,3,...,n
(2) 约束条件: xi互不相同。技巧:采用"数组记录状态信息", 设置n个元素的一维数组d,其中的n个元素用来记录数据
1~n的使用情况,已使用置1,未使用置0
3. Java代码:
package boke;
/**
* 回溯法
*
* @since jdk1.6
* @au ...
1. 问题描述: 找n个数中r个数的组合
2. 问题分析:
(1) 问题的解空间为一组r元一维向量(a1, a2, a3, ...,ar), 1<=ai<=n, 1<=i<=r用一维数组a存储正在搜索的向量。
(2) 例子。 以n=5, r=3为例:
5 4 3
...
不加一句注解,请看下面内容:你会想到JAVA多态的什么特性?
1. 父类:
package com.maozj.javatnk.duotai;
import java.util.ArrayList;
import java.util.Map;
public class ParentObj {
public void doWork(ArrayList list) {
System.out.println("ParentObj doWork...");
}
public void doSport(Map map) {
System.o ...
1. 尽早释放无用对象的引用。
A a = new A();
...
a = null;
2. 尽量少使用finalize函数。finalize函数会加大GC的工作量。
3. 如果需要经常使用到的图片,可以使用soft应用类型。它可以尽可能将图片保存到内存中,供程序调用,而不引起OutOfMemory。
4. 一些复杂数据类型,如数组、树、图、链表、集合等数据结构,这些数据结构对GC来说,回收更为复杂。
另外注意一些全局变量和一些静态变量。这些变量往往容易引起悬挂对象,造成内存浪费。
5. 尽量避免在类的默认构造器中创建、初始化大量的对象。
6. 尽量避免强制系统做垃 ...
1. 只有非private方法才可以被覆盖
2. 普通方法是多态的,静态方法和域不具有多态性。
1. 问题描述
给定n种物品和一背包。物品i的重量是wi,其价值为pi,背包的容量为c。问:应该如何选择装入背包的物品,使得装入
背包中物品的总价值最大?
2. 问题分析
在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包。该问题是子集选取问题。因此解空间可用子集书
来表示。
在搜索解空间树时,只要其左儿子结点是一个可行结点,搜索就进入其左子树。当右子树有可能包含最优解时才进入右子树搜索。
否则将右子树剪去。
设r是当前剩余物品价值总和;cp是当前价值;bestp是当前最优价值。当cp+r <= bestp时,可剪去右子树。
...
1. 回溯法基本思想
回溯法是在包含问题的所有解得解空间树(或森林)中,按照深度优先的策略,从根结点出发搜索解空间树。
算法搜索至解空间树的任一结点时,总是先判断该结点是否满足问题的约束条件。如果满足进入该子树,继续
按照深度优先的策略进行搜索。否则,不去搜索以该结点为根的子树,而是逐层向其祖先结点回溯。
回溯法在用来求解问题的所有解时,要回溯到根,且根结点的所有可行的子树都已被搜索遍才结束。而回溯法
在用来求解问题的任一解时,只要搜索到问题的一个解就可以结束。适用于解决一些最优化问题。
2. 算法设计过程
(1) 确定问题的解空间
应用回溯法解决问题时,首 ...
1. 递归算法解题步骤
(1) 分析问题、寻找递归关系。找出大规模问题和小规模问题的关系。
(2) 找出停止条件,控制递归。
(3) 设计函数、确定参数。
2. 问题描述:
整数的分划问题。
如,对于正整数n=6,可以分划为:
6
5+1
4+2, 4+1+1
3+3, 3+2+1, 3+1+1+1
2+2+2, 2+2+1+1, 2+1+1+1+1
1+1+1+1+1+1+1
现在的问题是,对于给定的正整数n,编写算法计算出其分划得数目。
3. 问题分析和递归关系建立
从上面n=6的实际例子可以看出,很难找到大规模问题P( ...
来源: 网络转载
代码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯。
代码编写规范使用范围:J2EE项目开发。
1.包命名规范:
目的:包的命名规范应当体现出项目资源良好的划分 。
...
由于代码比较清晰,逻辑简单,所以没有多加说明。
1. 栈元素定义:
/**
* create on 2010-05-19 TODO: 栈元素
*
* @author 毛正吉
* @version 1.0
*
*/
class Node {
protected Object data;
protected Node next;
protected Node() {
data = null;
next = null;
}
protected Node(Object _data) {
data = _data;
next = null;
}
}
...
1. 原理描述:
设图G的初始状态是所有顶点均为访问过。以G中任选一顶点V为起点,则描述为:首先访问出发点V,
接着依次访问V的所有邻接点W1,W2,...,Wi,然后再依次访问与W1,W2,...,Wi邻接的所有未曾访问过的
顶点。依次类推,直到图中所有和起点V有路径相同的顶点都已访问为止。此时从V开始搜索过程结束。
2. 算法设计基本步骤:
(1) 确定图的存储方式。
(2) 设计搜索过程中的操作,其中包括为输出问题解而进行的存储操作。
(3) 输出问题的解空间。
3. 一种实现:求从一个城市到另一个城市间经过的城市最少的路线。
package com.maoz ...
1.原理描述:
给定图G的初始状态是所有顶点均未曾访问过,在G中任选一顶点V为初始出发点(源点、根结点)。
则描述如下:首先访问出发点V,并将其标记为已访问过;然后依次从V出发搜索V的每个邻接点(子结点)W。
若W未曾访问过,则以W为新的出发点继续进行深度优先遍历,直到图中所有和源点V有路径相同的顶点(从源点
可达的顶点)均已被访问为止。若此图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复
上述过程,直到图中所有顶点均已被访问为止。
2.算法描述
(1) 确定图的存储方式。
(2) 设计搜索过程中的操作,其中包括为输出问题解而进行的存储操作。
(3) 搜索到问题的 ...
展开树状记录的程序很多是采用递归算法。我們知道,递归的方法逻辑比较简单,实际操作起来比较容易。但是递归有一个最大的缺点就是占用资源太多,速度太慢。如果在互联网的"论坛"上采用此种方法,在表记录很多的情况下将是一个非常严重的问题。我们可以用堆栈来解决递归效率低下占用资源的问题。
一、表结构(article)
tpId int 本记录ID号
tpPid int 父记录ID号
title varchar 贴子标题
author varchar 贴子作者
datetime date 发贴日期时间
...
1. 通过init方法来缓存一些静态数据,诸如数据库连接,预初始化数据,前台加载。
2. 用print()方法取代pringln()方法。自己想想就知道了。
3. 用ServletOutputStream取代PringWriter。自己想想就知道了。
4. 更好的创建PrintWriter对象的设计:
ByteArrayOutputStream byteArray = new ByteArrayOutputStream(1024);
PrintWriter out = new PrintWriter(byteArray);
5. 采用部分输出的方式向客户端输出数据。以减少时间开销 ...
低效的where 1=1
- 博客分类:
- Data Base
也许很多人在开发多条件查询或模糊查询的时候,为保证不管选择哪种过滤条件总保证查询条件为true,于是在where子句后选择1=1或者0=0技巧来满足模糊查询。当然这的确对开发人员来说是一个不错的技巧。于是我在Mysql中通过上千万条的数据测试发现很耗性能。即便是建了常用字段的索引(排序)也没有作用,足以确定1=1很低效,大数据量很耗性能。
select * from t_user where 1=1
因为添加了"1=1"的过滤条件以后数据库系统无法使用索引等优化查询策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)来比较此行是否满足顾虑条件, ...