小编Car*_*ter的帖子

活动可见生命周期和前景生命周期之间有什么区别?

我们知道android活动周期有多个阶段.

之间onStart()和之间onStop()称为可见生命周期onResume(),onPause()称为前景生命周期

它们之间的关键区别是什么?请尽可能举例.

java android android-activity

2
推荐指数
1
解决办法
2545
查看次数

Java(swing)仅绘制屏幕上可见的内容

我正在用java制作一个基于平铺的平台游戏。我渲染一个存储在二维数组中的地图,但是当这个数组非常大时,我的游戏开始变得缓慢。我意识到我必须只渲染地图中可见的部分,我尝试这样做,但我编写了非常糟糕的代码,只能部分工作,所以我将其删除。我怎样才能正确地做到这一点?这是我的代码(没有黑客的东西)。另外我该如何使用System.nanoTime()而不是System.currentTimeMillis()

package sexy_robot_from_another_dimension;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.TexturePaint;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Game extends JPanel
{
    int playerX = 50;
    int playerY = 50;
    static boolean up = false;
    static boolean down = false;
    static boolean right = false;
    static boolean left = false;
    int playerSpeed = 1;
    String[][] map;
    int blockSize = 20; …
Run Code Online (Sandbox Code Playgroud)

java arrays swing

2
推荐指数
1
解决办法
895
查看次数

为什么 copyTo(... PASTE_VALUES) 在宏中间不起作用?

我长期使用电子表格的技术之一是就地复制/粘贴特殊值 (C/PSV)。使用公式生成我感兴趣的值 IC/PSV,然后可以删除源数据。

所以我写了一个使用这种技术的宏,但单元格最终是空的。但如果我将宏分成两个,在 C/PSV 之前结束第一个宏,那么一切都会按预期进行。为什么是这样?有没有更好的方法来解决这个问题?这是我的三个宏。

function Step1() {
  var spreadsheet = SpreadsheetApp.getActive();
  var range = spreadsheet.getActiveRange();
  CopyRangeToNewSheet(spreadsheet, range);
  spreadsheet.getCurrentCell().offset(-1, 6).activate();
  FillInHeaders(spreadsheet);
  spreadsheet.getCurrentCell().offset(1, -4).activate();
  FillInFormulas(spreadsheet);
  spreadsheet.getCurrentCell().offset(0, -4, range.getNumRows(), 5).activate();
  spreadsheet.getCurrentCell().offset(0, 0, 1, 5).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};

function Step2() {
  var spreadsheet = SpreadsheetApp.getActive();
  var keepers = spreadsheet.getRange('G:J');
  keepers.activate();
  keepers.copyTo(keepers, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  var discard = spreadsheet.getRange('A:F')
  discard.activate();
  spreadsheet.getActiveSheet().deleteColumns(discard.getColumn(), discard.getNumColumns());
};

function BothSteps() {
  var spreadsheet = SpreadsheetApp.getActive();
  var range = spreadsheet.getActiveRange();
  CopyRangeToNewSheet(spreadsheet, range);
  spreadsheet.getCurrentCell().offset(-1, 6).activate();
  FillInHeaders(spreadsheet);
  spreadsheet.getCurrentCell().offset(1, -4).activate();
  FillInFormulas(spreadsheet);
  spreadsheet.getCurrentCell().offset(0, -4, …
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script google-sheets-macros

2
推荐指数
1
解决办法
3253
查看次数

重构非常组合的代码

我现在必须重构一些代码,它基本上是一个方法(大约1000行代码),它做了很多计算并且有很多变量.我不确定如何重构它.代码是否像

...
calculateSth(param1,param2,param3,param4,param5, params6);
calculateSthElse(param1,param2,param3);
...
Run Code Online (Sandbox Code Playgroud)

看起来不错?

我可以引入参数对象,但这些对象只能用作某些方法的参数,所以它看起来像这样

...
calculateSth(calculateSthObject);
calculateSthElse(calculateSthElseObject);
...
Run Code Online (Sandbox Code Playgroud)

或者我可以将所有东西放在一个大物体上并制作它

...
calculateSth(calculateObject);
calculateSthElse(calculateObject);
...
Run Code Online (Sandbox Code Playgroud)

但是在该解决方案中,我必须在方法的开头提取私有方法中所需的所有内容并在最后设置,并且要找出私有方法中使用的值会更加困难.需要大约一半的变量作为输出.

你会怎么做?

PS计算并不简单,所以做的事情就像

calculateObject.setMagicValue4((calculateObject.getMagicValue() * calculateObject.getMagicValue2() / calculateObject.getMagicValue3()) 
Run Code Online (Sandbox Code Playgroud)

只会让人难以阅读.

language-agnostic refactoring

1
推荐指数
1
解决办法
117
查看次数

如何在BDD/TDD中表示动作的结果

标题可能不太清楚.我有以下例子:

Authenticator对象使用凭据对用户进行身份验证.它返回一个AuthResult对象.此AuthResult对象表示身份验证成功,或者失败(如果是,为什么失败,例如找不到用户名).

我怎么能在测试中说出这个?'testShouldReturnAuthObjectWithStatusSuccessOnValidLogin'?

testing tdd bdd unit-testing naming

1
推荐指数
1
解决办法
143
查看次数

使用XSLT用一些其他文本替换文本节点的高效代码?

我有一个XML,其中一个值为"null tag"的文本节点(随机)出现在文件的不同位置.
我的问题是如何用其他文本替换文本,其中元素(和父节点)名称是未知的.我已经创建了一个看起来有点笨重的XSLT文件,我不确定它在转换时间的效率.

这是我创建的示例测试XML:

<root>
  <sub_root>abc</sub_root>
  <sub_root>
    <child>test value</child>
    <child2>test value</child2>
    <sub_child>
      <node1>data</node1>
      <node2>data2</node2>
      <node3>
        <grand_child>test value</grand_child>
      </node3>
      <node4>test value</node4>
    </sub_child>
  </sub_root>
</root>
Run Code Online (Sandbox Code Playgroud)

这是XSLT:

  <xsl:template match="@*|*|text()">
        <xsl:copy>
          <xsl:choose>
            <xsl:when test="text()='test value'">
              <xsl:apply-templates select="@*|*"/>
              <xsl:text>replaced</xsl:text>
            </xsl:when>
            <xsl:otherwise>
              <xsl:apply-templates select="@*|*|text()"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:copy>
  </xsl:template>
Run Code Online (Sandbox Code Playgroud)

这是所需的输出,我试图生成:

<root>
  <sub_root>abc</sub_root>
  <sub_root>
    <child>replaced</child>
    <child2>replaced</child2>
    <sub_child>
      <node1>data</node1>
      <node2>data2</node2>
      <node3>
        <grand_child>replaced</grand_child>
      </node3>
      <node4>replaced</node4>
    </sub_child>
  </sub_root>
</root>
Run Code Online (Sandbox Code Playgroud)

这个代码可以用更好的方式(以任何方式)编写吗?或者我的代码是否足够好?

xslt

1
推荐指数
1
解决办法
266
查看次数

缩短"长"参数列表

我正在重构我的一个项目 - 购物车.我的代码紧密耦合的一个区域是"Viewer"类 - 为了生成供用户查看的信息,它通常需要两个或多个以下对象的组合:

  • 商店目录.
  • 客户的订单.
  • 客户的邮寄信息.

出于各种原因,我无法真正分解显示方法.

Martin Fowler的Refactoring将此视为"长参数列表"的气味.这里的相关重构是"引入参数对象".但是,我对此犹豫不决,因为这样做会将松散相关的数据耦合在一起.它也会让我锁定这三个对象之间非常狭窄的一对一关系 - 虽然这对我的应用程序来说就像现在一样,但它没有现实意义.(由于只有一个商店目录,因此可能存在许多"客户邮件信息"对象,并且每个对象可能与许多"客户订单"对象相关).

有没有人有这个优雅的解决方案?

refactoring

1
推荐指数
1
解决办法
297
查看次数

Hashcode比较问题

我有一个对象的列表,在我们的例子中被称为规则,这个对象本身是一个字段列表,我必须对其进行哈希码比较,因为我们不能在系统中复制规则.

即假设我有两个规则R1和R2,字段为A和B.

现在,如果R1中A和B的值分别为7和2.

在R2中它分别是3和4然后我用来检查系统中规则的重复性的过程是哈希码比较失败

我使用的方法是

for(Rule rule : rules){
changeableAttrCode=0;

fieldCounter=1;

attributes = rule.getAttributes();

for(RuleField ruleField : attributes){

changeableAttrCode = changeableAttrCode + (fieldCounter * ruleField.getValue().hashCode());

fieldCounter++;

}
parameters = rule.getParameters();

for(RuleField ruleField : parameters){

changeableAttrCode = changeableAttrCode + (fieldCounter * ruleField.getValue().hashCode());

fieldCounter++;

}

changeableAttrCodes.add(changeableAttrCode);
Run Code Online (Sandbox Code Playgroud)

这里是changeableAttrCodes,我们存储所有规则的哈希码.

那么请建议我更好的方法,以便将来不会出现这种问题,也可以看出系统中的规则错误.

提前致谢

java hashcode

1
推荐指数
1
解决办法
1008
查看次数

将元素添加到Arraylist并替换Java中的所有先前元素

我正在向ArrayList添加元素,它正确地添加了第一个元素,但是当我添加任何后续元素时,它擦除了使用最近添加的值替换其他元素并向ArrayList添加新元素.

我使用arraylist和int运行测试,甚至是另一个创建的类,它工作得很好但是我在这里使用的自定义类会导致问题.

数组列表的代码是

public static void main(String args[]){
   List<BasicEvent> list = new ArrayList<BasicEvent>();
   list.add(new BasicEvent("Basic", "Door", 9, 4444, new Date(12,04,2010), new Time(12,04,21), 1, 0.98, 0));
   list.add(new BasicEvent("Composite", "Door", 125, 4444, new Date(12,04,2010), new Time(12,04,20), 1, 0.98, 1));
   list.add(new BasicEvent("Basic", "Door", 105, 88, new Date(12,04,2010), new Time(12,05,23), 1, 0.98, 0));
   list.add(new BasicEvent("Basic", "Door", 125, 12, new Date(12,04,2010), new Time(12,05,28), 1, 0.98, 1));
   list.add(new BasicEvent("Basic", "Door", 129, 25, new Date(12,04,2010), new Time(12,05,30), 1, 0.98, 0));
   list.add(new BasicEvent("Basic", "Door", 125, 63, new Date(12,04,2010), …
Run Code Online (Sandbox Code Playgroud)

java arraylist

1
推荐指数
1
解决办法
1万
查看次数

鉴于以下JS/JQUERY,如何防止它区分大小写

我有以下代码行,效果很好:

$("a.grouped_elements[href$=.jpg],a.grouped_elements[href$=.png],a.grouped_elements[href$=.gif]").fancybox();
Run Code Online (Sandbox Code Playgroud)

问题是,如果href是.JPG它不起作用它只适用于.jpg.如何使上述不区分大小写,以便所有大写字母或无大写字母或混合都匹配文件扩展名?

谢谢

javascript regex jquery

1
推荐指数
1
解决办法
154
查看次数