小编krt*_*tek的帖子

在Java中模拟静态方法调用的静态抽象和动态链接

介绍

作为一个免责声明,我读过为什么静态方法不能在Java中抽象化,即使我恭敬地不同意关于"逻辑矛盾"的公认答案,我也不希望任何答案static abstract只是答案的用处我的问题;)

我有一个类层次结构,表示数据库中的一些表.每个类都继承了一个类,Entity该类包含许多用于访问数据库,创建查询,转义字符等的实用方法.

类的每个实例都是数据库中的一行.

问题

现在,为了尽可能多地分解代码,我想添加有关每个类的相关列和表名的信息.这些信息必须在没有类实例的情况下可访问,并将用于Entity构建查询等.

存储这些数据的显而易见的方法是每个类中的静态方法返回的静态字段.问题是你不能强制类实现这些静态方法,你不能在Java中调用静态方法调用动态链接.

我的解决方案

  1. 使用HashMap或任何类似的数据结构来保存信息.问题:如果缺少信息,则错误将在运行时而不是编译时.
  2. 对实用程序函数使用并行类层次结构,其中可以实例化每个对应的类并使用动态链接.问题:如果该类不存在,代码繁重,运行时错误

这个问题

你将如何应对abstract static抽象方法的缺失和动态链接?

在完美的世界中,如果缺少类的信息并且可以通过使用Entity类轻松访问数据,则给定的解决方案应该生成编译错误.

答案不需要在Java中,C#也可以,如果没有任何语言的特定代码,如何做到这一点的任何见解将受到欢迎.

需要明确的是,除了简单之外,我没有任何要求.没有什么必须是静态的.我只想从中检索表和列名Entity来构建查询.

一些代码

class Entity {
    public static function afunction(Class clazz) { // this parameter is an option
        // here I need to have access to table name of any children of Entity
    }
}

class A extends Entity {
    static String table = "a";
}

class B extends Entity { …
Run Code Online (Sandbox Code Playgroud)

java oop static design-patterns dynamic-linking

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

根据区域设置在Jekyll中包含不同的文件

我正在尝试创建我的第一个Jekyll网站,我遇到了设计i18n部分的问题.

对于每种语言,不同的文章将被完全重写,因此每篇文章都是不同的帖子,这里没有问题.我的布局/包含中的文本实际上有更多困难.

通常,对于菜单,我正在考虑按照以下方式做一些事情:

{% capture menu_location %}menu.{{ lang }}.html{% endcapture %}
{% include menu_location %}
Run Code Online (Sandbox Code Playgroud)

建议喜欢这里.但这给了我以下错误:

在_includes目录中找不到包含的文件'menu_location'

是否可以为include标记使用变量?你知道我怎么能这样做吗?

谢谢 !

PS:即使我目前只考虑3种语言,我也不会用if/elseif/else语法来做;)

internationalization liquid-layout jekyll

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

如何在Mercurial中解决错误消息"abort:repository default-push not found!"?

我是Mercurial的新手并试图将测试文件推送到在线存储库.abort: repository default-push not found! 当我尝试使用hg push命令时,我遇到了一条错误消息.我在网上搜索了大部分提到的答案来配置.hg/hgrc文件.我已经完成了并检查了我的.hg/hgrc文件.它确实有一些东西

[paths]
default = https://ALab@bitbucket.org/Alab/analysis
[web]
cacerts = /etc/pki/tls/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)

为了澄清我的问题,这里是我执行的几个步骤和我得到的错误消息.我的机器是安装了默认Python 2.4.3的RedHat Linux 5服务器.我已经为Mercurial建立了一个目录,/home/Cassie/CassieDir/analysis并在bitbucket.org上建立了一个存储库,用户名ALab进行分析.我有输入commit命令和其他hg status命令.他们都好看.然后,我首先创建了一个名为README的虚拟文件,并尝试将其推送到/analysis目录

hg push
Run Code Online (Sandbox Code Playgroud)

错误消息显示:

abort: certificate checking requires Python 2.6
Run Code Online (Sandbox Code Playgroud)

然后,为了避免证书错误,我然后键入

hg push --insecure
Run Code Online (Sandbox Code Playgroud)

错误消息显示为

Not trusting file /home/Cassie/CassieDir/analysis/.hg/hgrc from untrusted user Cassie, group Cassie
Not trusting file /home/Cassie/CassieDir/analysis/.hg/hgrc from untrusted user Cassie, group Cassie
Not trusting file /home/Cassie/CassieDir/analysis/.hg/hgrc from untrusted user Cassie, group Cassie
abort: repository default-push not found! …
Run Code Online (Sandbox Code Playgroud)

mercurial push repository hgrc

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

来自gitlab-ci的状态不再出现在gitlab合并请求中

就我所知,Gitlab-CI完美地运作.它运行并尽一切可能,但gitlab本身并没有显示状态.

我一直看到的是"检查x的CI状态",旋转器静止不动.

我得到的唯一线索来自gitlab production.log,当我打开页面时:

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
  app/models/project_services/gitlab_ci_service.rb:39:in `commit_status'
  app/controllers/projects/merge_requests_controller.rb:165:in `ci_status'
  app/controllers/application_controller.rb:57:in `set_current_user_for_thread'
Run Code Online (Sandbox Code Playgroud)

这至少可以说是奇怪的.其他一切都很好,所以整个gitlab看起来并不全面.

Gitlab详细信息:

GitLab 6.6.4
GitLab Shell 1.8.4
GitLab API v3
Ruby 1.9.3p194
Rails 4.0.3
GitLab CI 4.3.0 267edb0
Run Code Online (Sandbox Code Playgroud)

我四处搜索,没有发现类似的问题.这令人费解,因为它在gitlab中从6.something升级到6.6.4后停止工作.这不是一个关键部分,但删除了CI服务器的一些简单使用.

ruby ruby-on-rails gitlab gitlab-ci

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

Groovy分裂没有最终修剪

我正在解析如下的CVS文件:

"07555555555",25.70,18/11/2010,01/03/2011,N,133,0,36,,896,537,547,,Mr,John,Doe,,
"07555555555",10.15,26/01/2011,01/03/2011,N,16,0,100,,896,537,547,,Mrs,Jane,Doe,,jane@doe.com
Run Code Online (Sandbox Code Playgroud)

问题是当使用这样的脚本时:

file.eachLine{ line ->

    items = line.split(",")
    println items.length
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

16
18
Run Code Online (Sandbox Code Playgroud)

这让我觉得split函数删除了最终值.我需要它才能拥有所有物品,即使它们是空的.任何的想法?

groovy

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

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

有人可以解释参数 autovacuum_naptime 吗?

我阅读了官方的解释,但我仍然不能很好地理解参数。有人可以解释参数 autovacuum_naptime 吗?多谢 !

postgresql

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

Utf-8在子域?

是否可以在子域中使用UTF-8?如果是这样,允许哪些字符以及无法混合编码的工作原理如何?

我试过RTFM,但谷歌没有多大帮助

subdomain dns utf-8 idn

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

我如何"重新打开"git提交?

(注意,我不是在寻找答案git rebase -i)

在mercurial中,我可以通过将提交导入我的补丁队列来"重新打开"提交:

hg qimport tip
Run Code Online (Sandbox Code Playgroud)

该承诺在这个意义上是"开放",它就像我犯了它之前,我可以恢复,做hg diff,hg status等我如何做到这一点的混帐?

(我在网上找到的所有东西都建议git rebase -i然后选择编辑,但这是不同的,因为提交不是以同样的方式"打开".)

git mercurial rebase

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

我的客户如何在Stripe上更新其卡信息?

我目前使用Stripe出售我的产品,即定期订阅。我有时会看到重复付款未能完成,但与PayPal不同,Stripe似乎不支持开箱即用的电子邮件通知,以使客户知道他的付款已失败。

因此,我的问题是:

  1. 如何发送电子邮件给客户,通知他们付款失败?(请告诉我好像我今年7岁,我不是程序员)
  2. 最重要的是,我的客户如何更新他们的卡信息?

非常感谢你。

stripe-payments

5
推荐指数
3
解决办法
3978
查看次数