log4deng

if(log.itWillForget()){
   log.blog("log4deng!");
}
else if(log.isYourExperience){
   log.blog("log4deng!");
}
......
posts - 61, comments - 96, trackbacks - 0, articles - 34

2009年1月19日

今天看到关于一个整数表示为n个连续整数和的问题。搜索了下找到如下文章:

表为连续正整数
View SlideShare document or Upload your own.

还搜索到程序的实现:http://blog.csdn.net/Solstice/archive/2006/09/13/1217700.aspx

http://squall.cs.ntou.edu.tw/cprog/Assignments/99Fall/FindGivenSum.html

http://blog.chinaunix.net/u2/76292/showart_1359876.html(这个是不正确的)

 

我也简单的实现了下:(g++编译,主要思路是利用等差数列求和公式n=(a+a+k)*(k+2)/2列举k,找到合适的a)

#include <iostream>
#include <math.h>
using namespace std;

int main(){

    int n;
    cout<<"input n:"<<endl;
    cin>>n;

    int maxk=(int)sqrt((double)n*2);

    int flag = 0;

    //cout<<"maxk="<<maxk<<endl;

    //for(int i=1;i<maxk+1;i++){
    for(int i=maxk+1;i>0;i--){
         double a = n/(double)(i+1)-i/(double)2;
        //cout<<"a="<<a<<endl;
    
        if(a>0&&a-(int)a==0){
            //cout<<i<<endl;
            for(int j=0;j<i+1;j++){
                cout<<a+j<<" ";
            }
            cout<<endl;
            flag=1;
        }

    }
    if(flag==0){
        cout<<"NONE"<<endl;
    }
    return 0;

}

posted @ 2009-01-19 16:37 qiyadeng 阅读(1196) | 评论 (2)编辑 收藏

2008年12月5日

posted @ 2008-12-05 00:08 qiyadeng 阅读(101) | 评论 (0)编辑 收藏

2008年11月30日

Mc Cain Resume
View SlideShare document or Upload your own.
Obama Resume
View SlideShare document or Upload your own.

  

事实上,媒体也非常认可这两份由专家为总统写作的简历,包括ABCNews,并将他们作为介绍总统候选人的核心提要。像其他的高端工作职位一样,只有更加有力地呈现自己作为候选人的资格,您才能成功获得工作职位。这就像美国的总统竞选一样。

这两份出色的简历,首先是非常简洁。人力资源经理,招聘经理或者猎头顾问没有时间去翻阅每个申请人的详细简历。因此要保持你的简历在1-2页之间,最多不超过2页。要把重点放在你最近15年的工作经历,对于工作经历丰富的高端候选人,你可能还需要对以往的一些工作做出简短的总结性说明。

其次,确保简历的整体布局清晰明白。简历要给人一个良好的视觉吸引力。简历的格式要编排有序。字体大小选择要正确,避免留下太多的空白,也要避免把一页纸塞得太满。整体效果上,简历应该突出高品位和专业化的特点。

这两个人的简历虽然没有得到官方的认可,但是我们认为这两份由专家写作的简历不仅呈现了他们卓越的任职资格,而且突出了他们最优秀的职业成就。这也是简历专家建议候选者首先要在简历中呈现的。因为卓越的任职资格和最优秀的职业成就是简历的核心内容。简历的大部分内容应当呈现你过去或现在的工作职责和“专业经验”标题下的职业成就。典型来讲,职业经验是以逆时序排列,从你最近的职位开始,列出公司名称,雇佣日期,担当的职务,也包括每一个职务你的重点工作内容和职责的简要概述。

最有效的简历,也应该包括每个工作所取得的工作成绩。工作成绩或者工作成就可以通过简要的,针对性的陈述来呈现,要证明你如何增加销售,降低费用,扩大市场份额等。

posted @ 2008-11-30 23:33 qiyadeng 阅读(171) | 评论 (1)编辑 收藏

2008年8月26日

8 月 24 日晚,在鸟巢国家体育场,当站在舷梯上的运动员慢慢卷起画轴、奥运圣火渐渐熄灭时,2008 北京奥运会,一届被国际奥委会主席罗格誉为“真正的无与伦比”的奥运会,正式与大家告别了。
与此同时,由 12 位特殊的运动员所组成的十二生肖代表队,也结束了它们奥运期间在谷歌 Doodle 舞台上的精彩表演。今天,就让我们再次回味一下它们在过去的十七天里带给我们的精彩吧!


8月8日开幕式(opening)


8月9日自行车(cycling)


8月10日举重(weightlifting)


8月11日跳水(diving)


8月12日艺术体操(rhythm)


8月13日吊环(rings)


8月14日篮球(basketball)


8月15日羽毛球(badminton)


8月16日足球(soccer)


8月17日赛艇(rowing)


8月18日乒乓球(pingpong)


8月19日游泳(swimming)


8月20日田径(trackfield)


8月21日跳高(highjump)


8月22日武术(martialarts)


8月23日棒球(baseball)


8月24日闭幕式(closing_ceremonies)

Google 黑板报 -- Google 中国的博客网志: 十二生肖代表队——谷歌 Doodle 08 特辑 (结束篇)

posted @ 2008-08-26 13:11 qiyadeng 阅读(121) | 评论 (0)编辑 收藏

2008年8月20日

 

Img702828_t

posted @ 2008-08-20 12:37 qiyadeng 阅读(169) | 评论 (2)编辑 收藏

2008年8月19日

极光是南北极地区特有的一种大气发光现象。极光在东西方的神话传说中都留下了美丽的身影,现代科学的发展,使人类能够用理性的眼光看待极光,对它作出科学的解释。
长期以来,极光的成因机理未能得到满意的解释。在相当长一段时间内,人们一直认为极光可能是由以下三种原因形成的。一种看法认为极光是地球外面燃起的大火,因为北极区临近地球的边缘,所以能看到这种大火。另一种看法认为,极光是红日西沉以后,透射反照出来的辉光。还有一种看法认为,极地冰雪丰富,它们在白天吸收阳光,贮存起来,到夜晚释放出来,便成了极光。总之,众说纷纭,无一定论。直到20世纪60年代,将地面观测结果与卫星和火箭探测到的资料结合起来研究,才逐步形成了极光的物理性描述。

现在人们认识到,极光一方面与地球高空大气和地磁场的大规模相互作用有关,另一方面又与太阳喷发出来的高速带电粒子流有关,这种粒子流通常称为太阳风。由此可见,形成极光必不可少的条件是大气、磁场和太阳风,缺一不可。具备这三个条件的太阳系其他行星,如木星和水星,它们的周围,也会产生极光,这已被实际观察的事实所证明。

地磁场分布在地球周围,被太阳风包裹着,形成一个棒槌状的胶体,它的科学名称叫做磁层。为了更形象化,我们打这样一个比方。可以把磁层看成一个巨大无比的电视机显像管,它将进入高空大气的太阳风粒子流汇聚成束,聚焦到地磁的极区,极区大气就是显像管的荧光屏,极光则是电视屏幕上移动的图像。但是,这里的电视屏幕却不是 18英寸或 24英寸,而是直径为4000公里的极区高空大气。通常,地面上的观众,在某个地方只能见到画面的l/50。在电视显像管中,电子束击中电视屏幕,因为屏上涂有发光物质,会发射出光,显示成图像。同样,来自空间的电子束,打入极区高空大气层时,会激发大气中的分子和原子,导致发光,人们便见到了极光的图像显示。在电视显像管中,是一对电极和一个电磁铁作用于电子束,产生并形成一种活动的图像。在极光发生时,极光的显示和运动则是由于粒子束受到磁层中电场和磁场变化的调制造成的。

极光不仅是个光学现象,而且是个无线电现象,可以用雷达进行探测研究,它还会辐射出某些无线电波。有人还说,极光能发出各种各样的声音。极光不仅是科学研究的重要课题,它还直接影响到无线电通信,长电缆通信,以及长的管道和电力传送线等许多实用工程项目。极光还可以影响到气候,影响生物学过程。当然,极光也还有许许多多没有解开的谜。
极光被视为自然界中最漂亮的奇观之一。如果我们乘着宇宙飞船,越过地球的南北极上空,从遥远的太空向地球望去,会见到围绕地球磁极存在一个闪闪发亮的光环,这个环就叫做极光卵。由于它们向太阳的一边有点被压扁,而背太阳的一边却稍稍被拉伸,因而呈现出卵一样的形状。极光卵处在连续不断的变化之中,时明时暗,时而向赤道方向伸展,时而又向极点方向收缩。处在午夜部分的光环显得最宽最明亮。长期观测统计结果表明,极光最经常出现的地方是在南北磁纬度67度附近的两个环带状区域内,分别称作南极光区和北极光区。在极光区内差不多每天都会发生极光活动。在极光卵所包围的内部区域,通常叫做极盖区,在该区域内,极光出现的机会反而要比纬度较低的极光区来得少。在中低纬地区,尤其是近赤道区域,很少出现极光,但并不是说压根儿观测不到极光。1958年2月10日夜间的一次特大极光,在热带都能见到,而且显示出鲜艳的红色。这类极光往往与特大的太阳耀斑暴发和强烈的地磁暴有关。

在寒冷的极区,人们举目瞭望夜空,常常见到五光十色,千姿百态,各种各样形状的极光。毫不夸大地说,在世界上简直找不出两个一模一样的极光形体来,从科学研究的角度,人们将极光按其形态特征分成五种:一是底边整齐微微弯曲的圆弧状的极光孤;二是有弯扭折皱的飘带状的极光带;三是如云朵一般的片朵状的极光片;四是面纱一样均匀的帐幔状的极光幔;五是沿磁力线方向的射线状的极光芒。

极光形体的亮度变化也是很大的,从刚刚能看得见的银河星云般的亮度,一直亮到满月时的月亮亮度。在强极光出现时,地面上物体的轮廓都能被照见,甚至会照出物体的影子来。最为动人的当然是极光运动所造成的瞬息万变的奇妙景象。我们形容事物变得快时常说:“眼睛一眨,老母鸡变鸭。”极光可真是这样,翻手为云,覆手为雨,变化莫测,而这一切又往往发生在几秒钟或数分钟之内。极光的运动变化,是自然界这个魔术大师,以天空为舞台上演的一出光的活剧,上下纵横成百上千公里,甚至还存在近万公里长的极光带。这种宏伟壮观的自然景象,好像沾了一点仙气似的,颇具神秘色彩。令人叹为观止的则是极光的色彩,早已不能用五颜六色去描绘。说到底,其本色不外乎是红、绿、紫、蓝、白、黄,可是大自然这一超级画家用出神入化的手法,将深浅浓淡、隐显明暗一搭配、一组合,好家伙,一下子变成了万花筒啦。

posted @ 2008-08-19 08:39 qiyadeng 阅读(97) | 评论 (0)编辑 收藏

2008年8月6日

看清楚了,这可是154公斤。

这可是我们国家老鼠的强项

“刘翔”

posted @ 2008-08-06 18:08 qiyadeng 阅读(137) | 评论 (1)编辑 收藏

2008年7月29日

 

每个Java程序员都要处理异常,异常处理在应用程序中起着重要的作用。在Java世界中,处理异常看上去不是那么简单,不仅仅是在异常发生的地方,优雅的报告异常。

使用ThreadGroup处理异常

ThreadGroup类中在这个时候大部分方法已经作废了,但是该类还是很有用的。ThreadGroup类有一个方法uncaughtException(Thread,Throwable),意思是:当线程组中的线程因为异常而终止时,Java虚拟机调用该方法。这样你可以考虑继承ThreadGroup类来处理你应用中没有捕获的异常。

public class AppSpecificThreadGroup extends ThreadGroup {

public void uncaughtException(Thread, Throwable) {

// app specific error handling here

// ex: if fatal, release resources

// show user dialog

}

}

这样在你的应用启动的时候,把你的线程加入到线程组(Thread group)中。

public class ApplicationMain {
  public static void main(String[] args) {
    Runnable r = new ApplicationStarter(args);
    ThreadGroup g = new AppSpecificThreadGroup();
    Thread t = new Thread(g, r);
    t.start();
  }
  
  private static void doStart(String[] args) {
    // start application here...
  }
  
  private static class ApplicationStarter {
    private String[] args;
    ApplicationStarter(String[] args) {
      this.args = args;
    }
    
    public void run() {
      doStart(args);
    }
  }
}

使用Java5的Thread.UncaughtExceptionHandler

当认识到ThreadGroup.uncaughtException(Thread,Throwable)方法的巨大作用时,Sun团队在Java5版本站中增强了未捕获的异常处理的功能,引入了Thread.UncaughtExceptionHandler接口,另外这个接口引入了两个新的”Check points”用于处理异常。Thread类有两个属性-uncaughtExceptionHandler和defaultUncaughtExceptionHandler,它们有相应的get/set方法。但是这两个方法是不同的。让我们看看处理异常的过程。

n 使用uncaughtExceptionHandler为当前线程处理异常。

n 如果uncaughtExceptionHandler为空(null),使用线程组(如果用户没有显示设置,线程组是uncaughtExceptionHandler的默认实现)。

n 如果线程组是默认的实现,但是不是根线程组,将把错误处理委派给父线程组。

n 如果线程组是默认的实现,并且是根线程组,将使用线程(Thread)类上设置的defaultUncaughtExceptionHandler方法。

n 如果在线程类没有设置defaultUncaughtExceptionHandler,将调用Java5之前的ThreadGroup类中的未捕获异常方法。

实现Thread.UncaughtExceptionHandler接口看起来也像上面实现ThreadGroup接口。

public class AppSpecificExceptionHandler implements Thread.UncaughtExceptionHandler {
  
 public void uncaughtException(Thread, Throwable) {
   // app specific error handling here
   // ex: if fatal, release resources
   //     show user dialog
 }
}

在应用程序中插入如下:

public class ApplicationMain {
 public static void main(String[] args) {
  Thread.setDefaultUncaughtExceptionHandler(new AppSpecificExceptionHandler());
 }
}

Swing异常处理实现

许多人没有注意到现有的JOptionPanel类,该类中有许多的优美的弹出对话框的静态方法(showOptionDialog,showConfirmDialog,showInputDialog,和showMessageDialog),这些方法接受的参数不仅仅是字符串。这些静态方法(也包括JOptionPanel构造函数)都是接受一个Object作为参数的的。下面是一个实现该类的核心代码:

public class ErrorDialog {

public ErrorDialog() {

super();

}

public static void showQuickErrorDialog(JFrame parent, Exception e) {

final JTextArea textArea = new JTextArea();

textArea.setFont(new Font("Sans-Serif", Font.PLAIN, 10));

textArea.setEditable(false);

StringWriter writer = new StringWriter();

e.printStackTrace(new PrintWriter(writer));

textArea.setText(writer.toString());

JScrollPane scrollPane = new JScrollPane(textArea);

scrollPane.setPreferredSize(new Dimension(350, 150));

JOptionPane.showMessageDialog(parent, scrollPane,

"An Error Has Occurred", JOptionPane.ERROR_MESSAGE);

}

}

在程序中的一个例图如下:

clip_image002

posted @ 2008-07-29 11:18 qiyadeng 阅读(826) | 评论 (0)编辑 收藏

Three Rules for Effective Exception Handling

Best Practices for Exception Handling

Exceptions in Java

Designing with exceptions

Exceptional practices, Part 1

When catching exceptions, don't cast your net too wide

Use nested exceptions in a multitiered environment

Beware the dangers of generic Exceptions

posted @ 2008-07-29 11:08 qiyadeng 阅读(208) | 评论 (0)编辑 收藏

2008年7月27日

使用InputVerifier设计Swing校验包

尽管有许多针对Swing的校验框架,并且Swing中也有API InputVerifier用于数据校验,InputVerifier易于使用并且容易定制。本文将在InputVerifier的基础上构建一个可用的校验包,可以在其它的Swing应用之中。

InputVerifier类在javax.swing包中。它有一个抽象方法,我们需要实现一个叫verify()的方法,这个方法接受一个JComponent作为参数,返回值为true或false。一旦我们实现了verify()方法,我们可以在JTextField中使用如下:

JTextField text = new JTextField();

Text.setInputVerifier(new MyVerifier());

然而,InputVerifier本身并没有什么意思。它的作用是防止用户输入错误的信息在组件中,阻止用户把输入光标移动到其他组件上。这种方式令人感到厌烦并且用户不知道错误所在。InputVerifier并没有提供一些更好的功能,所以我们需要构建一个如下校验包:

1. 如果数据不正确时,可以改变输入组件的背景颜色。

2. 如果数据不正确时,可以弹出消息提示用户错误出在什么地方,应该怎么处理。

3. 我们需要通知Form窗体每个组件的校验结果,这样的话Form窗体可以执行相应的动作。(例如启动”OK”按钮)

4. 如果用户改正了组件的错误数据,则错误提示信息应消失。

我们的包中包含一个抽象类,这个抽象类处理了大部分的工作,我们只需要实现一个方法,决定使用什么规则来进行数据校验;同时也提供一个接口,如果需要校验的Form窗体需要校验结果通知Form窗体,则可以实现该接口。好了,我们现在可以设计这个接口。

WantsValidationStatus接口

下面的接口可以提供一种方式用于出发Form窗体的制定事件。

package ica.swing.validation;

public interface WantsValidationStatus {

void validateFailed(); // Called when a component has failed validation.

void validatePassed(); // Called when a component has passed validation.

}

实现这个接口可以通知Form窗体校验状态,但是实现该接口不是必须的。我们也可以不是实现这个接口,如果校验失败不做任何事情。但是,我认为这样的设计是比较优美的。接下来看看我们的抽象类。

AbstractValidator类

AbstarctValidator处理了显示出错提示,改变出错背景,通知Form窗体等许多工作。只留下一个抽象的方法待实现,protected abstract Boolean validateCriteria(JComponent c),这个方法我们需要提供自己的校验规则用于校验组件。以下是抽象类:

protected abstract boolean validationCriteria(JComponent c);

public boolean verify(JComponent c) {

if (!validationCriteria(c)) {

c.setBackground(Color.PINK);

//messageLabel.setSize(0,0);

//messageLabel.setBackground(color);

point = c.getLocation();

double x =point.getX();

double y = point.getY();

Point p = new Point();

p.setLocation(x,y+c.getHeight());

tooltip= new HalfOpaqueToolTip(

message, new Color( 250 , 250 , 200 ), Color.RED, Color.BLACK, 1,dialog,p );

c.addMouseListener(tooltip);

return false;

}

Verify()方法

当需要校验是调用方法boolean verify(JComponent c),下面用一例子示之。

public class ToolTipsEmptyValidator extends ToolTipsAbstractValidator {

public ToolTipsEmptyValidator(JDialog dialog, JTextField c, String message) {

super(dialog, c, message);

}

public ToolTipsEmptyValidator(JFrame dialog, JTextField c, String message) {

super(dialog, c, message);

}

public ToolTipsEmptyValidator(JDialog dialog, JTextArea c, String message) {

super(dialog, c, message);

}

public ToolTipsEmptyValidator(JFrame dialog, JTextArea c, String message) {

super(dialog, c, message);

}

@Override

protected boolean validationCriteria(JComponent c) {

if (c instanceof JTextField){

if (((JTextField) c).getText().equals(""))

return false;

}

else if (c instanceof JTextArea){

if (((JTextArea) c).getText().equals(""))

return false;

}

return true;

}

}

调用方法如下:

ToolTipsEmptyValidator validator1 = new ToolTipsEmptyValidator(jDialog,localdbPanel.getIpAddressField(),"Error,IP Address can't be empty");

boolean flag1 = validator1.verify(localdbPanel.getIpAddressField());

下图是使用该校验包的示例。

image

posted @ 2008-07-27 10:43 qiyadeng 阅读(885) | 评论 (1)编辑 收藏