我有一个关于n层架构的问题.在问这个问题之前,我想了很久很久,因为这里已经有很多类似的问题......然而,经过一天半的时间看着它并阅读其他答案后,我仍然不确定.各种看似相似的术语和不同的方法令我感到困惑.
如果我在不同的类库中有一个BLL和一个DAL,BLL和DAL之间进行通信的一种方法是利用一个接口,有点像在另一个由BLL和DAL引用的单独DLL中定义的DTO.我在BLL中的域模型实体将实现此接口,因此DAL中的任何ORM生成对象也将实现此接口.为了保存我的业务实体,我可以将它们传递给DAL,它可以接受它们,因为它们实现了共享接口.我还可以将对象传递回实现此接口的BLL.这似乎是合理的,因为BLL和DAL只需要知道基本接口,而不是每个其他具体实现.
我的问题是在另一边创建对象的最佳方法是什么?例如,如果我在BLL中实现了一个实现IPerson的Person对象,以及一个PersonDataObject或同样实现IPerson的DLL中的任何东西,我将Person传递给DAL中的一个方法,该方法接受IPerson的参数,然后在DAL I'中d必须重建PersonDataObject才能持久化.这甚至是最好的方法吗?
对不起,我可能没有解释得太好,因为我很困惑.对于假人答案的最佳做法将非常感激.
伙计们,我实现了一个带有客户端和服务器端的套接字.当我使用我的本地IP(192.168 ...)时,它可以工作.但是,当我把互联网IP,它不起作用!请问的主要原因是什么?
谢谢
根据WindowStartupLocation属性的MSDN文档:
设置CenterScreen会使窗口位于包含鼠标光标的屏幕中央.
虽然CenterScreen字段的MSDN文档本身定义得不那么明确:
窗口的启动位置是打开它的屏幕的中心.
一个简单的测试显示这应该工作:
MainWindow.xaml
<Window x:Class="CenterScreenTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button Click="button_Click">Open Window</Button>
</Window>
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml.cs
using System.Windows;
namespace CenterScreenTest
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.Show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果在双监视器系统上测试它,您可以看到当您单击按钮时,新窗口将位于鼠标光标所在的屏幕上.这正是它应该如何运作的.
但是,如果在显示窗口之前尝试将窗口设置为最大化,则新窗口将仅在启动应用程序的显示器上最大化.将button_Click事件处理程序更改为以下内容以查看我的意思:
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.WindowState = WindowState.Maximized;
window.Show();
}
Run Code Online (Sandbox Code Playgroud)
现在,无论单击按钮时鼠标光标在哪里,窗口都只会在启动应用程序的屏幕上最大化.如果在显示窗口状态后将其设置为最大化,则CenterScreen可正常工作.这相当于用户最大化窗口.例如: …
四处寻找尝试的 python 实现,以便我能够理解它们是什么以及它们如何工作,我遇到了 Justin Peel 的patricia trie并发现它非常有指导意义:它足够简单,对于像我这样的新手来说,可以玩它并且从中学习。
但是,我认为我不明白有些事情:
使用贾斯汀的类 patricia() 因此:
>>> p = patricia()
>>> words = ['foo','bar','baz']
>>> for x in words:
... p.addWord(x)
Run Code Online (Sandbox Code Playgroud)
我得到一个字典,看起来像这样:
>>> p._d
{'b': ['a', {'r': ['', {}], 'z': ['', {}]}], 'f': ['oo', {}]}
Run Code Online (Sandbox Code Playgroud)
addWord() 和 isWord() 按预期工作,但 isPrefix() 显示以下行为让我感到困惑:
>>> p.isPrefix('b')
True
>>> p.isPrefix('f')
True
>>> p.isPrefix('e')
False
Run Code Online (Sandbox Code Playgroud)
不错,符合预期;进而
>>> p.isPrefix('ba')
True
Run Code Online (Sandbox Code Playgroud)
也不错,但是:
>>> p.isPrefix('bal')
True
Run Code Online (Sandbox Code Playgroud)
此外:
>>> p.isPrefix('ballance')
True
>>> p.isPrefix('ballancing act')
True
Run Code Online (Sandbox Code Playgroud)
这里有什么我不明白的吗?
我想使用 bison/flex创建简单的 xml 解析器。我不需要验证、注释、参数,只需要<tag>value</tag>,其中值可以是数字、字符串或其他<tag>value</tag>。
例如:
<div>
<mul>
<num>20</num>
<add>
<num>1</num>
<num>5</num>
</add>
</mul>
<id>test</id>
</div>
Run Code Online (Sandbox Code Playgroud)
如果有帮助,我知道可能出现的所有标签的名称。我知道给定标签可以容纳多少个子标签。是否可以创建可以执行以下操作的野牛解析器:
- new Tag("num", 1) // tag1
- new Tag("num", 5) // tag2
- new Tag("add", tag1, tag2) // tag3
- new Tag("num", 20) // tag4
- new Tag("mul", tag4, tag3)
...
- root = top_tag
Run Code Online (Sandbox Code Playgroud)
标签和子标签数量:
你能帮我语法来创建上面给出的 …
我正在使用eclipse来处理一些c代码,它不是像这样在条件编译块中索引代码:
#ifdef USE_FEATURE_A
int feature_a(...) {
some = code(here);
}
#endif
Run Code Online (Sandbox Code Playgroud)
如何让eclipse索引feature_a函数?
我有一个大的SVG文件(大约60 MB,10000x10000像素但有可能变大),我想要创建许多平铺的256x256 PNG图像(在这个例子中会有1600个图像) ;圆形(10000/256)^ 2).
有没有人知道如何在Web服务器上执行此操作(运行PHP等)?我想过rsvg,但它似乎没有任何功能来修改边界框(我宁愿避免为每个部分手动操作).ImageMagick也许可以做到,但我没有太多运气让它运转起来.使用rsvg创建一个大的PNG,然后使用专用于拼贴非常大的图像的工具可能会有效,但我没有运气找到这样的东西!速度并不是一个真正的问题,虽然它是可取的,所以如果最坏的情况发生,我可能会考虑修改SVG的每个部分的边界框.不过,我可以看到这一代人永远在走!
有谁知道这样做的任何方法?
编辑2016-03-02:
我最近再次回到需要这个问题的答案,并且Inkscape似乎是唯一能够以给定大小呈现特定区域的SVG的工具(svgexport几乎满足这些要求,但它不允许您更改宽高比) .
我的目标是将SVG平铺到256x256磁贴中,现在我已经成功制作了一个脚本,可以通过重复渲染inkscape大约16,000 x 16,000并平铺生成的图像来平铺任意大的SVG .我已成功渲染尺寸超过500,000 x 500,000像素的SVG - 内存使用没有问题(这需要很长时间!)
不确定这是Rails 3问题还是RSpec 2问题,但我似乎无法使标准控制器测试工作 - 似乎找不到'get'方法.
我有一个看起来像这样的控制器测试(discrepancies_controller_spec.rb在spec/controllers目录中命名):
require 'spec_helper'
describe DiscrepanciesController do
before :each do
Discrepancy.delete_all
end
it "resolves a discrepancy" do
discrepancy = Discrepancy.create(:my_number=>"12345", :status=>"Open")
get :resolve, :id => discrepancy.id
retrieved_discrepancy = Discrepancy.find_by_my_number("12345")
retrieved_discrepancy.status.should == "Resolved"
end
end
Run Code Online (Sandbox Code Playgroud)
(是的,我知道使用HTTP/GET修改数据的安全隐患 - 这是一个单独的问题......)
当我用rake运行它时,我收到以下错误:
1) DiscrepanciesController resolves a discrepanc
Failure/Error: Unable to find C to read failed line
undefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1:0xc9170d0 @__memoized={}>
# ./spec/controllers/discrepancies_controller_spec.rb:38 (ignore the line number, commented out code was removed from the sample) …Run Code Online (Sandbox Code Playgroud) 我有一个文件,我在记事本++中打开,有以下行,return 1.我也有这样的情况,它说return 2我希望能够在哪里找到!return 1.所以我想找到并计算所有不是的东西return 1
谢谢
我不理解使用pgf90 7.2的present()内在函数的行为.我写了一个20行的示例程序来测试这个,但结果对我来说仍然没有意义.注意:
subroutine testopt(one,two,three,four,five)
implicit none
integer, intent(in) :: one,two
integer, intent(out) :: three
integer, intent(in), optional :: four
integer, intent(out), optional :: five
three = one + two
print *,"present check: ",present(four),present(five)
if (present(four) .and. present(five)) then
five = four*four
end if
end subroutine testopt
Run Code Online (Sandbox Code Playgroud)
如果我:从我的主程序调用testopt(1,2,(任何变量)),它打印:"present check:T F".但是如果我:从子程序中调用testopt(1,2,(任何变量)),它会打印:"present check:T T".我希望在任何一种情况下都能看到"当前检查:F F",因为我只使用3个非可选参数调用子程序,而不是任何可选参数.我无法理解为什么它会以这种方式运行,这导致我正在处理的程序中的一个主要错误.我很欣赏任何见解.谢谢.