小编Rob*_*vey的帖子

当KISS和DRY碰撞时

我是DRY和KISS原则的追随者,但上周我有一个案例,两者似乎互相矛盾:

对于我正在做的应用程序,我必须实现一个循环,执行以下操作:

  1. 迭代类型A列表的元素
  2. 将类型A的元素转换为类型B并将它们插入到类型B的列表中

这是一个例子:

for (A a : listOfA) {
    listOfB.add(BFactory.convertFromAToB(a));
}
Run Code Online (Sandbox Code Playgroud)

在代码中,我必须做大约4次,将类型(例如D,E等)转换为另一种类型.我可能无法更改我要转换的类型,因为它们是我们必须在app中使用的第三方类型.

所以我们有:

for (A a : listOfA) {
    listOfB.add(BFactory.convertFromAToB(a));
}

for (C a : listOfC) {
    listOfB.add(DFactory.convertFromCToD(c));
}

...
Run Code Online (Sandbox Code Playgroud)

所以,为了不违反干,我提出了一个通用的解决方案:

private interface Function<S, T> {
  T apply(S s);
}

public <S, T> void convertAndCopy(List<S> src, List<T> dst, Function<S, T> f) {
    for (S s : src) {
      dst.add(f.apply(s));
    }
}
Run Code Online (Sandbox Code Playgroud)

电话看起来像这样:

convertAndCopy(listOfA, listOfB, new Function<A, B>() {
    A apply(B b) {
        return CFactory.convertFromBToC(b); …
Run Code Online (Sandbox Code Playgroud)

java dry

16
推荐指数
3
解决办法
4627
查看次数

Java RMI教程 - AccessControlException:拒绝访问(java.io.FilePermission

昨天我试着开始使用Java RMI.我找到了这个sun教程(http://java.sun.com/docs/books/tutorial/rmi/index.html)并开始使用服务器实现.但每次我开始计划(rmiregistry正在运行)我得到一个带有以下StackTrace的AccessControlException:

LoginImpl exception:
java.security.AccessControlException: access denied (java.io.FilePermission \\\C\ProjX\server\serverProj\bin\usermanager read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
    at java.security.AccessController.checkPermission(AccessController.java:427)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
    at java.io.File.exists(File.java:700)
    at sun.net.www.protocol.file.Handler.openConnection(Handler.java:80)
    at sun.net.www.protocol.file.Handler.openConnection(Handler.java:55)
    at java.net.URL.openConnection(URL.java:943)
    at sun.rmi.server.LoaderHandler.addPermissionsForURLs(LoaderHandler.java:1020)
    at sun.rmi.server.LoaderHandler.access$300(LoaderHandler.java:52)
    at sun.rmi.server.LoaderHandler$Loader.<init>(LoaderHandler.java:1108)
    at sun.rmi.server.LoaderHandler$Loader.<init>(LoaderHandler.java:1089)
    at sun.rmi.server.LoaderHandler$1.run(LoaderHandler.java:861)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.server.LoaderHandler.lookupLoader(LoaderHandler.java:858)
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:541)
    at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628)
    at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294)
    at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238)
    at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1494)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
    at sun.rmi.transport.Transport$1.run(Transport.java:153)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    at …
Run Code Online (Sandbox Code Playgroud)

java policy rmi

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

持有Java对象的轻量级选项有哪些?

持久化Java对象有哪些轻量级选项?

我正在寻找最简单的解决方案.我不希望任何花哨的特征只是简单的东西,与合理简单的对象(一些集合,关系和简单的继承)一起工作,并且不会给现有的代码库带来太多明显的复杂性(如果有的话).

我所知道的选项包括Hibernate和EMF这样的框架,但它们听起来(并且经验丰富)过于复杂和耗时.我喜欢开箱即用的东西,最好是文件导向而不是面向dababase,我可以把它放在我普通的旧Java对象之上.

这是一个新手问题,提前感谢任何类似教程的上下文澄清指南.

java persistence

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

列表<>获取下一个元素或获取第一个元素

我想获取列表中的下一个元素,如果列表结束,我想要第一个元素.所以我只想用它来换句话说.

   List<int> agents = taskdal.GetOfficeAgents(Branches.aarhusBranch);
    if (lastAgentIDAarhus != -1)
    {
        int index = agents.IndexOf(lastAgentIDAarhus);
        if (agents.Count > index + 1)
        {
            lastAgentIDAarhus = agents[index + 1];
        }
        else
        {
            lastAgentIDAarhus = agents[0];
        }
    }
    else
    {
        lastAgentIDAarhus = agents[0];
    }
Run Code Online (Sandbox Code Playgroud)

我对上面显示的自己的解决方案感到非常不满,请告诉我你是否有更好的解决方案:)

c#

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

让jQuery UI的datepicker始终在某个方向打开?

我在position: fixed页面底部的工具栏中使用jQuery UI的datepicker控件.有时,在随机计算机上,日期选择器会出现在工具栏下方,这意味着它不在页面中,无法查看或与之交互.

有没有办法强制将datepicker控件的位置始终位于其上方和右侧<input>?

jquery-ui jquery-ui-datepicker

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

如何在X中获取当前鼠标(指针)位置坐标

这可以是一些示例C代码或一个实用程序,它将向我显示gui或在控制台上它并不重要,但我必须能够"命令"它在准确的时间抓取坐标xev不是很有用(我可以搞清楚).

xorg

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

如何使用WCF服务临时停止证书错误

我正在测试我创建的WCF Web服务的早期版本.在客户端,当我使用VS来"添加服务引用"时,一切正常.

但是当我尝试使用该服务时,我得到错误,

Could not establish trust relationship for the SSL/TLS secure
channel with authority **
Run Code Online (Sandbox Code Playgroud)

星号代表服务器的IP地址.

无论如何在服务器上有一个安全证书,但它只是为了测试自己生成的,所以我暂时不担心证书错误.

在客户端,已经为我生成了app.config,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="BindingName" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Transport">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="***************"
                binding="wsHttpBinding" bindingConfiguration="BindingName"
                contract="***************" name="BindingName">
                <identity>
                    <servicePrincipalName value="***************" /> …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf

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

什么是将bool转换为字节的最快方法?

什么是将bool转换为字节的最快方法?

我想要这个映射:False = 0,True = 1

注意:我不想使用任何if语句或其他条件语句.我不希望CPU停止或猜测下一个语句.

更新: 对于那些想要看到这个问题的人.此示例显示如何从代码中减少两个if语句.

byte A = k > 9 ; //If it was possible (k>9) == 0 || 1
c[i * 2] = A * (k + 0x37) - (A - 1) * (k + 0x30);
Run Code Online (Sandbox Code Playgroud)

c#

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

什么是最好的日志文件格式?

我们正在开发一个数据库工具,我们希望以一种可扩展且易于导入数据库表的格式编写日志文件.我们都觉得使用SQL过滤这些信息是一个好主意,因为日志将是一个长文件,"搜索"可能不够好.你能给我一些建议吗?任何经验也都有用!提前致谢.

c c++ java

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

使用Android提交到Google电子表格表单

第一次在这里问一个问题.通常我可以在不必询问的情况下找到答案,但这次我被困住了,无法弄清楚我错过了什么.

我只是想让我的Android应用在网站上填写表格并提交.我不需要应用程序对发回的任何数据执行任何操作,只需填写表单并提交即可.基本上我正在尝试收集投票应用的结果.我认为表单提交很简单所以我创建了一个Google电子表格并从中制作了一个表单.我想我会将Android应用程序指向表单,然后我会在电子表格中包含所有数据供以后查看.我不能让Android应用程序实际填写表格.这是资源.

形成

电子表格

private void submitVote(String outcome) {
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("https://spreadsheets.google.com/spreadsheet/formResponse?hl=en_US&amp;formkey=dDlwZzh4bGFvNFBxUmRsR0d2VTVhYnc6MQ&amp;ifq");

    List<BasicNameValuePair> results = new ArrayList<BasicNameValuePair>();
    results.add(new BasicNameValuePair("entry.0.single", cardOneURL));
    results.add(new BasicNameValuePair("entry.1.single", outcome));
    results.add(new BasicNameValuePair("entry.2.single", cardTwoURL));

    try {
        post.setEntity(new UrlEncodedFormEntity(results));
    } catch (UnsupportedEncodingException e) {
        // Auto-generated catch block
        Log.e("YOUR_TAG", "An error has occurred", e);
    }
    try {
        client.execute(post);
    } catch (ClientProtocolException e) {
        // Auto-generated catch block
        Log.e("YOUR_TAG", "An error has occurred", e);
    } catch (IOException e) {
        // Auto-generated catch block …
Run Code Online (Sandbox Code Playgroud)

post android spreadsheet google-forms

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

标签 统计

java ×4

c# ×3

.net ×1

android ×1

c ×1

c++ ×1

dry ×1

google-forms ×1

jquery-ui ×1

jquery-ui-datepicker ×1

persistence ×1

policy ×1

post ×1

rmi ×1

spreadsheet ×1

wcf ×1

xorg ×1