小编dje*_*lin的帖子

C中的Typesafe枚举?

如果我有多个enum,例如:

 enum Greetings{ hello, bye, how };

 enum Testing { one, two, three };
Run Code Online (Sandbox Code Playgroud)

如何强制使用正确的enum?例如,我不希望有人hello在他们应该使用时使用它们以one获得更好的调试和可读性.

c enums

7
推荐指数
2
解决办法
2706
查看次数

找到MST的所有关键边缘

我有Robert Sedgewick关于算法的书中的这个问题.

关键边缘.从图中删除会导致MST权重增加的MST边缘称为临界边缘.显示如何在时间上与E log E成比例地查找图中的所有关键边.注意:此问题假定边权重不一定是不同的(否则MST中的所有边都是关键的).

请建议一种解决此问题的算法.

我能想到的一种方法是及时的工作EV我的方法是运行kruskal的算法.

但是每当我们遇到在MST中插入的边创建一个循环并且该循环已经包含具有相同边权重的边时,那么已插入的边将不是临界边(否则所有其他MST边都是临界边) .

这个算法是否正确?如何扩展此算法以及时完成E log E.

algorithm graph-theory minimum-spanning-tree graph-algorithm

7
推荐指数
2
解决办法
4746
查看次数

正在处理MySQL异常处理程序访问异常

我正在尝试回滚错误,但仍然让客户端收到错误.除非有一种方法可以在异常处理程序中访问错误,否则这实际上可能是不可能的.

可以从异常中"抛出",即可以发出信号:

CREATE PROCEDURE p ()
BEGIN
  DECLARE EXIT HANDLER FOR SQLEXCEPTION
  BEGIN
    SIGNAL SQLSTATE VALUE '99999'
      SET MESSAGE_TEXT = 'An error occurred';
  END;
  DROP TABLE no_such_table;
END;
Run Code Online (Sandbox Code Playgroud)

但是这个来自MySQL doc的示例代码看起来很糟糕,因为它实际上吞噬了所有错误并将它们合并为一个.

SHOW ERRORS似乎相关,但我没有看到任何方式以编程方式使用它,例如SELECT Code FROM (SHOW ERRORS);是不可能的.

这可能吗?有没有更好的做法,我完全错过了?

mysql signals exception-handling

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

在Maven中为注释处理器设置生成的源目录

我正在尝试将使用注释处理器生成源的构建移动到Maven.我尝试过如下配置maven-compiler-plugin:

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <fork>true</fork>
                <compilerArgument>-s ${project.build.directory}/target/generated-sources/annotation-processing</compilerArgument>
            </configuration>
        </plugin>
    </plugins>
Run Code Online (Sandbox Code Playgroud)

但是javac失败了

[INFO] Compilation failure  
Failure executing javac,  but could not parse the error:
javac: invalid flag: -s /home/robert/workspaces/betbrain/sportsengine.common/sportsengine.bean.test/target/target/generated-sources/annotation-processing  
Usage: javac <options> <source files>  
use -help for a list of possible options
Run Code Online (Sandbox Code Playgroud)

据我所知,-s应该在源文件之前传递给javac,但maven之后传递它.

如何将-s标志正确传递给maven-compiler-plugin?


更新:maven-annotation-plugin似乎不起作用.

配置为时

        <plugin>
            <groupId>org.bsc.maven</groupId>
            <artifactId>maven-processor-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
            <executions>
                <execution>
                    <id>process</id>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <phase>generate-sources</phase>
                    <configuration>
                        <outputDirectory>${generated.sources.directory}</outputDirectory>
                        <processors>
                            <processor>xxx.annotation.EnforceJavaBeansConventionsProcessor</processor>
                        </processors>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

执行失败

[INFO] [processor:process {execution: process}]
error: Annotation processor …
Run Code Online (Sandbox Code Playgroud)

java maven-2 maven annotation-processing

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

为什么使用私有锁而非内部锁?

在阅读有关同步的过程中,我遇到了"监控模式"来封装可变状态.

以下是示例代码

   public class MonitorLock {
      private final Object myLock = new Object();
      Widget widget;
      void someMethod() {
        synchronized(myLock) {
         // Access or modify the state of widget
        }
    }
Run Code Online (Sandbox Code Playgroud)

}

以任何方式拥有私有锁而不是内在锁更好吗?

java synchronization locking

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

在C++库中更优雅的错误处理 - jsoncpp

我不确定这是否是jsoncpp的特定内容或者是如何使C++库表现更好的一般范例.基本上我得到这个痕迹:

imagegeneratormanager.tsk: src/lib_json/json_value.cpp:1176: const Json::Value&     Json::Value::operator[](const char*) const: Assertion `type_ == nullValue || type_ == objectValue' failed.
Run Code Online (Sandbox Code Playgroud)

当输入不好时就会发生这种情况.当输入 - 来自我的另一个应用程序通过memcached - 碰巧是坏的,我想处理这个错误.你知道,优雅.也许类似于"错误:项目15006的输入是坏的"进入日志.不会崩溃我的整个JSON字符串处理任务.

这只是一个写得不好的库还是可以更巧妙地配置它?

编辑:这是一些调用代码:

Json::Value root;
Json::Reader reader;
succeeded = reader.parse(jsonString, root);

if(!succeeded) {
  throw std::runtime_error(std::string("Failed to parse JSON for key ")  + emailInfoKey.str());
}

std::string userEmail = root.get("userId", "").asString();
std::string bodyFilePath = root.get("bodyFilePath", "").asString();
std::string msgId = root.get("msgId", "").asString();
Run Code Online (Sandbox Code Playgroud)

c++ error-handling assert fault-tolerance jsoncpp

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

跨Java系统的配置设计模式

问题是陈旧的问题 - 在我们的系统中支持配置文件或系统配置的正确设计是什么?我已经确定了以下要求:

  • 应该能够重新加载直播并立即获取更改而无需重新部署
  • 对于依赖于相同(例如SQL或memcached凭证)的软件应用程序,应该可以在隔离的位置引入更改并一次性部署,即使应用程序位于不同位置的不同计算机上也是如此
  • 支持运行相同应用程序的许多进程/机器

而这个设计的部分我正在努力:

  • 每个主要类应该将自己的"Config"类作为构造函数的输入参数吗?是否应该有一个工厂负责实例化正确的配置?或者每个类应该从自己的配置中读取并自动重新加载?
  • 如果B类派生自A类,或者围绕它编写,那么继承Config文件是否有意义?
  • 假设A类由M1和M2构成(M代表"main"),M1负责实例化资源.假设资源依赖于我希望在M1和M2之间通用的MySQL凭证,有没有办法避免中断所有权的权衡并放入A的配置v.在M1和M2的配置中复制资源?

这些是我现在正在处理的设计问题,并不真正了解这里有效的设计模式或框架.我是Java,所以任何解决这个问题的库都非常受欢迎.

java configuration design-patterns

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

如何确保我不会通过php中的测试站点向客户发送任何电子邮件

我必须在现场制作现有网站的副本以供测试.我得到了公司的许可.

但在数据库中,我有超过10,000条客户记录和电子邮件.在各种测试期间,当我弄乱网站时,我不想意外地向他们发送任何电子邮件.

什么是避免这种情况的最好方法

我确实需要电子邮件功能来测试其他内容

php mysql apache email

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

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

用 Java 解析 RFC 2822 电子邮件地址

许多人不知道,电子邮件地址需要一个库来解析。简单的正则表达式,例如@(.*),是不够的。电子邮件地址甚至可以包含注释,其中可以包含诸如@、破坏简单正则表达式之类的字符。

有一个解析 RFC 2822 地址的Node.js 库

var address = addresses[0];
console.log("Email address: " + address.address);
console.log("Email name: " + address.name());
console.log("Reformatted: " + address.format());
console.log("User part: " + address.user());
console.log("Host part: " + address.host());
Run Code Online (Sandbox Code Playgroud)

这几乎是 perl 模块的直接端口Mail::Address

这是我希望在 Java 的InternetAddress类中存在的东西,但除了完整地址之外,它并没有进一步分解,其中可以包括例如user@gmail.com. 但是我正在尝试提取该gmail.com部分,它不包含可以执行的方法。

我很惊讶我找不到解决这个问题的通用库,但想必很多人都有这个问题。如何使用库或不使用库来解决这个问题?

java email email-address jakarta-mail rfc2822

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