文档章节

测试博客的代码风格

b
 bingjava
发布于 2017/05/09 15:44
字数 474
阅读 4
收藏 0

` /** * */ package com.yss.sofa.middleware.wolf.demo.pi;

import org.springframework.transaction.annotation.Transactional;

import com.yss.sofa.middleware.common.log.Logger; import com.yss.sofa.middleware.common.log.LoggerFactory; import com.yss.sofa.middleware.wolf.api.server.JobContext; import com.yss.sofa.middleware.wolf.api.server.Worker; import com.yss.sofa.middleware.wolf.api.server.WorkerException;

/**

  • pi计算的具体功能业务实现,调用单位为作业分片,即本类的doWork是以作业分片的维度进行调用的;

  • 注意,需要避免共享变量,以免造成结果的不正确性.

  • @author lenglinyong

  • @version 1.0, 2016年7月3日

  • @since 1.0, 2016年7月3日 */ public class PIWorker implements Worker<Double> {

    /**

    • Logger for this class */ private static final Logger logger = LoggerFactory.getLogger(PIWorker.class.getName());

    /**

    • 计算pi的开始 / public static String START_INDEX_KEY = "START_INDEX"; /*
    • 计算pi的最大次数 / public static String END_INDEX_KEY = "END_INDEX"; /*
    • 分片的最大运算次数 */ public static String STEP_MAX_INDEX_KEY = "STEP_MAX_INDEX_KEY";

    public static long MAXLOOP = 100000000;

    @Override @Transactional public Double doWork(JobContext<Double> context) {

     logger.debug("doWork(context=" + context + ")"); //$NON-NLS-1$ //$NON-NLS-2$
    
     // 以下表示分片的维度、分片的参数;其值的设置是通过PIPartitioner类完成的,在这里进行使用
     long startIdx = context.getJobPartition().getLongParameter(START_INDEX_KEY);
     long stepEndIdx = context.getJobPartition().getLongParameter(STEP_MAX_INDEX_KEY);
     long maxLoopCnt = context.getJobPartition().getLongParameter(END_INDEX_KEY);
     // 异常检查,作业的相关异常需抛出WorkerException
     if (startIdx < 0) {
     	throw new WorkerException("DEMO-000000U", START_INDEX_KEY + "=" + startIdx);
     }
     double pi = 0.0;
     for (double i = startIdx; i < stepEndIdx; i++) {
     	// 中断埋点,wolf引擎接收到作业中断命令时,context.isInterrupted()返回true,可退出业务处理
     	if (context.isInterrupted()) {
     		logger.info(String.format("当前节点中断PI作业,节点【%s】,当前分片【%s】,当前数据【%s】,正在计算pi值...", context.getRunAtServer(),context.getJobPartition().getName(), i+""));
     		break;
     	}
     	double x = (i + 0.5) * (1.0 / maxLoopCnt);
     	pi = pi + 4.0 / (1.0 + x * x);
     	if (((int) i) % 100000 == 1) {
     		logger.info(String.format("当前节点【%s】,当前分片【%s】,当前数据【%s】,正在计算pi值...", context.getRunAtServer(),context.getJobPartition().getName(), i+""));
     	}
     	if (((int) i) % 10000 == 1) {
     		context.doProcess(((float) i) / (stepEndIdx - startIdx), "正在计算PI值...");
     	}
     }
     // 作业的日志信息,作业开始、结束、以及失败的日志wolf框架自动记录,在本代码中无需重复记录。
     // 采用context的相关接口记录日志,用于描述业务中间过程的处理情况等。
     context.info("startIdx=" + startIdx + ",endIdx=" + stepEndIdx + "计算结果为:" + pi);
     return pi;// 返回本分片的运行结果
    

    } }

`

© 著作权归作者所有

b
粉丝 0
博文 1
码字总数 474
作品 0
架构师
私信 提问
博客园使用highlight.js对代码进行高亮,并实现自定义关键词高亮

看了网上那么多有关highlight.js的教程,自己还没学过JavaScript和CSS,硬是花了3天的时间,才终于弄出了自己想要的效果。一开始我的博客园代码高亮效果是这样的: 个人希望代码块能够实现下...

X_Jun
2018/07/18
0
0
Elasticsearch 5.1.1搜索高亮及Java API实现

5.1.1的搜索高亮和2.X有所变化,但是变化不大。下面分四步来介绍:创建索引(设置mapping/IK分词)、索引文档、REST API的搜索高亮、JAVA API的搜索高亮。 注:从这篇博客开始,采用简写的代码风...

napoay
2016/12/28
0
0
ModifyStyle函数

1.作用:Call this member function to modify a window's style. 2.函数原型: BOOL ModifyStyle ( DWORD dwRemove, DWORD dwAdd, UINT nFlags ); 3.参数含义: dwRemove指定要删除的扩展属性,......

云栖希望。
2017/12/04
0
0
14 种贡献开源的方法

有很多人想要参与到开源运动中,但是不懂怎么开始。这篇文章给出了几条建议,帮助非技术人员参与开源。 开源软件已经改变了计算领域,甚至改变了世界,很多人都乐意向开源贡献。不幸的是,很...

oschina
2012/12/31
3.1K
3
我的测试生活感悟1

真的是万事开头难,但我觉得更难的是,每天都坚持做同一件事情。在不被强迫的情况下(如:上班、吃饭、睡觉...),在可自由支配的时间里,现在我每天坚持做的貌似只有GoogleReader。希望我的测...

科技小毛
2017/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《生活的难题》的读后感3600字范文

《生活的难题》的读后感3600字范文: 假如我们对丑的事物也能够像对待美的事物那般抱持一种开放、接纳的心态,拥有相同的感受力,那么我们便会发现它们都是充满意义的,而这种认识会使生活变...

原创小博客
16分钟前
1
0
Linux learn(四)

7. Linux磁盘与文件系统管理 文件系统通常会将数据放在不同的区块,权限与属性放置到inode中,至于实际数据则放到datab lock区块中,另外,还有一个超级区块(superblock)会记录整个文件系统...

lazy~
23分钟前
1
0
微信公众号开发(四)

微信公众号开发时常需要一个用户授权绑定的过程。关于微信公众号的用户绑定,一般有如下两种实现方式: (1)通过发送短信验证码的方式; (2)使用用户登录时,向后端传递openid的方式。 使...

织梦之魂
今天
3
0
设计模式-工厂模式

工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端...

HOT_POT
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部