小编Her*_*ter的帖子

Android应用关闭/发送到后台时运行代码

我有一个Android应用程序,它将一些数据发送到Web服务.我需要在应用程序关闭或发送到后台后立即发送此数据.但我该如何实现此目的?

我目前的解决方案是在我的家庭活动上的OnPause()上运行它,但无论关闭应用程序时用户所处的活动,我都需要运行它.这是可能的还是我必须将OnPause方法添加到所有活动?

android

29
推荐指数
3
解决办法
6万
查看次数

如何降低圈复杂度?

我正在开发一个将RequestDTO发送到Web服务的类.我需要在发送请求之前验证请求.

请求可以从3个不同的地方发送,每个"请求类型"都有不同的验证规则,例如request1必须有名称和phonenumber,request2必须有地址,等等)

我有一个DTO,其中包含很长的字段列表(名称,地址,城市,电话号码等),无论发送哪种类型的请求,它都是相同的DTO.

我创建了3种不同的验证方法,并根据类型调用适当的方法.

在每个方法中,我都有一长串if-else来检查每个请求类型所必需的字段.

private void validateRequest1(Request request) {
    StringBuilder sb = new StringBuilder();
    if (null == request) {
        throw new IllegalArgumentException("Request is null");
    }
    if (isFieldEmpty(request.getName())) {  *see below
        sb.append("name,"));
    }
    if (isFieldEmpty(request.getStreet())) {
        sb.append("street,"));
    }
    ...
Run Code Online (Sandbox Code Playgroud)

isFieldEmpty()检查字符串是否为null,isEmpty()并返回一个布尔值

这让我在其中一种方法中的圈复杂度为28,所以我的问题是......是否有可能降低这种复杂性? - 如果是的话,我该怎么做呢?

最终我需要检查很多字段,如果没有大量的检查,我无法看到如何做到这一点:/

java validation cyclomatic-complexity

26
推荐指数
2
解决办法
3万
查看次数

IntelliJ IDEA - Maven主目录设置重置新项目

我刚刚开始使用IntelliJ(我已经习惯了Eclipse)而且我遇到了一些让我烦恼的事情.无论是我还是IntelliJ,我都非常想要这个.

每次我打开一个新项目时,"Maven主目录"设置都会被重置,因此我每次打开一个之前没有打开的项目时都必须设置它.

有没有办法永久/全局设置此设置?

settings intellij-idea maven

25
推荐指数
4
解决办法
3万
查看次数

Android:触摸时关闭对话框窗口

我想通过简单地触摸屏幕在我的Android应用程序中关闭一个对话框窗口..这可能吗?如果是这样,怎么样?

我已经研究过在对话框中设置一些"onClickEven",但它并不存在.

这怎么可能?

events android dialog touch

12
推荐指数
3
解决办法
2万
查看次数

错误C2280:尝试引用已删除的功能

我是游戏开发的新手,也是c ++的新手,但我已经开始开发一款小型的Arkanoid游戏了.我以前运行它,但在重构(引入ArkanoidGame类)后它没有编译,我无法弄清楚为什么.

我得到的错误是:

d:\dropbox\development\gamedev\c++\arkanoid\arkanoid\main.cpp(14): error C2280:
    'ArkanoidGame::ArkanoidGame(void)' : attempting to reference a deleted function
d:\dropbox\development\gamedev\c++\arkanoid\arkanoid\arkanoidgame.h(25) : 
    compiler has generated 'ArkanoidGame::ArkanoidGame' here
Run Code Online (Sandbox Code Playgroud)

我根本不明白这意味着什么,不知道如何解决它.

我已经包含了有问题的课程:

Main.cpp的:

#include "ArkanoidGame.h"

int main() {
    ArkanoidGame game;
    game.init(800, 600);
    while (game.isRunning()) {
        game.checkInput();
        game.checkCollisions();
        game.draw();
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Arkanoid.h:

#include "Ball.h"
#include "Pad.h"
#include <SFML/Graphics.hpp>
#include <stdarg.h>
#include <memory>

class ArkanoidGame
{
private:
    bool running;
public:
    void ArkanoidGame::init(int, int);
    bool ArkanoidGame::isRunning();
    void ArkanoidGame::checkCollisions();
    void ArkanoidGame::checkInput();
    void ArkanoidGame::update();
    void ArkanoidGame::draw();
    sf::RenderWindow* window;
    Pad pad;
    Ball ball; …
Run Code Online (Sandbox Code Playgroud)

c++ pointers compiler-errors deleted-functions

10
推荐指数
2
解决办法
4万
查看次数

LINQ to SQL vs ADO.NET - 哪个更快?

由于LINQ to SQL基本上是ADO.NET之上的一层,因此需要进行一些翻译.这是否意味着直接使用ADO.NET比LINQ更快?或者差异是如此之小以至于无关紧要?

ado.net translation linq-to-sql

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

插入问题&nbsp; 使用PL/SQL Developer

我有以下脚本要插入表中,但我遇到了一些问题.

declare
    v_xslt9 varchar2(32767) := '<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="UTF-8" indent="yes"/> <xsl:template name="Template"> <xsl:text>Kære </xsl:text> <xsl:value-of select="/nameValueMap/entry[string=''FIRST_NAME'']/string[2]"/> <xsl:text>&nbsp;</xsl:text> <xsl:value-of select="/nameValueMap/entry[string=''LAST_NAME'']/string[2]"/></xsl:template> </xsl:stylesheet>'
begin
    insert into XSLT values ('','Note',sysdate,v_xslt9,sysdate,'T','')
end;
Run Code Online (Sandbox Code Playgroud)

感兴趣的部分如下

<xsl:text>&nbsp;</xsl:text>
Run Code Online (Sandbox Code Playgroud)

我正在使用PL/SQL Developer,当我运行上面的脚本时,它识别出来

&nbsp;
Run Code Online (Sandbox Code Playgroud)

作为一个实体,然后我必须输入我想要的价值.我想要的是XSL中的一个简单的空格,以便分隔名字和姓氏.我已经尝试了以下链接中的所有建议:orafaq - 我只是无法让它工作.我尝试插入时失败,或者在提取数据时失败.

是否有一些简单的方法在XSL中插入空格?

oracle xslt whitespace plsql html-entities

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

WCF +实体框架设计

我想知道如何设计这个最佳..

在我的ASP.NET MVC应用程序上,我有一个数据库,我想使用WCF来处理我通过EF与该数据库的所有交互.所以我在服务上创建了一个实体模型,用于与数据库交互.为了从ASP.NET应用程序与WCF交互,我为每个EF模型创建了DTO(我只有3个)和一个转换器类,用于从EF模型转换为DTO,反之亦然.

在侧面说明..是否可以避免使用DTO而只是转移EF模型? - 我试过了,但没有运气,因为客户端asp.net应用程序不识别这些模型.

这是一种合适的设计方法还是另一种方法更好?

提前致谢.:)

asp.net asp.net-mvc wcf design-patterns entity-framework-4

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

更改环境变量(JAVA_HOME)而不注销

我目前正在开发3种不同的Java版本,因此经常更改我的JAVA_HOME变量.但是,我必须注销才能更新变量.我通过System Properties -> Advanced -> Environment Variables(Windows XP)更新它.

当然,有一种更聪明/更简单的方法.

我想我可以在提示符中使用SET命令,但这不是永久性的,因为我经常使用一个Java版本一段时间,我不希望每次启动PC时都重置它.

有什么建议?

java windows-xp environment-variables

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

Base64解码给出了不同的结果

我正在开发一个小的Streamserve项目(谷歌它:P),我得到一些Base64编码的内容.我试图用多个解码器解码base64字符串,并返回正确的结果..除了Streamserve中的Base64DecodeString方法.

编码的字符串是:'VABlAHMAdABpAG4AZwAgAGIAYQBzAGUANgA0AA =='预期的结果是:'测试base64'

但是在Streamserve中,结果是:'Tsig ae4'

它只是跳过其他所有字母.现在我知道大多数人都不知道Streamserve,但我有预感,这可能是一个字符编码问题..问题,并希望有人知道这里可能会发生什么.

我可以毫无问题地在streamserve中编码/解码字符串..只是不是我得到的字符串作为输入

base64 encoding character-encoding

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

Java中的可扩展枚举,无需使用扩展

可能重复:
是否可以扩展Java Enums?

我有一个小问题,我有一个具有一定数量值的枚举.此枚举用于系统的多个部分,在某些情况下需要包含更多值.

由于在Java中不允许扩展枚举,我试图考虑一些替代方案,到目前为止我的解决方案是创建一个包含枚举的接口,该枚举具有系统所有部分的通用值,然后创建一个空类来实现它接口.

所以enum A implements I这样我就可以使用A.COMMON_ENUM.ENUM_VALUE

现在我可以enum B在系统的某个子部分创建一个新的,它包含一个enum ADDITIONAL_ENUM并且它实现了I.所以现在我可以用这个:

B.COMMON_ENUM.ENUM_VALUE
Run Code Online (Sandbox Code Playgroud)

要么

B.ADDITIONAL_ENUM.ADDED_ENUM_VALUE
Run Code Online (Sandbox Code Playgroud)

这是一个丑陋的解决方案吗?- 我的意思是,它有效,但似乎错了 ......

-----更新:-----

公共枚举位于系统的"核心"部分(可以有多个前端),每个前端的附加枚举也不同.所以使用类比:让我们说车辆枚举有引擎,DOORS然后在我的CAR前端我需要添加"WHEELS"并且在我的BOAT前端我需要添加"PROPELLER"

代码示例:

public interface EnumType {           // I
    public enum Core {
    VALUE1,
    VALUE2,
    VALUE3
    }
}

public enum CommonEnum implements EnumType {     // A

}

public enum AdditionalEnumType implements EnumType {     // B
    public enum Additional {
    VALUEX,
    VALUEY
    }
}
Run Code Online (Sandbox Code Playgroud)

java enums extends

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

在 SQLite 中将列数据从一个表复制到另一个表

我有一个表,其中需要有一个递增的 _id 列。但是,由于表有 3 个主键,我无法使用自动增量。顺便说一句,这是在 SQLite 中。该表已经填充了数据,因此我不能重新创建该表。

有没有办法在 _id 列中插入 1 到 148 之间的值?

我们已经尝试过这样的事情:

UPDATE table1
SET _id = (SELECT _id FROM table2)
Run Code Online (Sandbox Code Playgroud)

table2 是一个临时表,其中包含从 1 到 148 的值。但这只是将所有 _id 值更新为“1”。

关于如何解决这个问题有什么建议吗?

sql sqlite sql-update

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

创建 Firebird 存储过程时出现错误 -104

我无法运行以下 SP

CREATE PROCEDURE SP_NYANSAT(
        FORNAVN VARCHAR(30),
        EFTERNAVN VARCHAR(30),
        ADRESSE VARCHAR(50),
        POSTNUMMER CHAR(4),
        TELEFONNUMMER CHAR(8),
        EMAIL VARCHAR(50))
    AS
    DECLARE VARIABLE ID INTEGER;
    BEGIN
      ID = GEN_ID(GEN_ANSAT_ID,1);
      INSERT INTO MYTABLE (ID, FORNAVN, EFTERNAVN, ADRESSE, POSTNUMMER, TELEFONNUMMER, EMAIL) VALUES (:ID, :FORNAVN, :EFTERNAVN, :ADRESSE, :POSTNUMMER, :TELEFONNUMMER, :EMAIL);
    END
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

can't format message 13:896 -- message file C:\Windows\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 1.
CREATE.
Run Code Online (Sandbox Code Playgroud)

firebird stored-procedures

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