小编Vic*_*rin的帖子

针对预定义种子列表进行字符串测试的最快C++算法(不区分大小写)

我有种子字符串列表,大约100个预定义字符串.所有字符串仅包含ASCII字符.

std::list<std::wstring> seeds{ L"google", L"yahoo", L"stackoverflow"};
Run Code Online (Sandbox Code Playgroud)

我的应用程序不断收到很多字符串,可以包含任何字符.我需要检查每个收到的行并确定它是否包含任何种子.比较必须不区分大小写.

我需要最快的算法来测试收到的字符串.

现在我的应用程序使用这个算法:

std::wstring testedStr;
for (auto & seed : seeds)
{
    if (boost::icontains(testedStr, seed))
    {
        return true;
    }
}
return false;
Run Code Online (Sandbox Code Playgroud)

它运作良好,但我不确定这是最有效的方法.

为了获得更好的性能,如何实现该算法?

这是一个Windows应用程序.应用接收有效std::wstring字符串.


更新

为此,我实施了Aho-Corasick算法.如果有人可以查看我的代码那就太棒了 - 我对这些算法没有太大的经验.链接到实施:gist.github.com

c++ windows string algorithm

53
推荐指数
5
解决办法
4968
查看次数

Java泛型,获取泛型参数的Class <T>

我有一个抽象类:

public abstract class RootProcessor<T> {
    Class<T> clazz;
}
Run Code Online (Sandbox Code Playgroud)

我需要填写ClassT clazz;孩子RootProcessor- 每个孩子都有自己的孩子T

我发现只有一个解决方案,但它需要编译器参数 -Xlint:unchecked

public RootProcessor(){
    this.clazz = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
Run Code Online (Sandbox Code Playgroud)

这是最好的解决方案吗?没有我们可以这样做-Xlint:unchecked吗?

java generics

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

Java,JPA,Glassfish,无效资源:jdbc/__ default__pm

我使用Glassfish 3.1.2.2(build 5),JPA,EclipseLink,MySQL

我通过Glassfish管理面板创建了MySQL池.从GF管理面板ping到MySQL是可以的.

我用persistence.xml创建了app:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="myUnit">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myDBName"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value="myPass"/>
        <property name="javax.persistence.ddl-generation" value="drop-and-create-tables"/>
    </properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)

我试图部署它并得到错误:

Invalid resource : jdbc/__default__pm

[#|2012-11-16T02:20:59.480+0400|SEVERE|glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=43;_ThreadName=Thread-2;|Invalid resource : jdbc/__default__pm
java.lang.RuntimeException: Invalid resource : jdbc/__default__pm
Run Code Online (Sandbox Code Playgroud)

GF日志中的Stacktrace是巨大的.由...开始

at com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:540)
at com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:469)
at org.glassfish.persistence.common.PersistenceHelper.lookupPMResource(PersistenceHelper.java:63)
at org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource(ProviderContainerContractInfoBase.java:71)
....
Run Code Online (Sandbox Code Playgroud)

有没有人有想法发生了什么,该怎么办?

java deployment jpa glassfish

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

phpstorm,创建自定义UML图

PhpStorm具有基于现有类创建UML图的功能

但我需要创建并保存自己的图表,这些图表将包含不存在的类的对象.例如,我需要为某些新功能类创建数据库图表和UML图表.

我可以通过phpstorm做到吗?

uml phpstorm

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

如何从内存中删除SQLAlchemy实体的延迟属性?

例如,我们有一个存储LONGBLOB对象的表:

class MyEntity(_base):
    id = Column('ID', Integer, primary_key=True)
    metadata = Column('META', String(512), nullable=False)
    bigData = deferred(Column('BIG_DATA', LONGBLOB, nullable=False))
Run Code Online (Sandbox Code Playgroud)

LONGBLOB标记为延迟的列,即仅在访问特定对象的此属性时加载.

我需要从数据库中查询对象列表并迭代集合:

entities = dbSession.query(MyEntity).all()
for entity in entities:
    ...
    entity.bigData  # load BLOB from the database and do smth with data
    ...
Run Code Online (Sandbox Code Playgroud)

在这个循环中,所有BLOB都将从数据库加载,内存将耗尽.我需要一种方法来清理每个周期结束时的内存.从会话中删除对象并从内存中删除完全不方便...

如何清理object(LONGBLOB)的特定属性但不从会话中删除对象?

python memory sqlalchemy deferred

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

不同配置文件的maven,xml文件

我有2个配置文件的maven pom:dev和production

我的项目中有一些xml文件.例如persistence.xml.开发和生产环境的设置不同

我需要一种在开发和生产程序集中拥有正确文件的方法

也许可以拥有每个xml文件的2个副本并将其放入程序集中?或者也许可以在xml文件中使用pom文件中的设置?

还有其他想法或最佳做法吗?

profiles maven

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

phpdoc用于继承方法

我有一个类A和一些返回bool值的方法.我为该方法制作了phpdoc.

我创建了另一个类B,它扩展了A类并覆盖了方法.新方法返回字符串.(我知道在一般情况下更改返回类型不是一个好主意,但在我的情况下,这是一个好方法.)

我想为新方法制作phpdoc.我可以使用{@inheritDoc},但它需要旧方法的完整phpdoc.我想从旧的phpdoc一般方法描述和参数规范,但更改返回值的描述.

我怎么能这样做?

php inheritance phpdoc

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

git,在飞行中压缩提交

我有一个本地git仓库,一个远程仓库.自从上次从远程拉出以来,我向本地回购做了5次提交.

现在我需要推送到远程.我需要压缩我最近的5次提交.

我可以做到 git rebase -i HEAD~5

但这并不好.我不想在我的本地仓库中改变任何东西.我想将一个压扁的提交推送到远程,并在我的本地仓库中保留5个未更改的提交.

有任何想法吗?

UPD:如果我的本地仓库有5次提交怎么办?我需要创建新的远程仓库以与他人共享我的代码.如何压缩这个新回购的提交?

git rebase squash

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

boost :: filesystem :: path vs boost :: filesystem :: wpath

Boost lib有一个类来处理文件路径:boost::filesystem::path.Boos也有这个课程boost::filesystem::wpath

每一类有方法string(),wstring(),c_str(),native()

我开发Windows应用程序,我完全不明白我应该使用什么))

从实际角度来看,这两个类有什么区别?这些方法有什么区别?

我应该为Windows应用程序使用哪些类和哪些方法?::wpathwstring()无处不在?

将为Ubuntu编译部分源代码(几个静态链接的库).在这种情况下::wpath还好吗?


我也使用SQLite它需要数据库文件的路径.sqlite3_open.

我应该使用sqlite3_open_v2(文件路径的UTF-8编码)或sqlite3_open16(文件路径的UTF-16编码)?


PS看完这篇文章链接似乎::path::wpath没有任何区别.这样对吗?

native()对于为不同平台编译的源代码,方法似乎更合适.

c++ encoding boost path

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

使用 std::codecvt_xxx 将 C++ std::wstring 转换为 utf8

C ++ 11具有工具宽字符字符串转换std::wstring从/到UTF8表示:std::codecvtstd::codecvt_utf8std::codecvt_utf8_utf16等。

Windows 应用程序可使用哪一个将常规宽字符 Windows 字符串转换std::wstring为 utf8 std::string?它总是在不配置语言环境的情况下工作吗?

c++ windows string utf-8 widechar

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