小编arj*_*soh的帖子

正则表达式查找特定字符是否在String中存在奇数次

有没有办法regular expression在Java中编写一个查找a是否String包含奇数个特定字符的方法,即"a"?我已经完成了编写更详细的代码,使用以下方法:

public static boolean hasEvenNumber(String s) {
        int count = 0;

        Pattern p = Pattern.compile("(^a)*(a)");
        Matcher m = p.matcher(s);
        while (m.find())
            count++;

        if (count % 2 != 0)
            return true;
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

例如,如果将String "jsadaajaaikadjasl"作为参数传递,则它返回true,因为它包含7 "a".是否有一种更优雅的方式来实现它只使用a regex并检查它:

Pattern p = Pattern.compile(...);
Matcher m = p.matcher(s);
if(m.matches())
   return true;  
Run Code Online (Sandbox Code Playgroud)

java regex string

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

检查休眠中的事务是否成功

我正在使用休眠模式开发应用程序,并且Entities像往常一样保存在hibernate事务中。如果事务成功完成,我想从事务中“获取反馈”,并据此执行下一个代码。这是我用来更新实体的简单方法:

public boolean updateDepartment(Department s) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = HibernateUtil.getTransaction(session);
        boolean success = false;
        try 
        {
            tx.begin();
            session.update(s);
            tx.commit();
            success = true;
        } 
        catch (Exception e) 
        {
            tx.rollback();
            e.printStackTrace();
            success = false;
        }

        return success;
    }
Run Code Online (Sandbox Code Playgroud)

从其他代码调用该方法:

boolean b = dao.updateDepartment(d);
if(b)
{
 doStuff();
}
else
{
 showMessage("Save not usccessful. Try again");
}
Run Code Online (Sandbox Code Playgroud)

我的问题是这种使用boolean变量的方法是否是最佳方法,或者是否可以采用更好的方法来执行。如果我的方法还可以,那么将return语句括起来会更好finally吗?

java hibernate transactions try-catch

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

在多模块android studio项目中集成.aar文件

我在 android studio 中有一个多模块项目,我想将一个.aar文件集成到一个模块中,该模块在 App 模块中被引用为库。项目结构为:

- module1
- module2
- module3
- module4
- moduleApp
Run Code Online (Sandbox Code Playgroud)

模块 1 用作模块 2 中的库引用。

build.gradle module2

  dependencies {
        ...
        compile project(':module1')
    }
Run Code Online (Sandbox Code Playgroud)

module2 和其他模块在 th App 模块中引用。

build.gradle moduleApp

dependencies {
    ...
    compile project(':module2')
    compile project(':module3')
    compile project(':module4')
}
Run Code Online (Sandbox Code Playgroud)

我需要在模块 1 中集成一个 .aar 文件作为库,因为它是模块 1 实现所必需的。我以正常方式进行集成:

build.gradle module1

repositories {
    flatDir {
        dirs 'libs'
    }
} 

dependencies {
    compile 'package.name.of.aar:myLibrary@aar'
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时,gradle sync我收到错误:

failed to resolve …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio android-gradle-plugin

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

C++删除一个对象

我在处理C++程序中的内存方面没有经验,所以在这种情况下我想要一条建议:

我想new Object在一个类中创建一个函数,这个函数在程序结束之前是必不可少的.就我而言,如果我使用运算符new,我有时应该删除它.考虑到它必须在一个类中初始化,我何时以及如何最终删除它?

c++ memory-management new-operator

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

Java运算符优先

由于Java中运算符优先级的原因,我感到很困惑.我读的教程以前,时间长,具有比OR,这是在提供的答案证实了更高的优先级问题.但是,我目前正在使用"Sun认证的Java 6程序员学习指南"来学习Java.本书包含以下示例:

int y = 5;
int x = 2;
if ((x > 3) && (y < 2) | doStuff()) {
    System.out.println("true");
}
Run Code Online (Sandbox Code Playgroud)

我正在复制并引用编译器如何处理上述代码的解释:

If (x > 3)is true,或者是(y < 2)或者结果 doStuff()true,然后打印"true".由于短路&&,表达式被评估为好像周围有括号(y < 2) | doStuff().换句话说,它被评估为单个表达式之前&&和之后的单个表达式&&.

这意味着虽然|优先级高于&&.是不是因为使用了"非短路OR"而不是短路OR?什么是真的?

java operators

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

notify()和notifyAll()之间的区别

我知道在这个网站上已经讨论过类似的问题,但考虑到一个具体的例子,我还没有得到进一步的帮助.我可以掌握通知的差异()和notifyAll()关于Thread在理论上"awakeining",但我看不出他们是如何影响程序的功能时,它们中的使用,而不是其他.因此,我设置以下代码,我想知道使用它们中的每一个有什么影响.我可以从一开始就说它们给出相同的输出(Sum打印3次).

他们几乎有什么不同?如何修改程序,以便应用通知或notifyAll对其功能发挥关键作用(给出不同的结果)?

任务:

class MyWidget implements Runnable {
private List<Integer> list;
private int sum;

public MyWidget(List<Integer> l) {
    list = l;
}

public synchronized int getSum() {
    return sum;
}

@Override
public void run() {
    synchronized (this) {
        int total = 0;
        for (Integer i : list)
            total += i;

        sum = total;

        notifyAll();
    }
}
Run Code Online (Sandbox Code Playgroud)

}

线:

public class MyClient extends Thread {
MyWidget mw;

public MyClient(MyWidget wid) {
    mw = wid;
} …
Run Code Online (Sandbox Code Playgroud)

java multithreading notify

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

在Alfresco内容模型中创建一个方面

我现在开始使用Alfresco CMS.我需要在我的内容模型中创建一个"方面",它必须包含许多属性:

Aspect: 
    property 1 : String
    property 2 : int
    property 3 : int
    property 4 : long
Run Code Online (Sandbox Code Playgroud)

此外,它必须包含另外两个属性,这些属性由以下属性组成:

Format: 
   FormatProperty1: int
   FormatProperty2: int
   FormatProperty3: int

Metadata:
   list1: List<String>
   list2: List<String>
   MetadataProperty 3: boolean
Run Code Online (Sandbox Code Playgroud)

我还没有在Alfresco中创建简单的内容模型和方面.基于我之前在关系数据库中的知识,我将上述结构视为表之间的关联.如何在具有一个或多个方面的Alfresco内容模型中执行该操作?

database-design alfresco content-management-system database-schema content-model

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

JPA/Hibernate差异MappedSuperclass和Entity Abstract Class

我想知道是什么样的区别MappedSuperclassEntity Abstract Class当一个人想要从一个超类派生Hibernate.我知道Hibernate不会在数据库中创建一个表MappedSuperclass.我在JavaEE文档中读到"抽象实体就像具体实体但不能被实例化".由于它们无法实例化,我推断数据库中没有匹配的表.我对吗?

如果是这样,在每种情况下,使用a MappedSuperclass和a Entity Abstract Class以及对软件和数据库的影响实际上有什么区别?

database hibernate jpa java-ee

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

wildfly中的数据源配置10

我试图在Mac OS上的Wildfly 10 Application Server中配置PostgreSQL数据源.我正在按照说明书的规定行事.我创建了一个订单:

/wildfly-10.1.0.Final/modules/system/layers/base/org/postgresql/main. 
Run Code Online (Sandbox Code Playgroud)

按此顺序我放了JDBC驱动程序:

postgresql-9.3-1104.jdbc4.jar
Run Code Online (Sandbox Code Playgroud)

我创建了一个module.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql“>
  <resources>
    <resource-root path="postgresql-9.3-1104.jdbc4.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Run Code Online (Sandbox Code Playgroud)

在standalone.xml文件中,我在datasources下创建了数据源:

     <datasource jndi-name="java:jboss/datasources/PostgresDS" pool-name="PostgresDS" enabled="true"
                        use-java-context="true">
   <connection-url>jdbc:postgresql://localhost:5432/testdb</connection-url>
         <driver>postgresql</driver>
            <security>
             <user-name>user</user-name>
             <password>password</password>
            </security>
            <validation>
              <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"></valid-connection-checker>
              <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"></exception-sorter>
     </validation>
   </datasource>
Run Code Online (Sandbox Code Playgroud)

和司机:

<drivers>
   <driver name="postgresql" module="org.postgresql">
     <datasource-class>org.postgresql.Driver</datasource-class>
     <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
   </driver>
</drivers>
Run Code Online (Sandbox Code Playgroud)

但是,不能安装数据源,当我启动服务器时,我收到消息(错误):

ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
            ("subsystem" => "datasources"),
            ("data-source" => "PostgresDS")
        ]) - failure description: { …
Run Code Online (Sandbox Code Playgroud)

postgresql datasource java-ee wildfly

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

在C++中"向量擦除迭代器超出范围"

在这个C++代码中,我尝试从向量的末尾擦除元素但程序停止并且我收到消息: Expression: vector erase iterator outside range.

问题是什么?毕竟通过这个代码向量一个指针的向量或我在push_back中传递它们的方式只插入一个指针的副本?

int _tmain(int argc, _TCHAR* argv[])
{
    vector<Player*> allPlayers;
    allPlayers = createPlayers();

    int numPlayers;

    cout<<"Vector size: "<<allPlayers.size();
    cout<<endl;
    cout<<"How many players are involved in the game(1-4)?\n";
    cin>>numPlayers;
    cout<<endl;
    allPlayers.erase(allPlayers.end());

    return 0;
}


vector<Player*> createPlayers(){

    Player *Player1 = new Player(1,1500);
    Player *Player2 = new Player(2,1500);
    Player *Player3 = new Player(3,1500);
    Player *Player4 = new Player(4,1500);


    vector<Player*> allPlayers;
    allPlayers.push_back(Player1);
    allPlayers.push_back(Player2);
    allPlayers.push_back(Player3);
    allPlayers.push_back(Player4);


    return allPlayers;
}
Run Code Online (Sandbox Code Playgroud)

c++ vector

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