小编jus*_*tkt的帖子

如何创建灵活的插件架构?

我的开发工作中的一个重复主题是使用或创建内部插件架构.我已经看到它涉及多种方式 - 配置文件(XML,.conf等),继承框架,数据库信息,库等.在我的经验中:

  • 数据库不是存储配置信息的好地方,尤其是与数据混合在一起
  • 尝试使用继承层次结构需要了解要编码的插件,这意味着插件架构不是那么动态
  • 配置文件适用于提供简单信息,但无法处理更复杂的行为
  • 库似乎运行良好,但必须仔细创建单向依赖.

当我试图从我曾经使用过的各种架构中学习时,我也在寻求社区的建议.您是如何实现SOLID插件架构的?你最糟糕的失败是什么(或者你看到的最严重的失败)?如果要实现新的插件架构,您会怎么做?您使用过的SDK或开源项目是否具有良好架构的最佳示例?

我自己找到的几个例子:

这些例子似乎发挥了各种语言优势.一个好的插件架构是否必然与语言相关?最好使用工具来创建插件架构,还是在自己的以下模型上进行?

language-agnostic architecture plugins plugin-architecture

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

扩展jQuery插件的最佳方法

我是一个相当新的jQuery用户,希望扩展现有的jQuery插件,它可以满足我所需要的75%.我试着做这个功课.我在stackoverflow上检查了以下问题:

我已经阅读了 extend方法.然而,所有这些功课让我感到困惑.我正在使用fullcalendar插件,需要修改一些行为以及添加新的事件挂钩.我是否坚持在插件封闭本身中这样做?我错过了一些明显的东西吗

理想情况下,我们可以将代码与插件代码分开,以便进行可能的升级.任何帮助将不胜感激,特别是关于我在哪里错过了关于其他Stack Overflow问题中已经提出的解决方案是否有意义的一些信息或意见的指示.对我来说,他们互相矛盾,我仍然感到困惑.

jquery plugins extend fullcalendar

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

如何有意创建一个长时间运行的MySQL查询

我知道这是一个奇怪的问题,但是我想知道是否有一个我可以创建的MySQL查询,而我的数据库中没有数百万行会消耗资源并运行很长时间.我的最终目标是在资源争用的情况下测试我的应用程序,并确保我的处理失败的方法(特别是服务器超时)是正确的.

如果有另一种方法我可以在不创建和执行高资源查询的情况下测试它,我也很感激听到这一点.

mysql testing

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

使用Perl字符串表现

我一直在运行很多Perl代码,以这种方式打破长串:

my $string = "Hi, I am a very long and chatty string that just won't";
$string .= " quit.  I'm going to keep going, and going, and going,";
$string .= " kind of like the Energizer bunny.  What are you going to";
$string .= " do about it?";
Run Code Online (Sandbox Code Playgroud)

从我的Java背景来看,构建一个像这样的字符串将是一个禁忌的表现.Perl也是如此吗?在我的搜索中,我已经读过join在字符串数组上使用是连接字符串的最快方法,但是当你想要分解字符串以提高可读性时呢?写作更好:

my $string = "Hi, I am a very long and chatty string that just won't" .
    " quit.  I'm going to keep going, and going, and going," . …
Run Code Online (Sandbox Code Playgroud)

string perl performance concatenation string-concatenation

10
推荐指数
3
解决办法
4291
查看次数

(java.lang.String)不能应用于(java.lang.Object)

我有一个名为TopicS的Listner类, 我试图从名为readMessages的gui中调用它

当我尝试使用以下方法运行类TopicS时,

   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    System.out.println("test test test"); 
    System.out.print("you pressed" +topicCombobox.getSelectedItem());
    TopicS a = new TopicS();
    a.addTopicToListner(topicCombobox.getSelectedItem());
}                 
Run Code Online (Sandbox Code Playgroud)

它给我错误的说法

主题中的addTopicListner(java.lang.String)无法应用于(java.lang.Object)

当我将字符串更改为对象时,会出现其他错误。主要方法包括在下面,在没有GUI的情况下可以正常工作,但是我需要将其添加到GUI。我想做的就是将值带到组合框(即String数组)中,并将该字符串放入主题中(其中(t)现在

 import java.util.Hashtable;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class TopicS implements MessageListener
{

 private TopicConnection topicConnection;
 private TopicSession topicSession;
 public Topic topic;
 private TopicSubscriber topicSubscriber;


 public TopicS()
            {}
            public void addTopicToListner(String t){
  try …
Run Code Online (Sandbox Code Playgroud)

java string user-interface java.lang.class

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

获取JPA中的命名查询字符串

我试图在orm.xml文件中外部化JPA的所有命名查询.我想在我的Java程序中获取命名查询字符串用于某些操作目的,但JPA似乎没有公开任何将命名查询作为字符串返回的方法.我所能做的就是createNamedQuery使用命名查询的名称.

有没有其他方法来解决这个问题,以获得像Hibernate公开的命名查询字符串?与getSession().getNamedQuery("namedQueryName");JPA 类似?

谢谢,Sonu.

java oracle jpa

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

Log4perl日志文件中的双输出

我正在研究现有Perl代码库中的一个新功能,它允许我们记录发送到数据库的命令.我基于Log4perl的解决方案,这使我不必重新发明几个轮子.

不幸的是,我遇到了麻烦:每条消息都被发送到日志文件两次.我希望它停止这样做.

我的研究(谷歌)表示,将相同的消息发送到两个不同的日志文件是一个常见的问题,但这不是我所看到的.每条消息在单个日志文件中出现两次.

有没有人知道我应该从哪里开始寻找纠正这种行为的方法?


编辑: 配置文件如下所示:

my $log_packages = undef;

sub _get_logging_modifications {
    # Hash that is keyed by a package name
    # and the value is the level at which
    # to log that package
    return %{$log_packages} if defined $log_packages;
    $log_packages = {};

    my $log_info = $ENV{PROJECT_LOG_INFO} || '';

    for my $log_specification (split(/,/, $log_info)) {
        # Skip to the next log specification unless we have
        # a well formed log spec. i.e., Package::Name/LOGLEVEL
        next unless $log_specification =~ m!([^/]+)/([A-Z]+)!i;

        my …
Run Code Online (Sandbox Code Playgroud)

perl log4perl

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