http://item.taobao.com/item.htm?id=13777273998

SEO研究中心第三版优化教程(扫描版)目录添加版.pdf 其他人卖 19。9 的书

现在只需要1块钱

呵呵 seo 的兄弟们快速分享啊

posted @ 2012-02-08 19:53 废墟中的垃圾 阅读(6) 评论(0) 编辑

使用Sqlserver 的兄弟们会遇到 Errorlog里面的日志不断的增大,然后空间就这么没有了。然后使用一般的日志收缩完全没有用。

接下来当然是问 搜索引擎了,然后就会发现类似于这个的帖子 

http://www.jb51.net/article/26988.htm

当然这个帖子说的很好,不过有一个问题,就是兄弟们运行了这个存储过程,日子并没有变小,最少我的是这样。然后更加茫然的搜索,结果基本都是一样的。

在我很茫然的时候,突然发现,我的Errorlog2本来非常大,现在是 Errorlog3, 原来这个存储过程是循环写入,只要多操作几次就可以了:)

呵呵这里只是小提醒一下兄弟们,其实没啥技术含量。

posted @ 2011-08-24 15:05 废墟中的垃圾 阅读(34) 评论(0) 编辑

老魏帮忙发的问题的地址

http://www.cnblogs.com/eastjade/archive/2011/06/22/2086828.html

下面是算法:

定义最木棒的对象

class Item
{
public Item(int length, int count)
{
Length
= length;
Count
= count;
}

public int Length { get; set; }

public int Count { get; set; }
}
然后定义我们要组装的木棒的长度,这里是21。 定义一个结果类
class Segment
{
public Segment()
{
Items
= new List<int>();
}

public List<int> Items { get; set; }

public int Length
{
get { return Items.Sum(); }
}

public void RemoveLast()
{
Items.RemoveAt(Items.Count
- 1);
}
}

定义一个MaximumFirstPermutation 类 作为控制类

class MaximumFirstPermutation
{
public MaximumFirstPermutation()
{
Items
= new List<Item>();
}

private List<Item> backupItems;

public List<Item> Items { get; private set; }

public int SegmentLength { get; set; }


public Segment[] Segments { get; private set; }


/// <summary>
/// 将结果写入文件
/// </summary>
/// <param name="fileName"></param>
public void WriteToFile(string fileName)
{
StreamWriter writer
= new StreamWriter(fileName);

List
<int> allItems = new List<int>();

foreach (Segment segment in Segments)
{
writer.WriteLine(
string.Concat(segment.Items.Select(i => i + " ")));
allItems.AddRange(segment.Items);
}


writer.WriteLine();
writer.WriteLine(
"---------------------------");

foreach (Item backupItem in backupItems)
{
Item usedItewm
= Items.First(i => i.Length == backupItem.Length);
writer.WriteLine(
string.Format("{0}: total {1}, used {2}, remaining {3}", backupItem.Length, backupItem.Count, allItems.Count(i => i == backupItem.Length), backupItem.Count - allItems.Count(i => i == backupItem.Length)));
}


writer.WriteLine();
writer.WriteLine(
"---------------------------");

writer.WriteLine(
string.Format("total length: {0}, used {1}, remaining {2}", backupItems.Sum(i => i.Length * i.Count), allItems.Sum(), backupItems.Sum(i => i.Length * i.Count) - allItems.Sum()));


writer.Close();
}

public void Compute()
{
backupItems
= Items.Select(i => new Item(i.Length, i.Count)).ToList();

Items
= Items.OrderByDescending(i => i.Length).ToList();
List
<Segment> segments = new List<Segment>();

while (true)
{

Segment segment
= GetSegment(SegmentLength);

if (segment != null)
{
segments.Add(segment);
}
else
{
break;
}
}

Segments
= segments.ToArray();
}

/// <summary>
/// 拼装过程
/// </summary>
/// <param name="length"></param>
/// <returns></returns>
private Segment GetSegment(int length)
{
Segment segment
= new Segment();
Item exact
= Items.FirstOrDefault(i => i.Count > 0 && i.Length == length);

if (exact != null)
{
exact.Count
--;
segment.Items.Add(exact.Length);
return segment;
}


foreach (Item item in Items.Where(i => i.Count > 0 && i.Length < length))
{
int count = 1;

while (true)
{
item.Count
-= count;

for (int i = 1; i <= count; i++)
{
segment.Items.Add(item.Length);
}


bool exceeded = segment.Length > length;

if (!exceeded)
{
Segment remainingSegment
= GetSegment(length - item.Length);
if (remainingSegment != null)
{
segment.Items.AddRange(remainingSegment.Items);
return segment;
}
}


item.Count
+= count;

for (int i = 1; i <= count; i++)
{
segment.RemoveLast();
}


if (exceeded)
{
break;
}

count
++;
}
}


if (segment.Length != length)
{
return null;
}

return segment;
}
}

program.cs main 函数

MaximumFirstPermutation per = new MaximumFirstPermutation() { SegmentLength = 21 };

per.Items.Add(
new Item(1, 100));
per.Items.Add(
new Item(2, 200));
per.Items.Add(
new Item(3, 90));
per.Items.Add(
new Item(4, 14));
per.Items.Add(
new Item(5, 25));
per.Items.Add(
new Item(6, 6));
per.Items.Add(
new Item(7, 20));
per.Items.Add(
new Item(8, 35));
per.Items.Add(
new Item(9, 15));
per.Items.Add(
new Item(10, 21));
per.Items.Add(
new Item(11, 22));
per.Items.Add(
new Item(12, 9));
per.Items.Add(
new Item(13, 16));
per.Items.Add(
new Item(14, 35));
per.Items.Add(
new Item(15, 39));
per.Items.Add(
new Item(16, 41));
per.Items.Add(
new Item(17, 29));
per.Items.Add(
new Item(18, 26));
per.Items.Add(
new Item(19, 18));
per.Items.Add(
new Item(20, 20));
per.Items.Add(
new Item(21, 35));

per.Compute();
per.WriteToFile(
@"e:\r1.txt");

这个样例数据执行出来之后是

total length: 6479, used 6468, remaining 11

total Segment:48

posted @ 2011-06-22 17:14 废墟中的垃圾 阅读(107) 评论(0) 编辑

自从有了 实体到数据库的框架之后,就很少直接写数据库了,因为这只是一种存储方式,而不是程序员需要太关注的。

但是事情往往不是用一种方式就可以完全解决的。比如已经有了数据库,那么这个项目如何处理呢,那么就需要自己写相关的反相生成代码。

所以开始看看 codesmith。 废话不多说,这里写的最好先看看一些 codesmith的基础,当然只要你有一定的编程能力,这个应该也能直接看懂。

确定我们接下来要做的事情。

第一个:(C#模板)可以访问数据库(Sqlserver,接下来不会再说,都是Sqlserver。其他可以类推)里面的所有表、字段。

第二个,数据库表的模板独立,数据库模板调用数据库表模板

第三个,根据不同的字段属性,写出来不同的内容

第四个,输出自己需要的模板。

第五个,通过模板生成我们需要的代码文件。

当然,如果不太明白上面五个的意思也没有关系。我们接下来会具体进行操作。

对于数据库的操作,codesmith 已经内置了一个引擎,我们可以使用 SchemaExplorer 来进行相应的操作。

现在我们做一个最简单的,连接数据库一个表,并且把表明输出。

<%--模板使用语言。目标语言--%>

<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="Template description here." %>

<%--引用ShemaExplorer--%>

<%@ Assembly Name="SchemaExplorer" %>

<%--引入ShemaExplorer命名空间--%>

<%@ Import Namespace="SchemaExplorer" %>

<%--通过ShemaExplorer命名空间下的 SchemaExplorer.TableSchema 类型,来定义一个数据库表对象。--%>

<%@ Property Name="TableSource" Type="SchemaExplorer.TableSchema" Category="Context" Description="" %>

<%--输出表名称--%>

<%Response.Write(this.TableSource.Name);%>

这样我们就可以读取数据库中的表的名字了。

接下来我们来遍历所有的字段

<%

for(int i = 0;i< this.TableSource.Columns.Count;i++)

{

Response.WriteLine(this.TableSource.Columns[i].Name);

}

%>

很简单吧,当然,还有更多的属性,大家可以自己查看。

posted @ 2011-04-27 10:20 废墟中的垃圾 阅读(104) 评论(0) 编辑
摘要: 这里介绍的是Google map api v3版本里面的Elevation。(如有转载请联系本人。)由于Google 海拔应用程序接口里面提到说过在Google map api v3 版本里面出了可以使用 Google 海拔应用程序接口之外,还可以使用Elevation 对象。所以这里我们进行一下介绍,由于很多部分都是重复的,只是名称从“应用程序接口” 变成了 &ldquo...阅读全文
posted @ 2010-07-23 17:56 废墟中的垃圾 阅读(831) 评论(1) 编辑
摘要: The Google Elevation API Google 海拔信息应用程序接口(如有转载请联系本人。)注释:也许这个API已经被很多人所熟知,但是我也发现很多人不知道如何通过Google地图获得海拔信息,所以写了这篇文章。大部分内容来自于API的翻译,如果有误,请大家指正。也欢迎大家进行进交流。===================================以下为翻译内容=======...阅读全文
posted @ 2010-07-22 12:56 废墟中的垃圾 阅读(564) 评论(2) 编辑
摘要: Google map v3 发布了 居然还不知道 呵呵 今天写一个晚来的祝贺。同时有时间再看看。阅读全文
posted @ 2010-07-22 10:31 废墟中的垃圾 阅读(89) 评论(2) 编辑
摘要: 今天做了一个mailto:链接 突然发现在 outlook 里面居然是乱码,思考了一下,应该是需要进行url编码才可以的。所以我进行了url编码,但是依然是乱码,这个比较郁闷。看看我以前的项目,发现以前的项目没有问题。然后只用一个汉字测试,发现以前的项目输出时 2个 %AA 类似于这样的字符串。 但是新的项目是三个。思考了一下,感觉应该是编码的问题,所以开始检查,的确是这样。因为以前的项目大部分是...阅读全文
posted @ 2010-06-29 01:26 废墟中的垃圾 阅读(617) 评论(0) 编辑
摘要: 上一篇文章已经解决了读取数据中文乱码的问题了。但是接下来的问题来了,我们发现读取文件的字段名的时候还是乱码。而且这个真的不是通过前段代码的设置就可以完成的。好了 废话不多说,开始解决问题。还是读取Sharp map 的源程序。在读取文件header的时候 在SharpMap.Data.Providers.DbaseReader 里面的方法 ParseDbfHeader 是读取字段。其中有这样一段这...阅读全文
posted @ 2010-05-20 22:11 废墟中的垃圾 阅读(128) 评论(2) 编辑