峰's profile流  浪  的  枫  之  羽PhotosBlogLists Tools Help

流  浪  的  枫  之  羽

从零开始的就要从零开始积累

峰 周

Occupation
Location
开始我的研究生生涯!
Photo 1 of 11

test

test

Blog地址转移!

cfdc9f67
此博客正式被废,尽管以前也宣布过被废,但是从今天起正式废除此博客,没有其他原因因为功能太单一!
新的博客地址:http://feng5166.com
cfdc9f67
cfdc9f67
cfdc9f67
cfdc9f67

命运呼叫转移

。。。。。。。
 

LESSWATTS.ORG开源项目介绍

LESSWATTS.ORG开源项目简介:

LESSWATTS.ORG开源社区于2007920由英特尔公司推出它用以满足从数据中心服务器到个人移动设备的整个计算环境对不断增长的更高能效的需求。该社区的项目集成于开放源代码软件中,可降低Linux服务器、PC、电子产品的能耗。地址:http://www.lesswatts.org

以下是社区中的各个开源项目的介绍:

1.      PowerTOP

介绍:

PowerTOP 是一种linux下的工具,它可以帮助你找到那些在你计算机空闲时linux内核中那些耗电的程序。在linux2.6.21的版本里,linux内核实现了空闲循环机制,不再有固定的1000HZtimer tick事件。这样的结果可以使CPU在系统空闲的时候处于长时间的低能耗状态,可以在理论上达到节省大量电的目的。然而再内核空间和用户空间中会有很多事件会破坏这种体系。

PowerTOP能通过ACPI高级配置和电源接口)把内核中的信息方便的显示在我们的显示器上使我们能观察到我们的系统在省电模式的状态下什么程序导致了我们最大的耗电。

PowerTOP想做到以下4个方面的目标:

能够很好的显示各种硬件的省电特性。

能够显示那些耗电的程序,对其耗能进行预防

帮助Linux开发者测试他们的应用程序并且帮助他们优化应用程序(能耗)

提供给你一些建议使你的应用程序能达到最少的能耗。

使用要求: 

如果想使PowerTOP工作良好,linux的内核必须实现了tickless idle(空闲循环)机制,也就是版本要再2.6.21以后。目前linux的内核只有32-bit的才支持tickless idle(空闲循环)机制,64-bits内核再v2.6.23后才能有这种特性。

PowerTOP 最好工作再笔记本电脑上,或者使最近推出的英特尔的移动处理器。当然使用PowerTOP在笔记本上时,你应该让它运行再电池模式下。

版本:

目前PowerTOP的最新的版本时1.9,支持的系统时Debian*, Gentoo and Fedora*.

代码下载地址:

http://www.lesswatts.org/projects/powertop/download/powertop-1.9.tar.gz

个人评价:这个组件目前感觉时Intel 玩具,用来节省笔记本电池用电,以后可能会发展成提高linux上笔记本用电池的工作效率。

2.      tickless idle

介绍:

传统的linux内核是为每个CPU使用周期性的计时机制,这个计时器为许多事件作为计时,比如:处理计算、负载调度、维持时间片调度任务。老的linux内核使用100HZ(10ms的计时器,新的内核的linux使用的是250HZ(4ms)1000HZ(1ms)的计时器。这个周期性的计时事件我们常常叫做“时间滴答”。这个方法设计简单,但是它有一个致命的缺陷就是时间滴答周期性的发生,不顾处理器现在正处于忙还是闲的状态。如果处理器处于闲置,它也会每隔一段周期去唤起正处于省电模式下的处理器。这样它就消耗了笔记本的电池的使用时间或者是对于服务器来说消耗不必要的电力。

目前这个项目采用tickless idle(空闲循环)的机制,Linux内核将会在CPU空闲时消除这个周期性的“时间滴答“的机制。这样的机制允许CPU在很长一段时间内始终保持在省电的模式下,降低系统的总功耗的消耗。

我们应该注意一个问题:如果CPU频繁的被一些不必要的计时事件唤起,那么空闲循环机制的优势将消失。这个项目就是整理所有的能增强处于新内核中的tickless idle特性机制的补丁(deferrable timers,以达到能尽可能长时间的利用tickless idle机制。

Deferrable timers代码下载地址:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6e453a67510a17f01b63835f18569e8c3939a38c

HDOJ1527

问题:
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。

碰到这道题时我的思路:

设集合A, B分别为先手能赢和后手能赢的二元无序对(x,y)的集合

先从最基础的开始考虑,(n,0) (n,n) 属于A,因为这样的情况先手肯定能赢(n为正整数,下同)

如果存在(a,b),对于一切n,(a-n,b-n)均属于A,则(a,b)属于B
很容易找到一个(2,1),这是后手肯定能赢的情况

接下来从先手的角度分析,如果他能在移动石子后留给对手(2,1)个石子,那么他就能赢,于是
(2+n,1) (2+n,1+n) (2,1+n) 均属于 A

找出一个不属于A的最小对,(5,3), 这个元素肯定属于B集合,因为从中任意取出元素后的结果肯定属于A集合
相应的,(5+n, 3) (5, 3+n), (5+n, 3+n) 均属于A

这时发现,B集合相对A集合元素少很多,只要找出B集合中元素的特征,就能解决这个问题。

一旦B中包含(x,y)对,A中就会相应的包含(x, y+n), (x+n, y), (x+n,y+n)
由此想出一种构造B集合的方法,设当前构造出的集合为S,a为不在S中的最小的数,即
a = MIN{ x | x 不属于 (p, q), 对于一切(p, q)属于S }
则把(a, a+gap)加入B中,其中gap是当前S中所有对之差的最小值+1
 
 构造出的序列为
 (1,2) -> (3, 5) -> (4, 7) -> (6, 10)
 
 到这里这道题目应该已经能过了,不过还有一种达到O(1)的优化,接下来的就不是我想出来的了 =,=
 首先是Betty定理:
 如果无理数alpha, beta满足
 1. alpha, beta > 0
 2. 1/alpha + 1/beta = 1
 那么,序列{[alpha*n]}和{[beta*n]}构成自然数集的一个分划,其中[]是取整函数
 
 这道题对应的alpha和beta分别是(1+sqrt(5))/2,(3+sqrt(5))/2,其实是一个黄金分割

公式可以见这个博客

HDOJ2136

Problem Description
Everybody knows any number can be combined by the prime number.Now, your task is telling me what position of the largest prime factor.
The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.Specially, LPF(1) = 0.
Input
Each line will contain one integer n(0 < n < 1000000).
Output
Output the LPF(n).
Sample Input
1
2
3
4
5
Sample Output
0
1
2
1
3
http://acm.hdu.edu.cn/showproblem.php?pid=2136
算法思想:采用素数筛选法改进以符合这道题目!
memset(prime, -1, sizeof(prime));
 for(i = 2; i< MAX; i++)
 {
        if(prime[i]==-1)
  {
   num++;
   for(j = i; j < MAX; j+=i)
   {
    prime[j] = num;
   }
        }
 }

HDOJ2102

Problem Description
可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。
现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。
Input
输入的第一行C表示共有C个测试数据,每个测试数据的前一行有三个整数N,M,T。 N,M迷宫的大小N*M(1 <= N,M <=10)。T如上所意。接下去的前N*M表示迷宫的第一层的布置情况,后N*M表示迷宫第二层的布置情况。
Output
如果骑士们能够在T时刻能找到公主就输出“YES”,否则输出“NO”。
Sample Input
1
5 5 14
S*#*.
.#...
.....
****.
...#.

..*.P
#.*..
***..
...*.
*.#..
Sample Output
YES
简单的BFS
void bfs()
{
 int i;
 while(!q.empty())q.pop();//清空队列
 start.x =0,start.y = 0,start.cnt =0,start.lever=0;
 q.push(start);
 map[0][0][0]='*';
 while(!q.empty())
 {
  tmp = q.front(); q.pop();
  x = tmp.x,y = tmp.y , cnt = tmp.cnt,lever = tmp.lever;
  if(map[lever][x][y]=='P'&&cnt<=t)
  {
   sucess = 1;
      return ;
  }
  if(map[lever][x][y]=='#')//进行时空转换
  {
   map[lever][x][y]='*';
   lever = (lever+1)%2;
   if(map[lever][x][y]=='*'||map[lever][x][y]=='#')
    continue;
   if(map[lever][x][y]=='P')
   {
    sucess = 1;
    return;
   }
   map[lever][x][y]='*';
  }
  //同一层进行处理
  for(i = 0; i<4;i++)
  {
   int a = x +dir[i][0];
   int b = y +dir[i][1];
   if(a<0||a>=m||b<0||b>=n)
    continue;
   if(cnt>=t) continue;
   if(map[lever][a][b]=='P')
   {
    sucess =1;
    return;
   }
   else if(map[lever][a][b]=='.')
   {
     map[lever][a][b]='*';
   
   } test.x = a,test.y = b,test.cnt = cnt+1,test.lever=lever;
    q.push(test);
  }
 }
 sucess = 0;
}
但是要一定分清楚换层!

解决C#"线程间操作无效: 从不是创建控件“XXXX”的线程访问

今天在继续写我的桌面搜索,因为涉及了多线程所以在VS2005下出现RT所示的问题,

百度搜索一下解决方法,

有些说用委托但是不怎么好用,发现只要设置一个属性就可以解决问题:

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

MSDN,显示该属性的有关说明如下:

访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。

.NET Framework 有助于在以非线程安全方式访问控件时检测到这一问题。在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个 InvalidOperationException,并提示消息:“从不是创建控件 control name 的线程访问它。”

此异常在调试期间和运行时的某些情况下可靠地发生。强烈建议您在显示此错误信息时修复此问题。在调试以 .NET Framework 2.0 版之前的 .NET Framework 编写的应用程序时,可能会出现此异常。

可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false 来禁用此异常。这会使控件以与在 Visual Studio 2003 下相同的方式运行。

讲述Lucene相关站点和书籍- -

Introduction to Text Indexing with Apache Jakarta Lucene
http://www.onjava.com/pub/a/onjava/2003/01/15/lucene.html

Advanced Text Indexing with Lucene
http://www.onjava.com/pub/a/onjava/2003/03/05/lucene.html

关于Chedong的blog(非常著名,汉语)
http://www.chedong.com/tech/lucene.html

Lucene全文检索实践
http://www.infor96.com/~nio/comments.php?id=84_0_1_0_C

关于Lucene的基本概念
http://www.cnblogs.com/lucene/archive/2004/12/20/79804.html

Lucene使用者沙龙(为Chedong和一些朋友的沙龙,有ppt和http://blog.cnblog.org/archives/2005/07/luceneaecee.html

Lucene研究之一——起源、现状及初步应用http://jalorsoft.com/holen/holen_lucene_01.html

Lucene研究之二——系统结构分析初步(已阅)
http://jalorsoft.com/holen/holen_lucene_02.html

系统讲了Lucene架构(英文)
http://www-igm.univ-mlv.fr/~dr/XPOSE2003/lucene/node1.html

Doug Cutting(Lucene作者)做的关于Lucene的架构解说
http://lucene.sourceforge.net/talks/pisa/

English StopWords列表
http://www.onjava.com/onjava/2003/01/15/examples/EnglishStopWords.txt

书籍:

Lucene in action

再贴一个笑话!~

     一夏日,酷热。
  一中年男子出差,因天晚住进一个小旅店,正要就寝突然电话响起:“对不起我是前台,我们旅店有特殊服务你需要吗?”
  “不了谢谢”,男子回答。
  放下电话后,该男子辗转反侧,难以入睡,于是抓起电话打给前台说:“给我来一个特殊服务”,不一会一年轻女郎进来。
  男子问一夜多少钱?女子说“一百”
  男子说:“好脱了吧,坐沙发上。”
  女子脱光坐在沙发上。
  男子回到床上躺下,不一会传来酣声……
  天快亮时女子再也忍受不住将男子叫醒,你叫我来干什么?
  嘿嘿!
  男子说:蚊子太多我睡不着……
 

Windows Media Player