我知道对接口进行编程有助于松散耦合.但是,是否有一个解释何时最有效的指南?
例如,我有一个简单的Web应用程序,它收集员工的数据,他们的培训计划,费用和计算他们一年的费用等.这是一个相当简单的应用程序,我当然可以使用一个界面,但想知道是否会有任何使用.我将使用它为了使用它.
始终可以认为,随着应用程序的复杂性增加而我传递对象,传递类型(接口)比实现更有意义.那么,我应该等待应用程序变得复杂或立即使用它吗?我想知道最好的做法可能会变成"这家伙过度做事".
我需要解析Visual Studio自动生成的XML文档来创建报告.我决定使用XSLT,但我很新,需要帮助.常用模板是:
<doc>
<members>
<member name="F:MyNamespace">
<summary>Some text</summary>
</member>
</members>
</doc>
Run Code Online (Sandbox Code Playgroud)
我想隔离名称以某些单词开头的成员,例如P:Interfaces.Core.我决定在select语句中使用RegExp.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/TR/xpath-functions/">
<xsl:template match="/" >
<html xmlns="http://www.w3.org/1999/xhtml">
<body style="font-family:Tahoma">
<p>Interfaces list:</p>
<table>
<xsl:for-each select="doc/members/member">
<xsl:sort order="ascending" />
<xsl:value-of select="fn:matches(., 'P\..+')" />
<br />
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
为什么我收到错误:
命名空间http://www.w3.org/TR/xpath-functions不包含任何函数>
我哪里错了?我在示例中找到了这样的代码,包括w3c.org!
在我看来,程序员(尤其是Comp.Sci.grads)试图解决的最常见的过于雄心勃勃的项目是构建自己的操作系统.(尝试创建自己的编程语言+编译器可能更常见,但不是那么雄心勃勃.)
对于那些(像我一样)愚蠢的尝试:除了庞大的规模,你在尝试从头开始创建自己的操作系统时遇到的最大问题或意想不到的障碍是什么?
编辑:一个很棒的操作系统问题:在操作系统开发中有哪些资源?
cygwin是否允许静态编译二进制文件?这样可以防止cygwin1.dll出现在目标机器的PATH上.
看到这个:http://www.suckless.org/wiki.html.基于Mercurial的维基.是否还有其他与代码无关的版本控制用途?是否还有其他项目使用版本控制工具而不是编写自己的特定解决方案?
我正在写一些代码,我注意到异常处理中的一个模式让我思考:
try{
// do stuff... throws JMS, Create and NamingException
} catch (NamingException e) {
log1(e);
rollback();
doSomething(e)
} catch (CreateException e) {
log1(e);
rollback();
doSomething(e)
}
Run Code Online (Sandbox Code Playgroud)
JMSException将处理堆栈中的某些位置.
是不是只写:
try{
// do stuff... throws JMS, Create and NamingException
} catch Exception[NamingException, CreateException] e) {
log1(e);
rollback();
doSomething(e)
}
Run Code Online (Sandbox Code Playgroud)
而不是把它放在一个辅助方法:
try{
// do stuff... throws JMS, Create and NamingException
} catch (NamingException e) {
helper_handleError1(e)
} catch (CreateException e) {
helper_handleError1(e)
}
Run Code Online (Sandbox Code Playgroud)
请注意,我想传播原始JMSException的堆栈跟踪,并且我"不想"使用第三个catch子句创建新的JMSException :)
有什么难事吗?这是一种极端的情况,只会污染Java的语法,还是只是添加一个很酷的东西?
我有一个XML结构与此类似:
<category>
<subCategoryList>
<category>
</category>
<category>
<!--and so on -->
</category>
</subCategoryList>
</category>
Run Code Online (Sandbox Code Playgroud)
我有一个具有subcategorylist(List<Category>)的Category类.我正在尝试使用XPath解析此XML文件,但我无法获取类别的子类别.
我怎么能用XPath做到这一点?有一个更好的方法吗?
如何将键盘输入消息发送到当前选定的窗口或先前选择的窗口?
我有一个程序,我用它来键入键盘上没有的一些字符,如果我可以直接发送输入而不是我必须一直复制和粘贴,我希望它.
编辑:
这应用就是输入德国元音.我是美国人,在德国工作.我正在使用美式键盘,我不得不输入变音符号/欧元符号/尖锐的S.目前我有一个简单的WinForms应用程序,带有文本字段和一些带有额外字符的按钮.我输入文本字段,我可以按下按钮将文本附加到文本字段.然后我复制文本并将其粘贴到任何地方.如果我只是按下其中一个按钮就可以发送文件,而不管我打字/正在打字的话.当前的程序工作得相当好,但我可以做得更好.
我使用的是16字节块大小的AES密码.
如果我尝试加密一个16字节的字符串,我没有问题,但任何其他长度不是16的倍数都会引发异常.
我知道使用3-DES你可以指定一个填充类型作为算法的一部分,它的处理没有额外的工作(例如DES/CBC/PKCS5Padding),但有没有办法用AES指定它?
或者我需要手动将pytes填充到16的倍数,然后在解密时将它们剥离?这是一个简短的代码示例.
encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;
Run Code Online (Sandbox Code Playgroud)
任何和所有回复赞赏!
提前谢谢,Ciarán